Aller au contenu principal

4.1. Demultiplexing DTLS Records (Démultiplexage des enregistrements DTLS)

4.1. Demultiplexing DTLS Records

Le format d'en-tête de DTLS 1.3 est plus compliqué à démultiplexer que DTLS 1.2, qui portait toujours le type de contenu comme premier octet. Comme décrit dans la figure 5, le premier octet détermine comment un enregistrement DTLS entrant est démultiplexé. Les 3 premiers bits du premier octet distinguent un enregistrement chiffré DTLS 1.3 des types d'enregistrements utilisés dans les versions DTLS précédentes et des types d'enregistrements DTLS 1.3 en texte clair. Par conséquent, la plage 32 (0b0010 0000) à 63 (0b0011 1111) doit être exclue des allocations futures par l'IANA pour éviter les problèmes lors du démultiplexage; voir la section 14. Les implémentations peuvent démultiplexer les enregistrements DTLS 1.3 en examinant le premier octet comme suit:

  • Si le premier octet est alert(21), handshake(22) ou ack(proposé, 26), l'enregistrement DOIT être interprété comme un enregistrement DTLSPlaintext.

  • Si le premier octet est toute autre valeur, alors les récepteurs DOIVENT vérifier si les bits de tête du premier octet sont 001. Si c'est le cas, l'implémentation DOIT traiter l'enregistrement comme DTLSCiphertext; le véritable type de contenu sera à l'intérieur de la portion protégée.

  • Sinon, l'enregistrement DOIT être rejeté comme s'il avait échoué à la déprotection, comme décrit dans la section 4.5.2.

La figure 5 montre cette procédure de démultiplexage graphiquement, en tenant compte de DTLS 1.3 et des versions antérieures de 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
+----------------+

Figure 5: Démultiplexage des enregistrements DTLS 1.2 et DTLS 1.3