KMU를 사용하여 AWS CloudHSM 키의 일반 텍스트 복사본 내보내기 - AWS CloudHSM

KMU를 사용하여 AWS CloudHSM 키의 일반 텍스트 복사본 내보내기

AWS CloudHSM key_mgmt_util 도구의 exSymKey 명령을 사용하여 하드웨어 보안 모듈(HSM)에서 대칭 키의 일반 텍스트 복사본을 내보내고 디스크의 파일에 저장합니다. 키의 암호화(래핑)된 사본을 내보내려면 wrapKey 명령을 사용합니다. exSymKey가 내보내는 키와 같이 평문 키를 가져오려면 imSymKey를 사용합니다.

가져오기 절차 도중, exSymKey는 지정된 AES 키(래핑 키)를 사용하여 내보낼 키를 래핑(암호화)한 후 언래핑(암호화 해제)합니다. 하지만 내보내기 작업의 결과는 디스크에 저장된 평문(언래핑된) 키입니다.

키 소유자, 즉 키를 생성한 CU 사용자만 키를 내보낼 수 있습니다. 키를 공유하는 사용자는 해당 키를 암호화 작업에 사용할 수 있지만 내보낼 수는 없습니다.

exSymKey 작업은 키 구성 요소를 지정한 파일에 복사하지만, HSM에서 키를 제거하지 않고 키 속성을 변경하거나 암호화 작업에서 키를 사용할 수 없게 만듭니다. 동일한 키를 여러 번 내보낼 수 있습니다.

exSymKey는 대칭 키만 내보냅니다. 퍼블릭 키를 내보내려면 exportPubKey를 사용합니다. 프라이빗 키를 내보내려면 exportPrivateKey를 사용합니다.

key_mgmt_util 명령을 실행하기 전에 먼저 key_mgmt_util을 시작하고 HSM에 Crypto User(CU)로 로그인해야 합니다.

구문

exSymKey -h exSymKey -k <key-to-export> -w <wrapping-key> -out <key-file> [-m 4] [-wk <unwrapping-key-file> ]

예시

다음 예제는 exSymKey를 사용하여 HSM에서 소유하는 대칭 키를 내보내는 방법을 보여 줍니다.

예 : 3DES 대칭 키 내보내기

이 명령은 Triple DES(3DES) 대칭 키(키 핸들 7)를 내보냅니다. 이 명령은 HSM의 기존 AES 키(키 핸들 6)를 래핑 키로 사용합니다. 그런 다음 3DES 키의 평문을 3DES.key 파일에 기록합니다.

출력은 키 7(3DES 키)가 성공적으로 래핑되고 3DES.key 파일에 기록된 것을 보여 줍니다.

주의

출력이 "래핑된 대칭 키"가 출력 파일에 기록되었음을 보여 주지만, 출력 파일에는 평문(언래핑된) 키가 포함되어 있습니다.

Command: exSymKey -k 7 -w 6 -out 3DES.key Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS Wrapped Symmetric Key written to file "3DES.key"
예 : 세션 전용 래핑 키를 사용하여 내보내기

이 예제는 해당 세션에서만 존재하는 키를 래핑 키로 사용하는 방법을 보여 줍니다. 내보낼 키가 래핑되었다가 즉시 언래핑되고 평문으로 전달되므로 래핑 키를 유지할 필요가 없습니다.

이 일련의 명령은 HSM에서 키 핸들이 8인 AES 키를 내보냅니다. 이 명령은 전용으로 생성된 AES 세션 키를 사용합니다.

첫 번째 명령은 genSymKey를 사용하여 256비트 AES 키를 생성합니다. 이 명령은 -sess 파라미터를 사용하여 현재 세션에만 존재하는 키를 생성합니다.

출력은 HSM이 키 262168을 생성했음을 보여 줍니다.

Command: genSymKey -t 31 -s 32 -l AES-wrapping-key -sess Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 262168 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS

다음으로, 예제는 내보낼 키인 키 8이 추출 가능한 대칭 키인지 확인합니다. 또한 래핑 키(키 262168)가 해당 세션에서만 존재하는 AES 키인지 확인합니다. findKey 명령을 사용할 수 있지만, 이 예제는 두 키의 속성을 모두 내보낸 다음 grep을 사용하여 파일에서 관련 속성 값을 찾습니다.

이러한 명령은 getAttribute에서 512-a(모두) 값을 사용하여 키 8262168의 모든 속성을 가져옵니다. 키 속성에 대한 자세한 내용은 KMU용 AWS CloudHSM 키 속성 참조 섹션을 참조하십시오.

getAttribute -o 8 -a 512 -out attributes/attr_8 getAttribute -o 262168 -a 512 -out attributes/attr_262168

다음 명령은 grep을 사용하여 내보낼 키(키 8)의 속성과 세션 전용 래핑 키(키 262168)를 확인합니다.

// Verify that the key to be exported is a symmetric key. $ grep -A 1 "OBJ_ATTR_CLASS" attributes/attr_8 OBJ_ATTR_CLASS 0x04 // Verify that the key to be exported is extractable. $ grep -A 1 "OBJ_ATTR_KEY_TYPE" attributes/attr_8 OBJ_ATTR_EXTRACTABLE 0x00000001 // Verify that the wrapping key is an AES key $ grep -A 1 "OBJ_ATTR_KEY_TYPE" attributes/attr_262168 OBJ_ATTR_KEY_TYPE 0x1f // Verify that the wrapping key is a session key $ grep -A 1 "OBJ_ATTR_TOKEN" attributes/attr_262168 OBJ_ATTR_TOKEN 0x00 // Verify that the wrapping key can be used for wrapping $ grep -A 1 "OBJ_ATTR_WRAP" attributes/attr_262168 OBJ_ATTR_WRAP 0x00000001

마지막으로, exSymKey 명령을 통해 세션 키(키 262168)를 래핑 키로 사용해 키 8을 내보냅니다.

세션이 끝나면 키 262168은 더 이상 존재하지 않습니다.

Command: exSymKey -k 8 -w 262168 -out aes256_H8.key Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS Wrapped Symmetric Key written to file "aes256_H8.key"
예 : 외부 언래핑 키 사용

이 예제는 the HSM 외부 언래핑 키를 사용하여 HSM에서 키를 내보내는 방법을 보여 줍니다.

HSM에서 키를 내보낼 때 래핑 키로 사용할 HSM의 AES 키를 지정합니다. 기본적으로 래핑 키는 내보낼 키를 래핑 및 언래핑하는 데 사용합니다. 하지만 -wk 파라미터를 사용하여 언래핑에 파일에 있는 외부 키를 사용하도록 exSymKey에게 알릴 수 있습니다. 그러면 -w 파라미터로 지정된 키가 대상 키를 래핑하고 -wk 파라미터로 지정된 파일의 키가 언래핑합니다.

래핑 키는 대칭 키인 AES 키여야 하므로, HSM의 래핑 키와 디스크의 언래핑 키는 키 구성 요소가 같아야 합니다. 이렇게 하려면 내보내기 작업 전에 HSM으로 래핑 키를 가져오거나 HSM에서 래핑 키를 내보내야 합니다.

이 예제에서는 키를 HSM 외부에서 생성하여 HSM으로 가져옵니다. 이 예제는 키의 내부 사본을 사용하여 가져오는 대칭 키를 래핑하고 파일에 저장된 키의 사본을 사용하여 언래핑합니다.

첫 번째 명령은 OpenSSL을 사용하여 256비트 AES 키를 생성합니다. 이 명령은 aes256-forImport.key 파일에 키를 저장합니다. OpenSSL 명령은 출력을 반환하지 않지만, 여러 명령을 사용하여 성공 여부를 확인할 수 있습니다. 이 예제는 wc(wordcount) 도구를 사용하여 파일이 32바이트의 데이터를 포함하는지 확인합니다.

$ openssl rand -out keys/aes256-forImport.key 32 $ wc keys/aes256-forImport.key 0 2 32 keys/aes256-forImport.key

이 명령은 imSymKey 명령을 사용하여 aes256-forImport.key 파일에서 HSM으로 AES 키를 가져옵니다. 명령이 완료되면 키가 HSM(키 핸들 262167) 및 aes256-forImport.key 파일에 존재합니다.

Command: imSymKey -f keys/aes256-forImport.key -t 31 -l aes256-imported -w 6 Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Unwrapped. Key Handle: 262167 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

이 명령은 내보내기 작업에 키를 사용합니다. 이 명령은 exSymKey를 사용하여 192비트 AES 키인 키 21을 내보냅니다. 키를 래핑하기 위해 이 명령은 HSM으로 가져온 사본인 키 262167을 사용합니다. 키를 언래핑하기 위해 aes256-forImport.key 파일에서 동일한 키 구성 요소를 사용합니다. 명령이 완료되면 키 21aes192_h21.key 파일로 내보내집니다.

Command: exSymKey -k 21 -w 262167 -out aes192_H21.key -wk aes256-forImport.key Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS Wrapped Symmetric Key written to file "aes192_H21.key"

파라미터

-h

명령에 대한 도움말을 표시합니다.

필수 항목 여부: 예

-k

내보낼 키의 키 핸들을 지정합니다. 이 파라미터는 필수 사항입니다. 소유하는 대칭 키의 키 핸들을 입력합니다. 이 파라미터는 필수 사항입니다. 키 핸들을 찾으려면 findKey 명령을 사용하십시오.

키를 내보낼 수 있는지 확인하려면 getAttribute 명령을 사용하여 상수 354로 표시되는 OBJ_ATTR_EXTRACTABLE 속성의 값을 가져옵니다. 또한 본인이 소유한 키만 내보낼 수 있습니다. 키의 소유자를 찾으려면 getKeyInfo 명령을 사용합니다.

필수 항목 여부: 예

-w

래핑 키의 키 핸들을 지정합니다. 이 파라미터는 필수 사항입니다. 키 핸들을 찾으려면 findKey 명령을 사용하십시오.

래핑 키는 내보낼 키를 암호화(래핑)한 후 암호 해독(언래핑)하는 데 사용되는 HSM의 키입니다. AES 키만 래핑 키로 사용할 수 있습니다.

임의의 AES 키(모든 크기)를 래핑 키로 사용할 수 있습니다. 래핑 키는 대상 키를 래핑했다 즉시 언래핑하므로 세션 전용 AES 키를 래핑 키로 사용할 수 있습니다. 키를 래핑 키로 사용할 수 있는지 판단하려면 getAttribute를 사용하여 262라는 상수로 표시되는 OBJ_ATTR_WRAP 속성의 값을 가져옵니다. 래핑 키를 생성하려면 genSymKey를 사용하여 AES 키(유형 31)를 생성합니다.

-wk 파라미터를 사용하여 외부 언래핑 키를 지정할 경우, 내보내기 시 -w 래핑 키가 키를 래핑하는 데 사용되고 언래핑에는 사용되지 않습니다.

참고

키 4는 지원되지 않는 내부 키를 나타냅니다. 래핑 키로 생성하고 관리하는 AES 키를 사용하는 것이 좋습니다.

필수 항목 여부: 예

-out

출력 파일의 경로 및 이름을 지정합니다. 명령이 성공하면 이 파일이 내보낸 키를 평문으로 포함합니다. 파일이 이미 존재하는 경우, 이 명령은 경고 없이 파일에 덮어씁니다.

필수 항목 여부: 예

-m

래핑 메커니즘을 지정합니다. 유일하게 유효한 값은 NIST_AES_WRAP 메커니즘을 나타내는 4입니다.

필수 항목 여부: 아니요

기본값: 4

-wk

지정된 파일의 AES 키를 사용하여 내보내는 키를 언래핑합니다. 평문 AES 키를 포함하는 파일의 경로 및 이름을 입력합니다.

이 파라미터를 포함할 경우, exSymKey-w 파라미터로 지정된 HSM의 키를 사용하여 내보낼 키를 래핑하고 -wk 파일의 키를 사용하여 언래핑합니다. -w-wk 파라미터 값은 동일한 평문 키로 확인되어야 합니다.

필수 항목 여부: 아니요

기본값: 래핑 키 또는 HSM을 사용하여 언래핑

관련 주제