기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
imSymKey
key_mgmt_util 도구의 imSymKey 명령은 파일에서 HSM으로 대칭 키의 일반 텍스트 복사본을 가져옵니다. 이를 사용하여 HSM 외부의 모든 방법으로 생성한 키와 HSM에서 내보낸 키 (예: exSymKey, 명령이 파일에 쓰는 키) 를 가져올 수 있습니다.
가져오기 프로세스 중에 imSymKey는 사용자가 선택하는 AES 키(래핑 키)를 사용하여 가져올 키를 래핑(암호화)한 후 언래핑(암호 해독)합니다. 하지만 imSymKey는 일반 텍스트 키를 포함하는 파일에서만 유효합니다. 암호화된 키를 내보내고 가져오려면 unWrapKeyWrapKey 및 명령을 사용합니다.
또한 imSymKey 명령은 대칭 키만 가져옵니다. 퍼블릭 키를 가져오려면 를 사용하십시오. importPubKey 프라이빗 키를 가져오려면 importPrivateKey또는 WrapKey를 사용하십시오.
참고
대칭 키나 프라이빗 키를 사용하여 암호로 보호된 PEM 키를 가져올 수 없습니다.
가져온 키는 HSM에서 생성된 키와 거의 비슷하게 동작합니다. 하지만 OBJ_ATTR_LOCAL 속성 값은 0입니다. 이는 객체가 로컬에서 생성되지 않았음을 의미합니다. 대칭 키를 가져올 때 다음 명령을 사용하여 공유할 수 있습니다. 키를 가져온 후 cloudhsm_mgmt_util의 shareKey
명령을 사용하여 키를 공유할 수 있습니다.
imSymKey -l aesShared -t 31 -f kms.key -w 3296 -u 5
키를 가져온 후, 키 파일을 마킹 또는 삭제해야 합니다. 이 명령은 동일한 키 자료를 여러 번 가져오도록 허용합니다. 키 핸들은 고유하지만 키 자료는 동일한 키가 여러 개 있을 경우 키 자료의 사용을 추적하기 어렵고 암호화 한도를 초과하는 것을 방지할 수 없습니다.
key_mgmt_util 명령을 실행하려면 먼저 key_mgmt_util을 시작하고 HSM에 암호화 사용자(crypto user)로 로그인해야 합니다.
구문
imSymKey -h imSymKey -f <key-file> -w <wrapping-key-handle> -t <key-type> -l <label> [-id <key-ID>] [-sess] [-wk <wrapping-key-file> ] [-attest] [-min_srv <minimum-number-of-servers>] [-timeout <number-of-seconds> ] [-u <user-ids>]
예제
다음 예제에서는 imSymKey를 사용하여 대칭 키를 HSM으로 가져오는 방법을 보여줍니다.
예 : AES 대칭 키 가져오기
이 예제에서는 imSymKey를 사용하여 AES 대칭 키를 HSM으로 가져옵니다.
첫 번째 명령은 OpenSSL을 사용하여 무작위 256비트 AES 대칭 키를 생성합니다. 이 명령은 aes256.key
파일에 키를 저장합니다.
$
openssl rand -out aes256-forImport.key 32
두 번째 명령은 imSymKey를 사용하여 AES 키를 aes256.key
파일에서 HSM으로 가져옵니다. 이 명령은 키 20(HSM의 AES 키)을 래핑 키로 사용하며 imported
레이블을 지정합니다. ID와 달리, 레이블은 클러스터에서 고유할 필요는 없습니다. -t
(유형) 파라미터 값은 AES를 나타내는 31
입니다.
출력은 파일의 키를 래핑 및 언래핑하고 HSM으로 가져와 키 핸들 262180을 할당한 것을 보여 줍니다.
Command:
imSymKey -f aes256.key -w 20 -t 31 -l imported
Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Unwrapped. Key Handle: 262180 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS
다음 명령은 getAttribute를 사용하여 새로 가져온 키의 OBJ_ATTR_LOCAL 속성(attribute 355)을 가져와 attr_262180
파일에 기록합니다.
Command:
getAttribute -o 262180 -a 355 -out attributes/attr_262180
Attributes dumped into attributes/attr_262180_imported file Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS
속성 파일을 검사할 때 OBJ_ATTR_LOCAL
속성 값이 0인 것을 알 수 있습니다. 이는 키 자료가 HSM에서 생성되지 않았음을 나타냅니다.
$
cat attributes/attr_262180_local
OBJ_ATTR_LOCAL 0x00000000
예 : 클러스터 간 대칭 키 이동하기
이 예제에서는 클러스터 간에 일반 텍스트 AES 키를 exSymKey사용하고 이동하는 imSymKey 방법을 보여줍니다. 이러한 프로세스를 사용하여 양쪽 클러스터의 HSM에 존재하는 AES 래핑을 생성할 수 있습니다. 공유 래핑 키가 준비되면 unWrapKeyWrapKey를 사용하여 클러스터 간에 암호화된 키를 이동할 수 있습니다.
이 작업을 수행하는 CU 사용자는 양쪽 클러스터의 HSM에 로그인할 수 있는 권한이 있어야 합니다.
첫 번째 명령은 32비트 AES 키인 키 14를 클러스터 1에서 파일로 내보내는 exSymKey데 사용합니다. aes.key
이 명령은 키 6, 즉 클러스터 1의 HSM에 대한 AES 키를 래핑 키로 사용합니다.
Command:
exSymKey -k 14 -w 6 -out aes.key
Cfm3WrapKey returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapHostKey returned: 0x00 : HSM Return: SUCCESS Wrapped Symmetric Key written to file "aes.key"
그런 다음 사용자가 클러스터 2의 key_mgmt_util에 로그인하고 imSymKey 명령을 실행하여 aes.key
파일의 키를 클러스터 2의 HSM으로 가져옵니다. 이 명령은 키 252152, 즉 클러스터 2의 HSM에 대한 AES 키를 래핑 키로 사용합니다.
WARP를 imSymKey 사용하는 래핑 키는 대상 키를 래핑한 후 즉시 래핑을 해제하므로 여러 클러스터의 래핑 키가 동일할 필요는 없습니다. exSymKey
출력은 성공적으로 키를 클러스터 2로 가져와 키 핸들 21을 할당한 것을 보여줍니다.
Command:
imSymKey -f aes.key -w 262152 -t 31 -l xcluster
Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Unwrapped. Key Handle: 21 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS
클러스터 1의 키 14와 클러스터 2의 키 21이 동일한 키 자료를 가지는 것을 증명하려면 각 키의 키 확인 값(KCV)을 가져옵니다. KCV 값이 동일한 경우 키 자료가 동일한 것입니다.
다음 명령은 클러스터 1에서 getAttribute를 사용하여 키 14의 KCV 속성(속성 371) 값을 attr_14_kcv
파일에 기록합니다. 그런 다음 cat 명령을 사용하여 attr_14_kcv
파일의 내용을 가져옵니다.
Command:
getAttribute -o 14 -a 371 -out attr_14_kcv
Attributes dumped into attr_14_kcv file
$
cat attr_14_kcv
OBJ_ATTR_KCV 0xc33cbd
이 비슷한 명령은 클러스터 2에서 setAttribute를 사용하여 키 21의 KCV 속성(속성 371) 값을 attr_21_kcv
파일에 기록합니다. 그런 다음 cat 명령을 사용하여 attr_21_kcv
파일의 내용을 가져옵니다.
Command:
getAttribute -o 21 -a 371 -out attr_21_kcv
Attributes dumped into attr_21_kcv file
$
cat attr_21_kcv
OBJ_ATTR_KCV 0xc33cbd
출력은 두 키의 KCV 값이 같다는 것을 보여 줍니다. 즉, 키 자료가 동일함을 증명합니다.
같은 키 자료가 양쪽 클러스터의 HSM에 존재하므로 이제 평문 키를 노출시키지 않고 클러스터 사이에서 암호화된 키를 공유할 수 있습니다. 예를 들어 wrapKey
명령을 래핑 키 14와 함께 사용하여 암호화된 키를 클러스터 1에서 내보낸 후, unWrapKey
를 래핑 키 21과 함께 암호화된 키를 클러스터 2로 가져올 수 있습니다.
예 : 세션 키 가져오기
이 명령은 imSymKey의 -sess
파라미터를 사용하여 현재 세션에서만 유효한 192비트 Triple DES 키를 가져옵니다.
이 명령은 -f
파라미터를 사용하여 가져올 키를 포함하는 파일을 지정하고, -t
파라미터를 사용하여 키 유형을 지정하고, -w
파라미터를 사용하여 래핑 키를 지정합니다. 이 명령은 -l
파라미터를 사용하여 키를 범주화하는 레이블을 지정하고 -id
파라미터를 사용하여 키의 고유한 표시 ID를 생성합니다. 또한 -attest
파라미터를 사용하여 키를 가져오는 펌웨어를 확인합니다.
출력은 성공적으로 키를 래핑 및 언래핑하고 HSM으로 가져와 키 핸들 37을 할당한 것을 보여 줍니다. 또한 증명 점검을 통과했습니다. 이는 펌웨어가 변조되지 않았음을 나타냅니다.
Command:
imSymKey -f 3des192.key -w 6 -t 21 -l temp -id test01 -sess -attest
Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Unwrapped. Key Handle: 37 Attestation Check : [PASS] Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
다음에는 getAttribute 또는 findKey 명령을 사용하여 새로 가져온 키의 속성을 확인할 수 있습니다. 다음 명령은 findKey를 사용하여 키 37에 명령에서 지정한 유형, 레이블 및 ID가 있으며 이 키가 세션 키임을 확인합니다. 출력의 5행에 표시된 대로, findKey는 모든 속성과 일치하는 유일한 키가 키 37임을 보고합니다.
Command:
findKey -t 21 -l temp -id test01 -sess 1
Total number of keys present 1 number of keys matched from start index 0::0 37 Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS
파라미터
- -attest
클러스터가 실행되는 펌웨어가 변조되지 않았는지 확인하는 무결성 점검을 실행합니다.
기본값: 증명 점검은 없음.
필수 여부: 아니요
- -f
-
가져올 키를 포함하는 파일을 지정합니다.
파일은 지정된 길이의 AES 또는 Triple DES 키의 평문 사본을 포함해야 합니다. RC4 및 DES 키는 FIPS 모드 HSM에서 유효하지 않습니다.
-
AES: 16, 24 또는 32바이트
-
Triple DES(3DES): 24바이트
필수 여부: 예
-
- -h
-
명령에 대한 도움말을 표시합니다.
필수 여부: 예
- -id
-
키에 대해 사용자 정의 식별자를 지정합니다. 클러스터에 고유한 문자열을 입력합니다. 기본값은 빈 문자열입니다.
기본값: ID 값이 없음.
필수 여부: 아니요
- -l
-
키에 대해 사용자 정의 레이블을 지정합니다. 문자열을 입력합니다.
키 식별을 지원하는 임의의 문구를 사용할 수 있습니다. 레이블이 고유할 필요는 없으므로 이를 그룹에 사용하여 키를 분류할 수 있습니다.
필수 여부: 예
- -min_srv
-
-timeout
파라미터의 값이 만료되기 전에 키가 동기화되는 HSM의 최소 개수를 지정합니다. 할당된 시간에 지정된 서버 개수에 키가 동기화되지 않으면 키가 생성되지 않습니다.AWS CloudHSM 클러스터의 모든 HSM에 모든 키를 자동으로 동기화합니다. 이 과정을 더 빠르게 진행하려면
min_srv
의 값을 클러스터의 HSM 개수보다 적게 설정하고 낮은 제한 시간 값을 설정합니다. 그러나 일부 요청은 키를 생성하지 않을 수 있음을 주의하십시오.기본값: 1
필수 여부: 아니요
- -sess
-
현재 세션에만 존재하는 키를 생성합니다. 세션이 종료된 후에는 키를 복구할 수 없습니다.
다른 키를 암호화한 후 다시 재빨리 암호를 해독하는 래핑 키와 같이 키가 일시적으로 필요한 경우 이 파라미터를 사용합니다. 세션 종료 후에 암호를 해독해야 할 수 있는 데이터를 암호화하는 데 세션 키를 사용해서는 안 됩니다.
세션 키를 영구적인 (토큰) 키로 변경하려면 setAttribute를 사용합니다.
기본값: 키는 영구적입니다.
필수 여부: 아니요
- -timeout
-
명령이
min_srv
파라미터에서 지정한 HSM의 수에 키가 동기화하기를 기다리는 시간(단위: 초)을 지정합니다.이 파라미터는 명령에서
min_srv
파라미터도 사용되는 경우에만 유효합니다.기본값: 제한 시간 없음. 명령은 무기한 기다리다가 최소 서버 개수에 키가 동기화될 때만 복귀합니다.
필수 여부: 아니요
- -t
-
대칭 키의 유형을 지정합니다. 키 유형을 나타내는 상수를 입력합니다. 예를 들어 AES 키를 생성하려면
-t 31
을 입력합니다.유효한 값:
-
21: Triple DES(3DES)
. -
31: AES
필수 여부: 예
-
- -u
-
가져오는 키를 지정된 사용자와 공유합니다. 이 파라미터는 다른 HSM CU(Crypto User)에게 암호화 작업에 이 키를 사용할 수 있는 권한을 부여합니다.
ID 한 개를 입력하거나, -u
5,6
과 같이 쉼표로 구분된 HSM 사용자 ID 목록을 입력합니다. 현재 사용자의 HSM 사용자 ID는 포함하지 마십시오. ID를 찾으려면 cloudhsm_mgmt_util 명령줄 도구에서 listUsers 명령을 사용하거나, key_mgmt_util 명령줄 도구에서 listUsers 명령을 사용합니다.필수 여부: 아니요
- -w
-
래핑 키의 키 핸들을 지정합니다. 이 파라미터는 필수 사항입니다. 키 핸들을 찾으려면 findKey 명령을 사용하십시오.
래핑 키는 가져오기 절차 도중 키를 암호화("래핑")한 후 암호 해독("언래핑")하는 데 사용되는 HSM의 키입니다. AES 키만 래핑 키로 사용할 수 있습니다.
임의의 AES 키(모든 크기)를 래핑 키로 사용할 수 있습니다. 래핑 키는 대상 키를 래핑했다 즉시 언래핑하므로 세션 전용 AES 키를 래핑 키로 사용할 수 있습니다. 키를 래핑 키로 사용할 수 있는지 여부를 확인하려면 getAttribute를 사용하여
OBJ_ATTR_WRAP
속성(262)의 값을 가져옵니다. 래핑 키를 생성하려면 AES 키 (유형 31) 를 생성하는 genSymKey데 사용합니다.-wk
파라미터를 사용하여 외부 래핑 키를 지정할 경우,-w
래핑 키가 가져오는 키를 언래핑하는 데 사용되고 래핑에는 사용되지 않습니다.참고
키 4는 지원되지 않는 내부 키입니다. 래핑 키로 생성하고 관리하는 AES 키를 사용하는 것이 좋습니다.
필수 여부: 예
- -wk
-
지정된 파일의 AES 키를 사용하여 가져오는 키를 래핑합니다. 평문 AES 키를 포함하는 파일의 경로 및 이름을 입력합니다.
이 파라미터를 포함할 경우, imSymKey는
-wk
파일의 키를 사용하여 가져올 키를 래핑하고,-w
파라미터로 지정된 HSM의 키를 사용하여 언래핑합니다.-w
및-wk
파라미터 값은 동일한 평문 키로 확인되어야 합니다.기본값: 래핑 키 또는 HSM을 사용하여 언래핑
필수 여부: 아니요