mod_nss vs comportamento di openssl rispetto alla memoria della chiave rispetto all'uso

1

Forse sto solo chiedendo i termini di ricerca corretti.

mod_nss e l'idea NSS / idea di progettazione è che se il dispositivo di memorizzazione chiavi (in questo caso, un HSM) è in grado di eseguire un handshake DH / SSL, verrà utilizzato il dispositivo (la chiave non viene estratta dal HSM, e quindi utilizzato sull'host per l'handshake, piuttosto viene lasciato nell'HSM e l'HSM viene utilizzato per eseguire l'handshake). L'idea è che se sei paranoico (o regolato) abbastanza da dover usare un HSM, non vuoi che le tue chiavi vengano estratte nell'host, in quanto ciò le espone al compromesso.

L'handshake gestito da HSM è troppo lento

Il problema è la durata della stretta di mano. Anche senza un PCIe, HSM con collegamento diretto, è possibile misurare il tempo necessario per un singolo handshake TLS. Se all'improvviso stai cercando di utilizzare un HSM per le strette di mano, sei limitato dal collo di bottiglia PCIe e da tutti i costi di gestione coinvolti: gli HSM sono generalmente progettati per la sicurezza, non per prestazioni elevate.

L'HSM diventa un collo di bottiglia per servizi che supportano connessioni "sufficienti" al secondo, "sufficiente" definito come "sufficiente per sommergere l'HSM".

Per bilanciare la sicurezza dell'HSM e le prestazioni dei tremolii di mano TLS basati su host (che possono trarre vantaggio da più core, ecc.), è necessario memorizzare la chiave su HSM, ma utilizzare la chiave sul host.

La visione del mondo di NSS impedisce questo.

Domanda: posso estrarre la chiave privata?

È possibile aprire OpenSSL o un'altra suite di crittografia, che può essere collegata a un HSM, estrarre la chiave dall'HSM e memorizzarla nella cache per l'utilizzo sull'host?

Piano B

Il piano B è quello di ottenere il motore OpenSS + OpenP + OpenP11 (OpenSSL) o il codice sorgente NSS e modificarlo per estrarre e mettere in cache la chiave privata alla prima richiesta, quindi richiamare semplicemente in openssl per fare l'effettivo handshake TLS di andare all'HSM per ogni nuova connessione, permettendoci di sfruttare l'ambiente corrente (funzionante) per le connessioni https e ssh, garantendo al contempo la sicurezza intorno alle chiavi memorizzate. Ma preferirei sfruttare il codice esistente.

I motori di ricerca mi portano semplicemente alle stesse pagine, alcune rilevanti (ad esempio la filosofia di progettazione NSS), altre no. Se conosci un buon insieme di termini di ricerca che mi portano a una pagina che conosci :) sarebbe di grande aiuto.

Grazie per il tuo tempo.

    
posta rip... 26.04.2017 - 19:36
fonte

2 risposte

2

Quando si utilizza un HSM con TLS, tutte le operazioni di crittografia che coinvolgono la chiave privata vengono eseguite su HSM. Ciò significa che la chiave privata non esce mai dall'HSM. In effetti, l'HSM è specificamente progettato per proteggere l'esfiltrazione della chiave privata utilizzando attacchi basati su software e talvolta anche attacchi basati su hardware (cioè resistente alla manomissione). Questo è esattamente il motivo per cui viene utilizzato un HSM.

Ciò significa che un HSM non varrebbe la pena se fosse possibile estrarre la chiave privata usando OpenSSL o altri strumenti o anche usando strumenti di hacking progettati in modo specifico. Quindi la risposta alla tua domanda per tutto l'HSM esistente è sperabilmente: No, non è possibile estrarre la chiave privata usando il software.

Il che significa che se hai bisogno di più prestazioni e della sicurezza di un HSM per ogni connessione TLS, ottieni un HSM più veloce.

    
risposta data 26.04.2017 - 20:07
fonte
0

Sì, forse.

Sì, potresti essere in grado di usare / abusare (scegli quale parola si adatta meglio) la funzione BACKUP di un HSM per estrarre la versione in testo normale di una chiave privata.

Almeno nei casi in cui la procedura di backup / ripristino è documentata per consentire questo.

E almeno nel caso di "Nitrokey HSM" / "SmartCard-HSM" questo è infatti possibile perché tutto è open source e non c'è hardware che ti impedisca di usare / abusare di quella funzione di backup / ripristino .

Dettagli qui:

Ma ...

Consentitemi di dirlo in sintesi: sebbene ciò possa essere possibile tecnicamente, va contro la vera ragione dell'esistenza di un HSM. Vale a dire: Cosa c'è dentro, STAI dentro! - Quello che stai cercando di fare sembra abbozzato e pericoloso. - Sono d'accordo con ciò che ha detto Steffen: Se il tuo HSM è troppo lento: ottieni un HSM più grande. Sia come scatola, sia come servizio come "Keyless SSL" di Cloudflare. (Oppure sbarazzati del tuo HSM del tutto.)

    
risposta data 27.04.2017 - 14:46
fonte

Leggi altre domande sui tag