Esegui la migrazione del tuo provider JCE da AWS CloudHSM Client SDK 3 a Client SDK 5 - AWS CloudHSM

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.

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 CaviumProvider e ha il nome Provider. Cavium

In Client SDK 5, la classe Provider viene chiamata CloudHsmProvider e ha il nome Provider. CloudHSM

Un esempio di come inizializzare l'CloudHsmProvideroggetto è disponibile nel repository di AWS CloudHSM GitHub esempio.

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 LoginManager classe per l'accesso esplicito. 1

In Client SDK 5, il CloudHSM provider implementa l'accesso AuthProvider esplicito. AuthProviderè una classe Java standard e segue il modo idiomatico di Java per accedere a un provider. Grazie alla migliore gestione dello stato di accesso in Client SDK 5, le applicazioni non devono più monitorare ed eseguire l'accesso durante le riconnessioni. 2

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. AWS CloudHSM GitHub

  • [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, Cavium[Key-type]AlgorithmParameterSpec viene utilizzato per specificare i parametri di generazione delle chiavi. Per un frammento di codice, consulta la nota a piè di pagina. 1

In Client SDK 5, KeyAttributesMap viene utilizzato per specificare gli attributi di generazione delle chiavi. Per un frammento di codice, consulta la nota a piè di pagina. 2

Per un esempio su come generare una chiave simmetrica, consulta l'KeyAttributesMapesempio nel repository di SymmetricKeys esempio di AWS GitHub CloudHSM.

Generazione di coppie di chiavi

In Client SDK 3, Cavium[Key-type]AlgorithmparameterSpec viene utilizzato per specificare i parametri di generazione delle key pair. Per un frammento di codice, consulta la nota a piè di pagina. 3

In Client SDK 5, KeyPairAttributesMap viene utilizzato per specificare questi parametri. Per un frammento di codice, consulta la nota a piè di pagina. 4

Per un esempio su come KeyAttributesMap generare una chiave asimmetrica, consultate l'esempio nel AsymmetricKeys repository di esempio. AWS CloudHSM GitHub

  • [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 CaviumKey oggetti.

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 KeyStoreWithAttributes with AWS CloudHSM KeyReferenceSpec.

Ricerca di voci multiple

Quando si cerca una chiave utilizzando getEntry o getCertificate in scenari in cui sono presenti più elementi con gli stessi criteri in Cavium KeyStore, verrà restituita solo la prima voce trovata. getKey

Con AWS CloudHSM KeyStore andKeyStoreWithAttributes, questo stesso scenario comporterà la generazione di un'eccezione. Per risolvere questo problema, si consiglia di impostare etichette univoche per le chiavi utilizzando il Imposta gli attributi delle chiavi con CloudhSM CLI comando nella CLI di CloudHSM. Oppure usa KeyStoreWithAttributes#getKeys per restituire tutte le chiavi che corrispondono ai criteri.

Trova tutte le chiavi

In Client SDK 3 è possibile trovare tutte le chiavi nell'HSM utilizzando. Util.findAllKeys()

Client SDK 5 rende la ricerca delle chiavi più semplice ed efficiente utilizzando la classe. KeyStoreWithAttributes Quando possibile, memorizza nella cache le chiavi per ridurre al minimo la latenza. Per ulteriori informazioni, consulta Gestisci efficacemente le chiavi nella tua applicazione. Se hai bisogno di recuperare tutte le chiavi dall'HSM, usale KeyStoreWithAttributes#getKeys con una chiave vuota. KeyAttributesMap

Un esempio che utilizza la KeyStoreWithAttributes classe per trovare una chiave è disponibile nel repository di AWS CloudHSM GitHub esempio e un frammento di codice è mostrato in. 1

Eliminazione della chiave

Client SDK 3 utilizza Util.deleteKey() per eliminare una chiave.

L'Keyoggetto in Client SDK 5 implementa l'Destroyableinterfaccia che consente di eliminare le chiavi utilizzando il destroy() metodo di questa interfaccia.

Un codice di esempio che mostra la funzionalità di eliminazione delle chiavi è disponibile nel repository di esempio GitHub CloudHSM. Un frammento di esempio per ogni SDK è mostrato in. 2

  • [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.

  • GCMUnwrapKeySpecper unwrap AES/GCM/NoPadding

  • IvUnwrapKeySpecper AESWrap unwrap e AES/CBC/NoPadding unwrap

  • OAEPUnwrapKeySpec per RSA 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.

  1. Disinstalla il provider JCE per Client SDK 3.

    Amazon Linux 2
    $ sudo yum remove cloudhsm-client-jce
    CentOS 7
    $ sudo yum remove cloudhsm-client-jce
    RHEL 7
    $ sudo yum remove cloudhsm-client-jce
    RHEL 8
    $ sudo yum remove cloudhsm-client-jce
  2. Disinstalla il Client Daemon per Client SDK 3.

    Amazon Linux 2
    $ sudo yum remove cloudhsm-client
    CentOS 7
    $ sudo yum remove cloudhsm-client
    RHEL 7
    $ sudo yum remove cloudhsm-client
    RHEL 8
    $ sudo yum remove cloudhsm-client
    Nota

    Le configurazioni personalizzate devono essere nuovamente abilitate.

  3. Installa il provider Client SDK JCE seguendo la procedura riportata di seguito. Installare il provider JCE per AWS CloudHSM Client SDK 5

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

  5. Nel tuo ambiente di sviluppo, prova la tua applicazione. Aggiorna il codice esistente per risolvere le modifiche sostanziali prima della migrazione finale.

Argomenti correlati