AWS KMS Decrypt: как настроен ключ KMS? - PullRequest
0 голосов
/ 09 июля 2019

Меня немного смущает вопрос о том, как расшифровывать зашифрованный текстовый объект с помощью клиента AWS KMS.Вот пример из документов AWS:

// Encrypt a data key
//
// Replace the following fictitious CMK ARN with a valid CMK ID or ARN
String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd- 
56ef-1234567890ab";
ByteBuffer plaintext = ByteBuffer.wrap(new byte[]{1,2,3,4,5,6,7,8,9,0});

EncryptRequest req = new 
EncryptRequest().withKeyId(keyId).withPlaintext(plaintext);
ByteBuffer ciphertext = kmsClient.encrypt(req).getCiphertextBlob();

// Decrypt a data key
//

ByteBuffer ciphertextBlob = Place your ciphertext here;

DecryptRequest req = new DecryptRequest().withCiphertextBlob(ciphertextBlob);
ByteBuffer plainText = kmsClient.decrypt(req).getPlaintext();

В методе дешифрования не предоставлен ключ KMS.Означает ли это, что ключ KMS зашифрован в двоичном объекте cyphertext?Если это так ...

  • как предоставляются разрешения на расшифровку зашифрованного зашифрованного двоичного объекта?
  • Если я хочу расшифровать значение из службы AWS, создаю ли я для этого роль IAM и сконфигурирую ключ KMS, чтобы разрешить дешифрование этой роли?

1 Ответ

0 голосов
/ 09 июля 2019

Ваши примеры из Шифрование и дешифрование ключей данных :

Эти операции предназначены для шифрования и дешифрования ключей данных . В операциях шифрования они используют главный ключ клиента AWS KMS (CMK) и не могут принимать более 4 КБ (4096 байт) данных. Хотя вы можете использовать их для шифрования небольших объемов данных, таких как пароль или ключ RSA, они не предназначены для шифрования данных приложения.

ČMKS:

создаются в AWS KMS и никогда не оставляют AWS KMS незашифрованным. Чтобы использовать или управлять своим CMK, вы получаете к ним доступ через AWS KMS.

Все эти операции используют настроенные мастер-ключи из вашей настройки AWS, а не ключи, которые предоставляются динамически. Используйте Консоль управления AWS для управления этими ключами.

При использовании метода шифрования идентификатор ключа сохраняется в ответе:

{
   "CiphertextBlob": blob,
   "KeyId": "string"
}

Он будет использоваться при расшифровке.

...