Numero di byte in un handshake TLS

1

Come posso identificare con precisione il numero esatto di byte che ClientHello e ServerHello hanno bisogno di un traffico TLS? questo serve allo scopo di analisi del traffico per acquisire i byte di interesse TLS (solo client hello e server hello).

    
posta anonymous 01.02.2018 - 16:24
fonte

3 risposte

3

How can I identify precisely the exact number of bytes the ClientHello and ServerHello in a TLS traffic needs?

La dimensione di ClientHello varia. Parti di esso dipendono da una specifica implementazione o configurazione TLS del client, in particolare il numero di cifrature offerte dal client e le estensioni. Poi ci sono le differenze specifiche del caso d'uso: ad esempio il client potrebbe aggiungere l'estensione ALPN per segnalare il supporto per HTTP / 2 nel caso di un client web. La dimensione dell'estensione server_name dipende dalla dimensione del nome host di destinazione. E poi ci potrebbe essere in aggiunta un id di sessione o un ticket di sessione se il client tenta di riprendere una sessione esistente. Solo se tutte queste variazioni sono note, puoi calcolare la dimensione di ClientHello semplicemente compilando le parti necessarie nella struttura ClientHello.

Lo stesso ServerHello ha dimensioni variabili simili e dipende principalmente dal tipo di estensioni aggiunte. Ma, dopo ServerHello, si ottengono parti variabili aggiuntive fino al messaggio ServerHelloDone, come i certificati (che possono differire in numero e dimensioni), le parti specifiche per lo scambio di chiavi e un certificato facoltativo di dimensioni variabili. Simile, solo se tutto ciò è noto, puoi calcolare la dimensione del sito.

Se invece vuoi solo ottenere delle statistiche su questo, potresti fare una cattura del pacchetto del tuo caso d'uso preferito, estrarre le parti rilevanti e misurare le loro dimensioni (o guardare i campi di lunghezza come suggerito da RoraZ). Nota che qualsiasi conclusione che trai da questo si applica solo al caso d'uso e al contesto che hai misurato. Può essere molto diverso se vengono utilizzati altri client o altri server o anche se vengono utilizzati gli stessi client o server ma il nome host e i certificati sono diversi.

Se hai già catturato il traffico, ottenere la dimensione di ogni record è semplice poiché tutti i record seguono la stessa struttura descritta in RFC 5246 sezione 6.2 Record Layer : primo è il ContentType (un byte - 0x16 per i record nell'handshake TLS), quindi la versione del protocollo (due byte) e quindi la lunghezza dei dati rimanenti (uint16 , cioè due byte).

    
risposta data 01.02.2018 - 17:14
fonte
1

Se l'esecuzione di uno strumento come Wireshark è un'opzione ... ecco un'istantanea di un handshake TLS - puoi vedere la lunghezza in byte del client ciao, server ciao (include il frame Ethernet / TCP):

Ulterioridettaglisonodisponibiliquandosiselezionaciascunfotogramma.Adesempio,eccoClientHello:

NotaHoancheaggiunto"ssl" (che include TLS) nella casella del filtro di Wireshark per ridurre il rumore di rete. Wireshark ha anche un SDK .

    
risposta data 01.02.2018 - 19:13
fonte
0

Il client hello non è un grosso blocco di 2000 byte, ho visto circa tra 80 e 300 byte sulla mia rete approssimativamente, alcuni hanno sslid che è di 32 byte in più e altri hanno estensioni che altri no, ma non è un grande blocco di 2000 byte di memoria, il ciao per il server è simile. Ti suggerirò di catturare il traffico nella tua rete e fare l'esercizio.

    
risposta data 01.02.2018 - 16:43
fonte

Leggi altre domande sui tag