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.
Problemas conocidos del SDK de JCE para AWS CloudHSM
Los siguientes problemas afectan al SDK de JCE para. AWS CloudHSM
Temas
Problema: si trabaja con pares de claves asimétricas, verá que la capacidad para las claves está ocupada aunque no esté creando o importando las claves explícitamente.
-
Impacto: este problema puede provocar que los HSM se queden sin espacio para las claves de forma inesperada y se produce cuando la aplicación utiliza un objeto de clave JCE estándar para las operaciones de criptografía en lugar de un objeto
CaviumKey. Si utiliza un objeto de clave JCE estándar,CaviumProviderimporta implícitamente esa clave en el HSM como una clave de sesión y no elimina esta clave hasta que se cierra la aplicación. Como resultado, las claves se acumulan mientras la aplicación se está ejecutando y pueden hacer que los HSM se queden sin espacio libre para las claves, lo que bloquea la aplicación. -
Solución: si utiliza la clase
CaviumSignature, la claseCaviumCipher, la claseCaviumMaco la claseCaviumKeyAgreement, debe proporcionar la clave como un objetoCaviumKeyen lugar que como un objeto de clave JCE estándar.Puede convertir manualmente una clave normal en un objeto
CaviumKeyutilizando la claseImportKeyy puede eliminar manualmente la clave una vez que se haya completado la operación. -
Estado de la resolución: estamos actualizando
CaviumProviderpara administrar correctamente las importaciones implícitas. La corrección se anunciará en la página del historial de versiones una vez que esté disponible.
Problema: El JCE KeyStore es de solo lectura
-
Impacto: en la actualidad no puede almacenar un tipo de objeto que no sea compatible con HSM en el almacén de claves de JCE. En concreto, no puede almacenar certificados en el almacén de claves. Esto impide la interoperabilidad con herramientas como jarsigner, que espera encontrar el certificado en el almacén de claves.
-
Solución: puede rehacer el código para cargar los certificados desde archivos locales o desde una ubicación de bucket de S3 en lugar de hacerlo desde el almacén de claves.
-
Estado de la resolución: puede utilizar el almacén de AWS CloudHSM claves para almacenar los certificados.
Problema: Los búferes de AES-GCM cifrado no pueden superar los 16.000 bytes
Multi-part AES-GCM no se admite el cifrado.
-
Impacto: no se puede utilizar AES-GCM para cifrar datos de más de 16.000 bytes.
-
Solución alternativa: puede utilizar un mecanismo alternativo, por ejemplo, dividir los AES-CBC datos en partes y cifrar cada una de ellas de forma individual. Si divide los datos, debe administrar el texto cifrado dividido y su descifrado. Como el FIPS requiere que el vector de inicialización (IV) AES-GCM se genere en el HSM, el IV de cada AES-GCM-encrypted dato será diferente.
-
Estado de resolución: estamos corrigiendo los SDK para que produzcan un error de forma explícita si el búfer de datos es demasiado grande. Estamos evaluando alternativas que admitan búferes más grandes sin recurrir al cifrado multiparte. Las actualizaciones se anunciarán en el foro de AWS CloudHSM y en la página de historial de versiones.
Problema: la derivación de claves Elliptic-curve Diffie-Hellman (ECDH) se ejecuta parcialmente en el HSM
Su clave privada EC permanece dentro del HSM en todo momento, pero el proceso de generación de la clave se realiza en varios pasos. Como resultado, los resultados intermedios de cada paso están disponibles en el cliente. Encontrará una muestra de la derivación de claves de ECDH en los ejemplos de código de Java.
-
Impacto: Client SDK 3 agrega la funcionalidad ECDH al JCE. Cuando se utiliza la
KeyAgreementclase para derivar un SecretKey, primero está disponible en el cliente y, a continuación, se importa al HSM. Un identificador de clave se devuelve después a su aplicación. -
Solución alternativa: si está implementando SSL/TLS Offload en AWS CloudHSM, es posible que esta limitación no suponga un problema. Si su aplicación requiere que su clave permanezca dentro de un límite FIPS en todo momento, considere el uso de un protocolo alternativo que no se base en la generación de la clave ECDH.
-
Estado de la resolución: el SDK 5.16 ahora admite ECDH con derivación de claves, que se ejecuta completamente dentro del HSM.
Problema: KeyGenerator e interpreta KeyAttribute incorrectamente el parámetro de tamaño de la clave como número de bytes en lugar de bits
Al generar una clave mediante la init función de la KeyGenerator claseSIZE atributo de la AWS CloudHSM KeyAttribute enumeración, la API espera erróneamente que el argumento sea el número de bytes de la clave, cuando debería ser el número de bits de la clave.
-
Impacto: las versiones 5.4.0 a 5.4.2 de SDK de cliente esperaban erróneamente que el tamaño de la clave se proporcionara a las API especificadas en bytes.
-
Solución alternativa: Convierta el tamaño de la clave de bits a bytes antes de usar la KeyGenerator clase o KeyAttribute enumeración para generar claves con el proveedor AWS CloudHSM JCE si utiliza las versiones 5.4.0 a 5.4.2 del SDK de cliente.
-
Estado de la resolución: actualice la versión 5.5.0 o posterior del SDK de su cliente, que incluye una corrección para calcular correctamente los tamaños de las claves en bits al utilizar la KeyGenerator clase o la enumeración para generar claves. KeyAttribute
Problema: SDK 5 de cliente muestra la advertencia «Se ha producido una operación ilegal de acceso reflexivo».
Al usar SDK 5 de cliente con Java 11, CloudHSM lanza la siguiente advertencia de Java:
WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.amazonaws.cloudhsm.jce.provider.CloudHsmKeyStore (file:/opt/cloudhsm/java/cloudhsm-jce-5.6.0.jar) to field java.security .KeyStore.keyStoreSpi WARNING: Please consider reporting this to the maintainers of com.amazonaws.cloudhsm.jce.provider.CloudHsmKeyStore WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release
Este problema se corrigió en la versión 5.8 del SDK de cliente y versiones posteriores.
nota
OpenJDK 11 ya no es compatible. El SDK de cliente 5.17.1 es la última versión compatible con OpenJDK 11.
Problema: el grupo de sesiones de JCE está agotado.
Impacto: es posible que no pueda realizar operaciones en JCE después de ver el siguiente mensaje:
com.amazonaws.cloudhsm.jce.jni.exception.InternalException: There are too many operations happening at the same time: Reached max number of sessions in session pool: 1000
Soluciones provisionales:
Reinicie la aplicación JCE si está experimentando algún impacto.
Al realizar una operación, es posible que tenga que finalizar la operación de JCE antes de perder la referencia a la operación.
nota
En función de la operación, puede ser necesario un método de finalización.
Operación Método/s de finalización Cifrado doFinal()en modo de cifrado o descifradowrap()en modo de encapsulamientounwrap()en modo de desencapsulamientoKeyAgreement generateSecret()ogenerateSecret(String)KeyPairGenerator generateKeyPair(),genKeyPair()oreset()KeyStore No se necesita ningún método. MAC doFinal()oreset()MessageDigest digest()oreset()SecretKeyFactory No se necesita ningún método. SecureRandom No se necesita ningún método. Signature sign()en modo de señalverify()en modo de verificación
Estado de la resolución: hemos resuelto este problema en el SDK del cliente 5.9.0 y versiones posteriores. Para solucionar este problema, actualice su SDK del cliente a una de estas versiones.
Problema: pérdida de memoria de Client SDK 5 con operaciones de getKey
-
Impacto: la operación
getKeyde la API tiene una pérdida de memoria en la JCE en las versiones 5.10.0 y anteriores de Client SDK. Si usa la APIgetKeyvarias veces en su aplicación, esto aumentará el crecimiento de la memoria y, en consecuencia, aumentará el consumo de memoria de la aplicación. Con el tiempo, esto puede provocar errores de limitación o requerir el reinicio de la aplicación. -
Solución alternativa: recomendamos actualizar a Client SDK 5.11.0. Si esto no es posible, recomendamos que no llame a la API
getKeyvarias veces en la aplicación. En cambio, reutilice la clave devuelta anteriormente de la operacióngetKeyanterior en la medida de lo posible. -
Estado de la resolución: actualice el SDK del cliente a la versión 5.11.0 o posterior, que incluye una corrección para este problema.