Symmetric Key (대칭키) 암호
암호화와 복호화를 하기 위해 사용되는 키가 동일한 경우
𖤐 대칭키 알고리즘
평문 (P) : PlainText, 암호문 (C) : CipherText , 키 (K) : Key,
암호화 알고리즘 (E) : Encryption Algorithm , 복호화 알고리즘 (D) : Decryption Algorithm
- C =
E⒦( P )
- P =
D⒦( C )
- 송신자 :
E⒦( P )
- 수신자 :
D⒦( C )
= D⒦( E⒦ ( P ) )
= P
𖤐 Kerckhoff의 원리
암호화에서 암호화 알고리즘의 안전성보다 키의 안전성이 더 중요하다
- 공격자는 항상 암호화 알고리즘 ( E )와 복호화 알고리즘( D )은 알고리즘은 알고있다고 가정해야한다
- 그러므로 안전성은 키의 안전성에 바탕을 둔다
암호 해독 공격
- Brute-Force Attack (전수조사 공격) : 암호문을 가로챈 후 모든 가능한 키를 사용하여 복호화 한 후 평문 획득
- Statistical Attack (통계적인 공격) : 평문언어의 고유한 특징들 을 이용하여 복호화한다 예를 들어 영어에서 제일 빈번하게 나오는 단어는
E
이며 암호문 역시 가장 빈번하게 나오는 단어를 E
라고 가정하고 복호화 한다
- Pattern Attack (패턴 공격) : 암호문에서 존재하는 패턴을 연구해 복호화
대치 암호
어떠한 기호를 다른 기호로 대체하는 암호종류
- Monoalphabetic ciphers (단일문자 암호) : 평문의 기호와 대응하는 암호문 기호는 항상 1:1 대응관계
- Polyalphabetic ciphers (다중문자 암호) : 평문의 기호와 대응하는 암호문 기호는 1:M 대응관계
📍 단일 문자 암호
Additive Cipher (덧셈 암호)
가장 기본적인 암호이며 알파벳을 기준으로 평문과 암호문의 키는 Z26의 원소가 된다
C(암호문) = (P + k) mod 26
P(평문) = (C - k) mod 26
Multiplicative Cipher (곱셈 암호)
키는 평문과 암호문이 해당하는 Z26의 원소에서 역원이 존재하는 원소
C(암호문) = ( P * k ) mod 26
P(평문) = (C * k^-1) mod 26
Affine Cipher (아핀 암호)
덧셈 암호와 곱셈 암호를 결합하여 두개의 키를 사용한 암호
📍 다중 문자 암호
Autokey Cipher (자동키 암호)
첫 번째 키를 미리 정의한 후 나머지 키는 평문의 문자를 이용해서 암호화하는 방식
Playfair Cipher (플레이페어 암호)
1차 세계대전에서 영국군이 사용한 암호 방식이며 5 * 5 행렬로 배열된 알파벳 문자로 이루어진 비밀키를 기준으로 규칙을 정해
전치 암호
기호를 다른 기호로 변경하는 것이 아닌 재 정렬시켜 암호화하는 방식
📍 Keyless Transpostion ciphers (키가 없는 전치 암호)
Rail fence 암호
평문을 합의한 열의 개수를 기준으로 단어를 재조합하는 방법
- ☼ 열 2개로 암호화
Hello World => HLOOL
, ELLWRD
📍 Keyed Transpostion ciphers (키가 있는 전치 암호)
사전에 합의된 크기로 평문을 블록 단위로 나눈 뒤 각각의 블록에 키를 대입하여 재배치하는 방법
- ☼ 2개로 암호화
-
- Hello World =>
EH
,LL
, WO
, RO
, DL
𖤐 AES (Advanced Encryption Standard)
2001년 NIST(미국 국립기술 표준원)에서 공표한 대칭키 암호 알고리즘이며 높은 안정성과 속도로 전 세계적으로 많이 이용하고 있으며 암호화 키의 길이에 따라 AES-128, AES-192, AES-256로 나뉜다