Domande su "Tripla stretta di mano considerata violazione dannosa e autenticazione di correzione su TLS"

0

Recentemente sto leggendo il documento "Tripla stretta di mano considerata l'eliminazione dannosa e l'autenticazione di correzione su TLS" e ho diverse domande poco chiare.

Prima domanda: nello standard TLS 1.2, possiamo vedere: "Ogni connessione è associata a una sessione", vuol dire che ogni connessione in TLS può avere solo una sessione? In tal caso, come una nuova sessione, perché la rinegoziazione può avere la stessa connessione con l'handshake originale? Nello standard, la ripresa della sessione viene utilizzata per avviare rapidamente nuove connessioni, tuttavia, la sessione ripristinata può essere nella stessa connessione con la sessione originale e, in caso affermativo, qual è lo scopo facendo questo?

Seconda domanda: nell'attacco, perché la sessione ripresa dovrebbe essere inserita in un'altra nuova connessione piuttosto che nella stessa connessione con la sessione originale? Nell'attacco a triplo stretta di mano, gli autori dicono: "gli attacchi sfruttano la mancanza di un legame incrociato quando le sessioni TLS vengono riprese su nuove connessioni". e, come dice RFC5746, la rinegoziazione controllerebbe solo il messaggio finito nell'handshake allegato, quindi, se sia la sessione ripresa che la successiva rinegoziazione sono nella stessa connessione con l'handshake originale, l'attacco potrebbe ancora esistere poiché i due sono d'accordo sui messaggi finiti nella sessione ripresa. È giusto?

    
posta xinyu 10.06.2015 - 08:44
fonte

1 risposta

0

Meta : la politica di SE è generalmente contro più domande in un solo post. Ma qui la tua seconda domanda è un duplicato di triplo handshake contro TLS a cui ho già risposto, lasciando una domanda aperta.

La formulazione nel glossario di rfc 5246 (e dei suoi predecessori) potrebbe essere un po 'pigra, perché ci si aspetta che presti attenzione all'intero documento. Il punto effettivo è che una connessione (TCP) è associata a una sessione TLS alla volta . La sequenza temporale è:

  1. Per avviare TLS / SSL, fai (o talvolta hai già) una connessione TCP e fai un handshake completo per creare una nuova sessione o fai una stretta di mano abbreviata per riprendere una sessione esistente (se ce n'è una disponibile ). Dopo la negoziazione iniziale , tutti i dati trasmessi e ricevuti vengono crittografati (a meno che eNULL) e autenticati utilizzando chiavi derivate dal master_secret per quella sessione (più nonces correnti), e dovrebbero essere trattati da entrambe le parti come aventi i parametri di sicurezza (e altri) di quella sessione: master_secret, algoritmi, autenticazione del server in genere, autenticazione del client se utilizzata e compressione TLS se utilizzata, che non è mai stata molto popolare e dopo CRIME è spesso proibita completamente.

  2. In qualsiasi momento successivo durante la stessa connessione, se entrambi gli endpoint sono d'accordo, puoi fare un altro handshake chiamato rinegoziazione sulla stessa connessione. Questa rinegoziazione può essere di nuovo una stretta di mano completa che crea una nuova sessione o una stretta di mano abbreviata che riprende una sessione esistente. Nel caso di ripresa, può riprendere la stessa sessione che era in uso prima della rinegoziazione, o potrebbe essere una sessione salvata diversa. Una volta effettuata la rinegoziazione, i dati successivi utilizzano le chiavi e i parametri della sessione selezionata dalla rinegoziazione, di solito anche se non necessariamente diversa dalla sessione dall'handshake iniziale.

  3. In un secondo momento è possibile eseguire una seconda rinegoziazione, sempre con le stesse funzionalità. Successivamente, i dati utilizzano le chiavi e i parametri della sessione selezionata dalla seconda rinegoziazione, probabilmente diversa dalla / e sessione / i dalla prima rinegoziazione e dall'handshake iniziale.

  4. Et cetera, et cetera, et cetera.

Dopo aver terminato una connessione, puoi creare un'altra connessione che può di nuovo creare una nuova sessione o riprenderne una esistente, se disponibile; spesso gli endpoint abbandonano una sessione dopo un limite di tempo di 5 minuti o 1 ora, oppure se esauriscono lo spazio o hanno un errore. E ancora, e ancora. Puoi anche creare più connessioni contemporaneamente, ognuna delle quali può creare una nuova sessione o riprenderne una esistente. E dopo averli terminati, puoi fare di più, idem.

La rinegoziazione al giorno d'oggi viene di solito eseguita quando una parte, solitamente il server, desidera modificare i parametri di sicurezza , ad esempio l'autenticazione del client che non è stata eseguita sull'handshake iniziale (o sulla rinegoziazione precedente). Per modificare i parametri di sicurezza, la rinegoziazione deve essere full handshake .

Ma il protocollo consente alla rinegoziazione di essere una stretta di mano abbreviata che riprende una sessione. L'unica ovvia ragione valida per questo è se hai crittografato abbastanza dati in un set di chiavi funzionanti che vuoi generare nuove chiavi di lavoro, tradizionalmente chiamate rekey [ing] . Con la modalità CBC è consigliabile non superare il limite di "compleanno" dei blocchi sqrt (2 ^ blocchi) sotto una chiave, e per 3DES (e DES negli anni precedenti alla sua obsoleta) si tratta di 2 ^ 35 ottetti o 512GiB. Con le reti moderne sottoposte a un carico prolungato potresti raggiungere questo volume e voler riprogrammare, in circa un'ora o forse meno, e anche con un minore carico questo potrebbe facilmente verificarsi in giorni o settimane.

    
risposta data 11.06.2015 - 09:52
fonte

Leggi altre domande sui tag