에서 신뢰할 수 있는 키 사용 AWS CloudHSM - AWS CloudHSM

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

에서 신뢰할 수 있는 키 사용 AWS CloudHSM

AWS CloudHSM 신뢰할 수 있는 키 래핑을 지원하여 내부자 위협으로부터 데이터 키를 보호합니다. 이 주제에서는 신뢰할 수 있는 키를 생성하여 데이터를 보호하는 방법에 대해 설명합니다.

신뢰할 수 있는 키 이해

신뢰할 수 있는 키는 다른 키를 래핑하는 데 사용되는 키이며, 관리자와 CO(Crypto Officer)는 CKA_TRUSTED 속성을 사용하여 신뢰할 수 있는 것으로 구체적으로 식별합니다. 또한 관리자와 CO(Crypto Officer)는 관련 속성을 사용하여 CKA_UNWRAP_TEMPLATE 신뢰할 수 있는 키로 데이터 키가 래핑을 해제한 후 수행할 수 있는 작업을 지정합니다. 신뢰할 수 있는 키에 의해 래핑 해제된 데이터 키에는 래핑 해제 작업이 성공하기 위한 이러한 속성도 포함되어야 합니다. 이는 래핑 해제된 데이터 키가 의도한 용도로만 허용되도록 하는 데 도움이 됩니다.

CKA_WRAP_WITH_TRUSTED 속성을 사용하여 신뢰할 수 있는 키로 래핑하려는 모든 데이터 키를 식별할 수 있습니다. 이렇게 하면 데이터 키를 제한할 수 있어서 애플리케이션은 신뢰할 수 있는 키만 사용하여 래핑을 해제할 수 있습니다. 데이터 키에 이 속성을 설정하면 속성은 읽기 전용이 되며 변경할 수 없습니다. 이러한 속성을 적용하면 애플리케이션은 신뢰할 수 있는 키로만 데이터 키를 언래핑할 수 있으며, 래핑을 해제하면 항상 이러한 키 사용 방법을 제한하는 속성을 가진 데이터 키가 생성됩니다.

신뢰할 수 있는 키 속성

다음 속성을 사용하면 키를 신뢰할 수 있는 것으로 표시하고, 신뢰할 수 있는 키로만 데이터 키를 래핑 및 래핑 해제할 수 있도록 지정하고, 래핑이 해제된 후 데이터 키가 수행할 수 있는 작업을 제어할 수 있습니다.

  • CKA_TRUSTED: 데이터 키를 래핑할 키에 이 속성(CKA_UNWRAP_TEMPLATE와 함께)을 적용하여 관리자 또는 CO(Crypto Officer)가 필요한 조사를 완료하고 이 키를 신뢰하도록 지정합니다. 관리자 또는 CO만 CKA_TRUSTED 설정할 수 있습니다. 암호화 사용자 (CU) 가 키를 소유하지만 CO만 해당 CKA_TRUSTED 속성을 설정할 수 있습니다.

  • CKA_WRAP_WITH_TRUSTED: 이 속성을 내보낼 수 있는 데이터 키에 적용하여 이 키를 CKA_TRUSTED로 표시된 키로만 래핑할 수 있도록 지정합니다. CKA_WRAP_WITH_TRUSTED는 true로 설정하면 속성이 읽기 전용이 되며 속성을 변경하거나 제거할 수 없습니다.

  • CKA_UNWRAP_TEMPLATE: 이 속성을 래핑 키 (CKA_TRUSTED와 같이) 에 적용하여 서비스가 래핑을 푸는 데이터 키에 자동으로 적용해야 하는 속성 이름과 값을 지정합니다. 애플리케이션이 언래핑을 위해 키를 제출할 때 애플리케이션은 자체 언래핑 템플릿을 제공할 수도 있습니다. 언랩 템플릿을 지정하고 애플리케이션이 자체 언랩 템플릿을 제공하는 경우 HSM은 두개의 템플릿을 모두 사용하여 속성 이름과 값을 키에 적용합니다. 그러나 CKA_UNWRAP_TEMPLATE 래핑 키에 대한 값이 래핑 해제 요청 중에 애플리케이션에서 제공한 속성과 충돌하는 경우 래핑 해제 요청이 실패합니다.

속성에 대한 자세한 내용은 다음 항목을 참조하세요:

신뢰할 수 있는 키를 사용하여 데이터 키를 래핑하는 방법

신뢰할 수 있는 키를 사용하여 데이터 키를 래핑하려면 다음 세 가지 기본 단계를 완료해야 합니다.

  1. 신뢰할 수 있는 키로 래핑하려는 데이터 키의 경우 해당 CKA_WRAP_WITH_TRUSTED 속성을 true로 설정합니다.

  2. 데이터 키를 래핑하려는 신뢰할 수 있는 키의 경우 해당 CKA_TRUSTED 속성을 true로 설정합니다.

  3. 신뢰할 수 있는 키를 사용하여 데이터 키를 래핑합니다.

단계 1: CKA_WRAP_WITH_TRUSTED 데이터 키를 true로 설정

래핑하려는 데이터 키의 경우 다음 옵션 중 하나를 선택하여 키의 CKA_WRAP_WITH_TRUSTED 속성을 true로 설정합니다. 이렇게 하면 데이터 키가 제한되므로 애플리케이션은 신뢰할 수 있는 키만 사용하여 데이터를 래핑할 수 있습니다.

옵션 1: 새 키를 생성하는 경우 CKA_WRAP_WITH_TRUSTED는 true로 설정합니다.

PKCS #11, JCE 또한 CloudHSM CLI 사용하여 키를 생성합니다. 자세한 내용은 다음 예를 참조하십시오.

PKCS #11

PKCS #11로 키를 생성하려면 키의 CKA_WRAP_WITH_TRUSTED 속성을 true로 설정해야 합니다. 다음 예제와 같이 이 속성을 CK_ATTRIBUTE template 키에 포함시킨 후 속성을 true로 설정하여 이 작업을 수행하십시오.

CK_BYTE_PTR label = "test_key"; CK_ATTRIBUTE template[] = { {CKA_WRAP_WITH_TRUSTED, &true_val, sizeof(CK_BBOOL)}, {CKA_LABEL, label, strlen(label)}, ... };

자세한 내용은 PKCS #11 기반 키 생성을 보여주는 퍼블릭 샘플을 참조하십시오.

JCE

JCE를 사용하여 키를 생성하려면 키 WRAP_WITH_TRUSTED 속성을 true로 설정해야 합니다. 다음 예제와 같이 이 속성을 KeyAttributesMap 키에 포함시킨 후 속성을 true로 설정하여 이 작업을 수행하십시오.

final String label = "test_key"; final KeyAttributesMap keySpec = new KeyAttributesMap(); keySpec.put(KeyAttribute.WRAP_WITH_TRUSTED, true); keySpec.put(KeyAttribute.LABEL, label); ...

자세한 내용은 JCE를 사용한 키 생성을 보여주는 퍼블릭 샘플을 참조하십시오.

CloudHSM CLI

CloudHSM CLI를 사용하여 키를 생성하려면 wrap-with-trusted 키의 속성을 true로 설정해야 합니다. 키 생성 명령의 적절한 인수에 wrap-with-trusted=true를 포함시키면 됩니다.

  • 대칭 키의 경우 attributes 인수에 wrap-with-trusted를 추가합니다.

  • 퍼블릭 키의 경우 public-attributes 인수에 wrap-with-trusted를 추가합니다.

  • 프라이빗 키의 경우 private-attributes 인수에 wrap-with-trusted를 추가합니다.

키 페어에 대한 자세한 내용은 키 generate-asymmetric-pair 단원을 참조하십시오.

대칭 키 생성에 대한 자세한 내용은 키 생성-대칭 단원을 참조하십시오.

옵션 2: 기존 키를 사용하는 경우 CloudHSM CLI를 사용하여 해당 CKA_WRAP_WITH_TRUSTED 키를 true로 설정합니다.

기존 키의 CKA_WRAP_WITH_TRUSTED 속성을 true로 설정하려면 다음 단계를 따르십시오.

  1. login 명령을 사용하여 CU(Crypto User)로 로그인합니다.

  2. 키 세트-속성 명령을 사용하여 키 wrap-with-trusted 속성을 true로 설정합니다.

    aws-cloudhsm > key set-attribute --filter attr.label=test_key --name wrap-with-trusted --value true { "error_code": 0, "data": { "message": "Attribute set successfully" } }

단계 2: 신뢰할 수 있는 키의 CKA_TRUSTED를 true로 설정합니다.

키를 신뢰할 수 있는 키로 만들려면 해당 CKA_TRUSTED 속성을 true로 설정해야 합니다. CloudHSM CLI 또는 CloudHSM 관리 유틸리티(CMU)를 사용하여 이 작업을 수행할 수 있습니다.

단계 3. 신뢰할 수 있는 키를 사용하여 데이터 키를 래핑합니다.

단계 1에서 참조한 데이터 키를 단계 2에서 설정한 신뢰할 수 있는 키로 래핑하려면 다음 링크의 코드 샘플을 참조하십시오. 각 그림은 키를 래핑하는 방법을 보여줍니다.

신뢰할 수 있는 키로 데이터 키의 래핑을 해제하는 방법

데이터 키의 래핑을 해제하려면 CKA_UNWRAP가 있는 신뢰할 수 있는 키를 true로 설정해야 합니다. 이러한 키가 되려면 다음 기준도 충족해야 합니다.

  • 키의 CKA_TRUSTED 속성은 true로 설정되어야 합니다.

  • 키는 래핑이 해제된 후 데이터 키가 수행할 수 있는 작업을 지정하기 위해 CKA_UNWRAP_TEMPLATE 및 관련 속성을 사용해야 합니다. 예를 들어, 래핑이 해제된 키를 내보낼 수 없도록 하려면 CKA_UNWRAP_TEMPLATE의 일부로 CKA_EXPORTABLE = FALSE를 설정합니다.

참고

CKA_UNWRAP_TEMPLATE는 PKCS #11에서만 사용할 수 있습니다.

애플리케이션이 래핑을 해제할 키를 제출하면 애플리케이션은 자체 래핑 해제 템플릿을 제공할 수도 있습니다. 언랩 템플릿을 지정하고 애플리케이션이 자체 언랩 템플릿을 제공하는 경우 HSM은 두개의 템플릿을 모두 사용하여 속성 이름과 값을 키에 적용합니다. 하지만 래핑 해제 요청 중에 신뢰할 수 있는 키의 CKA_UNWRAP_TEMPLATE은 애플리케이션에서 제공한 속성과 충돌하는 경우 래핑 해제 요청이 실패합니다.

신뢰할 수 있는 키를 사용한 데이터 키 래핑 해제에 대한 예를 보려면 이 PKCS #11 예제를 참조하십시오.