단일 치환 암호(Monoalphabetic Cipher)는 알파벳의 각 글자를 다른 글자에 일대일로 대응시켜 암호화하는 고전 암호 방식입니다. 대표적인 기법으로는 가산 암호(Additive Cipher), 승산 암호(Multiplicative Cipher), 아핀 암호(Affine Cipher)가 있으며, 각각의 원리를 살펴보겠습니다.
가산 암호(Additive Cipher)
가산 암호는 알파벳 글자들의 순열(permutation)을 만드는 방법 중 하나로, 각 글자를 동일한 크기만큼 순환적으로 이동시키며 글자들 간의 상대적 순서는 그대로 유지됩니다.
글자가 이동한 위치의 수를 키(key)라고 부릅니다. 예를 들어 키 값이 5라면 'a'는 알파벳에서 5칸 오른쪽으로 이동하여 'F'가 되고, 'b'는 'G'가 되는 식입니다.
'u'는 'Z'로 변환되는데, 여기서 알파벳의 끝에 도달하면 다시 처음으로 돌아갑니다(wrap around). 따라서 'v'는 'A'에 매핑됩니다.
또한 가산 암호는 알파벳 글자의 위치 번호를 이용해서도 수행할 수 있습니다. 이 방식에서는 영어 글자 'A'부터 'Z'까지를 위치 번호 '0'부터 '25'에 매핑하여 계산합니다.
승산 암호(Multiplicative Cipher)
승산 암호 역시 알파벳 글자들의 순열을 생성하는 또 다른 방법입니다. 키 값을 정한 뒤 각 글자의 위치 번호에 키를 곱하고, 그 결과를 모듈로 26(modulo 26)으로 나눈 나머지를 구합니다.
예를 들어 평문 글자(P)가 'h'(위치 번호 7)이고 키(K)가 5라면, 암호문 글자는 모듈러 산술 곱셈 연산 C = P × K (mod 26)으로 계산합니다. 즉, C = 7 × 5 = 35 → 35 mod 26 = 9이며, 위치 번호 '9'는 글자 'J'에 해당하므로 암호문 글자는 'J'가 됩니다.
아핀 암호(Affine Cipher)
아핀 암호는 단일 치환 암호의 한 종류로, 알파벳의 각 글자를 수학적 등가물에 매핑하고, 간단한 수학 함수로 암호화한 후 다시 글자로 변환하는 방식입니다.
이 공식을 사용하면 각 글자는 하나의 다른 글자로 암호화되고 다시 원래대로 되돌릴 수 있으며, 어떤 글자가 어떤 글자로 매핑되는지 규칙이 정해져 있다는 점에서 표준 치환 암호와 본질적으로 같습니다.
아핀 암호는 가산 암호와 승산 암호를 결합하여 만들어집니다. 두 개의 키 쌍을 사용하는데, 첫 번째 키는 승산 암호에, 두 번째 키는 가산 암호에 적용됩니다. 이 키 세트는 메시지의 송신자와 수신자가 함께 공유하는 비밀키입니다.
아핀 암호는 본질적으로 두 개의 암호를 연속으로 적용하는 것이지만, 암호화나 복호화를 하나의 복합 연산으로 처리할 수도 있습니다.
암호화: C = ((P × K1) + K2) mod n
복호화: P = ((C − K2) × K1−1) mod n
즉, 암호화 과정에서는 곱셈과 덧셈이라는 두 개의 개별 연산이 수행되고, 복호화 과정에서는 뺄셈과 나눗셈이라는 두 개의 개별 연산이 수행됩니다.
두 암호의 조합인 만큼, 아핀 암호는 암호화든 복호화든 각 절차마다 역변환이 존재합니다. 암호화에서 마지막 연산이 덧셈이라면 복호화에서는 첫 번째 연산이 뺄셈이어야 하고, 암호화에서 첫 번째 연산이 곱셈이라면 복호화에서 마지막 연산은 나눗셈이어야 합니다.