TLS senza chiave privata

4

Qualcuno del mio team ha affermato che esiste una forma di TLS che può essere utilizzata per eliminare la necessità di una chiave privata. Sono "sopra" me, e non volevo discutere senza sapere per certo che non è così. Ho svolto i miei compiti e la chiave privata è fondamentale per la verifica dell'identità client / server. Questo è quello che pensavo. Sì, ci sono modi per scrivere la ri-creazione di questi tasti su ogni sessione, ma questo è estremo.

C'è un modo per avere un TLS senza chiave privata che non sia solo una "crittografia simmetrica" hackerata insieme?

    
posta bashCypher 06.02.2018 - 03:37
fonte

2 risposte

4

TL; DR: in teoria, TLS può essere utilizzato senza chiavi private.

Una parte integrante di TLS è che il client autentica il server in modo appropriato per rilevare potenziali attacchi uomo in mezzo. Questo è comunemente fatto con i certificati - e questo richiede la chiave privata del certificato sul sito del server per dimostrare al client che il server è il proprietario del certificato 1 .

Tuttavia, TLS è flessibile e fornisce anche altri modi per autenticare il server. Esistono codici PSK che consentono l'autenticazione utilizzando una chiave pre-condivisa tra client e server. Esistono codici SRP che consentono l'autenticazione tramite password. Esistono anche anon cipres che ti consente di abbandonare qualsiasi tipo di autenticazione in-TLS, ovvero di richiedere la tua autenticazione.

Pertanto, TLS potrebbe essere utilizzato senza certificati. E poiché i certificati sono l'unica parte di TLS che richiede una chiave privata, ciò significa che TLS può essere utilizzato senza chiavi private. Ma, anche se non viene utilizzata una chiave privata, potrebbe essere necessaria una cosa segreta simile sul server: sia l'autenticazione basata su SRP che quella su PSK richiedono un segreto sul lato server che dovrebbe al massimo essere noto al server e al client.

Oltre a questo, l'autenticazione senza certificato (e quindi senza chiave privata) richiede che entrambi i lati della connessione supportino i codici rilevanti con i metodi di autenticazione alternativi. Poiché attualmente i browser supportano solo l'autenticazione basata su certificati, è necessaria una chiave privata sul lato server quando è richiesto l'accesso da un browser - praticamente ogni volta in caso di server Web.

Ad esempio, è possibile utilizzare openssl per fornire una connessione protetta TLS che non richiede certificati. Il server cercherebbe ad esempio questo:

$ openssl s_server -www -nocert -psk 1a2b3c4d

Il client dovrebbe utilizzare la stessa chiave per connettersi al server, ad esempio l'idea di base di PSK è che client e server condividono una chiave segreta:

$ openssl s_client -connect 127.0.0.1:4433 -psk 1a2b3c4d
...
Cipher    : PSK-AES256-CBC-SHA
...
Verify return code: 0 (ok)

Se provassi a connetterti con un browser a questo server (cioè https://127.0.0.1:4433 ) verrebbe visualizzato un errore solo perché il browser non supporta i codici PSK: ERR_SSL_VERSION_OR_CIPHER_MISMATCH .

1 Le chiavi private non possono essere richieste solo per l'autenticazione ma anche per lo scambio di chiavi, ovvero lo scambio di chiavi RSA. Tuttavia, lo scambio di chiavi RSA richiede certificati, quindi significa nuovamente che le chiavi private sono rilevanti solo se vengono utilizzati i certificati. Inoltre, lo scambio di chiavi Diffie-Hellman non ha bisogno di certificati e questo è attualmente il metodo consigliato poiché fornisce la segretezza in avanti.

    
risposta data 06.02.2018 - 07:31
fonte
1

È necessaria la chiave privata, ma ciò non significa che sia necessario accedere direttamente alla chiave privata. È possibile utilizzare un TPM o un HSM in cui la chiave nasce e non lascia mai l'hardware fisico. Qualsiasi operazione che richiede la chiave privata si verifica all'interno di tali dispositivi in uno spazio di memoria isolato e protetto.

Ecco come utilizzare un TPM su Windows utilizzando una smart card virtuale e un software che si collega alle API che interagiscono con il TPM:

link

    
risposta data 06.02.2018 - 05:10
fonte

Leggi altre domande sui tag