JCE를 사용한 키 추출 - AWS CloudHSM

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

JCE를 사용한 키 추출

JCE (Java 암호화 확장) 는 다양한 암호화 구현을 연결할 수 있는 아키텍처를 사용합니다. AWS CloudHSM 암호화 작업을 HSM으로 오프로드하는 JCE 공급자 하나를 제공합니다. 대부분의 다른 JCE 공급자가 AWS CloudHSM에 저장된 키를 사용하려면 HSM에서 일반 텍스트 형식의 키 바이트를 추출하여 시스템 메모리로 사용해야 합니다. HSM은 일반적으로 키를 래핑된 객체로만 추출하고 일반 텍스트로는 추출할 수 없습니다. 그러나 공급자 간 통합 사용 사례를 지원하기 위해 키 바이트를 쉽게 추출할 수 있는 옵트인 구성 옵션을 AWS CloudHSM 허용합니다.

중요

JCE는 AWS CloudHSM 공급자가 지정되거나 AWS CloudHSM 키 객체가 사용될 AWS CloudHSM 때마다 작업을 오프로드합니다. 작업이 HSM 내에서 수행될 것으로 예상되는 경우 키를 명확하게 추출할 필요가 없습니다. 일반 텍스트로 키를 추출하는 것은 타사 라이브러리 또는 JCE 공급자의 제한으로 인해 애플리케이션에서 키 래핑 및 래핑 해제와 같은 보안 메커니즘을 사용할 수 없는 경우에만 필요합니다.

AWS CloudHSM JCE 공급자는 기본적으로 외부 JCE 공급자와 연동되는 퍼블릭 키 추출을 허용합니다. 항상 허용되는 방법은 다음과 같습니다.

Class 메서드 형식(GETEncoded)
EcPublicKey getEncoded() X.509
GetW () N/A
RSA PublicKey getEncoded() X.509
getPublicExponent() N/A
CloudHsmRsaPrivateCrtKey getPublicExponent() N/A

AWS CloudHSM JCE 제공자는 기본적으로 개인 또는 비밀 키에 대해 명확한 키 바이트 추출을 허용하지 않습니다. 사용 사례에 필요한 경우 다음과 같은 조건에서 프라이빗 또는 비밀 키에 대해 키 바이트를 선명하게 추출할 수 있습니다.

  1. 프라이빗 및 비밀 키의 EXTRACTABLE 속성은 true로 설정됩니다.

    • 기본적으로 프라이빗 및 비밀 키의 EXTRACTABLE 속성은 true로 설정됩니다. EXTRACTABLE키는 HSM에서 내보낼 수 있는 키입니다. 지원되는 Java 속성에 대한 자세한 내용은 Client SDK 5를 참조하십시오.

  2. 프라이빗 키와 비밀 키의 WRAP_WITH_TRUSTED 속성은 false로 설정됩니다.

    • getEncoded, getPrivateExponent, 그리고 getS는 명확하게 내보낼 수 없는 프라이빗 키와 함께 사용할 수 없습니다. WRAP_WITH_TRUSTED는 프라이빗 키를 HSM 밖으로 명확하게 내보낼 수 없습니다. 자세한 내용은 신뢰할 수 있는 키를 사용하여 키 래핑 해제 제어를 참조하십시오.

AWS CloudHSM JCE 제공자가 개인 키 암호를 추출할 수 있도록 허용 AWS CloudHSM

중요

이 구성 변경을 통해 HSM 클러스터에서 모든 EXTRACTABLE 키 바이트를 안전하게 추출할 수 있습니다. 보안을 강화하려면 키 래핑 방법을 사용하여 HSM에서 키를 안전하게 추출하는 것을 고려해야 합니다. 이렇게 하면 HSM에서 실수로 키 바이트를 추출하는 것을 방지할 수 있습니다.

  1. 다음 명령을 사용하여 프라이빗 또는 비밀 키를 JCE에서 추출할 수 있도록 하십시오.

    Linux
    $ /opt/cloudhsm/bin/configure-jce --enable-clear-key-extraction-in-software
    Windows
    C:\Program Files\Amazon\CloudHSM\> .\configure-jce.exe --enable-clear-key-extraction-in-software
  2. 지우기 키 추출을 활성화하면 다음과 같은 방법으로 프라이빗 키를 메모리로 추출할 수 있습니다.

    Class 메서드 형식(GETEncoded)
    getEncoded() RAW
    EC PrivateKey getEncoded() PKCS #8
    GET () N/A
    RSA PrivateCrtKey getEncoded() X.509
    getPrivateExponent() N/A
    getPrimeP() N/A
    getPrimeQ() N/A
    getPrimeExponent(P) N/A
    getPrimeExponentQ () N/A
    getCrtCoefficient() N/A

기본 동작을 복원하고 JCE가 키를 정상적으로 내보내지 못하도록 하려면 다음 명령을 실행하십시오.

Linux
$ /opt/cloudhsm/bin/configure-jce --disable-clear-key-extraction-in-software
Windows
C:\Program Files\Amazon\CloudHSM\> .\configure-jce.exe --disable-clear-key-extraction-in-software