테마
암호 알고리즘과 해시
암호화(encryption)는 평문을 키 없이는 읽을 수 없는 암호문으로 바꾸는 일이고, 기밀성(confidentiality)을 지키는 가장 기본 수단이다. 암호는 키를 쓰는 방식에 따라 대칭키 암호(symmetric-key cryptography)와 공개키 암호(public-key cryptography)로 나뉘고, 되돌릴 수 없는 해시 함수(hash function)가 따로 있다. 공개키 알고리즘과 해시 함수는 다음 문서에서 다룬다. 시험은 설명을 주고 알고리즘 이름을 쓰게 하거나, 블록 크기·키 길이 같은 제원을 묻는다.
대칭키 암호와 공개키 암호
대칭키 암호(symmetric-key cryptography)는 암호화와 복호화(decryption)에 같은 키를 쓴다. 빠르지만 상대와 키를 미리 안전하게 나눠 가져야 하고, 쌍마다 키가 필요해 관리할 키가 많다. 국내 시험은 이것을 개인키 암호(private-key encryption)·비밀키 암호·단일키 암호라고도 부른다.1
공개키 암호(public-key cryptography)는 누구에게나 알려 주는 공개키와 본인만 가진 개인키, 서로 다른 두 키를 쓴다. 공개키로 잠근 것은 짝이 되는 개인키로만 열리므로 키를 미리 나눌 필요가 없고, 사용자마다 키 한 쌍이면 된다. 대신 계산이 무거워 느리다. 그래서 실제 통신에서는 공개키 암호로 대칭키를 안전하게 건네고, 데이터는 대칭키로 암호화하는 방식을 섞어 쓴다.
블록 암호와 스트림 암호
대칭키 암호는 다시 데이터를 자르는 방식으로 나뉜다. 블록 암호(block cipher)는 평문을 정해진 크기의 블록으로 잘라 블록 단위로 암호화한다. 스트림 암호(stream cipher)는 평문과 같은 길이의 키 스트림을 만들어 비트나 바이트 단위로 섞는다.
| 구분 | 대표 알고리즘 |
|---|---|
| 블록 암호 | DES, 3DES, AES, SEED, ARIA, IDEA, Skipjack |
| 스트림 암호 | RC4, LFSR, TKIP(RC4 기반) |
대칭키 알고리즘 제원
| 이름 | 개발 | 블록 | 키 |
|---|---|---|---|
| DES | 미국 NBS, 1977년 표준 | 64비트 | 56비트, 16라운드 |
| AES | 미국 NIST, 2001년 | 128비트 | 128·192·256비트 |
| SEED | KISA, 1998년 | 128비트 | 128비트 |
| ARIA | 국내 학계·연구소, 2004년 KS 표준 | 128비트 | 128·192·256비트 |
| IDEA | 스위스 ETH 라이·메시, 1991년 | 64비트 | 128비트 |
| Skipjack | 미국 NSA | 64비트 | 80비트 |
DES(Data Encryption Standard, 데이터 암호화 표준)는 미국 표준국(NBS, National Bureau of Standards)이 1975년에 공개하고 1977년에 미국 연방정보처리표준(FIPS, Federal Information Processing Standards) 46으로 정한 최초의 공용 표준 암호다. 키가 56비트라 컴퓨터가 빨라지자 모든 키를 대입해 보는 공격에 뚫렸고, 그래서 DES를 세 번 적용하는 3DES(Triple DES)가 나왔다. AES(Advanced Encryption Standard, 고급 암호화 표준)는 DES를 대신할 알고리즘을 미국 국립표준기술연구소(NIST, National Institute of Standards and Technology)가 공모해 2001년 FIPS 197로 정한 것으로, 키 길이에 따라 AES-128·AES-192·AES-256으로 부른다.
SEED와 ARIA는 국내 표준이다. SEED는 한국인터넷진흥원(KISA, Korea Internet & Security Agency)이 개발했고, ARIA는 AES와 같은 블록·키 크기를 갖도록 설계되어 2004년 국가기술표준원의 KS X 1213으로 표준이 되었다. IDEA(International Data Encryption Algorithm)는 라이(Xuejia Lai)와 메시(James Massey)가 1990년에 낸 PES를 고쳐 1991년에 발표한 것이고, Skipjack은 미국 국가안보국(NSA, National Security Agency)이 클리퍼 칩(Clipper chip)에 넣어 음성 통신 암호화에 쓰였다.
TKIP(Temporal Key Integrity Protocol)는 무선랜 암호 WEP(Wired Equivalent Privacy, 유선급 프라이버시)의 약점을 보완하려고 만든 프로토콜이다. 128비트 키를 쓰고 패킷마다 키를 새로 섞어 같은 키가 반복되지 않게 했다. TKIP도 지금은 안전하지 않아 2012년 IEEE 802.11 개정에서 폐기 권고되었다.
시험 포인트
- "암호화·복호화에 같은 키, 빠르지만 키 관리가 어렵다" → 대칭키(개인키) 암호.
- NBS, 64비트 블록, 56비트 키, 16라운드 → DES. "NIST 공모, 128비트 블록" → AES.
- NSA, 클리퍼 칩, 80비트 키 → Skipjack. 라이·메시, PES 개선 → IDEA.
- "WEP 약점 보완" → TKIP.
- 스트림 암호: RC4·LFSR·TKIP. 블록 암호: DES·AES·SEED·ARIA·IDEA·Skipjack.
참고
표준 용어에서 개인키(private key)는 공개키 암호의 짝 가운데 본인만 가진 키를 가리킨다. 국내 시험이 대칭키 암호를 '개인키 암호'라고 부르는 것은 관례적 표기이므로, 문제 맥락으로 구분한다. ↩︎
