genSymKey - AWS CloudHSM

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

genSymKey

key_mgmt_util 도구의 genSymKey 명령은 HSM에서 대칭 키를 생성합니다. 키 유형 및 크기를 지정하고, ID 및 레이블을 할당하고, 다른 HSM 사용자와 키를 공유할 수 있습니다. 또한 추출할 수 없는 키와 세션이 끝날 때 만료되는 키를 생성할 수도 있습니다. 명령이 성공하면 HSM이 키에 할당하는 키 핸들이 반환됩니다. 키 핸들을 사용하여 다른 명령에 대한 키를 식별할 수 있습니다.

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

구문

genSymKey -h genSymKey -t <key-type> -s <key-size> -l <label> [-id <key-ID>] [-min_srv <minimum-number-of-servers>] [-m_value <0..8>] [-nex] [-sess] [-timeout <number-of-seconds> ] [-u <user-ids>] [-attest]

다음 예제는 genSymKey를 사용하여 HSM에서 대칭 키를 생성하는 방법을 보여 줍니다.

작은 정보

HMAC 작업을 위해 이러한 예제에서 만든 키를 사용하려면 키를 생성한 후 OBJ_ATTR_SIGNOBJ_ATTR_VERIFYTRUE으로 설정해야 합니다. 이러한 값을 설정하려면 CloudHSM 관리 유틸리티(CMU)에서 setAttribute을 사용합니다. 자세한 내용은 setAttribute를 참조하십시오.

예 : AES 키 생성

이 명령은 레이블이 aes256인 256비트 AES 키를 생성합니다. 출력은 새 키의 키 핸들이 6임을 보여 줍니다.

Command: genSymKey -t 31 -s 32 -l aes256 Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 6 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
예 : 세션 키 생성

이 명령은 현재 세션에서만 유효한 추출할 수 없는 192비트 AES 키를 생성합니다. 키를 래핑(그런 다음 즉시 언래핑)하려면 이와 같은 키를 생성할 수 있습니다.

Command: genSymKey -t 31 -s 24 -l tmpAES -id wrap01 -nex -sess
예 : 빠르게 반환

이 명령은 라벨이 IT_test_key인 일반 512비트 키를 생성합니다. 이 명령은 키가 클러스터의 모든 HSM과 동기화될 때까지 기다리지 않습니다. 대신, 어느 한 HSM에서 키가 생성되는 시점(-min_srv 1) 또는 1초(-timeout 1) 중 먼저 도래하는 시점에 키를 반환합니다. 키가 시간 제한이 경과할 때까지 지정된 최소 수의 HSM에 동기화되지 않으면 키가 생성되지 않습니다. 다음 예제의 for 루프와 같이, 여러 개의 키를 생성하려면 스크립트에서 이러한 명령을 사용할 수 있습니다.

Command: genSymKey -t 16 -s 512 -l IT_test_key -min_srv 1 -timeout 1 $ for i in {1..30}; do /opt/cloudhsm/bin/key_mgmt_util singlecmd loginHSM -u CU -s example_user -p example_pwd genSymKey -l aes -t 31 -s 32 -min_srv 1 -timeout 1; done;
예 : 쿼럼 인증 일반 키 생성

이 명령은 라벨이 generic-mV2인 2,048비트 일반 보안 키를 생성합니다. 이 명령은 -u 파라미터를 사용하여 키를 다른 CU 사용자 6과 공유합니다. 이 명령은 -m_value 파라미터를 사용하여 키를 사용하는 암호화 작업에 대한 최소 2개의 승인을 쿼럼에 요청합니다. 또 -attest 파라미터를 사용하여 키가 생성되는 펌웨어의 무결성을 확인합니다.

출력은 이 명령이 키 핸들이 9인 키를 생성하고 클러스터 펌웨어에서의 증명 점검에 통과했음을 보여 줍니다.

Command: genSymKey -t 16 -s 2048 -l generic-mV2 -m_value 2 -u 6 -attest Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 9 Attestation Check : [PASS] Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
예 : 키 생성 및 검사

명령은 레이블이 3DES_shared이고 ID가 IT-02인 Triple DES 키를 생성합니다. 이 키는 현재 사용자, 사용자 4 및 사용자 5가 사용할 수 있습니다. ID가 클러스터에서 고유하지 않거나 현재 사용자가 사용자 4 또는 5일 경우 명령이 실패합니다.

출력은 새 키의 키 핸들이 7임을 보여줍니다.

Command: genSymKey -t 21 -s 24 -l 3DES_shared -id IT-02 -u 4,5 Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 7 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

새 3DES 키를 현재 사용자가 소유하고 사용자 4 및 5와 공유하는지 확인하려면 getKeyInfo를 사용합니다. 이 명령은 새 키에 할당된 핸들(Key Handle: 7)을 사용합니다.

출력은 이 키를 사용자 3이 소유하고 사용자 4 및 5와 공유하고 있음을 보여 줍니다.

Command: getKeyInfo -k 7 Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS Owned by user 3 also, shared to following 2 user(s): 4, 5

키의 다른 속성을 확인하려면 getAttribute를 사용합니다. 첫 번째 명령은 getAttribute를 사용하여 키 핸들 7(-o 7)의 모든 속성(-a 512)을 가져옵니다. 이 명령은 결과를 attr_7 파일에 기록합니다. 두 번째 명령은 cat을 사용하여 attr_7 파일의 내용을 가져옵니다.

이 명령은 키 7이 레이블이 3DES_shared(OBJ_ATTR_LABEL 3DES_shared)이고 ID가 IT_02(OBJ_ATTR_ID IT-02)인 192비트(OBJ_ATTR_VALUE_LEN 0x00000018 또는 24바이트) 3DES(OBJ_ATTR_KEY_TYPE 0x15) 대칭 키(OBJ_ATTR_CLASS 0x04)임을 확인해 줍니다. 키는 영구적이며(OBJ_ATTR_TOKEN 0x01) 추출 가능하며(OBJ_ATTR_EXTRACTABLE 0x01) 암호화, 암호 해독 및 래핑에 사용할 수 있습니다.

작은 정보

생성한 키의 속성(예: 형식, 길이, 레이블, ID)을 찾으려면 getAttribute를 사용합니다. 특정 사용자의 키를 찾으려면 를 사용하십시오. getKeyInfo 속성 값에 따라 키를 찾으려면 findKey를 사용합니다.

키 속성 해석에 대한 도움말은 키 속성 참조 섹션을 참조하십시오.

Command: getAttribute -o 7 -a 512 -out attr_7 got all attributes of size 444 attr cnt 17 Attributes dumped into attr_7 file Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS $ cat attr_7 OBJ_ATTR_CLASS 0x04 OBJ_ATTR_KEY_TYPE 0x15 OBJ_ATTR_TOKEN 0x01 OBJ_ATTR_PRIVATE 0x01 OBJ_ATTR_ENCRYPT 0x01 OBJ_ATTR_DECRYPT 0x01 OBJ_ATTR_WRAP 0x00 OBJ_ATTR_UNWRAP 0x00 OBJ_ATTR_SIGN 0x00 OBJ_ATTR_VERIFY 0x00 OBJ_ATTR_LOCAL 0x01 OBJ_ATTR_SENSITIVE 0x01 OBJ_ATTR_EXTRACTABLE 0x01 OBJ_ATTR_LABEL 3DES_shared OBJ_ATTR_ID IT-02 OBJ_ATTR_VALUE_LEN 0x00000018 OBJ_ATTR_KCV 0x59a46e
작은 정보

HMAC 작업을 위해 이러한 예제에서 만든 키를 사용하려면 키를 생성한 후 OBJ_ATTR_SIGNOBJ_ATTR_VERIFYTRUE으로 설정해야 합니다. 이러한 값을 설정하려면 CMU에서 setAttribute을 사용하십시오. 자세한 내용은 setAttribute를 참조하십시오.

파라미터

-h

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

필수 여부: 예

-t

대칭 키의 유형을 지정합니다. 키 유형을 나타내는 상수를 입력합니다. 예를 들어 AES 키를 생성하려면 -t 31을 입력합니다.

유효한 값:

  • 16: GENERIC_SECRET 일반 보안 키는 AES 키 요구 사항과 같은 특정 표준을 준수하지 않는 바이트 어레이입니다.

  • 18: RC4 RC4 키는 FIPS 모드 HSM에서 유효하지 않습니다.

  • 21: Triple DES(3DES). NIST 지침에 따라 2023년 이후 FIPS 모드의 클러스터에는 허용되지 않습니다. 비 FIPS 모드의 클러스터의 경우 2023년 이후에도 여전히 허용됩니다. 세부 정보는 FIPS 140 규정 준수: 2024 메커니즘 지원 중단 섹션을 참조하십시오.

  • 31: AES

필수 여부: 예

-s

키 크기를 바이트 단위로 지정합니다. 예를 들어 192비트 키를 생성하려면 24를 입력합니다.

각 키 유형에 유효한 값:

  • AES: 16(128비트), 24(192비트), 32(256비트)

  • 3DES: 24(192비트)

  • 일반 보안: <3584(28672비트)

필수 여부: 예

-l

키에 대해 사용자 정의 레이블을 지정합니다. 문자열을 입력합니다.

키 식별을 지원하는 임의의 문구를 사용할 수 있습니다. 레이블이 고유할 필요는 없으므로 이를 그룹에 사용하여 키를 분류할 수 있습니다.

필수 여부: 예

-attest

클러스터가 실행되는 펌웨어가 변조되지 않았는지 확인하는 무결성 점검을 실행합니다.

기본값: 증명 점검은 없음.

필수 여부: 아니요

-id

키에 대해 사용자 정의 식별자를 지정합니다. 클러스터에 고유한 문자열을 입력합니다. 기본값은 빈 문자열입니다.

기본값: ID 값이 없음.

필수 여부: 아니요

-min_srv

-timeout 파라미터의 값이 만료되기 전에 키가 동기화되는 HSM의 최소 개수를 지정합니다. 할당된 시간에 지정된 서버 개수에 키가 동기화되지 않으면 키가 생성되지 않습니다.

AWS CloudHSM 클러스터의 모든 HSM에 모든 키를 자동으로 동기화합니다. 이 과정을 더 빠르게 진행하려면 min_srv의 값을 클러스터의 HSM 개수보다 적게 설정하고 낮은 제한 시간 값을 설정합니다. 그러나 일부 요청은 키를 생성하지 않을 수 있음을 주의하십시오.

기본값: 1

필수 여부: 아니요

-m_value

키를 사용하는 모든 암호화 작업을 승인해야 하는 사용자의 수를 지정합니다. 0에서 8까지의 값을 입력합니다.

이 파라미터는 키에 대해 쿼럼 인증 요구 사항을 설정합니다. 기본값 0은 키에 대한 쿼럼 인증 기능을 비활성화합니다. 쿼럼 인증이 활성화되면 지정된 사용자 수는 토큰에 서명하여 그 키를 사용하는 암호화 작업과 그 키를 공유 또는 공유 해제하는 모든 작업을 승인해야 합니다.

키를 찾으려면 m_value 를 사용하십시오. getKeyInfo

이 파라미터는 명령의 -u 파라미터가 m_value 요구 사항을 충족할 만큼 충분히 많은 사용자와 키를 공유할 때만 유효합니다.

기본값: 0

필수 여부: 아니요

-nex

키를 추출할 수 없도록 합니다. 생성된 키는 HSM에서 내보내기를 수행할 수 없습니다.

기본값: 키를 추출할 수 있습니다.

필수 여부: 아니요

-sess

현재 세션에만 존재하는 키를 생성합니다. 세션이 종료된 후에는 키를 복구할 수 없습니다.

다른 키를 암호화한 후 다시 재빨리 암호를 해독하는 래핑 키와 같이 키가 일시적으로 필요한 경우 이 파라미터를 사용합니다. 세션 종료 후에 암호를 해독해야 할 수 있는 데이터를 암호화하는 데 세션 키를 사용해서는 안 됩니다.

세션 키를 영구적인 (토큰) 키로 변경하려면 setAttribute를 사용합니다.

기본값: 키는 영구적입니다.

필수 여부: 아니요

-timeout

명령이 min_srv 파라미터에서 지정한 HSM의 수에 키가 동기화하기를 기다리는 시간(단위: 초)을 지정합니다.

이 파라미터는 명령에서 min_srv 파라미터도 사용되는 경우에만 유효합니다.

기본값: 제한 시간 없음. 명령은 무기한 기다리다가 최소 서버 개수에 키가 동기화될 때만 복귀합니다.

필수 여부: 아니요

-u

지정된 사용자와 키를 공유합니다. 이 파라미터는 다른 HSM CU(Crypto User)에게 암호화 작업에 이 키를 사용할 수 있는 권한을 부여합니다.

u 5,6과 같이 쉼표로 구분된 HSM 사용자 ID 목록을 입력합니다. 현재 사용자의 HSM 사용자 ID는 포함하지 마십시오. HSM에서 CU의 HSM 사용자 ID를 찾으려면 listUsers를 사용하십시오. 기존 키를 공유 및 공유 해제하려면 cloudhsm_mgmt_util에서 shareKey를 사용합니다.

기본값: 현재 사용자만 키를 사용할 수 있습니다.

필수 여부: 아니요

관련 주제