Migra il tuo JCE provider dal AWS CloudHSM Client SDK 3 al Client 5 SDK - 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à.

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.

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 CaviumProvider e ha il nome del providerCavium.

Nel Client SDK 5, la classe Provider viene chiamata CloudHsmProvider e ha il nome ProviderCloudHSM.

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 nel Client SDK 3 Cosa c'è nel Client SDK 5 Esempio

Login esplicito

Il Client SDK 3 utilizza la LoginManager classe per l'accesso esplicito. 1

Nel Client SDK 5, il CloudHSM provider AuthProvider implementa l'accesso 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 nel 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 AWScloud HSM GitHub sample repository.

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. 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 nel Client SDK 3 Cosa c'è nel Client SDK 5 Esempio

Generazione delle chiavi

Nel Client SDK 3, Cavium[Key-type]AlgorithmParameterSpec viene utilizzato per specificare i parametri di generazione delle chiavi. Per un frammento di codice, vedi nota a piè di pagina. 1

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

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

Generazione di coppie di chiavi

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

Nel Client SDK 5, KeyPairAttributesMap viene utilizzato per specificare questi parametri. Per un frammento di codice, vedi 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 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 CaviumKey oggetti.

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

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 Cloud HSM CLI comando in Cloud HSMCLI. Oppure usa KeyStoreWithAttributes#getKeys per restituire tutte le chiavi che corrispondono ai criteri.

Trova tutte le chiavi

Nel Client SDK 3 è possibile trovare tutte le chiavi in HSM usoUtil.findAllKeys().

Il Client SDK 5 rende la ricerca delle chiavi più semplice ed efficiente utilizzando la KeyStoreWithAttributes classe. Quando possibile, memorizza nella cache le chiavi per ridurre al minimo la latenza. Per ulteriori informazioni, consulta Gestisci in modo efficace le chiavi nella tua applicazione. Quando devi recuperare tutte le chiavi daHSM, usale KeyStoreWithAttributes#getKeys con una chiave vuota. KeyAttributesMap

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

Eliminazione della chiave

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

L'Keyoggetto nel 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 di Cloud HSM Github. Un frammento di esempio per ciascuna di esse è mostrato in. SDK 2

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

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

  1. Disinstalla il JCE provider per il Client SDK 3.

    Amazon Linux 2
    $ sudo yum remove cloudhsm-jce
    CentOS 7
    $ sudo yum remove cloudhsm-jce
    RHEL 7
    $ sudo yum remove cloudhsm-jce
    RHEL 8
    $ sudo yum remove cloudhsm-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 SDK JCE provider Client seguendo la procedura riportata di seguito. Installa il JCE provider 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 JCE provider Client SDK 5, segui le istruzioni elencate nella guida per l'utente riportata di seguito. Avvia il 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