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.