Opérations et mécanismes de cryptographie
Découvrez les opérations, les mécanismes et les algorithmes pris en charge par le fournisseur JCE Dedicated Key Management.
Générer des clés et des paires de clés
Utilisez le fournisseur JCE pour générer les clés des types suivants :
-
RSA : RSA est largement utilisé pour la transmission de données sécurisée, les signatures numériques et les protocoles d'échange de clés.
-
CE (courbe elliptique) : la cryptographie à courbe elliptique offre une haute sécurité avec des tailles de clé plus petites, ce qui la rend efficace pour les applications cryptographiques modernes telles que SSL/TLS et la blockchain.
-
AES (Advanced Encryption Standard) : AES est une norme de chiffrement largement adoptée pour la protection des données sensibles, offrant une sécurité renforcée pour les données inactives et en transit.
-
DESede (Triple DES) : Triple DES est une amélioration de l'algorithme DES d'origine, offrant une sécurité améliorée grâce à plusieurs cycles de chiffrement. DESede est pris en charge uniquement sur les clusters autres que FIPS. Il est généralement utilisé pour les applications héritées qui nécessitent une compatibilité ascendante.
Conversion de clés avec des fabriques de clés
Les fabriques de clés sont utilisées pour convertir des clés en conformité avec des spécifications de clés données. Pour plus d'informations, reportez-vous à Interface KeySpec dans la documentation de l'API Java Platform. Les deux principaux types de fabrique de clés pour JCE sont les suivants :
SecretKeyFactory
La fabrique SecretKeyFactory est conçue pour importer ou dériver des clés symétriques. Vous pouvez transmettre un fichier Key ou KeySpec pris en charge pour importer des clés symétriques. Pour plus d'informations, reportez-vous à la classe SecretKeyFactory dans la documentation de l'API Java Platform.
Les classes KeySpec suivantes sont compatibles avec la méthode generateSecret :
- KeyAttributesMap : cette classe permet d'importer des octets de clé avec les attributs associés.
- SecretKeySpec : cette classe est utilisée pour importer les spécifications de clé symétrique. Pour plus d'informations, reportez-vous à Interface SecretKey dans la documentation de l'API Java Platform.
- DESedeKeySpec : cette classe est utilisée uniquement avec DESedeKeyFactory et vous permet d'importer la spécification DESedeKey. Notez que DESede est pris en charge uniquement sur les clusters non FIPS. Pour plus d'informations, reportez-vous à la classe DESedeKeySpec dans la documentation de l'API Java Platform. Cette classe vous permet de dériver des clés symétriques en fonction d'une clé AES DKMS existante.
La méthode translateKey peut accepter n'importe quelle clé qui implémente l'interface Key, ce qui offre de la flexibilité dans la gestion des clés. Pour traduire une clé persistante, définissez DEDICATED_KMS_JCE_TRANSLATE_KEY_PERSISTENT sur TRUE dans vos variables d'environnement ou propriétés système.
KeyFactory
La fabrique KeyFactory est utilisée pour importer des clés asymétriques. En transmettant une valeur Key ou KeySpec valide, vous pouvez importer des clés asymétriques dans Dedicated Key Management. Pour plus d'informations, reportez-vous à la classe KeyFactory dans la documentation de l'API Java Platform.
Les classes KeySpec suivantes sont prises en charge pour la méthode generatePublic :
- KeyAttributesMap : disponible pour RSA et EC KeyTypes.
-
X509EncodedKeySpec : cette classe concerne
generatePublicdansRSAKeyFactoryetEcKeyFactory, et est utilisée pour importer la spécification de clé encodée X509. Pour plus d'informations, reportez-vous à la classe X509EncodedKeySpec dans la documentation de l'API Java Platform. -
RSAPublicKeySpec : pour
generatePublicdansRSAKeyFactory. Utilisez cette classe pour importer la spécification de clé publique RSA. Pour plus d'informations, reportez-vous à la classe RSAPublicKeySpec dans la documentation de l'API Java Platform. -
ECPublicKeySpec : pour
generatePublicdansEcKeyFactory. Utilisez cette classe pour importer la spécification de clé publique CE. Pour plus d'informations, reportez-vous à la classe ECPublicKeySpec dans la documentation de l'API Java Platform.
Les classes KeySpec suivantes sont prises en charge pour la méthode generatePrivate :
- PKCS8EncodedKeySpec : utilisé pour les clés privées EC et RSA. Pour plus d'informations, reportez-vous à la classe PKCS8EncodedKeySpec dans la documentation de l'API Java Platform.
- RSAPrivateCrtKeySpec : pour les clés privées RSA uniquement. Pour plus d'informations, reportez-vous à la classe RSAPrivateCrtKeySpec dans la documentation de l'API Java Platform.
- ECPrivateKeySpec : pour les clés privées EC uniquement. Pour plus d'informations, reportez-vous à la classe ECPrivateKeySpec dans la documentation de l'API Java Platform.
La méthode translateKey accepte toutes les clés qui implémentent l'interface Key, ce qui permet une conversion transparente entre différents formats de clé.
Fonctions de cryptage
Le fournisseur JCE de gestion des clés dédiée prend en charge les combinaisons suivantes d'algorithme, de mode et de remplissage.
| Algorithme | Mode | Remplissage | Remarque |
|---|---|---|---|
| AES | CBC |
AES/CBC/NoPadding AES/CBC/PKCS5Padding |
Implémente Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE. Implémente Cipher.UNWRAP_MODE pour AES/CBC NoPadding |
| AES | BCE |
AES/ECB/PKCS5Padding 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 | AS/GCM/NoPadding |
Implémente Cipher.WRAP_MODE, Cipher.UNWRAP_MODE, Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE. Lors de l'exécution du chiffrement AES-GCM, le module HSM ignore le vecteur d'initialisation (IV) dans la demande et utilise une IV qu'il génère. Une fois l'opération terminée, vous devez appeler Cipher.getIV() pour obtenir l'IV. |
| AESWrap | BCE |
AESWrap/BCE/NoPadding AESWrap/BCE/PKCS5Padding AESWrap/BCE/ZeroPadding |
Implémente Cipher.WRAP_MODE et Cipher.UNWRAP_MODE. |
| DESede (Triple DES) | CBC |
DESede/CBC/PKCS5Padding DESede/CBC/NoPadding |
Implémente Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE. DESede est pris en charge uniquement sur les clusters non FIPS. |
| DESede (Triple DES) | BCE |
DESede/BCE/NoPadding DESede/BCE/PKCS5Padding |
Implémente Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE. DESede est pris en charge uniquement sur les clusters non FIPS. |
| RSA | BCE |
RSA/ECB/PKCS1Padding voir 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 |
Implémente Cipher.WRAP_MODE, Cipher.UNWRAP_MODE, Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE. |
| RSA | BCE | RSA/ECB/NoPadding | Implémente Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE. |
| RSAAESWrap | BCE |
RSAAESWrap/BCE/OAEPPadding RSAAESWrap/BCE/OAEPWithSHA-1ANDMGF1Padding RSAAESWrap/BCE/OAEPWithSHA-224ANDMGF1Padding RSAAESWrap/BCE/OAEPWithSHA-256ANDMGF1Padding RSAAESWrap/BCE/OAEPWithSHA-384ANDMGF1Padding RSAAESWrap/BCE/OAEPWithSHA-512ANDMGF1Padding |
Implémente Cipher.WRAP_MODE et Cipher.UNWRAP_MODE. |
Fonctions de signature et de vérification
Le fournisseur JCE DKMS prend en charge les types de signature et de vérification suivants :
Types de signature RSA
-
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
-
NONEwithECDSA
-
SHA1withECDSA
-
SHA224withECDSA
-
SHA256withECDSA
-
SHA384withECDSA
-
SHA512withECDSA
Fonctions de condensé de message
Générez des valeurs de hachage cryptographiques pour la vérification de l'intégrité des données. Le fournisseur JCE DKMS prend en charge les synthèses de message suivantes.
-
SHA-1
-
SHA-224
-
SHA-256
-
SHA-384
-
SHA-512
Fonctions HMAC (Hash-based Message Authentication Code)
Générez des clés HMAC (Hash-based message authentication code) pour les fonctions de hachage cryptographique. HMAC est utilisé pour vérifier l'intégrité et l'authenticité des données en appliquant une clé secrète avec une fonction de hachage. Le fournisseur JCE de gestion des clés dédiée 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)
Code d'authentification de message basé sur le chiffrement (CMAC)
Générez des codes d'authentification de message basés sur le chiffrement (CMAC) à l'aide de chiffrements de bloc (par exemple, AES) pour produire un code d'authentification qui garantit l'intégrité et l'authenticité des messages. Le CMAC fonctionne de la même manière que le HMAC, mais utilise un chiffrement de clé symétrique pour l'opération cryptographique.
Le fournisseur JCE de gestion des clés dédiée prend en charge l'algorithme AESCMAC pour la génération CMAC.