Problemi noti per la libreria PKCS #11 - 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à.

Problemi noti per la libreria PKCS #11

Problema: il wrapping della chiave AES nella versione 3.0.0 della libreria PKCS #11 non convalida gli IV prima dell'uso

Se specifichi un IV di lunghezza inferiore a 8 byte, viene riempito con byte imprevedibili prima dell'uso.

Nota

Questo ha impatto su C_WrapKey solo con il meccanismo CKM_AES_KEY_WRAP.

  • Impatto: se fornisci un IV inferiore a 8 byte nella versione 3.0.0 della libreria PKCS #11, potrebbe non essere possibile annullare il wrapping della chiave.

  • Soluzioni alternative:

    • Si consiglia vivamente di eseguire l'aggiornamento alla versione 3.0.1 o successiva della libreria PKCS #11, che applica correttamente la lunghezza degli IV durante il wrapping delle chiavi AES. Modifica il codice di wrapping per passare un IV NULL o specifica l'IV predefinito 0xA6A6A6A6A6A6A6A6. Per ulteriori informazioni, consulta la pagina IV personalizzati con lunghezza non conforme per il wrapping di chiavi AES.

    • Se hai eseguito il wrapping delle chiavi con la versione 3.0.0 della libreria PKCS #11 utilizzando un IV inferiore a 8 byte, contattaci per ricevere supporto.

  • Stato della risoluzione: questo problema è stato risolto nella versione 3.0.1 della libreria PKCS #11. Per eseguire il wrapping delle chiavi utilizzando il wrapper delle chiavi AES, specificare un IV di lunghezza NULL o 8 byte.

Problema: PKCS #11 SDK 2.0.4 e versioni precedenti utilizzano sempre l'IV predefinito 0xA6A6A6A6A6A6A6A6 per il wrapping e l'annullamento del wrapping delle chiavi AES

Gli IV forniti dall'utente sono stati ignorati silenziosamente.

Nota

Questo ha impatto su C_WrapKey solo con il meccanismo CKM_AES_KEY_WRAP.

  • Impatto:

    • Se utilizzi PKCS #11 SDK 2.0.4 o una versione precedente e un IV fornito dall'utente, le chiavi vengono sottoposte al wrapping con l'IV predefinito 0xA6A6A6A6A6A6A6A6.

    • Se hai utilizzato PKCS #11 SDK 3.0.0 o versione successiva e un IV fornito dall'utente, le chiavi vengono sottoposte al wrapping con l'IV fornito dall'utente.

  • Soluzioni alternative:

    • Per annullare il wrapping delle chiavi sottoposte al wrapping con PKCS #11 SDK 2.0.4 o versioni precedenti utilizza l'IV predefinito 0xA6A6A6A6A6A6A6A6.

    • Per annullare il wrapping delle chiavi sottoposte al wrapping con PKCS #11 SDK 3.0.0 o versioni successive, utilizza l'IV fornito dall'utente.

  • Stato della risoluzione: si consiglia vivamente di modificare il codice di wrapping e annullamento del wrapping per passare un IV NULL o specificare l'IV predefinito 0xA6A6A6A6A6A6A6A6.

Problema: l'attributo CKA_DERIVE non è supportato e non è stato gestito

  • Stato risoluzione: abbiamo implementato le correzioni per accettare CKA_DERIVE se impostato su FALSE. CKA_DERIVE impostato su TRUE non sarà supportato fino a quando non si aggiungerà il supporto per la funzione di derivazione della chiave su AWS CloudHSM. Per trarre vantaggio dalla correzione, è necessario aggiornare il client e gli SDK alla versione 1.1.1 o successiva.

Problema: l'attributo CKA_SENSITIVE non è supportato e non è stato gestito

  • Resolution status (Stato di risoluzione): abbiamo implementato correzioni per accettare e rispettare correttamente l'attributo CKA_SENSITIVE. Per trarre vantaggio dalla correzione, è necessario aggiornare il client e gli SDK alla versione 1.1.1 o successiva.

Problema: l'hashing e la firma in più parti non sono supportati

  • Impact (Impatto): C_DigestUpdate e C_DigestFinal non sono implementati. C_SignFinal anche non è implementato e avrà esito negativo con CKR_ARGUMENTS_BAD per un buffer non-NULL.

  • Workaround: (Soluzione) eseguire l'hashing dei dati all'interno dell'applicazione e utilizzare AWS CloudHSM solo per la firma dell'hash.

  • Resolution status: (Stato di risoluzione) stiamo correggendo il client e gli SDK per implementare correttamente l'hashing in più parti. Gli aggiornamenti saranno annunciati nel forum AWS CloudHSM e nella pagina della cronologia delle versioni.

Problema: C_GenerateKeyPair non gestisce CKA_MODULUS_BITS o CKA_PUBLIC_EXPONENT nel modello privato in un modo conforme agli standard

  • Impact: (Impatto) C_GenerateKeyPair dovrebbe restituire CKA_TEMPLATE_INCONSISTENT quando il modello privato contiene CKA_MODULUS_BITS o CKA_PUBLIC_EXPONENT. Genera invece una chiave privata per la quale tutti i campi di utilizzo sono impostati su FALSE. La chiave non può essere utilizzata.

  • Workaround: (Soluzione) consigliamo che l'applicazione verifichi i valori dei campi di utilizzo oltre al codice di errore.

  • Resolution status: (Stato di risoluzione) stiamo implementando correzioni per restituire il corretto messaggio di errore quando viene utilizzato un modello di chiavi private non corretto. L'aggiornamento della libreria PKCS #11 sarà annunciato nella pagina della cronologia delle versioni.

Problema: non è possibile eseguire l'hashing di più di 16 KB di dati

Per buffer di dimensioni maggiori, solo i primi 16 KB saranno oggetto di hashing e restituiti. I dati in eccesso vengono ignorati senza alcun avviso.

  • Resolution status (Stato di risoluzione): i dati di dimensioni inferiori ai 16 KB continuano a essere inviati all'HSM per l'hashing. Abbiamo aggiunto la capacità che consente di eseguire l'hashing in locale, nel software, per i dati di dimensioni comprese tra 16 KB e 64 KB. Il client e gli SDK restituiranno esplicitamente un errore se i dati buffer sono di dimensioni superiori a 64 KB. Per trarre vantaggio dalla correzione, è necessario aggiornare il client e gli SDK alla versione 1.1.1 o successiva.

Problema: i buffer per le operazioni API C_Encrypt e C_Decrypt non possono superare 16 KB quando si usa il meccanismo CKM_AES_GCM

Inoltre, AWS CloudHSM non supporta la crittografia AES-GCM in più parti.

  • Impact: (Impatto) non è possibile utilizzare il meccanismo CKM_AES_GCM per crittografare dati di dimensioni superiori a 16 KB.

  • Soluzione alternativa: puoi utilizzare un meccanismo alternativo come CKM_AES_CBCCKM_AES_CBC_PAD, oppure puoi dividere i dati in parti e crittografare ogni parte utilizzandola singolarmente. AES_GCM Se lo utilizziAES_GCM, devi gestire la divisione dei dati e la successiva crittografia. AWS CloudHSMnon esegue la crittografia AES-GCM multiparte per te. Si noti che FIPS richiede la generazione del vettore di inizializzazione (IV) sull'HSM. AES-GCM Pertanto, l'IV per ogni parte di dati crittografati AES-GCM sarà diverso.

  • Resolution status: (Stato di risoluzione) stiamo correggendo l'SDK in modo che restituisca esplicitamente un errore se il buffer dei dati è di dimensioni eccessive. Restituiamo CKR_MECHANISM_INVALID per le operazioni API C_EncryptUpdate e C_DecryptUpdate. Stiamo valutando alternative per supportare 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 a curva ellittica (ECDH) viene eseguita parzialmente all'interno dell'HSM

La chiave privata EC rimane sempre all'interno dell'HSM, ma il processo di derivazione della chiave viene eseguito in più fasi. Pertanto, nel client sono disponibili i risultati intermedi di ciascuna fase.

  • Impatto: in Client SDK 3, la chiave derivata utilizzando il CKM_ECDH1_DERIVE meccanismo è inizialmente disponibile sul client e quindi viene importata nell'HSM. Un handle della chiave viene quindi restituito all'applicazione.

  • Workaround: (Soluzione) se si sta implementando SLL/TLS Offload in AWS CloudHSM, questa limitazione potrebbe non essere un problema. Se l'applicazione richiede che la chiave rimanga sempre all'interno di un limite FIPS, prendere in considerazione l'utilizzo di un protocollo alternativo che non si basi sulla derivazione della chiave ECDH.

  • Resolution status: (Stato di risoluzione) stiamo sviluppando la possibilità di eseguire la derivazione della chiave ECDH completamente all'interno dell'HSM. Non appena disponibile, l'aggiornamento dell'implementazione sarà annunciato nella pagina della cronologia delle versioni.

Problema: la verifica delle firme secp256k1 non riesce su piattaforme EL6 come CentOS6 e RHEL 6

Questo si verifica perché la libreria PKCS#11 di CloudHSM evita una chiamata di rete durante l'inizializzazione dell'operazione di verifica utilizzando OpenSSL per verificare i dati della curva CE. Poiché Secp256k1 non è supportato dal pacchetto OpenSSL predefinito sulle piattaforme EL6, l'inizializzazione non riesce.

  • Impatto: la verifica della firma Secp256k1 non riuscirà sulle piattaforme EL6. La chiamata di verifica non riuscirà e restituirà un errore CKR_HOST_MEMORY.

  • Soluzione alternativa: si consiglia di utilizzare Amazon Linux 1 o qualsiasi piattaforma EL7 se l'applicazione PKCS#11 richiede di verificare le firme secp256k1. In alternativa, eseguire l'aggiornamento del pacchetto OpenSSL a una versione che supporti la curva secp256k1.

  • Stato della risoluzione: stiamo implementando correzioni per tornare a HSM se la convalida della curva locale non è disponibile. L'aggiornamento della libreria PKCS #11 sarà annunciato nella pagina della cronologia delle versioni.

Problema: una sequenza errata di chiamate di funzione fornisce risultati indefiniti anziché dare errore

  • Impatto: se si chiama una sequenza errata di funzioni, il risultato finale non è corretto anche se le singole chiamate di funzione danno esito positivo. Ad esempio, i dati decrittografati potrebbero non corrispondere al testo in chiaro originale oppure potrebbe venire meno la verifica delle firme. Questo problema riguarda sia le operazioni a parte singola che quelle in più parti.

    Esempi di sequenze di funzioni errate:

    • C_EncryptInit/C_EncryptUpdate seguito da C_Encrypt

    • C_DecryptInit/C_DecryptUpdate seguito da C_Decrypt

    • C_SignInit/C_SignUpdate seguito da C_Sign

    • C_VerifyInit/C_VerifyUpdate seguito da C_Verify

    • C_FindObjectsInit seguito da C_FindObjectsInit

  • Soluzione alternativa: conformemente alla specifica PKCS #11, l'applicazione deve utilizzare la sequenza corretta di chiamate di funzione per operazioni a parte singola e in più parti. L'applicazione non deve fare affidamento sulla libreria PKCS #11 di CloudHSM per restituire un errore in questa circostanza.

Problema: la sessione di sola lettura non è supportata in SDK 5

  • Problema: SDK 5 non supporta l'apertura di sessioni di sola lettura con C_OpenSession.

  • Impatto: se tenti di chiamare C_OpenSession senza fornire CKF_RW_SESSION, la chiamata darà esito negativo con l'errore CKR_FUNCTION_FAILED.

  • Soluzione alternativa: quando si apre una sessione, è necessario trasferire i flag CKF_SERIAL_SESSION | CKF_RW_SESSION alla chiamata di funzione C_OpenSession.

Problema: il file di intestazione cryptoki.h è solo per Windows

  • Problema: con le versioni di AWS CloudHSM Client SDK 5 dalla 5.0.0 alla 5.4.0 su Linux, il file di intestazione /opt/cloudhsm/include/pkcs11/cryptoki.h è compatibile solo con i sistemi operativi Windows.

  • Impatto: è possibile riscontrare dei problemi quando si tenta di includere il file di intestazione nell'applicazione su sistemi operativi basati su Linux.

  • Stato della risoluzione: esegui l'aggiornamento alla versione 5.4.1 o successiva di AWS CloudHSM Client SDK 5, che include una versione del file di intestazione compatibile con Linux.