Back to Blog
암호학평문암호문시저암호치환전치

0x02. 암호학의 기초 - 메시지를 숨기는 기술

시저 암호부터 대칭키/비대칭키까지, 암호화의 핵심 원리를 정리한다

비밀 메시지를 안전하게 전달하는 문제는 수천 년 전부터 인류가 고민해온 주제다. 그 해답이 바로 암호학(Cryptography) 이다.


암호학의 기본 용어

암호학(Cryptography) 은 메시지를 인코딩하여 읽을 수 없게 만드는 기술이다. 비밀을 지키는 방법이라 할 수 있다.

반대로 암호 분석(Cryptanalysis) 은 암호화된 메시지를 원래 형태로 되돌리는 기술이다. 여기서 중요한 점은 암호화 방법을 모르는 상태에서 해독한다는 것이다. 흔히 말하는 "암호 해킹"이 이에 해당한다.

이 둘을 합친 학문이 암호학(Cryptology) 이다.

평문과 암호문

  • 평문(Plain Text): 누구나 읽고 이해할 수 있는 원본 메시지 (Clear Text라고도 부름)
  • 암호문(Cipher Text): 암호화되어 이해할 수 없는 형태로 변환된 메시지

보안을 위해서는 평문을 암호문으로 변환해야 한다. 외국어로 번역하는 것과 비슷하지만, 이 "외국어"는 오직 특정 사람만 이해할 수 있다.

Plain Text to Cipher Text

시저 암호 - 가장 오래된 암호화 기법

시저 암호(Caesar Cipher) 는 기원전 100년경 율리우스 시저가 사용한 방법이다. 약 2000년 전의 기술이다.

원리는 단순하다. 각 알파벳을 3칸씩 뒤로 밀어버린다.

  • A → D
  • B → E
  • C → F

예를 들어 "HELLO"는 "KHOOR"가 된다.

Caesar Cipher

단순해 보이지만 당시에는 꽤 효과적이었다. 물론 지금은 몇 초면 풀 수 있다.

암호문 변환 기법의 두 가지 방식

암호문을 만드는 방법은 크게 두 가지로 나뉜다:

  • 치환(Substitution): 문자를 다른 문자로 바꾸는 방식
  • 전치(Transposition): 문자의 위치를 섞는 방식

이 두 가지 개념이 현대 암호학의 기초가 된다.

스테가노그래피 - 메시지 자체를 숨기다

스테가노그래피(Steganography) 는 조금 다른 접근법이다. 메시지를 암호화하는 것이 아니라, 메시지가 있다는 사실 자체를 숨기는 기술이다.

역사적 예시: 고대 그리스의 히스티아이오스는 노예의 머리를 밀고 두피에 메시지를 문신으로 새겼다. 머리카락이 다시 자라면 메시지는 완벽히 숨겨졌다.

Steganography

오늘날에는 이미지나 오디오 파일 속에 데이터를 숨기는 디지털 스테가노그래피가 사용된다.


치환 기법 (Substitution Techniques)

치환 암호는 평문의 각 문자를 다른 문자, 숫자, 또는 기호로 대체하는 방식이다.

치환 암호의 종류는 다음과 같다:

  • 단일 치환(Monoalphabetic): 시저 암호, 덧셈 암호
  • 동음이의 치환(Homophonic): 하나의 문자가 여러 암호문자에 대응
  • 폴리그램(Polygram): 문자 블록 단위로 치환
  • 다중 치환(Polyalphabetic): Autokey 암호, Vernam 암호

단일 치환 암호 (Monoalphabetic)

단일 치환 암호에서는 평문 문자와 암호문 문자가 항상 1:1 관계이다. 'A'가 'D'로 바뀌면, 문서 전체에서 모든 'A'는 'D'로 바뀐다.

덧셈 암호(Additive Cipher)

가장 단순한 단일 치환 암호다. 시저 암호도 덧셈 암호의 일종이다. 시프트 암호(Shift Cipher) 라고도 불린다.

Additive Cipher 1 Additive Cipher 2

무차별 대입 공격 (Brute Force Attack)

공격자 Eve가 암호문 "UVACLYFZLJBYL"을 가로챘다고 가정하자. 무차별 대입 공격으로 어떻게 해독할 수 있을까?

방법은 단순하다. 키 값 1부터 25까지 전부 시도해보면 된다. 키가 7일 때 "not very secure"라는 의미 있는 문장이 나온다.

Brute Force

빈도 분석 (Frequency Analysis)

더 효율적인 방법도 있다. 영어에서는 'E'가 가장 자주 등장하고, 그 다음이 'T', 'A' 순서다. 이 통계적 패턴을 이용하면 암호를 더 빨리 풀 수 있다.

Frequency

통계 공격 예시

Eve가 다음 암호문을 가로챘다고 하자. 통계적 공격으로 평문을 찾아본다.

Statistical Attack 1

암호문에서 각 문자의 빈도를 세면: I = 14번, V = 13번, S = 12번 순이다. 가장 많이 등장한 문자는 I다. 영어에서 가장 흔한 문자가 E이므로, 키 = 4 (I → E) 라고 추론할 수 있다.

Statistical Attack 2

동음이의 치환 암호 (Homophonic)

단일 치환의 약점을 보완한 방식이다. 하나의 평문 문자가 여러 개의 암호문 문자에 대응할 수 있다.

예를 들어 'A'는 'D', 'H', 'P', 'R' 중 아무거나로 바뀔 수 있고, 'B'는 'E', 'I', 'Q', 'S' 중 하나로 바뀐다.

Homophonic 1 Homophonic 2

이렇게 하면 빈도 분석이 훨씬 어려워진다.

폴리그램 치환 암호 (Polygram)

폴리그램 암호는 문자 하나씩이 아니라 문자 블록 단위로 치환한다.

  • 평문의 블록이 암호문의 블록으로 변환
  • 비슷한 텍스트 패턴도 완전히 다른 암호문이 될 수 있음
  • 문자 단위가 아닌 블록 단위 치환
Polygram

다중 치환 암호 (Polyalphabetic)

다중 치환 암호에서는 같은 문자라도 위치에 따라 다른 암호문자가 된다. 평문 문자와 암호문 문자의 관계가 1:다(one-to-many) 인 것이다.

Polyalphabetic

오토키 암호 (Autokey Cipher)

Alice와 Bob이 초기 키 값 k1 = 12로 오토키 암호를 사용하기로 했다고 가정하자. Alice가 "Attack is today"라는 메시지를 보내려 한다.

암호화는 문자 단위로 진행된다.

Autokey Cipher

버남 암호 - 일회용 패드 (Vernam Cipher / One-Time Pad)

버남 암호는 이론상 해독이 불가능한 유일한 암호다. 단, 조건이 까다롭다.

핵심 원리:

  • 반복되지 않는 랜덤 문자열을 키로 사용
  • 한 번 사용한 키는 절대 재사용하지 않음 (그래서 "일회용")
  • 평문과 같은 길이의 키가 필요 (짧은 메시지에 적합)

암호화 과정:

  1. 각 평문 알파벳을 숫자로 변환 (A = 0, B = 1, ... Z = 25)
  2. 키의 각 문자도 동일하게 숫자로 변환
  3. 평문 숫자와 키 숫자를 더함
  4. 합이 26 이상이면 26을 뺌
  5. 결과 숫자를 다시 알파벳으로 변환

일회용 키가 "NCBTZQARX"일 때:

Vernam Cipher

전치 기법 (Transposition Techniques)

전치 암호는 치환과 다르다. 문자를 바꾸는 것이 아니라 문자의 위치를 재배열하는 방식이다.

카드 섞기처럼 내용은 그대로지만 순서가 바뀌는 것이다.

전치 암호의 종류:

  • 키 없는(Keyless) 전치 암호: Rail-Fence, 단순 열 전치
  • 키 있는(Keyed) 전치 암호
  • 두 방식의 조합

레일 펜스 기법 (Rail-Fence)

키 없는 전치 암호의 대표적인 예다. 문자를 지그재그 패턴으로 배열한 뒤, 행 단위로 읽어서 암호문을 만든다.

Rail Fence 1

예를 들어 Alice가 Bob에게 "Meet me at the park"를 보내려 한다면:

Rail Fence 2

단순 열 전치 기법 (Simple Columnar)

평문을 직사각형 형태로 배열한 뒤, 열을 랜덤한 순서로 읽어서 암호문을 만든다.

Columnar 1 Columnar 2

다중 라운드 적용:

한 번으로 부족하면 여러 번 반복할 수 있다.

Columnar 3 Columnar 4

키 전치 암호 (Keyed Transposition)

키 없는 암호는 평문을 특정 방식으로 쓰고 다른 방식으로 읽어서 전체 평문에 순열을 적용한다.

또 다른 방법은 평문을 블록 단위로 나누고, 키를 사용해 각 블록 내에서 문자를 재배열하는 것이다.

예시: Alice가 Bob에게 "Enemy attacks tonight"을 보내려 한다.

Keyed 1

암호화와 복호화에 사용되는 키는 순열 키(Permutation Key) 다. 문자가 어떻게 재배열되는지를 정의한다.

Keyed 2

순열 적용 결과:

Keyed 3

두 방식의 조합

키 없는 전치와 키 있는 전치를 결합하면 더 강력한 암호를 만들 수 있다.

Combining

대칭키와 비대칭키 암호화

암호화와 복호화

암호화(Encryption): 평문 → 암호문 변환

Encryption

복호화(Decryption): 암호문 → 평문 변환

Decryption

안전한 암호화의 조건

Requirements

안전한 암호화에는 두 가지가 필요하다:

  • 강력한 암호화 알고리즘
  • 송신자와 수신자만 아는 비밀 키

수학적으로 표현하면:

  • Y = E(K, X) ← 암호화
  • X = D(K, Y) ← 복호화

케르크호프의 원칙 (Kerckhoff's Principle)

여기서 중요한 원칙이 있다.

암호 시스템은 키를 제외한 모든 것이 공개되어도 안전해야 한다.

즉, 공격자 Eve가 암호화/복호화 알고리즘을 완벽히 알고 있다고 가정해야 한다. 암호의 안전성은 오직 키의 비밀성에만 의존해야 한다.

알고리즘을 숨기는 것은 일시적인 보안일 뿐이다. 결국 알려지게 되기 때문이다.

암호 시스템의 분류

암호 시스템은 여러 기준으로 분류할 수 있다.

암호화 연산 유형:

  • 치환(Substitution)
  • 전치(Transposition)
  • 곱(Product): 치환과 전치를 여러 단계로 결합

키의 개수:

  • 단일 키 / 비밀 키대칭키(Symmetric Key) - 송신자와 수신자가 같은 키 공유
  • 두 개의 키 / 공개 키비대칭키(Asymmetric Key)

처리 방식:

  • 블록(Block): 고정 크기 블록 단위로 처리
  • 스트림(Stream): 비트/바이트 단위로 연속 처리

대칭키 암호화 (Symmetric Key)

대칭키 암호화는 암호화와 복호화에 동일한 키를 사용한다. 집 열쇠처럼 잠그는 키와 여는 키가 같은 것이다.

특징:

  • 비밀 키 알고리즘(Secret Key Algorithm)이라고도 불림
  • 암호화/복호화에 동일한 키 사용
  • 보통 하드웨어 가속 지원으로 빠름
Symmetric

비대칭키 암호화 (Asymmetric Key)

비대칭키 암호화는 공개 키개인 키, 두 개의 키를 사용한다.

특징:

  • 공개 키 알고리즘(Public-Key Algorithm)이라고도 불림
  • 키 쌍(공개 키 + 개인 키) 사용
    • 키 관리가 상대적으로 쉬움
  • 계산량이 많음
    • 비슷한 강도의 대칭키 알고리즘보다 약 100배 느림
  • 최근 많은 새로운 알고리즘이 개발됨
Asymmetric

키 범위와 키 크기

암호화/복호화 알고리즘은 보통 비밀이 아니다(케르크호프의 원칙). 공격자에게 남은 도전은 오직 키의 실제 값을 알아내는 것뿐이다.

공격자는 무차별 대입 공격(Brute-Force Attack) 을 시도할 수 있다. 키 범위 내의 모든 가능한 키를 시도하는 것이다.

Key Range

키 범위는 가능한 키의 총 개수를 나타낸다:

  • 키 범위가 클수록 공격이 어려워짐
  • 실제로는 최소 64, 128, 256비트 키를 사용
Key Size

무차별 대입 공격의 특징:

  • 이론상 항상 가능한 공격
  • 가장 기본적인 공격, 키 크기에 비례한 시간 소요
  • 평문을 알거나 인식할 수 있어야 함

아래 표는 키 크기에 따른 해독 시간을 보여준다. 키 크기가 커질수록 필요한 시간이 기하급수적으로 증가한다.

Brute Force

핵심 정리

기본 개념:

  • 암호학(Cryptography): 메시지를 숨기는 기술
  • 암호 분석(Cryptanalysis): 암호를 해독하는 기술
  • 평문 → 암호화 → 암호문 → 복호화 → 평문

암호화 기법:

  • 치환(Substitution): 문자를 다른 문자로 대체
    • 단일 치환, 동음이의 치환, 폴리그램, 다중 치환
  • 전치(Transposition): 문자의 위치를 재배열
    • 레일 펜스, 열 전치, 키 전치

현대 암호화:

  • 대칭키: 같은 키로 암호화/복호화 (빠름)
  • 비대칭키: 공개 키/개인 키 쌍 사용 (느리지만 키 관리 용이)
  • 케르크호프의 원칙: 보안은 키의 비밀성에만 의존해야 함

HGU 전산전자공학부 고윤민 교수님의 24-2 컴퓨터 보안 수업을 듣고 작성한 포스트이며, 첨부한 모든 사진은 교수님 수업 PPT의 사진 원본에 필기를 한 수정본입니다.