AWS KMS 암호화할 때 encryption context를 붙이면 좋은 이유
조회 2 · 댓글 0
KMS 대칭 암호화 키로 데이터를 암호화할 때 encryption context를 습관적으로 붙여두면 복호화 권한 제어와 감사(audit)를 한 번에 챙길 수 있습니다. 비밀이 아닌 키-값 쌍인데, 암호문에 암호학적으로 묶이는 추가 인증 데이터(AAD)라서 복호화할 때 정확히 같은 값을 주지 않으면 실패합니다. 쓰는 법은 encrypt에 옵션 하나 더 붙이는 게 전부입니다.
aws kms encrypt \
--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
--plaintext fileb://plain.txt \
--encryption-context Department=IT,Environment=Production
# 복호화 때도 같은 context를 그대로 줘야 합니다
aws kms decrypt \
--ciphertext-blob fileb://cipher.bin \
--encryption-context Department=IT,Environment=Production주의할 점은 세 가지입니다. 첫째, 복호화 시 대소문자까지 완전히 같은 context를 줘야 하고 틀리면 InvalidCiphertextException으로 거부됩니다. 둘째, context는 암호화되지 않고 CloudTrail 로그에 평문으로 남으니 비밀번호 같은 민감정보를 넣으면 안 됩니다. 셋째, 이 값을 키 정책이나 IAM 정책의 조건 키(kms:EncryptionContext:context-key)로 걸어 "이 앱 이름일 때만 Decrypt 허용" 같은 접근 제어를 만들 수 있습니다. 참고로 encryption context는 대칭 암호화 키에서만 지원하고 비대칭/HMAC 키에는 쓸 수 없습니다.
🔗 https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html
🔗 https://docs.aws.amazon.com/cli/latest/reference/kms/encrypt.html
로그인 후 답글을 남길 수 있습니다.