Как AWS KMS определяет, какой ключ использовать при расшифровке?

Я не понимаю, как aws-kms выбирает, какой ключ использовать для расшифровки зашифрованного блока текста?

При вызове метода дешифрования ключевая информация не предоставляется.


person xiaobing    schedule 24.08.2018    source источник


Ответы (2)


При шифровании KMS сохраняет информацию CMK в зашифрованном блоке текста (CiphertextBlob: зашифрованный текст, включая метаданные) как метаданные. Таким образом, при вызове дешифрования KMS знает, какой CMK использовать.

Подробнее см .: https://d1.awsstatic.com/whitepapers/aws-kms-best-practices.pdf https://docs.aws.amazon.com/cli/latest/reference/kms/encrypt.html

person sudo    schedule 25.08.2018
comment
в зашифрованном документе о выходе: CiphertextBlob - ›(blob) Зашифрованный открытый текст. При использовании HTTP API или AWS CLI значение закодировано в Base64. В противном случае он не кодируется. Я не вижу, что CiphertextBlob содержит некоторые метаданные. Я пробовал декодировать CiphertextBlob с помощью base64, но он не читается, в любом случае я могу заглянуть в CiphertextBlob? Благодарность! - person xiaobing; 25.08.2018
comment
Формат метаданных зашифрованного текста публично не определен. Если операция дешифрования завершается успешно, в результаты включается Arn CMK, который использовался для дешифрования зашифрованного текста. docs.aws.amazon.com/kms/latest/APIReference/ - person mattsb42-aws; 27.08.2018

Если вы посмотрите на результат CiphertextBlob двух разных --plaintext (как я показываю ниже), вы можете увидеть шаблон, который должен быть своего рода метеданными. Не уверен, задокументированы ли эти метаданные.

aws kms encrypt --key-id <my-key> --plaintext first-text --query "CiphertextBlob"  --output text  >> encryption_outputs.out
aws kms encrypt --key-id <my-key> --plaintext second-text --query "CiphertextBlob"  --output text  >> encryption_outputs.out
cat encryption_outputs.out 
AQICAHiHuhOJgMFOzLCxr9JLvFbwcvLJ1ujdFhqufo6u+0DOZAFcwvj+uW9S0ogPZqWnn2o0AAAAaDBmBgkqhkiG9w0BBwagWTBXAgEAMFIGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMKCO7GDmhCkqkISldAgEQgCXJaFxGsprON7JHfoLWFXM/VVg9tv76Ndp9ABZ5zd8VOlK2rtPK
AQICAHiHuhOJgMFOzLCxr9JLvFbwcvLJ1ujdFhqufo6u+0DOZAGMZIUoMTRnPxLZLGx/cD7fAAAAaTBnBgkqhkiG9w0BBwagWjBYAgEAMFMGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMmXxBMotXpz0dByd5AgEQgCayx6uiIjJopXsHOeGWAvC5i83CLnp1M7gAVYPQck8lEPtykghR7Q==
person Eytan Naim    schedule 22.01.2020