4.1. Encryption (Cifratura)
4.1. Encryption (Cifratura)
I seguenti parametri sono comuni a entrambe le trasformazioni di cifratura predefinite non NULL specificate in questa sezione.
- BLOCK_CIPHER-MODE indica il cifrario a blocchi utilizzato e la sua modalità di funzionamento
- n_b è la dimensione in bit del blocco per il cifrario a blocchi
- k_e è la chiave di cifratura di sessione
- n_e è la lunghezza in bit di k_e
- k_s è la chiave di salatura di sessione (session salting key)
- n_s è la lunghezza in bit di k_s
- SRTP_PREFIX_LENGTH è la lunghezza in ottetti del prefisso del flusso di chiavi, un intero non negativo, specificato dal codice di autenticazione del messaggio in uso.
Le chiavi di sessione e i sali distinti per SRTP/SRTCP sono per impostazione predefinita derivati come specificato nella Sezione 4.3.
Le trasformazioni di cifratura definite in SRTP mappano l'indice del pacchetto SRTP e la chiave segreta in un segmento di flusso di chiavi pseudo-casuale. Ogni segmento di flusso di chiavi cifra un singolo pacchetto RTP. Il processo di cifratura di un pacchetto consiste nel generare il segmento di flusso di chiavi corrispondente al pacchetto, e poi effettuare uno XOR bit a bit di quel segmento di flusso di chiavi sul payload del pacchetto RTP per produrre la porzione cifrata del pacchetto SRTP. Nel caso in cui la dimensione del payload non sia un multiplo intero di n_b bit, i bit in eccesso (meno significativi) del flusso di chiavi vengono semplicemente scartati. La decifratura viene eseguita allo stesso modo, ma scambiando i ruoli del testo in chiaro e del testo cifrato.
+----+ +------------------+---------------------------------+
| KG |-->| Keystream Prefix | Keystream Suffix |---+
+----+ +------------------+---------------------------------+ |
|
+---------------------------------+ v
| Payload of RTP Packet |->(*)
+---------------------------------+ |
|
+---------------------------------+ |
| Encrypted Portion of SRTP Packet|<--+
+---------------------------------+
Figura 3: Elaborazione di cifratura SRTP predefinita. Qui KG denota il generatore di flusso di chiavi, e (*) denota lo XOR bit a bit.
La definizione di come viene generato il flusso di chiavi, dato l'indice, dipende dal cifrario e dalla sua modalità di funzionamento. Di seguito, vengono definiti due di tali generatori di flusso di chiavi. È anche definito il cifrario NULL, da utilizzare quando la cifratura di RTP non è richiesta.
La definizione SRTP del flusso di chiavi è illustrata nella Figura 3. Gli ottetti iniziali di ogni segmento di flusso di chiavi POSSONO essere riservati per l'uso in un codice di autenticazione del messaggio, nel qual caso il flusso di chiavi utilizzato per la cifratura inizia immediatamente dopo l'ultimo ottetto riservato. Gli ottetti riservati iniziali sono chiamati "prefisso del flusso di chiavi" (da non confondere con il "prefisso di cifratura" di [RFC3550, Sezione 6.1]), e gli ottetti rimanenti sono chiamati "suffisso del flusso di chiavi". Il prefisso del flusso di chiavi NON DEVE essere utilizzato per la cifratura. Il processo è illustrato nella Figura 3.
Il numero di ottetti nel prefisso del flusso di chiavi è indicato come SRTP_PREFIX_LENGTH. Il prefisso del flusso di chiavi è indicato da un valore positivo e diverso da zero di SRTP_PREFIX_LENGTH. Ciò significa che, anche se la riservatezza non deve essere fornita, l'output del generatore di flusso di chiavi potrebbe ancora dover essere calcolato per l'autenticazione dei pacchetti, nel qual caso DEVE essere utilizzato il generatore di flusso di chiavi (modalità) predefinito.
Il cifrario predefinito è l'Advanced Encryption Standard (AES) [AES], e definiamo due modalità di esecuzione di AES, (1) Segmented Integer Counter Mode AES e (2) AES in f8-mode. Nel resto di questa sezione, sia E(k,x) AES applicato alla chiave k e al blocco di input x.