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à.
Esegui la migrazione del tuo provider JCE da AWS CloudHSM Client SDK 3 a Client SDK 5
Utilizzate questo argomento per migrare il vostro provider JCE da AWS CloudHSM Client SDK 3 a Client SDK 5. Per i vantaggi della migrazione, consulta. Vantaggi di AWS CloudHSM Client SDK 5
Nel AWS CloudHSM, le applicazioni dei clienti eseguono operazioni crittografiche utilizzando il AWS CloudHSM Client Software Development Kit (SDK). Client SDK 5 è l'SDK principale che continua ad avere nuove funzionalità e supporto per la piattaforma.
Il provider Client SDK 3 JCE utilizza classi personalizzate APIs che non fanno parte delle specifiche JCE standard. Client SDK 5 per il provider JCE è conforme alla specifica JCE ed è retrocompatibile con Client SDK 3 in alcune aree. Le applicazioni del cliente potrebbero richiedere modifiche come parte della migrazione a 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 da AWS CloudHSM Client SDK 3 a Client SDK 5.
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 in Client SDK 3 | Che cos'è in Client SDK 5 | Esempio |
---|---|---|---|
Classe e nome del provider |
La classe del provider JCE in Client SDK 3 viene chiamata |
In 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 in Client SDK 3 | Che cos'è in Client SDK 5 | Esempio |
---|---|---|---|
Login esplicito |
Client SDK 3 utilizza la |
In Client SDK 5, il |
Per un esempio su come utilizzare l'accesso esplicito con Client SDK 5, consulta l' LoginRunner esempio nel repository di esempio di AWS GitHub CloudHSM |
Accesso 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 da Client SDK 3 a Client SDK 5. |
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 in Client SDK 3 | Che cos'è in Client SDK 5 | Esempio |
---|---|---|---|
Generazione delle chiavi |
In Client SDK 3, |
In Client SDK 5, |
Per un esempio su come generare una chiave simmetrica, consulta l' |
Generazione di coppie di chiavi |
In Client SDK 3, |
In 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 di generazione di key pair 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 di 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 cambiati
La ricerca di una chiave già generata con AWS CloudHSM comporta l'utilizzo di. KeyStore Client SDK 3 è di due KeyStore tipi: Cavium
e. CloudHSM
Client SDK 5 ha solo un KeyStore tipo:. CloudHSM
Il passaggio da Cavium
KeyStore a CloudHSM
KeyStore richiede un cambio di KeyStore tipo. Inoltre, Client SDK 3 utilizza le maniglie dei tasti per fare riferimento alle chiavi, mentre Client SDK 5 utilizza le etichette delle chiavi. Le modifiche comportamentali risultanti sono elencate di seguito.
Cosa è cambiato | Cosa c'era in Client SDK 3 | Che cos'è in Client SDK 5 | Esempio |
---|---|---|---|
Riferimenti chiave |
Con Client SDK 3, le applicazioni utilizzano etichette o maniglie di tasti per fare riferimento alle chiavi nell'HSM. Utilizzano etichette KeyStore per trovare una chiave, oppure usano maniglie per creare |
In Client SDK 5, le applicazioni possono utilizzare la funzione 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 comando AWS CloudHSM |
|
Ricerca di voci multiple |
Quando si cerca una chiave utilizzando |
Con AWS CloudHSM |
|
Trova tutte le chiavi |
In Client SDK 3 è possibile trovare tutte le chiavi nell'HSM utilizzando. |
Client SDK 5 rende la ricerca delle chiavi più semplice ed efficiente utilizzando la classe. |
Un esempio che utilizza la |
Eliminazione della chiave |
Client SDK 3 utilizza |
L' |
Un codice di esempio che mostra la funzionalità di eliminazione delle chiavi è disponibile nel repository di esempio GitHub CloudHSM |
-
[1] uno snippet è 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 in Client SDK 3:
Util.deleteKey(key);
Eliminazione di una chiave in 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 a Client SDK 5
Segui le istruzioni in questa sezione per migrare da Client SDK 3 a Client SDK 5.
Nota
Amazon Linux, Ubuntu 16.04, Ubuntu 18.04 CentOS 6, CentOS 8 e RHEL 6 non sono attualmente supportati con Client SDK 5. Se attualmente utilizzi una di queste piattaforme con Client SDK 3, dovrai scegliere una piattaforma diversa durante la migrazione a Client SDK 5.
-
Disinstalla il provider JCE per Client SDK 3.
-
Disinstalla il Client Daemon per Client SDK 3.
Nota
Le configurazioni personalizzate devono essere nuovamente abilitate.
-
Installa il provider Client SDK JCE seguendo la procedura riportata di seguito. Installare il provider JCE 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 provider Client SDK 5 JCE, segui le istruzioni elencate nella guida per l'utente riportata di seguito. Esegui il bootstrap di Client SDK
-
Nel tuo ambiente di sviluppo, prova la tua applicazione. Aggiorna il codice esistente per risolvere le modifiche sostanziali prima della migrazione finale.