

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 la bibliothèque PKCS \#11 pour AWS CloudHSM SDK client 5
<a name="pkcs11-mechanisms"></a>

La bibliothèque PKCS \#11 est conforme à la version 2.40 de la spécification PKCS \#11. Pour appeler une fonction de chiffrement utilisant PKCS \#11, appelez une fonction à l'aide d'un mécanisme donné. Les sections suivantes résument les combinaisons de fonctions et de mécanismes pris en charge par AWS CloudHSM Client SDK 5. 

La bibliothèque PKCS \#11 prend en charge les algorithmes suivants :
+ **Chiffrement et déchiffrement ** — AES-CBC AES-CTR, AES-ECB, AES-GCM, DES3-CBC, DES3-ECB RSA-OAEP, et RSA-PKCS
+ **Signer et vérifier ** : RSA, HMAC, ECDSA (avec et sans hachage), eDDSA (Ed25519 et ED25519pH) et (avec modes mu pur et externe) ML-DSA 
+ **Hash/digest**— SHA1, SHA224, SHA256, SHA384 et SHA512
+ **Enveloppe de clés ** — AES Key Wrap  [1](#mech1)  AES-GCM, RSA-AES, et RSA-OAEP
+ **Dérivation de clés ** — SP800-108 Comptez KDF et ECDH avec KDF (les algorithmes KDF pris en charge sont X9.63 avec SHA1, SHA224, SHA256, SHA384, SHA512)

**Topics**
+ [Génération de fonctions de clé et de paire de clés](#pkcs11-mech-function-genkey)
+ [Fonctions de signature et de vérification](#pkcs11-mech-function-signverify)
+ [Fonctions de récupération de signature et de récupération de vérification](#pkcs11-mech-function-sr-vr)
+ [Fonctions de résumé](#pkcs11-mech-function-digest)
+ [Fonctions de chiffrement et de déchiffrement](#pkcs11-mech-function-enc-dec)
+ [Fonctions de dérivation de clé](#pkcs11-mech-function-derive-key)
+ [Fonctions d'encapsulage et de désencapsulage](#pkcs11-mech-function-wrap-unwrap)
+ [Taille de données maximale pour chaque mécanisme](#pkcs11-mech-max)
+ [Annotations du mécanisme](#pkcs11-mech-annotations)

## Génération de fonctions de clé et de paire de clés
<a name="pkcs11-mech-function-genkey"></a>

La bibliothèque AWS CloudHSM logicielle de la bibliothèque PKCS \#11 vous permet d'utiliser les mécanismes suivants pour les fonctions Generate Key et Key Pair.
+ `CKM_RSA_PKCS_KEY_PAIR_GEN`
+ `CKM_RSA_X9_31_KEY_PAIR_GEN` – Le fonctionnement de ce mécanisme est identique au mécanisme `CKM_RSA_PKCS_KEY_PAIR_GEN`, mais offre de meilleures garanties pour la génération de `p` et `q`.
+ `CKM_EC_KEY_PAIR_GEN`
+ `CKM_CLOUDHSM_ML_DSA_KEY_PAIR_GEN`[3](#mech3)
+ `CKM_GENERIC_SECRET_KEY_GEN`
+ `CKM_AES_KEY_GEN`
+ `CKM_DES3_KEY_GEN`— le changement à venir est indiqué dans la note de bas de page [5](#mech5).

## Fonctions de signature et de vérification
<a name="pkcs11-mech-function-signverify"></a>

La bibliothèque AWS CloudHSM logicielle de la bibliothèque PKCS \#11 vous permet d'utiliser les mécanismes suivants pour les fonctions de signature et de vérification. 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.

Avec le SDK client 5, le hachage RSA et ECDSA est effectué localement, il n'y a donc aucune limite de données. Avec HMAC et PureEd DSA (Ed25519), il existe une limite de données. Pour plus d'informations, consultez la note de bas de page [2](#mech2).

**RSA**
+ `CKM_RSA_X_509`
+ `CKM_RSA_PKCS` - Opérations à une seule partie uniquement.
+ `CKM_RSA_PKCS_PSS` - Opérations à une seule partie uniquement.
+ `CKM_SHA1_RSA_PKCS`
+ `CKM_SHA224_RSA_PKCS`
+ `CKM_SHA256_RSA_PKCS`
+ `CKM_SHA384_RSA_PKCS`
+ `CKM_SHA512_RSA_PKCS`
+ `CKM_SHA512_RSA_PKCS`
+ `CKM_SHA1_RSA_PKCS_PSS`
+ `CKM_SHA224_RSA_PKCS_PSS`
+ `CKM_SHA256_RSA_PKCS_PSS`
+ `CKM_SHA384_RSA_PKCS_PSS`
+ `CKM_SHA512_RSA_PKCS_PSS`

**ECDSA**
+ `CKM_ECDSA` - Opérations à une seule partie uniquement.
+ `CKM_ECDSA_SHA1`
+ `CKM_ECDSA_SHA224`
+ `CKM_ECDSA_SHA256`
+ `CKM_ECDSA_SHA384`
+ `CKM_ECDSA_SHA512`

**ML-DSA**
+ `CKM_CLOUDHSM_ML_DSA_KEY_PAIR_GEN`[3](#mech3)— Génère ML-DSA des paires de clés.
+ `CKM_CLOUDHSM_ML_DSA`[3](#mech3)— ML-DSA Signez et vérifiez purement et simplement.
+ `CKM_CLOUDHSM_EXT_MU_ML_DSA`[3](#mech3)— ML-DSA signez et vérifiez avec un mu externe.

**EDDSA **
+ `CKM_CLOUDHSM_EDDSA`[6](#kdf6), [7](#mech7)  — avec paramètres NULL (PureEdDSA), opérations partielles uniquement.

**HMAC**
+ `CKM_SHA_1_HMAC`[2](#mech2)
+ `CKM_SHA224_HMAC`[2](#mech2)
+ `CKM_SHA256_HMAC`[2](#mech2)
+ `CKM_SHA384_HMAC`[2](#mech2)
+ `CKM_SHA512_HMAC`[2](#mech2)

**CMAC**
+ `CKM_AES_CMAC`

## Fonctions de récupération de signature et de récupération de vérification
<a name="pkcs11-mech-function-sr-vr"></a>

Le SDK client 5 ne prend pas en charge les fonctions de récupération de signature et de récupération de vérification.

## Fonctions de résumé
<a name="pkcs11-mech-function-digest"></a>

La bibliothèque AWS CloudHSM logicielle de la bibliothèque PKCS \#11 vous permet d'utiliser les mécanismes suivants pour les fonctions Digest. 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.
+ `CKM_SHA_1`
+ `CKM_SHA224`
+ `CKM_SHA256`
+ `CKM_SHA384`
+ `CKM_SHA512`

## Fonctions de chiffrement et de déchiffrement
<a name="pkcs11-mech-function-enc-dec"></a>

La bibliothèque AWS CloudHSM logicielle de la bibliothèque PKCS \#11 vous permet d'utiliser les mécanismes suivants pour les fonctions de chiffrement et de déchiffrement.
+ `CKM_RSA_X_509`
+ `CKM_RSA_PKCS` - Opérations à une seule partie uniquement. Modification à venir répertoriée dans la note de bas de page [5](#mech5).
+ `CKM_RSA_PKCS_OAEP` - Opérations à une seule partie uniquement.
+ `CKM_AES_ECB`
+ `CKM_AES_CTR`
+ `CKM_AES_CBC`
+ `CKM_AES_CBC_PAD`
+ `CKM_DES3_CBC`— le changement à venir est indiqué dans la note de bas de page [5](#mech5).
+ `CKM_DES3_ECB`— le changement à venir est indiqué dans la note de bas de page [5](#mech5).
+ `CKM_DES3_CBC_PAD`— le changement à venir est indiqué dans la note de bas de page [5](#mech5).
+  `CKM_AES_GCM` [1](#mech1), [2](#mech2)
+ `CKM_CLOUDHSM_AES_GCM`[3](#mech3)

## Fonctions de dérivation de clé
<a name="pkcs11-mech-function-derive-key"></a>

La bibliothèque AWS CloudHSM logicielle de la bibliothèque PKCS \#11 prend en charge les principaux mécanismes de dérivation suivants :
+ `CKM_SP800_108_COUNTER_KDF`
+ `CKM_ECDH1_DERIVE`- Supporte la dérivation de clés ECDH avec les types KDF suivants définis par le fournisseur :  [6](#kdf6) 
  + `CKD_CLOUDHSM_X963_SHA1_KDF`- X9.63 KDF avec SHA1  [8](#kdf7) 
  + `CKD_CLOUDHSM_X963_SHA224_KDF`- X9.63 KDF avec SHA224  [8](#kdf7) 
  + `CKD_CLOUDHSM_X963_SHA256_KDF`- X9.63 KDF avec SHA256  [8](#kdf7) 
  + `CKD_CLOUDHSM_X963_SHA384_KDF`- X9.63 KDF avec SHA384  [8](#kdf7) 
  + `CKD_CLOUDHSM_X963_SHA512_KDF`- X9.63 KDF avec SHA512  [8](#kdf7) 

## Fonctions d'encapsulage et de désencapsulage
<a name="pkcs11-mech-function-wrap-unwrap"></a>

La bibliothèque AWS CloudHSM logicielle de la bibliothèque PKCS \#11 vous permet d'utiliser les mécanismes suivants pour les fonctions Wrap et Unwrap.

Pour plus d'informations sur l'encapsulage de clé AES, voir [Encapsulage de clé AES](manage-aes-key-wrapping.md). 
+ `CKM_RSA_PKCS` - Opérations à une seule partie uniquement. Une modification à venir est répertoriée dans la note de bas de page [5](#mech5).
+ `CKM_RSA_PKCS_OAEP`[4](#mech4)
+ `CKM_AES_GCM`[1](#mech1), [3](#mech3)
+ `CKM_CLOUDHSM_AES_GCM`[3](#mech3)
+ `CKM_RSA_AES_KEY_WRAP`
+ `CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD`[3](#mech3)
+ `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD`[3](#mech3)
+ `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD`[3](#mech3)

## Taille de données maximale pour chaque mécanisme
<a name="pkcs11-mech-max"></a>

Le tableau suivant répertorie la taille maximale des données définie pour chaque mécanisme :


**Taille maximale des jeux de données**  

| **Mécanisme** | **Taille maximale des données en octets** | 
| --- | --- | 
| CKM\_SHA\_1\_HMAC | 16288 | 
| CKM\_SHA224\_HMAC | 16256 | 
| CKM\_SHA256\_HMAC | 16288 | 
| CKM\_SHA384\_HMAC | 16224 | 
| CKM\_SHA512\_HMAC | 16224 | 
| CKM\_AES\_CBC | 16272 | 
| CKM\_AES\_GCM | 16224 | 
| CKM\_CLOUDHSM\_AES\_GCM | 16224 | 
| CKM\_DES3\_CBC | 16280 | 
| CKM\_CLOUDHSM\_EDDSA(PureEdparamètres DSA, NULL) | 16000 | 

## Annotations du mécanisme
<a name="pkcs11-mech-annotations"></a>
+ [1] Lors du AES-GCM chiffrement, le HSM n'accepte pas les données vectorielles d'initialisation (IV) provenant de l'application. Vous devez utiliser un vecteur d’initialisation qu’il génère. Le vecteur d'initialisation 12 octets fourni par le HSM est écrit dans la référence en mémoire vers lequel pointe l'élément pIV des paramètres `CK_GCM_PARAMS` de la structure que vous fournissez. Pour éviter toute confusion chez les utilisateurs, le SDK PKCS \#11 dans la version 1.1.1 et les versions ultérieures garantit que PiV pointe vers une mémoire tampon mise à zéro lors de l'initialisation du chiffrement. AES-GCM 
+ [2] Lors de l’utilisation de données avec l’un des mécanismes suivants, si la mémoire tampon des données dépasse la taille maximale des données, l’opération génère une erreur. Pour ces mécanismes, tout le traitement des données doit avoir lieu à l'intérieur du HSM. Pour plus d'informations sur la taille maximale des ensembles de données pour chaque mécanisme, reportez-vous à[Taille de données maximale pour chaque mécanisme](#pkcs11-mech-max).
+ [3] Vendor-defined mécanisme. Afin d'utiliser les mécanismes définis par le fournisseur CloudHSM, les applications PKCS \#11 doivent inclure `/opt/cloudhsm/include/pkcs11/pkcs11t.h` lors de la compilation.

  `CKM_CLOUDHSM_AES_GCM` : Ce mécanisme propriétaire est une alternative plus sûre par programme à la norme `CKM_AES_GCM`. Il ajoute le IV généré par le HSM au chiffrement au lieu de l'écrire dans la structure `CK_GCM_PARAMS` fournie lors de l'initialisation du chiffrement. Vous pouvez utiliser ce mécanisme avec les fonctions `C_Encrypt`, `C_WrapKey`, `C_Decrypt` et `C_UnwrapKey`. Lors de l'utilisation de ce mécanisme, la variable PiV dans la structure `CK_GCM_PARAMS` doit être définie sur `NULL`. Lors de l'utilisation de ce mécanisme avec `C_Decrypt` et `C_UnwrapKey`, le IV doit être ajouté au texte chiffré qui est en cours de désencapsulage.

  `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD` : Encapsulage des clés AES avec remplissage PKCS \#5

  `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD` : Encapsulage des clés AES avec remplissage à l'aide de zéros

  `CKM_CLOUDHSM_ML_DSA_KEY_PAIR_GEN`: génère une paire de ML-DSA clés. Utilisez l'`CKA_CLOUDHSM_PARAMETER_SET`attribut (type`CK_CLOUDHSM_ML_DSA_PARAMETER_SET_TYPE`) pour spécifier le jeu de paramètres. Valeurs valides : `CKP_CLOUDHSM_ML_DSA_44`, `CKP_CLOUDHSM_ML_DSA_65`, `CKP_CLOUDHSM_ML_DSA_87`.

  `CKM_CLOUDHSM_ML_DSA`: ML-DSA Signez et vérifiez purement. Signe ou vérifie les données brutes à l'aide d'une paire de ML-DSA clés.

  `CKM_CLOUDHSM_EXT_MU_ML_DSA`: ML-DSA signez et vérifiez avec un mu externe. Signe ou vérifie les données qui ont été prétraitées en une valeur mu externe.

  `CKM_CLOUDHSM_EDDSA`: mécanisme de signature eDDSA. Avec paramètres NULL : PureEd DSA (Ed25519), partie unique uniquement, maximum 16 000 octets. Avec `CK_EDDSA_PARAMS` (`phFlag = CK_TRUE`,`ulContextDataLen = 0`) : ED25519pH, en une seule pièce et en plusieurs parties, sans limite de taille. La `CK_EDDSA_PARAMS` structure suit la spécification [ PKCS \#11 v3.0. ](https://docs.oasis-open.org/pkcs11/pkcs11-curr/v3.0/pkcs11-curr-v3.0.html)
+ [4] Les `CK_MECHANISM_TYPE` et `CK_RSA_PKCS_MGF_TYPE` suivants sont pris en charge en tant que `CK_RSA_PKCS_OAEP_PARAMS` pour `CKM_RSA_PKCS_OAEP`:
  + `CKM_SHA_1` utilisant `CKG_MGF1_SHA1`
  + `CKM_SHA224` utilisant `CKG_MGF1_SHA224`
  + `CKM_SHA256` utilisant `CKG_MGF1_SHA256`
  + `CKM_SHA384` utilisant `CKM_MGF1_SHA384`
  + `CKM_SHA512` utilisant `CKM_MGF1_SHA512`
+ [5] 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.
+ [6] Types définis par le fournisseur. Pour utiliser les types définis par les fournisseurs de CloudHSM, les applications PKCS \#11 doivent être incluses `cloudhsm_pkcs11_vendor_defs.h` lors de la compilation. Cela se trouve dans `/opt/cloudhsm/include/pkcs11/cloudhsm_pkcs11_vendor_defs.h` pour les plates-formes basées sur Linux et `C:\Program Files\Amazon\CloudHSM\include\pkcs11\cloudhsm_pkcs11_vendor_defs.h` pour les plates-formes basées sur Windows
+ [7] Pris en charge uniquement sur les instances hsm2m.medium en mode non FIPS.
+ [8] 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)