3. Estensione SRTP per DTLS
3. Estensione SRTP per DTLS
Questa sezione descrive l'estensione DTLS per stabilire materiale chiave, algoritmi e parametri SRTP.
3.1 L'estensione use_srtp
Per negoziare l'uso della protezione dei dati SRTP, i client includono un'estensione di tipo "use_srtp" nel client Hello esteso DTLS. Questa estensione DEVE essere utilizzata solo quando i dati trasportati sono RTP o RTCP. Il campo "extension_data" di questa estensione contiene l'elenco dei profili di protezione SRTP accettabili. L'estensione use_srtp indica anche l'MKI (Master Key Identifier, identificatore chiave master) che il client utilizzerà nei pacchetti SRTP o per i pacchetti SRTP che riceve.
Il formato dell'estensione è:
uint8 SRTPProtectionProfile[2];
struct {
SRTPProtectionProfiles SRTPProtectionProfiles;
opaque srtp_mki<0..255>;
} UseSRTPData;
SRTPProtectionProfile SRTPProtectionProfiles<2..2^16-1>;
I valori SRTPProtectionProfile sono definiti nella Sezione 3.1. Se il server è disposto ad accettare l'estensione use_srtp, DEVE rispondere con la propria estensione use_srtp nel server Hello esteso DTLS. L'elenco del server DEVE contenere esattamente un valore SRTPProtectionProfile, che DEVE essere uno dei valori offerti dal client.
3.2 Scelta del certificato
DTLS consente al server di inviare un messaggio certificate_request. Se il client non ha un certificato adeguato, DEVE inviare un messaggio di certificato vuoto in risposta. Quando si utilizza DTLS-SRTP, il client DOVREBBE utilizzare un certificato appropriato per l'uso con DTLS. Poiché DTLS del percorso dei media non utilizza il contesto di sicurezza del canale di segnalazione, il certificato utilizzato per DTLS DOVREBBE essere diverso da qualsiasi certificato utilizzato dal protocollo di segnalazione.
3.3 Derivazione delle chiavi
Quando viene utilizzato DTLS-SRTP, DTLS funge da funzione di derivazione delle chiavi per SRTP. Il PRF TLS viene utilizzato per derivare il materiale chiave necessario come segue:
keying material = PRF(master_secret, "EXTRACTOR-dtls_srtp",
client_random + server_random)
Il materiale chiave viene quindi suddiviso nelle chiavi di crittografia SRTP necessarie, chiavi di autenticazione e chiavi di salting per entrambe le direzioni (cliente-server e server-cliente) come definito dal profilo di protezione SRTP selezionato.
3.4 Ambito delle chiavi
Ogni sessione DTLS-SRTP protegge una singola sorgente RTP/RTCP. Una singola sessione DTLS-SRTP può essere utilizzata per proteggere più flussi RTP o pacchetti RTCP che vanno in una direzione tra due endpoint, purché tutti i media condividano lo stesso SSRC. Tuttavia, quando le chiamate in conferenza coinvolgono più sorgenti, ciascuna con un SSRC diverso, DEVE essere utilizzata una sessione DTLS separata per SSRC.
3.5 Limitazioni sull'uso delle chiavi
Le chiavi derivate da DTLS DEVONO essere utilizzate solo per proteggere il traffico RTP e RTCP che viene trasportato sulla stessa 5-tupla (IP sorgente, porta UDP sorgente, IP destinazione, porta UDP destinazione e protocollo). Se il traffico deve essere inviato su una 5-tupla diversa, DEVE essere eseguito un nuovo handshake DTLS.