Chiffrement et déchiffrement des clés de AWS KMS données à l'aide de la version 3 AWS SDK for PHP - AWS SDK for PHP

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Chiffrement et déchiffrement des clés de AWS KMS données à l'aide de la version 3 AWS SDK for PHP

Les clés de données sont des clés de chiffrement que vous pouvez utiliser pour chiffrer des données, y compris de grandes quantités de données et d'autres clés de chiffrement des données.

Vous pouvez utiliser AWS Key Management Service an's (AWS KMS) AWS KMS keypour générer, chiffrer et déchiffrer des clés de données.

Les exemples suivants montrent comment :

  • Chiffrer une clé de données à l’aide d’Encrypt.

  • Déchiffrer une clé de données à l’aide de Decrypt.

  • Rechiffrez une clé de données avec une nouvelle clé KMS à l'aide de. ReEncrypt

Tous les exemples de code pour le AWS SDK for PHP sont disponibles ici GitHub.

Informations d’identification

Avant d'exécuter l'exemple de code, configurez vos AWS informations d'identification, comme décrit dansInformations d'identification. Importez ensuite leAWS SDK for PHP, comme décrit dansUtilisation de base.

Pour plus d'informations sur l'utilisation de AWS Key Management Service (AWS KMS), consultez le manuel du AWS KMS développeur.

Encrypt

L'opération Encrypt est conçue pour chiffrer des clés de données, mais elle n'est pas fréquemment utilisée. Les GenerateDataKeyWithoutPlaintextopérations GenerateDataKeyet renvoient des clés de données chiffrées. Vous pouvez utiliser Encypt cette méthode lorsque vous déplacez des données chiffrées vers une nouvelle AWS région et que vous souhaitez chiffrer leur clé de données à l'aide d'une clé KMS dans la nouvelle région.

Importations

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

Exemple de code

$KmsClient = new Aws\Kms\KmsClient([ 'profile' => 'default', 'version' => '2014-11-01', 'region' => 'us-east-2' ]); $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $message = pack('c*', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0); try { $result = $KmsClient->encrypt([ 'KeyId' => $keyId, 'Plaintext' => $message, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }

Decrypt

Pour déchiffrer une clé de données, utilisez l'opération Decrypt.

La valeur ciphertextBlob que vous spécifiez doit être la valeur du CiphertextBlob champ provenant d'une réponse GenerateDataKeyGenerateDataKeyWithoutPlaintext, ou Encrypt.

Importations

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

Exemple de code

$KmsClient = new Aws\Kms\KmsClient([ 'profile' => 'default', 'version' => '2014-11-01', 'region' => 'us-east-2' ]); $ciphertext = 'Place your cipher text blob here'; try { $result = $KmsClient->decrypt([ 'CiphertextBlob' => $ciphertext, ]); $plaintext = $result['Plaintext']; var_dump($plaintext); } catch (AwsException $e) { // Output error message if fails echo $e->getMessage(); echo "\n"; }

Rechiffrer

Pour déchiffrer une clé de données chiffrée, puis la rechiffrer immédiatement sous une autre clé KMS, utilisez l'opération. ReEncrypt Les opérations sont effectuées entièrement côté serveur dans AWS KMS, pour que votre texte brut ne soit jamais exposé en dehors d'AWS KMS.

La valeur ciphertextBlob que vous spécifiez doit être la valeur du CiphertextBlob champ provenant d'une réponse GenerateDataKeyGenerateDataKeyWithoutPlaintext, ou Encrypt.

Importations

require 'vendor/autoload.php'; use Aws\Exception\AwsException;

Exemple de code

$KmsClient = new Aws\Kms\KmsClient([ 'profile' => 'default', 'version' => '2014-11-01', 'region' => 'us-east-2' ]); $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $ciphertextBlob = 'Place your cipher text blob here'; try { $result = $KmsClient->reEncrypt([ 'CiphertextBlob' => $ciphertextBlob, 'DestinationKeyId' => $keyId, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo "\n"; }