4.1. Demultiplexing DTLS Records (Demultiplexing dei record DTLS)
4.1. Demultiplexing DTLS Records (Demultiplexing dei record DTLS)
Il formato dell'intestazione di DTLS 1.3 è più complicato da demultiplexare rispetto a DTLS 1.2, che portava sempre il tipo di contenuto come primo byte. Come descritto nella figura 5, il primo byte determina come viene demultiplexato un record DTLS in arrivo. I primi 3 bit del primo byte distinguono un record cifrato DTLS 1.3 dai tipi di record utilizzati nelle versioni DTLS precedenti e dai tipi di record DTLS 1.3 in chiaro. Pertanto, l'intervallo da 32 (0b0010 0000) a 63 (0b0011 1111) deve essere escluso dalle allocazioni future da parte dell'IANA per evitare problemi durante il demultiplexing; vedere la sezione 14. Le implementazioni possono demultiplexare i record DTLS 1.3 esaminando il primo byte come segue:
-
Se il primo byte è alert(21), handshake(22) o ack(proposto, 26), il record DEVE essere interpretato come un record DTLSPlaintext.
-
Se il primo byte è qualsiasi altro valore, allora i ricevitori DEVONO verificare se i bit iniziali del primo byte sono 001. In tal caso, l'implementazione DEVE elaborare il record come DTLSCiphertext; il vero tipo di contenuto sarà all'interno della porzione protetta.
-
Altrimenti, il record DEVE essere rifiutato come se avesse fallito la deprotezione, come descritto nella sezione 4.5.2.
La figura 5 mostra questa procedura di demultiplexing graficamente, tenendo conto di DTLS 1.3 e versioni precedenti di DTLS.
+----------------+
| Outer Content |
| Type (OCT) |
| |
| OCT == 20 -+--> ChangeCipherSpec (DTLS <1.3)
| OCT == 21 -+--> Alert (Plaintext)
| OCT == 22 -+--> DTLSHandshake (Plaintext)
| OCT == 23 -+--> Application Data (DTLS <1.3)
| OCT == 24 -+--> Heartbeat (DTLS <1.3)
packet --> | OCT == 25 -+--> DTLSCiphertext with CID (DTLS 1.2)
| OCT == 26 -+--> ACK (DTLS 1.3, Plaintext)
| |
| | /+----------------+\
| 31 < OCT < 64 -+--> |DTLSCiphertext |
| | |(header bits |
| else | | start with 001)|
| | | /+-------+--------+\
+-------+--------+ |
| |
v Decryption |
+---------+ +------+
| Reject | |
+---------+ v
+----------------+
| Decrypted |
| Content Type |
| (DCT) |
| |
| DCT == 21 -+--> Alert
| DCT == 22 -+--> DTLSHandshake
| DCT == 23 -+--> Application Data
| DCT == 24 -+--> Heartbeat
| DCT == 26 -+--> ACK
| else ------+--> Error
+----------------+
Figura 5: Demultiplexing dei record DTLS 1.2 e DTLS 1.3