AWS KMS 버전 3을 사용한 AWS SDK for PHP 데이터 키 암호화 및 복호화 - AWS SDK for PHP

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS KMS 버전 3을 사용한 AWS SDK for PHP 데이터 키 암호화 및 복호화

데이터 키는 많은 양의 데이터 및 기타 데이터 암호화 키를 포함하여 데이터를 암호화하는 데 사용할 수 있는 암호화 키입니다.

데이터 키의 생성, 암호화 및 복호화를 위해 AWS Key Management Service의 (AWS KMS)AWS KMS key를 사용할 수 있습니다.

다음 예제에서는 다음과 같은 작업을 하는 방법을 보여줍니다.

  • 암호화를 사용하여 데이터 키를 암호화합니다.

  • 암호화 해제를 사용하여 데이터 키를 암호화 해제합니다.

  • ReEncrypt를 사용하여 새로운 KMS 키로 데이터 키를 다시 암호화합니다.

AWS SDK for PHP에 대한 모든 예제 코드는 GitHub에서 사용할 수 있습니다.

보안 인증 정보

예제 코드를 실행하기 전에 AWS SDK for PHP 버전 3을 AWS 사용하여 로 인증에 설명된 대로 AWS 보안 인증을 구성합니다. 그 다음 AWS SDK for PHP 버전 3 설치에 설명된 AWS SDK for PHP를 가져옵니다.

AWS Key Management Service(AWS KMS) 사용에 대한 자세한 정보는 AWS KMS 개발자 안내서를 참조하세요.

Encrypt

암호화 작업은 데이터 키를 암호화하도록 설계되었지만 자주 사용되지 않습니다. GenerateDataKeyGenerateDataKeyWithoutPlaintext 작업은 암호화된 데이터 키를 반환합니다. 암호화된 데이터를 새로운 AWS 리전으로 이동하고 새 리전의 KMS 키를 사용하여 데이터 키를 암호화하려는 경우 Encypt 메서드를 사용할 수 있습니다.

가져옵니다.

require 'vendor/autoload.php'; 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

데이터 키를 해독하려면 Decrypt 작업을 사용합니다.

지정하는 ciphertextBlobGenerateDataKey, GenerateDataKeyWithoutPlaintext 또는 암호화 응답의 CiphertextBlob 필드 값이어야 합니다.

가져옵니다.

require 'vendor/autoload.php'; 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"; }

재암호화

암호화한 데이터 키를 해독한 후 다른 KMS 키에서 즉시 데이터 키를 재암호화하려면 ReEncrypt 작업을 사용합니다. 이러한 작업은 모두 AWS KMS 내부의 서버 측에서 수행되므로 AWS KMS 외부에 일반 텍스트를 노출해서는 안 됩니다.

지정하는 ciphertextBlobGenerateDataKey, GenerateDataKeyWithoutPlaintext 또는 암호화 응답의 CiphertextBlob 필드 값이어야 합니다.

가져옵니다.

require 'vendor/autoload.php'; 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"; }