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à.
Problemi noti per il JCE SDK AWS CloudHSM
I seguenti problemi influiscono sul JCE SDK modulo AWS CloudHSM.
Argomenti
- Issue: (Problema:) quando si utilizzano coppie di chiavi asimmetriche, viene visualizzata la capacità della chiave occupata anche quando non si creano o importano esplicitamente le chiavi
- Problema: JCE KeyStore è di sola lettura
- Problema: i buffer per la AES GCM crittografia non possono superare i 16.000 byte
- Problema: la derivazione della chiave Diffie-Hellman () con curva ellittica viene eseguita parzialmente all'interno di ECDH HSM
- Problema: KeyGenerator e interpreta KeyAttribute erroneamente il parametro della dimensione della chiave come numero di byte anziché come bit
- Problema: il client SDK 5 genera l'avviso «Si è verificata un'operazione di accesso riflessivo illegale»
- Problema: il pool JCE di sessioni è esaurito
- Problema: perdita di memoria del Client SDK 5 durante le operazioni getKey
Issue: (Problema:) quando si utilizzano coppie di chiavi asimmetriche, viene visualizzata la capacità della chiave occupata anche quando non si creano o importano esplicitamente le chiavi
-
Impatto: questo problema può causare l'HSMsesaurimento imprevisto dello spazio sulle chiavi e si verifica quando l'applicazione utilizza un oggetto JCE chiave standard per le operazioni di crittografia anziché un
CaviumKey
oggetto. Quando si utilizza un oggetto JCE chiave standard, importaCaviumProvider
implicitamente tale chiave HSM come chiave di sessione e non elimina questa chiave fino alla chiusura dell'applicazione. Di conseguenza, le chiavi si accumulano mentre l'applicazione è in esecuzione e possono causare l'HSMsesaurimento dello spazio libero sulle chiavi, bloccando così l'applicazione. -
Soluzione alternativa: quando si utilizza la
CaviumSignature
classe, laCaviumCipher
CaviumMac
classe, la classe o laCaviumKeyAgreement
classe, è necessario fornire la chiave come oggetto chiaveCaviumKey
anziché come oggetto JCE chiave standard.È possibile convertire manualmente una chiave normale in
CaviumKey
utilizzando la classeImportKey
e quindi è possibile eliminare manualmente la chiave al termine dell'operazione. -
Resolution status: (Stato di risoluzione): stiamo aggiornando
CaviumProvider
per gestire correttamente le importazioni implicite. Non appena disponibile, la correzione sarà annunciata nella pagina della cronologia delle versioni.
Problema: JCE KeyStore è di sola lettura
-
Impatto: oggi non è possibile memorizzare HSM nel JCE keystore un tipo di oggetto che non è supportato da. Nello specifico, non è possibile archiviare certificati nel keystore. Questo impedisce l'interoperabilità con strumenti come jarsigner, che si aspettano di trovare il certificato nel keystore.
-
Workaround: (Soluzione) è possibile rilavorare il codice per caricare i certificati da file locali o da una posizione del bucket S3 anziché dal keystore.
-
Resolution status: (Stato di risoluzione) stiamo aggiungendo il supporto per l'archiviazione di certificati nel keystore. Non appena disponibile, la funzionalità sarà annunciata nella pagina della cronologia delle versioni.
Problema: i buffer per la AES GCM crittografia non possono superare i 16.000 byte
MultiparteAES: la GCM crittografia non è supportata.
-
Impatto: non è possibile utilizzare AES - GCM per crittografare dati di dimensioni superiori a 16.000 byte.
-
Soluzione alternativa: puoi utilizzare un meccanismo alternativo, ad esempio AES -CBC, oppure puoi dividere i dati in parti e crittografare ogni parte singolarmente. Se si dividono i dati, è necessario gestire il testo cifrato diviso e la sua decrittografia. Poiché FIPS richiede che il vettore di inizializzazione (IV) per AES - GCM sia generato sul fileHSM, l'IV per ogni dato AES-GCM-encrypted sarà diverso.
-
Stato della risoluzione: stiamo correggendo esplicitamente SDK l'errore se il buffer di dati è troppo grande. Stiamo valutando alternative che supportino buffer più grandi senza dover ricorrere alla crittografia in più parti. Gli aggiornamenti saranno annunciati nel forum AWS CloudHSM e nella pagina della cronologia delle versioni.
Problema: la derivazione della chiave Diffie-Hellman () con curva ellittica viene eseguita parzialmente all'interno di ECDH HSM
La chiave privata EC rimane sempre all'interno di, ma il processo di HSM derivazione della chiave viene eseguito in più fasi. Pertanto, nel client sono disponibili i risultati intermedi di ciascuna fase. Un esempio di derivazione ECDH chiave è disponibile negli esempi di codice Java.
-
Impatto: il Client SDK 3 aggiunge ECDH funzionalità a. JCE Quando si utilizza la
KeyAgreement
classe per derivare un SecretKey, questa è prima disponibile sul client e quindi viene importata HSM in. Un handle della chiave viene quindi restituito all'applicazione. -
Soluzione alternativa: se state implementandoSSL/TLSOffload in AWS CloudHSM, questa limitazione potrebbe non essere un problema. Se l'applicazione richiede che la chiave rimanga sempre entro un FIPS limite, prendete in considerazione l'utilizzo di un protocollo alternativo che non si basi sulla ECDH derivazione delle chiavi.
-
Stato della risoluzione: stiamo sviluppando l'opzione per eseguire la derivazione delle ECDH chiavi interamente all'interno di. HSM Quando disponibile, annunceremo l'implementazione aggiornata nella pagina della cronologia delle versioni.
Problema: KeyGenerator e interpreta KeyAttribute erroneamente il parametro della dimensione della chiave come numero di byte anziché come bit
Quando si genera una chiave utilizzando la init
funzione della KeyGenerator classeSIZE
attributo dell'AWS CloudHSM KeyAttribute enum, si aspetta API erroneamente che l'argomento sia il numero di byte chiave, mentre dovrebbe invece essere il numero di bit della chiave.
-
Impatto: SDK le versioni client da 5.4.0 a 5.4.2 si aspettano erroneamente che la dimensione della chiave venga fornita al valore specificato in byte. APIs
-
Soluzione alternativa: converti la dimensione della chiave da bit a byte prima di utilizzare la KeyGenerator classe o l' KeyAttribute enum per generare chiavi utilizzando il provider se utilizzi le versioni Client da 5.4.0 a 5.4.2. AWS CloudHSM JCE SDK
-
Stato della risoluzione: aggiorna la SDK versione del client alla 5.5.0 o successiva, che include una correzione per prevedere correttamente le dimensioni delle chiavi in bit quando si utilizza la classe o l'enum per generare le chiavi. KeyGenerator KeyAttribute
Problema: il client SDK 5 genera l'avviso «Si è verificata un'operazione di accesso riflessivo illegale»
Quando si utilizza Client SDK 5 con Java 11, Cloud HSM genera il seguente avviso Java:
``` WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.amazonaws.cloudhsm.jce.provider.CloudHsmKeyStore (file:/opt/cloudhsm/java/cloudhsm-jce-5.6.0.jar) to field java.security .KeyStore.keyStoreSpi WARNING: Please consider reporting this to the maintainers of com.amazonaws.cloudhsm.jce.provider.CloudHsmKeyStore WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release ```
Questi avvisi non hanno alcun impatto. Siamo consapevoli del problema e stiamo lavorando per risolverlo. Non è necessaria alcuna risoluzione o soluzione alternativa.
Problema: il pool JCE di sessioni è esaurito
Impatto: potresti non essere in grado di eseguire operazioni JCE dopo aver visualizzato il seguente messaggio:
com.amazonaws.cloudhsm.jce.jni.exception.InternalException: There are too many operations happening at the same time: Reached max number of sessions in session pool: 1000
Soluzioni alternative:
Riavvia JCE l'applicazione se riscontri un impatto.
Quando si esegue un'operazione, potrebbe essere necessario completarla JCE prima di perdere il riferimento all'operazione.
Nota
A seconda dell'operazione, potrebbe essere necessario un metodo di completamento.
Operazione Metodo/i di completamento Crittografia doFinal()
in modalità crittografia o decrittografiawrap()
in modalità wrappingunwrap()
in modalità annullamento del wrappingKeyAgreement generateSecret()
ogenerateSecret(String)
KeyPairGenerator generateKeyPair()
,genKeyPair()
oreset()
KeyStore Nessun metodo necessario MAC doFinal()
oreset()
MessageDigest digest()
oreset()
SecretKeyFactory Nessun metodo necessario SecureRandom Nessun metodo necessario Firma sign()
in modalità firmaverify()
in modalità verifica
Stato della risoluzione: abbiamo risolto questo problema in Client SDK 5.9.0 e versioni successive. Per risolvere questo problema, aggiorna il tuo Client SDK a una di queste versioni.
Problema: perdita di memoria del Client SDK 5 durante le operazioni getKey
-
Impatto: l'API
getKey
operazione presenta una perdita di memoria JCE nelle SDK versioni Client 5.10.0 e precedenti. Se lo utilizzigetKey
API più volte nell'applicazione, ciò comporterà una maggiore crescita della memoria e di conseguenza aumenterà l'ingombro di memoria nell'applicazione. Nel tempo ciò potrebbe causare errori di limitazione o richiedere il riavvio dell'applicazione. -
Soluzione alternativa: si consiglia l'aggiornamento al Client 5.11.0. SDK Se ciò non è possibile, consigliamo di non chiamarlo
getKey
API più volte nell'applicazione. Piuttosto, riutilizzate il più possibile la chiave restituita in precedenza dall'getKey
operazione precedente. -
Stato della risoluzione: aggiorna la SDK versione del client alla 5.11.0 o successiva, che include una correzione per questo problema.