AWS Encryption SDK의 개념 - AWS Encryption SDK

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

AWS Encryption SDK의 개념

이 섹션에서는 AWS Encryption SDK에서 사용되는 개념을 소개하고 용어집 및 참조를 제공합니다. 이 제품은 고객이 어떻게 작동하는지 이해할 수 있도록 설계되었습니다.AWS Encryption SDK작동 및 우리가 그것을 설명하기 위해 사용하는 용어.

도움이 필요하세요?

엔빌로프 암호화

암호화된 데이터의 보안은 암호화된 데이터를 해독할 수 있는 데이터 키 보호에 따라 부분적으로 다릅니다. 데이터 키를 보호하는 모범 사례 중 하나는 데이터 키를 암호화하는 것입니다. 이를 수행하려면 라고 하는 또 다른 암호화 키가 필요합니다.암호화 키또는래핑 키. 래핑 키를 사용하여 데이터 키를 암호화하는 방법을봉투 암호화.

데이터 키 보호

이AWS Encryption SDK는 각 메시지를 고유한 데이터 키로 암호화합니다. 그런 다음 지정한 래핑 키 아래의 데이터 키를 암호화합니다. 또한 반환하는 암호화된 메시지에 암호화된 데이터와 함께 암호화된 데이터 키를 저장합니다.

래핑 키를 지정하려면키 링또는마스터 키 공급자.


                            를 사용하여 봉투 암호화AWS Encryption SDK
여러 개의 래핑 키로 동일한 데이터 암호화

여러 개의 래핑 키에서 데이터 키를 암호화할 수 있습니다. 사용자마다 다른 래핑 키 또는 다른 유형의 래핑 키 또는 다른 위치에 다른 래핑 키를 제공해야 할 수 있습니다. 각 래핑 키는 동일한 데이터 키를 암호화합니다. 이AWS Encryption SDK는 암호화된 메시지에 암호화된 데이터와 함께 암호화된 데이터 키를 모두 저장합니다.

데이터를 해독하려면 암호화된 데이터 키 중 하나를 해독할 수 있는 래핑 키를 제공해야 합니다.


                            각 래핑 키는 동일한 데이터 키를 암호화하므로 각 래핑 키에 대해 하나의 암호화된 데이터 키가 생성됩니다.
여러 알고리즘의 강점 결합

기본적으로 데이터를 암호화하려면AWS Encryption SDK정교함을 사용합니다.알고리즘 세트AES-GCM 대칭 암호화, 키 파생 함수 (HKDF) 및 서명 기능을 제공합니다. 데이터 키를 암호화하려면 다음을 지정할 수 있습니다.대칭 또는 비대칭 암호화 알고리즘래핑 키에 적합합니다.

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

데이터 키

A데이터 키는 암호화 키입니다.AWS Encryption SDK를 사용하여 데이터를 암호화합니다. 각 데이터 키는 암호화 키에 대한 요구 사항을 준수하는 바이트 배열입니다. 사용하지 않는 한데이터 키 캐싱,AWS Encryption SDK는 고유한 데이터 키를 사용하여 각 메시지를 암호화합니다.

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

데이터 키를 보호하기 위해AWS Encryption SDK하나 또는 그 이상에서 암호화합니다.키 암호화 키로 알려진 값래핑 키또는 마스터 키. 이후AWS Encryption SDK는 일반 텍스트 데이터 키를 사용하여 데이터를 암호화하고, 가급적 빨리 메모리에서 제거합니다. 그런 다음 암호화된 데이터와 함께 암호화된 데이터 키를 저장합니다.암호화된 메시지암호화 작업이 반환됩니다. 자세한 내용은 AWS Encryption SDK 작동 방식 섹션을 참조하십시오.

작은 정보

에서AWS Encryption SDK, 우리는 구별합니다데이터 키...에서데이터 암호화 키. 지원되는 몇 가지알고리즘 세트기본 제품군을 포함하여 a 를 사용합니다.키 유도 함수데이터 키가 암호화 한계에 도달하지 못하도록 합니다. 키 파생 함수는 데이터 키를 입력으로 취하고 실제로 데이터를 암호화하는 데 사용되는 데이터 암호화 키를 반환합니다. 이러한 이유로 우리는 종종 데이터가 데이터 키를 “기준”하는 것이 아니라 데이터 키에서 “아래”암호화된다고 말합니다.

암호화된 각 데이터 키에는 데이터를 암호화한 래핑 키의 식별자를 비롯한 메타데이터가 포함됩니다. 이러한 메타데이터를 사용하면AWS Encryption SDK해독할 때 유효한 래핑 키를 식별합니다.

래핑 키

A래핑 키는 다음과 같은 키 암호화 키입니다.AWS Encryption SDK를 사용하여 암호화합니다.데이터 키즉, 데이터를 암호화합니다. 각 일반 텍스트 데이터 키는 하나 이상의 래핑 키로 암호화할 수 있습니다. 를 구성할 때 데이터를 보호하는 데 사용되는 래핑 키를 결정합니다.키 링또는마스터 키 공급자.

참고

래핑 키는 키링 또는 마스터 키 제공자의 키를 나타냅니다. 마스터 키는 일반적으로 다음과 연관되어 있습니다.MasterKey마스터 키 공급자를 사용할 때 인스턴스화하는 클래스입니다.

이AWS Encryption SDK다음과 같이 일반적으로 사용되는 여러 개의 래핑 키를 지원합니다.AWS Key Management Service(AWS KMS대칭AWS KMS keys(포함다중 리전 KMS 키), Raw AES-GCM (Advanced Encryption Standard/Galois Counter Mode) 키 및 Raw RSA 키 래핑 키를 확장하거나 직접 구현할 수도 있습니다.

봉투 암호화를 사용하는 경우 래핑 키를 무단 액세스로부터 보호해야 합니다. 다음 방법 중 하나를 사용하여 이 작업을 수행할 수 있습니다.

키 관리 시스템이 없는 경우 권장드립니다.AWS KMS. 이AWS Encryption SDK와 통합AWS KMS래핑 키를 보호하고 사용하는 데 도움이 됩니다. 그러나 다음 결과가 있습니다.AWS Encryption SDK에는 가 필요하지 않습니다.AWS또는 AnyAWS서비스.

키링 및 마스터 키 제공업체

암호화 및 암호 해독에 사용하는 래핑 키를 지정하려면 키링 (C, C# /.NET 및 JavaScript) 또는 마스터 키 공급자 (Java, Python, CLI) 를 사용합니다. 키 링과 마스터 키 제공자를 사용할 수 있습니다.AWS Encryption SDK자체 구현을 제공하거나 설계합니다. 이AWS Encryption SDK에서는 언어 제약 조건에 따라 서로 호환되는 키링과 마스터 키 제공자를 제공합니다. 자세한 내용은 키 링 호환성 섹션을 참조하십시오.

A키 링데이터 키를 생성, 암호화 및 해독합니다. 키링을 정의할 때 다음을 지정할 수 있습니다.래핑 키즉, 데이터 키를 암호화합니다. 대부분의 키링은 래핑 키 또는 래핑 키를 제공하고 보호하는 서비스를 지정합니다. 래핑 키가 없는 키링이나 추가 구성 옵션을 사용하여 더 복잡한 키링을 정의할 수도 있습니다. 열쇠 고리를 선택하고 사용하는 데 도움이 필요하면AWS Encryption SDK은 을 참조하십시오.키 링 사용. 키링은 C, C# /.NET 및 JavaScript에서 지원됩니다.

A마스터 키 공급자는 열쇠 고리의 대안입니다. 마스터 키 제공자는 지정한 래핑 키 (또는 마스터 키) 를 반환합니다. 각 마스터 키는 하나의 마스터 키 제공자와 연결되어 있지만 마스터 키 제공자는 일반적으로 여러 마스터 키를 제공합니다. 마스터 키 제공자는 자바, 파이썬 및AWS암호화 CLI.

암호화를 위해 키링 (또는 마스터 키 제공자) 을 지정해야 합니다. 암호 해독을 위해 동일한 키링 (또는 마스터 키 제공자) 또는 다른 키 제공자를 지정할 수 있습니다. 암호화할 때AWS Encryption SDK에서는 지정한 모든 래핑 키를 사용하여 데이터 키를 암호화합니다. 암호 해독할 때AWS Encryption SDK에서는 지정한 래핑 키만 암호화된 데이터 키를 해독합니다. 암호 해독을 위해 래핑 키를 지정하는 것은 선택 사항이지만AWS Encryption SDK 모범 사례.

래핑 키 지정에 대한 자세한 내용은 단원을 참조하십시오래핑 키 선택.

암호화 컨텍스트

암호화 작업의 보안을 강화하려면암호화 컨텍스트모든 데이터 암호화 요청에서 암호화 컨텍스트를 사용하는 것은 선택 사항이지만 권장하는 암호화 모범 사례입니다.

암호화 컨텍스트는 보안되지 않은 임의의 추가 인증 데이터를 포함하는 키-값 페어 세트입니다. 암호화 컨텍스트에는 선택한 모든 데이터가 포함될 수 있지만 일반적으로 파일 형식, 용도 또는 소유권에 대한 데이터와 같이 로깅 및 추적에 유용한 데이터로 구성됩니다. 데이터를 암호화하는 경우 암호화 컨텍스트는 암호화된 데이터에 암호로 바인딩되므로 데이터를 암호화 해제하는 데 동일한 암호화 컨텍스트가 필요합니다. 이AWS Encryption SDK의 헤더에 암호화 컨텍스트를 일반 텍스트로 포함시킵니다.암호화된 메시지이 반환됩니다.

다음과 같은 암호화 컨텍스트AWS Encryption SDK는 사용자가 지정하는 암호화 컨텍스트와 다음과 같은 공개 key pair 쌍으로 구성됩니다.암호화 구성 요소 관리자(CMM) 가 추가합니다. 특히, 사용할 때마다서명 암호화 알고리즘CMM은 예약된 이름으로 구성된 암호화 컨텍스트에 이름-값 쌍을 추가합니다.aws-crypto-public-key및 공개 확인 키를 나타내는 값입니다. 이aws-crypto-public-key에 의해 암호화 컨텍스트의 이름이 예약되었습니다.AWS Encryption SDK및 은 (는) 암호화 컨텍스트의 다른 쌍에서 이름으로 사용할 수 없습니다. 자세한 내용은 단원을 참조하십시오.AAD메시지 형식 참조.

다음 예제 암호화 컨텍스트는 요청에 지정된 두 개의 암호화 컨텍스트 쌍과 CMM에서 추가하는 공개 key pair 쌍으로 구성됩니다.

"Purpose"="Test", "Department"="IT", aws-crypto-public-key=<public key>

데이터를 해독하려면 암호화된 메시지를 전달합니다. 왜냐하면AWS Encryption SDK는 암호화된 메시지 헤더에서 암호화 컨텍스트를 추출할 수 있습니다. 암호화 컨텍스트를 별도로 제공할 필요는 없습니다. 그러나 암호화 컨텍스트는 올바른 암호화된 메시지를 해독하고 있는지 확인하는 데 도움이 될 수 있습니다.

  • 에서AWS Encryption SDKCommand Line Interface(CLI), 해독 명령에 암호화 컨텍스트를 제공하는 경우 CLI는 암호화된 메시지의 암호화 컨텍스트에 해당 값이 있는지 확인한 후 일반 텍스트 데이터를 반환합니다.

  • 다른 프로그래밍 언어 구현에서 해독 응답에는 암호화 컨텍스트와 일반 텍스트 데이터가 포함됩니다. 응용 프로그램의 해독 함수는 암호 해독 응답의 암호화 컨텍스트가 일반 텍스트 데이터를 반환하기 전에 암호화 요청 (또는 하위 집합) 의 암호화 컨텍스트가 포함되어 있는지 항상 확인해야 합니다.

암호화 컨텍스트를 선택할 때는 비밀이 아님을 기억하십시오. 암호화 컨텍스트는 의 헤더에 일반 텍스트로 표시됩니다.암호화된 메시지그AWS Encryption SDK을 반환합니다. 을 사용 중인 경우AWS Key Management Service에서는 암호화 컨텍스트가 감사 레코드 및 로그의 일반 텍스트로 나타날 수도 있습니다 (예:AWS CloudTrail.

코드에서 암호화 컨텍스트를 제출하고 확인하는 예제는 선호하는 예제를 참조하십시오.프로그래밍 언어.

암호화된 메시지

AWS Encryption SDK를 사용하여 데이터를 암호화하면 암호화된 메시지가 반환됩니다.

원래 요청 ping에 대한암호화된 메시지는 휴대용입니다.서식 있는 데이터 구조여기에는 암호화된 데이터와 데이터 키의 암호화된 복사본, 알고리즘 ID 및 선택적으로암호화 컨텍스트및 a디지털 서명. AWS Encryption SDK의 암호화 작업은 암호화된 메시지를 반환하고 암호화 해제 작업은 암호화된 메시지를 입력으로 사용합니다.

암호화된 데이터와 암호화된 데이터 키를 결합하면 암호 해독 작업이 간소화되고 암호화된 데이터 키가 암호화된 데이터와 독립적으로 저장 및 관리하지 않아도 됩니다.

암호화된 메시지에 대한 기술 정보는 단원을 참조하십시오.암호화된 메시지 형식.

알고리즘 세트

이AWS Encryption SDK알고리즘 제품군을 사용하여 데이터를 암호화하고 서명합니다.암호화된 메시지암호화 및 암호 해독 작업이 반환됩니다. AWS Encryption SDK에서는 여러 알고리즘 세트를 지원합니다. 지원하는 알고리즘은 모두 AES(Advanced Encryption Standard)를 기본 알고리즘으로 사용하고 이 기본 알고리즘을 다른 알고리즘 및 값과 조합합니다.

AWS Encryption SDK에서는 모든 암호화 작업의 기본값으로 사용할 권장 알고리즘 세트를 설정합니다. 표준과 모범 사례가 개선됨에 따라 기본값이 변경될 수 있습니다. 데이터 암호화 요청 또는 생성 시 대체 알고리즘 제품군을 지정할 수 있습니다.암호화 구성 요소 관리자 (CMM)하지만 상황에 대체가 필요하지 않은 경우 기본값을 사용하는 것이 가장 좋습니다. 현재 기본값은 HMAC 기반의 AES-GCM입니다. extract-and-expand 키 유도 함수(HKDF),주요 약정,Elliptic Curve 디지털 서명 알고리즘서명 및 256비트 암호화 키

애플리케이션에 고성능이 필요하고 데이터를 암호화하는 사용자와 데이터를 해독하는 사용자가 동등하게 신뢰할 수 있는 경우 디지털 서명 없이 알고리즘 제품군을 지정하는 것이 좋습니다. 그러나 키 약정과 키 파생 함수가 포함된 알고리즘 제품군을 강력히 권장합니다. 이러한 기능이 없는 알고리즘 제품군은 이전 버전과의 호환성을 위해서만 지원됩니다.

암호화 구성 요소 관리자

CMM (Crypgraphic Materials Manager) 는 데이터를 암호화 및 암호화 해제하는 데 사용되는 암호화 자료를 어셈블합니다. 이암호화 자료일반 텍스트 및 암호화된 데이터 키 및 선택적 메시지 서명 키를 포함합니다. CMM과 직접 상호 작용할 수 없습니다. 암호화 및 암호 해독 방법이 이를 처리합니다.

기본 CMM 또는CMM 캐싱그AWS Encryption SDK사용자 지정 CMM을 제공하거나 작성합니다. CMM을 지정할 수 있지만 필수는 아닙니다. 키링 또는 마스터 키 제공자를 지정하면AWS Encryption SDK에서 기본 CMM을 만듭니다. 기본 CMM은 지정한 키 링 또는 마스터 키 제공자로부터 암호화 또는 암호화 해제 자료를 가져옵니다. 여기에는 다음과 같은 암호화 서비스에 대한 호출이 포함될 수 있습니다.AWS Key Management Service(AWS KMS).

CMM은 다음 사이의 연락 역할을하기 때문에AWS Encryption SDK또한 키 링 (또는 마스터 키 제공자) 은 정책 시행 및 캐싱 지원 등과 같은 사용자 지정 및 확장을 위한 이상적인 지점입니다. AWS Encryption SDK는 데이터 캐싱을 지원하기 위해 caching CMM을 제공합니다.

대칭 및 비대칭 암호화

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

비대칭 암호화는 수학적으로 관련된 데이터 key pair 사용합니다. 한 쌍의 키는 데이터를 암호화하고, 한 쌍의 다른 키만 데이터를 해독할 수 있습니다. 자세한 내용은 단원을 참조하십시오.암호화 알고리즘AWS암호화 서비스 및 도구 가이드.

이AWS Encryption SDK사용봉투 암호화. 대칭 데이터 키로 데이터를 암호화합니다. 하나 이상의 대칭 또는 비대칭 래핑 키로 대칭 데이터 키를 암호화합니다. 은 을 반환합니다.암호화된 메시지여기에는 암호화된 데이터와 암호화된 데이터 키 중 하나 이상의 암호화된 사본을 포함합니다.

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

데이터를 암호화하기 위해AWS Encryption SDK대칭 을 사용합니다.데이터 키그리고알고리즘 세트여기에는 대칭 암호화 알고리즘이 포함됩니다. 데이터를 해독하려면AWS Encryption SDK에서는 동일한 데이터 키와 동일한 알고리즘 세트를 사용합니다.

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

키 링또는마스터 키 공급자암호화 및 암호 해독 작업에 제공하는 경우 대칭 데이터 키가 암호화되고 암호 해독되는 방법이 결정됩니다. 대칭 암호화를 사용하는 키링 또는 마스터 키 제공자를 선택할 수 있습니다 (예:AWS KMS키링 또는 비대칭 암호화를 사용하는 키 링 (예: 원시 RSA 키 링 또는JceMasterKey.

주요 약정

이AWS Encryption SDK지원합니다주요 약정(때로는 다음과 같이 알려져 있음견고성), 각 암호문이 단일 일반 텍스트로만 해독될 수 있음을 보장하는 보안 속성입니다. 이를 위해 키 약속은 메시지를 암호화한 데이터 키만 암호를 해독하는 데 사용됩니다. 키 약정으로 암호화 및 암호 해독은AWS Encryption SDK모범 사례.

대부분의 최신 대칭 암호 (AES 포함) 는 다음과 같은 단일 비밀 키로 일반 텍스트를 암호화합니다.고유 데이터 키그AWS Encryption SDK를 사용하여 각 일반 텍스트 메시지를 암호화합니다. 동일한 데이터 키로 이 데이터를 해독하면 원본과 동일한 일반 텍스트가 반환됩니다. 다른 키로 암호 해독하는 것은 일반적으로 실패합니다. 그러나 두 개의 다른 키 아래에서 암호문을 해독할 수 있습니다. 드문 경우이지만, 몇 바이트의 암호문을 다른, 하지만 여전히 이해할 수 있는 일반 텍스트로 해독할 수 있는 키를 찾는 것이 가능합니다.

이AWS Encryption SDK항상 하나의 고유한 데이터 키로 각 일반 텍스트 메시지를 암호화합니다. 여러 개의 래핑 키 (또는 마스터 키) 에서 해당 데이터 키를 암호화 할 수 있지만 래핑 키는 항상 동일한 데이터 키를 암호화합니다. 그럼에도 불구하고 정교하고 수작업으로 제작되었습니다.암호화된 메시지실제로 서로 다른 데이터 키를 포함할 수 있으며, 각각 다른 래핑 키로 암호화됩니다. 예를 들어, 한 사용자가 암호화된 메시지를 해독하면 0x0 (false) 을 반환하고 동일한 암호화된 메시지를 해독하는 다른 사용자는 0x1 (true) 을 얻습니다.

이 시나리오를 방지하려면AWS Encryption SDK암호화 및 암호 해독 시 키 약정을 지원합니다. 이 때AWS Encryption SDK키 약정을 사용하여 메시지를 암호화하고 암호문을 생성 한 고유 데이터 키를키 약정 문자열, 비비밀 데이터 키 식별자입니다. 그런 다음 암호화된 메시지의 메타데이터에 키 약정 문자열을 저장합니다. 키 약정으로 메시지를 해독하면AWS Encryption SDK는 데이터 키가 암호화된 메시지의 유일한 키인지 확인합니다. 데이터 키 확인에 실패하면 암호 해독 작업이 실패합니다.

키 약정에 대한 지원은 버전 1.7에서 소개되었습니다.x키 약정을 사용하여 메시지를 해독할 수 있지만 키 약정으로 암호화되지는 않습니다. 이 버전을 사용하여 키 약정을 사용하여 암호문을 해독하는 기능을 완전히 배포할 수 있습니다. 버전 2.0.x주요 약정에 대한 완전한 지원이 포함되어 있습니다. 기본적으로 키 약정을 통해서만 암호화하고 해독합니다. 이 구성은 이전 버전의 에서 암호화된 암호문을 해독할 필요가 없는 응용 프로그램에 이상적인 구성입니다.AWS Encryption SDK.

키 약정으로 암호화 및 암호 해독하는 것이 가장 좋은 방법이지만, 사용 시기를 결정하고 채택하는 속도를 조정할 수 있습니다. 을 버전 1.7로 업데이트x,AWS Encryption SDK을 지원합니다.약정그 세트기본 알고리즘 세트사용할 수 있는 알고리즘 제품군을 제한합니다. 이 정책은 데이터가 키 약정으로 암호화되고 암호 해독되는지 여부를 결정합니다.

주요 약정 결과약간 더 큰 (+ 30바이트) 암호화된 메시지처리하려면 더 많은 시간이 걸립니다. 애플리케이션이 크기 또는 성능에 매우 민감한 경우 키 약정을 거부할 수 있습니다. 하지만 필요한 경우에만 그렇게 하십시오.

버전 1.7로 마이그레이션하는 방법에 대해서 알려드립니다.x및 2.0.x주요 약정 기능을 포함하여 다음을 참조하십시오.마이그레이션AWS Encryption SDK. 주요 약정에 대한 기술 정보는 단원을 참조하십시오.AWS Encryption SDK 알고리즘 참조AWS Encryption SDK 메시지 형식 참조.

약정

A약정는 응용 프로그램이 암호화 및 암호 해독할지 여부를 결정하는 구성 설정입니다.주요 약정. 키 약정으로 암호화 및 암호 해독은AWS Encryption SDK모범 사례.

약정 정책에는 세 가지 가치가 있습니다.

참고

전체 테이블을 보려면 가로 또는 세로로 스크롤해야 할 수 있습니다.

약정 정책 가치
키 약정으로 암호화 키 약정 없이 암호화 키 약정으로 암호 해독 키 약정 없이 암호 해독
금지암호화 허용암호 해독
요구사항암호화 허용암호 해독
요구사항 암호화필수암호 해독

약정 정책 설정은 에 소개되었습니다.AWS Encryption SDK버전 1.7.x. 지원되는 모든 항목에서 유효합니다.프로그래밍 언어.

  • ForbidEncryptAllowDecrypt키 약정 유무에 관계없이 암호 해독하지만 키 약정으로 암호화되지는 않습니다. 이는 버전 1.7에서 약정 정책의 유일한 가치입니다.x모든 암호화 및 암호 해독 작업에 사용됩니다. 애플리케이션을 실행하는 모든 호스트가 키 약정으로 암호화된 암호문이 발생하기 전에 키 약정으로 해독할 수 있도록 준비하도록 설계되었습니다.

  • RequireEncryptAllowDecrypt항상 키 약정으로 암호화됩니다. 키 약정 유무에 관계없이 암호를 해독할 수 있습니다. 이 값은 버전 2.0에 도입되었습니다.x를 사용하면 키 약정으로 암호화를 시작할 수 있지만 키 약정 없이 레거시 암호문을 해독할 수 있습니다.

  • RequireEncryptRequireDecrypt는 키 약정을 통해서만 암호화 및 암호 해독합니다. 이 값은 버전 2.0의 기본 값입니다.x. 모든 암호문이 키 약정으로 암호화되어 있다고 확신할 때 이 값을 사용합니다.

약정 정책 설정에 따라 사용할 수 있는 알고리즘 세트가 결정됩니다. 을 버전 1.7로 업데이트x,AWS Encryption SDK지원합니다알고리즘 세트주요 약정, 서명 유무에 관계없이 약정 정책과 충돌하는 알고리즘 제품군을 지정하면AWS Encryption SDK에서 오류가 반환됩니다.

약정 정책 설정에 대한 도움말은 단원을 참조하십시오.약정 정책 설정하기.

디지털 서명

시스템 간에 디지털 메시지의 무결성을 보장하기 위해 메시지에 디지털 서명을 적용할 수 있습니다. 디지털 서명은 항상 비대칭입니다. 개인 키를 사용하여 서명을 만들고 원본 메시지에 추가합니다. 수신자는 공개 키를 사용하여 메시지를 서명한 후 수정되지 않았는지 확인합니다.

이AWS Encryption SDK인증된 암호화 알고리즘 AES-GCM을 사용하여 데이터를 암호화하고 암호 해독 프로세스는 디지털 서명을 사용하지 않고 암호화된 메시지의 무결성과 신뢰성을 검증합니다. 그러나 AES-GCM은 대칭 키를 사용하기 때문에 암호문을 해독하는 데 사용되는 데이터 키를 해독할 수 있는 사람이라면 누구나 수동으로 암호화된 암호문을 새로 만들 수 있으므로 보안 문제가 발생할 수 있습니다. 예를 들어,AWS KMSkey는 래핑 키로서 KMS 암호 해독 권한을 가진 사용자가 KMS Encrypt를 호출하지 않고 암호화된 암호문을 만들 수 있음을 의미합니다.

이 문제를 방지하려면AWS Encryption SDK에서는 암호화된 메시지 끝에 ECDSA (Elliptic Curve Digital Signature Algorithm) 서명을 추가합니다. 서명 알고리즘 제품군을 사용하는 경우AWS Encryption SDK는 암호화된 각 메시지에 대해 임시 개인 키와 공개 키 쌍을 생성합니다. 이AWS Encryption SDK는 공개 키를 데이터 키의 암호화 컨텍스트에 저장하고 개인 키를 삭제하며, 아무도 공개 키를 사용하여 확인하는 다른 서명을 만들 수 없습니다. 알고리즘은 공개 키를 암호화된 데이터 키에 메시지 헤더의 추가 인증된 데이터로 바인딩하기 때문에 메시지만 해독할 수 있는 사용자는 공개 키를 변경할 수 없습니다.

서명 확인은 암호 해독에 상당한 성능 비용을 더합니다. 데이터를 암호화하는 사용자와 데이터를 해독하는 사용자가 동등하게 신뢰할 수 있는 경우 서명을 포함하지 않는 알고리즘 제품군을 사용하는 것이 좋습니다.