2. 단일 치환 암호
단일 치환 암호(Simple Substitution Cipher)
평문을 구성하는 알파벳을 다른 알파벳으로 변환하는 암호
단일 치환 암호의 암호화
단일 치환 표(암호화 테이블)
단일 치환 암호의 암호화 예
평문 : kabsoonyee
암호문: SWYLBBNKXX
단일 치환 암호의 단점
평문에 등장하는 문자의 빈도가 암호문으로 바뀐 뒤에도 암호문 내에서 동일한 빈도로 나타난다.
단일 치환 암호의 복호화
단일 치환 표(복호화 테이블)
- 치환표가 단일 치환 암호의 "키"
- 암호화 때에 사용한 치환표가 필요
- 송신자와 수신자는 치환표를 공유
단일 치환 암호의 키 공간
- 시저 암호는 전사 공격(Brute Force Attack)으로 해독 가능
- 단일 치환 암호는 전사 공격으로 해독이 어렵다. (단일 치환 암호가 시저 암호에 비해 휠씬 많은 키 후보를 가질 수가 있기 때문)
키 공간(Key Space)
- 해당 암호에서 사용할 수 있는 "모든 키의 집합"
- 이 키 공간에 속하는 가능한 키의 총수를 키 공간의 크기
- 키 공간이 크면 클수록 전사공격은 어렵다.
전사공격(Brute-Force Attack) 시간
치환 암호 => 전사 공격이 어려움
단일 치환 암호의 키의 총수
26 25 24 23 ... 4 3 2 1
=> 26 x 25 x 24 x 23 ... x 4 x 3 x 2 x 1
=> 403291461126605635584000000
키 수가 이렇게 많다면 1초에 10억 개의 키를 적용하는 속도로 조사한다고 해도, 모든 키를 조사하는 데 120억년 이상의 시간이 필요
빈도 분석(Frequency Analysis)에 의한 해독
치환 암호 => 빈도 분석을 이용한 공격
- 전사 공격에서 단일 치환 암호를 해독하는 것은 어렵다.
- 빈도 분석 암호 해석법을 사용하면 단일 치환 암호도 해독 할 수 있다.
- 빈도 분석에서도 평문에 등장하는 문자의 빈도와 암호문에 나오는 문자의 빈도가 일치하는 것을 이용하는 것이다.
해독 작업
- 빈도가 높은 문자뿐만 아니라, 빈도가 낮은 문자도 단서가 된다.
- 처음과 끝을 아는 것은 단서가 된다. 단어의 단락을 알면 그서도 단서가 될수 있다.
- 암호문이 길면 해독이 쉬워진다.
- 같은 문자가 연속해서 나타나면 그것은 단서가 된다.(단일 치환 암호에서는 어떤 문자 어느 문자로 암호화 되는지는 정해져 있기 때문에)
- 해독의 속도가 점점 빨라진다.
[실습] 단일 치환 암호(암호화/복호화)
단일 치환 암호
= 단일 문자 치환 암호
= 단순 치환 암호
다음 치환표를 참고하여 단일 치환 암호를 풀어 보자.
(조건) 다음과 같은 조건이 있다.
- 문자열 키 테이블에 없는 문자는 그대로 출력한다.
- 암호문은 반드시 대문자이다.
키 테이블 = {'h': 'A', 'e': 'K', 'l': 'O', 'o': 'B', 'w': 'L', 'r': 'Z', 'd': 'Y'}
암호화 |
암호 시스템 : 단일 치환 암호 키 테이블 = {'h': 'A', 'e': 'K', 'l': 'O', 'o': 'B', 'w': 'L', 'r': 'Z', 'd': 'Y'} 입력 평문 : hello world 출력 암호문 : ? |
복호화 |
암호시스템 : 단일 치환 암호 키 테이블 = {'h': 'A', 'e': 'K', 'l': 'O', 'o': 'B', 'w': 'L', 'r': 'Z', 'd': 'Y'} {'A': 'h', 'K': 'e', 'O': 'l', 'B': 'o', ....} 입력 암호문 : AKOOB LBZOY 출력 평문 : ? |
substitutionExample.py
미완성
'현대 암호학' 카테고리의 다른 글
[현대 암호학] 03. 실습(1) (0) | 2021.06.21 |
---|---|
[현대 암호학] 03-4. 전치 암호와 치환 암호 (0) | 2021.06.21 |
[현대 암호학] 03. 암호의 역사(고전 암호학) - 1. 시저(Caesar) 암호 (0) | 2021.06.18 |
[현대 암호학] 02. 암호의 세계(2) (0) | 2021.06.18 |
[현대 암호학] 02. 암호의 세계(1) (0) | 2021.06.18 |