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.
Migrez votre fournisseur JCE du SDK AWS CloudHSM client 3 vers le SDK client 5
Utilisez cette rubrique pour migrer votre fournisseur JCE du SDK AWS CloudHSM client 3 vers le SDK client 5. Pour connaître les avantages de la migration, voirAvantages du SDK AWS CloudHSM client 5.
Dans AWS CloudHSM, les applications client exécutent des opérations cryptographiques à l'aide du kit de développement logiciel (SDK) AWS CloudHSM client. Le SDK client 5 est le SDK principal auquel de nouvelles fonctionnalités et un support de plateforme continuent d'être ajoutés.
Le fournisseur JCE du SDK client 3 utilise des classes personnalisées APIs qui ne font pas partie de la spécification JCE standard. Le SDK client 5 pour le fournisseur JCE est conforme à la spécification JCE et est rétroincompatible avec le SDK client 3 dans certains domaines. Les applications du client peuvent nécessiter des modifications dans le cadre de la migration vers le SDK client 5. Cette section décrit les modifications requises pour une migration réussie.
Pour consulter les instructions de migration pour tous les fournisseurs, voirMigration du SDK AWS CloudHSM client 3 vers le SDK client 5.
Rubriques
Préparez-vous en faisant face aux changements les plus importants
Passez en revue ces modifications majeures et mettez à jour votre application dans votre environnement de développement en conséquence.
La classe et le nom du fournisseur ont changé
Qu'est-ce qui a changé | Ce que c'était dans le SDK client 3 | Qu'est-ce que c'est dans le SDK client 5 | exemple |
---|---|---|---|
Classe et nom du fournisseur |
La classe de fournisseur JCE du SDK client 3 est appelée |
Dans le SDK client 5, la classe Provider est appelée |
Un exemple d'initialisation de l' |
La connexion explicite a changé, la connexion implicite n'a pas changé
Qu'est-ce qui a changé | Ce que c'était dans le SDK client 3 | Qu'est-ce que c'est dans le SDK client 5 | exemple |
---|---|---|---|
Login explicite |
Le SDK client 3 utilise la |
Dans le SDK client 5, le |
Pour un exemple d'utilisation de la connexion explicite avec le SDK client 5, consultez l' LoginRunner exemple dans le référentiel d'exemples GitHub AWS CloudHSM |
Login implicite |
Aucune modification n'est requise pour la connexion implicite. Le même fichier de propriétés et toutes les variables d'environnement continueront de fonctionner pour la connexion implicite lors de la migration du SDK client 3 vers le SDK client 5. |
Pour un exemple d'utilisation de la connexion implicite avec le SDK client 5, consultez l'LoginRunner exemple |
-
[1] Extrait de code du SDK client 3 :
LoginManager lm = LoginManager.getInstance(); lm.login(partition, user, pass);
-
[2] Extrait de code du SDK client 5 :
// Construct or get the existing provider object AuthProvider provider = new CloudHsmProvider(); // Call login method on the CloudHsmProvider object // Here loginHandler is a CallbackHandler provider.login(null, loginHandler);
Pour un exemple d'utilisation de la connexion explicite avec le SDK client 5, consultez l'LoginRunner exemple
dans le référentiel AWS CloudHSM GitHub d'exemples.
La génération de clés a changé
Qu'est-ce qui a changé | Ce que c'était dans le SDK client 3 | Qu'est-ce que c'est dans le SDK client 5 | exemple |
---|---|---|---|
Génération de clés |
Dans le SDK client 3, |
Dans le SDK client 5, |
Pour un exemple expliquant comment l'utiliser |
Génération de paires de clés |
Dans le SDK client 3, |
Dans le SDK client 5, |
Pour un exemple sur la façon de |
-
[1] Extrait de code de génération de clé du SDK client 3 :
KeyGenerator keyGen = KeyGenerator.getInstance("AES", "Cavium"); CaviumAESKeyGenParameterSpec aesSpec = new CaviumAESKeyGenParameterSpec( keySizeInBits, keyLabel, isExtractable, isPersistent); keyGen.init(aesSpec); SecretKey aesKey = keyGen.generateKey();
-
[2] Extrait de code de génération de clé du SDK client 5 :
KeyGenerator keyGen = KeyGenerator.getInstance("AES", CloudHsmProvider.PROVIDER_NAME); final KeyAttributesMap aesSpec = new KeyAttributesMap(); aesSpec.put(KeyAttribute.LABEL, keyLabel); aesSpec.put(KeyAttribute.SIZE, keySizeInBits); aesSpec.put(KeyAttribute.EXTRACTABLE, isExtractable); aesSpec.put(KeyAttribute.TOKEN, isPersistent); keyGen.init(aesSpec); SecretKey aesKey = keyGen.generateKey();
-
[3] Extrait de code de génération de paires de clés du SDK client 3 :
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("rsa", "Cavium"); CaviumRSAKeyGenParameterSpec spec = new CaviumRSAKeyGenParameterSpec( keySizeInBits, new BigInteger("65537"), label + ":public", label + ":private", isExtractable, isPersistent); keyPairGen.initialize(spec); keyPairGen.generateKeyPair();
-
[4] Extrait de code de génération de 5 paires de clés du SDK client :
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", providerName); // Set attributes for RSA public key final KeyAttributesMap publicKeyAttrsMap = new KeyAttributesMap(); publicKeyAttrsMap.putAll(additionalPublicKeyAttributes); publicKeyAttrsMap.put(KeyAttribute.LABEL, label + ":Public"); publicKeyAttrsMap.put(KeyAttribute.MODULUS_BITS, keySizeInBits); publicKeyAttrsMap.put(KeyAttribute.PUBLIC_EXPONENT, new BigInteger("65537").toByteArray()); // Set attributes for RSA private key final KeyAttributesMap privateKeyAttrsMap = new KeyAttributesMap(); privateKeyAttrsMap.putAll(additionalPrivateKeyAttributes); privateKeyAttrsMap.put(KeyAttribute.LABEL, label + ":Private"); // Create KeyPairAttributesMap and use that to initialize the // keyPair generator KeyPairAttributesMap keyPairSpec = new KeyPairAttributesMapBuilder() .withPublic(publicKeyAttrsMap) .withPrivate(privateKeyAttrsMap) .build(); keyPairGen.initialize(keyPairSpec); keyPairGen.generateKeyPair();
La recherche, la suppression et le référencement des clés ont changé
Pour trouver une clé déjà générée, AWS CloudHSM il faut utiliser le KeyStore. Le SDK client 3 est de deux KeyStore types : Cavium
etCloudHSM
. Le SDK client 5 n'a qu'un seul KeyStore type :CloudHSM
.
Le passage du Cavium
KeyStore à CloudHSM
KeyStore nécessite un changement de KeyStore type. En outre, le SDK client 3 utilise des poignées de touches pour référencer les clés, tandis que le SDK client 5 utilise des étiquettes de touches. Les modifications de comportement qui en résultent sont répertoriées ci-dessous.
Qu'est-ce qui a changé | Ce que c'était dans le SDK client 3 | Qu'est-ce que c'est dans le SDK client 5 | exemple |
---|---|---|---|
Principales références |
Avec le SDK client 3, les applications utilisent des libellés ou des descripteurs de touches pour référencer les clés dans le HSM. Ils utilisent des étiquettes KeyStore pour trouver une clé, ou ils utilisent des poignées pour créer des |
Dans le SDK client 5, les applications peuvent utiliser le AWS CloudHSM KeyStore Classe Java pour le SDK client 5 pour rechercher des clés par étiquette. Pour rechercher les clés par poignée, utilisez la touche AWS CloudHSM |
|
Recherche de plusieurs entrées |
Lorsque vous recherchez une clé à l'aide de |
Avec le AWS CloudHSM |
|
Trouvez toutes les clés |
Dans le SDK client 3, il est possible de trouver toutes les clés du HSM à l'aide de. |
Le SDK client 5 simplifie et rend la recherche de clés plus efficace en utilisant la |
Un exemple utilisant la |
Suppression de la clé |
Le SDK client 3 est utilisé |
L' |
Un exemple de code illustrant la fonctionnalité de suppression de la clé se trouve dans le référentiel d'exemples GitHub CloudHSM |
-
[1] un extrait est affiché ci-dessous :
KeyAttributesMap findSpec = new KeyAttributesMap(); findSpec.put(KeyAttribute.LABEL, label); findSpec.put(KeyAttribute.KEY_TYPE, keyType); KeyStoreWithAttributes keyStore = KeyStoreWithAttributes.getInstance("CloudHSM"); keyStore.load(null, null); keyStore.getKey(findSpec);
-
[2] Suppression d'une clé dans le SDK client 3 :
Util.deleteKey(key);
Suppression d'une clé dans le SDK client 5 :
((Destroyable) key).destroy();
Les opérations de désencapsulage du chiffrement ont changé, les autres opérations de chiffrement n'ont pas changé
Note
Aucune modification n'est requise pour les encrypt/decrypt/wrap opérations de chiffrement.
Les opérations de désencapsulage nécessitent que la CaviumUnwrapParameterSpec
classe du SDK client 3 soit remplacée par l'une des classes suivantes, spécifique aux opérations cryptographiques répertoriées.
GCMUnwrapKeySpec
pourAES/GCM/NoPadding
déballerIvUnwrapKeySpec
pourAESWrap unwrap
etAES/CBC/NoPadding unwrap
OAEPUnwrapKeySpec
pourRSA OAEP unwrap
Exemple d'extrait pour : OAEPUnwrapkeySpec
OAEPParameterSpec oaepParameterSpec = new OAEPParameterSpec( "SHA-256", "MGF1", MGF1ParameterSpec.SHA256, PSpecified.DEFAULT); KeyAttributesMap keyAttributesMap = new KeyAttributesMap(KeyAttributePermissiveProfile.KEY_CREATION); keyAttributesMap.put(KeyAttribute.TOKEN, true); keyAttributesMap.put(KeyAttribute.EXTRACTABLE, false); OAEPUnwrapKeySpec spec = new OAEPUnwrapKeySpec(oaepParameterSpec, keyAttributesMap); Cipher hsmCipher = Cipher.getInstance( "RSA/ECB/OAEPPadding", CloudHsmProvider.PROVIDER_NAME); hsmCipher.init(Cipher.UNWRAP_MODE, key, spec);
Les opérations de signature n'ont pas changé
Aucune modification n'est requise pour les opérations de signature.
Migrer vers le SDK client 5
Suivez les instructions de cette section pour migrer du SDK client 3 vers le SDK client 5.
Note
Amazon Linux, Ubuntu 16.04, Ubuntu 18.04, CentOS 6, CentOS 8 et RHEL 6 ne sont actuellement pas pris en charge avec le SDK client 5. Si vous utilisez actuellement l'une de ces plateformes avec le SDK client 3, vous devrez en choisir une autre lors de la migration vers le SDK client 5.
-
Désinstallez le fournisseur JCE pour le SDK client 3.
-
Désinstallez le démon client pour le SDK client 3.
Note
Les configurations personnalisées doivent être réactivées.
-
Installez le fournisseur JCE du SDK client en suivant les étapes décrites dans. Installation du fournisseur JCE pour le SDK AWS CloudHSM client 5
-
Le SDK client 5 introduit un nouveau format de fichier de configuration et un outil d'amorçage en ligne de commande. Pour démarrer votre fournisseur Client SDK 5 JCE, suivez les instructions répertoriées dans le guide de l'utilisateur ci-dessous. Amorcez le SDK client
-
Dans votre environnement de développement, testez votre application. Mettez à jour votre code existant pour corriger les modifications importantes avant votre migration finale.