Criptografar e descriptografar chaves de dados do AWS KMS usando o AWS SDK para PHP versão 3 - AWS SDK para PHP

Criptografar e descriptografar chaves de dados do AWS KMS usando o AWS SDK para PHP versão 3

As chaves de dados são as chaves de criptografia que você pode usar para criptografar dados, incluindo grandes quantidades de dados e outras chaves de criptografia de dados.

É possível usar uma AWS KMS key do AWS Key Management Service (AWS KMS) para gerar, criptografar e descriptografar chaves de dados.

Os exemplos a seguir mostram como:

  • Criptografar uma chave de dados usando Encrypt.

  • Descriptografar uma chave de dados usando Decrypt.

  • Criptografe novamente uma chave de dados com uma nova chave do KMS usando ReEncrypt.

O código de exemplo completo do AWS SDK para PHP está disponível aqui no GitHub.

Credenciais

Antes de executar o código de exemplo, configure suas credenciais da AWS, conforme descrito em Autenticar com a AWS usando o AWS SDK para PHP versão 3. Em seguida, importe o AWS SDK para PHP, conforme descrito em Instalar o AWS SDK para PHP versão 3.

Para obter mais informações sobre como usar o AWS Key Management Service (AWS KMS), consulte o Guia do desenvolvedor do AWS KMS.

Encrypt

A operação Encrypt é projetada para criptografar chaves de dados, mas não é usada com frequência. As operações GenerateDataKey e GenerateDataKeyWithoutPlaintext retornam chaves de dados criptografados. Você pode usar o método Encypt quando estiver movendo dados criptografados para uma nova região da AWS e quiser criptografar a chave de dados com uma chave do KMS na nova região.

Importações

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

Código de exemplo

$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

Para descriptografar uma chave de dados, use a operação Decrypt.

O ciphertextBlob que você especifica deve ser o valor do campo CiphertextBlob de uma resposta GenerateDataKey, GenerateDataKeyWithoutPlaintext ou Encrypt.

Importações

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

Código de exemplo

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

Recriptografar

Para descriptografar uma chave de dados criptografada e, logo em seguida, recriptografá-la sob uma chave KMS diferente, use a operação ReEncrypt. As operações são realizadas inteiramente no lado servidor dentro do AWS KMS, para nunca exporem o texto não criptografado fora do AWS KMS.

O ciphertextBlob que você especifica deve ser o valor do campo CiphertextBlob de uma resposta GenerateDataKey, GenerateDataKeyWithoutPlaintext ou Encrypt.

Importações

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

Código de exemplo

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