일반화된 카이사르 암호

Written by Integralus

이론과 설명

카이사르 암호는 각각의 알파벳을 세번째 다음 순서의 알파벳으로 바꿔서 암호화했다면, 일반화된 카이사르 암호는 3말고도 임의의 정수 n만큼 알파벳을 바꿈으로써 암호화를 하는 것이라고 할 수 있다.

3대신 임의의 정수 b를 사용한다고 하면 암호화 함수 f는 다음과 같다.

$$f(x)=x+b \pmod{26}$$

이 경우 b 역시 26을 법으로 한 정수이므로, 가능한 경우는 총 26가지가 되는데, 이 중 %%b = 0%%인 경우는 암호화를 실시하지 않은 것과 같으므로 실제로 사용가능한 b값은 총 25가지라고 할 수 있다. 이 때 복호화 함수는 다음과 같다.

$$f^{-1}(x)=x-b \pmod{26}$$

암호화 절차를 한 단계 더 확장하여, 단순히 특정 수를 더하는 것뿐이 아니라 곱하는 것도 시도해 볼 수 있다. 이 때 곱수는 26과 서로서여야만 하는데, 오직 그 때에만 곱셈에 대한 역원이 존재하기 때문이다.

$$f(x)=ax+b \pmod{26}$$

즉, 위 암호화 함수에서 a와 26은 서로소여야 한다. 이렇게 암호화를 확장하면, 일반화된 카이사르 함수가 26을 법으로하는 일차변환과 같은 것이라는 사실을 알게 된다. 여기서 가능한 a값은 짝수와 13의 배수를 제외한 총 12개(1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25)이고, b값은 26가지 모두 사용 가능하다. 다만 %%a = 1, b = 0%%이면 암호화를 실시하지 않은 것과 같은 결과를 내므로 실제 사용가능한 a,b값의 경우는 12*26 - 1인 311가지가 된다.

복호화 함수는 다음과 같다.

$$f^{-1}(x)=a^{-1}x-a^{-1}b \pmod{26}$$

여기서 %%a^{-1}%%은 a의 곱셈에 대한 역원으로 유클리드의 알고리즘을 통해 어렵지 않게 계산가능하다. 위에서 볼 수 있듯이, 복호화 함수 역시 %%ax + b%%꼴의 일차함수로 나타난다. 따라서 일반화된 카이사르 암호의 암호화 함수와 복호화 함수는 a,b값을 열쇠로 하는 일차함수 하나로 표현할 수 있다.

예를 들어 암호화 열쇠 %%a = 1, b = 3%%으로 암호화된 문자열은, %%a = 1, b = -3%%으로 암호화하면 결과적으로 처음의 문자열을 얻게 된다. 암호화하는데 사용하는 함수와 복호화하는데 사용하는 함수가 동일하므로, 일반화된 카이사르 암호화에서는 암호 해독을 위해 별도의 복호화 함수를 작성할 필요가 없다.

일반화된 카이사르 암호 변환기

적당한 암호화 열쇠 a, b 값을 입력하고 암호화 버튼을 누르면 암호문을 볼 수 있습니다. 복호화를 위해서는 복호화 키 계산 버튼을 눌러 복호화키를 얻어낸 뒤 암호화 버튼을 누르거나, 그냥 복호화 버튼을 눌러도 됩니다.

결과