KMS 키 생성 - AWS Key Management Service

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

KMS 키 생성

AWS Management Console에서 또는 CreateKey 작업 또는 AWS::KMS::Key AWS CloudFormation 리소스 를 사용하여 AWS KMS keys를 생성할 수 있습니다. 이 과정에서 KMS 키에 대한 키 정책을 설정할 수 있으며, 이 정책은 언제든지 변경할 수 있습니다. 또한 생성하는 KMS 키 유형을 정의하는 다음 값도 선택합니다. KMS 키가 생성된 후에는 이러한 속성을 변경할 수 없습니다.

KMS 키 유형

키 유형은 생성된 암호화 키 유형을 결정하는 속성입니다. AWS KMS는 데이터를 보호하기 위한 세 가지 키 유형을 제공합니다.

  • 고급 암호화 표준(AES) 대칭 키

    AES의 GCM(Galois Counter Mode) 모드에서 4KB 미만의 데이터에 대해 인증된 암호화/복호화를 제공하는 데 사용되는 256비트 키입니다. 이는 가장 일반적인 유형의 키이며 애플리케이션에서 사용되는 다른 데이터 암호화 키를 보호하는 데 사용되고 사용자를 대신하여 데이터를 암호화하는 AWS 서비스에 의해 사용됩니다.

  • RSA, 타원 곡선 또는 SM2(중국 리전만 해당) 비대칭 키

    이러한 키는 다양한 크기로 사용 가능하며 많은 알고리즘을 지원합니다. 이러한 키는 알고리즘 선택에 따라 암호화 및 복호화, 서명 및 확인 또는 공유 보안 비밀 작업에 사용할 수 있습니다.

  • 해시 기반 메시지 인증 코드(HMAC) 작업을 수행하기 위한 대칭 키

    이러한 키는 서명 및 확인 작업에 사용되는 256비트 키입니다.

    KMS 키는 서비스에서 일반 텍스트로 내보낼 수 없습니다. KMS 키는 서비스에서 사용하는 하드웨어 보안 모듈(HSM)에 의해 생성되고 해당 보안 모듈 내에서만 사용될 수 있습니다. 이는 키가 손상되지 않도록 하기 위한 AWS KMS의 기본 보안 속성입니다.

키 사용

키 사용은 키가 지원하는 암호화 작업을 결정하는 속성입니다. KMS 키는 ENCRYPT_DECRYPT, SIGN_VERIFY GENERATE_VERIFY_MAC 또는 KEY_AGREEMENT의 키 사용을 가질 수 있습니다. 각 KMS 키에는 하나의 키 사용만 있을 수 있습니다. 두 가지 이상의 작업 유형에 KMS를 사용하면 두 작업의 결과물이 공격에 더 취약해집니다.

키 사양

키 사양은 키의 암호화 구성을 나타내는 속성입니다. 키 사양의 의미는 키 유형에 따라 다릅니다.

KMS 키의 경우 키 사양은 KMS 키가 대칭인지 또는 비대칭인지 여부를 결정합니다. 또한 키 구성 요소의 유형과 지원하는 알고리즘을 결정합니다.

기본 키 사양인 SYMMETRIC_DEFAULT는 256비트 대칭 암호화 키를 나타냅니다. 지원되는 모든 키 사양에 대한 자세한 설명은 키 사양 참조 단원을 참조하세요.

키 구성 요소 오리진

키 구성 요소 오리진은 KMS 키에서 키 구성 요소의 소스를 식별하는 KMS 키 속성입니다. 키 구성 요소 오리진은 KMS 키를 생성할 때 선택하며 이후에는 변경할 수 없습니다. 키 구성 요소의 소스는 KMS 키의 보안, 내구성, 가용성, 지연 시간 및 처리량 특성에 영향을 미칩니다.

각 KMS 키는 메타데이터에 해당 키 구성 요소에 대한 참조를 포함합니다. 대칭 암호화 KMS 키의 키 구성 요소 오리진은 다를 수 있습니다. AWS KMS에서 생성하는 키 구성 요소, 사용자 지정 키 저장소에서 생성된 키 구성 요소를 사용하거나 고유한 키 구성 요소를 가져올 수 있습니다.

기본적으로 각 KMS 키에는 고유한 키 구성 요소가 있습니다. 그러나 동일한 키 구성 요소를 사용하여 다중 리전 키 집합을 생성할 수 있습니다

KMS 키에는 AWS_KMS, EXTERNAL(가져온 키 구성 요소 ), AWS_CLOUDHSM(AWS CloudHSM 키 저장소의 KMS 키 ) 또는 EXTERNAL_KEY_STORE(외부 키 저장소의 KMS 키) 중 하나의 키 구성 요소 오리진 값이 있을 수 있습니다.

KMS 키를 생성하기 위한 사용 권한

콘솔에서 또는 API를 사용하여 KMS 키를 생성하려면 IAM 정책에서 다음 권한이 있어야 합니다. 가능하면 조건 키를 사용하여 사용 권한을 제한합니다. 예를 들어 IAM 정책에서 kms:KeySpec 조건 키를 사용하여 보안 주체가 대칭 암호화 키만을 생성하도록 할 수 있습니다.

키를 생성하는 보안 주체에 대한 IAM 정책의 예는 사용자가 KMS 키를 생성하도록 허용 섹션을 참조하세요.

참고

보안 주체에게 태그 및 별칭을 관리할 수 있는 권한을 부여하는 데 주의해야 합니다. 태그 또는 별칭을 변경하면 고객 관리 키에 대한 권한을 허용하거나 거부할 수 있습니다. 자세한 내용은 AWS KMS의 ABAC 섹션을 참조하세요.

kms:PutKeyPolicy 권한은 KMS 키를 만드는 데 필요하지 않습니다. kms:CreateKey 권한에는 초기 키 정책을 설정할 수 있는 권한이 포함됩니다. 그러나 KMS 키에 대한 액세스를 제어할 수 있도록 KMS 키를 만드는 동안 이 권한을 키 정책에 추가해야 합니다. 또 다른 방법은 BypassLockoutSafetyCheck 파라미터를 사용하는 것이지만, 이는 사용하지 않는 것이 좋습니다.

KMS 키는 해당 키가 생성된 AWS 계정에 속합니다. KMS 키를 생성하는 IAM 사용자는 키 소유자로 간주되지 않으며, 사용자가 생성한 KMS 키를 사용하거나 관리할 수 있는 권한이 자동으로 부여되지 않습니다. 다른 보안 주체와 마찬가지로 키 생성자는 키 정책, IAM 정책 또는 권한 부여를 통해 허가를 받아야 합니다. 그러나, kms:CreateKey 권한이 있는 보안 주체는 초기 키 정책을 설정하고 키를 사용하거나 관리할 권한을 자신에게 부여할 수 있습니다.

생성할 KMS 키 유형 선택

생성할 KMS 키 유형은 주로 KMS 키 사용 계획, 보안 요구 사항 및 권한 부여 요구 사항에 따라 결정됩니다. KMS 키의 키 유형 및 키 사용에 따라 키가 수행할 수 있는 암호화 작업이 결정됩니다. 각 KMS 키에는 하나의 키 사용만 있습니다. 두 가지 이상의 작업 유형에 KMS를 사용하면 모든 작업의 결과물이 공격에 더 취약해집니다.

보안 주체가 특정 키 사용에 대해서만 KMS 키를 생성하도록 하려면 kms:KeyUsage 조건 키를 사용합니다. kms:KeyUsage 조건 키를 사용하여 보안 주체가 해당 키 사용을 기반으로 KMS 키에 대한 API 작업을 호출하도록 허용할 수도 있습니다. 예를 들어 키 사용이 SIGN_VERIFY인 경우에만 KMS 키를 비활성화할 수 있는 권한을 허용할 수 있습니다.

사용 사례에 따라 필요한 KMS 키 유형을 결정하려면 다음 지침을 따르세요.

암호화 및 해독

데이터 암호화 및 해독이 필요한 대부분의 사용 사례에는 대칭 KMS 키를 사용합니다. AWS KMS에서 사용하는 대칭 암호화 알고리즘은 빠르고 효율적이며 데이터의 기밀성과 신뢰성을 보장합니다. 또한 암호화 컨텍스트로 정의된 추가 인증 데이터(AAD)를 사용하는 인증된 암호화를 지원합니다. 이러한 유형의 KMS 키는 암호화된 데이터를 보낸 사람과 받는 사람 모두에게 AWS KMS를 호출할 수 있는 유효한 AWS 자격 증명이 있어야 합니다.

사용 사례에서 AWS KMS를 호출할 수 없는 사용자가 AWS 외부에서 암호화를 수행해야 하는 경우 비대칭 KMS 키를 선택하는 것이 좋습니다. 이러한 사용자가 데이터를 암호화할 수 있도록 비대칭 KMS 키의 퍼블릭 키를 배포할 수 있습니다. 또한 해당 데이터의 암호를 해독해야 하는 애플리케이션은 AWS KMS 내부에서 비대칭 KMS 키의 프라이빗 키를 사용할 수 있습니다.

메시지 서명 및 서명 확인

메시지에 서명하고 서명을 확인하려면 비대칭 KMS 키를 사용해야 합니다. RSA 키 페어, 타원 곡선(ECC) 키 페어 또는 SM2 키 페어를 나타내는 키 사양을 가진 KMS 키를 사용할 수 있습니다. 선택하는 키 사양은 사용하려는 서명 알고리즘에 따라 결정됩니다. ECC 키 페어에서 지원되는 ECDSA 서명 알고리즘이 RSA 서명 알고리즘보다 권장됩니다. 그러나 AWS 외부에서 서명을 확인하는 사용자를 지원하기 위해서는 특정 키 사양 및 서명 알고리즘을 사용해야 할 수 있습니다.

비대칭 키 페어로 암호화

비대칭 키 페어가 있는 데이터를 암호화하려면 비대칭 KMS 키RSA키 사양 또는 SM2 키 사양(중국 리전만 해당)과 함께 사용해야 합니다. AWS KMS에서 KMS 키 페어의 퍼블릭 키를 사용하여 데이터를 암호화하려면 암호화(Encrypt) 작업을 사용합니다. 또한 퍼블릭 키를 다운로드하여 AWS KMS 외부의 데이터를 암호화해야 하는 당사자와 공유할 수 있습니다.

비대칭 KMS의 퍼블릭 키를 다운로드하면 AWS KMS 외부에서 키를 사용할 수 있습니다. 그러나 더 이상 AWS KMS에서 KMS 키를 보호하는 보안 제어가 적용되지 않습니다. 예를 들어 AWS KMS 키 정책 또는 권한 부여를 사용하여 퍼블릭 키의 사용을 제어할 수 없습니다. 또한 키가 AWS KMS에서 지원하는 암호화 알고리즘을 사용하여 암호화 및 해독에만 사용되는지를 제어할 수 없습니다. 자세한 내용은 퍼블릭 키 다운로드 시 특별 고려 사항을 참조하세요.

AWS KMS 외부에서 퍼블릭 키로 암호화된 데이터를 해독하려면 Decrypt 작업을 호출합니다. 데이터가 SIGN_VERIFY의 키 사용으로 KMS 키의 퍼블릭 키에서 암호화된 경우 Decrypt 작업이 실패합니다. AWS KMS이 선택한 키 사양에 대해 지원하지 않는 알고리즘을 사용하여 암호화된 경우에도 실패합니다. 키 사양 및 지원되는 알고리즘에 대한 자세한 내용은 키 사양 참조 단원을 참조하세요.

이러한 오류를 방지하려면 AWS KMS 외부에서 퍼블릭 키를 사용하는 모든 사용자가 키 구성을 저장해야 합니다. AWS KMS 콘솔과 GetPublicKey 응답은 퍼블릭 키를 공유할 때 포함해야 하는 정보를 제공합니다.

공유 보안 비밀 도출

공유 비밀을 도출하려면 NIST 권장 타원 곡선 또는 SM2(중국 리전만 해당) 키 구성 요소가 있는 KMS 키를 사용합니다. AWS KMS는 ECDH(Elliptic Curve Cryptography Cofactor Diffie-Hellman Primitive)를 사용하여 타원 곡선 퍼블릭-프라이빗 키 페어에서 공유 비밀을 도출하여 두 피어 간의 키 계약을 수립합니다. DeriveSharedSecret 작업이 반환하는 원시 공유 보안 비밀을 사용하여 두 당사자 간에 전송되는 데이터를 암호화 및 복호화하거나 HMAC를 생성 및 확인할 수 있는 대칭 키를 도출할 수 있습니다. AWS KMS는 원시 공유 보안 비밀을 사용하여 대칭 키를 도출할 때 키 도출에 대한 NIST 권장 사항을 따를 것을 권장합니다.

HMAC 코드 생성 및 확인

해시 기반 메시지 인증 코드를 생성하고 확인하려면 HMAC 키를 사용합니다. AWS KMS에서 HMAC 키를 생성할 때, AWS KMS는 키 구성 요소를 생성 및 보호하고 키에 올바른 MAC 알고리즘을 사용하도록 보장합니다. HMAC 코드는 의사 난수로 사용할 수도 있으며 대칭 서명 및 토큰화를 위한 특정 시나리오에서도 사용할 수 있습니다.

HMAC KMS 키는 대칭 키입니다. AWS KMS 콘솔에서 HMAC KMS 키를 생성할 때, Symmetric 키 유형을 선택합니다.

AWS 서비스에 사용

AWS KMS와 통합된 AWS 서비스를 사용할 수 있도록 KMS 키를 생성하려면 서비스 설명서를 참조하세요. 데이터를 암호화하는 AWS 서비스에는 대칭 암호화 KMS 키가 필요합니다.

이러한 고려 사항 외에도 키 사양이 다른 KMS 키에 대한 암호화 작업에는 가격과 요청 할당량이 다릅니다. AWS KMS 요금에 대한 자세한 내용은 AWS Key Management Service 요금을 참조하세요. 요청 할당량에 대한 자세한 내용은 요청 할당량 섹션을 참조하세요.