특수 용도 키 - AWS Key Management Service

특수 용도 키

AWS Key Management Service(AWS KMS)는 다양한 용도로 여러 유형의 키를 지원합니다.

KMS에서 AWS KMS key을 생성할 때 기본적으로 대칭 암호화 KMS 키가 생성됩니다. AWS KMS에서 대칭 암호화 KMS 키는 암호화 및 복호화에 사용되는 256비트 키를 나타냅니다. 대칭 키 구성 요소는 AWS KMS를 암호화되지 않은 상태로 두지 않습니다. 작업에 비대칭 암호화 또는 HMAC 키가 명시적으로 필요한 경우가 아니면 AWS KMS를 암호화하지 않은 상태로 두지 않는 대칭 암호화 KMS 키를 사용하는 것이 좋습니다. 또한 AWS KMS와 통합되는 AWS 서비스는 대칭 암호화 KMS 키만을 사용하여 데이터를 암호화합니다. 이러한 서비스는 비대칭 KMS 키를 사용한 암호화를 지원하지 않습니다.

AWS KMS의 대칭 암호화 KMS를 사용하여 데이터를 암호화, 복호화 및 다시 암호화하고, 데이터 키 및 데이터 키 페어를 생성하고, 임의의 바이트 문자열을 생성할 수 있습니다. 대칭 암호화 KMS 키로 자체 키 구성 요소를 가져오고 사용자 지정 키 스토어에서 대칭 암호화 KMS 키를 생성할 수 있습니다. 대칭 및 비대칭 KMS에서 수행할 수 있는 작업을 비교하는 표는 키 유형 참조 단원을 참조하세요.

AWS KMS는 다음과 같은 특수 용도 KMS 키 유형도 지원합니다.

KMS 키 유형 선택

AWS KMS는 대칭 암호화 키, 대칭 HMAC 키, 비대칭 암호화 키 및 비대칭 서명 키 등 여러 유형의 KMS 키를 지원합니다.

KMS 키는 서로 다른 암호화 키 구성 요소가 포함되어 있기 때문에 다릅니다.

  • 대칭 암호화 KMS 키: AWS KMS를 암호화되지 않은 상태로 두지 않는 단일 256비트 보안 암호화 키를 나타냅니다. 대칭 암호화 KMS 키를 사용하려면 AWS KMS를 호출해야 합니다.

    기본 KMS 키인 대칭 암호화 키는 대부분의 용도에 적합합니다. AWS 서비스에서 데이터를 보호하기 위해 KMS 키가 필요한 경우 다른 유형의 키를 사용하라는 지시가 없는 한 대칭 암호화 키를 사용합니다.

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

  • HMAC KMS 키(대칭): 해시 기반 메시지 인증 코드를 생성하고 확인하는 데 사용되는 다양한 길이의 대칭 키를 나타냅니다. HMAC KMS 키의 키 구성 요소는 AWS KMS를 암호화되지 않은 상태로 두지 않습니다. HMAC KMS 키를 사용하려면 AWS KMS를 호출해야 합니다.

 

생성할 KMS 키 유형은 주로 KMS 키 사용 계획, 보안 요구 사항 및 권한 부여 요구 사항에 따라 결정됩니다. KMS 키를 생성할 때 키 사양 및 키 사용을 포함한 KMS 키의 암호화 구성은 KMS 키를 생성할 때 설정되며 변경할 수 없습니다.

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

암호화 및 복호화

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

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

메시지 서명 및 서명 확인

메시지에 서명하고 서명을 확인하려면 비대칭 KMS 키를 사용해야 합니다. RSA 키 페어 또는 타원 곡선(ECC) 키 페어를 나타내는 키 사양을 가진 KMS 키를 사용할 수 있습니다. 선택하는 키 사양은 사용하려는 서명 알고리즘에 따라 결정됩니다. 서명을 확인하는 사용자가 AWS 사용자가 아니고 확인 작업을 호출할 수 없는 경우가 있습니다. 이러한 경우에는 해당 사용자가 로컬 애플리케이션에서 지원할 수 있는 서명 알고리즘과 관련된 키 사양을 선택합니다.

퍼블릭 키 암호화 수행

퍼블릭 키 암호화를 수행하려면 비대칭 KMS 키RSA 키 사양과 함께 사용해야 합니다. 타원 곡선(ECC) 키 사양은 퍼블릭 키 암호화에 사용할 수 없습니다. AWS KMS에서 RSA KMS 키의 퍼블릭 키를 사용하여 데이터를 암호화하려면 암호화(Encrypt) 작업을 사용합니다. 또한 퍼블릭 키를 다운로드하여 AWS KMS 외부의 데이터를 암호화해야 하는 당사자와 공유할 수 있습니다.

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

AWS KMS 외부에서 퍼블릭 키로 암호화된 데이터를 해독하려면 Decrypt 작업을 호출합니다. 데이터가 SIGN_VERIFY키 사용으로 KMS 키의 퍼블릭 키에서 암호화된 경우 Decrypt 작업이 실패합니다. AWS KMS이 RSA KMS 키에 대해 지원하지 않는 알고리즘을 사용하여 암호화된 경우에도 실패합니다.

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

HMAC 코드 생성 및 확인

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

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

참고

HMAC KMS 키는 일부 AWS 리전에서 지원되지 않습니다. HMAC KMS 키가 지원되는 리전의 목록은 HMAC 리전 단원을 참조하세요.

AWS 서비스 사용

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

이러한 고려 사항 이외에도 키 사양이 다른 KMS 키는 요금 및 요청 할당량이 다릅니다. AWS KMS 요금에 대한 자세한 내용은 AWS Key Management Service 요금을 참조하세요. 요청 할당량에 대한 자세한 내용은 요청 할당량 단원을 참조하세요.

키 사용 선택

KMS 키의 키 사용에 따라 KMS 키가 암호화 및 복호화 또는 서명 및 서명 확인 또는 HMAC 태그 생성 및 확인에 사용되는지가 결정됩니다. 각 KMS 키에는 하나의 키 사용만 있습니다. 두 가지 이상의 작업 유형에 KMS를 사용하면 모든 작업의 결과물이 공격에 더 취약해집니다.

다음 표와 같이 대칭 암호화 KMS 키는 암호화 및 복호화에만 사용할 수 있습니다. HMAC KMS 키는 HMAC 코드를 생성하고 확인하는 데에만 사용할 수 있습니다. 타원 곡선(ECC) KMS 키는 서명 및 확인에만 사용할 수 있습니다. RSA KMS 키에서만 키 사용 결정을 해야 합니다.

KMS 키 유형에 유효한 키 사용
KMS 키 유형 암호화 및 복호화

ENCRYPT_DECRYPT

서명 및 확인

SIGN_VERIFY

HMAC 생성 및 확인

GENERATE_VERIFY_MAC

대칭 암호화 KMS 키
HMAC KMS 키(대칭)
RSA 키 페어가 있는 비대칭 KMS 키
ECC 키 페어가 있는 비대칭 KMS 키

AWS KMS 콘솔에서 먼저 키 유형(대칭 또는 비대칭)을 선택한 다음, 키 사용을 선택합니다. 선택한 키 유형에 따라 표시되는 키 사용 옵션이 결정됩니다. 선택한 키 사용에 따라 표시되는 키 사양(있는 경우)이 결정됩니다.

AWS KMS 콘솔에서 키 사용을 선택하려면

  • 대칭 암호화 KMS 키(기본값)의 경우 암호화 및 복호화(Encrypt and decrypt)를 선택합니다.

  • HMAC KMS 키의 경우 MAC 생성 및 확인(Generate and verify MAC)을 선택합니다.

    참고

    HMAC KMS 키는 일부 AWS 리전에서 지원되지 않습니다. HMAC KMS 키가 지원되는 리전의 목록은 HMAC 리전 단원을 참조하세요.

  • 타원 곡선(ECC) 키 구성 요소가 있는 비대칭 KMS의 경우 서명 및 확인(Sign and verify)을 선택합니다.

  • RSA 키 구성 요소가 있는 비대칭 KMS 키의 경우 암호화 및 복호화(Encrypt and decrypt) 또는 서명 및 확인(Sign and verify)을 선택합니다.

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

키 사양 선택

비대칭 KMS 또는 HMAC KMS 키를 생성할 때 키 사양(key spec)을 선택합니다. 모든 AWS KMS key의 속성인 키 사양(key spec)은 KMS 키의 암호화 구성을 나타냅니다. 키 사양은 KMS 키를 생성할 때 선택하며 이후에는 변경할 수 없습니다. 잘못된 키 사양을 선택한 경우 KMS 키를 삭제하고 새 KMS를 생성합니다.

참고

KMS 키의 키 사양은 “고객 마스터 키 사양”으로 알려졌습니다. CreateKey 작업의 CustomerMasterKeySpec 파라미터는 더 이상 사용되지 않습니다. 대신 KeySpec 파라미터를 사용합니다. CreateKeyDescribeKey 작업의 응답에는 값이 동일한 KeySpecCustomerMasterKeySpec 멤버를 포함합니다.

키 사양에 따라 KMS 키의 대칭 또는 비대칭 여부, KMS 키의 키 구성 요소 유형, 암호화 알고리즘, 서명 알고리즘 또는 AWS KMS가 KMS 키에 대해 지원하는 메시지 인증 코드(MAC) 알고리즘이 결정됩니다. 선택하는 키 사양은 일반적으로 사용 사례 및 규정 요구 사항에 따라 결정됩니다.

계정의 보안 주체가 KMS 키에 사용할 수 있는 키 사양을 결정하려면 kms:KeySpec 조건 키를 사용합니다.

AWS KMS는 KMS 키에 대해 다음과 같은 키 사양을 지원합니다.

참고

HMAC KMS 키는 일부 AWS 리전에서 지원되지 않습니다. HMAC KMS 키가 지원되는 리전의 목록은 HMAC 리전 단원을 참조하세요.

대칭 암호화 키 사양(기본값)
  • SYMMETRIC_DEFAULT

HMAC 키 사양
  • HMAC_224

  • HMAC_256

  • HMAC_384

  • HMAC_512

RSA 키 사양(암호화 및 복호화 또는 서명 및 확인)
  • RSA_2048

  • RSA_3072

  • RSA_4096

타원 곡선 키 사양
  • 비대칭 NIST 권장 타원 곡선 키 페어(서명 및 확인)

    • ECC_NIST_P256(secp256r1)

    • ECC_NIST_P384(secp384r1)

    • ECC_NIST_P521(secp521r1)

  • 기타 비대칭 타원 곡선 키 페어(서명 및 확인)

    • ECC_SECG_P256K1(secp256k1), 일반적으로 암호 화폐에 사용됨.