Passa al contenuto principale

4.2.3. Cifratura del numero di record

4.2.3. Cifratura del numero di record (Record Number Encryption)

In DTLS 1.3, quando i record vengono cifrati, anche i numeri di sequenza dei record vengono cifrati. Il modello di base è che l'algoritmo di cifratura sottostante utilizzato con l'algoritmo AEAD viene utilizzato per generare una maschera che viene poi sottoposta a XOR con il numero di sequenza.

Quando l'AEAD è basato su AES, la maschera viene generata calcolando AES-ECB sui primi 16 byte del testo cifrato:

Mask = AES-ECB(sn_key, Ciphertext[0..15])

Quando l'AEAD è basato su ChaCha20, la maschera viene generata trattando i primi 4 byte del testo cifrato come contatore di blocco e i successivi 12 byte come nonce, passandoli alla funzione di blocco ChaCha20 (Sezione 2.3 di [CHACHA]):

Mask = ChaCha20(sn_key, Ciphertext[0..3], Ciphertext[4..15])

La sn_key viene calcolata come segue:

[sender]_sn_key = HKDF-Expand-Label(Secret, "sn", "", key_length)

[sender] denota il lato mittente. Il valore Secret per epoca da utilizzare è descritto nella Sezione 7.3 di [TLS13]. Si noti che viene utilizzata una nuova chiave per ogni epoca: poiché l'epoca viene inviata in chiaro, questo non comporta ambiguità.

Il numero di sequenza cifrato viene calcolato eseguendo lo XOR dei byte iniziali della maschera con la rappresentazione su filo del numero di sequenza. La decifratura viene eseguita con lo stesso processo.

Questa procedura richiede che la lunghezza del testo cifrato sia di almeno 16 byte. I ricevitori DEVONO rifiutare record più corti come se avessero fallito la deprotezione, come descritto nella Sezione 4.5.2. I mittenti DEVONO riempire i testi in chiaro corti (utilizzando il meccanismo di riempimento del record convenzionale) per creare un testo cifrato di lunghezza adeguata. Si noti che la maggior parte degli algoritmi AEAD DTLS hanno un tag di autenticazione di 16 byte e non necessitano di riempimento. Tuttavia, alcuni algoritmi, come TLS_AES_128_CCM_8_SHA256, hanno un tag di autenticazione più corto e possono richiedere riempimento per input corti.

Le suite di cifratura future, che non sono basate su AES o ChaCha20, DEVONO definire la propria cifratura del numero di sequenza del record per essere utilizzate con DTLS.

Si noti che la cifratura del numero di sequenza viene applicata solo alla struttura DTLSCiphertext e non alla struttura DTLSPlaintext, anche se contiene anch'essa un numero di sequenza.