AWS KMS 개념 - AWS Key Management Service

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

AWS KMS 개념

AWS Key Management Service (AWS KMS) 에서 사용되는 기본 용어와 개념을 알아보고 이러한 용어와 개념을 함께 사용하여 데이터를 보호하는 방법을 알아보세요.

AWS KMS keys

AWS KMS keys (KMS 키) 는 의 기본 리소스입니다. AWS KMS KMS 키를 사용하여 데이터를 암호화, 해독 및 다시 암호화할 수 있습니다. 외부에서 사용할 수 있는 데이터 키를 생성할 수도 있습니다. AWS KMS일반적으로 대칭 암호화 KMS 키를 사용하지만 암호화 또는 서명에 비대칭 KMS 키를 생성하여 사용하고 HMAC 태그 생성 및 확인에 HMAC KMS 키를 사용할 수 있습니다.

참고

AWS KMS 고객 마스터 키 (CMK) 라는 용어를 KMS 키로 AWS KMS key대체합니다. 단, 개념은 바뀌지 않았습니다. 주요 변경을 방지하기 위해 에서는 이 AWS KMS 용어의 일부 변형을 유지하고 있습니다.

AWS KMS key는 암호화 키를 논리적으로 표현한 것입니다. KMS 키에는 키 ID, 키 사양, 키 사용, 생성 날짜, 설명 및 키 상태와 같은 메타데이터가 포함됩니다. 무엇보다도 KMS 키로 암호화 작업을 수행할 때 사용되는 키 구성 요소에 대한 참조가 포함됩니다.

AWS KMS FIPS 검증 하드웨어 보안 모듈에서 생성된 암호화 키 자료를 사용하여 KMS 키를 생성할 수 있습니다. 대칭 KMS 키의 키 구성 요소와 비대칭 KMS 키의 프라이빗 키는 AWS KMS 를 암호화되지 않은 상태로 두지 않습니다. KMS 키를 사용하거나 관리하려면 AWS KMS를 사용해야 합니다. 키 생성 및 관리에 대한 자세한 내용은 키 관리 섹션을 참조하세요. KMS 키 사용에 대한 자세한 내용은 AWS Key Management Service API 참조를 참조하세요.

기본적으로 KMS 키의 키 구성 요소를 AWS KMS 생성합니다. 이 키 구성 요소를 추출, 내보내기, 보기 또는 관리할 수 없습니다. 유일한 예외는 비대칭 키 쌍의 퍼블릭 키이며 이는 AWS외부에서 사용하기 위해 내보낼 수 있습니다. 또한 이 키 구성 요소를 삭제할 수 없으며 KMS 키를 삭제해야 합니다. 하지만 자체 키 구성 요소를 KMS 키로 가져오거나 사용자 지정 키 스토어를 사용하여 AWS CloudHSM 클러스터의 키 구성 요소를 사용하거나 외부에서 소유하고 관리하는 외부 키 관리자의 키 구성 요소를 사용하는 KMS 키를 만들 수 있습니다. AWS

AWS KMS 또한 한 곳에서 AWS 리전 데이터를 암호화하고 다른 곳에서 해독할 수 있는 다중 지역 키도 지원합니다. AWS 리전

키 생성 및 관리에 대한 자세한 내용은 키 관리 섹션을 참조하세요. KMS 키 사용에 대한 자세한 내용은 AWS Key Management Service API 참조를 참조하세요.

고객 키 및 키 AWS

사용자가 생성하는 KMS 키는 고객 관리형 키입니다. KMS 키를 사용하여 서비스 리소스를 암호화하는 AWS 서비스 는 종종 사용자를 위해 키를 만듭니다. AWS 계정에서 AWS 서비스 생성하는 KMS 키는 다음과 같습니다. AWS 관리형 키 서비스 계정에서 AWS 서비스 생성하는 KMS 키는 다음과 같습니다. AWS 소유 키

KMS 키의 유형 KMS 키 메타데이터 보기 가능 KMS 키 관리 가능 내 용도로만 사용 AWS 계정 자동 회전 요금
고객 관리형 키 선택 사항입니다. 매년(약 365일)

월 요금(시간당 비례 배분)

사용량 기준 요금

AWS 관리형 키 아니요 필수 사항입니다. 매년(약 365일)

월 요금 없음

사용별 요금 (일부는 이 요금을 대신 AWS 서비스 지불함)

AWS 소유 키 아니요 아니요 아니요 다양 요금 없음

AWS 통합되는 서비스는 KMS 키에 대한 지원 측면에서 AWS KMS다릅니다. 일부 AWS 서비스는 기본적으로 a AWS 소유 키 또는 an을 사용하여 데이터를 암호화합니다. AWS 관리형 키일부 AWS 서비스는 고객 관리 키를 지원합니다. 다른 AWS 서비스에서는 모든 유형의 KMS 키를 지원하므로 고객 관리 키를 쉽게 식별하거나 제어할 수 있습니다. AWS 소유 키 AWS 관리형 키 AWS 서비스가 제공하는 암호화 옵션에 대한 자세한 내용은 사용 설명서의 저장 중 암호화 주제 또는 해당 서비스의 개발자 안내서를 참조하십시오.

고객 관리형 키

사용자가 생성하는 KMS 키는 고객 관리형 키입니다. 고객 관리 키는 AWS 계정 사용자가 만들고 소유하고 관리하는 KMS 키입니다. 사용자는 키 정책, IAM 정책 및 권한 부여의 설정 및 유지 관리, 활성화 및 비활성화, 암호화 구성 요소 교체, 태그 추가, KMS 키를 가리키는 별칭 생성, KMS 키 삭제 예약 등을 포함해 이러한 KMS 키에 대한 완전한 제어 권한을 가집니다.

고객 관리형 키는 AWS KMS에 대한 AWS Management Console 의 고객 관리형 키 페이지에 나타납니다. 고객 관리 키를 확실하게 식별하려면 작업을 사용하십시오. DescribeKey 고객 관리형 키에서는 DescribeKey 응답의 KeyManager 필드 값이 CUSTOMER입니다.

암호화 작업에서 사용자 관리형 키를 사용하고 AWS CloudTrail 로그에서 사용을 감사할 수 있습니다. 뿐만 아니라 AWS KMS에 통합된 다양한AWS 서비스 덕분에 사용자를 위해 저장 및 관리하는 데이터를 보호하도록 고객 관리형 키를 지정할 수 있습니다.

고객 관리형 키는 매달 요금이 발생하며, 프리 티어를 초과해서 사용한 만큼 요금이 부과됩니다. 계정 AWS KMS 할당량에 반영됩니다. 자세한 내용은 AWS Key Management Service 요금할당량 섹션을 참조하세요.

AWS 관리형 키

AWS 관리형 키와 통합된 AWS 서비스에서 사용자를 대신하여 생성, 관리 및 사용되는 계정의 KMS 키입니다. AWS KMS

일부 AWS 서비스에서는 사용자가 직접 AWS 관리형 키 또는 고객 관리형 키를 선택하여 해당 서비스의 리소스를 보호할 수 있습니다. 일반적으로 리소스를 보호하는 암호화 키를 제어해야 하는 경우가 아니라면 an을 AWS 관리형 키 사용하는 것이 좋습니다. 키 또는 키 정책을 만들거나 유지할 필요가 없으며 AWS 관리형 키에 대한 월 요금도 없습니다.

AWS 관리형 키계정에서 키를 보고, 키 정책을 보고, AWS CloudTrail 로그에서의 키 사용을 감사할 수 있는 권한이 있습니다. 하지만 속성을 변경하거나, 속성을 교체하거나 AWS 관리형 키, 키 정책을 변경하거나, 삭제 일정을 예약할 수는 없습니다. AWS 관리형 키 또한 암호화 작업에 직접 사용할 수는 없으며, 이를 생성하는 서비스가 사용자 대신 사용합니다.

AWS 관리형 키 양식 AWS 관리형 키페이지에 AWS Management Console 표시하십시오. AWS KMS다음과 같은 형식을 aws/service-name 가진 별칭으로도 AWS 관리형 키 식별할 수 있습니다. aws/redshift 을 확실하게 식별하려면 AWS 관리형 키작업을 사용하십시오. DescribeKey AWS 관리형 키에서는 DescribeKey 응답의 KeyManager 필드 값이 AWS입니다.

모두 AWS 관리형 키 매년 자동으로 교체됩니다. 이 교체 일정은 변경할 수 없습니다.

참고

2022년 5월에 순환 일정을 3년마다 (약 1,095일) AWS 관리형 키 에서 매년 (약 365일) 로 AWS KMS 변경했습니다.

새 AWS 관리형 키 항목은 생성된 지 1년이 지나면 자동으로 교체되며, 그 이후에는 거의 매년 교체됩니다.

기존 AWS 관리형 키 항목은 가장 최근 순환 이후 1년 후에 자동으로 교체되며, 그 이후에는 매년 자동으로 교체됩니다.

에 대한 월 사용료는 없습니다. AWS 관리형 키프리 티어를 초과하여 사용할 경우 요금이 부과될 수 있지만 일부 AWS 서비스에서는 이러한 비용을 대신 부담해 줍니다. 자세한 내용은 서비스에 대한 사용 설명서 또는 개발자 안내서의 저장 시 암호화 주제를 참조하세요. 자세한 내용은 AWS Key Management Service 요금을 참조하세요.

AWS 관리형 키 계정 내 각 지역의 KMS 키 수를 리소스 할당량에 포함시키지 마세요. 그러나 계정의 보안 주체 대신 사용되는 KMS 키는 요청 할당량에 포함됩니다. 자세한 내용은 할당량 섹션을 참조하세요.

AWS 소유 키

AWS 소유 키 AWS 서비스는 여러 곳에서 사용할 수 있도록 소유하고 관리하는 KMS 키 모음입니다. AWS 계정사용자 AWS 소유 키 AWS 계정계정에는 없지만 AWS 서비스는 을 사용하여 계정의 리소스를 보호할 수 있습니다. AWS 소유 키

일부 AWS 서비스에서는 사용자 AWS 소유 키 또는 고객 관리 키를 선택할 수 있습니다. 일반적으로 리소스를 보호하는 암호화 키를 감사하거나 제어해야 하는 경우가 아니라면 선택하는 AWS 소유 키 것이 좋습니다. AWS 소유 키 완전히 무료이며 (월 사용료 또는 사용료 없음), 계정 AWS KMS 할당량에 포함되지 않으며 사용하기 쉽습니다. 키 또는 키 정책을 만들거나 유지하지 않아도 됩니다.

로테이션은 AWS 소유 키 서비스마다 다릅니다. 특정 AWS 소유 키로테이션에 대한 자세한 내용은 해당 서비스의 사용 설명서 또는 개발자 가이드에서 유휴 시 암호화 항목을 참조하십시오.

대칭 암호화 KMS 키

새로 AWS KMS key만들면 기본적으로 대칭 암호화를 위한 KMS 키가 생성됩니다. 이것은 기본적이고 가장 일반적으로 사용되는 KMS 키 유형입니다.

에서 AWS KMS대칭 암호화 KMS 키는 256비트 AES-GCM 암호화 키를 나타냅니다. 단, 중국 지역에서는 128비트 SM4 암호화 키를 나타냅니다. 대칭 AWS KMS 키 자료는 암호화되지 않은 상태로 유지되지 않습니다. 대칭 암호화 KMS 키를 사용하려면 를 호출해야 합니다. AWS KMS대칭 암호화 키는 대칭 암호화에 사용되며 동일한 키가 암호화 및 해독에 사용됩니다. 작업에 비대칭 암호화가 명시적으로 필요한 경우가 아니면 AWS KMS 를 암호화하지 않은 상태로 두지 않는 대칭 암호화 KMS 키를 사용하는 것이 좋습니다.

AWS 와 통합된 서비스는 대칭 암호화 KMS 키만 AWS KMS사용하여 데이터를 암호화합니다. 이러한 서비스는 비대칭 KMS 키를 사용한 암호화를 지원하지 않습니다. KMS 키가 대칭 또는 비대칭인지 여부를 확인하는 방법은 비대칭 KMS 키 식별 섹션을 참조하세요.

기술적으로 대칭 키의 키 사양은 SYMMETRIC_DEFAULT, 키 사용량은 ENCRYPT_DECRYPT이고, 암호화 알고리즘은 SYMMETRIC_DEFAULT입니다. 자세한 내용은 SYMMETRIC_DEFAULT 키 사양 섹션을 참조하세요.

대칭 암호화 KMS 키를 사용하여 데이터를 암호화, 복호화 및 재암호화하고 데이터 키와 데이터 키 쌍을 생성할 수 있습니다. AWS KMS 다중 리전 대칭 암호화 KMS 키를 생성하고, 대칭 암호화 KMS 키로 자체 키 구성 요소를 가져오고, 사용자 지정 키 스토어에서 대칭 암호화 KMS 키를 생성할 수 있습니다. 유형별 KMS 키에 대해 수행할 수 있는 작업을 비교하는 표는 키 유형 참조 섹션을 참조하세요.

비대칭 KMS 키

AWS KMS에서 비대칭 KMS를 생성할 수 있습니다. 비대칭 KMS 키는 수학적으로 관련된 퍼블릭 키 및 프라이빗 키 페어를 나타냅니다. 개인 키는 암호화되지 않은 상태로 유지되지 않습니다. AWS KMS 개인 키를 사용하려면 전화를 AWS KMS걸어야 합니다. AWS KMS API 작업을 AWS KMS 호출하여 공개 키를 사용할 수도 있고, 공개 키를 다운로드하여 외부에서 사용할 수도 AWS KMS있습니다. 다중 리전 비대칭 KMS 키를 생성할 수도 있습니다.

RSA 키 페어, 타원 커브 키 페어 또는 SM2 키 페어를 나타내는 비대칭 KMS 키를 생성할 수 있습니다 (중국 지역만 해당). KMS 키와 RSA 키 페어는 데이터를 암호화 또는 해독하거나 메시지를 서명 및 확인하는 데 사용할 수 있지만 둘 다 사용할 수는 없습니다. NIST 권장 타원 곡선 키 쌍이 있는 KMS 키는 메시지를 서명 및 확인하거나 공유 암호를 도출하는 데 사용할 수 있지만 둘 다 사용할 수는 없습니다. ECC_SECG_P256K1키 페어가 있는 KMS 키는 메시지 서명 및 확인에만 사용할 수 있습니다. SM2 (중국 지역만 해당) 키 페어가 있는 KMS 키는 데이터를 암호화 및 해독하고, 메시지에 서명 및 확인하거나, 공유 암호를 추출하는 데 사용할 수 있습니다 (하나의 키 사용 유형을 선택해야 함).

비대칭 KMS 키의 생성 및 사용에 대한 자세한 내용은 비대칭 키 입력 AWS KMS 섹션을 참조하세요.

HMAC KMS 키

HMAC KMS 키는 해시 기반 메시지 인증 코드(HMAC)를 생성하고 확인하는 데 사용되는 다양한 길이의 대칭 키를 나타냅니다. HMAC 키의 키 자료는 암호화되지 않은 상태로 유지되지 않습니다. AWS KMS HMAC 키를 사용하려면 GenerateMac 또는 VerifyMac API 작업을 호출합니다.

다중 리전 HMAC KMS 키를 생성할 수도 있습니다.

HMAC KMS 키의 생성 및 사용에 대한 자세한 내용은 AWS KMS의 HMAC 키 섹션을 참조하세요.

데이터 키

데이터 키는 많은 양의 데이터 및 기타 데이터 암호화 키를 포함하여 데이터를 암호화하는 데 사용할 수 있는 대칭 키입니다. 다운로드할 수 없는 대칭 KMS 키와 달리 데이터 키는 외부에서 사용할 수 있도록 사용자에게 반환됩니다. AWS KMS

데이터 키를 AWS KMS 생성하면 즉시 사용할 수 있는 일반 텍스트 데이터 키 (선택 사항) 와 데이터와 함께 안전하게 저장할 수 있는 데이터 키의 암호화된 사본을 반환합니다. 데이터를 해독할 준비가 되면 먼저 암호화된 데이터 키의 암호를 AWS KMS 해독하도록 요청합니다.

AWS KMS 데이터 키를 생성, 암호화 및 복호화합니다. 하지만 데이터 키를 저장, 관리 또는 추적하거나 데이터 키를 사용하여 암호화 작업을 AWS KMS 수행하지는 않습니다. 외부에서 데이터 키를 사용하고 관리해야 합니다. AWS KMS데이터 키를 안전하게 사용하는 데 도움이 필요하면 AWS Encryption SDK 섹션을 참조하세요.

데이터 키 생성

데이터 키를 만들려면 GenerateDataKey작업을 호출하십시오. AWS KMS 데이터 키를 생성합니다. 그런 다음 KMS가 사용자에 의해 지정된 대칭 암호화 KMS 키로 데이터 키의 복사본을 암호화합니다. 이 작업은 데이터 키의 일반 텍스트 복사본과 KMS 키로 암호화된 데이터 키 복사본을 반환합니다. 다음 그림은 이 작업을 보여 줍니다.

데이터 키 생성

AWS KMS 암호화된 데이터 키만 반환하는 GenerateDataKeyWithoutPlaintext작업도 지원합니다. 데이터 키를 사용해야 하는 경우 암호 AWS KMS 해독을 요청하십시오.

데이터 키로 데이터 암호화

AWS KMS 데이터 키를 사용하여 데이터를 암호화할 수 없습니다. 하지만 OpenSSL 또는 AWS Encryption SDK 같은 암호화 라이브러리를 사용하여 AWS KMS외부에서 데이터 키를 사용할 수 있습니다.

일반 텍스트 데이터 키를 사용하여 데이터를 암호화한 다음에는 가능한 빨리 메모리에서 제거하세요. 데이터 암호화를 해제하는 데 사용할 수 있도록 암호화된 데이터와 함께 암호화된 데이터 키를 안전하게 저장할 수 있습니다.

외부에서 사용자 데이터를 암호화하십시오. AWS KMS

데이터 키로 데이터 해독

데이터를 해독하려면 암호화된 데이터 키를 암호 해독 작업에 전달하십시오. AWS KMS KMS 키를 사용하여 데이터 키를 해독한 다음 일반 텍스트 데이터 키를 반환합니다. 일반 텍스트 데이터 키를 사용하여 데이터를 해독한 다음, 가능한 빨리 메모리에서 일반 텍스트 데이터 키를 제거하세요.

다음 다이어그램은 Decrypt 작업을 사용하여 암호화된 데이터 키를 암호화 해제하는 방법을 보여줍니다.

데이터 키 해독

사용할 수 없는 KMS 키가 데이터 키에 미치는 영향

KMS 키를 사용할 수 없게 되면 효과는 거의 즉각적으로 나타납니다(최종 일관성에 따라 다름). KMS 키의 키 상태는 새로운 조건을 반영하도록 변경되며 암호화 작업에서 KMS 키를 사용하려는 모든 요청은 실패합니다.

그러나 KMS 키로 암호화된 데이터 키와 데이터 키로 암호화된 데이터에 미치는 영향은 데이터 키 복호화 등을 위해 KMS 키를 다시 사용할 때까지 지연됩니다.

수행할 수 있는 다음 작업을 포함하여 다양한 이유로 KMS 키를 사용할 수 없게 될 수 있습니다.

이 효과는 서비스에서 관리하는 리소스를 보호하기 위해 데이터 키를 AWS 서비스 사용하는 많은 기업에서 특히 중요합니다. 다음 예제에서는 Amazon Elastic Block Store(Amazon EBS)와 Amazon Elastic Compute Cloud(Amazon EC2)를 사용합니다. AWS 서비스 사용 데이터 키에 따라 방식이 다릅니다. 자세한 내용은 AWS 서비스에 대한 보안 장의 데이터 보호 섹션을 참조하세요.

예를 들어 다음 시나리오를 고려해 보십시오.

  1. 암호화된 EBS 볼륨을 생성하고 KMS 키를 지정하여 보호합니다. Amazon EBS는 KMS 키를 사용하여 볼륨의 암호화된 데이터 키를 AWS KMS 생성하도록 요청합니다. Amazon EBS는 볼륨의 메타데이터와 함께 암호화된 데이터 키를 저장합니다.

  2. EC2 인스턴스에 EBS 볼륨을 연결하면 Amazon EC2는 KMS 키를 사용하여 EBS 볼륨의 암호화된 데이터 키를 복호화합니다. Amazon EC2는 EBS 볼륨에 대한 모든 디스크 I/O를 암호화하는 역할을 하는 Nitro 하드웨어의 데이터 키를 사용합니다. EBS 볼륨이 EC2 인스턴스에 연결되어 있는 동안 데이터 키는 Nitro 하드웨어에 유지됩니다.

  3. KMS 키를 사용할 수 없게 하는 작업을 수행합니다. 이로 인해 EC2 인스턴스나 EBS 볼륨에 즉시 영향이 미치지 않습니다. Amazon EC2는 KMS 키가 아닌 데이터 키를 사용하여 볼륨이 인스턴스에 연결되어 있는 동안 모든 디스크 I/O를 암호화합니다.

  4. 단, 암호화된 EBS 볼륨이 EC2 인스턴스에서 삭제되면 Amazon EBS는 데이터 키를 Nitro 하드웨어에서 제거합니다. 다음에 암호화된 EBS 볼륨을 EC2 인스턴스에 연결할 때 Amazon EBS가 KMS 키를 사용하여 볼륨의 암호화된 데이터 키를 해독하지 못하므로 연결에 실패합니다. EBS 볼륨을 다시 사용하려면 KMS 키를 다시 사용할 수 있게 만들어야 합니다.

데이터 키 페어

데이터 키 페어는 수학적으로 관련된 퍼블릭 키와 프라이빗 키로 구성된 비대칭 데이터 키입니다. 클라이언트 측 암호화 및 복호화 또는 외부 서명 및 확인에 사용하도록 설계되었습니다. AWS KMS

OpenSSL과 같은 도구가 생성하는 데이터 키 쌍과 달리, 사용자가 지정하는 대칭 암호화 KMS 키로 각 데이터 키 쌍의 개인 키를 AWS KMS 보호합니다. AWS KMS 하지만 데이터 키 쌍을 저장, 관리 또는 추적하거나 데이터 키 쌍을 사용하여 암호화 작업을 AWS KMS 수행하지는 않습니다. 따라서 AWS KMS외부에서 데이터 키를 사용하고 관리해야 합니다.

AWS KMS 다음 유형의 데이터 키 쌍을 지원합니다.

  • RSA 키 페어: RSA_2048, RSA_3072, RSA_4096

  • 타원 곡선 키 페어, ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521, ECC_SECG_P256K1

  • SM 키 페어(중국 리전 전용): SM2

일반적으로 선택할 데이터 키 페어의 유형은 사용 사례 또는 규정 요구 사항에 따라 다릅니다. 대부분의 인증서에는 RSA 키가 필요합니다. 타원 곡선 키는 디지털 서명이나 공유 암호 도출에 주로 사용됩니다. ECC_SECG_P256K1 키는 일반적으로 암호화폐에 사용됩니다. AWS KMS 서명에는 ECC 키 쌍을 사용하고 암호화나 서명에는 RSA 키 쌍을 사용하되 둘 다 사용하지 않는 것이 좋습니다. 그러나 외부에서 사용하는 데이터 키 쌍에 대해서는 어떠한 제한도 적용할 AWS KMS 수 없습니다. AWS KMS

데이터 키 페어 생성

데이터 키 쌍을 만들려면 GenerateDataKeyPair또는 GenerateDataKeyPairWithoutPlaintext작업을 호출합니다. 프라이빗 키를 암호화하는 데 사용할 대칭 암호화 KMS 키를 지정합니다.

GenerateDataKeyPair는 일반 텍스트 퍼블릭 키, 일반 텍스트 프라이빗 키 및 암호화된 프라이빗 키를 반환합니다. 디지털 서명을 생성하는 경우와 같이 일반 텍스트 프라이빗 키가 즉시 필요할 때 이 작업을 사용합니다.

GenerateDataKeyPairWithoutPlaintext는 일반 텍스트 퍼블릭 키 및 암호화된 프라이빗 키를 반환하지만 일반 텍스트 프라이빗 키는 반환하지 않습니다. 퍼블릭 키로 암호화하는 경우와 같이 일반 텍스트 프라이빗 키가 즉시 필요하지 않은 경우 이 작업을 사용합니다. 나중에 데이터를 암호 해독하기 위해 일반 텍스트 프라이빗 키가 필요할 때 Decrypt 작업을 호출 할 수 있습니다.

다음 그림은 GenerateDataKeyPair 작업을 보여 줍니다. GenerateDataKeyPairWithoutPlaintext 작업은 일반 텍스트 프라이빗 키를 생략합니다.

데이터 키 페어 생성

데이터 키 페어로 데이터 암호화

데이터 키 페어를 사용하여 암호화하는 경우 해당 페어의 퍼블릭 키를 사용하여 데이터를 암호화하고 동일한 페어의 프라이빗 키를 사용하여 데이터를 해독합니다. 일반적으로 데이터 키 페어는 많은 당사자가 프라이빗 키를 보유한 당사자만 해독할 수 있는 데이터를 암호화해야 할 때 사용됩니다.

퍼블릭 키가 있는 당사자는 다음 다이어그램과 같이 해당 키를 사용하여 데이터를 암호화합니다.

외부 데이터 키 쌍의 공개 키로 사용자 데이터를 암호화합니다. AWS KMS

데이터 키 페어로 데이터 암호 해독

데이터를 암호 해독하려면 데이터 키 페어의 프라이빗 키를 사용합니다. 작업이 성공하려면 퍼블릭 키와 프라이빗 키가 동일한 데이터 키 페어에 속해야 하며 동일한 암호화 알고리즘을 사용해야 합니다.

암호화된 프라이빗 키를 해독하려면 Decrypt 작업에 키를 전달합니다. 일반 텍스트 프라이빗 키를 사용하여 데이터를 암호 해독합니다. 그런 다음 가능한 한 빨리 메모리에서 일반 텍스트 프라이빗 키를 제거하세요.

다음 다이어그램은 데이터 키 페어의 프라이빗 키를 사용하여 암호화 텍스트를 해독하는 방법을 보여줍니다.

AWS KMS외부에서 데이터 키 페어의 프라이빗 키를 사용하여 데이터를 암호 해독합니다.

데이터 키 페어를 사용하여 메시지 서명

메시지에 대한 암호화 서명을 생성하려면 데이터 키 페어의 프라이빗 키를 사용합니다. 퍼블릭 키를 가진 사람은 누구나 이 키를 사용하여 메시지가 프라이빗 키로 서명되었는지, 서명 이후 변경되지 않았는지 확인할 수 있습니다.

개인 키를 암호화하는 경우 암호화된 개인 키를 암호 해독 작업에 전달하십시오. AWS KMS KMS 키를 사용하여 데이터 키를 해독한 다음 일반 텍스트 개인 키를 반환합니다. 일반 텍스트 프라이빗 키를 사용하여 서명을 생성합니다. 그런 다음 가능한 한 빨리 메모리에서 일반 텍스트 프라이빗 키를 제거하세요.

메시지에 서명하려면 OpenSSL의 dgst 명령과 같은 암호화 해시 함수를 사용하여 메시지 다이제스트를 생성합니다. 그런 다음 일반 텍스트 프라이빗 키를 서명 알고리즘에 전달합니다. 결과는 메시지의 내용을 나타내는 서명입니다. (먼저 다이제스트를 만들지 않고도 짧은 메시지에 서명할 수 있습니다. 최대 메시지 크기는 사용하는 서명 도구에 따라 다릅니다.)

다음 다이어그램은 데이터 키 페어의 프라이빗 키를 사용하여 메시지에 서명하는 방법을 보여줍니다.

외부의 데이터 키 쌍에 있는 개인 키를 사용하여 암호화 서명을 생성합니다. AWS KMS

데이터 키 페어를 사용하여 서명 확인

데이터 키 페어의 퍼블릭 키가 있는 사람은 누구나 이 키를 사용하여 프라이빗 키로 생성한 서명을 확인할 수 있습니다. 확인은 권한이 부여된 사용자가 지정된 프라이빗 키 및 서명 알고리즘을 사용하여 메시지에 서명했으며 서명된 이후 메시지가 변경되지 않았음을 확인합니다.

확인이 성공하려면 서명을 확인하는 당사자가 동일한 유형의 다이제스트를 생성하고 동일한 알고리즘을 사용하며 메시지에 서명하는 데 사용되는 프라이빗 키에 해당하는 퍼블릭 키를 사용해야 합니다.

다음 다이어그램은 데이터 키 페어의 퍼블릭 키를 사용하여 메시지 서명을 확인하는 방법을 보여 줍니다.

AWS KMS외부에서 데이터 키 페어의 퍼블릭 키를 사용하여 암호화 서명을 확인합니다.

데이터 키 쌍을 사용하여 공유 암호를 도출하십시오.

키 계약을 통해 각각 타원 곡선의 공개-개인 키 쌍을 가진 두 명의 피어가 안전하지 않은 채널을 통해 공유 암호를 설정할 수 있습니다. 공유 암호를 얻으려면 두 피어가 안전하지 않은 통신 채널 (예: 인터넷) 을 통해 공개 키를 교환해야 합니다. 그런 다음 각 당사자는 자신의 개인 키와 동료의 공개 키를 사용하여 키 계약 알고리즘을 사용하여 동일한 공유 암호를 계산합니다. 공유 암호 값을 사용하여 두 피어 간에 전송되는 데이터를 암호화 및 해독할 수 있거나 HMAC를 생성 및 검증할 수 있는 대칭 키를 도출할 수 있습니다.

참고

AWS KMS 공개 키를 사용하여 공유 암호를 추출하기 전에 해당 공개 키가 예상 당사자로부터 왔는지 확인하는 것이 좋습니다.

에일리어스

KMS 키의 알아보기 쉬운 다른 이름으로 별칭을 사용합니다. 예를 들어 KMS 키를 1234abcd-12ab-34cd-56ef-1234567890ab 대신 test-key라고 할 수 있습니다.

별칭을 사용하면 AWS Management Console에서 KMS 키를 보다 쉽게 식별할 수 있습니다. 암호화 AWS KMS 작업을 비롯한 일부 작업에서는 별칭을 사용하여 KMS 키를 식별할 수 있습니다. 애플리케이션에서는 단일 별칭을 사용하여 각 별칭의 서로 다른 KMS 키를 참조할 수 있습니다. AWS 리전

정책을 편집하거나 권한 부여를 관리하지 않고도 별칭을 기반으로 KMS 키에 대한 액세스를 허용하거나 거부할 수도 있습니다. 이 기능은 속성 기반 액세스 제어 (ABAC) AWS KMS 지원의 일부입니다. 자세한 내용은 AWS KMS의 ABAC단원을 참조하세요.

에서 AWS KMS별칭은 KMS 키의 속성이 아니라 독립된 리소스입니다. 따라서 연결된 KMS 키에 영향을 주지 않고 별칭을 추가, 변경 및 삭제할 수 있습니다.

중요

별칭 이름에 기밀 또는 민감한 정보를 포함시키지 마십시오. 별칭은 로그 및 기타 출력에 일반 텍스트로 표시될 수 있습니다 CloudTrail .

자세히 알아보기:

  • 별칭에 대한 자세한 내용은 별칭 사용 섹션을 참조하세요.

  • 별칭을 포함하여 키 식별자 형식에 대한 자세한 내용은 키 식별자 () KeyId 섹션을 참조하세요.

  • KMS 키와 연결된 별칭을 찾는 방법에 대한 도움말은 별칭 이름 및 별칭 ARN 찾기 섹션을 참조하세요.

  • 다양한 프로그래밍 언어의 별칭 생성 및 관리에 대한 예는 별칭으로 작업 섹션을 참조하세요.

사용자 지정 키 스토어

사용자 지정 키 스토어는 사용자가 소유하고 관리하는 외부 키 관리자가 지원하는 AWS KMS 리소스입니다. AWS KMS 암호화 작업을 위해 사용자 지정 키 스토어에서 KMS 키를 사용하는 경우 암호화 작업은 해당 암호화 키를 사용하여 키 관리자에서 실제로 수행됩니다.

AWS KMS AWS CloudHSM 클러스터에서 지원하는 AWS CloudHSM 키 저장소와 외부에서 외부 키 관리자가 지원하는 외부 키 저장소를 지원합니다 AWS.

자세한 정보는 사용자 지정 키 스토어을 참조하세요.

암호화 작업

에서 AWS KMS암호화 작업은 KMS 키를 사용하여 데이터를 보호하는 API 작업입니다. KMS 키는 내부에 AWS KMS남아 있기 때문에 암호화 작업에서 KMS 키를 AWS KMS 사용하려면 호출해야 합니다.

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

다음 표에는 암호화 작업이 나열되어 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 설정합니다. 자세한 내용은 암호화 작업에 대한 공유 할당량단원을 참조하세요.

키 식별자 () KeyId

키 식별자는 KMS 키의 이름과 같은 역할을 합니다. 콘솔에서 KMS 키를 인식하는 데 도움이 됩니다. 이를 사용하여 AWS KMS API 작업, 키 정책, IAM 정책 및 권한 부여에 사용할 KMS 키를 나타냅니다. 키 식별자 값은 KMS 키와 연결된 키 자료와 전혀 관련이 없습니다.

AWS KMS 여러 키 식별자를 정의합니다. KMS 키를 생성하면 KMS 키의 속성인 키 ARN과 키 ID를 AWS KMS 생성합니다. 별칭을 생성할 때 정의한 별칭 이름을 기반으로 별칭 ARN을 AWS KMS 생성합니다. API와 API에서 키 및 별칭 식별자를 볼 수 있습니다. AWS Management Console AWS KMS

AWS KMS 콘솔에서 KMS 키를 키 ARN, 키 ID 또는 별칭 이름을 기준으로 보고 필터링하고 키 ID 및 별칭 이름을 기준으로 정렬할 수 있습니다. 콘솔에서 키 식별자를 찾는 방법에 대한 도움말은 키 ID 및 키 ARN 찾기 섹션을 참조하세요.

AWS KMS API에서 KMS 키를 식별하는 데 사용하는 파라미터는 이름이 KeyId 지정되거나 변형되어 있습니다 (예: 또는). TargetKeyId DestinationKeyId 그러나 이러한 파라미터의 값은 키 ID로 제한되지 않습니다. 일부는 유효한 키 식별자를 취할 수 있습니다. 각 파라미터의 값에 대한 자세한 내용은 AWS Key Management Service API Reference의 파라미터 설명을 참조하십시오.

참고

AWS KMS API를 사용할 때는 사용하는 키 식별자에 주의하십시오. API에 따라 다른 키 식별자가 필요합니다. 일반적으로 작업에 가장 완전하고 실용적인 키 식별자를 사용하십시오.

AWS KMS 다음 키 식별자를 지원합니다.

키 ARN

키 ARN은 KMS 키의 Amazon 리소스 이름(ARN)입니다. KMS 키에 대한 고유한 정규화된 식별자입니다. 키 ARN에는 AWS 계정, 지역 및 키 ID가 포함됩니다. KMS 키의 키 ARN을 찾는 방법에 대한 도움말은 키 ID 및 키 ARN 찾기 섹션을 참조하세요.

키 ARN의 형식은 다음과 같습니다.

arn:<partition>:kms:<region>:<account-id>:key/<key-id>

다음은 단일 리전 KMS 키의 키 ARN 예입니다.

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

다중 리전 키의 키 ARN의 key-id 요소는 mrk- 접두사로 시작합니다. 다음은 다중 리전 키에 대한 예제 키 ARN입니다.

arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab
키 ID

키 ID는 계정 및 리전 내의 KMS 키를 고유하게 식별합니다. KMS 키의 키 ID를 찾는 방법에 대한 도움말은 키 ID 및 키 ARN 찾기 섹션을 참조하세요.

다음은 단일 리전 KMS 키의 키 ID 예입니다.

1234abcd-12ab-34cd-56ef-1234567890ab

다중 리전 키의 키 ID는 mrk- 접두사로 시작합니다. 다음은 다중 리전 키에 대한 예제 키 ID입니다.

mrk-1234abcd12ab34cd56ef1234567890ab
별칭 ARN

별칭 ARN은 별칭의 아마존 리소스 이름 (ARN) 입니다. AWS KMS 별칭 및 해당 별칭이 나타내는 KMS 키에 대한 고유한 정규화된 식별자입니다. 별칭 ARN에는, 지역 및 별칭 이름이 포함됩니다 AWS 계정.

지정된 시간에 별칭 ARN은 하나의 특정 KMS 키를 식별합니다. 그러나 별칭과 연결된 KMS 키를 변경할 수 있으므로 별칭 ARN이 서로 다른 시간에 서로 다른 KMS 키를 식별할 수 있습니다. KMS 키의 별칭 ARN을 찾는 방법에 대한 도움말은 별칭 이름 및 별칭 ARN 찾기 섹션을 참조하세요.

별칭 ARN의 형식은 다음과 같습니다.

arn:<partition>:kms:<region>:<account-id>:alias/<alias-name>

다음은 가상 ExampleAlias의 별칭 ARN입니다.

arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias
별칭 이름

별칭 이름은 최대 256자의 문자열입니다. 계정 및 리전 내의 연결된 KMS 키를 고유하게 식별합니다. AWS KMS API에서 별칭 이름은 항상 로 시작합니다. alias/ KMS 키의 별칭 이름을 찾는 방법에 대한 도움말은 별칭 이름 및 별칭 ARN 찾기 섹션을 참조하세요.

별칭 이름의 형식은 다음과 같습니다.

alias/<alias-name>

예:

alias/ExampleAlias

별칭 이름의 aws/ 접두사는 AWS 관리형 키용으로 예약됩니다. 이 접두사를 가진 별칭은 만들 수 없습니다. 예를 들어, 아마존 심플 스토리지 서비스 (Amazon S3) 의 별칭 이름은 다음과 같습니다. AWS 관리형 키

alias/aws/s3

키 구성 요소

키 구성 요소는 암호화 알고리즘에 사용되는 비트 문자열입니다. 키 구성 요소를 사용하는 암호화 작업을 보호하려면 비밀 키 구성 요소를 비밀로 유지해야 합니다. 공개 키 구성 요소는 공유되도록 설계되었습니다.

각 KMS 키는 메타데이터에 해당 키 구성 요소에 대한 참조를 포함합니다. 대칭 암호화 KMS 키의 키 구성 요소 오리진은 다를 수 있습니다. AWS KMS 생성하는 키 구성 요소, 사용자 지정 키 스토어의 AWS CloudHSM 클러스터에서 생성된 키 구성 요소를 사용하거나 자체 키 구성 요소를 가져올 수 있습니다. 대칭 암호화 KMS 키에 AWS KMS 키 구성 요소를 사용하는 경우 키 구성 요소의 자동 교체를 활성화할 수 있습니다.

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

키 구성 요소 오리진

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

KMS 키의 키 구성 출처를 찾으려면 DescribeKey작업을 사용하거나 콘솔에서 KMS 키 세부 정보 페이지의 암호화 구성 탭에서 원본 값을 참조하십시오. AWS KMS 자세한 내용은 키 보기를 참조하세요.

KMS 키는 다음과 같은 키 구성 요소 출처 값 중 하나를 가질 수 있습니다.

AWS_KMS

AWS KMS 자체 키 스토어에서 KMS 키의 키 구성 요소를 생성하고 관리합니다. 이는 기본값이며 대부분의 KMS 키에 권장되는 값입니다.

의 키 자료를 사용하여 키를 생성하는 데 도움이 AWS KMS필요하면 을 참조하십시오키 생성.

EXTERNAL (Import key material)

KMS 키에 키 구성 요소를 가져왔습니다. External 키 구성 요소 오리진을 사용하여 KMS 키를 생성하면 KMS 키에 키 구성 요소가 없습니다. 나중에 키 구성 요소를 KMS 키로 가져올 수 있습니다. 가져온 키 구성 요소를 사용하는 경우 만료된 키 구성 요소를 교체하는 것을 포함하여 외부에서 해당 키 구성 요소를 보호하고 관리해야 합니다. AWS KMS자세한 내용은 가져온 키 구성 요소 정보 섹션을 참조하세요.

가져온 키 구성 요소에 대한 KMS 키를 생성하는 방법에 대한 자세한 내용은 1단계: 키 구성 요소 없이 KMS 키 생성 섹션을 참조하세요.

AWS_CLOUDHSM

AWS KMS AWS CloudHSM 클러스터에 키 스토어의AWS CloudHSM 키 자료를 생성합니다.

키 스토어에서 KMS 키를 만드는 데 도움이 필요하면 AWS CloudHSM 을 참조하십시오AWS CloudHSM 키 스토어에서 KMS 키 생성.

EXTERNAL_KEY_STORE

키 구성 요소는 외부 외부 키 관리자의 암호화 키입니다. AWS이 오리진은 외부 키 스토어의 KMS 키에 대해서만 지원됩니다.

외부 키 스토어에서 KMS 키를 생성하는 방법에 대한 도움말은 외부 키 스토어에서 KMS 키 생성 섹션을 참조하세요.

키 사양

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

  • AWS KMS 키키 사양에 따라 KMS 키가 대칭인지 비대칭인지가 결정됩니다. 또한 키 구성 요소의 유형과 지원하는 알고리즘을 결정합니다. 키 사양은 KMS 키를 생성할 때 선택하며 이후에는 변경할 수 없습니다. 기본 키 사양인 SYMMETRIC_DEFAULT는 256비트 대칭 암호화 키를 나타냅니다.

    참고

    KMS 키의 KeySpecCustomerMasterKeySpec로 알려져 있습니다. 작업 CustomerMasterKeySpec 파라미터는 더 이상 사용되지 않습니다. CreateKey 대신 동일한 방식으로 작동하는 KeySpec 파라미터를 사용합니다. 주요 변경 사항을 방지하기 위해 이제 CreateKeyDescribeKey연산의 응답에 값이 같은 KeySpec CustomerMasterKeySpec 멤버와 두 멤버가 모두 포함됩니다.

    키 사양 목록 및 키 사양 선택에 대한 도움말은 키 사양 선택 섹션을 참조하세요. KMS 키의 키 사양을 찾으려면 DescribeKey작업을 사용하거나 콘솔의 KMS 키 세부 정보 페이지에서 암호화 구성 탭을 참조하십시오. AWS KMS 자세한 내용은 키 보기를 참조하세요.

    KMS 키를 만들 때 보안 주체가 사용할 수 있는 키 사양을 제한하려면 kms: 조건 키를 사용하십시오. KeySpec 또한 kms:KeySpec 조건 키를 사용하여 보안 주체가 특정 키 사양의 KMS 키에서만 AWS KMS 작업을 호출하도록 허용할 수 있습니다. 예를 들어 RSA_4096 키 사양을 사용하여 KMS 키 삭제를 예약할 수 있는 권한을 거부할 수 있습니다.

  • 데이터 키 (GenerateDataKey) — 키 사양에 따라 AES 데이터 키의 길이가 결정됩니다.

  • 데이터 키 쌍 (GenerateDataKeyPair) — 키 페어 사양은 데이터 키 쌍의 키 구성 요소 유형을 결정합니다.

키 사용

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

KMS 키의 키 사용 선택에 대한 도움말은 키 사용 선택 섹션을 참조하세요. KMS 키의 키 사용을 찾으려면 DescribeKey작업을 사용하거나 콘솔의 KMS 키 세부 정보 페이지에서 암호화 구성 탭을 선택합니다. AWS KMS 자세한 내용은 키 보기를 참조하세요.

봉투 암호화

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

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

엔빌로프 암호화

AWS KMS 암호화 키를 안전하게 저장하고 관리하여 암호화 키를 보호하는 데 도움이 됩니다. 에 AWS KMS저장된 루트 키 (일명) 는 AWS KMS FIPS 검증을 거친 하드웨어 보안 모듈을 암호화되지 않은 상태로 두지 않습니다. AWS KMS keys KMS 키를 사용하려면 전화를 걸어야 합니다. AWS KMS

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

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

  • 데이터 키 보호

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

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

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

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

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

암호화 컨텍스트

대칭 암호화 KMS 키를 사용하는 모든 AWS KMS 암호화 작업은 데이터에 대한 추가 컨텍스트 정보를 포함할 수 있는 비비밀 키-값 쌍의 선택적 집합인 암호화 컨텍스트를 허용합니다. AWS KMS 암호화 컨텍스트를 추가 인증 데이터 (AAD) 로 사용하여 인증된 암호화를 지원합니다.

암호화 요청에 암호화 컨텍스트를 포함하면 데이터를 암호화 해제(또는 암호화 해제한 다음 다시 암호화)하는 데 동일한 암호화 컨텍스트가 필요하도록 암호 텍스트에 암호화 방식으로 바인딩됩니다. 해독 요청에 제공된 암호화 컨텍스트가 대소문자가 정확히 일치하지 않으면 해독 요청이 실패합니다. 암호화 컨텍스트에서 키-값 페어의 순서만 다를 수 있습니다.

참고

비대칭 KMS 키 또는 HMAC KMS 키를 사용하여 암호화 작업에서 암호화 컨텍스트를 지정할 수 없습니다. 비대칭 알고리즘 및 MAC 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

암호화 컨텍스트는 암호가 아니며 암호화되지 않습니다. AWS CloudTrail 로그에 일반 텍스트로 표시되므로 암호화 작업을 식별하고 분류하는 데 사용할 수 있습니다. 암호화 컨텍스트에 민감한 정보가 포함되어서는 안 됩니다. 암호화 컨텍스트가 암호화 또는 해독되는 데이터를 설명하는 것이 좋습니다. 예를 들어 파일을 암호화하는 경우, 파일 경로의 일부를 암호화 컨텍스트로 사용할 수 있습니다.

"encryptionContext": { "department": "10103.0" }

예를 들어 Amazon Elastic Block Store (Amazon EBS) CreateSnapshot작업으로 생성된 볼륨과 스냅샷을 암호화할 때 Amazon EBS는 볼륨 ID를 암호화 컨텍스트 값으로 사용합니다.

"encryptionContext": { "aws:ebs:id": "vol-abcde12345abc1234" }

또한 암호화 컨텍스트를 사용하여 계정에서 액세스를 세분화하거나 액세스를 제한할 수 있습니다. AWS KMS keys 암호화 컨텍스트를 권한 부여의 제약 조건으로 그리고 정책문의 조건으로 사용할 수 있습니다.

암호화 컨텍스트를 사용하여 암호화된 데이터의 무결성을 보호하는 방법을 알아보려면 AWS 보안 블로그를 사용하여 AWS Key Management Service 암호화된 데이터의 무결성을 보호하는 방법 게시물을 참조하십시오. EncryptionContext

암호화 컨텍스트 관련 추가 내용.

AWS KMS 암호화 컨텍스트 키 및 값에 대해 다음 규칙을 적용합니다.

  • 암호화 컨텍스트 쌍의 키와 값은 단순 리터럴 문자열이어야 합니다. 정수나 부동 소수점과 같은 다른 유형을 사용하는 경우 해당 유형을 문자열로 AWS KMS 해석합니다.

  • 암호화 컨텍스트의 키와 값에는 유니코드 문자가 포함될 수 있습니다. 암호화 컨텍스트에 키 정책 또는 IAM 정책에서 허용되지 않는 문자가 포함된 경우 kms:EncryptionContext:context-keykms:EncryptionContextKeys와 같은 정책 조건 키에 암호화 컨텍스트를 지정할 수 없습니다. 키 정책 문서 규칙에 대한 자세한 내용은 키 정책 형식 섹션을 참조하세요. IAM 정책 문서 규칙에 대한 자세한 내용은 IAM 사용 설명서IAM 이름 요구 사항 섹션을 참조하세요.

암호화 컨텍스트는 주로 무결성 및 신뢰성을 확인하는 데 사용됩니다. 그러나 암호화 컨텍스트를 사용하여 키 정책 및 IAM 정책에서 대칭 암호화 AWS KMS keys 에 대한 액세스를 제어할 수도 있습니다.

kms: 및 kmsEncryptionContext: EncryptionContextKeys 조건 키는 요청에 특정 암호화 컨텍스트 키 또는 키-값 쌍이 포함된 경우에만 권한을 허용 (또는 거부) 합니다.

예를 들어 다음 키 정책 문은 RoleForExampleApp 역할이 Decrypt 작업에 KMS 키를 사용하도록 허용합니다. 이 정책 문은 kms:EncryptionContext:context-key 조건 키를 사용하여 요청의 암호화 컨텍스트가 AppName:ExampleApp 암호화 컨텍스트 쌍을 포함하는 경우에만 이 권한을 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

이러한 암호화 컨텍스트 키에 대한 자세한 내용은 에 대한 조건 키 AWS KMS 섹션을 참조하세요.

권한 부여를 생성할 때 권한 부여 조건을 설정하는 권한 부여 제약 조건을 포함할 수 있습니다. AWS KMS 두 가지 권한 부여 제약 조건을 EncryptionContextEquals 지원하며EncryptionContextSubset, 두 제약 조건 모두 암호화 작업 요청의 암호화 컨텍스트를 포함합니다. 이러한 권한 부여 제약 조건을 사용할 때 암호화 작업에 대한 요청의 암호화 컨텍스트가 권한 부여 제약 조건의 요구 사항을 충족하는 경우에만 권한이 유효합니다.

예를 들어, 작업을 허용하는 EncryptionContextEquals 권한 부여에 권한 부여 제약 조건을 추가할 수 있습니다. GenerateDataKey 이 제약 조건에서 권한 부여는 요청의 암호화 컨텍스트가 권한 부여 제약 조건의 암호화 컨텍스트와 대소문자 구분이 일치하는 경우에만 작업을 허용합니다.

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --operations GenerateDataKey \ --constraints EncryptionContextEquals={Purpose=Test}

피부여자 보안 주체의 다음과 같은 요청은 EncryptionContextEquals 제약 조건을 충족합니다.

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --encryption-context Purpose=Test

권한 부여 제약 조건에 대한 자세한 내용은 권한 부여 제약 사용 섹션을 참조하세요. 권한 부여에 대한 자세한 내용은 보조금 AWS KMS 섹션을 참조하세요.

AWS KMS AWS CloudTrail 를 사용하여 암호화 컨텍스트를 기록하므로 액세스한 KMS 키와 데이터를 확인할 수 있습니다. 이 로그 항목은 로그 항목에서 암호화 컨텍스트에서 참조한 특정 데이터를 암호화하거나 해독하기 위해 정확히 어떤 KMS 키가 사용되었는지 보여줍니다.

중요

암호화 컨텍스트가 로깅되기 때문에 민감한 정보가 포함될 수 없습니다.

Decrypt 또는 ReEncrypt 작업 호출 시 암호화 컨텍스트 사용을 간소화하기 위해 암호화된 데이터와 함께 암호화 컨텍스트를 저장할 수 있습니다. 암호화 또는 해독을 위해 필요할 때 전체 암호화 컨텍스트를 만드는 데 도움이 되는 암호화 컨텍스트만 저장하는 것이 좋습니다.

예를 들어 암호화 컨텍스트가 파일의 정규화된 경로인 경우 해당 경로의 일부만 암호화된 파일 내용과 함께 저장합니다. 그런 다음 전체 암호화 컨텍스트가 필요할 때 저장된 조각으로부터 다시 구성합니다. 파일 이름을 변경하거나 다른 위치로 이동하는 등 파일을 변조하면 암호화 컨텍스트 값이 변경되고 해독 요청이 실패합니다.

키 정책

KMS 키를 만들 때 KMS 키를 사용하고 관리할 수 있는 담당자를 결정합니다. 이러한 권한은 키 정책이라는 문서에 포함됩니다. 언제라도 키 정책을 사용하여 고객 관리형 키에 대한 권한을 추가, 제거 또는 변경할 수 있습니다. 하지만 의 키 정책은 편집할 수 없습니다. AWS 관리형 키자세한 정보는 의 주요 정책 AWS KMS을 참조하세요.

권한 부여

권한 부여는 보안 주체가 암호화 작업에 AWS 사용할 AWS KMS keys 수 있도록 하는 정책 도구입니다. 또한 KMS 키 (DescribeKey) 를 보고 권한 부여를 생성 및 관리할 수 있습니다. KMS 키에 대한 액세스 권한을 부여할 때 키 정책IAM 정책과 함께 권한 부여가 고려됩니다. 권한 부여는 키 정책이나 IAM 정책을 변경하지 않고 권한을 생성하고 삭제할 수 있기 때문에 임시 권한에 자주 사용됩니다. 권한 부여는 매우 구체적일 수 있고 생성 및 취소가 간편하므로 임시 권한 또는 보다 세부적인 권한을 제공하는 데 자주 사용됩니다.

권한 부여 용어를 포함하여 권한 부여에 대한 자세한 내용은 보조금 AWS KMS 섹션을 참조하세요.

KMS 키 사용 감사

를 사용하여 키 사용을 AWS CloudTrail 감사할 수 있습니다. CloudTrail 계정에 대한 AWS API 호출 및 관련 이벤트 기록이 포함된 로그 파일을 생성합니다. 이러한 로그 파일에는 AWS 관리 콘솔, AWS SDK 및 명령줄 도구를 사용하여 이루어진 모든 AWS KMS API 요청이 포함됩니다. 로그 파일에는 사용자를 대신하여 AWS KMS 해당 AWS 서비스에 보내는 요청도 포함됩니다. 이러한 로그 파일을 사용하여 KMS 키가 사용된 시간, 요청된 작업, 요청자의 자격 증명, 소스 IP 주소 등 중요한 정보를 검색할 수 있습니다. 자세한 내용은 로 로깅 AWS CloudTrailAWS CloudTrail 사용 설명서를 참조하세요.

키 관리 인프라

암호화 기법에서 일반적인 방법은 AES(Advanced Encryption Standard)와 비밀 키처럼 공개적으로 사용할 수 있고 피어 검토를 거친 알고리즘으로 암호화하고 해독하는 것입니다. 암호화 기법에서 가장 큰 문제 중 하나는 키를 비밀로 유지하기 매우 어렵다는 점입니다. 이는 일반적으로 키 관리 인프라 (KMI) 의 작업입니다. AWS KMS 주요 인프라를 대신 운영합니다. AWS KMS 라는 루트 키를 생성하고 안전하게 저장합니다 AWS KMS keys. AWS KMS 작동 방식에 대한 자세한 내용은 AWS Key Management Service 암호화 세부 정보를 참조하십시오.