용 PKCS #11 라이브러리에 대해 알려진 문제 AWS CloudHSM - AWS CloudHSM

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

용 PKCS #11 라이브러리에 대해 알려진 문제 AWS CloudHSM

다음 문제는 의 PKCS #11 라이브러리에 영향을 미칩니다 AWS CloudHSM.

문제: PKCS #11 라이브러리 버전 3.0.0의 AES 키 랩이 사용 IVs 전에 검증되지 않음

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

참고

이는 CKM_AES_KEY_WRAP 메커니즘을 사용하는 C_WrapKey에만 영향을 미칩니다.

  • 영향: PKCS #11 라이브러리 버전 3.0.0에서 8바이트 미만의 IV를 제공하는 경우 키를 언래핑하지 못할 수 있습니다.

  • 해결 방법:

    • AES 키 랩 중에 IV 길이를 적절하게 적용하는 PKCS #11 라이브러리의 버전 3.0.1 이상으로 업그레이드하는 것이 좋습니다. 래핑 코드를 수정하여 NULL IV를 전달하거나 기본 IV인 를 지정합니다0xA6A6A6A6A6A6A6A6. 자세한 내용은 AES 키 랩 의 규정 미준수 길이IVs로 사용자 지정을 참조하세요.

    • 8바이트 미만의 IV를 사용하여 PKCS #11 라이브러리의 버전 3.0.0으로 키를 래핑한 경우 에 문의하여 지원을 받으십시오.

  • 해결 상태: 이 문제는 PKCS #11 라이브러리의 버전 3.0.1에서 해결되었습니다. AES 키 랩을 사용하여 키를 래핑하려면 NULL 또는 8바이트 길이의 IV를 지정합니다.

문제: PKCS#11 SDK 2.0.4 이전 버전은 키 AES 래핑 및 언래핑에 0xA6A6A6A6A6A6A6A6 항상 기본 IV 를 사용했습니다.

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

참고

이는 CKM_AES_KEY_WRAP 메커니즘을 사용하는 C_WrapKey에만 영향을 미칩니다.

  • 영향:

    • PKCS#11 SDK 2.0.4 이전 버전과 사용자가 제공한 IV를 사용한 경우 키는 기본 IV인 로 래핑됩니다0xA6A6A6A6A6A6A6A6.

    • PKCS#11 SDK 3.0.0 이상을 사용하고 사용자가 제공한 IV를 사용하는 경우 키는 사용자가 제공한 IV로 래핑됩니다.

  • 해결 방법:

    • PKCS#11 SDK 2.0.4 이하로 래핑된 키를 래핑 해제하려면 기본 IV인 를 사용합니다0xA6A6A6A6A6A6A6A6.

    • PKCS#11 SDK 3.0.0 이상으로 래핑된 키를 래핑 해제하려면 사용자가 제공한 IV를 사용합니다.

  • 해결 상태: 래핑 및 래핑 해제 코드를 수정하여 NULL IV를 전달하거나 기본 IV인 를 지정하는 것이 좋습니다0xA6A6A6A6A6A6A6A6.

문제: CKA_DERIVE 속성이 지원 및 처리되지 않았습니다.

  • 해결 상태: FALSE로 설정될 경우 CKA_DERIVE를 수락하도록 수정했습니다. 키 추출 함수를 AWS CloudHSM에 추가하기 전에는 CKA_DERIVETRUE로 설정할 수 없습니다. 클라이언트 및 SDK(s)를 버전 1.1.1 이상으로 업데이트해야 수정의 이점을 누릴 수 있습니다.

문제: CKA_SENSITIVE 속성이 지원 및 처리되지 않았습니다.

  • Resolution status(해결 상태): CKA_SENSITIVE 속성을 수락하고 적절하게 인식하도록 수정을 했습니다. 클라이언트 및 SDK(s)를 버전 1.1.1 이상으로 업데이트해야 수정의 이점을 누릴 수 있습니다.

문제: 멀티파트 해시 및 서명이 지원되지 않습니다.

  • 영향: C_DigestUpdateC_DigestFinal이 구현되지 않습니다. C_SignFinal도 구현되지 않으며 NULL이 아닌 버퍼에 대한 CKR_ARGUMENTS_BAD로 실패합니다.

  • 해결 방법: 애플리케이션 내에서 데이터를 해시하고 해시 서명 AWS CloudHSM 에만 사용합니다.

  • 해결 상태: 멀티파트 해싱을 올바르게 구현SDKs하기 위해 클라이언트와 를 수정하고 있습니다. AWS CloudHSM 포럼 및 버전 기록 페이지에 업데이트가 발표됩니다.

문제: C_GenerateKeyPair는 표준을 준수하는 방식으로 개인 템플릿의 CKA_MODULUS_BITS 또는 CKA_PUBLIC_EXPONENT를 처리하지 않습니다.

  • 영향: 프라이빗 템플릿에 or C_GenerateKeyPair가 포함되는 경우 CKA_TEMPLATE_INCONSISTENTCKA_MODULUS_BITSCKA_PUBLIC_EXPONENT를 반환해야 합니다. 그 대신 모든 사용 필드가 FALSE로 설정된 프라이빗 키를 생성합니다. 이 키는 사용할 수 없습니다.

  • 해결 방법: 애플리케이션에서 오류 코드 외에도 사용 필드 값을 확인하는 것이 좋습니다.

  • 해결 상태: 잘못된 프라이빗 키 템플릿이 사용되는 경우 적절한 오류 메시지를 반환하도록 수정을 구현하고 있습니다. 업데이트된 PKCS #11 라이브러리는 버전 기록 페이지에 발표됩니다.

문제: CKM_AES_GCM 메커니즘 사용 시 C_EncryptC_Decrypt API 작업의 버퍼는 16KB를 초과할 수 없습니다.

AWS CloudHSM 는 멀티파트 AES-GCM 암호화를 지원하지 않습니다.

  • 영향: CKM_AES_GCM 메커니즘을 사용하여 16KB보다 큰 데이터를 암호화할 수 없습니다.

  • 해결 방법: CKM_AES_CBC, CKM_AES_CBC_PAD 등의 대체 메커니즘을 사용하거나 데이터를 여러 조각으로 나누고 AES_GCM을 사용하여 각 조각을 개별적으로 암호화할 수 있습니다. 를 사용하는 경우 데이터 분할 및 후속 암호화를 관리AES_GCM해야 합니다. AWS CloudHSM 는 다중 암호화를GCM 수행하지 않습니다AES. FIPS 에서는 에 대한 초기화 벡터(IV)를 생성AES-GCM해야 합니다HSM. 따라서 AES암호화된GCM 데이터의 각 부분에 대한 IV는 다릅니다.

  • 해결 상태: 데이터 버퍼가 너무 크면 가 명시적으로 실패SDK하도록 수정하고 있습니다. C_EncryptUpdateC_DecryptUpdate API 작업을 CKR_MECHANISM_INVALID 위해 를 반환합니다. 멀티파트 암호화에 의존하지 않고 더 큰 버퍼를 지원하기 위한 대체 방법을 평가하고 있습니다. 업데이트는 AWS CloudHSM 포럼과 버전 기록 페이지에서 발표됩니다.

문제: Elliptic-curve Diffie-Hellman(ECDH) 키 파생은 HSM

EC 프라이빗 키는 HSM 항상 내에 유지되지만 키 파생 프로세스는 여러 단계로 수행됩니다. 결과적으로 각 단계의 중간 결과를 클라이언트에서 사용할 수 있습니다.

  • 영향: 클라이언트 SDK 3에서 CKM_ECDH1_DERIVE 메커니즘을 사용하여 파생된 키는 클라이언트에서 먼저 사용할 수 있으며, 그런 다음 로 가져옵니다HSM. 그러면 키 핸들이 애플리케이션에 반환됩니다.

  • 해결 방법: 에서 구현SSL/TLS오프로드하는 경우 AWS CloudHSM이 제한은 문제가 아닐 수 있습니다. 애플리케이션에서 FIPS 항상 경계 내에 키를 유지해야 하는 경우 ECDH 키 파생에 의존하지 않는 대체 프로토콜을 사용하는 것이 좋습니다.

  • 해결 상태: 내에서 ECDH 키 파생을 완전히 수행할 수 있는 옵션을 개발하고 있습니다HSM. 업데이트가 구현되면 버전 기록 페이지에 발표됩니다.

문제: CentOS6 및 RHEL6과 같은 EL6 플랫폼에서 secp256k1 서명 확인 실패

이는 CloudHSM PKCS#11 라이브러리가 OpenSSL을 사용하여 EC 곡선 데이터를 확인함으로써 확인 작업을 초기화하는 동안 네트워크 호출을 방지하기 때문입니다. Secp256k1은 EL6 플랫폼의 기본 OpenSSL 패키지에서 지원되지 않으므로 초기화가 실패합니다.

  • 영향: EL6 플랫폼에서 Secp256k1 서명 확인이 실패합니다. 확인 호출이 CKR_HOST_MEMORY 오류로 실패합니다.

  • 해결 방법: PKCS#11 애플리케이션에서 secp256k1 서명을 확인해야 하는 EL7 경우 Amazon Linux 1 또는 플랫폼을 사용하는 것이 좋습니다. 또는 secp256k1 곡선을 지원하는 OpenSSL 패키지 버전으로 업그레이드합니다.

  • 해결 상태: 로컬 곡선 검증을 사용할 수 없는 HSM 경우 로 돌아가도록 수정을 구현하고 있습니다. 업데이트된 PKCS#11 라이브러리는 버전 기록 페이지에 발표됩니다.

문제: 잘못된 함수 호출 순서로 인해 실패하는 대신 정의되지 않은 결과가 발생합니다.

  • 영향: 잘못된 함수 시퀀스를 호출하면 개별 함수 호출이 성공을 반환하더라도 최종 결과가 올바르지 않습니다. 예를 들어, 해독된 데이터는 원본 일반 텍스트와 일치하지 않거나 서명 확인에 실패할 수 있습니다. 이 문제는 단일 부품 및 다중 부품 작업 모두에 영향을 미칩니다.

    잘못된 함수 시퀀스의 예시:

    • 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 #11 사양에 따라 단일 및 다중 파트 작업 모두에 대해 함수 호출의 올바른 순서를 사용해야 합니다. 이 상황에서는 애플리케이션을 CloudHSM PKCS #11 라이브러리에 의존하여 오류를 반환해서는 안 됩니다.

문제: SDK 5에서는 읽기 전용 세션이 지원되지 않습니다.

  • 문제: SDK 5는 를 사용하여 읽기 전용 세션 열기를 지원하지 않습니다C_OpenSession.

  • 영향: CKF_RW_SESSION을 제공하지 않고 C_OpenSession을 호출하려고 하면 CKR_FUNCTION_FAILED 오류와 함께 호출이 실패합니다.

  • 해결 방법: 세션을 열 때 CKF_SERIAL_SESSION | CKF_RW_SESSION 플래그를 C_OpenSession 함수 호출에 전달해야 합니다.

문제: cryptoki.h 헤더 파일이 Windows 전용입니다.

  • 문제: Linux의 AWS CloudHSM Client SDK 5 버전 5.0.0~5.4.0에서는 헤더 파일이 Windows 운영 체제와만 호환/opt/cloudhsm/include/pkcs11/cryptoki.h됩니다.

  • 영향: Linux 기반 운영 체제에서 애플리케이션에 이 헤더 파일을 포함하려고 하면 문제가 발생할 수 있습니다.

  • 해결 상태: 이 헤더 파일의 Linux 호환 버전을 포함하는 AWS CloudHSM Client SDK5 버전 5.4.1 이상으로 업그레이드합니다.