Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Migra il tuo JCE provider dal AWS CloudHSM Client SDK 3 al Client 5 SDK
Usa questo argomento per migrare il tuo JCEprovider dal AWS CloudHSM Client SDK 3 al Client SDK 5. Per i vantaggi della migrazione, consulta. Vantaggi del AWS CloudHSM cliente SDK 5
Nel AWS CloudHSM, le applicazioni dei clienti eseguono operazioni crittografiche utilizzando il AWS CloudHSM Client Software Development Kit ()SDK. Il Client SDK 5 è il principale SDK che continua ad avere nuove funzionalità e supporto per la piattaforma.
Il JCE provider Client SDK 3 utilizza classi personalizzate e APIs che non fanno parte delle JCE specifiche standard. Il Client SDK 5 del JCE provider è conforme alle JCE specifiche ed è retrocompatibile con il Client SDK 3 in alcune aree. Le applicazioni del cliente potrebbero richiedere modifiche nell'ambito della migrazione al Client SDK 5. Questa sezione descrive le modifiche necessarie per una migrazione di successo.
Per consultare le istruzioni di migrazione per tutti i provider, consultaMigrazione dal AWS CloudHSM Client SDK 3 al Client 5 SDK.
Argomenti
Preparati affrontando le modifiche più importanti
Rivedi queste modifiche sostanziali e aggiorna di conseguenza l'applicazione nel tuo ambiente di sviluppo.
La classe e il nome del Provider sono cambiati
Cosa è cambiato | Cosa c'era nel Client SDK 3 | Cosa c'è nel Client SDK 5 | Esempio |
---|---|---|---|
Classe e nome del provider |
La classe del JCE provider nel Client SDK 3 viene chiamata |
Nel Client SDK 5, la classe Provider viene chiamata |
Un esempio di come inizializzare l' |
L'accesso esplicito è cambiato, quello implicito no
Cosa è cambiato | Cosa c'era nel Client SDK 3 | Cosa c'è nel Client SDK 5 | Esempio |
---|---|---|---|
Login esplicito |
Il Client SDK 3 utilizza la |
Nel Client SDK 5, il |
Per un esempio su come utilizzare l'accesso esplicito con Client SDK 5, consulta l' LoginRunner esempio nel AWScloud HSM GitHub sample |
Login implicito |
Non sono richieste modifiche per l'accesso implicito. Lo stesso file di proprietà e tutte le variabili di ambiente continueranno a funzionare per l'accesso implicito durante la migrazione dal Client SDK 3 al Client 5. SDK |
Per un esempio su come utilizzare l'accesso implicito con Client SDK 5, consulta l'LoginRunner esempio nel repository di esempio |
-
[1] Frammento di codice Client SDK 3:
LoginManager lm = LoginManager.getInstance(); lm.login(partition, user, pass);
-
[2] Frammento di codice Client SDK 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);
Per un esempio su come utilizzare l'accesso esplicito con Client SDK 5, consulta l'LoginRunner esempio nel repository di esempio
. AWS CloudHSM GitHub
La generazione delle chiavi è cambiata
Cosa è cambiato | Cosa c'era nel Client SDK 3 | Cosa c'è nel Client SDK 5 | Esempio |
---|---|---|---|
Generazione delle chiavi |
Nel Client SDK 3, |
Nel Client SDK 5, |
Per un esempio su come generare una chiave simmetrica, consulta l' |
Generazione di coppie di chiavi |
Nel Client SDK 3, |
Nel Client SDK 5, |
Per un esempio su come |
-
[1] Frammento di codice per la generazione di chiavi Client SDK 3:
KeyGenerator keyGen = KeyGenerator.getInstance("AES", "Cavium"); CaviumAESKeyGenParameterSpec aesSpec = new CaviumAESKeyGenParameterSpec( keySizeInBits, keyLabel, isExtractable, isPersistent); keyGen.init(aesSpec); SecretKey aesKey = keyGen.generateKey();
-
[2] Frammento di codice per la generazione di chiavi Client SDK 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] Frammento di codice per la generazione di coppie di chiavi Client SDK 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] Frammento di codice per la generazione di key pair Client SDK 5:
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 ricerca, l'eliminazione e il riferimento alle chiavi sono stati modificati
La ricerca di una chiave già generata con AWS CloudHSM comporta l'utilizzo di. KeyStore Il client SDK 3 ha due KeyStore tipi: Cavium
eCloudHSM
. Il client SDK 5 ha solo un KeyStore tipo:CloudHSM
.
Il passaggio da Cavium
KeyStore a CloudHSM
KeyStore richiede un cambio di KeyStore tipo. Inoltre, il Client SDK 3 utilizza le maniglie dei tasti per fare riferimento alle chiavi, mentre il Client SDK 5 utilizza le etichette dei tasti. Le modifiche comportamentali risultanti sono elencate di seguito.
Cosa è cambiato | Cosa c'era nel Client SDK 3 | Cosa c'è nel Client SDK 5 | Esempio |
---|---|---|---|
Riferimenti chiave |
Con Client SDK 3, le applicazioni utilizzano etichette o maniglie di tasti per fare riferimento alle chiavi inHSM. Usano etichette con KeyStore per trovare una chiave, oppure usano maniglie per creare |
Nel Client SDK 5, le applicazioni possono utilizzare AWS CloudHSM KeyStore Classe Java per Client SDK 5 per trovare le chiavi per etichetta. Per trovare le chiavi in base alla maniglia, usa il AWS CloudHSM |
|
Ricerca di voci multiple |
Quando si cerca una chiave utilizzando |
Con AWS CloudHSM |
|
Trova tutte le chiavi |
Nel Client SDK 3 è possibile trovare tutte le chiavi in HSM uso |
Il Client SDK 5 rende la ricerca delle chiavi più semplice ed efficiente utilizzando la |
Un esempio che utilizza la |
Eliminazione della chiave |
Il Client SDK 3 utilizza |
L' |
Un codice di esempio che mostra la funzionalità di eliminazione delle chiavi è disponibile nel repository di esempio di Cloud HSM Github |
-
[1] un frammento è mostrato di seguito:
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] Eliminazione di una chiave nel Client 3: SDK
Util.deleteKey(key);
Eliminazione di una chiave nel Client SDK 5:
((Destroyable) key).destroy();
Le operazioni di cancellazione di cifratura sono cambiate, le altre operazioni di cifratura no
Nota
Non sono necessarie modifiche per le operazioni di cifratura. encrypt/decrypt/wrap
Le operazioni Unwrap richiedono la sostituzione della CaviumUnwrapParameterSpec
classe Client SDK 3 con una delle seguenti classi specifiche per le operazioni crittografiche elencate.
GCMUnwrapKeySpec
per unwrapAES/GCM/NoPadding
IvUnwrapKeySpec
perAESWrap unwrap
eAES/CBC/NoPadding unwrap
OAEPUnwrapKeySpec
perRSA OAEP unwrap
Frammento di esempio per: 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);
Le operazioni di firma non sono cambiate
Non sono necessarie modifiche per le operazioni di firma.
Esegui la migrazione al Client 5 SDK
Segui le istruzioni in questa sezione per migrare dal Client SDK 3 al SDK Client 5.
Nota
Amazon Linux, Ubuntu 16.04, Ubuntu 18.04 CentOS 6, CentOS 8 e RHEL 6 non sono attualmente supportati con Client 5. SDK Se attualmente utilizzi una di queste piattaforme con il Client SDK 3, dovrai scegliere una piattaforma diversa durante la migrazione al Client 5. SDK
-
Disinstalla il JCE provider per il Client SDK 3.
-
Disinstalla il Client Daemon per Client SDK 3.
Nota
Le configurazioni personalizzate devono essere nuovamente abilitate.
-
Installa il SDK JCE provider Client seguendo la procedura riportata di seguito. Installa il JCE provider per AWS CloudHSM Client SDK 5
-
Client SDK 5 introduce un nuovo formato di file di configurazione e uno strumento di avvio da riga di comando. Per avviare il JCE provider Client SDK 5, segui le istruzioni elencate nella guida per l'utente riportata di seguito. Avvia il client SDK
-
Nel tuo ambiente di sviluppo, prova la tua applicazione. Aggiorna il codice esistente per risolvere le modifiche sostanziali prima della migrazione finale.