Opérations et mécanismes cryptographiques

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 des 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.

  • EC (Elliptic Curve) : La cryptographie à courbe elliptique offre une sécurité élevée avec des tailles de clé plus petites, ce qui la rend efficace pour les applications cryptographiques modernes telles que SSL/TLS et la chaîne de blocs.

  • AES (Advanced Encryption Standard) : AES est une norme de chiffrement largement adoptée pour la protection des données sensibles, qui assure une sécurité renforcée tant pour les données au repos que pour les données 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 grappes non FIPS et est généralement utilisé pour les applications existantes nécessitant une compatibilité descendante.

Convertir des clés avec des usines clés

Les usines de clés sont utilisées pour convertir les clés conformément à une spécification de clé donnée. Pour plus d'informations, voir Interface KeySpec dans la documentation sur l'API de plate-forme Java. Les deux principaux types d'usines clés pour JCE sont les suivants :

SecretKeyFactory

La fabrique SecretKeyFactory est conçue pour importer ou dériver des clés symétriques. Il vous permet de transmettre une valeur Key ou KeySpec prise en charge pour importer des clés symétriques. Pour plus d'informations, voir Classe SecretKeyFactory dans la documentation sur l'API de plate-forme Java.

Les classes KeySpec suivantes sont compatibles avec la méthode generateSecret :

  • KeyAttributesMap : Cette classe vous permet d'importer des octets de clé avec les attributs associés.
  • SecretKeySpec : Cette classe est utilisée pour importer des spécifications de clé symétrique. Pour plus d'informations, voir Interface SecretKey dans la documentation sur l'API de plate-forme Java.
  • DESedeKeySpec : Cette classe est utilisée uniquement avec la spécification DESedeKeyFactory et vous permet d'importer la spécification DESedeKey. Notez que DESede n'est pris en charge que sur les grappes non FIPS. Pour plus d'informations, voir Classe DESedeKeySpec dans la documentation sur l'API de plate-forme Java. Cette classe vous permet de dériver des clés symétriques en fonction d'une clé DKMS AES existante.

La méthode translateKey peut accepter toute clé qui met en oeuvre l'interface Key, ce qui offre de la flexibilité dans le traitement des clés. Pour traduire une clé persistante, réglez DEDICATED_KMS_JCE_TRANSLATE_KEY_PERSISTENT à TRUE dans vos variables d'environnement ou propriétés de 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, voir Classe KeyFactory dans la documentation sur l'API de plate-forme Java.

Les classes KeySpec suivantes sont prises en charge pour la méthode generatePublic :

  • KeyAttributesMap : Disponible à la fois pour RSA et EC KeyTypes.
  • X509EncodedKeySpec : Cette classe est destinée à generatePublic dans RSAKeyFactory et EcKeyFactory, et est utilisée pour importer la spécification de clé encodée X509. Pour plus d'informations, voir Classe X509EncodedKeySpec dans la documentation sur l'API de plate-forme Java.
  • RSAPublicKeySpec : Pour generatePublic dans RSAKeyFactory. Utilisez cette classe pour importer la spécification de clé publique RSA. Pour plus d'informations, voir Classe RSAPublicKeySpec dans la documentation sur l'API de plate-forme Java.
  • ECPublicKeySpec : Pour generatePublic dans EcKeyFactory. Utilisez cette classe pour importer la spécification de clé publique EC. Pour plus d'informations, voir Classe ECPublicKeySpec dans la documentation sur l'API de plate-forme Java.

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, voir Classe PKCS8EncodedKeySpec dans la documentation sur l'API de plate-forme Java.
  • RSAPrivateCrtKeySpec : Pour les clés privées RSA uniquement. Pour plus d'informations, voir Classe RSAPrivateCrtKeySpec dans la documentation sur l'API de plate-forme Java.
  • ECPrivateKeySpec : Pour les clés privées EC uniquement. Pour plus d'informations, voir Classe ECPrivateKeySpec dans la documentation sur l'API de plate-forme Java.

La méthode translateKey accepte toute clé qui met en oeuvre l'interface Key, fournissant une conversion transparente entre différents formats de clé.

Fonctions de chiffrement

Le fournisseur JCE Dedicated Key Management prend en charge les combinaisons suivantes d'algorithme, de mode et de remplissage.

Algorithme Mode Remplissage Notes
AES CBC

AES/CBC/NoPadding

AES/CBC/PKCS5Padding

Met en oeuvre Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE.

Implémente Cipher.UNWRAP_MODE pour AES/CBC NoPadding

AES BCE

AES/ECB/PKCS5Padding

AES/ECB/NoPadding

Met en oeuvre Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE.
AES Taux de clics AES/CTR/NoPadding Met en oeuvre Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE.
AES GCM AES/GCM/NoPadding

Met en oeuvre Cipher.WRAP_MODE, Cipher.UNWRAP_MODE, Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE.

Lors de l'exécution du chiffrement AES-GCM, le module de sécurité matériel ignore le vecteur d'initialisation (IV) dans la demande et utilise un vecteur IV qu'il génère. Une fois l'opération terminée, vous devez appeler Cipher.getIV() pour obtenir le vecteur d'initialisation.

AESWrap BCE

AESWrap/BCE/NoPadding

AESWrap/BCE/PKCS5Padding

AESWrap/BCE/ZeroPadding

Met en oeuvre Cipher.WRAP_MODE et Cipher.UNWRAP_MODE.
DESede (Triple DES) CBC

DESede/CBC/PKCS5Padding

DESede/CBC/NoPadding

Met en oeuvre Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE.

DESede est pris en charge uniquement sur les grappes non FIPS.

DESede (Triple DES) BCE

DESede/ECB/NoPadding

DESede/ECB/PKCS5Padding

Met en oeuvre Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE.

DESede est pris en charge uniquement sur les grappes non FIPS.

RSA BCE

RSA/ECB/PKCS1Padding voir la 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

Met en oeuvre Cipher.WRAP_MODE, Cipher.UNWRAP_MODE, Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE.
RSA BCE RSA/ECB/NoPadding Met en oeuvre 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

Met en oeuvre Cipher.WRAP_MODE et Cipher.UNWRAP_MODE.

Signer et vérifier les fonctions

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érer des valeurs de hachage cryptographiques pour la vérification de l'intégrité des données. Le fournisseur JCE DKMS prend en charge les condensés de message suivants.

  • SHA-1

  • SHA-224

  • SHA-256

  • SHA-384

  • SHA-512

Fonctions HMAC (Hash-based Message Authentication Code)

Générer des clés HMAC (Hash-based Message Authentication Code) pour les fonctions de hachage cryptographiques. 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 Dedicated Key Management 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 un chiffrement (CMAC) à l'aide de chiffrements par blocs (par exemple, AES) pour produire un code d'authentification qui garantit l'intégrité et l'authenticité des messages. CMAC fonctionne de la même manière que HMAC, mais utilise un chiffrement à clé symétrique pour l'opération cryptographique.

Le fournisseur JCE Dedicated Key Management prend en charge l'algorithme AESCMAC pour la génération CMAC.