

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

# AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리에 지원되는 메커니즘
<a name="pkcs11-mechanisms"></a>

PKCS \$111 라이브러리는 PKCS \$111 사양 버전 2.40을 준수합니다. PKCS\$111을 사용하여 암호화 기능을 호출하려면 주어진 메커니즘을 가진 함수를 호출하십시오. 다음 섹션에서는 AWS CloudHSM 클라이언트 SDK 5에서 지원하는 함수와 메커니즘의 조합을 요약합니다.

PKCS \$111용 소프트웨어 라이브러리는 다음과 같은 알고리즘을 지원합니다.
+ **암호화 및 복호화** - AES-CBC, AES-CTR, AES-ECB, AES-GCM, DES3-CBC, DES3-ECB, RSA-OAEP 및 RSA-PKCS
+ **서명 및 확인** – RSA, HMAC 및 ECDSA(해싱 사용 및 사용 안 함)
+ **해시/다이제스트** – SHA1, SHA224, SHA256, SHA384 및 SHA512
+ **키 랩** – AES 키 랩,[1](#mech1) AES-GCM, RSA-AES 및 RSA-OAEP
+ **키 파생** - SP800-108 카운터 KDF 및 KDF가 포함된 ECDH(지원되는 KDF 알고리즘은 SHA1, SHA224, SHA256, SHA384, SHA512를 사용하는 X9.63)

**Topics**
+ [키 및 키 페어 함수 생성](#pkcs11-mech-function-genkey)
+ [서명 및 인증 기능](#pkcs11-mech-function-signverify)
+ [서명, 복구 및 복구 기능 확인](#pkcs11-mech-function-sr-vr)
+ [다이제스트 기능](#pkcs11-mech-function-digest)
+ [암호화 및 해독 기능](#pkcs11-mech-function-enc-dec)
+ [키 함수 유도](#pkcs11-mech-function-derive-key)
+ [랩 및 언랩 해제 기능](#pkcs11-mech-function-wrap-unwrap)
+ [각 메커니즘의 최대 데이터 크기](#pkcs11-mech-max)
+ [메커니즘 주석](#pkcs11-mech-annotations)

## 키 및 키 페어 함수 생성
<a name="pkcs11-mech-function-genkey"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리를 사용하면 키 및 키 페어 생성 함수에 다음 메커니즘을 사용할 수 있습니다.
+ `CKM_RSA_PKCS_KEY_PAIR_GEN`
+ `CKM_RSA_X9_31_KEY_PAIR_GEN` - 이 메커니즘은 기능적으로 `CKM_RSA_PKCS_KEY_PAIR_GEN` 메커니즘과 동일하지만 `p` 및 `q` 생성에 대해 더 강력한 보장을 제공합니다.
+ `CKM_EC_KEY_PAIR_GEN`
+ `CKM_GENERIC_SECRET_KEY_GEN`
+ `CKM_AES_KEY_GEN`
+ `CKM_DES3_KEY_GEN`— [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다. 

## 서명 및 인증 기능
<a name="pkcs11-mech-function-signverify"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리를 사용하면 서명 및 확인 함수에 다음 메커니즘을 사용할 수 있습니다. Client SDK 5를 사용하면 데이터가 소프트웨어에서 로컬로 해시됩니다. 즉, SDK로 해시할 수 있는 데이터 크기에는 제한이 없습니다.

Client SDK 5를 사용하면 RSA 및 ECDSA 해싱이 로컬에서 수행되므로 데이터 제한이 없습니다. HMAC에는 데이터 제한이 있습니다. 자세한 내용은 [2](#mech2) 각주를 참조하십시오.

**RSA**
+ `CKM_RSA_X_509`
+ `CKM_RSA_PKCS` – 단일 부분 작업에만 해당됩니다.
+ `CKM_RSA_PKCS_PSS` – 단일 부분 작업에만 해당됩니다.
+ `CKM_SHA1_RSA_PKCS`
+ `CKM_SHA224_RSA_PKCS`
+ `CKM_SHA256_RSA_PKCS`
+ `CKM_SHA384_RSA_PKCS`
+ `CKM_SHA512_RSA_PKCS`
+ `CKM_SHA512_RSA_PKCS`
+ `CKM_SHA1_RSA_PKCS_PSS`
+ `CKM_SHA224_RSA_PKCS_PSS`
+ `CKM_SHA256_RSA_PKCS_PSS`
+ `CKM_SHA384_RSA_PKCS_PSS`
+ `CKM_SHA512_RSA_PKCS_PSS`

**ECDSA**
+ `CKM_ECDSA` – 단일 부분 작업에만 해당됩니다.
+ `CKM_ECDSA_SHA1`
+ `CKM_ECDSA_SHA224`
+ `CKM_ECDSA_SHA256`
+ `CKM_ECDSA_SHA384`
+ `CKM_ECDSA_SHA512`

**HMAC**
+ `CKM_SHA_1_HMAC`[2](#mech2)
+ `CKM_SHA224_HMAC`[2](#mech2)
+ `CKM_SHA256_HMAC`[2](#mech2)
+ `CKM_SHA384_HMAC`[2](#mech2)
+ `CKM_SHA512_HMAC`[2](#mech2)

**CMAC**
+ `CKM_AES_CMAC`

## 서명, 복구 및 복구 기능 확인
<a name="pkcs11-mech-function-sr-vr"></a>

Client SDK 5는 서명 복구 및 복구 확인 기능을 지원하지 않습니다.

## 다이제스트 기능
<a name="pkcs11-mech-function-digest"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리를 사용하면 다이제스트 함수에 다음 메커니즘을 사용할 수 있습니다. Client SDK 5를 사용하면 데이터가 소프트웨어에서 로컬로 해시됩니다. 즉, SDK로 해시할 수 있는 데이터 크기에는 제한이 없습니다.
+ `CKM_SHA_1`
+ `CKM_SHA224`
+ `CKM_SHA256`
+ `CKM_SHA384`
+ `CKM_SHA512`

## 암호화 및 해독 기능
<a name="pkcs11-mech-function-enc-dec"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리를 사용하면 암호화 및 해독 함수에 다음 메커니즘을 사용할 수 있습니다.
+ `CKM_RSA_X_509`
+ `CKM_RSA_PKCS` – 단일 부분 작업에만 해당됩니다. [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다. 
+ `CKM_RSA_PKCS_OAEP` – 단일 부분 작업에만 해당됩니다.
+ `CKM_AES_ECB`
+ `CKM_AES_CTR`
+ `CKM_AES_CBC`
+ `CKM_AES_CBC_PAD`
+ `CKM_DES3_CBC`— [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다.
+ `CKM_DES3_ECB`— [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다.
+ `CKM_DES3_CBC_PAD`— [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다.
+  `CKM_AES_GCM` [1](#mech1), [2](#mech2)
+ `CKM_CLOUDHSM_AES_GCM`[3](#mech3)

## 키 함수 유도
<a name="pkcs11-mech-function-derive-key"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리는 다음과 같은 키 파생 메커니즘을 지원합니다.
+ `CKM_SP800_108_COUNTER_KDF`
+ `CKM_ECDH1_DERIVE` - 다음 공급업체 정의 KDF 유형[6](#kdf6)을 사용하여 ECDH 키 파생을 지원합니다.
  + `CKD_CLOUDHSM_X963_SHA1_KDF` - SHA1[7](#kdf7)을 사용하는 X9.63 KDF
  + `CKD_CLOUDHSM_X963_SHA224_KDF` - SHA224[7](#kdf7)를 사용하는 X9.63 KDF
  + `CKD_CLOUDHSM_X963_SHA256_KDF` - SHA256[7](#kdf7)를 사용하는 X9.63 KDF
  + `CKD_CLOUDHSM_X963_SHA384_KDF` - SHA384[7](#kdf7)를 사용하는 X9.63 KDF
  + `CKD_CLOUDHSM_X963_SHA512_KDF` - SHA512[7](#kdf7)를 사용하는 X9.63 KDF

## 랩 및 언랩 해제 기능
<a name="pkcs11-mech-function-wrap-unwrap"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리를 사용하면 래핑 및 언래핑 함수에 다음 메커니즘을 사용할 수 있습니다.

[AES 키 래핑](manage-aes-key-wrapping.md)에 대한 추가 정보는 AES 키 래핑을 참조하십시오.
+ `CKM_RSA_PKCS` – 단일 부분 작업에만 해당됩니다. [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다. 
+ `CKM_RSA_PKCS_OAEP`[4](#mech4)
+ `CKM_AES_GCM`[1](#mech1), [3](#mech3)
+ `CKM_CLOUDHSM_AES_GCM`[3](#mech3)
+ `CKM_RSA_AES_KEY_WRAP`
+ `CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD`[3](#mech3)
+ `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD`[3](#mech3)
+ `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD`[3](#mech3)

## 각 메커니즘의 최대 데이터 크기
<a name="pkcs11-mech-max"></a>

다음 표에는 각 메커니즘에 설정된 최대 데이터 크기가 나와 있습니다.


**최대 데이터 세트 크기**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/pkcs11-mechanisms.html)

## 메커니즘 주석
<a name="pkcs11-mech-annotations"></a>
+ [1] AES-GCM 암호화를 수행할 때 HSM은 애플리케이션의 IV(초기화 벡터) 데이터를 허용하지 않습니다. 생성되는 IV를 사용해야 합니다. HSM이 제공하는 12바이트 IV는 사용자가 제공하는 `CK_GCM_PARAMS` 파라미터 구조의 pIV 요소가 가리키는 메모리 참조에 기록됩니다. 사용자의 혼동을 피하기 위해 버전 1.1.1 이상인 PKCS\$111 SDK는 AES-GCM 암호화가 초기화될 때 pIV가 초기화된 버퍼를 가리키는지 확인합니다.
+ [2] 다음 메커니즘 중 하나를 사용하여 데이터에 대해 작업을 수행할 때 데이터 버퍼가 최대 데이터 크기를 초과하면 작업 결과 오류가 발생합니다. 이러한 메커니즘의 경우 모든 데이터 처리는 HSM 내에서 이루어져야 합니다. 각 메커니즘의 최대 데이터 크기 세트에 대한 자세한 내용은 [각 메커니즘의 최대 데이터 크기](#pkcs11-mech-max) 단원을 참조하십시오.
+ [3] 공급업체가 정의한 메커니즘. CloudHSM 공급자 정의 메커니즘을 사용하려면 컴파일하는 동안 PKCS \$111 애플리케이션에 `/opt/cloudhsm/include/pkcs11/pkcs11t.h`가 포함되어 있어야 합니다.

  `CKM_CLOUDHSM_AES_GCM`: 이 독점 메커니즘은 `CKM_AES_GCM` 표준에 대한 프로그래밍 방식으로 안전한 대안입니다. 이 메커니즘은 암호 초기화 중에 제공되는 `CK_GCM_PARAMS` 구조로 다시 암호 텍스트를 쓰는 대신 암호 텍스트 앞에 HSM에 의해 생성된 IV를 추가합니다. 이 메커니즘은 `C_Encrypt`, `C_WrapKey`, `C_Decrypt` 및 `C_UnwrapKey` 함수와 함께 사용할 수 있습니다. 이 메커니즘을 사용할 때는 `CK_GCM_PARAMS` 구문의 piV 변수를 `NULL`로 설정해야 합니다. `C_Decrypt` 및 `C_UnwrapKey`와 함께 이 메커니즘을 사용할 경우, IV는 언래핑되는 암호화 텍스트 앞에 추가될 것으로 예상됩니다.

  `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD`: PKCS \$15 패딩을 사용하는 AES 키 래핑

  `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD`: 제로 패딩을 사용하는 AES 키 래핑
+ [4] 다음 `CK_MECHANISM_TYPE` 및 `CK_RSA_PKCS_MGF_TYPE`은 `CKM_RSA_PKCS_OAEP`에 대해 `CK_RSA_PKCS_OAEP_PARAMS`로 지원됩니다.
  + `CKG_MGF1_SHA1`을 사용하는 `CKM_SHA_1`
  + `CKG_MGF1_SHA224`를 사용하는 `CKM_SHA224`
  + `CKG_MGF1_SHA256`를 사용하는 `CKM_SHA256`
  + `CKM_MGF1_SHA384`를 사용하는 `CKM_SHA384`
  + `CKM_MGF1_SHA512`를 사용하는 `CKM_SHA512`
+ [5] NIST 지침에 따라 2023년 이후 FIPS 모드의 클러스터에는 허용되지 않습니다. 비FIPS 모드의 클러스터의 경우 2023년 이후에도 허용됩니다. 세부 정보는 [FIPS 140 규정 준수: 2024 메커니즘 지원 중단](compliance-dep-notif.md#compliance-dep-notif-1) 섹션을 참조하세요.
+ [6] 공급자가 정의한 유형입니다. CloudHSM 공급자 정의 유형을 사용하려면 컴파일하는 동안 PKCS \$111 애플리케이션에 `cloudhsm_pkcs11_vendor_defs.h`가 포함되어 있어야 합니다. 이는 Linux 기반 플랫폼의 경우 `/opt/cloudhsm/include/pkcs11/cloudhsm_pkcs11_vendor_defs.h`, Windows 기반 플랫폼의 경우 `C:\Program Files\Amazon\CloudHSM\include\pkcs11\cloudhsm_pkcs11_vendor_defs.h`에서 찾을 수 있습니다.
+ [7] 키 파생 함수(KDFs)는 [NIST Special Publication 800-56A 개정 3](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf)에 지정되어 있습니다.