Sto leggendo la presentazione Black Hat di Jarmoc su SSL / TLS Interception Proxies and Transitive Trust . Ho alcune domande su alcune pratiche di gestione delle chiavi.
Nel documento, Jarmoc afferma:
To act as the server for the client-side SSL session, an interception proxy must have access to the private key that corresponds to the certificate it’s presenting. Because the server endpoint’s private key is unavailable, the interception proxy must generate a new certificate and key pair to use for this session.
Jarmoc non spiega il ragionamento alla base della sua affermazione "il proxy di intercettazione deve generare un nuovo certificato e una coppia di chiavi da utilizzare per la sessione." E non definisce una "sessione" di per sé .
Domanda : secondo la descrizione di Jarmoc di seguito, è corretto leggere una "sessione" è la connessione point-to-point [crittografata] tra l'utente e il proxy (e viceversa, il proxy e il vero server)?
... interception proxies insert themselves in the flow of traffic and terminate the client’s request. The interception proxy makes a second request on behalf of the client to the server. This behavior causes what was an end-to-end session to instead be two separate, but related, point-to-point sessions. The goal is to allow access to the plain-text session contents while transferring between the two encrypted sessions.
O dovrei leggere la "sessione" per avere il significato end-to-end?
Possono "multiple connessioni da un singolo utente" (flusso da utente a proxy) e "connessioni da più utenti" (flusso da proxy a server) essere multiplexate in una singola sessione?
Domanda : perché un proxy di intercettazione deve generare una coppia di chiavi nuova e un certificato per ogni sessione?
Ecco i casi d'uso che stavo correndo, e non vedo il vantaggio di chiavi e certificati distinti:
-
due utenti distinti visitano ciascuno example.com .
-
un singolo utente visita example.com , chiude il browser, quindi visita nuovamente example.com .
Fornire lo stesso certificato e la stessa chiave pubblica per example.com è il modo in cui le cose funzionano senza un proxy di intercettazione. In che modo un certificato e una chiave pubblica distinti per ogni visitatore e visita migliorano il paesaggio?
Ho sperimentato quest'ultimo, e posso dirti che non c'è nulla di "furtivo" nella pratica (specialmente quando la pagina web ha molti link esterni). CertPatrol ha lanciato così tante finestre di avviso che il browser è diventato inutilizzabile.
Domanda : cosa c'è di sbagliato con la certificazione di una singola chiave privata (per esempio, 7 o 30 giorni) e quindi l'emissione di tutti i certificati del server utilizzando la chiave singola?
Generare chiavi al volo è costoso e può portare a un DoS sotto carico. Poiché la pratica può distruggere la disponibilità, non vedo il vantaggio.
Non importa se c'è 1 chiave privata o 10.000 chiavi private. Un compromesso / compromissione chiave dell'ospite al proxy significa l'uscita chiave. Non importa se ce ne sono 1 o 10.000. Ancora una volta, non vedo il vantaggio.
Se qualcosa di più di una relazione 1: 1 non è buona, perché la pratica è utilizzata nei certificati di firma intermedi e nelle CA subordinate?
Domanda : Jarmoc significa che ogni connessione di rete (indirizzo IP sorgente) dovrebbe ricevere la propria chiave privata utilizzata per tutti i certificati? (Qui "sessione" indica l'interazione tra l'utente e il proxy).
Se il proxy sta per riutilizzare le chiavi private per utente, perché non è possibile riutilizzare una chiave privata per tutti gli utenti?
In che modo il proxy gestisce le connessioni NAT, in cui gli utenti sono raggruppati in un unico indirizzo IP diretto?
(Se c'è qualcosa di sbagliato nel riutilizzo, allora i certificati di firma intermedia probabilmente violano qualsiasi regola citata perché la chiave di firma dell'intestatario certifica un numero di certificati di entità finale.)
Domanda : quali sono i detrimenti per il riutilizzo della chiave privata tra le sessioni?
La chiave privata riutilizza gli strumenti come strumenti come HTTPS Everywhere e CertPatrol; e strategie di diversificazione della sicurezza come la chiave pubblica e le prospettive?
La mia preoccupazione qui è un'implementazione ingenua dell'appartenenza di chiavi pubbliche all'interno di un'organizzazione, in cui l'implementazione considera solo la {chiave pubblica} e non la coppia {host, chiave pubblica}. Ma l'implementazione ingenua non può rompersi nella pratica fintanto che la chiave privata del proxy rimane segreta. È difficile dirlo senza un'implementazione concreta.