AWS KMS 암호화 필수 요소 - AWS Key Management Service

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

AWS KMS 암호화 필수 요소

AWS KMS 는 구성 가능한 암호화 알고리즘을 사용하여 시스템이 승인된 알고리즘 또는 모드에서 다른 알고리즘으로 빠르게 마이그레이션할 수 있도록 합니다. 암호화 알고리즘의 초기 기본 세트는 보안 속성 및 성능에 대해 연방 정보 처리 표준(FIPS승인됨) 알고리즘에서 선택되었습니다.

엔트로피 및 난수 생성

AWS KMS 키 생성은 에서 수행됩니다 AWS KMS HSMs. 는 NIST SP800-90A Deterministic Random Bit Generator (DRBG) CTR_DRBG using AES-256을 사용하는 하이브리드 난수 생성기를 HSMs 구현합니다. 384비트의 엔트로피가 포함된 비결정적 임의 비트 생성기로 시드되고 추가 엔트로피가 업데이트되어 암호화 구성 요소를 호출 할 때마다 예측 저항을 제공합니다.

대칭 키 작업(암호화만 해당)

내에서 사용되는 모든 대칭 키 암호화 명령HSMs은 256비트 키를 사용하는 Galois 카운터 모드(AES)에서 고급 암호화 표준()을 사용합니다. GCM 복호화하기 위한 유사한 호출에는 역 함수가 사용됩니다.

AES-GCM 는 인증된 암호화 체계입니다. 일반 텍스트를 암호화하여 암호 텍스트를 생성하는 것 외에도 암호 텍스트 및 인증이 필요한 추가 데이터(추가 인증 데이터 또는 )를 통해 인증 태그를 계산합니다AAD. 인증 태그는 데이터가 의도한 소스에서 온 것이고 암호 텍스트가 수정되지 AAD 않았는지 확인하는 데 도움이 됩니다.

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

AWS KMS 는 키 구성 요소를 생성하는 대신 키 구성 요소를 AWS KMS 로 가져올 AWS KMS key 수 있는 옵션을 제공합니다. 가져온 이 키 구성 요소는 로 전송하는 동안 키를 보호하기 위해 RSAES-OAEP를 사용하여 암호화할 수 있습니다 AWS KMS HSM. RSA 키 페어는 에서 생성됩니다 AWS KMS HSMs. 가져온 키 구성 요소는 서비스에서 저장되기 전에 에서 AWS KMS HSM 복호화되고 AES에서GCM 다시 암호화됩니다.

비대칭 키 작업(암호화, 디지털 서명 및 서명 확인)

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

AWS KMS 는 다음과 같은 비대칭 암호를 지원합니다.

  • RSA-OAEP (암호화용) 및 RSA-PSS 및 RSA-PKCS-#1-v1_5(서명 및 확인용) - 다양한 보안 요구 사항에 대해 RSA 키 길이(비트): 2048, 3072 및 4096을 지원합니다.

  • 타원형 곡선(ECC) - 서명 및 확인 또는 공유 보안 암호 도출에 사용되지만 둘 다 사용하는 것은 아닙니다. ECC 곡선 지원: NIST P256, P384, P521, SECP 256k1.

  • SM2 (중국 리전만 해당) - 암호화 및 복호화, 서명 및 확인 또는 공유 보안 암호 도출에 사용되지만 키 사용량을 하나 선택해야 합니다. SM2PKE 암호화 및 SM2DSA 서명을 지원합니다.

키 유도 함수

키 파생 함수는 초기 보안 암호 또는 키에서 추가 키를 파생하는 데 사용됩니다. 는 키 파생 함수(KDF)를 AWS KMS 사용하여 에 따른 모든 암호화에 대한 호출당 키를 파생합니다 AWS KMS key. 모든 KDF 작업은 HMAC [0FIPS197]KDF 함께 []를 사용하여 카운터 모드에서 를 사용합니다. SHA256 FIPS18 256비트 파생 키는 AES-GCM와 함께 고객 데이터 및 키를 암호화하거나 복호화하는 데 사용됩니다.

AWS KMS 디지털 서명의 내부 사용

디지털 서명은 AWS KMS 엔터티 간에 명령 및 통신을 인증하는 데에도 사용됩니다. 모든 서비스 엔터티에는 타원 곡선 디지털 서명 알고리즘(ECDSA) 키 페어가 있습니다. 암호화 메시지 구문의 타원형 곡선 암호화(ECC) 알고리즘 사용(CMS) 및 X9.62-2005: 금융 서비스 산업의 퍼블릭 키 암호화: 타원형 곡선 디지털 서명 알고리즘(ECDSA)에 정의된 ECDSA 대로 작동합니다. 엔터티는 라고 하는 연방 정보 처리 표준 간행물 180-4에 정의된 보안 FIPS PUB 해시 알고리즘을 사용합니다SHA384. 키는 곡선 secp384r1(NIST-P384)에 생성됩니다.

봉투 암호화

데이터를 암호화하면 데이터가 보호되지만 암호화 키를 보호해야 합니다. 암호화하는 것도 하나의 전략입니다. 봉투 암호화는 데이터 키로 일반 텍스트 데이터를 암호화한 후, 다른 키 아래에서 데이터 키를 암호화하는 방법입니다.

데이터 암호화 키를 다른 암호화 키로 암호화하고 해당 암호화 키를 다른 암호화 키로 암호화할 수도 있습니다. 그러나 궁극적으로는 키와 데이터를 해독할 수 있도록 하나의 키는 일반 텍스트로 남겨둬야 합니다. 이러한 최상위 일반 텍스트 키 암호화 키를 루트 키라고 합니다.

엔빌로프 암호화

AWS KMS 는 암호화 키를 안전하게 저장하고 관리하여 이를 보호합니다. 라고 AWS KMS하는 에 저장된 루트 키는 AWS KMS FIPS 검증된 하드웨어 보안 모듈을 암호화되지 않은 상태로 두지 AWS KMS keys않습니다. KMS 키를 사용하려면 를 호출해야 합니다 AWS KMS.

많은 암호화 시스템에 사용되는 기본 구조는 봉투 암호화입니다. 봉투 암호화는 2개 이상의 암호화 키를 사용하여 메시지를 보호합니다. 일반적으로 한 키는 장기 정적 키 k 에서 파생되고 다른 키는 메시지를 암호화하기 위해 생성되는 메시지당 키 msgKey입니다. 엔벨로프는 ciphertext = Encrypt(msgKey, message) 메시지를 암호화하여 구성됩니다. 그런 다음 메시지 키는 장기 정적 키 encKey = Encrypt(k, msgKey) 로 암호화됩니다. 마지막으로 두 값(encKey, 사이퍼텍스트)은 단일 구조로 패키징되거나 암호화된 메시지를 엔벨로프화합니다.

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

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

AWS EncryptionSDK은 AWS KMS 서비스 내에서 제공되는 암호화 기능 외에도 클라이언트 측 엔벨로프 암호화 라이브러리를 제공합니다. 이 라이브러리를 사용하여 데이터 및 해당 데이터를 암호화하는 데 사용되는 암호화 키를 보호할 수 있습니다.

키 암호화 키를 여러 개 사용하는 봉투 암호화

봉투 암호화는 여러 가지 장점을 제공합니다.

  • 데이터 키 보호

    데이터 키를 암호화하면 해당 데이터 키의 보안이 암호화에 의해 근본적으로 보호되기 때문에 암호화한 데이터 키의 저장에 대해 고민할 필요가 없습니다. 암호화한 데이터 키를 암호화한 데이터와 함께 안전하게 저장할 수 있습니다.

  • 여러 개의 키로 동일한 데이터 암호화

    암호화 작업, 특히 암호화되는 데이터가 대용량 객체일 경우 긴 시간이 걸릴 수 있습니다. 서로 다른 키로 원시 데이터를 여러 차례 다시 암호화하는 대신, 원시 데이터를 보호하는 데이터 키만 다시 암호화할 수 있습니다.

  • 여러 알고리즘의 강점 결합

    일반적으로 대칭 키 알고리즘이 퍼블릭 키 알고리즘보다 빠르고 더 작은 암호화 텍스트를 생성합니다. 그러나 퍼블릭 키 알고리즘은 고유한 역할 구분을 제공하고 키 관리가 더 쉽습니다. 봉투 암호화는 각 전략의 장점을 하나로 결합하게 해 줍니다.

암호화 작업

에서 AWS KMS암호화 작업은 KMS 키를 사용하여 데이터를 보호하는 API 작업입니다. KMS 키는 내에 유지되므로 암호화 작업에서 KMS 키를 AWS KMS 사용하려면 를 호출 AWS KMS해야 합니다.

KMS 키를 사용하여 암호화 작업을 수행하려면 AWS Command Line Interface , AWS SDKs(AWS CLI) 또는 를 사용합니다 AWS Tools for PowerShell. AWS KMS 콘솔에서 암호화 작업을 수행할 수 없습니다. 여러 프로그래밍 언어로 암호화 작업을 호출하는 예는 AWS KMS 사용에 대한 코드 예제 AWS SDKs 섹션을 참조하세요.

다음 표에는 AWS KMS 암호화 작업이 나열되어 있습니다. 또한 작업에 사용되는 키의 키 유형 및 KMS 키 사용 요구 사항도 보여줍니다.

Operation 키 유형 키 사용
Decrypt 대칭 또는 비대칭 ENCRYPT_DECRYPT
DeriveSharedSecret 비대칭 KEY_AGREEMENT
암호화 대칭 또는 비대칭 ENCRYPT_DECRYPT
GenerateDataKey 대칭 ENCRYPT_DECRYPT
GenerateDataKeyPair 대칭 [1]

사용자 지정 KMS 키 스토어의 키에서는 지원되지 않습니다.

ENCRYPT_DECRYPT
GenerateDataKeyPairWithoutPlaintext 대칭 [1]

사용자 지정 KMS 키 스토어의 키에서는 지원되지 않습니다.

ENCRYPT_DECRYPT
GenerateDataKeyWithoutPlaintext 대칭 ENCRYPT_DECRYPT
GenerateMac HMAC GENERATE_VERIFY_MAC
GenerateRandom 해당 없음. 이 작업은 KMS 키를 사용하지 않습니다. N/A
ReEncrypt 대칭 또는 비대칭 ENCRYPT_DECRYPT
Sign 비대칭 SIGN_VERIFY
Verify 비대칭 SIGN_VERIFY
VerifyMac HMAC GENERATE_VERIFY_MAC

[1] 대칭 암호화 키로 보호되는 비대칭 데이터 KMS 키 페어를 생성합니다.

암호화 작업과 관련한 권한에 대한 자세한 내용은 AWS KMS 권한를 참조하세요.

모든 사용자에게 AWS KMS 응답성과 높은 기능을 제공하기 위해 는 초당 호출되는 암호화 작업 수에 대한 할당량을 AWS KMS 설정합니다. 세부 정보는 암호화 작업에 대한 공유 할당량을 참조하세요.