

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

# 암호 프리미티브
<a name="crypto-primitives"></a>

AWS KMS 는 구성 가능한 암호화 알고리즘을 사용하므로 시스템이 승인된 알고리즘 또는 모드에서 다른 알고리즘으로 빠르게 마이그레이션할 수 있습니다. 초기 기본 암호화 알고리즘 세트는 보안 속성과 성능을 지원하기 위해 Federal Information Processing Standard(FIPS 승인) 알고리즘에서 선택되었습니다.

## 엔트로피 및 난수 생성
<a name="entropy-and-random-numbers"></a>

AWS KMS 키 생성은 AWS KMS HSMs에서 수행됩니다. HSM은 [AES-256을 사용한 NIST SP800-90A Deterministic Random Bit Generator(DRBG) CTR\$1DRBG](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90Ar1.pdf)를 사용하는 하이브리드 난수 생성기를 구현합니다. 384비트의 엔트로피가 포함된 비결정적 임의 비트 생성기로 시드되고 추가 엔트로피가 업데이트되어 암호화 구성 요소를 호출 할 때마다 예측 저항을 제공합니다.

## 대칭 키 작업(암호화만 해당)
<a name="symmetric-key-0ps"></a>

HSM에서 사용되는 모든 대칭 키 암호화 명령은 256비트 키를 사용한 [Galois Counter Mode(GCM)](http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf)의 [고급 암호화 표준(AES)](http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf)을 사용합니다. 복호화하기 위한 유사한 호출에는 역 함수가 사용됩니다.

AES-GCM은 인증된 암호화 체계입니다. 암호화 텍스트를 생성하기 위해 일반 텍스트를 암호화하는 것 외에 암호문과 인증이 필요한 추가 데이터(추가로 인증된 데이터 또는 AAD)를 통해 인증 태그를 계산합니다. 이 인증 태그는 데이터가 취합된 소스로부터 얻어진 것이며 암호화 텍스트와 AAD가 수정되지 않았음을 확인하는 데 유용합니다.

자주, 특히 데이터 키 암호화를 참조할 때 설명에 AAD를 포함하지 AWS 않습니다. 암호화할 구조가 암호화될 일반 텍스트와 보호할 일반 텍스트 AAD로 분할되는 이 같은 경우에는 주변 텍스트에 의해 암시됩니다.

AWS KMS 는에 의존하여 키 구성 요소를 생성하는 AWS KMS key 대신 키 구성 요소를 AWS KMS 로 가져올 수 있는 옵션을 제공합니다. 가져온이 키 구성 요소는 [RSAES-OAEP](https://datatracker.ietf.org/doc/html/rfc8017#section-7.1) 또는 [RSAES-PKCS1-v1\$15](https://datatracker.ietf.org/doc/html/rfc8017#section-7.2)를 사용하여 암호화하여 AWS KMS HSM으로 전송하는 동안 키를 보호할 수 있습니다. RSA 키 페어는 AWS KMS HSM에 생성됩니다. 가져온 키 구성 요소는 서비스에 저장되기 전에 AWS KMS HSM에서 복호화되고 AES-GCM에서 다시 암호화됩니다.

## 비대칭 키 작업(암호화, 디지털 서명 및 서명 확인)
<a name="asymmetric-key-ops"></a>

AWS KMS 는 암호화 및 디지털 서명 작업 모두에 비대칭 키 작업 사용을 지원합니다. 비대칭 키 작업은 암호화 및 복호화 또는 서명 및 서명 확인에 사용할 수 있는 수학적으로 관련된 퍼블릭 키 및 프라이빗 키 페어를 사용하지만 둘 다 사용할 수는 없습니다. 프라이빗 키는 암호화 AWS KMS 되지 않은 상태로 두지 않습니다. AWS KMS API 작업을 호출 AWS KMS 하여 내에서 퍼블릭 키를 사용하거나 퍼블릭 키를 다운로드하여 외부에서 사용할 수 있습니다 AWS KMS.

AWS KMS 는 세 가지 유형의 비대칭 암호를 지원합니다.
+ **RSA-OAEP(암호화용) 및 RSA-PSS와 RSA-PKCS-\$11-v1\$15(서명 및 확인용)** - 다양한 보안 요구 사항에 맞게 2,048, 3,072, 4,096의 RSA 키 길이(비트 단위)를 지원합니다.
+ **타원 곡선(ECC)** - 서명 및 확인에만 사용됩니다. ECC 곡선: NIST P256, P384, P521, SECP 256k1을 지원합니다.
+ **Post Quantum Cryptography** - 양자 컴퓨팅에 내성이 있는 새로운 퍼블릭 키 암호화 알고리즘입니다. ML\$1[DSA\$144, ML\$1DSA\$165 및 ML\$1DSA\$187 키 크기를 사용하는 NIST FIPS 204 Module-Lattice Digital Signature Algorithm(ML-DSA)](https://csrc.nist.gov/pubs/fips/204/final)을 지원합니다.

## 키 유도 함수
<a name="key-derivation-functions"></a>

키 유도 함수는 초기 보안 아호 또는 키에서 추가 키를 추출하는 데 사용됩니다. AWS KMS 는 키 유도 함수(KDF)를 사용하여 AWS KMS key를 사용한 모든 암호화의 호출별 키를 추출합니다. 모든 KDF 작업에는 HMAC [[FIPS197]](http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf)과 SHA256 [[FIPS180]](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf)을 사용한 [카운터 모드의 KDF](https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-108.pdf)가 사용됩니다. 추출된 256비트 키는 고객 데이터 및 키를 암호화하거나 복호화하는 데 AES-GCM과 함께 사용됩니다.

## AWS KMS 디지털 서명의 내부 사용
<a name="digital-signatures"></a>

디지털 서명은 AWS KMS 엔터티 간에 명령 및 통신을 인증하는 데에도 사용됩니다. 모든 서비스 엔터티에는 타원 곡선 디지털 서명 알고리즘(ECDSA) 키 페어가 있습니다. 이 키 페어는 [Use of Elliptic Curve Cryptography(ECC) Algorithms in Cryptographic Message Syntax(CMS)](https://datatracker.ietf.org/doc/html/rfc5753/) 및 X9.62-2005: *Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm(ECDSA)*에 정의된 대로 ECDSA를 수행합니다. 엔터티는 SHA384라고 하는 [Federal Information Processing Standards Publications, FIPS PUB 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf)에 정의된 보안 해시 알고리즘을 사용합니다. 모든 키는 secp384r1(NIST-P384) 곡선에 생성됩니다.

## 봉투 암호화
<a name="envelope-encryption"></a>

많은 암호화 시스템에 사용되는 기본 구조는 봉투 암호화입니다. 봉투 암호화는 2개 이상의 암호화 키를 사용하여 메시지를 보호합니다. 일반적으로 키 중 하나는 장기 정적 키 *k*에서 추출되며, 다른 하나는 메시지를 암호화하기 위해 생성되는 메시지별 키 *msgKey*입니다. 봉투는 *ciphertext = Encrypt(msgKey, message)*와 같이 메시지를 암호화하여 구성됩니다. 그런 다음 *encKey = Encrypt(k, msgKey)*와 같이 메시지 키가 장기 정적 키로 암호화됩니다. 마지막으로, *(encKey, ciphertext)*라는 두 값이 단일 구조 또는 봉투 암호화 메시지로 패키징됩니다.

*k*에 대한 액세스 권한이 있는 수신자는 암호화된 키를 먼저 복호화한 다음 메시지를 복호화하여 봉투로 암호화된 메시지를 열 수 있습니다.

AWS KMS 는 이러한 장기 정적 키를 관리하고 데이터의 봉투 암호화 프로세스를 자동화하는 기능을 제공합니다.

[AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html)는 AWS KMS 서비스 내에서 제공되는 암호화 기능 외에도 클라이언트 측 봉투 암호화 라이브러리를 제공합니다. 이 라이브러리를 사용하여 데이터 및 해당 데이터를 암호화하는 데 사용되는 암호화 키를 보호할 수 있습니다.