암호학자들은 현재까지 등장한 암호를 크게 고전암호와 현대암호, 이 두 가지로 분류합니다. 최근 들어서는 양자 후 암호까지 포함하여 세 가지가 되어가고 있습니다만, 우선은 고전암호와 현대암호에만 집중하도록 하죠. 이번 암호학 이야기 두 번째 글에서는 고전 암호의 종류에는 무엇이 있으며 그들이 어떤 방식으로 구현되고, 왜 그들이 “고전” 암호라 불리며 더 이상 쓰이지 않는지에 대해 알아보도록 하겠습니다.

Caesar 암호(시저 암호, 카이사르 암호)

가장 유명한 현대암호가 RSA라면, 가장 유명한 고전암호는 Caesar 암호라 해도 무방할 정도로 유명한 암호입니다. 이후 꽤 많은 종류의 고전 암호가 Caesar 암호의 방식을 변형하여 탄생하였죠.

우선 Caesar 암호에서는 각각의 알파벳을 하나의 숫자에 일대일 대응시킵니다. A는 0, B는 1, … , Z는 25에 대응시킵니다. 이는 밑에서 다룰 Affine 암호와 Vigenere 암호에서도 동일하게 성립하는 이야기이므로 꼭 기억해두시길 바랍니다.

Caesar 암호가 사용하는 암호화 방식은 알파벳을 숫자에 대응시킨 후, 3을 더해 26으로 나눈 나머지를 구하는 것이었습니다. 알파벳 A와 X를 예로 들자면, 각각 0과 23에 대응되며 3을 더하고 나면 26으로 나눈 나머지가 3과 0이 됩니다. 이 숫자와 대응되는 알파벳은 각각 D와 A이므로 A를 암호화하면 D, X를 암호화하면 A가 되는 식이죠.

PITCHICLE을 암호화하면 SLWFKLFOH가 되고, 이러한 방식으로 암호화하여 메세지를 비밀스럽게 전달했다고 합니다.

물론 반드시 3을 더해야하는 것은 아니며, 0~25의 어떤 정수를 쓰더라도 사용 가능한 로직이라고 할 수 있습니다.

* 위에서 설명한 알파벳을 숫자로 대응시키는 방법을 활용하여 알파벳의 덧셈을 정의할 수 있습니다. 대응하는 숫자를 더해 26으로 나눈 나머지에 대응하는 알파벳을 덧셈의 결과로 정의하는 것으로, B+C=E 같은 예시가 있습니다.

Scytale & Railfence 암호

Scytale과 Railfence는 서로 굉장히 유사한 방식의 암호화 기법입니다.

Scytale 암호화의 예시

Railfence 암호화의 예시

위 두 이미지는 각각 Scytale과 Railfence로 HELLOWORLD를 암호화하는 예시입니다.

Scytale의 경우는 K칸을 정해두고 위에서 아래로 한 칸씩 이동하며 적은 후, 맨 윗줄부터 읽는 방식입니다. 이 예시의 경우에는 HLODEORLWL이 되겠네요.

Railfence의 경우도 동일하게 K칸을 정해두나, 위에서 아래로 내려간 후에는 아래에서 위로 올라가는 방식입니다. 이 예시의 경우는 HOLELWRDLO가 됩니다.

Affine 암호

Affine 암호는 위에서 설명한 것처럼 알파벳을 숫자에 대응시키고(이를 x라 합시다) ax+b(mod 26)에 대응하는 알파벳으로 다시 바꾸는 암호입니다. a는 26과 서로소여야 합니다만, b에는 특별한 제약사항이 없습니다.

Vigenere 암호

Vigenere 암호의 경우는 방식이 간단하면서도 나름 풀기 복잡한 암호입니다. 특정 길이의 key를 준비한 후, 이를 반복하여 평문의 알파벳에 더하는 방법입니다.

key가 ABC, 평문이 HELLOWORLD라고 하면 HELLOWORLD와 ABCABCABCA를 더하는거죠. 이 경우 HFNLPYOSND라는 암호문을 얻을 수 있습니다. 위의 Affine 암호나 Caesar 암호를 공격하는 빈도수 분석 등의 공격방법이 잘 먹히지 않습니다만, 평문이 취약할 경우 암호문으로부터 평문을 복구할 수 있는 등 공격 가능한 취약점이 존재하기 때문에 사용되지 않습니다.

고전암호를 더이상 쓰지 않는 이유

실은 더이상 사용되지 않는 암호들이지만, 위에서 총 5가지의 고전암호에 대해 알아보았습니다. 이러한 암호들이 사용되지 않는 이유는 무엇일까요? 고전암호의 마지막은 흔히 에니그마 암호라고 이야기하는데, 그 이후로는 컴퓨터가 발달하여 고전암호를 쉽게 공격할 수 있게 되었기 때문입니다.

‘무어의 법칙’은 2년마다 컴퓨터의 성능이 2배 좋아질 것으로 예측하였으나, 요즘에는 그조차 넘어설 정도로 빠르게 컴퓨터의 연산능력이 강력해지고 있습니다. 더이상 고전암호를 활용한 ‘보기에만 복잡한 암호’는 사용할 수 없으며, 암호에 대한 모든 정보가 노출되는 상황도 고려해야하기 때문에 암호학이 굉장히 복잡해졌습니다.

‘현대암호’라고 부르는 암호들부터는 암호화 방식이 모두 드러나더라도 엄청난 계산능력을 지닌 공격자조차 쉽게 암호 체계를 깰 수 없도록 암호가 디자인되고 있으며, ‘혼돈’과 ‘확산’이라는 성질을 만족하여 암호문에 평문의 특성이 반영되지 않도록 하고 있습니다. 이러한 암호들은 이전 암호학 이야기 1에서 언급하였듯 소인수분해, 이산 로그 등 쉽게 해결하는 방법이 밝혀지지 않는 문제들을 이용하여 구성됩니다.

정리 및 요약

이번 글에서는 고전 암호의 종류와 더이상 사용되지 않는 이유를 알아보았습니다. 현대암호에 대해 알아보겠습니다.

yubin.choi's profile image

최유빈(yubin.choi)

2021-08-04 14:40

Read more posts by this author