암호화를 처음 설계하는 엔지니어가 가장 먼저 부딪히는 모순이 있다. "데이터를 암호화하려면 키가 필요한데, 그 키는 또 어디에 안전하게 보관하나?" 키를 데이터 옆에 평문으로 두면 암호화의 의미가 없고, 키를 사람이 외워서 매번 입력하는 것도 비현실적이다. 이 "키를 보호하는 키" 문제(key management problem)는 암호학에서 수십 년 묵은 난제이고, 클라우드는 이를 **하드웨어 기반 루트 키 + 봉투 암호화(envelope encryption)**라는 구조로 푼다. AWS KMS(Key Management Service)는 바로 이 구조를 관리형으로 제공하는 서비스다.
SAP-C02 시험에서 KMS는 "어떤 키 유형을 골라야 하나", "Key Policy와 IAM의 권한이 충돌하면 어떻게 되나", "Cross-Account·Cross-Region 복호화를 어떻게 설계하나", "컴플라이언스가 FIPS 140-2 Level 3을 요구하면 무엇을 쓰나"라는 아키텍처 의사결정으로 출제된다. 오늘은 KMS의 내부 동작을 봉투 암호화의 수학까지 들어가 분해하고, 권한 모델의 미묘한 함정과 멀티 리전 키의 DR 설계를 정리한다.
가장 흔한 오해는 "KMS가 내 데이터를 암호화한다"는 것이다. 사실 KMS는 당신의 큰 데이터(수 GB의 S3 객체, EBS 볼륨)를 직접 암호화하지 않는다