Personalizado IVs con una longitud no compatible para envolver AES las llaves AWS CloudHSM - AWS CloudHSM

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Personalizado IVs con una longitud no compatible para envolver AES las llaves AWS CloudHSM

En este tema de solución de problemas aprenderá a detectar si su aplicación genera claves encapsuladas irrecuperables. Si se ve afectado por este problema, utilice este tema para solucionar el problema.

Determine si el código genera claves encapsuladas irrecuperables.

Solo se verás afectado si se dan todas las condiciones que se indican a continuación:

Condición ¿Cómo lo sé?

Su aplicación usa la biblioteca PKCS #11

La biblioteca PKCS #11 se instala como el libpkcs11.so archivo de /opt/cloudhsm/lib la carpeta. Las aplicaciones escritas en lenguaje C generalmente usan la biblioteca PKCS #11 directamente, mientras que las aplicaciones escritas en Java pueden usar la biblioteca indirectamente a través de una capa de abstracción de Java. Si utilizas Windows, esto te NOT afecta, ya que la biblioteca PKCS #11 no está disponible actualmente para Windows.

Su aplicación utiliza específicamente la versión 3.0.0 de la biblioteca PKCS #11

Si recibió un correo electrónico del AWS CloudHSM equipo, es probable que esté utilizando la versión 3.0.0 de la biblioteca PKCS #11.

Para comprobar la versión del software en las instancias de su aplicación, utilice este comando:

rpm -qa | grep ^cloudhsm

Envuelves las llaves AES envolviéndolas

AESenvolver llaves significa usar una AES llave para envolver alguna otra llave. El nombre del mecanismo correspondiente es CKM_AES_KEY_WRAP. Se usa con la función C_WrapKey. Otros mecanismos de empaquetado AES basados en vectores de inicialización (IVs), como CKM_AES_GCM y CKM_CLOUDHSM_AES_GCM, no se ven afectados por este problema. Obtenga más información sobre funciones y mecanismos.

Se especifica un IV personalizado al llamar al empaquetado de AES claves, y la longitud de este IV es inferior a 8

AESLa envoltura de claves generalmente se inicializa con una CK_MECHANISM estructura como la siguiente:

CK_MECHANISM mech = {CKM_AES_KEY_WRAP, IV_POINTER, IV_LENGTH};

Esta cuestión solo le afecta a usted si:

  • IV_ POINTER no lo es NULL

  • IV_ LENGTH tiene menos de 8 bytes

Si no se dan todas las condiciones anteriores, puede dejar de leer. Las claves encapsuladas se pueden desencapsular correctamente y este problema no le afecta. De lo contrario, consulte Acciones que debe adoptar si su código genera claves encapsuladas irrecuperables.

Acciones que debe adoptar si su código genera claves encapsuladas irrecuperables

Debe seguir los tres pasos siguientes:

  1. Actualice inmediatamente su biblioteca PKCS #11 a una versión más reciente

  2. Actualice su software para usar un IV que cumpla con los estándares

    Le recomendamos encarecidamente que siga nuestro código de ejemplo y simplemente especifique un NULL IV, lo que hace que utilice el IV HSM predeterminado que cumple con los estándares. Como alternativa, puede especificar explícitamente el IV como 0xA6A6A6A6A6A6A6A6 con una longitud de IV correspondiente de 8. No recomendamos usar ningún otro IV para el empaquetado de AES claves y deshabilitaremos explícitamente la personalización IVs para el empaquetado de AES claves en una futura versión de la biblioteca PKCS #11.

    En aes_wrapping.c on aparece un ejemplo de código para especificar correctamente el IV. GitHub

  3. Identifique y recupere las claves encapsuladas existentes.

    Identifique las claves que haya empaquetado con la versión 3.0.0 de la biblioteca PKCS #11 y, a continuación, póngase en contacto con el servicio de asistencia para obtener ayuda (https://aws.amazon.com/support) a la hora de recuperar estas claves.

importante

Este problema solo afecta a las claves incluidas en la versión 3.0.0 de la PKCS biblioteca #11. Puede empaquetar las claves con versiones anteriores (2.0.4 y paquetes con números inferiores) o versiones posteriores (3.0.1 y paquetes con números superiores) de la biblioteca #11. PKCS