070. 카이사르 암호 (Caesar Cipher)

⚠️ 이 문서는 고대 로마의 율리우스 카이사르가 군사 기밀을 전하기 위해 알파벳을 일정한 칸 수만큼 평행 이동시켜 암호화했던, 인류 역사상 가장 유명하고 고전적인 단일 치환 암호인 '카이사르 암호'를 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 카이사르 암호(Caesar Cipher)는 평문의 알파벳을 정해진 키(Key, 예: 3칸)만큼 뒤로 밀어서 다른 알파벳으로 바꿔버리는 가장 원시적인 형태의 **단일 치환 암호(Mono-alphabetic Substitution Cipher)**다.
  2. 가치: 암호학의 가장 기본 원리인 '알고리즘(문자를 미루는 규칙)'과 '키(몇 칸을 미룰 것인가)'의 개념을 대중적으로 가장 잘 보여주는 상징적인 암호다.
  3. 한계: 영어 알파벳의 경우 미룰 수 있는 키의 종류가 고작 25개밖에 없으므로 무차별 대입 공격(Brute Force)이나 빈도 분석법에 의해 1초 만에 뚫려버리는 치명적인 취약성을 가진다.

Ⅰ. 개요 및 탄생 배경 (Context & Background)

기원전 50년경, 로마의 위대한 장군 율리우스 카이사르(Julius Caesar)는 골 지방(현재의 프랑스)을 정복하며 로마 본국과 수많은 군사 작전 명령을 주고받았다. 전령이 적군에게 생포되어 편지를 빼앗기더라도 작전을 들키지 않기 위해, 그는 편지의 모든 알파벳을 뒤로 3칸씩 밀어서 적는 마법 같은 규칙을 적용했다.

적군은 편지를 빼앗아도 FDHVDU 같은 알 수 없는 텍스트에 좌절했지만, 규칙을 알고 있는 로마의 부관들은 편지를 받자마자 다시 알파벳을 앞으로 3칸 당겨서 원문인 CAESAR를 완벽하게 해독해 냈다. 이것이 역사상 가장 유명한 카이사르 암호의 탄생이다.

📢 섹션 요약 비유: 어릴 때 친구들과 "A는 D로, B는 E로 바꿔서 부르자!"라고 비밀 규칙을 정한 것과 완벽히 똑같습니다. 카이사르 황제는 이 단순한 규칙 하나로 로마 제국의 통신망을 안전하게 지켰습니다.


Ⅱ. 카이사르 암호의 동작 원리 (Algorithm & Key)

카이사르 암호는 현대 암호학의 두 가지 구성 요소인 '알고리즘'과 '키(Key)'를 명확히 갖고 있다.

  • 알고리즘: 알파벳 순서를 원반처럼 이어 붙인 뒤, 평문의 알파벳을 일정한 칸 수만큼 밀어내어(Shift) 치환한다. (덧셈과 모듈러 연산)
  • 키 (Key): 몇 칸을 밀 것인가? 카이사르 본인은 보통 '3칸'을 밀었지만, 1칸부터 25칸까지 어떤 숫자든 키가 될 수 있다.

수학적 공식 표현 (모듈러 연산)

알파벳 A~Z를 0~25의 숫자로 맵핑하고, 암호화 키를 $K$라고 할 때:

  • 암호화 (Encryption): $C = (P + K) \bmod 26$
  • 복호화 (Decryption): $P = (C - K) \bmod 26$
┌────────────────────────────────────────────────────────────────────────┐
│           카이사르 암호 (Key = 3칸 이동) 작동 원리 시각화              │
├────────────────────────────────────────────────────────────────────────┤
│                                                                        │
│ [알파벳 변환 원반]                                                     │
│ 평문 (Plain)  : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z    │
│ 암호문(Cipher): D E F G H I J K L M N O P Q R S T U V W X Y Z A B C    │
│                                                                        │
│ [암호화 과정 예시]                                                     │
│  평문(P):   B   O   Y                                                  │
│             ↓   ↓   ↓   (오른쪽으로 3칸씩 이동)                        │
│  암호문(C): E   R   B    (※ Y에서 3칸을 밀면 Z, A, B로 순환됨)         │
│                                                                        │
│ * 해석: 해커가 ERB라는 문자를 탈취해도, 3칸 밀렸다는 비밀 키(Key=3)를  │
│         모르면 "소년(BOY)"이라는 뜻을 영원히 알 수 없다.               │
└────────────────────────────────────────────────────────────────────────┘

[다이어그램 해설] 이 그림은 '단일 치환(Mono-alphabetic Substitution)'의 전형을 보여준다. 평문의 'A'는 암호문에서 항상 예외 없이 'D'로 바뀐다. 매우 규칙적이고 정직한 변환이다. 끝 알파벳인 X, Y, Z는 다시 앞으로 돌아와 A, B, C로 치환되는 원형(Circular) 형태를 띤다.

  • 📢 섹션 요약 비유: 자물쇠에 적힌 비밀번호 숫자를 모두 3씩 올려놓는 것과 같습니다. 진짜 주인이 오면 다시 숫자를 3씩 내려서 자물쇠를 엽니다. 자물쇠를 올리는 행위(알고리즘)와 3칸(키)이라는 비밀만 유지되면 안전합니다.

Ⅲ. 치명적 취약점과 암호의 붕괴

카이사르 암호는 1,000년 가까이 위력을 발휘했지만, 두 가지 치명적 공격 방법에 의해 산산조각이 났다.

  1. 무차별 대입 공격 (Brute Force Attack)
    • 원리: 영어 알파벳은 26개다. 아무리 밀어봤자 1칸부터 25칸까지 총 25가지 경우의 수밖에 없다(키 공간이 너무 작음). 해커가 종이와 펜을 들고 1칸 미룬 경우, 2칸 미룬 경우를 25번만 끄적여보면 무조건 뜻이 통하는 평문이 하나 튀어나온다. 컴퓨터로는 0.0001초 만에 뚫린다.
  2. 빈도 분석법 (Frequency Analysis)
    • 원리: 단일 치환의 맹점이다. 영어 문장에서 'E'라는 알파벳이 가장 많이 쓰인다. 만약 3칸 미룬 암호문에서 가장 많이 등장하는 알파벳이 'H'라면, 해커는 "아, 평문의 E를 H로 바꾼 거구나. 즉 3칸을 밀었네!(Key=3)"라고 단숨에 암호키를 알아채고 전체를 해독해 버린다. 평문의 통계적 특성이 암호문 길이에 고스란히 묻어나는 최악의 약점이다.

Ⅳ. 결론

"보안의 기초는 약점을 아는 것에서 시작한다." 카이사르 암호는 현대 컴퓨터 공학에서는 ROT13(13칸 미루기)처럼 인터넷 게시판의 스포일러를 방지하는 우스갯소리 필터 정도로 쓰일 뿐, 아무런 보안 가치가 없다. 하지만 이 단순한 규칙은 후대 학자들에게 "키(Key) 공간을 25개가 아니라 수경 개로 늘려야 하고, 글자가 빈도수를 노출하지 않도록 복잡하게 섞어야 한다(다중 치환, 블록 암호)"는 현대 암호학 진화의 절대적인 교훈과 영감을 주었다.


📌 관련 개념 맵

  • 분류: 고전 암호 $\rightarrow$ 치환 암호 (Substitution) $\rightarrow$ 단일 치환 암호 (Mono-alphabetic)
  • 해독 기법: 전수 조사(Brute Force), 통계적 빈도 분석(Frequency Analysis)
  • 발전된 암호: 비제네르 암호(다중 치환 암호)
  • 현대적 응용: ROT13 (Caesar cipher with key=13)

👶 어린이를 위한 3줄 비유 설명

  1. 카이사르 장군님은 군인들에게 "내일 공격해!"라고 쓸 때, 알파벳을 3칸씩 미뤄서 적었어요. A는 D, B는 E처럼요!
  2. 그래서 적군이 편지를 뺏어도 D, E 같은 알 수 없는 글자라 무슨 뜻인지 몰라 답답해했죠.
  3. 하지만 알파벳은 26개뿐이라서, 똑똑한 적군이 1칸부터 25칸까지 하나씩 끈기 있게 다 밀어보다가 결국 정답을 찾아내서 지금은 쓰지 않는 바보 암호가 되었답니다.