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 generatePublic dans RSAKeyFactory et EcKeyFactory, 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 generatePublic dans RSAKeyFactory. 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 generatePublic dans EcKeyFactory. 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.