메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

클라이언트측 암호화를 사용하여 데이터 보호

클라이언트측 암호화는 Amazon S3로 보내기 전에 데이터를 암호화하는 것을 가리킵니다. 데이터 암호화 키를 사용할 때 다음과 같은 2가지 옵션을 사용할 수 있습니다.

  • AWS KMS 관리형 고객 마스터 키 사용

  • 클라이언트측 마스터 키 사용

옵션 1: AWS KMS 관리형 고객 마스터 키(CMK) 사용

클라이언트측 데이터 암호화를 위해 AWS KMS 관리형 고객 마스터 키를 사용할 때는 Amazon S3 암호화 클라이언트(예: Java용 AWS SDK의 AmazonS3EncryptionClient)에 암호화 키를 제공하는 것에 대해 염려하지 않아도 됩니다. 대신 AWS KMS 고객 마스터 키 ID(CMK ID)만 제공하면 클라이언트에서 나머지가 처리됩니다. 작동 방법은 다음과 같습니다.

  • 객체를 업로드할 때 - CMK ID를 사용하여 클라이언트에서 먼저 객체 데이터를 암호화하는 데 사용할 수 있는 키를 위해 AWS KMS로 요청을 보냅니다. 이에 응답하여 AWS KMS에서 임의로 생성되는 데이터 암호화 키를 반환합니다. 사실, AWS KMS에서는 다음과 같은 2가지 버전의 데이터 암호화 키를 반환합니다.

    • 클라이언트에서 객체 데이터를 암호화하는 데 사용되는 일반 텍스트 버전

    • 클라이언트에서 객체 메타데이터로 Amazon S3에 업로드하는 같은 데이터 암호화 키의 암호 BLOB

    참고

    클라이언트에서는 업로드하는 각 객체에 대해 고유한 데이터 암호화 키를 가져옵니다.

    사용 가능한 예제는 예제: 클라이언트측 암호화(옵션 1: AWS KMS 관리형 고객 마스터 키 사용(Java용 AWS SDK))를 참조하십시오.

  • 객체를 다운로드할 때 - 클라이언트에서 먼저 Amazon S3의 암호화된 객체를 객체 메타데이터로 저장된 데이터 암호화 키의 암호 BLOB 버전과 함께 다운로드합니다. 그런 다음 클라이언트에서 AWS KMS로 암호 BLOB를 보내 객체 데이터의 암호 해독을 위해 같은 항목의 일반 텍스트 버전을 가져옵니다.

AWS KMS에 대한 자세한 내용은 What is the AWS Key Management Service?(AWS Key Management Service Developer Guide)를 참조하십시오.

옵션 2: 클라이언트측 마스터 키 사용

이 단원에서는 클라이언트측 데이터 암호화 프로세스에 클라이언트측 마스터 키를 제공하는 방법에 대해 설명합니다.

중요

클라이언트측 마스터 키 및 암호화되지 않은 데이터는 절대 AWS로 전송되지 않기 때문에 암호화 키를 안전하게 관리하는 것이 중요합니다. 암호화 키를 잃어버릴 경우 데이터의 암호를 해독할 수 없습니다.

작동 방법은 다음과 같습니다.

  • 객체를 업로드할 때 - Amazon S3 암호화 클라이언트(예: Java용 AWS SDK를 사용할 경우 AmazonS3EncryptionClient)에 클라이언트측 마스터 키를 제공합니다. 클라이언트에서는 임의로 생성하는 데이터 암호화 키를 암호화하기 위해서만 이 마스터 키를 사용합니다. 프로세스는 다음과 같습니다.

    1. Amazon S3 암호화 클라이언트에서 일회용 대칭 키(즉 데이터 암호화 키 또는 데이터 키)를 로컬로 생성합니다. 이 클라이언트에서는 이 데이터 키를 사용하여 단일 S3 객체의 데이터를 암호화합니다(클라이언트에서는 각 객체에 대해 별도의 데이터 키를 생성함).

    2. 클라이언트에서 사용자가 제공하는 마스터 키를 사용하여 데이터 암호화 키를 암호화합니다.

      클라이언트에서 암호화된 데이터 키 및 해당 구성 요소 설명을 객체 메타데이터의 일부로 업로드합니다. 구성 요소 설명은 클라이언트에서 나중에 암호 해독에 어떤 클라이언트측 마스터 키를 사용할지를 결정하는 데 도움이 됩니다(사용자가 객체를 다운로드할 때 클라이언트에서 해당 객체의 암호를 해독함).

    3. 그런 다음 클라이언트에서 기본적으로 암호화된 데이터를 Amazon S3로 업로드하고 암호화된 데이터 키를 객체 메타데이터(x-amz-meta-x-amz-key)로 Amazon S3에 저장합니다.

  • 객체를 다운로드할 때 - 클라이언트에서 먼저 Amazon S3의 암호화된 객체를 메타데이터와 함께 다운로드합니다. 클라이언트에서 먼저 메타데이터의 구성 요소 설명을 사용하여 암호화된 데이터 키의 암호 해독에 어떤 마스터 키를 사용할지를 결정합니다. 클라이언트에서는 해당 마스터 키를 사용하여 데이터 키의 암호를 해독하고 이 키를 사용하여 객체의 암호를 해독합니다.

사용자가 제공하는 클라이언트측 마스터 키는 대칭 키 또는 퍼블릭/프라이빗 키 페어일 수 있습니다. 예제는 예제: 클라이언트측 암호화(옵션 2: 클라이언트측 마스터 키 사용(Java용 AWS SDK))을 참조하십시오.

자세한 내용은 Client-Side Data Encryption with the AWS SDK for Java and Amazon S3 기사를 참조하십시오.

다음 AWS SDK에서 클라이언트측 암호화를 지원합니다.