AWS KMS Как использовать функцию дешифрования Java

Мой вопрос может показаться слишком очевидным, но я новичок в Amazon KMS. Прочитав множество документов на AWS, я понял, что если я использую CMK напрямую для шифрования и дешифрования, я могу сделать это напрямую, создав запрос на шифрование и дешифрование. Но что мне непонятно, так это когда я генерирую ключ данных и отлаживаю его, в документации говорится, что мне нужно передать зашифрованный ключ данных для дешифрования API, и я получу простой текстовый ключ, который я могу использовать для отладки текста на моем «СОБСТВЕННОМ» . Я не понимаю этой части. Может ли кто-нибудь объяснить это и привести небольшой пример расшифровки с использованием ключей данных. заранее спасибо

Мой пример кода:

public String decrypt(String encryptedTextString) {
    ByteBuffer encryptedText = ByteBuffer.wrap(Base64.getDecoder().decode(encryptedTextString));
    DecryptRequest req=new DecryptRequest().withCiphertextBlob(encryptedText);
    ByteBuffer plainText = client.decrypt(req).getPlaintext();
    return new String(plainText.array());
}

public String encrypt(String plainTextString) {
    ByteBuffer plainText = ByteBuffer.wrap(Base64.getDecoder().decode(plainTextString));
    EncryptRequest req = new EncryptRequest().withKeyId(new String(plainTextKey.array()))
            .withPlaintext(plainText);
    ByteBuffer encryptedText =client.encrypt(req).getCiphertextBlob();
    return new String(encryptedText.array());
}

AWSKMSCryprography() {
    this.setCredential(new ClearCredential());
    this.genrateKey();
}

private void genrateKey() {
    GenerateDataKeyRequest request = new GenerateDataKeyRequest();
    request.setKeyId(keyID);
    request.setKeySpec("AES_128");
    GenerateDataKeyResult dataKeyResult = client.generateDataKey(request);
    plainTextKey = dataKeyResult.getPlaintext();
    encryptedKey = dataKeyResult.getCiphertextBlob();

}

person Abhishek Garg    schedule 23.02.2015    source источник
comment
Я думаю, они просто означают, что вы можете зашифровать / расшифровать ключ, который вы создали сами для целей тестирования.   -  person Maarten Bodewes    schedule 23.02.2015
comment
@MaartenBodewes Спасибо, значит ли это, что приведенного выше фрагмента кода достаточно для шифрования и дешифрования, потому что прямо сейчас мне не нужны накладные расходы на хранение зашифрованного ключа вместе с зашифрованным текстом ???   -  person Abhishek Garg    schedule 24.02.2015


Ответы (1)


Я тоже новичок в использовании KMS, но учебная документация по использованию шифрования и дешифрования вводит в заблуждение при использовании методов шифрования и дешифрования. Документация по API для AWSKMSClient.generateDataKey и AWSKKMSClient.encrypt укажите, что encrypt() предназначен для конкретных случаев использования, и для использования локальный ключ.

Более полезный пример KMS можно найти в библиотека шифрования Dynamodb. См. Также http://netnix.org/2015/04/19/aes-encryption-with-hmac-integrity-in-java/ для обзора базового шифрования в целом.

person Community    schedule 02.10.2015