

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Mécanismes pris en charge par le fournisseur JCE pour AWS CloudHSM SDK client 5
<a name="java-lib-supported_5"></a>

Cette rubrique fournit des informations sur les mécanismes pris en charge pour le fournisseur JCE avec AWS CloudHSM Client SDK 5. Pour plus d'informations sur les interfaces et les classes de moteurs JCA (Java Cryptography Architecture) prises en charge par AWS CloudHSM, consultez les rubriques suivantes. 

**Topics**
+ [Génération de fonctions de clé et de paire de clés](#java-gen-key-pairs-5)
+ [Fonctions de chiffrement](#java-ciphers_5)
+ [Fonctions de signature et de vérification](#java-sign-verify_5)
+ [Fonctions de résumé](#java-digests_5)
+ [Hash-based fonctions du code d'authentification des messages (HMAC)](#java-mac_5)
+ [Cipher-based fonctions du code d'authentification des messages (CMAC)](#java-cmac_5)
+ [Principales fonctions de l'accord](#java-key-derivation_5)
+ [Convertissez les clés en spécifications de clés à l'aide de fabriques de clés](#java-key-factories)
+ [Annotations du mécanisme](#w2aac25c21c25c15c23)

## Génération de fonctions de clé et de paire de clés
<a name="java-gen-key-pairs-5"></a>

La bibliothèque AWS CloudHSM logicielle pour Java vous permet d'utiliser les opérations suivantes pour générer des fonctions de clé et de paire de touches.
+ `RSA`
+ `EC`
+ `EdDSA (Ed25519)`voir note [2](#java-gen-key-pairs-5-note-2)
+ `ML-DSA`
+ `AES`
+ `DESede (Triple DES)`voir note[1](#java-gen-key-pairs-5-note-1)
+ `GenericSecret`

## Fonctions de chiffrement
<a name="java-ciphers_5"></a>

La bibliothèque AWS CloudHSM logicielle pour Java prend en charge les combinaisons d'algorithmes, de modes et de remplissage suivantes.


| Algorithm | Mode | Remplissage | Remarques | 
| --- | --- | --- | --- | 
| AES | CBC | `AES/CBC/NoPadding`<br />`AES/CBC/PKCS5Padding` | Implémente `Cipher.ENCRYPT_MODE` et `Cipher.DECRYPT_MODE`.<br />Implémente `Cipher.UNWRAP_MODE for AES/CBC NoPadding` | 
| AES | ECB | `AES/ECB/PKCS5Padding`<br />`AES/ECB/NoPadding` | Implémente `Cipher.ENCRYPT_MODE` et `Cipher.DECRYPT_MODE`. | 
| AES | CTR | `AES/CTR/NoPadding` | Implémente `Cipher.ENCRYPT_MODE` et `Cipher.DECRYPT_MODE`. | 
| AES | GCM | `AES/GCM/NoPadding` | Implémente `Cipher.WRAP_MODE`, `Cipher.UNWRAP_MODE`, `Cipher.ENCRYPT_MODE` et `Cipher.DECRYPT_MODE`.<br />Lors du AES-GCM chiffrement, le HSM ignore le vecteur d'initialisation (IV) dans la demande et utilise un IV qu'il génère. Lorsque l'opération est terminée, vous devez appeler `Cipher.getIV()` pour obtenir le vecteur d'initialisation. | 
| AESWrap | ECB | `AESWrap/ECB/NoPadding`<br />`AESWrap/ECB/PKCS5Padding`<br />`AESWrap/ECB/ZeroPadding` | Implémente `Cipher.WRAP_MODE` et `Cipher.UNWRAP_MODE`. | 
| DESede (Triple DES) | CBC | `DESede/CBC/PKCS5Padding`<br />`DESede/CBC/NoPadding` | Implémente `Cipher.ENCRYPT_MODE` et `Cipher.DECRYPT_MODE`. Voir la note [1](#java-gen-key-pairs-5-note-1) ci-dessous pour un changement à venir. | 
| DESede (Triple DES) | ECB | `DESede/ECB/NoPadding`<br />`DESede/ECB/PKCS5Padding` | Implémente `Cipher.ENCRYPT_MODE` et `Cipher.DECRYPT_MODE`. Voir la note [1](#java-gen-key-pairs-5-note-1) ci-dessous pour un changement à venir. | 
| RSA | ECB | `RSA/ECB/PKCS1Padding`**Voir note[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` | Implémente `Cipher.WRAP_MODE`, `Cipher.UNWRAP_MODE`, `Cipher.ENCRYPT_MODE` et `Cipher.DECRYPT_MODE`. | 
| RSA | ECB | `RSA/ECB/NoPadding` | Implémente `Cipher.ENCRYPT_MODE` et `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` | Implémente `Cipher.WRAP_MODE` et `Cipher.UNWRAP_MODE`. | 

## Fonctions de signature et de vérification
<a name="java-sign-verify_5"></a>

La bibliothèque AWS CloudHSM logicielle pour Java prend en charge les types de signature et de vérification suivants. Avec le SDK client 5 et les algorithmes de signature avec hachage, les données sont hachées localement dans le logiciel avant d'être envoyées au HSM pour le. signature/verification Cela signifie qu'il n'y a aucune limite quant à la taille des données pouvant être hachées par le SDK.

### Types de signatures 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`

### Types de signature ECDSA
<a name="java-sign-verify-ecdsa_5"></a>
+ `NONEwithECDSA`
+ `SHA1withECDSA`
+ `SHA224withECDSA`
+ `SHA256withECDSA`
+ `SHA384withECDSA`
+ `SHA512withECDSA`

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

**Types **  de signature eDDSA (voir note) [2](#java-gen-key-pairs-5-note-2) 
+ `Ed25519`ou `EdDSA` (Taille maximale des données : 16 000 octets)
+ `Ed25519ph`

## Fonctions de résumé
<a name="java-digests_5"></a>

La bibliothèque AWS CloudHSM logicielle pour Java prend en charge les résumés de messages suivants. Avec le SDK client 5, les données sont hachées localement dans le logiciel. Cela signifie qu'il n'y a aucune limite quant à la taille des données pouvant être hachées par le SDK.
+ `SHA-1`
+ `SHA-224`
+ `SHA-256`
+ `SHA-384`
+ `SHA-512`

## Hash-based fonctions du code d'authentification des messages (HMAC)
<a name="java-mac_5"></a>

La bibliothèque AWS CloudHSM logicielle pour Java prend en charge les algorithmes HMAC suivants.
+ `HmacSHA1`(Taille maximale des données en octets : 16288)
+ `HmacSHA224`(Taille maximale des données en octets : 16256)
+ `HmacSHA256`(Taille maximale des données en octets : 16288)
+ `HmacSHA384`(Taille maximale des données en octets : 16224)
+ `HmacSHA512`(Taille maximale des données en octets : 16224)

## Cipher-based fonctions du code d'authentification des messages (CMAC)
<a name="java-cmac_5"></a>

Les CMAC (codes d'authentification des Cipher-based messages) créent des codes d'authentification des messages (MAC) à l'aide d'un chiffrement par blocs et d'une clé secrète. Ils diffèrent des HMAC en ce qu'ils utilisent une méthode de clé symétrique par blocs pour les MAC plutôt qu'une méthode de hachage.

La bibliothèque AWS CloudHSM logicielle pour Java prend en charge les algorithmes CMAC suivants.
+ `AESCMAC`

## Principales fonctions de l'accord
<a name="java-key-derivation_5"></a>

La bibliothèque AWS CloudHSM logicielle pour Java prend en charge l'ECDH avec les fonctions de dérivation clés (KDF). Les types KDF suivants sont pris en charge :
+ `ECDHwithX963SHA1KDF`Supporte l' X9.63 algorithme KDF SHA1  [3](#kdf2) 
+ `ECDHwithX963SHA224KDF`Supporte l' X9.63 algorithme KDF SHA224  [3](#kdf2) 
+ `ECDHwithX963SHA256KDF`Supporte l' X9.63 algorithme KDF SHA256  [3](#kdf2) 
+ `ECDHwithX963SHA384KDF`Supporte l' X9.63 algorithme KDF SHA384  [3](#kdf2) 
+ `ECDHwithX963SHA512KDF`Supporte l' X9.63 algorithme KDF SHA512  [3](#kdf2) 

## Convertissez les clés en spécifications de clés à l'aide de fabriques de clés
<a name="java-key-factories"></a>

Vous pouvez utiliser les usines de clés pour convertir les clés en spécifications clés. AWS CloudHSM possède deux types d'usines clés pour JCE :

**SecretKeyFactory: ** Utilisé pour importer ou dériver des clés symétriques. À l'aide de SecretKeyFactory, vous pouvez transmettre une clé prise en charge ou une clé prise en charge dans AWS CloudHSM laquelle KeySpec importer ou dériver des clés symétriques. Voici les spécifications prises en charge pour KeyFactory :
+ Les [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) classes suivantes SecretKeyFactory de la `generateSecret` méthode de For sont prises en charge :
  + **KeyAttributesMap**peut être utilisé pour importer un octet clé avec des attributs supplémentaires en tant que clé CloudHSM. Un exemple peut être trouvé [ici](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)**peut être utilisé pour importer une spécification de clé symétrique en tant que clé CloudHSM.
  + **AesCmacKdfParameterSpec**peut être utilisé pour dériver des clés symétriques à l'aide d'une autre clé AES CloudHSM.

**Note**  
SecretKeyFactoryLa `translateKey` méthode prend n'importe quelle clé qui implémente l'[interface ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/Key.html) clé.

**KeyFactory: ** Utilisé pour importer des clés asymétriques. À l'aide de KeyFactory, vous pouvez transmettre une clé prise en charge ou KeySpec prendre en charge l'importation d'une clé asymétrique dans AWS CloudHSM. Pour plus d'informations, consultez les ressources suivantes :
+ Pour KeyFactory la `generatePublic` méthode de For, les [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) classes suivantes sont prises en charge :
  + CloudHSM KeyAttributesMap pour RSA, EC et eDDSA. KeyTypes Un exemple peut être trouvé [ici](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)pour les clés publiques RSA, EC et eDDSA
  + [RSAPublicKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/RSAPublicKeySpec.html)pour RSA Public Key
  + [ECPublicKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/ECPublicKeySpec.html)pour EC Public Key (non applicable pour Ed25519)
+ Pour KeyFactory la `generatePrivate` méthode de For, les [ KeySpec ](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/KeySpec.html) classes suivantes sont prises en charge :
  + CloudHSM KeyAttributesMap pour RSA, EC et eDDSA. KeyTypes Un exemple peut être trouvé [ici](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)pour les clés privées RSA, EC et eDDSA
  + [RSAPrivateCrtKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/RSAPrivateCrtKeySpec.html)pour RSA Private Key
  + [ECPrivateKeySpec](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/spec/ECPrivateKeySpec.html)pour la clé privée EC (non applicable pour Ed25519)

**ML-DSA principale limitation à l'importation**  
AWS CloudHSM ne prend pas en charge l'importation de ML-DSA clés via `KeyFactory` (`generatePublic`et`generatePrivate`). Pour utiliser des ML-DSA clés, générez-les directement sur le HSM à l'aide `KeyPairGenerator` de. Il ML-DSA `KeyFactory` prend en charge l'exportation de clés publiques à l'aide de `getKeySpec` (returns`X509EncodedKeySpec`).

 KeyFactoryLa `translateKey` méthode de For prend n'importe quelle clé qui implémente l'interface [ clé](https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/Key.html).

## Annotations du mécanisme
<a name="w2aac25c21c25c15c23"></a>

[1] Conformément aux directives du NIST, cela n'est pas autorisé pour les clusters en mode FIPS après 2023. Pour les clusters en mode non FIPS, il est toujours autorisé après 2023. Consultez [Conformité à la norme FIPS 140 : mécanisme 2024 rendu obsolète](compliance-dep-notif.md#compliance-dep-notif-1) pour plus de détails.

[2] Pris en charge uniquement sur les instances hsm2m.medium en mode non FIPS.

[3] Les fonctions de dérivation clés (KDF) sont spécifiées dans la publication spéciale 800-56A du [ NIST, révision 3. ](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf)