AWS 데이터베이스 암호화 SDK 개념 - AWS 데이터베이스 암호화 SDK

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

AWS 데이터베이스 암호화 SDK 개념

클라이언트 측 암호화 라이브러리의 이름이 AWS 데이터베이스 암호화 로 변경되었습니다SDK. 이 개발자 안내서는 여전히 DynamoDB Encryption Client에 대한 정보를 제공합니다.

이 주제에서는 AWS 데이터베이스 암호화 에 사용되는 개념과 용어를 설명합니다SDK.

AWS 데이터베이스 암호화의 구성 요소가 상호 SDK 작용하는 방법을 알아보려면 섹션을 참조하세요AWS 데이터베이스 암호화 SDK 작동 방식.

AWS 데이터베이스 암호화 에 대한 자세한 내용은 다음 주제를 SDK참조하세요.

  • AWS 데이터베이스 암호화가 엔벨로프 암호화를 SDK 사용하여 데이터를 보호하는 방법을 알아봅니다.

  • 엔빌로프 암호화의 구성 요소인 레코드를 보호하는 데이터 키와 데이터 키를 보호하는 래핑 키에 대해 알아봅니다.

  • 사용하는 래핑 키를 결정하는 키링에 대해 알아봅니다.

  • 암호화 프로세스에 무결성을 더하는 암호화 컨텍스트에 대해 알아봅니다.

  • 암호화 메서드가 레코드에 추가하는 자료 설명에 대해 알아봅니다.

  • AWS 데이터베이스 암호화에 암호화 및 서명할 SDK 필드를 알려주는 암호화 작업에 대해 알아봅니다.

봉투 암호화

암호화된 데이터의 보안은 부분적으로 복호화할 수 있는 데이터 키를 보호하는 데 달려 있습니다. 데이터 키를 보호하기 위해 널리 인정되는 모범 사례 중 하나는 데이터 키를 암호화하는 것입니다. 이렇게 하려면 키-암호화 키 또는 래핑 키라고 하는 또 다른 암호화 키가 필요합니다. 래핑 키를 사용하여 데이터 키를 암호화하는 방법을 봉투 암호화라고 합니다.

데이터 키 보호

AWS 데이터베이스 암호화는 고유한 데이터 키로 각 필드를 SDK 암호화합니다. 그러면 지정한 래핑 키에서 각 데이터 키가 암호화됩니다. 암호화된 데이터 키를 자료 설명에 저장합니다.

래핑 키를 지정하려면 키링을 사용합니다.

AWS Database Encryption을 사용한 Envelope 암호화 SDK
여러 개의 래핑 키로 동일한 데이터 암호화

여러 개의 래핑 키로 데이터 키를 암호화할 수 있습니다. 사용자마다 다른 래핑 키를 제공하거나, 유형이나 위치가 다른 래핑 키를 제공할 수 있습니다. 각 래핑 키는 동일한 데이터 키를 암호화합니다. AWS 데이터베이스 암호화는 암호화된 모든 데이터 키를 자료 설명의 암호화된 필드와 함께 SDK 저장합니다.

데이터를 복호화하려면 암호화된 데이터 키를 복호화할 수 있는 래핑 키를 적어도 한 개 제공해야 합니다.

여러 알고리즘의 강점 결합

기본적으로 AWS Database Encryption은 AES대칭 암호화, HMAC기반 키 파생 함수(HKDF) 및 ECDSA 서명이 포함된GCM 알고리즘 제품군을 SDK 사용합니다. 데이터 키를 암호화하려면 래핑 키에 적합한 대칭 또는 비대칭 암호화 알고리즘을 지정할 수 있습니다.

일반적으로 대칭 키 암호화 알고리즘이 비대칭 또는 퍼블릭 키 암호화보다 빠르고 더 작은 사이퍼텍스트를 생성합니다. 그러나 퍼블릭 키 알고리즘은 고유한 역할 구분을 제공합니다. 각각의 장점을 결합하려면 퍼블릭 키 암호화를 사용하여 데이터 키를 암호화할 수 있습니다.

가능하면 AWS KMS 키링 중 하나를 사용하는 것이 좋습니다. AWS KMS 키링 를 사용할 때 비대칭을 래핑 키RSA AWS KMS key 로 지정하여 여러 알고리즘의 강도를 결합하도록 선택할 수 있습니다. 대칭 암호화 KMS 키를 사용할 수도 있습니다.

데이터 키

데이터 키는 AWS 데이터베이스 암호화가 암호화 작업 에 표시된 레코드의 필드를 암호화하는 데 SDK 사용하는 ENCRYPT_AND_SIGN 암호화 키입니다. 각 데이터 키는 암호화 키 요구 사항을 준수하는 바이트 배열입니다. AWS 데이터베이스 암호화는 고유한 데이터 키를 SDK 사용하여 각 속성을 암호화합니다.

데이터 키를 지정, 생성, 구현, 확장, 보호 또는 사용할 필요가 없습니다. AWS 데이터베이스 암호화는 암호화 및 복호화 작업을 호출할 때 SDK 작동합니다.

데이터 키를 보호하기 위해 AWS 데이터베이스 암호화는 래핑 키 라고 하는 하나 이상의 키 암호화 키로 암호화SDK합니다. 래핑 키 AWS 데이터베이스 암호화는 일반 텍스트 데이터 키를 SDK 사용하여 데이터를 암호화한 후 가능한 한 빨리 메모리에서 제거합니다. 그런 다음 암호화된 데이터 키를 자료 설명에 저장합니다. 세부 정보는 AWS 데이터베이스 암호화 SDK 작동 방식을 참조하세요.

작은 정보

AWS 데이터베이스 암호화 에서는 데이터 키데이터 암호화 키 를 구분SDK합니다. 지원되는 모든 알고리즘 제품군키 파생 함수를 사용하는 것이 가장 좋습니다. 키 파생 함수는 데이터 키를 입력으로 사용하고 레코드를 암호화하는 데 실제로 사용되는 데이터 암호화 키를 반환합니다. 이러한 이유로 데이터가 데이터 키에 "의해" 암호화되는 것이 아니라 데이터 키"에서" 암호화된다고 말하는 경우가 많습니다.

암호화된 각 데이터 키에는 해당 데이터 키를 암호화한 래핑 키의 식별자를 비롯한 메타데이터가 포함됩니다. 이 메타데이터를 사용하면 AWS 데이터베이스 암호화가 복호화SDK할 때 유효한 래핑 키를 식별할 수 있습니다.

래핑 키

래핑 키는 AWS 데이터베이스 암호화가 레코드를 암호화하는 데이터 키를 암호화하는 데 SDK 사용하는 키 암호화 키입니다. 데이터 키 각각의 데이터 키는 한 개 또는 여러 개의 래핑 키로 암호화될 수 있습니다. 키링을 구성할 때 데이터를 보호하기 위해 사용할 래핑 키를 결정합니다.

여러 개의 래핑 키로 데이터 키 하나를 암호화

AWS 데이터베이스 암호화는 AWS Key Management Service (AWS KMS) 대칭 암호화 키(다중 리전 KMS 키 포함), 비대칭 키, 원시 AES-(GCM고급 암호화 표준/갈로이 카운터 모드) RSA KMS 키, 원시 RSA 키와 같이 일반적으로 사용되는 여러 래핑 키를 SDK 지원합니다. AWS KMS 가능하면 KMS 키를 사용하는 것이 좋습니다. 사용해야 하는 래핑 키를 결정하려면 래핑 키 선택을 참조하세요.

엔빌로프 암호화를 사용할 때는 래핑 키를 무단 액세스로부터 보호해야 합니다. 다음 중 한 가지 방법으로 이를 수행할 수 있습니다.

키 관리 시스템이 없는 경우 를 사용하는 것이 좋습니다 AWS KMS. AWS Database Encryption은 와 SDK 통합되어 래핑 키를 보호하고 사용하는 AWS KMS 데 도움이 됩니다.

키링

암호화와 복호화에 사용하는 래핑 키를 지정하려면 키링을 사용합니다. AWS 데이터베이스 암호화가 SDK 제공하는 키링을 사용하거나 자체 구현을 설계할 수 있습니다.

키링은 데이터 키를 생성, 암호화, 복호화합니다. 또한 서명에서 해시 기반 메시지 인증 코드(HMACs)를 계산하는 데 사용되는 MAC 키도 생성합니다. 키링을 정의할 때 데이터 키를 암호화하는 래핑 키를 지정할 수 있습니다. 대부분의 키링은 하나 이상의 래핑 키를 지정하거나, 래핑 키를 제공하고 보호하는 서비스를 지정합니다. 암호화할 때 AWS 데이터베이스 암호화는 키링에 지정된 모든 래핑 키를 SDK 사용하여 데이터 키를 암호화합니다. AWS 데이터베이스 암호화에서 SDK 정의하는 키링을 선택하고 사용하는 방법에 대한 도움말은 키링 사용을 참조하세요.

암호화 작업

암호화 작업은 레코드의 각 필드에 수행할 작업을 암호화기에 지시합니다.

암호화 작업 값은 다음 중 하나일 수 있습니다.

  • 암호화 및 서명 - 필드를 암호화합니다. 암호화된 필드를 서명에 포함합니다.

  • 서명 전용 - 서명에 필드를 포함합니다.

  • 서명 및 암호화 컨텍스트에 포함 - 서명 및 암호화 컨텍스트 에 필드를 포함합니다.

    기본적으로 파티션 및 정렬 키는 암호화 컨텍스트에 포함된 유일한 속성입니다. AWS KMS 계층적 키링의 브랜치 키 ID 공급자가 암호화 컨텍스트에서 복호화하는 데 필요한 브랜치 키를 식별할 수 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 있도록 추가 필드를 로 정의하는 것이 좋습니다. 자세한 내용은 브랜치 키 ID 공급자를 참조하세요.

    참고

    SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 암호화 작업을 사용하려면 AWS 데이터베이스 암호화 버전 3.3 이상을 사용해야 합니다SDK. 를 포함하도록 데이터 모델을 업데이트하기 전에 모든 리더에 새 버전을 배포합니다SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT.

  • 아무것도 하지 않음 - 필드를 암호화하거나 서명에 포함하지 않습니다.

중요한 데이터를 저장할 수 있는 필드의 경우 암호화 및 서명을 사용합니다. 기본 키 값(예: DynamoDB 테이블의 파티션 키 및 정렬 키)의 경우 서명 전용 또는 서명을 사용하고 암호화 컨텍스트에 포함 을 사용합니다. 서명을 지정하고 암호화 컨텍스트 속성에 를 포함하는 경우 파티션 및 정렬 속성도 서명이어야 하며 암호화 컨텍스트 에 를 포함해야 합니다. 자료 설명에는 암호화 작업을 지정할 필요가 없습니다. AWS 데이터베이스 암호화는 자재 설명이 저장되는 필드에 SDK 자동으로 서명합니다.

암호화 작업을 신중하게 선택합니다. 확실하지 않은 경우 Encrypt and sign(암호화 및 서명)을 사용합니다. AWS 데이터베이스 암호화를 사용하여 레코드SDK를 보호한 후에는 기존 ENCRYPT_AND_SIGN, SIGN_ONLY또는 SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT 필드를 로 변경하거나 기존 DO_NOTHING 필드에 할당된 암호화 작업을 DO_NOTHING변경할 수 없습니다. 하지만 여전히 데이터 모델에 다른 변경 사항을 적용할 수 있습니다. 예를 들어 단일 배포에서 암호화된 필드를 추가하거나 제거할 수 있습니다.

자료 설명

자료 설명은 암호화된 레코드의 헤더 역할을 합니다. AWS Database Encryption 을 사용하여 필드를 암호화하고 서명하면 SDK암호화기는 암호화 자료를 모으는 대로 자료 설명을 기록하고 암호화기가 레코드에 추가하는 새 필드(aws_dbe_head)에 자료 설명을 저장합니다.

자료 설명은 데이터 키의 암호화된 사본과 기타 정보(예: 암호화 알고리즘, 암호화 컨텍스트, 암호화 및 서명 지침)를 포함하는 휴대용 형식의 데이터 구조입니다. 암호화 도구 레코드는 암호화 및 서명을 위해 암호화 자료를 결합할 때 자료 설명을 기록합니다. 나중에 필드를 확인하고 복호화하기 위해 암호화 자료를 조합해야 하는 경우 자료 설명을 지침으로 사용합니다.

암호화된 데이터 키를 암호화된 필드와 함께 저장하면 복호화 작업이 간소화되고 암호화된 데이터와 별도로 암호화된 데이터 키를 저장하고 관리할 필요가 없습니다.

자료 설명에 대한 기술 정보는 자료 설명 형식을 참조하세요.

암호화 컨텍스트

암호화 작업의 보안을 개선하기 위해 AWS 데이터베이스 암호화에는 레코드를 암호화하고 서명하기 위한 모든 요청에 암호화 컨텍스트가 SDK 포함됩니다.

암호화 컨텍스트는 비밀이 아닌 임의의 추가 인증 데이터를 포함하는 키-값 페어 세트입니다. AWS 데이터베이스 암호화에는 데이터베이스의 논리적 이름과 암호화 컨텍스트의 기본 키 값(예: DynamoDB 테이블의 파티션 키 및 정렬 키)이 SDK 포함됩니다. 필드를 암호화하고 서명하면 암호화 컨텍스트가 암호화된 레코드에 암호화 방식으로 바인딩되므로 필드를 복호화하는 데 동일한 암호화 컨텍스트가 필요합니다.

AWS KMS 키링을 사용하는 경우 AWS 데이터베이스 암호화는 암호화 컨텍스트SDK를 사용하여 키링이 에 수행하는 호출에 추가 인증된 데이터(AAD)를 제공합니다 AWS KMS.

기본 알고리즘 제품군 을 사용할 때마다 암호화 자료 관리자(CMM)는 예약된 이름, aws-crypto-public-key및 퍼블릭 확인 키를 나타내는 값으로 구성된 암호화 컨텍스트에 이름-값 페어를 추가합니다. 퍼블릭 확인 키는 자료 설명에 저장됩니다.

암호화 구성 요소 관리자

암호화 자료 관리자(CMM)는 데이터를 암호화, 복호화 및 서명하는 데 사용되는 암호화 자료를 조립합니다. 기본 알고리즘 제품군을 사용할 때마다 암호화 자료에는 일반 텍스트 및 암호화된 데이터 키, 대칭 서명 키, 비대칭 서명 키가 포함됩니다. 와 CMM 직접 상호 작용하지 않습니다. 암호화 및 복호화 메서드가 이를 대신 처리합니다.

는 AWS 데이터베이스 암호화SDK와 키링 간의 연결 CMM 역할을 하기 때문에 정책 적용 지원과 같은 사용자 지정 및 확장에 이상적입니다. 를 명시적으로 지정할 수 CMM있지만 필수는 아닙니다. 키링을 지정하면 AWS 데이터베이스 암호화가 기본값을 SDK 생성합니다CMM. 기본값은 지정한 키링에서 암호화 또는 복호화 자료를 CMM 가져옵니다. 여기에는 AWS Key Management Service(AWS KMS)와 같은 암호화 서비스에 대한 호출이 포함될 수 있습니다.

대칭 및 비대칭 암호화

대칭 암호화는 동일한 키를 사용하여 데이터를 암호화하고 복호화합니다.

비대칭 암호화는 수학적으로 관련된 데이터 키 페어를 사용합니다. 페어의 키 중 하나가 데이터를 암호화하고, 페어의 다른 키만 데이터를 복호화할 수 있습니다.

AWS 데이터베이스 암호화는 엔벨로프 암호화를 SDK 사용합니다. 대칭 데이터 키로 데이터를 암호화합니다. 하나 이상의 대칭 또는 비대칭 래핑 키를 사용하여 대칭 데이터 키를 암호화합니다. 데이터 키의 암호화된 사본을 하나 이상 포함하는 자료 설명을 레코드에 추가합니다.

데이터 암호화(대칭 암호화)

AWS Database Encryption은 대칭 데이터 키와 대칭 암호화 알고리즘이 포함된 알고리즘 제품군을 SDK 사용하여 데이터를 암호화합니다. 데이터베이스 AWS 암호화는 데이터를 복호화하기 위해 동일한 데이터 키와 동일한 알고리즘 제품군을 SDK 사용합니다.

데이터 키 암호화(대칭 또는 비대칭 암호화)

암호화 및 복호화 작업에 제공하는 키링에 따라 대칭 데이터 키가 암호화 및 복호화되는 방식이 결정됩니다. 대칭 암호화 키가 있는 키링과 같은 대칭 암호화를 사용하는 AWS KMS 키링 또는 비대칭 KMS 암호화 키가 있는 키링과 같은 비대칭 암호화를 AWS KMS 사용하는 RSA KMS 키링을 선택할 수 있습니다.

키 커밋

AWS 데이터베이스 암호화는 각 암호 텍스트를 단일 일반 텍스트로만 복호화할 수 있도록 하는 보안 속성인 키 커밋(강력성이라고도 함)을 SDK 지원합니다. 이를 위해 키 커밋은 레코드를 암호화한 데이터 키만 복호화에 사용되도록 보장합니다. AWS 데이터베이스 암호화에는 모든 암호화 및 복호화 작업에 대한 키 커밋이 SDK 포함됩니다.

대부분의 최신 대칭 암호( 포함AES)는 AWS 데이터베이스 암호화가 레코드ENCRYPT_AND_SIGN에 표시된 각 일반 텍스트 필드를 암호화하는 데 SDK 사용하는 고유한 데이터 키와 같이 단일 보안 암호 키로 일반 텍스트를 암호화합니다. 동일한 데이터 키로 이 레코드를 복호화하면 원본과 동일한 일반 텍스트가 반환됩니다. 다른 키를 사용한 복호화는 일반적으로 실패합니다. 어렵기는 하지만 두 개의 서로 다른 키로 사이퍼텍스트를 복호화하는 것은 기술적으로 가능합니다. 드문 경우지만, 사이퍼텍스트를 부분적으로 복호화할 수 있는 다르지만 여전히 식별할 수 있는 일반 텍스트로 복호화할 수 있는 키를 찾는 것이 가능합니다.

AWS 데이터베이스 암호화는 SDK 항상 하나의 고유한 데이터 키로 각 속성을 암호화합니다. 여러 래핑 키로 해당 데이터 키를 암호화할 수 있지만 래핑 키는 항상 동일한 데이터 키를 암호화합니다. 하지만 정교하고 수동으로 조작된 암호화된 레코드에는 실제로 각각 다른 래핑 키로 암호화된 서로 다른 데이터 키가 포함될 수 있습니다. 예를 들어 한 사용자가 암호화된 레코드를 복호화하여 0x0(false)이 반환됐지만 동일한 암호화된 레코드를 다른 사용자가 복호화하면 0x1(true)이 반환될 수 있습니다.

이 시나리오를 방지하기 위해 AWS 데이터베이스 암호화에는 암호화 및 복호화 시 키 커밋이 SDK 포함됩니다. 암호화 메서드는 암호 텍스트를 생성한 고유 데이터 키를 데이터 키 파생을 사용하여 재료 설명에 대해 계산된 해시 기반 메시지 인증 코드(HMAC)인 키 밋에 암호화 방식으로 바인딩합니다. 그런 다음 자료 설명에 키 커밋을 저장합니다. 키 커밋으로 레코드를 복호화하면 AWS 데이터베이스 암호화는 데이터 키가 암호화된 레코드의 유일한 키인지 SDK 확인합니다. 데이터 키 확인에 실패하면 복호화 작업이 실패합니다.

디지털 서명

AWS 데이터베이스 암호화는 인증된 암호화 알고리즘 AES-를 사용하여 데이터를 암호화하고GCM, SDK 복호화 프로세스는 디지털 서명을 사용하지 않고 암호화된 메시지의 무결성과 신뢰성을 확인합니다. 하지만 AES-GCM 는 대칭 키를 사용하기 때문에 암호 텍스트를 해독하는 데 사용되는 데이터 키를 해독할 수 있는 모든 사용자도 암호화된 새 암호 텍스트를 수동으로 생성하여 잠재적인 보안 문제를 일으킬 수 있습니다. 예를 들어 를 래핑 키 AWS KMS key 로 사용하는 경우 kms:Decrypt 권한이 있는 사용자는 를 호출하지 않고 암호화된 암호 텍스트를 생성할 수 있습니다kms:Encrypt.

이 문제를 방지하기 위해 기본 알고리즘 제품군은 암호화된 레코드에 타원형 곡선 디지털 서명 알고리즘(ECDSA) 서명을 추가합니다. 기본 알고리즘 제품군은 인증된 암호화 알고리즘 AES-를 ENCRYPT_AND_SIGN 사용하여 표시된 레코드의 필드를 암호화합니다GCM. 그런 다음 레코드의 필드에 , 및 ENCRYPT_AND_SIGN로 표시된 해시 기반 메시지 인증 코드(HMACs)SIGN_ONLY와 비대칭 ECDSA 서명을 모두 계산합니다SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. 복호화 프로세스는 서명을 사용하여 인증된 사용자가 레코드를 암호화했는지 확인합니다.

기본 알고리즘 제품군을 사용하면 AWS 데이터베이스 암호화는 암호화된 각 레코드에 대해 임시 프라이빗 키 및 퍼블릭 키 페어를 SDK 생성합니다. AWS 데이터베이스 암호화는 퍼블릭 키를 자료 설명에 SDK 저장하고 프라이빗 키를 폐기합니다. 이렇게 하면 아무도 퍼블릭 키로 검증하는 다른 서명을 생성할 수 없습니다. 알고리즘은 암호화된 데이터 키에 퍼블릭 키를 자료 설명의 추가 인증 데이터로 바인딩하여 필드를 복호화할 수 있는 사용자가 퍼블릭 키를 변경하거나 서명 확인에 영향을 주지 않도록 합니다.

AWS 데이터베이스 암호화에는 SDK 항상 HMAC 확인이 포함됩니다. ECDSA 디지털 서명은 기본적으로 활성화되어 있지만 필수는 아닙니다. 데이터를 암호화하는 사용자와 데이터를 복호화하는 사용자가 동일하게 신뢰되는 경우 디지털 서명이 포함되지 않은 알고리즘 제품군을 사용하여 성능을 향상시키는 것을 고려할 수 있습니다. 대체 알고리즘 제품군 선택에 대한 자세한 내용은 알고리즘 제품군 선택을 참조하세요.

참고

키링이 암호화자와 복호화자 간에 구분되지 않는 경우 디지털 서명은 암호화 값을 제공하지 않습니다.

비대칭 AWS KMS 키링을 포함한 RSA AWS KMS 키링은 AWS KMS 키 정책 및 IAM 정책에 따라 암호화자와 복호화자 간에 설명할 수 있습니다.

암호화 특성으로 인해 다음 키링은 암호화자와 복호화자 간에 설명할 수 없습니다.

  • AWS KMS 계층적 키링

  • AWS KMS ECDH 키 링

  • 원시 AES 키링

  • 원시 RSA 키링

  • 원시 ECDH 키링