10: 기초 암호학

Cryptology

Encrypted Communication

sequenceDiagram participant Alice participant Bob Alice->>Alice: Encrypt(Plaintext, Ke) Alice->>Bob: Ciphertext Bob->>Bob: Decrypt(Ciphertext, Kd)

History of Cipher

By hand

World War

By machine (gears)

Invention of Computer

By machine (semiconductor)

Invention of Quantum Computer

By machine (superconductor?)

고전 암호

Scytale 암호

Plain Text: I am hurt very badly help

I A M H U
R T V E R
Y B A D L
Y H E L P

Cipher Text: IRYYATBHMVAEHEDLURLP

Caesar 암호

A B C D E F G
E F G H I J K

공격

Monoalphabetic cipher(하나의 문자가 하나의 문자로 대치)이므로, 빈도 분석을 통해 암호화를 깰 수 있음

근대 암호

Vigenere 암호

Polyalphabetic cipher: 하나의 문자가 여러개의 문자로 대치(빈도분석이 불가)

a t t a c k i n g t o n i g h t
O C U L O R H I N O L A R I N G O L O G Y

현대 암호

Shannon Entropy

확률변수 $X: P → E$가 분포 $f: E → R$를 따르며, 표본 공간 $E = {x_1, ..., x_n}$가 이산 공간일때, 정보 엔트로피는 다음과 같다.

\[ H(X) = -\sum_{i}^{} f_i \log_2 f_i \]

e.g.) $n$비트 이전 스트링으로 이뤄진 시스템의 엔트로피

\[ H(X) = -\sum (\dfrac{1}{2^{n}}) \log_2 (\dfrac{1}{2^{n}}) = n \]

⇒ 가능한 정보들을 인코딩 하기 위한 평균 비트 수

One-Time-Pad (Vernam Cipher)

PT 01101101 01101001 01100100 01101110 01101001 01100111 01101000 01110100
Key 01100110 01110010 01100001 01100011 01110100 01101001 01101111 01101110
CT 00001011

Alternative

flowchart LR x>"X"] d0["Diffusion 0"] c0["Confusion 0"] d1["Diffusion 1"] c1["Confusion 1"] dn["Diffusion N"] cn["Confusion N"] y>"Y"] x --> d0 d0 --> c0 c0 --> d1 d1 --> c1 c1 -. ... .-> dn dn --> cn cn --> y

메시지 암/복호화

flowchart LR x>"Message"] --> e0["Encrypt(Public Key)"] e0 --> e1["Ciphertext"] e1 --> d0["Decrypt(Private Key)"] d0 --> y>"Message"]

전자 서명

flowchart LR x>"Message"] --> e0["Encrypt(Private Key)"] e0 --> e1["Digital Signature"] e1 --> d0["Decrypt(Public Key)"] d0 --> y>"Message"]

Cryptographic Hash Function

암호의 특성