Crypto
크립토
- 문맥에 따라 다를 수 있지만,
일반적으로, Cryptography, Cryptanalysis, Cryptology 모두를 아우르는 용어이다.
- 암호학에서는 아래와 같은 정의를 전제하에 암호 체계를 구성 및 운용해나간다.
"Key는 영원한 비밀로 남을 수 있으나, Crypto Algorithms은 언젠가 Attacker들에게 알려지게 되어있다.
그러므로, 키를 제외한 모든 부분이 알려져도 암호체계는 안전하도록 설계해야 한다."
(Kerckhoffs' Principle, 커코프의 원칙)
Definition about Crypto (크립토에 관련된 개념)
Term | Description |
Crypto (크립토) |
- 문맥에 따라 다를 수 있지만, 일반적으로, Cryptography, Cryptanalysis, Cryptology 모두를 아우르는 용어이다. |
Plaintext Cleartext (평문) |
- Encrypt되지 않은, 원상태 그대로의 데이터(메시지)를 의미한다. |
Ciphertext (암호문) |
- Encrypt된 상태의 평문을 의미한다. - Ciphertext를 Decrypt(복호화)하면 Plaintext가 된다. |
Cipher Cryptosystem (암호) |
- Plaintext를 Encrypt(암호화)할 때 쓰이는 것을 의미한다. |
Cryptography (암호술) |
- Cipher(암호)를 만들기 위한 과학기술을 의미한다. - Making Secret Code |
Cryptanalysis (암호해독술) |
- Cipher(암호)를 해독하기 위한 과학기술을 의미한다. - Breaking Secret Code |
Cryptology (암호학) |
- Cryptography와 Cryptanalysis를 다루는 학문을 의미한다. |
Encryption Building Block (암호화 단위) |
- 경우에 따라, Plaintext(평문)의 전부 또는 일부를 암호화할 수 있다. - Block Ciphers (특정 Block 단위 암호화) - Stream Ciphers (평문 전체에 대해, Byte 단위로 암호화) - Hash Functions (해시 함수의 출력값을 암호문으로 지정) |
Key (키) |
- 암호화 메커니즘에 사용되는 것으로 Cryptosystem(암호체계)을 구성하는 데 사용된다. |
Key-based Classification (키-기반 분류) |
- Key의 개수를 기준으로 암호화 방법을 구분짓는 방식을 의미한다. |
Symmetric Key (대칭키) |
- 암호화하는 측과 복호화하는 측이 모두 같은 키를 사용하는 경우, 해당 암호 체계에서 사용하는 키는 대칭키이다. |
Asymmetric Key (비대칭키) |
- 암호화하는 측과 복호화하는 측이 서로 다른 키를 사용하는 경우, 해당 암호 체계에서 사용하는 키는 비대칭키이다. - Public Key(공개키)를 통해 암호화하고, Private Key(비밀키)를 통해 복호화한다. |
Secure Cryptosystem (안전한 암호체계 |
- Brute-Force Attack(Exhaustive Search; 전수조사 공격, 무차별 대입 공격)만이 유일한 공격 방법인 암호체계를 의미한다. - 즉, 주먹구구식 방법 외에는 별다른 공격 방법이 없는 암호체계를 의미한다. |
Insecure Cryptosystem (안전하지 못한 암호체계) |
- Brute-Force Attack 보다 더 빠르게 암호 체계를 Break할 수 있는 공격방법이 이미 알려진 암호체계를 의미한다. |
Perfect Secrecy by Claude Shannon (완벽한 암호 체계를 위한 전제조건)
* Claude Shannon는 정보공학·보안의 아버지라 불리운다.
- 완벽한 암호 체계는 Computational Security(계산적 보안)와 Unconditional Security(무조건적 보안)을
동시에 보장해야 한다.
Conditions for Perfect Secrecy | Description |
Computational Security (계산적 보안) |
- Cipher를 Break하는 데 드는 비용이 암호화된 정보의 가치를 초과한다. - Cipher를 Break하는 데 드는 시간이 정보의 Useful Lifetime을 초과한다. - 완벽한 암호 체계는 Attacker가 사용하는 컴퓨터 리소스(Computational Power)로는 구동할 수 없을 정도의 복잡성을 갖고 있어야 한다. - 즉, 웬만한 컴퓨터 시스템으로는 뚫을 수 없을 정도로 계산 과정이 복잡해야 한다. |
Unconditional Security (무조건적 보안) |
- 완벽한 암호 체계는 Attacker가 무한한 컴퓨터 리소스(Unlimited Computational Power)를 갖고 있다 할지라도 Attacker가 해독한 결과가 Plaintext와 같은지 판단할 수 없어야 한다. - 즉, 암호를 어찌저찌 해독했다 할지라도 이것이 정답인지 아닌지 밝힐 수 있는 근거가 없어야한다. |
- 해독되기 전 Plaintext의 Prior Probability Distribution(사전 확률 분포)과
해독된 후의 Plaintext의 Posteriori Probability Distribution(사후 확률 분포)가 일치할 때
Perfect Secrecy가 확보되었다 볼 수 있다.
(다른 말로, 암호문을 해독하여 얻을 수 있는 새로운 정보가 없을 때 Perfect Secrecy가 확보되었다 볼 수 있다.)
History of Cryptosystem (암호 체계의 역사)
Shift Cipher (Caesar Cipher; 이동 암호, 시저 암호)
- 로마의 카이사르가 사용했던 암호 체계이다.
- Key는 알파벳 글자를 몇 칸 이동할지에 대한 값이다.
(알파벳은 26자 이므로, Key값은 Modulo 연산을 통해 26 미만으로 결정된다.)
(예를 들어, Key=3인 경우, 알파벳 A는 D로 암호화된다.)
- Key Space Size = 26(키 값의 범위가 26)으로 굉장히 작아
Brute-Force Attack(Exhaustive Search; 전수조사 공격, 무차별 대입 공격)에 취약하다.
Transposition Cipher (전치 암호)
- 평문의 글자들의 순서를 뒤바꾸는(전치시키는) 방식의 암호 체계이다.
- Key Space Size = \(n!\)이다. (여기서 \(n\)은 Permutation Block의 길이이다.)
Substitution Cipher (Monoalphabetic; 단일치환 암호)
- 어떤 글자를 지정한 글자로 변환하는 방식의 암호 체계이다.
- Key Space Size = \(26!\) 으로, Brute-Force Attack은 어려우나,
실제 영문에서 알파벳별 사용 빈도수와 암호문에서의 알파벳 출현 빈도를 대조하여
어떤 알파벳이 어떤 알파벳으로 암호화되었는지 통계와 확률을 기반으로 추론하여 암호체계를 뚫을 수 있다.
Vigenère Cipher (비즈네르 암호)
- 시저 암호를 개선시킨 암호 체계이다.
- Plaintext \(P = "p_1p_2\cdots p_m"\) 와 Key word \(K = "k_1k_2 \cdots k_n"\) 가 있을 때,
Vigenère Table에서 \(p_i\)와 \(k_i\)가 교차하는 지점에 해당하는 문자로 암호화하는 방식이다.
Example. Encrypt Plaintext = "\(ATTACK\)" with Key word = "\(SECRET\)"
Plaintext (평문) |
A | T | T | A | C | K |
Key word (키) |
S | E | C | R | E | T |
Ciphertext (암호문) |
S | X | V | R | G | D |
- 위 예시에서는 평문과 키의 길이가 같으나, 길이가 다른 경우도 충분히 존재할 수 있다.
Vernam Cipher (One-Time Pads)
Encryption | Decryption |
- 일회용 Key와 Plaintext를 XOR 연산하여 암호화하는 방식이다.
- 즉, \(\mathrm{Plaintext} \oplus \mathrm{Key} \to \mathrm{Ciphertext}\) 이고,
\(\mathrm{Ciphertext} \oplus \mathrm{Key} \to \mathrm{Plaintext}\) 이다.
(하나의 Key로 암호화·복호화할 수 있다. XOR 연산의 매력이다.)
- Key Space Size가 매우 크고, 암호문이 평문에 대한 어떠한 정보도 담고 있지 않아 Perfect Secrecy를 갖추고 있다.
- 그러나, 매회 변하는 일회용 Key를 Sender와 Receiver가 서로 안전하게 나눠야하고,
Key의 크기가 평문의 크기와 같아야 한다는 제한점이 있다.
- 암호화 메커니즘이 이미 공개되어 있어(XOR 연산을 통한 암호·복호화)
같은 Key를 재사용할 경우, 암호 체계가 뚫릴 가능성이 매우 높아진다. (이 때문에 Key는 반드시 일회용이어야 한다.)
Codebook Cipher (코드북 암호)
- 단어와 암호 코드가 일대일로 대응된 관계가 기술된 Codebook을 통해 암호화/복호화하는 암호 체계이다.
(Block Cipher에 속한다.)
- 제1차 세계 대전 당시 독일군이 사용하던 암호체계로,
Zimmermann Telegram(치머만 전보) (URL)가 이 암호체계를 사용한 대표적 예시이다.
(이 전보가 유출된 사건이 미국이 1차 세계 대전에 참전하게 된 주요한 이유 중 하나이다.)
Types of Cipher (암호의 유형)
- Cryptographic Hash Functions (암호화 해시함수) (URL)
- Random Function을 이용한 암호화 메커니즘이다. (Any Size Input → Fixed Size Output) - Stream Ciphers (스트림 암호) (URL)
- Hash Function의 역을 이용한 암호화 메커니즘이다. (Short Input → Long Output)
- 연속적인 입력 데이터를 Byte 단위로 암호화한다.
- 암호 전송 중, 일부가 누락되어도 인접한 부분들을 통해 복원할 수 있다. - Block Ciphers (블록 암호) (URL)
- Random Permutation을 이용한 암호화 메커니즘이다. (Fixed Size Input ↔ Fixed Size Output)
- Keyed-Invertible Function을 통해 암호화/복호화한다.
- 스트림 암호와 달리, 암호 전송 중 Block이 누락되면 복원할 수 없다. - Public Key Cryptography (공개키 암호 방식) (URL)
- 특수한 형태의 Block Cipher이다.
- 누구나 암호화할 수 있지만, Key Owner만이 복호화할 수 있다. - Digital Signatures (전자 서명) (URL)
- 누구나 Check할 수 있지만, Key Owner에 의해서만 Sign이 이루어질 수 있다.
Reference: Information Security: Principles and Practice 2nd Edition
(Mark Stamp 저, Pearson, 2011)
Reference: 2022학년도 1학기 홍익대학교 네트워크 보안 강의, 이윤규 교수님