AWS Database Encryption SDK에서 지원되는 알고리즘 제품군 - AWS 데이터베이스 암호화 SDK

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

AWS Database Encryption SDK에서 지원되는 알고리즘 제품군

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

알고리즘 제품군은 암호화 알고리즘 및 관련 값의 모음입니다. 암호화 시스템은 알고리즘 구현을 사용하여 사이퍼텍스트를 생성합니다.

AWS Database Encryption SDK는 알고리즘 제품군을 사용하여 데이터베이스의 필드를 암호화하고 서명합니다. 지원되는 모든 알고리즘 제품군은 AES-GCM이라고 하는 Galois/Counter Mode(GCM)와 함께 AES(Advanced Encryption Standard) 알고리즘을 사용하여 원시 데이터를 암호화합니다. AWS Database Encryption SDK는 256비트 암호화 키를 지원합니다. 인증 태그의 길이는 항상 16바이트입니다.

AWS Database Encryption SDK Algorithm Suites
알고리즘 암호화 알고리즘 데이터 키 길이(비트) 키 유도 알고리즘 대칭 서명 알고리즘 비대칭 서명 알고리즘 키 커밋
Default AES-GCM 256 HKDF(SHA-512 사용) HMAC-SHA-384 ECDSA(P-384 및 SHA-384 사용) HKDF(SHA-512 사용)
ECDSA 디지털 서명이 없는 AES-GCM AES-GCM 256 HKDF(SHA-512 사용) HMAC-SHA-384 없음 HKDF(SHA-512 사용)
암호화 알고리즘

사용되는 암호화 알고리즘의 이름 및 모드입니다. AWS Database Encryption SDK의 알고리즘 제품군은 Galois/Counter Mode(GCM)와 함께 고급 암호화 표준(AES) 알고리즘을 사용합니다.

데이터 키 길이

데이터 키의 길이(비트)입니다. AWS Database Encryption SDK는 256비트 데이터 키를 지원합니다. 데이터 키는 HMAC 기반 extract-and-expand 키 유도 함수(HKDF)에 대한 입력으로 사용됩니다. HKDF의 출력은 암호화 알고리즘에서 데이터 암호화 키로 사용됩니다.

키 유도 알고리즘

데이터 암호화 키를 추출하는 데 사용되는 HMAC 기반 추출 및 확장 키 유도 함수(HKDF)입니다. AWS Database Encryption SDK는 RFC 5869에 정의된 HKDF를 사용합니다.

  • 사용되는 해시 함수는 SHA-512입니다.

  • 추출 단계의 경우:

    • 솔트는 사용하지 않습니다. RFC에 따라 솔트는 0으로 구성된 문자열로 설정됩니다.

    • 입력 키 구성 요소는 키링의 데이터 키입니다.

  • 확장 단계의 경우:

    • 입력 의사 난수 키는 추출 단계의 출력입니다.

    • 키 레이블은 빅 엔디안 바이트 순서로 UTF-8 인코딩된 바이트 DERIVEKEY 문자열입니다.

    • 입력 정보는 알고리즘 ID와 키 레이블을 순서대로 연결한 것입니다.

    • 출력 키 구성 요소의 길이는 데이터 키 길이입니다. 이 출력은 암호화 알고리즘에서 데이터 암호화 키로 사용됩니다.

대칭 서명 알고리즘

대칭 서명을 생성하는 데 사용되는 해시 기반 메시지 인증 코드(HMAC) 알고리즘입니다. 지원되는 모든 알고리즘 제품군에는 HMAC 확인이 포함됩니다.

AWS Database Encryption SDK는 재료 설명과 ENCRYPT_AND_SIGN, SIGN_ONLY또는 로 표시된 모든 필드를 직렬화합니다SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. 그런 다음 HMAC를 암호화 해시 함수 알고리즘(SHA-384)과 함께 사용하여 표준화에 서명합니다.

대칭 HMAC 서명은 AWS Database Encryption SDK가 레코드에 추가하는 새 필드(aws_dbe_foot)에 저장됩니다.

비대칭 서명 알고리즘

비대칭 디지털 서명을 생성하는 데 사용되는 서명 알고리즘입니다.

AWS Database Encryption SDK는 재료 설명과 ENCRYPT_AND_SIGN, SIGN_ONLY또는 로 표시된 모든 필드를 직렬화합니다SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT. 그런 다음 다음 다음 세부 정보와 함께 타원 곡선 디지털 서명 알고리즘(ECDSA)을 사용하여 표준화에 서명합니다.

  • 사용되는 타원 곡선은 디지털 서명 표준(DSS)(FIPS PUB 186-4)에 정의된 P-384입니다. http://doi.org/10.6028/NIST.FIPS.186-4

  • 사용되는 해시 함수는 SHA-384입니다.

비대칭 ECDSA 서명은 aws_dbe_foot 필드에 대칭 HMAC 서명과 함께 저장됩니다.

ECDSA 디지털 서명은 기본적으로 포함되지만 필수는 아닙니다.

키 커밋

커밋 키를 추출하는 데 사용되는 HMAC 기반 extract-and-expand 키 파생 함수(HKDF)입니다.

  • 사용되는 해시 함수는 SHA-512입니다.

  • 추출 단계의 경우:

    • 솔트는 사용하지 않습니다. RFC에 따라 솔트는 0으로 구성된 문자열로 설정됩니다.

    • 입력 키 구성 요소는 키링의 데이터 키입니다.

  • 확장 단계의 경우:

    • 입력 의사 난수 키는 추출 단계의 출력입니다.

    • 입력 정보는 COMMITKEY 문자열의 UTF-8-encoded바이트이며 빅 엔디안 바이트 순서입니다.

    • 출력 키 구성 요소의 길이는 256비트입니다. 이 출력은 커밋 키로 사용됩니다.

커밋 키는 재료 설명에 대해 고유한 256비트 해시 기반 메시지 인증 코드(HMAC) 해시인 레코드 커밋을 계산합니다. 알고리즘 제품군에 키 커밋을 추가하는 방법에 대한 기술적인 설명은 Cryptology ePrint Archive의 키 커밋 AEAD를 참조하세요.

기본적으로 AWS Database Encryption SDK는 AES-GCM, HMAC 기반 extract-and-expand 키 유도 함수(HKDF), HMAC 확인, ECDSA 디지털 서명, 키 커밋 및 256비트 암호화 키가 있는 알고리즘 제품군을 사용합니다.

기본 알고리즘 제품군에는 HMAC 확인(대칭 서명) 및 ECDSA 디지털 서명(대칭 서명)이 포함됩니다. 이러한 서명은 AWS Database Encryption SDK가 레코드에 추가하는 새 필드(aws_dbe_foot)에 저장됩니다. ECDSA 디지털 서명은 권한 부여 정책에서 한 사용자 집합이 데이터를 암호화하고 다른 사용자 집합이 데이터를 복호화하도록 허용하는 경우에 특히 유용합니다.

기본 알고리즘 제품군은 데이터 키를 레코드에 연결하는 HMAC 해시인 키 커밋도 도출합니다. 키 커밋 값은 재료 설명 및 커밋 키에서 계산된 HMAC입니다. 그런 다음 자료 설명에 키 커밋 값을 저장합니다. 키 커밋이 포함된 알고리즘 제품군은 각 사이퍼텍스트가 하나의 일반 텍스트로만 복호화되도록 합니다. 이를 위해 암호화 알고리즘에 대한 입력으로 사용된 데이터 키를 검증합니다. 암호화할 때 알고리즘 제품군은 키 커밋 HMAC를 도출합니다. 암호를 복호화하기 전에 데이터 키가 동일한 키 커밋 HMAC를 생성하는지 확인합니다. 그러지 않으면 복호화 호출이 실패합니다.

ECDSA 디지털 서명이 없는 AES-GCM

기본 알고리즘 제품군은 대부분의 애플리케이션에 적합할 수 있지만 대체 알고리즘 제품군을 선택할 수 있습니다. 예를 들어 일부 신뢰 모델은 ECDSA 디지털 서명이 없는 알고리즘 제품군에 만족합니다. 이 제품군은 데이터를 암호화하는 사용자와 데이터를 해독하는 사용자가 동일하게 신뢰할 수 있는 경우에만 사용합니다.

모든 AWS Database Encryption SDK 알고리즘 제품군에는 HMAC 확인(대칭 서명)이 포함됩니다. 유일한 차이점은 ECDSA 디지털 서명이 없는 AES-GCM 알고리즘 제품군에 추가적인 신뢰성 계층과 거부 방지를 제공하는 비대칭 서명이 없다는 것입니다.

예를 들어 키링, wrappingKeyC, wrappingKeyB및에 래핑 키가 여러 wrappingKeyA개 있고를 사용하여 레코드wrappingKeyA를 복호화하는 경우 HMAC 대칭 서명은에 액세스할 수 있는 사용자가 레코드를 암호화했는지 확인합니다wrappingKeyA. 기본 알고리즘 제품군을 사용한 경우 HMACs에 대해 동일한 확인을 제공하고 wrappingKeyAECDSA 디지털 서명을 추가로 사용하여에 대한 암호화 권한이 있는 사용자가 레코드를 암호화했는지 확인합니다wrappingKeyA.

디지털 서명이 없는 AES-GCM 알고리즘 제품군을 선택하려면 암호화 구성에 다음 코드 조각을 포함합니다.

Java

다음 코드 조각은 ECDSA 디지털 서명이 없는 AES-GCM 알고리즘 제품군을 지정합니다. 자세한 내용은 AWS Database Encryption SDK for DynamoDB의 암호화 구성 단원을 참조하십시오.

.algorithmSuiteId( DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384)
C# / .NET

다음 코드 조각은 ECDSA 디지털 서명이 없는 AES-GCM 알고리즘 제품군을 지정합니다. 자세한 내용은 AWS Database Encryption SDK for DynamoDB의 암호화 구성 단원을 참조하십시오.

AlgorithmSuiteId = DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384
Rust

다음 코드 조각은 ECDSA 디지털 서명이 없는 AES-GCM 알고리즘 제품군을 지정합니다. 자세한 내용은 AWS Database Encryption SDK for DynamoDB의 암호화 구성 단원을 참조하십시오.

.algorithm_suite_id( DbeAlgorithmSuiteId::AlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384, )