Passa al contenuto principale

4.1.2. AES in f8-mode (AES in modalità f8)

4.1.2. AES in f8-mode (AES in modalità f8)​

Per cifrare i dati UMTS (Universal Mobile Telecommunications System, ovvero reti 3G), è stata sviluppata una soluzione (vedi [f8-a] [f8-b]) nota come algoritmo f8. Ad alto livello, lo schema proposto è una variante della modalità Output Feedback Mode (OFB) [HAC], con una funzione di inizializzazione e feedback più elaborata. Come nell'OFB normale, il nucleo consiste in un cifrario a blocchi. Definiamo qui anche l'uso di AES come cifrario a blocchi da utilizzare in quella che chiameremo cifratura RTP in "modalità di funzionamento f8". La modalità f8 AES DEVE utilizzare le stesse dimensioni predefinite per la chiave di sessione e il sale della modalità contatore AES.

La Figura 4 mostra la struttura del cifrario a blocchi, E, che funziona in modalità f8.

                   IV
|
v
+------+
| |
+--->| E |
| +------+
| |
m -> (*) +-----------+-------------+-- ... ------+
| IV' | | | |
| | j=1 -> (*) j=2 -> (*) ... j=L-1 ->(*)
| | | | |
| | +-> (*) +-> (*) ... +-> (*)
| | | | | | | |
| v | v | v | v
| +------+ | +------+ | +------+ | +------+
k_e ---+--->| E | | | E | | | E | | | E |
| | | | | | | | | | |
+------+ | +------+ | +------+ | +------+
| | | | | | |
+------+ +--------+ +-- ... ----+ |
| | | |
v v v v
S(0) S(1) S(2) . . . S(L-1)

Figura 4. Modalità di funzionamento f8 (l'asterisco, (*), denota XOR bit a bit). La figura rappresenta il KG nella Figura 3, quando viene utilizzato AES-f8.

4.1.2.1. Generazione del flusso di chiavi f8​

Il vettore di inizializzazione (Initialization Vector, IV) DEVE essere determinato come descritto nella Sezione 4.1.2.2 (e nella Sezione 4.1.2.3 per SRTCP).

Siano IV', S(j) e m blocchi di n_b bit. Il flusso di chiavi, S(0) ||... || S(L-1), per un messaggio di N bit DEVE essere definito impostando IV' = E(k_e XOR m, IV), e S(-1) = 00..0. Per j = 0,1,..,L-1 dove L = N/n_b (arrotondato all'intero più vicino se non è già un intero) calcolare

S(j) = E(k_e, IV' XOR j XOR S(j-1))

Si noti che l'IV non viene utilizzato direttamente. Invece viene alimentato attraverso E sotto un'altra chiave per produrre un valore interno "mascherato" (indicato come IV') per impedire a un attaccante di ottenere coppie input/output note.

Il ruolo del contatore interno, j, è quello di prevenire cicli di flusso di chiavi brevi. Il valore della maschera di chiave m DEVE essere

m = k_s || 0x555..5,

cioè, la chiave di salatura di sessione, a cui viene aggiunto il pattern binario 0101.. per riempire l'intera dimensione della chiave desiderata, n_e.

Il mittente NON DOVREBBE generare più di 2^32 blocchi, il che è sufficiente per generare 2^39 bit di flusso di chiavi. A differenza della modalità contatore, non esiste una soglia assoluta sopra (sotto) la quale f8 è garantito essere non sicuro (sicuro). Il limite sopra indicato è stato scelto per limitare, con un margine di sicurezza sufficiente, la probabilità di comportamento degenerativo nella generazione del flusso di chiavi f8.

4.1.2.2. Formazione dell'IV SRTP f8​

Lo scopo della seguente formazione dell'IV è fornire una funzionalità che chiamiamo autenticazione implicita dell'intestazione (implicit header authentication, IHA), vedere Sezione 9.5.

L'IV SRTP per il blocco AES-f8 a 128 bit DEVE essere formato nel seguente modo:

IV = 0x00 || M || PT || SEQ || TS || SSRC || ROC

M, PT, SEQ, TS, SSRC DEVONO essere presi dall'intestazione RTP; ROC proviene dal contesto crittografico.

La presenza del SSRC come parte dell'IV consente di utilizzare AES-f8 quando una chiave master è condivisa tra più flussi all'interno della stessa sessione RTP, vedere Sezione 9.1.

4.1.2.3. Formazione dell'IV SRTCP f8​

L'IV SRTCP per il blocco AES-f8 a 128 bit DEVE essere formato nel seguente modo:

IV= 0..0 || E || SRTCP index || V || P || RC || PT || length || SSRC

dove V, P, RC, PT, length, SSRC DEVONO essere presi dalla prima intestazione nel pacchetto composto RTCP. E e SRTCP index sono i campi da 1 bit e 31 bit aggiunti al pacchetto.