Crittografia e decrittografiaAWS KMSChiavi dati utilizzando ilAWS SDK for PHPVersione 3 - AWS SDK for PHP

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crittografia e decrittografiaAWS KMSChiavi dati utilizzando ilAWS SDK for PHPVersione 3

Le chiavi di dati sono chiavi di crittografia che possono essere usate per crittografare i dati, incluso grandi quantità di dati e altre chiavi di crittografia.

È possibile utilizzare unaAWS Key Management Service(AWS KMS)customer master key (CMK)per generare, crittografare e decrittare le chiavi di dati. Tuttavia, AWS KMS non consente di memorizzare, gestire o monitorare le tue chiavi di dati o eseguire operazioni di crittografia con le chiavi di dati. Utilizzare e gestire le chiavi dei dati all'esterno di AWS KMS.

Gli esempi seguenti mostrano come:

  • Crittografare una chiave di dati utilizzando Encrypt.

  • Decrittografare una chiave di dati utilizzando Decrypt.

  • Rieseguire la crittografia dei dati con una nuova CMK utilizzando ReEncrypt.

La versione integrale del codice di esempio di AWS SDK for PHP è disponibile qui su GitHub.

Credenziali

Prima di eseguire il codice di esempio, configura ilAWScredenziali come descritto inImpostazione delle credenziali . Quindi importa il fileAWS SDK for PHP, come descritto inUtilizzo di base.

Per ulteriori informazioni sull'utilizzo diAWS Key Management Service(AWS KMS), consulta laAWS KMSGuida per gli sviluppatori.

Crittografa

L'operazione Encrypt è progettata per crittografare le chiavi dei dati, ma non viene utilizzata di frequente. Le operazioni GenerateDataKey e GenerateDataKeyWithoutPlaintext restituiscono chiavi di dati crittografate. È possibile utilizzare ilEncyptmetodo quando si spostano dati crittografati su un nuovoAWSRegion e desidera crittografare la chiave di dati con una CMK nella nuova regione.

Importazioni

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

Codice di esempio

$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

Per decrittografare una chiave di dati, utilizza l'operazione Decrypt.

Il valore ciphertextBlob specificato deve essere il valore del campo CiphertextBlob da una risposta GenerateDataKey, GenerateDataKeyWithoutPlaintext o Encrypt.

Importazioni

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

Codice di esempio

$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"; }

Ricrittografa

Per decrittografare una chiave di dati crittografata e quindi immediatamente ricrittografare la chiave di dati con un'altra chiave master del cliente (CMK), utilizza l'operazione ReEncrypt. Le operazioni vengono eseguite interamente su lato server all'interno di AWS KMS, in modo che il testo normale non dovrà mai essere esposto all'esterno di AWS KMS.

Il valore ciphertextBlob specificato deve essere il valore del campo CiphertextBlob da una risposta GenerateDataKey, GenerateDataKeyWithoutPlaintext o Encrypt.

Importazioni

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

Codice di esempio

$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"; }