

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

# KMU를 사용하여 AWS CloudHSM 대칭 키 생성
<a name="key_mgmt_util-genSymKey"></a>

 AWS CloudHSM key\_mgmt\_util 도구의 **genSymKey** 명령을 사용하여 하드웨어 보안 모듈(HSM)에서 대칭 키를 생성합니다. 키 유형 및 크기를 지정하고, ID 및 레이블을 할당하고, 다른 HSM 사용자와 키를 공유할 수 있습니다. 또한 추출할 수 없는 키와 세션이 끝날 때 만료되는 키를 생성할 수도 있습니다. 명령이 성공하면 HSM이 키에 할당하는 키 핸들이 반환됩니다. 키 핸들을 사용하여 다른 명령에 대한 키를 식별할 수 있습니다.

key\_mgmt\_util 명령을 실행하기 전에 [key\_mgmt\_util을 시작](key_mgmt_util-setup.md#key_mgmt_util-start)하고 CU(Crypto User)로 HSM에 [로그인](key_mgmt_util-log-in.md)해야 합니다.

## 구문
<a name="genSymKey-syntax"></a>

```
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]
```

## 예제
<a name="genSymKey-examples"></a>

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

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

**Example : 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
```

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

```
Command: genSymKey -t 31 -s 24 -l tmpAES -id wrap01 -nex -sess 
```

**Example : 빠르게 반환**  
이 명령은 라벨이 `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;
```

**Example : 쿼럼 인증 일반 키 생성**  
이 명령은 라벨이 `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
```

**Example : 키 생성 및 검사**  
명령은 레이블이 `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_mgmt_util-getKeyInfo.md)**를 사용합니다. 이 명령은 새 키에 할당된 핸들(`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](key_mgmt_util-getAttribute.md)를 사용합니다. 첫 번째 명령은 `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](key_mgmt_util-getAttribute.md)를 사용합니다. 특정 사용자의 키를 찾으려면 [getKeyInfo](key_mgmt_util-getKeyInfo.md)를 사용합니다. 속성 값에 따라 키를 찾으려면 [findKey](key_mgmt_util-findKey.md)를 사용합니다.
키 속성 해석에 대한 도움말은 [AWS CloudHSM KMU에 대한 키 속성 참조](key-attribute-table.md) 섹션을 참조하십시오.  

```
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_SIGN` 및 `OBJ_ATTR_VERIFY`를 `TRUE`으로 설정해야 합니다. 이러한 값을 설정하려면 CMU에서 **setAttribute**을 사용하십시오. 자세한 내용은 [setAttribute](cloudhsm_mgmt_util-setAttribute.md)를 참조하십시오.

## Parameters
<a name="genSymKey-params"></a>

**-h**  
명령에 대한 도움말을 표시합니다.  
필수 항목 여부: 예

**-t**  
대칭 키의 유형을 지정합니다. 키 유형을 나타내는 상수를 입력합니다. 예를 들어 AES 키를 생성하려면 `-t 31`을 입력합니다.  
유효한 값:   
+ 16: [GENERIC\_SECRET](http://docs.oasis-open.org/pkcs11/pkcs11-curr/v2.40/cos01/pkcs11-curr-v2.40-cos01.html#_Toc408226962) *일반 보안 키*는 AES 키 요구 사항과 같은 특정 표준을 준수하지 않는 바이트 어레이입니다.
+ 18: [RC4](https://en.wikipedia.org/wiki/RC4) RC4 키는 FIPS 모드 HSM에서 유효하지 않습니다.
+ 21: [Triple DES(3DES)](https://en.wikipedia.org/wiki/Triple_DES). NIST 지침에 따라 2023년 이후 FIPS 모드의 클러스터에는 허용되지 않습니다. 비FIPS 모드의 클러스터의 경우 2023년 이후에도 허용됩니다. 세부 정보는 [FIPS 140 규정 준수: 2024 메커니즘 지원 중단](compliance-dep-notif.md#compliance-dep-notif-1) 섹션을 참조하십시오.
+ 31: [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)
필수 항목 여부: 예

**-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](key_mgmt_util-getKeyInfo.md)를 사용합니다.  
이 파라미터는 명령의 `-u` 파라미터가 `m_value` 요구 사항을 충족할 만큼 충분히 많은 사용자와 키를 공유할 때만 유효합니다.  
기본값: 0  
필수 여부: 아니요

**-nex**  
키를 추출할 수 없도록 합니다. 생성된 키는 [HSM에서 내보내기](export-keys.md)를 수행할 수 없습니다.  
기본값: 키를 추출할 수 있습니다.  
필수 여부: 아니요

**-sess**  
현재 세션에만 존재하는 키를 생성합니다. 세션이 종료된 후에는 키를 복구할 수 없습니다.  
다른 키를 암호화한 후 다시 재빨리 암호를 해독하는 래핑 키와 같이 키가 일시적으로 필요한 경우 이 파라미터를 사용합니다. 세션 종료 후에 암호를 해독해야 할 수 있는 데이터를 암호화하는 데 세션 키를 사용해서는 안 됩니다.  
세션 키를 영구적인 (토큰) 키로 변경하려면 [setAttribute](key_mgmt_util-setAttribute.md)를 사용합니다.  
기본값: 키는 영구적입니다.  
필수 여부: 아니요

**-timeout**  
명령이 `min_srv` 파라미터에서 지정한 HSM의 수에 키가 동기화하기를 기다리는 시간(단위: 초)을 지정합니다.  
이 파라미터는 명령에서 `min_srv` 파라미터도 사용되는 경우에만 유효합니다.  
기본값: 제한 시간 없음. 명령은 무기한 기다리다가 최소 서버 개수에 키가 동기화될 때만 복귀합니다.  
필수 여부: 아니요

**-u**  
지정된 사용자와 키를 공유합니다. 이 파라미터는 다른 HSM CU(Crypto User)에게 암호화 작업에 이 키를 사용할 수 있는 권한을 부여합니다.  
`u 5,6`과 같이 쉼표로 구분된 HSM 사용자 ID 목록을 입력합니다. 현재 사용자의 HSM 사용자 ID는 포함하지 마십시오. HSM에서 CU의 HSM 사용자 ID를 찾으려면 [listUsers](key_mgmt_util-listUsers.md)를 사용하십시오. 기존 키를 공유 및 공유 해제하려면 cloudhsm\_mgmt\_util에서 [shareKey](cloudhsm_mgmt_util-shareKey.md)를 사용합니다.  
기본값: 현재 사용자만 키를 사용할 수 있습니다.  
필수 여부: 아니요

## 관련 주제
<a name="genSymKey-seealso"></a>
+ [exSymKey](key_mgmt_util-exSymKey.md)
+ [genRSAKeyPair](key_mgmt_util-genRSAKeyPair.md)
+ [genDSAKeyPair](key_mgmt_util-genDSAKeyPair.md)
+ [genECCKeyPair](key_mgmt_util-genECCKeyPair.md)
+ [setAttribute](cloudhsm_mgmt_util-setAttribute.md)