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를 사용할 수 있습니다.

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

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

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

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

의 모든 예제 코드는 여기에서 확인할 수 있습니다. AWS SDK for PHP GitHub

보안 인증 정보

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

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

암호화

암호화 작업은 데이터 키를 암호화하도록 설계되었지만 자주 사용되지 않습니다. 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 작업을 사용합니다.

ciphertextBlob지정하는 값은 GenerateDataKeyGenerateDataKeyWithoutPlaintext, 또는 Encrypt 응답의 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 외부에 일반 텍스트를 노출해서는 안 됩니다.

ciphertextBlob지정하는 값은 GenerateDataKey, 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"; }