스킬캠퍼스

오늘 끝나면

시저 암호

  • 시저 암호의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 시저이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

글자를 밀어라 — 고대 로마의 3칸 밀기 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

암호 & 보안 · 02

시저
암호

글자를 정한 칸 수만큼 미는 가장 오래된 암호다. 로마의 카이사르가 3칸씩 밀어 썼다. A D가 된다. 그게 전부다.

P.01암호 & 보안 · 02

알파벳을 정한 수만큼 뒤로 민다

시저 암호는 알파벳을 정한 수만큼 뒤로 미는 것이다.

미는 칸이 3이면 AD가 되고, BE가 되고, CF가 된다. 모든 글자가 똑같이 3칸씩 밀린다.

끝에 닿으면 처음으로 돌아온다. X·Y·Z는 한 바퀴 돌아 A·B·C가 된다. 시계가 12를 넘으면 다시 1이 되는 것과 같다.

A를 D로 한 칸씩 미는 그림
키 3, 모든 글자가 3칸씩 밀린다
A
D
B
E
C
F
X
A
Y
B
Z
C

Z를 넘어가면 한 바퀴 돌아 다시 A가 된다. 시계처럼 순환한다

P.02암호 & 보안 · 02

키는 미는 칸 수, 밀고 당김은 대칭이다

미는 칸 수를 라고 부른다. 키만 알면 누구나 풀 수 있다.

보내는 쪽은 키만큼 뒤로 밀어 암호문을 만든다. 받는 쪽은 같은 키만큼 거꾸로 당기면 원문이 그대로 나온다. 민 만큼 당기니 제자리로 돌아온다.

밀 때도 키를 쓰고, 풀 때도 같은 키를 쓴다. 같은 열쇠 하나로 잠그고 여는 것을 대칭이라 한다.

같은 키로 밀고 같은 키로 당기는 그림
같은 키 3으로 밀고 당긴다
보내는 쪽, 키 3만큼 밀기
HI+3 →KL
받는 쪽, 같은 키 3만큼 당기기
KL−3 →HI
열쇠 하나로 잠그고 여는 것이 대칭이다
P.03암호 & 보안 · 02

직접 밀어 보면 띠가 회전한다

위아래로 두 줄의 알파벳 띠가 있다. 슬라이더를 움직이면 아래 띠가 통째로 회전한다.

A 자리에 어떤 글자가 오는지 바로 보인다. 이게 “치환”이다. 평문을 치면 암호문이 실시간으로 나온다.

암호화 ↔ 복호화 토글을 누르면 미는 방향만 뒤집힌다. 한글과 숫자는 그대로 두고 영문만 굴러간다.

슬라이더로 글자 띠를 돌려 보는 도구
시저 암호 변환기 · 직접 밀어 보자
키, 미는 칸 수3

A는 3칸 밀려 D가 된다

치환표, 위 글자가 아래 글자로 바뀐다
ABCDEFGHIJKLMNOPQRSTUVWXYZ
3
DEFGHIJKLMNOPQRSTUVWXYZABC
평문, 넣을 글
암호문, 결과
KHOOR Fdhvdu

한글·숫자·기호는 그대로 둔다. 영문 글자만 3칸 굴린다.

P.04암호 & 보안 · 02

단순함이 곧 약점이다

바로 그 단순함이 함정이다. 시저 암호는 아주 약하다.

키로 쓸 수 있는 수는 1부터 25까지뿐이다. 0은 아예 안 민 것이라 의미가 없다. 그러니 진짜 후보는 25개밖에 없다.

공격자는 1칸부터 25칸까지 전부 당겨 본다. 25번 안에 말이 되는 문장이 반드시 나온다. 키를 몰라도 25번이면 뚫린다.

Q. 키가 3일 때 A는 무엇이 되나?정답은 D다. A를 0번, B를 1번으로 세면 0에 3을 더해 3번 글자, 즉 D가 된다. 받는 쪽은 거꾸로 3칸 당겨 다시 A로 복원한다. 밀고 당김이 같은 키라 제자리로 돌아온다.
키 후보 25개를 다 돌려보면 끝
키 후보는 단 25개뿐이다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
25번 다 당겨보면 반드시 뚫린다

경우의 수가 너무 적어 전수 시도로 뚫린다

3줄 요약

  1. 1글자를 밀어라 — 고대 로마의 3칸 밀기
  2. 2시저 암호은 고전 암호 → 키와 신뢰 → 웹 보안 → 블록체인 → 다음 시대 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

시저

글자를 밀어라 — 고대 로마의 3칸 밀기

암호를 잠그고 풀 때 쓰는 비밀 또는 공개 숫자

해시

데이터를 고정 길이 지문으로 바꾸는 함수