AES(Advanced Encryption Standard)는 2001년 NIST가 표준화한 대칭키 블록 암호 알고리즘이다. 전 세계에서 가장 널리 사용되는 암호화 방식으로, HTTPS, 파일 암호화, VPN에서 핵심적으로 사용된다.
특징
| 특징 | 설명 |
|---|
| 키 크기 | 128, 192, 256비트 (AES-256이 가장 안전) |
| 블록 크기 | 128비트 고정 |
| 라운드 수 | 10(128bit), 12(192bit), 14(256bit) |
| 대칭키 | 암호화·복호화에 동일한 키 사용 |
대칭키 vs 비대칭키
| 항목 | AES (대칭) | RSA (비대칭) |
|---|
| 키 수 | 1개 (공유) | 2개 (공개키+개인키) |
| 속도 | 매우 빠름 | 느림 |
| 키 교환 | 별도 필요 | 공개키로 안전 교환 |
| 용도 | 대용량 데이터 | 키 교환, 서명 |
운영 모드
| 모드 | 특징 |
|---|
| ECB | 같은 블록 → 같은 암호문 (취약, 사용 금지) |
| CBC | 이전 블록으로 XOR (IV 필요) |
| CTR | 스트림 암호처럼 동작 |
| GCM | 인증 태그 포함, TLS에서 사용 |
python
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
import os
key = os.urandom(32) # AES-256
nonce = os.urandom(12)
cipher = AESGCM(key)
ciphertext = cipher.encrypt(nonce, b"Hello, World!", None)
plaintext = cipher.decrypt(nonce, ciphertext, None)
print(plaintext) # b"Hello, World!"
관련 개념
- •SSL/TLS — AES-GCM으로 데이터 암호화
- •RSA — AES 키를 RSA로 안전하게 교환
- •SHA-256 — AES와 함께 사용하는 해시 함수
참고문헌
- •NIST FIPS 197 — AES 표준 (2001)