[보안] 암호 기초 / 암호 개요

yujeongkwon·2023년 10월 6일

보안

목록 보기
2/10

🔐 암호 기초

  • Kerckhoffs의 원칙
    • 공격자가 시스템(암/복호화 방법)을 다 알고 있음.
    • 오직 key만 안전하게 보관하면 됨. = 암호 안전성과 연결
    • 즉, 암호 알고리즘은 비밀이 아님.
    • 현대는 컴퓨터 사양이 좋아져 키 공간이 매우 커짐
  • Shannon Theory
    • 강력한 암호: 혼돈(Confusion) + 확산(Diffusion)
    • 블록 암호 SPN 구조의 기반
      의미예시주요 연산주요 연산 예시
      혼돈(Confusion)평문-암호문의 상관관계를 숨김단순 치환 암호와 일회성 암호
      (평문 1비트 변화가 암호문에 미치는 영향 예측 어려움)
      대치(Substitution)
      : 위치는 그대로 값이 바뀜
      선형성 : 덧셈, 곱셈
      선형성X : affine(곱셈+덧셈), 역, …
      확산(Diffusion)                                        평문의 통계를 암호문 전반에 확산시켜서 숨김이중 전위 암호
      (평문 각 비트의 변화는 다수의 암호문 bits에 영향을 미침)
      치환(Transposition/permutation)
      : 값의 위치가 바뀜                                
      shift(이동하는 값을 버림), rotation, bit 섞기, 행렬 곱, …

⛺ 고전 암호


단순 치환 암호

: 2000년 이상 된 가장 오래된 암호체계

고전 암호들

  • 시저 (Caesar) 암호” : 세 칸씩 이동하는 것처럼 단순하게 암호화하고 복호화하는 방법
    • 암호화된 문장을 복호화하려면 암호문에 있는 문자와 평문에 있는 문자를 비교해서 치환하거나, 암호화된 문자 각각을 알파벳 순서상 세 번째 뒤에 위치한 문자로 치환
    • 생각보다 오랫동안 사용됨(완죤완죤 비밀해야하는 거 아니면)
    • 문제 : key 모르면 복호화 못함.
    • 이 시스템이 공개된다면 암호화의 의미가 없어짐 → 옛날에는 이러한 시스템 자체가 비밀~><
    • 얘를 그냥 알파벳 순이아니라 임의의 순열로 하면 -> 키 공간 26! ~= 2^88
      • 옴총옴총 많아짐

시저 암호의 공격

  • 공격법 1 : 전수 조사 (Brute force attack)
    : 알파벳 = 26개, key 값은 26개 = 26개 경우 다 해보기~
    • 1~26 까지 key가 가지는 범위 : 키 공간
    • 공격 가능한 시간 내에 빠르게 해야함
  • 공격법 2: 영문자 빈도 분석
    • 알파벳의 사용 빈도는 일정하지 않음. E(13%), T(9%), A(8%), …
    • 두 글자씩 붙은거 th → 찾아서 이것저것 해봄
    • = 전수조사 안해봐도 예측 가능

이중 전위 암호

: 현대 암호에서 사용되는 중요한 개념

  • 평문을 주어진 크기의 행렬 형태로 배열하고 행과 열을 기술된 순서에 따라 바꾼다
  • 여기서 키는 행렬의 크기와 열/행의 순열
  • 문자 자체를 숨기진 않지만 평문 속에 포함된 통계적 정보에 의존하는 공격 방어 가능

일회성 암호 (One-time Pad)

: 키를 한번만 사용하기에 실제 암호체계에서 유일하게 이론적으로 안전하다고 여겨지는 것

  • 암호화 및 복호화(평문(𝑥𝑖), 암호문(𝑦𝑖), 키(𝑘𝑖) ∈ 0, 1 )
    • 암호화: E𝑘𝑖(𝑥𝑖)= 𝑥𝑖⨁𝑘𝑖
    • 복호화: D𝑘𝑖(𝑦𝑖) = 𝑦𝑖⨁𝑘i
  • 보통 : key전달이 힘들기 때문에 한번 안전하게 전달하면 이 key값을 중복사용함 (주기적으로 바꾸긴함)
  • 장점
    • 같은 문자라도 key에 따라 달라짐 -> key 모르면 절대 불가
    • 무조건적으로 안전: 무한대의 계산 자원이 있어도 해독 불가능
  • 단점
    • key의 길이가 평문 길이와 같음 = key의 길이가 일정하지 않음 → 좋지않음
    • 키 줫나 길면서 한번 쓰고 버려짐 → 별로 좋지 않음

코드북 암호

: 고전 암호로, 수많은 현대 암호들은 거대한 전자 코드북

  • 말 그대로, "코드워드"로 가득 찬 책
  • 암호화를 하려면 코드북에서 해당 암호를 찾아 코드 단어를 입력하고 복호화를 하려면 역코드북으로 간단하게 암호를 풀 수 있음
  • 코드북 암호가 사용된 ex) 코드북을 통해 암호화된 짐머맨 텔레그램
    • 아래처럼 코드와 text가 대치된 것, 사전과 같음
      Februar - 13605
      fest - 13732
      finanzielle - 13850
      folgender - 13918
      Frieden - 17142
      Friedenschluss - 17149
      :
  • 현대의 블록 암호는 코드북처럼 보임

🌃 암호 알고리즘(현대~)

간단히 보쟈 나중에 자세히 볼거임 ㅋㅋ
현대 암호의 역사

  • 클로드 새넌
  • 컴퓨터 개발
  • DES : 현대 암호의 처음 (표준)
  • 공개키 암호학 (RSA)
  • 암호학 연구 진행
  • AES(DES 개선
  • 양자 컴퓨터

🌠 암호학 분류


1세대 : password

2세대 : 대칭키(symmetric-/private-/single-/secret-key) 암호

  • 암호화 키 = 암호 해독 키
  • 기밀성 문제 : key의 전달
  • 스트림 암호, 블록 암호의 두 가지 유형
  • 종류 : DES, AES 등 ~

3세대 : 비대칭키(asymmetric-/public-key) 암호

  • 암호화 키 != 암호 해독 키
    • 사용자는 두 개의 키를 가짐(암호화용(공개키) 및 암호 해독용(비밀키))
    • 개인키는 서명용(디지털 서명)으로도 사용 가능
  • 기밀성 문제 : 공개키의 전달
  • 무결성 문제 : 공개키의 중간자 공격(A와 C가 소통하는데 중간에 공격자 B가 껴들어도 알아채지 못함 A<-> {C} <->B)
  • 종류 : RSA, ECC

해쉬 알고리즘

  • 때때로 "단방향" 암호로 간주됨

메시지 인증 코드(Message Authentication Code, MAC)

  • 메시지를 압축하는 과정(해싱)에서 key를 섞음 : MAC
    • ㄴ= 해싱 받은 MAC이랑 수신자가 생성한 MAC이랑 달라졌으면 무결성의 문제가 생김
    • 똑같이 키 전달 문제 → 공개키(비대칭키)를 사용하여 Key 전달 → 이후부터 메시지 전달할 때 마다 공용키(대칭키)를 사용하여 MAC 생성하여 무결성 보장
  • 부인문제를 방지 못함
    • 사용자 A가 보내고 MAC 사실 내가안보냄!! 하면 답없음
    • MAC을 만드는 사람 2명이여서(제3자는 MAC못만듬) 그냥 A : "내가안함 B 너가해짜나" 우기기 가능, 수신측에서 송신측 위조, 송신측에서 수신측 위조 가능 → 부인 방지 못함
    • ⇒ 디지털 서명 필요함
  • 대칭키와 같은 성능 메세지 무결성만을 위해

전자서명

  • 메시지 → 해싱 (키정보 없이 그냥 압축) → 동일한 길이의 짧은 값 digest 생성 → 자신의 개인키를 이용해서 암호화(RSA) 해서 전송 , 수신측은 송신자의 공개키를 활용하여 디지털 서명 검증
  • 중간자 (무결성) 문제 : 수신자의 공개키로 검증할때 발생, 송신자가 수신자의의 공개키를 가져야하는데 중간자 공격들어오면 문제생김
  • = 비밀키를 섞는 해싱
    • 연상량 많음 → 부인방지, 신원파악을 위해서는 전자서명 사용

공인인증서를 이용한 공개키 전달

  • 송신자는 공인인증기관에 공개키를 전달하고, 인증기관으로부터 인증서를 수신자로 전달하는 과정.
  • 수신자는 인증기관의 공개키로 인증서를 검증하고, 인증서 내의송신자 공개키로 서명을 검증함
profile
인생 살자.

0개의 댓글