Messaggio pazzo finito in TLS

2

Ho cercato di capire il contenuto del Finished Message di TLS. Sto usando wireshark per catturare il traffico tra il mio browser e Internet. Ho notato una "stangeness" quando la ciphersuite scelta è AES_GCM. È un codice di streaming, non ha padding, quindi, se ho capito bene, i dati inviati nel messaggio finito sono:

  • 8 byte Nonce esplicito
  • 12 byte verify_data
  • Tag di autenticazione 16 byte

Ovvero, 36 byte in totale. Il "problema" è che la dimensione del pacchetto Messaggio finito è 40 byte .

Ed eccolo qui:

Perchéilpacchettodimessaggièdi40byteequalisonoibyterossi?

Eperchéwiresharkvededuerichiesteciao?

Eunaltro...ilclienterispondeconunpacchetto176byte:

Cosa mi manca?

    
posta 12.05.2014 - 21:26
fonte

1 risposta

4

Ogni messaggio di handshake ha un'intestazione, che contiene il suo tipo (come messaggio di handshake) e la lunghezza. Questa intestazione è in aggiunta all'intestazione del record. Vedi sezione 7.4 per una descrizione dell'intestazione: un byte per il tipo di messaggio e tre byte per il lunghezza del messaggio.

Nel caso del messaggio Finished , l'intestazione deve essere 14 00 00 0C (in esadecimale), con 0x14 che significa "Finito" e 00 00 0C che codifica la lunghezza del contenuto del messaggio (12 byte). Pertanto, ciò che è crittografato con GCM è in realtà 16 byte, non 12. GCM aggiunge il nonce esplicito a 8 byte (che è combinato con il nonce implicito a 4 byte, producendo il nonce a 12 byte che raw GCM ha effettivamente bisogno) e il tag di autenticazione a 16 byte, per un totale complessivo di 40 byte, come si osserva.

Naturalmente, questo record è crittografato, quindi non ne vedi il contenuto; in particolare, Wireshark non mostrerà l'intestazione del messaggio di handshake. Tutto ciò che sa dall'intestazione record è che il record contiene "alcuni dati di handshake".

Per quanto riguarda la tua seconda domanda, è possibile che il client non sia contento dell'handshake e desideri iniziarne uno nuovo, inviando immediatamente un ClientHello subito dopo Finished . Due messaggi di handshake possono essere uniti in un singolo record "handshake".

    
risposta data 13.05.2014 - 00:20
fonte

Leggi altre domande sui tag