

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 SDK 5 de cliente
<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 AWS CloudHSM Client SDK 5. Para obtener información sobre las interfaces de la arquitectura criptográfica de Java (JCA) y las clases de motor que admite 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)
+ [Hash-based funciones de código de autenticación de mensajes (HMAC)](#java-mac_5)
+ [Cipher-based funciones de código de autenticación de mensajes (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 permite utilizar las siguientes operaciones para generar funciones de clave y par de claves.
+ `RSA`
+ `EC`
+ `EdDSA (Ed25519)`consulte la nota [2](#java-gen-key-pairs-5-note-2)
+ `ML-DSA`
+ `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 algoritmos, modos y relleno.


| Algoritmo | Mode | Rellenado | Notas | 
| --- | --- | --- | --- | 
| AES | CBC | `AES/CBC/NoPadding`<br />`AES/CBC/PKCS5Padding` | Implementa `Cipher.ENCRYPT_MODE` y `Cipher.DECRYPT_MODE`.<br />Implementa `Cipher.UNWRAP_MODE for AES/CBC NoPadding` | 
| AES | ECB | `AES/ECB/PKCS5Padding`<br />`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`.<br />Al realizar el AES-GCM cifrado, el HSM ignora el vector de inicialización (IV) de la solicitud y utiliza un IV que genera. Una vez que se ha completado la operación, deberá llamar a `Cipher.getIV()` para obtener el IV. | 
| AESWrap | ECB | `AESWrap/ECB/NoPadding`<br />`AESWrap/ECB/PKCS5Padding`<br />`AESWrap/ECB/ZeroPadding` | Implementa `Cipher.WRAP_MODE` y `Cipher.UNWRAP_MODE`. | 
| DESede (Triple DES) | CBC | `DESede/CBC/PKCS5Padding`<br />`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`<br />`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)**<br />`RSA/ECB/OAEPPadding`<br />`RSA/ECB/OAEPWithSHA-1ANDMGF1Padding`<br />`RSA/ECB/OAEPWithSHA-224ANDMGF1Padding`<br />`RSA/ECB/OAEPWithSHA-256ANDMGF1Padding`<br />`RSA/ECB/OAEPWithSHA-384ANDMGF1Padding`<br />`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`<br />`RSAAESWrap/ECB/OAEPWithSHA-1ANDMGF1Padding`<br />`RSAAESWrap/ECB/OAEPWithSHA-224ANDMGF1Padding`<br />`RSAAESWrap/ECB/OAEPWithSHA-256ANDMGF1Padding`<br />`RSAAESWrap/ECB/OAEPWithSHA-384ANDMGF1Padding`<br />`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 AWS CloudHSM de software de Java admite los siguientes tipos de firma y verificación. Con el SDK de cliente 5 y los algoritmos de firma con función hash, los datos se codifican localmente en el software antes de enviarlos al HSM para su procesamiento. signature/verification Esto significa que no hay límite en cuanto al tamaño de los datos que el SDK puede codificar.

### Tipos de firmas RSA
<a name="java-sign-verify-rsa_5"></a>
+ `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 firmas ECDSA
<a name="java-sign-verify-ecdsa_5"></a>
+ `NONEwithECDSA`
+ `SHA1withECDSA`
+ `SHA224withECDSA`
+ `SHA256withECDSA`
+ `SHA384withECDSA`
+ `SHA512withECDSA`

### ML-DSA tipos de firma
<a name="java-sign-verify-mldsa_5"></a>
+ `ML-DSA`
+ `ML-DSA-44`
+ `ML-DSA-65`
+ `ML-DSA-87`
+ `ML-DSA-EXTERNAL-MU`

**Tipos **  de firmas de EdDSA, consulte la nota [2](#java-gen-key-pairs-5-note-2) 
+ `Ed25519`o `EdDSA` (Tamaño máximo de datos: 16.000 bytes)
+ `Ed25519ph`

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

La biblioteca AWS CloudHSM de 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`

## Hash-based funciones de código de autenticación de mensajes (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)

## Cipher-based funciones de código de autenticación de mensajes (CMAC)
<a name="java-cmac_5"></a>

Los CMAC (códigos de autenticación de Cipher-based mensajes) crean códigos de autenticación de mensajes (MAC) mediante un cifrado de bloques y una clave secreta. Se diferencian de los HMAC en que utilizan un método de clave simétrica de bloques para los MAC, en 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 admite el ECDH con funciones de derivación de claves (KDF). Se admiten los siguientes tipos de KDF:
+ `ECDHwithX963SHA1KDF`Es compatible con el algoritmo SHA1 X9.63 de KDF  [3](#kdf2) 
+ `ECDHwithX963SHA224KDF`Soporta el algoritmo X9.63 KDF SHA224  [3](#kdf2) 
+ `ECDHwithX963SHA256KDF`Soporta el algoritmo X9.63 KDF SHA256  [3](#kdf2) 
+ `ECDHwithX963SHA384KDF`Soporta el algoritmo X9.63 KDF SHA384  [3](#kdf2) 
+ `ECDHwithX963SHA512KDF`Soporta el algoritmo X9.63 KDF SHA512  [3](#kdf2) 

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

Puede utilizar fábricas de claves 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 ella SecretKeyFactory, 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:
+ Se admiten las siguientes [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) clases SecretKeyFactory del `generateSecret` método For:
  + **KeyAttributesMap**se puede usar para importar bytes clave con atributos adicionales como una 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/en/java/javase/25/docs/api/java.base/javax/crypto/spec/SecretKeySpec.html)**se puede usar para importar una especificación de clave simétrica como clave de CloudHSM.
  + **AesCmacKdfParameterSpec**se puede usar para derivar claves simétricas con otra clave AES de CloudHSM.

**nota**  
SecretKeyFactoryEl `translateKey` método utiliza cualquier clave que implemente la interfaz de claves. [https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/Key.html](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/Key.html)

**KeyFactory: ** Se utiliza para importar claves asimétricas. Con él KeyFactory, puede pasar una clave compatible o una clave admitida KeySpec para importar una clave asimétrica a ella. AWS CloudHSM Para obtener más información, consulte los siguientes recursos:
+ En KeyFactory el `generatePublic` método de For, se admiten [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) las siguientes clases:
  + CloudHSM KeyAttributesMap para RSA, EC y eDDSA. 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).
  + [X509EncodedKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/X509EncodedKeySpec.html)para RSA, EC y eDDSA Public Key
  + [RSAPublicKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/RSAPublicKeySpec.html)para la clave pública de RSA
  + [ECPublicKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/ECPublicKeySpec.html)para la clave pública EC (no se aplica a Ed25519)
+ Para el `generatePrivate` método KeyFactory de For, se admiten [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) las siguientes clases:
  + CloudHSM KeyAttributesMap para RSA, EC y eDDSA. 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/en/java/javase/25/docs/api/java.base/java/security/spec/PKCS8EncodedKeySpec.html)para la clave privada de RSA, EC y eDDSA
  + [RSAPrivateCrtKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/RSAPrivateCrtKeySpec.html)para la clave privada RSA
  + [ECPrivateKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/ECPrivateKeySpec.html)para la clave privada EC (no se aplica a Ed25519)

**ML-DSA limitación de importación de claves**  
AWS CloudHSM no admite la importación de ML-DSA claves mediante `KeyFactory` (`generatePublic`y`generatePrivate`). Para usar ML-DSA claves, genérelas directamente en el HSM mediante. `KeyPairGenerator` ML-DSA `KeyFactory`Soporta la exportación de claves públicas usando `getKeySpec` (returns`X509EncodedKeySpec`).

 KeyFactoryEl `translateKey` método de For, acepta cualquier clave que implemente la interfaz de [ claves](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/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] Solo se admite en instancias de hsm2m.medium en modo que no sea FIPS.

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