카이사르·ROT13 암호 쉽게 이해하기 — 개념과 원리
카이사르 암호는 모든 글자를 알파벳에서 정해진 칸 수만큼 뒤에 있는 글자로 바꾸는 방식이고, ROT13은 이동 칸 수가 13인 특별한 경우입니다. 암호학의 기본 개념을 배울 때, 퍼즐이나 보물찾기 문제를 풀 때, 스포일러를 살짝 가릴 때 주로 씁니다. 학습용 도구일 뿐 정보를 보호하는 수단은 아닙니다.
계산 방법
알파벳을 A = 0, B = 1, … Z = 25로 번호를 매깁니다. 글자 x와 이동량 k에 대해 다음과 같습니다.
- 암호화: E(x) = (x + k) mod 26
- 복호화: D(x) = (x − k) mod 26
대문자와 소문자는 각각 따로 처리하고, 숫자·공백·문장부호는 그대로 둡니다. 이동량은 26으로 나눈 나머지로 바꾸어 쓰므로 29는 3과 같고, 음수를 넣으면 거꾸로 이동합니다. 두 번째 결과는 같은 글을 반대 방향으로 이동한 값입니다.
원리
mod 26은 알파벳을 원형으로 만들어 Z 다음에 다시 A로 돌아오게 합니다. k만큼 앞으로 갔다가 k만큼 되돌아오면 모든 글자가 제자리로 오므로, 복호화는 반대 방향 이동일 뿐입니다. k = 13이면 13 + 13 = 26이 한 바퀴이므로 앞으로 가는 것과 뒤로 가는 것이 같아집니다. 그래서 ROT13은 두 번 적용하면 원문이 되는 자기 역함수입니다. 수에토니우스의 기록에 따르면 카이사르는 3칸 이동을 썼다고 합니다.
예제 풀이
- 입력값은 글 "Hello World", 이동량 k = 13입니다.
- H(7)는 (7 + 13) mod 26 = 20이므로 U, e(4)는 17이므로 r, l(11)은 24이므로 y, o(14)는 27 mod 26 = 1이므로 b입니다.
- W(22)는 35 mod 26 = 9이므로 J, r(17)은 30 mod 26 = 4이므로 e, d(3)는 16이므로 q입니다.
- 암호문은 Uryyb Jbeyq이며 공백은 그대로 남습니다.
- 13칸 되돌린 결과도 Uryyb Jbeyq입니다. ROT13에서는 두 방향이 같기 때문이며, 이 암호문을 다시 넣으면 "Hello World"가 나옵니다.
결과 해석
결과가 읽히지 않으면 이동량이 틀린 것이므로 다른 값을 넣어 봅니다. 이동량을 모를 때도 실제로 의미 있는 키는 25개뿐이라 전부 대입해 보면 몇 초 만에 풀립니다. 영어 문장이라면 암호문에서 가장 많이 나오는 글자가 대개 E에 해당한다는 빈도 분석으로 더 빨리 풀 수 있습니다.
흔한 실수
- 비밀번호나 개인정보를 이 방식으로 감추는 경우입니다. 보안 효과는 사실상 없습니다.
- 이동량을 0이나 26으로 넣으면 글이 바뀌지 않습니다.
- 한글이나 악센트가 붙은 글자는 바뀌지 않고, A–Z와 a–z만 이동합니다.
자주 묻는 질문
인터넷에서 ROT13을 쓰는 이유는 무엇입니까?
스포일러나 퀴즈 정답처럼 무심코 보이지 않게만 가리고, 읽고 싶은 사람은 바로 풀 수 있게 하려는 것입니다.
카이사르 암호의 키는 몇 개입니까?
이동량은 26가지이고 그중 글을 실제로 바꾸는 것은 25가지라서 최대 25번이면 풀립니다.
ROT13을 두 번 하면 더 안전합니까?
아닙니다. 두 번 적용하면 총 26칸 이동이 되어 원문으로 돌아갑니다.
출처: Suetonius, The Lives of the Twelve Caesars, "Divus Julius" 56 · Simon Singh, The Code Book, Fourth Estate, 1999