저번 시간에는 암호학의 개념을 공부하였다.
이번 시간에는 드림핵에서 고전 암호에 대하여 공부 할 것이다.
1. 고전 암호
고전 암호는 컴퓨터와 같은 고성능 연산 장치가 발명되기 전에 비교적 간단한 기계와 손으로 암복호화를 수행하던 암호를 말한다. 현대에서는 컴퓨터를 사용하면 쉽게 복호화되기 때문에 사용하지 않는다.
고전암호는 일반적으로 1) 치환 암호와 2) 전치 암호의 방법으로 설계된다.
단순한 고전 암호는 한가지 원리만을 사용하는 치환 암호 또는 전치 암호이고, 복잡한 고전 암호는 두 원리를 모두 사용한다.
1) 치환 암호(Substitution Cipher)
- 평문의 각 문자를 다른 문자로 치환하는 기법
- 평문 문자와 암호문의 문자가 이루는 대응관계에 따라 단일 문자 치환 암호와 다중 문자 치환 암호로 구분된다.
2) 전치 암호
- 평문을 구성하는 문자들의 순서를 바꾸는 기법
- 평문을 정해진 길이의 블록들로 나누고 규칙을 적용하여 블록 안의 문자들을 재배치한다.
- 대표적인 예시로는 고대 그리스인들이 발견한 스키테일 암호(Scytale Cipher)가 있다.
- 스키테일 암호 : 나무봉을 이용한 암호로, 메세지를 교환 할 두 사람이 같은 크기의 나무봉을 이용하여 종이 테이프를 나무봉에 감고, 종이 테이프 위에 세로로 메세지를 기입하여 암호문을 만든다. 종이 테이프를 풀어내면 순서가 뒤섞여 메세지를 읽을 수 없지만 같은 나무봉을 가진 수신자는 테이프를 다시 나무봉에 감아서 해석한다.
2. 단일 문자 치환 암호
단일 문자 치환 암호는 평문의 각 문자를 약속된 다른 문자로 치환하는 암호이다. 복호화를 위해 치환의 대응 관계는 일대일 대응이다. 대표적인 단일 문자 치환 암호는 줄리어스 카이사르가 사용한 카이사르 암호(Caesar Cipher)가 있다.
카이사르 암호는 평문의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 치환한다. 이를 복호화 할때는 암호문의 각 문자를 다시 원래 위치로 밀어서 평문을 구한다. 사전에 몇 칸을 밀 것인지 합의해야 통신이 이루어 진다. 카이사르 암호는 알파벳을 밀어낸 횟수만 알면 해독할 수 있다. 알파벳을 밀어낸 횟수를 키(Key)라고 한다면 알파벳의 갯수 26이 키의 갯수가 된다. 밑에 표와 같이 알파벳 A부터 Z를 0부터 25까지 대응시키면 n글자씩 밀어내는 카이사르 암호를 합동식으로 표현할 수 있다.
암호학에서 가능한 모든 키의 집합을 키 공간이라고 한다. 그러므로 카이사르 암호에서 키공간의 크기는 26이다
카이사르 암호는 알파벳을 밀어서 암호화하는 특성상, 키 공간의 크기가 작기 때문에 컴퓨터를 사용하면 쉽게 복호화 되는 단점이 있어 더 복잡한 단일 치환 암호로 셜록 홈즈에 나온 춤추는 인형 암호가 있다. 또한 난수표나 코드북을 이용한 단일 치환 암호는 현재도 종종 사용된다.
- 춤추는 인형 암호 : 사람 한 명이 글자 하나에 대응된다. 모든 알파벳을 서로 다른 기호와 무작위로 일대일 대응시켜 취환하면 키 공간의 크기는 26!가 된다. 이 정도 키 공간은 현대의 컴퓨터로도 전부 탐색하기 어렵다.
3. 다중 문자 치환 암호
다중 문자 치환 암호는 단일 문자 치환 암호와 달리 평문의 한 문자가 암호문에서 여러 종류의 문자로 치환될 수 있다. 그러므로 일대일 대응이 아닐수 있다. 대표적인 다중 문자 치환 암호로는 비제네르 암호(Vigenere Cipher)가 있다.
비제네르 암호는 암호화와 복호화는 미리 정해진 키워드를 통해 이루어 진다.
ex) 'SKY'라는 키워드로 평문 'HELLO'를 비제네르 암호화하는 과정을 설명할 것이다.
1. 우선 비제네르 표에서 키의 각 문자인 'S', 'K', 'Y' 행을 고른다.
2. 키워드를 반복하며 키워드의 각 행에서 평문의 문자에 대응되는 문자로 평문을 치환한다.
밑에 표는 'SKY' 키워드를 사용하여 'HELLO'를 비제네르 암호화하여 만든 암호문이다.
키 | S | K | Y | S | K |
평문 | H | E | L | L | O |
암호문 | Z | O | J | D | Y |
A부터 Z를 0부터 25까지 대응시키면 비제네르 암호를 합동식으로 표현할 수 있다. ( C = 암호문, M = 평문, K = 키워드)
4. 고전 암호 공격
안전하다고 생각했던 고전 암호들은 암호 분석 도구와 기술의 발달로 쉽게 분석되었다. 고전 암호를 공격하는 방법으로 1) 전수 키 탐색 공격과 2) 빈도수 분석이 있다.
1) 전수 키 탐색 공격
평문과 암호문을 알 때, 키 공간을 전부 탐색하며 주어진 암호문과 같은 암호문을 생성하는 키를 찾는 방법이다. 굉장히 단순한 공격 방법이지만 키 공간의 크기가 작다면 빠른 시간 안에 키를 찾고, 암호를 해독할 수 있다.
2) 빈도수 분석
단일 치환 암호는 평문의 문자와 암호문의 문자가 항상 일대일 대응을 이루기 때문에 평문의 통계적 특성이 유지된다. 예를 들어 평문의 E를 A로 치환해서 암호문을 만들었다면, 암호문에서 가장 많이 등장하는 알파벳이 A일 가능성이 높다. 이런 추측을 바탕으로 암호문을 복구하는 것을 빈도수 분석이라고 한다.
다중 치환 암호는 통계적 특성이 사라지기 때문에 빈도수 공격으로 부터 비교적 안전하다고 알려져 있다.
이번 시간에는 고전암호에 대해서 공부하였다.
다음 시간은 현대 암호에 대해서 공부할 것이다.
'개념정리 > Cryptography' 카테고리의 다른 글
6. 패딩과 운영모드 (0) | 2022.08.01 |
---|---|
5. 블록 암호 : AES (0) | 2022.07.28 |
4. 블록 암호 : DES (0) | 2022.07.25 |
3. 현대 암호 (0) | 2022.07.25 |
1. 암호학 개념 (0) | 2022.07.22 |