

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

# 용 PKCS \$111 라이브러리에 대해 알려진 문제 AWS CloudHSM
<a name="ki-pkcs11-sdk"></a>

다음 문제는에 대한 PKCS \$111 라이브러리에 영향을 미칩니다 AWS CloudHSM.

**Topics**
+ [문제: PKCS \$111 라이브러리 버전 3.0.0의 AES 키 래핑은 사용 전에 IV의 유효성을 검사하지 않습니다.](#ki-pkcs11-1)
+ [문제: PKCS\$111 SDK 2.0.4 및 이전 버전에서는 AES 키 래핑 및 래핑 해제에 항상 기본 IV인 `0xA6A6A6A6A6A6A6A6`를 사용했습니다.](#ki-pkcs11-2)
+ [문제: `CKA_DERIVE` 속성이 지원 및 처리되지 않았습니다.](#ki-pkcs11-3)
+ [문제: `CKA_SENSITIVE` 속성이 지원 및 처리되지 않았습니다.](#ki-pkcs11-4)
+ [문제: 멀티파트 해시 및 서명이 지원되지 않습니다.](#ki-pkcs11-5)
+ [문제: `C_GenerateKeyPair`는 표준을 준수하는 방식으로 개인 템플릿의 `CKA_MODULUS_BITS` 또는 `CKA_PUBLIC_EXPONENT`를 처리하지 않습니다.](#ki-pkcs11-6)
+ [문제: `CKM_AES_GCM` 메커니즘을 사용할 때 `C_Encrypt` 및 `C_Decrypt` API 작업에 대한 버퍼는 16KB를 초과할 수 없습니다.](#ki-pkcs11-8)
+ [문제: ECDH(Elliptic-curve Diffie-Hellman) 키 파생은 HSM 내에서 부분적으로 실행됩니다.](#ki-pkcs11-9)
+ [문제: secp256k1 서명 확인이 CentOS6 및 RHEL 6 등의 EL6 플랫폼에서 실패합니다.](#ki-pkcs11-10)
+ [문제: 잘못된 함수 호출 순서로 인해 실패하는 대신 정의되지 않은 결과가 발생합니다.](#ki-pkcs11-11)
+ [문제: SDK 5에서는 읽기 전용 세션이 지원되지 않습니다.](#ki-pkcs11-13)
+ [문제: `cryptoki.h` 헤더 파일이 Windows 전용입니다.](#ki-pkcs11-14)

## 문제: PKCS \$111 라이브러리 버전 3.0.0의 AES 키 래핑은 사용 전에 IV의 유효성을 검사하지 않습니다.
<a name="ki-pkcs11-1"></a>

길이가 8바이트보다 짧은 IV를 지정하면 사용하기 전에 예측할 수 없는 바이트로 패딩됩니다.

**참고**  
이는 `CKM_AES_KEY_WRAP` 메커니즘을 사용하는 `C_WrapKey`에만 영향을 미칩니다.
+ **영향:** PKCS \$111 SDK 3.0.0에서 8바이트보다 짧은 IV를 제공하는 경우 키를 언래핑할 수 있습니다.
+ **해결 방법: **
  + AES 키 래핑 중에 IV 길이를 올바르게 적용하는 PKCS \$111 라이브러리 3.0.1 버전 이상으로 업그레이드하는 것이 좋습니다. NULL IV를 전달하도록 래핑 코드를 수정하거나 `0xA6A6A6A6A6A6A6A6`의 기본 IV를 지정하십시오. 자세한 내용은 [AES 키 래핑에 대한 규정 미준수 길이의 사용자 지정 IV](troubleshooting-aes-keys.md)를 참조하십시오.
  + 8바이트보다 짧은 IV를 사용하여 PKCS \$111 라이브러리 3.0.0 버전으로 키를 래핑한 경우 [지원](https://aws.amazon.com/support)을 요청하십시오.
+ **해결 상태:** 이 문제는 PKCS \$111 라이브러리 3.0.1 버전에서 해결되었습니다. AES 키 래핑을 사용하여 키를 래핑하려면 NULL 또는 8바이트 길이의 IV를 지정합니다.

## 문제: PKCS\$111 SDK 2.0.4 및 이전 버전에서는 AES 키 래핑 및 래핑 해제에 항상 기본 IV인 `0xA6A6A6A6A6A6A6A6`를 사용했습니다.
<a name="ki-pkcs11-2"></a>

사용자 제공 IV는 자동으로 무시되었습니다.

**참고**  
이는 `CKM_AES_KEY_WRAP` 메커니즘을 사용하는 `C_WrapKey`에만 영향을 미칩니다.
+ **영향:** 
  + PKCS\$111 SDK 2.0.4 이전 버전과 사용자 제공 IV를 사용한 경우 키가 `0xA6A6A6A6A6A6A6A6`의 기본 IV로 래핑됩니다.
  + PKCS\$111 SDK 3.0.0 이상 버전과 사용자 제공 IV를 사용한 경우 키가 사용자 제공 IV로 래핑됩니다.
+ **해결 방법:**
  + PKCS\$111 SDK 2.0.4 이전 버전으로 래핑된 키의 언래핑하려면 `0xA6A6A6A6A6A6A6A6`의 기본 IV를 사용합니다.
  + PKCS \$111 SDK 3.0.0 이상 버전으로 래핑된 키를 언래핑하려면 사용자 제공 IV를 사용합니다.
+ **해결 상태:** NULL IV를 전달하도록 래핑 및 언래핑 코드를 수정하거나 `0xA6A6A6A6A6A6A6A6`의 기본 IV를 지정하는 것이 좋습니다.

## 문제: `CKA_DERIVE` 속성이 지원 및 처리되지 않았습니다.
<a name="ki-pkcs11-3"></a>
+ **해결 상태: **`FALSE`로 설정될 경우 `CKA_DERIVE`를 수락하도록 수정했습니다. 키 추출 함수를 AWS CloudHSM에 추가하기 전에는 `CKA_DERIVE`를 `TRUE`로 설정할 수 없습니다. 수정의 이점을 누리기 위해서는 클라이언트 및 SDK를 버전 1.1.1 이상으로 업데이트해야 합니다.

## 문제: `CKA_SENSITIVE` 속성이 지원 및 처리되지 않았습니다.
<a name="ki-pkcs11-4"></a>
+ **Resolution status(해결 상태):** `CKA_SENSITIVE` 속성을 수락하고 적절하게 인식하도록 수정을 했습니다. 수정의 이점을 누리기 위해서는 클라이언트 및 SDK를 버전 1.1.1 이상으로 업데이트해야 합니다.

## 문제: 멀티파트 해시 및 서명이 지원되지 않습니다.
<a name="ki-pkcs11-5"></a>
+ **영향: **`C_DigestUpdate` 및 `C_DigestFinal`이 구현되지 않습니다. `C_SignFinal`도 구현되지 않으며 `NULL`이 아닌 버퍼에 대한 `CKR_ARGUMENTS_BAD`로 실패합니다.
+ **해결 방법: **애플리케이션 내에서 데이터를 해시하고 해시 서명 AWS CloudHSM 에만를 사용합니다.
+ **해결 상태: **멀티파트 해시를 올바르게 구현하도록 클라이언트와 SDK를 수정하고 있습니다. AWS CloudHSM 포럼 및 버전 기록 페이지에 업데이트가 발표됩니다.

## 문제: `C_GenerateKeyPair`는 표준을 준수하는 방식으로 개인 템플릿의 `CKA_MODULUS_BITS` 또는 `CKA_PUBLIC_EXPONENT`를 처리하지 않습니다.
<a name="ki-pkcs11-6"></a>
+ **영향: 프라이빗 템플릿에 ** or `C_GenerateKeyPair`가 포함되는 경우 `CKA_TEMPLATE_INCONSISTENT``CKA_MODULUS_BITS`는 `CKA_PUBLIC_EXPONENT`를 반환해야 합니다. 그 대신 모든 사용 필드가 `FALSE`로 설정된 프라이빗 키를 생성합니다. 이 키는 사용할 수 없습니다.
+ **해결 방법: **애플리케이션에서 오류 코드 외에도 사용 필드 값을 확인하는 것이 좋습니다.
+ **해결 상태: **잘못된 프라이빗 키 템플릿이 사용되는 경우 적절한 오류 메시지를 반환하도록 수정을 구현하고 있습니다. 업데이트된 PKCS\$111 라이브러리가 버전 기록 페이지에 발표됩니다.

## 문제: `CKM_AES_GCM` 메커니즘을 사용할 때 `C_Encrypt` 및 `C_Decrypt` API 작업에 대한 버퍼는 16KB를 초과할 수 없습니다.
<a name="ki-pkcs11-8"></a>

AWS CloudHSM 는 멀티파트 AES-GCM 암호화를 지원하지 않습니다.
+ **영향: **`CKM_AES_GCM` 메커니즘을 사용하여 16KB보다 큰 데이터를 암호화할 수 없습니다.
+ **해결 방법: ** `CKM_AES_CBC`, `CKM_AES_CBC_PAD` 등의 대체 메커니즘을 사용하거나 데이터를 여러 조각으로 나누고 `AES_GCM`을 사용하여 각 조각을 개별적으로 암호화할 수 있습니다. 를 사용하는 경우 데이터 분할 및 후속 암호화를 관리`AES_GCM`해야 합니다. AWS CloudHSM 는 멀티파트 AES-GCM 암호화를 수행하지 않습니다. FIPS에서는 `AES-GCM`에 대한 초기화 벡터(IV)가 HSM에서 생성되어야 합니다. 따라서 AES-GCM 암호화 데이터의 각 부분에 대한 IV가 다릅니다.
+ **해결 상태: **데이터 버퍼가 너무 큰 경우 명시적으로 실패하도록 SDK를 수정하고 있습니다. `C_EncryptUpdate` 및 `C_DecryptUpdate` API 작업에 대해 `CKR_MECHANISM_INVALID`가 반환됩니다. 멀티파트 암호화에 의존하지 않고 더 큰 버퍼를 지원하기 위한 대체 방법을 평가하고 있습니다. 업데이트는 AWS CloudHSM 포럼과 버전 기록 페이지에서 발표됩니다.

## 문제: ECDH(Elliptic-curve Diffie-Hellman) 키 파생은 HSM 내에서 부분적으로 실행됩니다.
<a name="ki-pkcs11-9"></a>

EC 프라이빗 키는 항상 HSM 내에 있지만 키 추출 프로세스는 여러 단계로 수행됩니다. 결과적으로 각 단계의 중간 결과를 클라이언트에서 사용할 수 있습니다.
+ **영향: **클라이언트 SDK 3에서 `CKM_ECDH1_DERIVE` 메커니즘을 사용하는 키 파생은 클라이언트에서 먼저 사용한 다음 HSM에 가져옵니다. 그러면 키 핸들이 애플리케이션에 반환됩니다.
+ **해결 방법: ** AWS CloudHSM에서 SSL/TLS 오프로드를 구현하는 경우 이 제한 사항은 문제가 되지 않습니다. 애플리케이션에서 항상 키가 FIPS 경계 내에 있어야 하는 경우 ECDH 키 파생에 독립적인 대체 프로토콜을 사용하는 것이 좋습니다.
+ **해결 상태:** SDK 5.16은 이제 HSM 내에서 완전히 수행되는 키 파생을 통해 ECDH를 지원합니다.

## 문제: secp256k1 서명 확인이 CentOS6 및 RHEL 6 등의 EL6 플랫폼에서 실패합니다.
<a name="ki-pkcs11-10"></a>

 CloudHSM PKCS\$111 라이브러리가 OpenSSL을 사용하여 EC 곡선 데이터를 확인함으로써 확인 작업을 초기화하는 동안 네트워크 호출을 피하기 때문입니다. Secp256k1은 EL6 플랫폼의 기본 OpenSSL 패키지에서 지원되지 않으므로 초기화가 실패합니다.
+ **영향: **Secp256k1 서명 확인이 EL6 플랫폼에서 실패합니다. 확인 호출이 `CKR_HOST_MEMORY` 오류로 실패합니다.
+ **해결 방법: **PKCS\$111 애플리케이션이 secp256k1 서명을 확인해야 하는 경우 Amazon Linux 1 또는 EL7 플랫폼을 사용하는 것이 좋습니다. 또는 secp256k1 곡선을 지원하는 OpenSSL 패키지 버전으로 업그레이드하십시오.
+ **해결 상태: **로컬 곡선 검증을 사용할 수 없는 경우 HSM으로 대체하기 위한 수정을 구현하고 있습니다. 업데이트된 PKCS\$111 라이브러리가 [버전 기록](client-history.md) 페이지에 발표됩니다.

## 문제: 잘못된 함수 호출 순서로 인해 실패하는 대신 정의되지 않은 결과가 발생합니다.
<a name="ki-pkcs11-11"></a>
+ **영향**: 잘못된 함수 시퀀스를 호출하면 개별 함수 호출이 성공을 반환하더라도 최종 결과가 올바르지 않습니다. 예를 들어, 해독된 데이터는 원본 일반 텍스트와 일치하지 않거나 서명 확인에 실패할 수 있습니다. 이 문제는 단일 부품 및 다중 부품 작업 모두에 영향을 미칩니다.

  잘못된 함수 시퀀스의 예시:
  + `C_EncryptInit`/`C_EncryptUpdate` 다음에 `C_Encrypt`가 옵니다
  + `C_DecryptInit`/`C_DecryptUpdate` 다음에 `C_Decrypt`이 옵니다
  + `C_SignInit`/`C_SignUpdate` 다음에 `C_Sign`이 옵니다
  + `C_VerifyInit`/`C_VerifyUpdate` 다음에 `C_Verify`가 옵니다
  + `C_FindObjectsInit` 다음에 `C_FindObjectsInit`가 옵니다
+  **해결 방법**: 애플리케이션은 PKCS \$111 사양을 준수하여 단일 및 다중 부분 작업 모두에 대해 올바른 함수 호출 순서를 사용해야 합니다. 이러한 상황에서 애플리케이션은 오류를 반환하기 위해 CloudHSM PKCS \$111 라이브러리에 의존해서는 안 됩니다.

## 문제: SDK 5에서는 읽기 전용 세션이 지원되지 않습니다.
<a name="ki-pkcs11-13"></a>
+ **문제:** SDK 5는 `C_OpenSession`을 사용하여 읽기 전용 세션을 여는 것을 지원하지 않습니다. 
+ **영향:** `CKF_RW_SESSION`을 제공하지 않고 `C_OpenSession`을 호출하려고 하면 `CKR_FUNCTION_FAILED` 오류와 함께 호출이 실패합니다.
+ **해결 방법:** 세션을 열 때 `CKF_SERIAL_SESSION | CKF_RW_SESSION` 플래그를 `C_OpenSession` 함수 호출에 전달해야 합니다.

## 문제: `cryptoki.h` 헤더 파일이 Windows 전용입니다.
<a name="ki-pkcs11-14"></a>
+ **문제: **Linux의 AWS CloudHSM 클라이언트 SDK 5 버전 5.0.0\$15.4.0에서는 헤더 파일이 Windows 운영 체제와만 호환`/opt/cloudhsm/include/pkcs11/cryptoki.h`됩니다.
+ **영향:** Linux 기반 운영 체제에서 애플리케이션에 이 헤더 파일을 포함하려고 하면 문제가 발생할 수 있습니다.
+ **해결 상태: **이 헤더 파일의 Linux 호환 버전을 포함하는 AWS CloudHSM 클라이언트 SDK 5 버전 5.4.1 이상으로 업그레이드합니다.