AES 키 래핑용 길이를 준수하지 않는 맞춤형 IV - AWS CloudHSM

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

AES 키 래핑용 길이를 준수하지 않는 맞춤형 IV

이 문제 해결 항목은 애플리케이션에서 복구할 수 없는 래핑된 키를 생성하는지 확인하는 데 도움이 됩니다. 이 문제의 영향을 받는 경우 이 주제를 사용하여 문제를 해결하세요.

코드에서 복구할 수 없는 래핑된 키가 생성되는지 확인하세요.

아래 조건을 모두 충족하는 경우에만 영향을 받습니다.

Condition 방법

애플리케이션은 PKCS #11 라이브러리를 사용합니다.

PKCS #11 라이브러리는 /opt/cloudhsm/lib 폴더에 libpkcs11.so 파일로 설치됩니다. C 언어로 작성된 애플리케이션은 일반적으로 PKCS #11 라이브러리를 직접 사용하는 반면, Java로 작성된 애플리케이션은 Java 추상화 계층을 통해 라이브러리를 간접적으로 사용할 수 있습니다. 현재 Windows에서는 PKCS #11 라이브러리를 사용할 수 없으므로 Windows를 사용하는 경우에는 영향을 받지 않습니다.

애플리케이션은 특히 PKCS #11 라이브러리 버전 3.0.0 을 사용합니다.

AWS CloudHSM 팀으로부터 이메일을 받았다면 PKCS #11 라이브러리 버전 3.0.0을 사용하고 있을 가능성이 높습니다.

애플리케이션 인스턴스의 소프트웨어 버전을 확인하려면 다음 명령어를 사용하세요.

rpm -qa | grep ^cloudhsm

AES 키 래핑을 사용하여 키를 래핑합니다.

AES 키 래핑이란 AES 키를 사용하여 다른 키를 래핑하는 것을 의미합니다. 해당 메커니즘 이름은 입니다CKM_AES_KEY_WRAP. 함수와 함께 사용됩니다C_WrapKey. 초기화 벡터(IV) 를 사용하는 기타 AES 기반 래핑 메커니즘(예: CKM_AES_GCM CKM_CLOUDHSM_AES_GCM) 은 이 문제의 영향을 받지 않습니다. 함수 및 메커니즘에 대해 자세히 알아보십시오.

AES 키 래핑을 호출할 때 사용자 지정 IV를 지정하는데 이 IV의 길이는 8보다 짧습니다.

AES 키 래핑은 일반적으로 다음과 같은 CK_MECHANISM 구조를 사용하여 초기화됩니다.

CK_MECHANISM mech = {CKM_AES_KEY_WRAP, IV_POINTER, IV_LENGTH};

다음과 같은 경우에만 이 문제가 적용됩니다.

  • IV_포인터는 널이 아닙니다.

  • IV_길이가 8바이트 미만입니다.

위의 모든 조건을 충족하지 못하면 지금 읽기를 중단할 수 있습니다. 래핑된 키는 제대로 래핑을 풀 수 있으며 이 문제는 영향을 받지 않습니다. 그렇지 않으면 코드에서 복구할 수 없는 래핑된 키가 생성되는 경우 취해야 할 조치 단원을 참조하세요.

코드에서 복구할 수 없는 래핑된 키가 생성되는 경우 취해야 할 조치

다음 세 단계를 수행해야 합니다.

  1. PKCS #11 라이브러리를 최신 버전으로 즉시 업그레이드

  2. 표준 호환 IV를 사용하도록 소프트웨어 업데이트

    샘플 코드를 따르고 NULL IV를 지정하기만 하면 HSM이 표준을 준수하는 기본 IV를 활용하도록 하는 것이 좋습니다. 또는 IV를 해당되는 8의 IV 길이를 가진 0xA6A6A6A6A6A6A6A6로 명시적으로 지정할 수도 있습니다. AES 키 래핑에는 다른 IV를 사용하지 않는 것이 좋으며, 향후 버전의 PKCS #11 라이브러리에서는 AES 키 래핑을 위한 사용자 지정 IV를 명시적으로 비활성화할 예정입니다.

    IV를 올바르게 지정하기 위한 샘플 코드는 aes_wrapping.c에 나와 있습니다. GitHub

  3. 기존의 래핑된 키 식별 및 복구

    PKCS #11 라이브러리 버전 3.0.0을 사용하여 래핑한 모든 키를 식별한 다음, 이러한 키를 복구하는 데 필요한 지원을 받으려면 지원팀(https://aws.amazon.com/support) 에 문의해야 합니다.

중요

이 문제는 PKCS #11 라이브러리 버전 3.0.0으로 래핑된 키에만 영향을 미칩니다. PKCS #11 라이브러리의 이전 버전(2.0.4 이하 패키지) 또는 이후 버전(3.0.1 이상 번호 패키지)을 사용하여 키를 래핑할 수 있습니다.