

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

# 클라이언트측 암호화
<a name="client-side-encryption"></a>

[AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html)에는 KMS 키를 사용하여 봉투 암호화를 수행하기 위한 API 작업이 포함되어 있습니다. 전체 권장 사항 및 사용 세부 정보는 [관련 설명서](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/)를 참조하세요. 클라이언트 애플리케이션은를 사용하여 봉투 암호화 AWS Encryption SDK 를 수행할 수 있습니다 AWS KMS.

```
// Instantiate the SDK
final AwsCrypto crypto = new AwsCrypto();
// Set up the KmsMasterKeyProvider backed by the default credentials
final KmsMasterKeyProvider prov = new KmsMasterKeyProvider(keyId); 
// Do the encryption
final byte[] ciphertext = crypto.encryptData(prov, message);
```

클라이언트 애플리케이션은 다음 단계를 실행할 수 있습니다.

1. KMS 키를 사용하여 새 데이터 키에 대한 요청을 보냅니다. 암호화된 데이터 키와 일반 텍스트 버전의 데이터 키가 반환됩니다.

1. 내에서 AWS Encryption SDK일반 텍스트 데이터 키는 메시지를 암호화하는 데 사용됩니다. 그런 다음 일반 텍스트 데이터 키가 메모리에서 삭제됩니다.

1. 암호화된 데이터 키와 암호화된 메시지가 단일 암호화 텍스트 바이트 배열로 결합됩니다.

![\[AWS Encryption SDK 봉투 암호화.\]](http://docs.aws.amazon.com/ko_kr/kms/latest/cryptographic-details/images/sdk-envelope-encryption.png)


복호화 기능을 사용하여 봉투로 암호화된 메시지를 복호화하면 원래의 암호화된 메시지를 얻을 수 있습니다.

```
final AwsCrypto crypto = new AwsCrypto();
final KmsMasterKeyProvider prov = new KmsMasterKeyProvider(keyId);
// Decrypt the data
final CryptoResult<byte[], KmsMasterKey> res = crypto.decryptData(prov, ciphertext);
// We need to check the KMS key to ensure that the 
// assumed key was used
if (!res.getMasterKeyIds().get(0).equals(keyId)) {
     throw new IllegalStateException("Wrong key id!");
}
byte[] plaintext = res.getResult();
```

1. 는 봉투로 암호화된 메시지를 AWS Encryption SDK 구문 분석하여 암호화된 데이터 키를 얻고에 데이터 키를 복호화 AWS KMS 하도록 요청합니다.

1. 는 일반 텍스트 데이터 키를 AWS Encryption SDK 수신합니다 AWS KMS.

1. 그런 다음 데이터 키를 사용하여 메시지를 복호화하고 최초의 일반 텍스트를 반환합니다.

![\[AWS Encryption SDK 봉투 암호 해독.\]](http://docs.aws.amazon.com/ko_kr/kms/latest/cryptographic-details/images/sdk-envelope-decryption.png)
