

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.

# Mecanismos compatibles con el proveedor de JCE para AWS CloudHSM Client SDK 5
<a name="java-lib-supported_5"></a>

En este tema se proporciona información sobre los mecanismos compatibles con el proveedor de JCE con el SDK de AWS CloudHSM cliente 5. Para obtener información sobre las interfaces y las clases de motores de la arquitectura criptográfica de Java (JCA) compatibles AWS CloudHSM, consulte los temas siguientes. 

**Topics**
+ [Generación de funciones de claves y pares de claves](#java-gen-key-pairs-5)
+ [Funciones de cifrado](#java-ciphers_5)
+ [Firma y comprobación de las funciones](#java-sign-verify_5)
+ [Funciones Digest](#java-digests_5)
+ [Funciones de código de autenticación de mensajes basado en hash (HMAC).](#java-mac_5)
+ [Funciones de código de autenticación de mensajes basados en cifrado (CMAC)](#java-cmac_5)
+ [Funciones de acuerdo de claves](#java-key-derivation_5)
+ [Conversión de las claves en especificaciones clave con generadores de claves](#java-key-factories)
+ [Notas del mecanismo](#w2aac25c21c25c15c23)

## Generación de funciones de claves y pares de claves
<a name="java-gen-key-pairs-5"></a>

La biblioteca de AWS CloudHSM software para Java le permite utilizar las siguientes operaciones para generar funciones de claves y de pares de claves.
+ `RSA`
+ `EC`
+ `AES`
+ `DESede (Triple DES)`consulte la nota [1](#java-gen-key-pairs-5-note-1)
+ `GenericSecret`

## Funciones de cifrado
<a name="java-ciphers_5"></a>

La biblioteca de AWS CloudHSM software para Java admite las siguientes combinaciones de algoritmo, modo y relleno.


| Algoritmo | Mode | Rellenado | Notas | 
| --- | --- | --- | --- | 
| AES | CBC |  `AES/CBC/NoPadding` `AES/CBC/PKCS5Padding`  |  Implementa `Cipher.ENCRYPT_MODE` y `Cipher.DECRYPT_MODE`. Implementa `Cipher.UNWRAP_MODE for AES/CBC NoPadding`  | 
| AES | ECB |  `AES/ECB/PKCS5Padding` `AES/ECB/NoPadding`  | Implementa `Cipher.ENCRYPT_MODE` y `Cipher.DECRYPT_MODE`.  | 
| AES | CTR |  `AES/CTR/NoPadding`  |  Implementa `Cipher.ENCRYPT_MODE` y `Cipher.DECRYPT_MODE`.  | 
| AES | GCM | `AES/GCM/NoPadding` | Implementa `Cipher.WRAP_MODE`, `Cipher.UNWRAP_MODE`, `Cipher.ENCRYPT_MODE` y `Cipher.DECRYPT_MODE`.Al realizar el cifrado AES-GCM, el HSM no tiene en cuenta el vector de inicialización (IV) de la solicitud y utiliza un IV que él mismo genera. Una vez que se ha completado la operación, deberá llamar a `Cipher.getIV()` para obtener el IV. | 
| AESWrap | ECB |  `AESWrap/ECB/NoPadding` `AESWrap/ECB/PKCS5Padding` `AESWrap/ECB/ZeroPadding`  | Implementa `Cipher.WRAP_MODE` y `Cipher.UNWRAP_MODE`.  | 
| DESede (Triple DES) | CBC |  `DESede/CBC/PKCS5Padding` `DESede/CBC/NoPadding`  |  Implementa `Cipher.ENCRYPT_MODE` y `Cipher.DECRYPT_MODE`. Consulte la nota [1](#java-gen-key-pairs-5-note-1) que aparece a continuación para ver los próximos cambios.  | 
| DESede (Triple DES) | ECB |  `DESede/ECB/NoPadding` `DESede/ECB/PKCS5Padding`  | Implementa `Cipher.ENCRYPT_MODE` y `Cipher.DECRYPT_MODE`. Consulte la nota [1](#java-gen-key-pairs-5-note-1) que aparece a continuación para ver los próximos cambios.  | 
| RSA | ECB | `RSA/ECB/PKCS1Padding`**consulte la nota [1](#java-gen-key-pairs-5-note-1)** `RSA/ECB/OAEPPadding` `RSA/ECB/OAEPWithSHA-1ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-224ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-256ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-384ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-512ANDMGF1Padding`  |  Implementa `Cipher.WRAP_MODE`, `Cipher.UNWRAP_MODE`, `Cipher.ENCRYPT_MODE` y `Cipher.DECRYPT_MODE`.  | 
| RSA | ECB | `RSA/ECB/NoPadding` |  Implementa `Cipher.ENCRYPT_MODE` y `Cipher.DECRYPT_MODE`.  | 
| RSAAESWrap | ECB |  `RSAAESWrap/ECB/OAEPPadding` `RSAAESWrap/ECB/OAEPWithSHA-1ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-224ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-256ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-384ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-512ANDMGF1Padding`  | Implementa `Cipher.WRAP_MODE` y `Cipher.UNWRAP_MODE`.  | 

## Firma y comprobación de las funciones
<a name="java-sign-verify_5"></a>

La biblioteca de AWS CloudHSM software para Java admite los siguientes tipos de firma y verificación. Con el SDK 5 de cliente y los algoritmos de firma con hash, los datos se codifican localmente en el software antes de enviarlos al HSM para su firma o comprobación. Esto significa que no hay límite en cuanto al tamaño de los datos que el SDK puede codificar.

**Tipos de firma RSA**
+ `NONEwithRSA`
+ `RSASSA-PSS`
+ `SHA1withRSA`
+ `SHA1withRSA/PSS`
+ `SHA1withRSAandMGF1`
+ `SHA224withRSA`
+ `SHA224withRSAandMGF1`
+ `SHA224withRSA/PSS`
+ `SHA256withRSA`
+ `SHA256withRSAandMGF1`
+ `SHA256withRSA/PSS`
+ `SHA384withRSA`
+ `SHA384withRSAandMGF1`
+ `SHA384withRSA/PSS`
+ `SHA512withRSA`
+ `SHA512withRSAandMGF1`
+ `SHA512withRSA/PSS`

**Tipos de firma ECDSA**
+ `NONEwithECDSA`
+ `SHA1withECDSA`
+ `SHA224withECDSA`
+ `SHA256withECDSA`
+ `SHA384withECDSA`
+ `SHA512withECDSA`

## Funciones Digest
<a name="java-digests_5"></a>

La biblioteca de AWS CloudHSM software para Java admite los siguientes resúmenes de mensajes. Con SDK 5 de cliente, los datos se codifican localmente en el software. Esto significa que no hay límite en cuanto al tamaño de los datos que el SDK puede codificar.
+ `SHA-1`
+ `SHA-224`
+ `SHA-256`
+ `SHA-384`
+ `SHA-512`

## Funciones de código de autenticación de mensajes basado en hash (HMAC).
<a name="java-mac_5"></a>

La biblioteca AWS CloudHSM de software para Java admite los siguientes algoritmos HMAC.
+ `HmacSHA1` (Tamaño máximo de datos en bytes: 16288)
+ `HmacSHA224` (Tamaño máximo de datos en bytes: 16256)
+ `HmacSHA256` (Tamaño máximo de datos en bytes: 16288)
+ `HmacSHA384` (Tamaño máximo de datos en bytes: 16224)
+ `HmacSHA512` (Tamaño máximo de datos en bytes: 16224)

## Funciones de código de autenticación de mensajes basados en cifrado (CMAC)
<a name="java-cmac_5"></a>

CMACs (Códigos de autenticación de mensajes cifrados) crean códigos de autenticación de mensajes (MACs) mediante un cifrado por bloques y una clave secreta. Se diferencian de ellos HMACs en que utilizan un método de clave simétrica de bloques en MACs lugar de un método de hash.

La biblioteca AWS CloudHSM de software para Java admite los siguientes algoritmos CMAC.
+ `AESCMAC`

## Funciones de acuerdo de claves
<a name="java-key-derivation_5"></a>

La biblioteca AWS CloudHSM de software para Java es compatible con ECDH con funciones de derivación clave (KDF). Se admiten los siguientes tipos de KDF:
+ `ECDHwithX963SHA1KDF`Soporta el algoritmo KDF X9.63 SHA1 [2](#kdf2)
+ `ECDHwithX963SHA224KDF`Soporta el algoritmo KDF X9.63 SHA224 [2](#kdf2)
+ `ECDHwithX963SHA256KDF`Soporta el algoritmo KDF X9.63 SHA256 [2](#kdf2)
+ `ECDHwithX963SHA384KDF`Soporta el algoritmo KDF X9.63 SHA384 [2](#kdf2)
+ `ECDHwithX963SHA512KDF`Soporta el algoritmo KDF X9.63 SHA512 [2](#kdf2)

## Conversión de las claves en especificaciones clave con generadores de claves
<a name="java-key-factories"></a>

Puede utilizar las fábricas clave para convertir las claves en especificaciones clave. AWS CloudHSM tiene dos tipos de fábricas clave para JCE:

**SecretKeyFactory:** Se utiliza para importar o derivar claves simétricas. Con SecretKeyFactory él, puede pasar una clave compatible o una clave compatible KeySpec para importar o derivar claves simétricas. AWS CloudHSM Las siguientes son las especificaciones compatibles para KeyFactory:
+  SecretKeyFactoryEl `generateSecret` método de For admite [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)las siguientes clases:
  + **KeyAttributesMap**se puede usar para importar bytes de una clave con atributos adicionales como clave de CloudHSM. Puede encontrar un ejemplo [aquí](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java).
  + **[SecretKeySpec](https://docs.oracle.com/javase/8/docs/api/javax/crypto/spec/SecretKeySpec.html)**se puede usar para importar una especificación de clave simétrica como clave de CloudHSM.
  + **AesCmacKdfParameterSpec**se puede utilizar para derivar claves simétricas mediante otra clave AES de CloudHSM.

**nota**  
SecretKeyFactory[El `translateKey` método utiliza cualquier clave que implemente la interfaz clave.](https://docs.oracle.com/javase/8/docs/api/java/security/Key.html)

**KeyFactory:** Se utiliza para importar claves asimétricas. Con KeyFactory él, puede pasar una clave compatible o se puede importar una clave asimétrica KeySpec a ella. AWS CloudHSM Para obtener más información, consulte los siguientes recursos:
+ Para KeyFactory el `generatePublic` método de For, se admiten [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)las siguientes clases:
+  KeyAttributesMap CloudHSM para RSA y EC, que incluye: KeyTypes
  +  KeyAttributesMap CloudHSM para el público de RSA y EC. KeyTypes Puede encontrar un ejemplo [aquí](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java).
  + [X509 EncodedKeySpec para clave](https://docs.oracle.com/javase/8/docs/api/java/security/spec/X509EncodedKeySpec.html) pública RSA y EC
  + [RSAPublicKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/RSAPublicKeySpec.html)para clave pública RSA
  + [ECPublicKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/ECPublicKeySpec.html)para la clave pública EC
+ Para KeyFactory el `generatePrivate` método de For, se admiten [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)las siguientes clases:
+  KeyAttributesMap CloudHSM para RSA y EC, que incluye: KeyTypes
  +  KeyAttributesMap CloudHSM para el público de RSA y EC. KeyTypes Puede encontrar un ejemplo [aquí](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java).
  + [PKCS8EncodedKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/PKCS8EncodedKeySpec.html)para claves privadas de EC y RSA
  + [RSAPrivateCrtKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/RSAPrivateCrtKeySpec.html)para clave privada RSA
  + [ECPrivateKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/ECPrivateKeySpec.html)para la clave privada EC

Para KeyFactory el `translateKey` método, incluye cualquier clave que implemente la [interfaz clave](https://docs.oracle.com/javase/8/docs/api/java/security/Key.html).

## Notas del mecanismo
<a name="w2aac25c21c25c15c23"></a>

[1] De acuerdo con las directrices del NIST, esto no se permite en los clústeres en modo FIPS después de 2023. En el caso de los clústeres en modo no FIPS, seguirá siendo posible después de 2023. Para obtener más información, consulte [Cumplimiento de la normativa FIPS 140: anulación de mecanismo 2024](compliance-dep-notif.md#compliance-dep-notif-1).

[2] Las funciones de derivación de claves (KDFs) se especifican en la [publicación especial 800-56A del NIST](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf), revisión 3.