시저 암호 원리 — 글자 밀어 암호화하기(ROT13)
글자를 일정 칸 밀어 치환하는 시저 암호의 원리와 ROT13, 복호화 방법, 보안이 약한 이유를 예시로 정리합니다.
"DWWDFN DW GDZQ" 같은 글자가 적힌 쪽지를 받아 본 적이 있나요. 얼핏 보면 알 수 없는 문자열이지만, 모든 글자를 세 칸씩 앞으로 당겨 읽으면 "ATTACK AT DAWN"이 됩니다. 이렇게 알파벳을 일정한 칸만큼 밀어 다른 글자로 바꾸는 방식이 바로 시저 암호입니다. 고대 로마의 정치가 카이사르가 군사 통신에 사용했다고 전해져 그의 이름이 붙었습니다. 원리가 단순해 암호의 기초를 이해하는 데 가장 좋은 출발점이며, 직접 글자를 밀어 보고 싶다면 시저 암호 도구로 즉시 실험해 볼 수 있습니다.
한눈에 보기
- 정의: 알파벳을 정해진 칸(shift)만큼 밀어 다른 글자로 치환하는 암호.
- 예시: shift 3이면 A→D, B→E … Z→C(끝은 다시 처음으로 순환).
- 복호화: 암호화할 때와 같은 칸만큼 반대 방향으로 밀면 원문 복원.
- ROT13: 13칸 이동. 알파벳 26자의 절반이라 두 번 적용하면 원래대로 돌아옴.
- 보안: 가능한 키가 25가지뿐이고 빈도분석에 쉽게 깨져 실제 보안용으로는 부적합.
시저 암호란
시저 암호는 평문의 각 글자를 알파벳 순서상 일정 칸만큼 이동시켜 다른 글자로 바꾸는 치환 암호입니다. 이때 얼마나 밀지를 정하는 값을 이동량, 즉 shift라고 부릅니다. 핵심 규칙은 알파벳이 한 줄이 아니라 고리처럼 둥글게 이어진다고 보는 것입니다. 그래서 Z처럼 끝에 있는 글자를 밀면 다시 처음인 A 쪽으로 순환합니다. shift가 3일 때를 표로 보면 다음과 같습니다.
| 평문 | A | B | C | … | X | Y | Z |
|---|---|---|---|---|---|---|---|
| 암호문 | D | E | F | … | A | B | C |
이 방식은 송신자와 수신자가 같은 shift 값만 공유하면 되므로 익히기 쉽습니다. 카이사르는 주로 shift 3을 썼다고 알려져 있지만, 1부터 25까지 어떤 값이든 키로 쓸 수 있습니다.
암호화와 복호화
암호화는 평문의 각 글자를 정해진 shift만큼 뒤쪽으로 미는 과정입니다. 예를 들어 shift 3으로 "HELLO"를 바꾸면 H→K, E→H, L→O, L→O, O→R가 되어 "KHOOR"가 됩니다.
복호화는 그 반대입니다. 같은 shift 값만큼 앞쪽으로 되밀면 됩니다. "KHOOR"를 shift 3만큼 거꾸로 당기면 K→H, H→E, O→L … 이 되어 다시 "HELLO"가 복원됩니다. 즉 암호화에 쓴 칸 수만 알면 누구나 원문을 되돌릴 수 있습니다.
직접 손으로 계산하면 순환 처리에서 실수하기 쉽습니다. shift 값과 방향(암호화/복호화)을 골라 한 번에 변환하려면 시저 암호 도구를 쓰는 편이 정확하고 빠릅니다.
ROT13의 특별한 점
ROT13은 shift 값을 13으로 고정한 시저 암호입니다. 이름의 ROT는 회전(rotate)을 뜻합니다. ROT13이 특별한 이유는 알파벳 26자의 정확히 절반이 13이기 때문입니다. 어떤 글자를 13칸 밀고 다시 13칸 밀면 26칸을 이동한 셈이 되어 한 바퀴 돌아 제자리로 옵니다.
따라서 ROT13은 암호화와 복호화가 같은 연산입니다. 같은 변환을 두 번 적용하면 원문으로 돌아오므로 별도의 복호화 절차가 필요 없습니다. 이 편리함 덕분에 온라인 게시판에서 스포일러나 정답을 잠깐 가릴 때 자주 쓰입니다. 예를 들어 "HELLO"에 ROT13을 적용하면 "URYYB"가 되고, "URYYB"에 다시 ROT13을 적용하면 "HELLO"로 돌아옵니다.
보안이 약한 이유
시저 암호는 교육용으로는 훌륭하지만 실제 보안에는 적합하지 않습니다. 이유는 두 가지입니다.
- 키 공간이 너무 작다: 가능한 shift 값은 1부터 25까지 25가지뿐입니다. 공격자가 25가지를 모두 시도해 보는 것만으로 금방 원문을 찾을 수 있습니다. 이를 전수 조사(브루트포스)라고 합니다.
- 빈도분석에 취약하다: 글자를 일정하게만 밀기 때문에 평문의 글자 빈도 패턴이 암호문에 그대로 남습니다. 영어에서 가장 자주 쓰이는 글자가 E라는 점을 이용하면 shift 값을 추정해 한 번에 깰 수 있습니다.
그래서 오늘날 시저 암호는 진짜 기밀을 지키는 용도가 아니라 암호 학습, 퍼즐, 그리고 스포일러 가리기 같은 가벼운 용도로 쓰입니다.
자주 묻는 질문
시저 암호와 ROT13은 다른 건가요? 다르지 않습니다. ROT13은 시저 암호 중에서 이동량을 13으로 고정한 특수한 경우입니다. 13이 알파벳 길이의 절반이라 암호화와 복호화가 같아지는 성질이 추가될 뿐입니다.
숫자나 한글, 공백도 암호화되나요? 기본적인 시저 암호는 알파벳 26자만 대상으로 합니다. 숫자, 공백, 한글, 특수문자는 보통 그대로 두고 알파벳만 밀어 변환합니다.
shift 값을 모르면 복호화할 수 없나요? 키를 몰라도 25가지 경우의 수가 전부이므로 모두 시도해 보면 됩니다. 의미가 통하는 문장이 나오는 shift 값을 찾으면 그것이 원래 키입니다.
ROT13은 왜 비밀번호로 쓰면 안 되나요? ROT13은 키가 항상 13으로 고정돼 있어 누구나 즉시 되돌릴 수 있습니다. 암호화라기보다 단순히 글자를 가리는 장치이므로 보안이 필요한 곳에는 절대 쓰면 안 됩니다.
시저 암호는 모든 암호학의 출발점이자, 왜 현대 암호가 훨씬 복잡해야 하는지를 보여 주는 좋은 예시입니다. 원리를 머리로만 이해하기보다 직접 글자를 밀어 보면 훨씬 빨리 와닿습니다. 평문과 shift 값을 입력해 암호화·복호화를 바로 확인하고 ROT13까지 실험해 보고 싶다면 시저 암호 도구를 사용해 보세요.
🧰 관련 도구
관련 글
텍스트 음성 변환(TTS)이란? 원리와 똑똑한 활용법
글자를 음성으로 읽어주는 TTS의 원리와 브라우저 음성 합성(Web Speech API), 교정·접근성·외국어 발음 등 활용법을 정리합니다.
CSS box-shadow 완전 정복 — 그림자 값 5가지 이해
box-shadow의 가로·세로 오프셋·번짐(blur)·확산(spread)·색과 inset, 여러 그림자 겹치기를 예시 코드로 정리합니다.
CSS 그라데이션 만드는 법 — linear·radial·conic
CSS linear-gradient·radial-gradient·conic-gradient 문법과 방향·색 정지점(color stop) 지정법을 예시 코드로 정리합니다.