KMU를 사용하여 AWS CloudHSM ECC 키 페어 생성 - AWS CloudHSM

KMU를 사용하여 AWS CloudHSM ECC 키 페어 생성

AWS CloudHSM key_mgmt_util 도구의 genECCKeyPair 명령은 하드웨어 보안 모듈(HSM)에서 타원 곡선 암호(ECC) 키 페어를 생성합니다. genECCKeyPair 명령을 실행할 때 타원 곡선 식별자와 키 페어의 레이블을 지정해야 합니다. 또한 다른 CU 사용자와 프라이빗 키를 공유할 수 있으며 추출할 수 없는 키, 쿼럼 제어 키, 세션이 끝날 때 만료되는 키를 생성할 수 있습니다. 명령이 성공하면 HSM이 퍼블릭 및 프라이빗 ECC 키에 할당하는 키 핸들이 반환됩니다. 키 핸들을 사용하여 다른 명령에 대한 키를 식별할 수 있습니다.

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

작은 정보

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

구문

genECCKeyPair -h genECCKeyPair -i <EC curve id> -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]

예시

다음 예는 genECCKeyPair를 사용하여 HSM에서 ECC 키 페어를 생성하는 방법을 보여줍니다.

예 : ECC 키 페어 생성 및 검사

이 명령은 NID_secp384r1 타원 곡선과 ecc14 레이블을 사용하여 ECC 키 페어를 생성합니다. 출력은 프라이빗 키의 키 핸들이 262177이고 퍼블릭 키의 키 핸들이 262179임을 보여 줍니다. 레이블은 퍼블릭 및 프라이빗 키 모두에 적용됩니다.

Command: genECCKeyPair -i 14 -l ecc14 Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 262179 private key handle: 262177 Cluster Error Status Node id 2 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

키를 생성한 후 해당 속성을 검사할 수 있습니다. getAttribute를 사용하여 새 ECC 프라이빗 키의 모든 속성(상수 512로 표시)을 attr_262177 파일에 기록합니다.

Command: getAttribute -o 262177 -a 512 -out attr_262177 got all attributes of size 529 attr cnt 19 Attributes dumped into attr_262177 Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS

그런 다음 cat 명령을 사용하여 attr_262177 속성 파일의 내용을 봅니다. 출력은 키가 서명에는 사용할 수 있지만 암호화, 암호 해독, 래핑, 언래핑 또는 확인에는 사용할 수 없는 타원 곡선 프라이빗 키임을 보여 줍니다. 이 키는 영구적이며 내보낼 수 있습니다.

$ cat attr_262177 OBJ_ATTR_CLASS 0x03 OBJ_ATTR_KEY_TYPE 0x03 OBJ_ATTR_TOKEN 0x01 OBJ_ATTR_PRIVATE 0x01 OBJ_ATTR_ENCRYPT 0x00 OBJ_ATTR_DECRYPT 0x00 OBJ_ATTR_WRAP 0x00 OBJ_ATTR_UNWRAP 0x00 OBJ_ATTR_SIGN 0x01 OBJ_ATTR_VERIFY 0x00 OBJ_ATTR_LOCAL 0x01 OBJ_ATTR_SENSITIVE 0x01 OBJ_ATTR_EXTRACTABLE 0x01 OBJ_ATTR_LABEL ecc2 OBJ_ATTR_ID OBJ_ATTR_VALUE_LEN 0x0000008a OBJ_ATTR_KCV 0xbbb32a OBJ_ATTR_MODULUS 044a0f9d01d10f7437d9fa20995f0cc742552e5ba16d3d7e9a65a33e20ad3e569e68eb62477a9960a87911e6121d112b698e469a0329a665eba74ee5ac55eae9f5 OBJ_ATTR_MODULUS_BITS 0x0000019f
예 잘못된 EEC 곡선 사용

이 명령은 NID_X9_62_prime192v1 곡선을 사용하여 ECC 키 페어를 생성하려고 시도합니다. 이 타원 곡선은 FIPS 모드 HSM에 유효하지 않으므로 명령이 실패합니다. 메시지는 클러스터에 서버가 없다고 보고하지만, 일반적으로 이는 클러스터의 HSM에 문제가 있음을 나타내는 것은 아닙니다.

Command: genECCKeyPair -i 1 -l ecc1 Cfm3GenerateKeyPair returned: 0xb3 : HSM Error: This operation violates the current configured/FIPS policies Cluster Error Status Node id 0 and err state 0x30000085 : HSM CLUSTER ERROR: Server in cluster is unavailable

파라미터

-h

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

필수 항목 여부: 예

-i

타원 곡선의 식별자를 지정합니다. 식별자를 입력합니다.

유효한 값:

  • 2: NID_X9_62_prime256v1

  • 14: NID_secp384r1

  • 16: NID_secp256k1

필수 항목 여부: 예

-l

키 페어에 대해 사용자 정의 레이블을 지정합니다. 문자열을 입력합니다. 같은 레이블이 페어의 두 키에 적용됩니다. label에 허용되는 최대 크기는 127자입니다.

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

필수 항목 여부: 예

-id

키 페어에 대해 사용자 정의 식별자를 지정합니다. 클러스터에 고유한 문자열을 입력합니다. 기본값은 빈 문자열입니다. 사용자가 지정하는 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를 사용합니다.

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

필수 항목 여부: 아니요

-attest

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

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

필수 항목 여부: 아니요

관련 주제