Perché TLS richiede TCP?

33

Ho un imminente esame sulla sicurezza della rete orale e so che negli esami passati il professore ha chiesto perché TLS richiede TCP. So che esiste il DTLS ma non faceva parte della lezione. Quindi la domanda riguarda il vantaggio che TLS ottiene richiedendo che il suo protocollo sottostante sia TCP, suppongo. Ho già sentito alcune ipotesi selvagge ma non argomenti convincenti.

All'inizio della RFC, si dice :

At the lowest level, layered on top of some reliable transport protocol (e.g., TCP [TCP]), is the TLS Record Protocol.

Apparentemente ovunque (secondo il mio giudizio), la RFC non richiede solo "alcuni protocolli di trasporto affidabili" ma TCP in particolare.

    
posta UTF-8 07.10.2017 - 16:06
fonte

4 risposte

56

TLS richiede un trasporto affidabile. Su Internet, questo lascia solo TCP, in quanto UDP non offre affidabilità.

TLS richiede un trasporto affidabile perché (in conformità con l'architettura a livelli del modello di riferimento ISO / OSI) non gestisce gli errori di trasporto, i pacchetti persi o altri disturbi che potrebbero verificarsi con IP.

TLS è progettato per offrire un canale sicuro su un trasporto affidabile e lo fa abbastanza bene. DTLS fa (presumo) la gestione degli errori necessaria all'interno del protocollo.

Se TLS doveva essere eseguito su UDP, le connessioni e le strette di mano potevano fallire solo perché un pacchetto si perdeva durante il trasporto e nessuno lo notava.

La mitigazione di tali problemi è (secondo il modello di riferimento ISO / OSI) l'attività designata di un trasporto affidabile. Qualsiasi trasporto affidabile funziona teoricamente, ma per tutti gli scopi pratici delle reti IP, questo di solito implica TCP.

    
risposta data 07.10.2017 - 16:33
fonte
31

TLS non richiede TCP, richiede solo un trasporto affidabile. Esiste anche uno standard per TLS su SCTP che è un altro protocollo di trasporto affidabile.

Tuttavia, se prendi l'internet di oggi, di solito hai solo UDP e TCP come protocolli di trasporto su IP e da questi due TCP è l'unico affidabile. Il che significa che se hai solo questa selezione limitata di protocolli di trasporto disponibili, TLS richiede TCP perché non funziona con UDP. Per lavorare con UDP esiste un protocollo DTLS simile, progettato per funzionare su trasporti inaffidabili.

    
risposta data 07.10.2017 - 16:24
fonte
13

Oltre a ciò che altri hanno già detto, TLS richiede un protocollo affidabile per il livello di trasporto perché richiede che tutti i pacchetti di dati siano ricevuti, ricevuti in ordine e ricevuti senza corruzione. Ci sono diversi motivi per questo:

  • Se un pacchetto venisse eliminato o danneggiato, TLS non avrebbe modo di recuperare i dati da quel pacchetto da presentare al livello dell'applicazione e, quindi, l'ipotesi di affidabilità presentata al livello dell'applicazione andrebbe persa.

  • Se un pacchetto era corrotto, anche da un singolo bit, sarebbe probabilmente completamente confuso a causa della crittografia, in particolare se è in uso un codice a blocchi.

  • Se un pacchetto è stato perso, danneggiato o elaborato in ordine, qualsiasi schema di crittografia basato su Cipher Block Chaining non solo fallirebbe la decrittografia del blocco corrente, ma fallirebbe anche per ogni blocco dopo di esso, poiché ogni blocco dipende dal blocco precedente (e, quindi, su tutti i blocchi precedenti.) Quindi, ogni pacchetto l'errore sulla rete richiederebbe la rimozione della connessione TLS e la rinegoziazione. Cipher block concatenare agli XOR il testo in chiaro per un blocco di cifratura con il testo cifrato del blocco precedente prima di crittografarlo per impedire a qualcuno che monitora il testo cifrato di essere in grado di rilevare pattern di testo in chiaro dal testo cifrato.

  • Se un record era danneggiato, anche da un singolo bit, il codice di autenticazione dei messaggi non corrispondeva, inducendo TLS a pensare (correttamente) che il messaggio era stato alterato durante il transito, il che avrebbe comportato la lacerazione della connessione TLS.

  • Se un record veniva ricevuto out-of-order mentre era in uso un codice di streaming, la parte del messaggio in quel record sarebbe stata decodificata in modo errato (usando la porzione sbagliata del flusso) e, quindi, il Il controllo MAC fallirebbe e la connessione TLS verrebbe demolita.

Naturalmente, TLS stesso funzionerà bene finché il protocollo di trasporto sottostante fornisce la garanzia di affidabilità. Non c'è nulla all'interno di TLS stesso che richiede che il protocollo di trasporto sottostante sia TCP. Certamente, il TCP è generalmente il protocollo di scelta affidabile per quanto riguarda Internet.

    
risposta data 08.10.2017 - 08:20
fonte
3

TLS non richiede richiede TCP. Ad esempio, utilizzo una chiave di autenticazione TLS con OpenVPN che (secondo la mia configurazione per ridurre l'overhead) passa su un'interfaccia TUN che funziona su UDP . TLS può essere utilizzato su entrambi e probabilmente su altre cose di cui non sono a conoscenza.

    
risposta data 08.10.2017 - 06:40
fonte

Leggi altre domande sui tag