Passa al contenuto principale

3.3. SRTP Packet Processing (Elaborazione dei pacchetti SRTP)

3.3. SRTP Packet Processing (Elaborazione dei pacchetti SRTP)

Quanto segue si applica a SRTP. SRTCP è descritto nella Section 3.4.

Assumendo che l'inizializzazione del o dei contesti crittografici sia avvenuta tramite la gestione delle chiavi, il mittente DEVE eseguire quanto segue per costruire un pacchetto SRTP:

  1. Determinare quale contesto crittografico utilizzare come descritto nella Section 3.2.3.

  2. Determinare l'indice del pacchetto SRTP utilizzando il contatore di rollover (rollover counter), il numero di sequenza più alto (highest sequence number) nel contesto crittografico e il numero di sequenza nel pacchetto RTP, come descritto nella Section 3.3.1.

  3. Determinare la chiave master (master key) e il salt master (master salt). Questo viene fatto utilizzando l'indice determinato nel passaggio precedente o il MKI corrente nel contesto crittografico, secondo la Section 8.1.

  4. Determinare le chiavi di sessione (session keys) e il salt di sessione (session salt) (se utilizzati dalla trasformazione) come descritto nella Section 4.3, utilizzando la chiave master, il salt master, key_derivation_rate e le lunghezze delle chiavi di sessione nel contesto crittografico con l'indice determinato nei passaggi 2 e 3.

  5. Cifrare il payload RTP per produrre la parte cifrata (Encrypted Portion) del pacchetto (vedere Section 4.1 per i cifrari definiti). Questo passaggio utilizza l'algoritmo di cifratura indicato nel contesto crittografico, la chiave di cifratura di sessione e il salt di sessione (se utilizzato) trovati nel passaggio 4 insieme all'indice trovato nel passaggio 2.

  6. Se l'indicatore MKI è impostato su uno, aggiungere il MKI al pacchetto.

  7. Per l'autenticazione del messaggio (message authentication), calcolare il tag di autenticazione (authentication tag) per la parte autenticata (Authenticated Portion) del pacchetto, come descritto nella Section 4.2. Questo passaggio utilizza il contatore di rollover corrente, l'algoritmo di autenticazione indicato nel contesto crittografico e la chiave di autenticazione di sessione trovata nel passaggio 4. Aggiungere il tag di autenticazione al pacchetto.

  8. Se necessario, aggiornare il ROC come nella Section 3.3.1, utilizzando l'indice del pacchetto determinato nel passaggio 2.

Per autenticare e decifrare un pacchetto SRTP, il ricevitore DEVE eseguire quanto segue:

  1. Determinare quale contesto crittografico utilizzare come descritto nella Section 3.2.3.

  2. Eseguire l'algoritmo nella Section 3.3.1 per ottenere l'indice del pacchetto SRTP. L'algoritmo utilizza il contatore di rollover e il numero di sequenza più alto nel contesto crittografico con il numero di sequenza nel pacchetto SRTP, come descritto nella Section 3.3.1.

  3. Determinare la chiave master e il salt master. Se l'indicatore MKI nel contesto è impostato su uno, utilizzare il MKI nel pacchetto SRTP, altrimenti utilizzare l'indice dal passaggio precedente, secondo la Section 8.1.

  4. Determinare le chiavi di sessione e il salt di sessione (se utilizzato dalla trasformazione) come descritto nella Section 4.3, utilizzando la chiave master, il salt master, key_derivation_rate e le lunghezze delle chiavi di sessione nel contesto crittografico con l'indice determinato nei passaggi 2 e 3.

  5. Per l'autenticazione del messaggio e la protezione contro il replay (replay protection), verificare prima se il pacchetto è stato riprodotto (Section 3.3.2), utilizzando la lista di replay (Replay List) e l'indice determinato nel passaggio 2. Se il pacchetto viene giudicato essere stato riprodotto, allora il pacchetto DEVE essere scartato, e l'evento DOVREBBE essere registrato.

    Successivamente, eseguire la verifica del tag di autenticazione, utilizzando il contatore di rollover dal passaggio 2, l'algoritmo di autenticazione indicato nel contesto crittografico e la chiave di autenticazione di sessione dal passaggio 4. Se il risultato è "AUTHENTICATION FAILURE" (fallimento dell'autenticazione) (vedere Section 4.2), il pacchetto DEVE essere scartato da ulteriori elaborazioni e l'evento DOVREBBE essere registrato.

  6. Decifrare la parte cifrata del pacchetto (vedere Section 4.1 per i cifrari definiti), utilizzando l'algoritmo di decifratura indicato nel contesto crittografico, la chiave di cifratura di sessione e il salt (se utilizzato) trovati nel passaggio 4 con l'indice dal passaggio 2.

  7. Aggiornare il contatore di rollover e il numero di sequenza più alto, s_l, nel contesto crittografico come nella Section 3.3.1, utilizzando l'indice del pacchetto stimato nel passaggio 2. Se viene fornita la protezione contro il replay, aggiornare anche la lista di replay come descritto nella Section 3.3.2.

  8. Quando presenti, rimuovere i campi MKI e tag di autenticazione dal pacchetto.