暗号化と復号AWS KMSを使用したデータキーAWSSDK for PHP バージョン 3 - AWSSDK for PHP

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

暗号化と復号AWS KMSを使用したデータキーAWSSDK for PHP バージョン 3

データキーは、大量のデータや他のデータ暗号化キーといったデータを暗号化するための暗号化キーです。

AWS Key Management Service (AWS KMS) カスタマーマスターキー (CMK) を使用して、データキーの生成、暗号化、復号化を実行できます。ただし、AWS KMS はデータキーの保存、管理、追跡、またはデータキーの暗号化オペレーションを実行しません。AWS KMS の外部でデータキーを使用して管理します。

以下の例では、次の方法を示しています。

  • Encrypt を使用してデータキーを暗号化する。

  • Decrypt を使用してデータキーを復号化する。

  • ReEncrypt を使用して新しい CMK でデータキーを再暗号化する。

用のすべてのサンプルコードはAWSSDK for PHP バージョン 3 のSDKGitHub で

Credentials

サンプルコードを実行する前に、AWSの認証情報については、「」を参照してください。の認証情報AWSSDK for PHP バージョン 3。次にをインポートします。AWSSDK for PHP (」の基本的な使用パターンAWSSDK for PHP バージョン 3

の使用方法の詳細については、「」を参照してください。AWS Key Management Service(AWS KMS) については、『AWS KMSデベロッパーガイド

Encrypt

Encrypt オペレーションは、データキーを暗号化するように設計されていますが、頻繁には使用されていません。 データ作成 および テキスト作成の生成 操作は、暗号化されたデータキーを返します。あなたが使うかもしれませんEncyptメソッドを使用して、暗号化されたデータを新しいAWSリージョンで CMK を使用してデータキーを暗号化します。

インポート

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

サンプルコード

$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

データキーを復号化するには、 復号化 操作を使用します。

指定する ciphertextBlob は、CiphertextBlobGenerateDataKeyGenerateDataKeyWithoutPlaintext あるいは暗号化レスポンスからの フィールド値である必要があります。

インポート

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

サンプルコード

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

Reencrypt

暗号化されたデータキーを復号し、続いてすぐに異なるカスタマーマスターキー (CMK) でデータキーを再暗号化するには、ReEncrypt オペレーションを使用します。このオペレーションは AWS KMS 内のサーバー側で完全に実行されるため、プレーンテキストが AWS KMS の外部に公開されることはありません。

指定する ciphertextBlob は、CiphertextBlobGenerateDataKeyGenerateDataKeyWithoutPlaintext あるいは暗号化レスポンスからの フィールド値である必要があります。

インポート

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

サンプルコード

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