

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

# CloudHSM CLI에서 ML-DSA 메커니즘으로 서명 생성
<a name="cloudhsm_cli-crypto-sign-mldsa"></a>

CloudHSM CLI에서 **crypto sign ml-dsa** 명령을 사용하여 ML-DSA 프라이빗 키와 ML-DSA 서명 메커니즘을 사용하여 서명을 생성합니다.

**crypto sign ml-dsa** 명령을 사용하려면 먼저 AWS CloudHSM 클러스터에 ML-DSA 프라이빗 키가 있어야 합니다. `sign` 속성이 로 설정된 [CloudHSM CLI를 사용하여 비대칭 ML-DSA 키 페어 생성](cloudhsm_cli-key-generate-asymmetric-pair-mldsa.md) 명령을 사용하여 ML-DSA 프라이빗 키를 생성할 수 있습니다`true`.

**참고**  
[CloudHSM CLI의 암호화 확인 범주](cloudhsm_cli-crypto-verify.md) 하위 명령을 AWS CloudHSM 사용하여에서 서명을 확인할 수 있습니다.

원시 데이터 또는 계산된 외부 mu 데이터라는 두 가지 데이터 유형을 사용하여 서명을 생성할 수 있습니다.

## 외부 mu를 생성하는 단계
<a name="cloudhsm_cli-crypto-sign-mldsa-external-mu"></a>

`external-mu` 데이터 형식을 사용하려면 먼저 ML-DSA 퍼블릭 키를 사용하여 메시지에서 64바이트 mu 다이제스트를 생성해야 합니다.

1. **CloudHSM CLI를 사용하여 퍼블릭 키 PEM 파일을 생성합니다.**

   ```
   aws-cloudhsm > key generate-file --encoding pem --path /tmp/public_key.pem --filter attr.label="mldsa-public-key-example"
   ```

   자세한 내용은 [CloudHSM CLI를 사용하여 비대칭 키 내보내기](cloudhsm_cli-key-generate-file.md) 단원을 참조하십시오.

1. **메시지 접두사를 구성합니다.**

   접두사는 도메인 구분자, 컨텍스트의 길이 및 컨텍스트를 포함합니다. 도메인 구분자와 컨텍스트 길이의 기본값은 0입니다.

1. **메시지 접두사를 메시지에 추가합니다.**

1. **SHAKE256을 사용하여 퍼블릭 키를 해시하고 3단계의 결과에 추가합니다.**

1. **결과를 해시하여 64바이트 외부 mu를 생성합니다.**

### OpenSSL 예제
<a name="cloudhsm_cli-crypto-sign-mldsa-external-mu-openssl"></a>

다음 예제에서는 OpenSSL 3.5를 사용하여 외부 mu를 구성합니다.

```
{
    openssl asn1parse -inform PEM -in public_key.pem -strparse 17 -noout -out - 2>/dev/null |
    openssl dgst -provider default -shake256 -xoflen 64 -binary;
    
    printf '\x00\x00';
    
    echo -n "your message"
} | openssl dgst -provider default -shake256 -xoflen 64 -binary | base64
```

결과 base64로 인코딩된 64바이트 다이제스트를의 `--data` 파라미터로 사용합니다`--data-type external-mu`.

## 사용자 유형
<a name="cloudhsm_cli-crypto-sign-mldsa-userType"></a>

다음 사용자 유형이 이 명령을 실행할 수 있습니다.
+ CU(Crypto User)

## 요구 사항
<a name="cloudhsm_cli-crypto-sign-mldsa-requirements"></a>
+ 이 명령을 실행하려면 CU로 로그인해야 합니다.

## 구문
<a name="cloudhsm_cli-crypto-sign-mldsa-syntax"></a>

```
aws-cloudhsm > help crypto sign ml-dsa
Signs data with a ML-DSA private key

Usage: crypto sign ml-dsa [OPTIONS] --key-filter {{<KEY_FILTER>}} --data-type {{<DATA_TYPE>}} --hash-function {{<HASH_FUNCTION>}}

Options:
      --key-filter {{<KEY_FILTER>}}
          The key reference or a list of key attributes to filter for a key to sign with

      --hash-function {{<HASH_FUNCTION>}}
          The hash function to use with ML-DSA. [possible values: shake256]

      --data {{<DATA>}}
          Data to be signed

      --data-path {{<DATA_PATH>}}
          Path to file containing data to be signed

      --data-type {{<DATA_TYPE>}}
          Specifies if the data is raw or has been processed using external mu. [possible values: raw, external-mu]

      --approval {{<APPROVAL>}}
          File path of signed quorum token file to approve operation. Necessary for keys with quorum enabled

  -h, --help
          Print help
```

## 예제
<a name="crypto-sign-mldsa-examples"></a>

**예: ML-DSA 프라이빗 키를 사용하여 원시 데이터 서명**

이 명령을 사용하여 ML-DSA 프라이빗 키로 원시 데이터에 서명합니다.

```
aws-cloudhsm > crypto sign ml-dsa \
    --key-filter attr.label=ml-dsa-private-key-example \
    --data-type raw \
    --hash-function shake256 \
    --data YWJjMTIz
{
  "error_code": 0,
  "data": {
    "key-reference": "0x0000000000000f63",
    "signature": "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"
  }
}
```

**예: ML-DSA 프라이빗 키를 사용하여 외부 mu 데이터 서명**

이 명령을 사용하여 ML-DSA 프라이빗 키로 외부 mu 데이터에 서명합니다.

```
aws-cloudhsm > crypto sign ml-dsa \
    --key-filter attr.label="MLDSA_private_key" \
    --data-type external-mu \
    --hash-function shake256 \
    --data DgFbkWgb9fbejQUSbJ09/Nmp7phb714RTkWdNAwQqd9u7M7XCWbI8EoaIeGcZCUwIzaG6kDavZDYxCcaEicbTw==
{
  "error_code": 0,
  "data": {
    "key-reference": "0x0000000000000be2",
    "signature": "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"
  }
}
```

**예: 파일 경로에서 데이터 서명**

이 명령을 사용하여 ML-DSA 프라이빗 키를 사용하여 파일의 데이터에 서명합니다.

```
aws-cloudhsm > crypto sign ml-dsa \
    --key-filter attr.label=ml-dsa-private-key-example \
    --data-type raw \
    --hash-function shake256 \
    --data-path /tmp/data.bin
{
  "error_code": 0,
  "data": {
    "key-reference": "0x0000000000000f63",
    "signature": "..."
  }
}
```

## 인수
<a name="cloudhsm_cli-crypto-sign-mldsa-arguments"></a>

**{{<CLUSTER\_ID>}}**  
이 작업을 실행할 클러스터의 ID입니다.  
필수: 여러 클러스터가 [구성된](cloudhsm_cli-configs-multi-cluster.md) 경우.

**{{<DATA>}}**  
서명할 Base64 인코딩 데이터.  
필수: 예(데이터 경로를 통해 제공되지 않는 경우)

**{{<DATA\_PATH>}}**  
서명할 데이터의 위치를 지정합니다.  
필수: 예(데이터를 통해 제공되지 않는 경우)

**{{<HASH\_FUNCTION>}}**  
ML-DSA와 함께 사용할 해시 함수를 지정합니다.  
유효한 값:  
+ shake256
필수 항목 여부: 예

**{{<KEY\_FILTER>}}**  
일치하는 키를 선택하기 위한 키 참조(예: `key-reference=0xabc`) 또는 attr.KEY\_ATTRIBUTE\_NAME=KEY\_ATTRIBUTE\_VALUE 형식의 키 속성의 공백으로 구분된 목록입니다.  
지원되는 CloudHSM CLI 키 속성 목록은 CloudHSM CLI용 키 속성 섹션을 참조하세요.  
필수 항목 여부: 예

**{{<APPROVAL>}}**  
작업을 승인할 서명된 쿼럼 토큰 파일의 파일 경로를 지정합니다. 프라이빗 키의 키 사용 서비스 쿼럼 값이 1보다 큰 경우에만 필요합니다.  
필수 여부: 아니요

**{{<DATA\_TYPE>}}**  
제공된 데이터의 데이터 형식을 지정합니다. 해시되지 않은 데이터에 `raw`를 사용하고 계산된 외부 mu 데이터에 `external-mu`를 사용합니다.  
유효한 값:  
+ raw
+ 외부-mu
필수: 예

## 관련 주제
<a name="cloudhsm_cli-crypto-sign-mldsa-seealso"></a>
+ [CloudHSM CLI에서 암호화 서명 범주](cloudhsm_cli-crypto-sign.md)
+ [CloudHSM CLI에서 ML-DSA 메커니즘으로 서명된 서명 확인](cloudhsm_cli-crypto-verify-mldsa.md)
+ [CloudHSM CLI를 사용하여 비대칭 ML-DSA 키 페어 생성](cloudhsm_cli-key-generate-asymmetric-pair-mldsa.md)