어제 KMS key는 HSM 밖으로 나오지 않는다고 했다. 그런데 1GB짜리 파일을 암호화하려면 어떻게 할까? 1GB를 KMS API로 보내 암호화받을 수는 없다 — KMS의 Encrypt API는 최대 4KB까지만 받는다. 이 모순을 해결하는 것이 **봉투 암호화(envelope encryption)**다. 핵심 발상은 "데이터는 로컬에서 빠른 대칭 키로 암호화하고, 그 데이터 키만 KMS로 암호화한다"는 것이다. KMS는 작은 키 하나만 보호하면 되고, 큰 데이터 암호화는 로컬 CPU가 처리한다.
봉투 암호화는 SCS-C03에서 반드시 손에 익혀야 하는 개념이다. S3 SSE-KMS, EBS, RDS 암호화가 전부 내부적으로 이 메커니즘을 쓰며, 시험은 "데이터 키가 어디에 어떤 형태로 저장되는가", "복호화 흐름은 어떤 순서인가"를 집요하게 묻는다.
봉투 암호화의 출발점은 GenerateDataKey API다. 이 호출은 두 가지를 동시에 돌려준다.