고전 암호는 컴퓨터와 같은 고성능 연산 장치가 발명되기 전에, 비교적 간단한 기계와 손 등으로 암복호화를 수행하던 암호를 말합니다. 대부분 컴퓨터를 사용하면 쉽게 복호화되기 때문에 현대에는 사용되지 않습니다.

고전 암호는 일반적으로 **치환(Substitution)**과 **전치(Transposition)**의 방법으로 설계됩니다. 치환은 평문의 문자를 다른 문자로 바꾸는 것을 말하며, 전치는 평문 문자들의 위치를 바꾸는 것을 말합니다.

단순한 고전 암호는 한 가지 원리만을 사용하는 치환 암호(Substitution Cipher) 또는 **전치 암호(Transposition Cipher)**이고, 복잡한 고전 암호는 두 원리를 모두 사용합니다.

치환 암호는 **단일 문자 치환 암호(Monoalphabetic Substitution Cipher)**와 **다중 문자 치환 암호(Polyalphabetic Substitution Cipher)**로 나누어집니다.

이번 코스에서는 치환 암호와 고전 암호의 개념, 이들의 예, 그리고 간단한 공격 방법을 소개하겠습니다.

Untitled

단일 문자 치환 암호

**단일 문자 치환 암호(Monoalphabetic Substitution Cipher)**는 평문의 각 문자를 약속된 다른 문자로 치환하는 암호입니다. 복호화를 위해 치환의 대응 관계는 일대일 대응입니다. 평문의 'A'가 암호문의 'B'로 치환된다면, 평문의 다른 어떤 문자도 'B'로 치환되지 않습니다.

카이사르 암호

단일 문자 치환 암호의 대표적인 예로 기원전 44년 줄리어스 카이사르가 사용한 카이사르 암호(Caesar Cipher)가 있습니다.

카이사르 암호는 평문의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 치환합니다. 이를 복호화할 때는 암호문의 각 문자를 다시 원래 위치로 밀어서 평문을 구합니다. 송신자와 수신자가 몇 칸을 밀 것인지를 사전에 합의해야 통신이 이뤄질 수 있습니다.

카이사르 암호는 알파벳을 밀어낸 횟수만 알면 해독할 수 있습니다. 알파벳을 밀어낸 횟수를 **키(Key)**라고 한다면, 알파벳은 총 26자이므로 가능한 키의 갯수는 26개 입니다.

암호학에서 가능한 모든 키의 집합을 **키 공간(Key Space)**이라고 하는데, 이를 이용하여 다시 표현하면, 카이사르 암호에서 키 공간의 크기는 26입니다.

알파벳 A부터 Z를 0부터 25까지 대응 시키면, n글자씩 밀어내는 카이사르 암호를 아래의 합동식으로 표현할 수 있습니다.

수식으로 표현한 카이사르 암호