Secure Real-time Transport Protocol (abrev. SRTP, Rus. Secure real-time data transfer protocol ) - definește profilul protocolului RTP și este conceput pentru criptare, autentificare a mesajelor, integritate, protecție împotriva falsificării datelor RTP în transferurile media unidirecționale și multicast și aplicatii . SRTP a fost dezvoltat de o echipă mică de experți în cripto- protocoale IP de la Cisco și Ericsson , David Oran, David McGrew, Mark Baugher, Mats Naslund, Elisabetta Carrara, Karl Norman și Rolf Blom. Publicat pentru prima dată de IETF în martie 2004 ca RFC 3711 .
Întrucât RTP este strâns legat de RTCP (Protocol de control în timp real), care poate fi utilizat pentru a gestiona o sesiune RTP, SRTP are și un protocol înrudit numit Secure RTCP (sau SRTCP ). SRTCP oferă aceeași funcționalitate legată de securitate în RTCP pentru aceeași funcționalitate SRTP în RTP.
Utilizarea SRTP sau SRTCP este opțională când se utilizează RTP sau RTCP, dar chiar dacă se utilizează SRTP/SRTCP, toate caracteristicile suplimentare (cum ar fi criptarea și autentificarea) sunt opționale și pot fi activate sau dezactivate. Singura excepție este caracteristica de autentificare a mesajelor, care este necesară atunci când utilizați SRTCP.
Pentru a cripta un flux media (în scopul confidențialității unei conexiuni vocale), SRTP (împreună cu SRTCP) standardizează utilizarea unui singur cifru, AES , care poate fi utilizat în două moduri, transformând cifrul bloc inițial AES într-un stream cipher:
Pe lângă cifrul AES, SRTP permite criptarea directă folosind așa-numitul „cifr gol”, care poate fi luat ca al doilea cifr acceptat (sau un al treilea mod de criptare în plus față de cele două descrise mai sus). De fapt, un cifru gol nu efectuează nicio criptare (adică funcțiile algoritmului de criptare ca și cum fluxul de chei ar conține doar zerouri și copiază fluxul de intrare în fluxul de ieșire neschimbat). Acest lucru este obligatoriu pentru această metodă de criptare, care trebuie furnizată pe orice sistem compatibil SRTP. Poate fi folosit și atunci când confidențialitatea garantată de SRTP nu este necesară, dar pot fi folosite și celelalte caracteristici ale SRTP - autentificarea și integritatea mesajelor.
Deși este ușor din punct de vedere tehnic să construiți noi algoritmi de criptare în SRTP, standardul SRTP afirmă că noi algoritmi de criptare dincolo de cei descriși nu pot fi adăugați pur și simplu la o implementare a protocolului SRTP. Singura modalitate legală de a adăuga un nou algoritm de criptare pentru a fi compatibil cu standardul SRTP este publicarea unui nou RFC, în care utilizarea noului algoritm ar trebui să fie clar definită.
Algoritmii de criptare de mai sus nu asigură direct integritatea mesajului, făcând posibilă efectuarea unui atac Man-in-the-middle și falsificarea conținutului mesajului sau cel puțin ascultarea datelor transmise anterior. Prin urmare, standardul SRTP trebuie să ofere, de asemenea, integritatea datelor și protecție împotriva interceptării.
Pentru a autentifica mesajul și a proteja integritatea acestuia, algoritmul de hashing HMAC - SHA1 , definit în RFC 2104 , este utilizat pentru a obține un hash de 160 de biți, care este apoi trunchiat la 80 sau 32 de biți pentru a deveni un token de pachet. HMAC este calculat din tipul de sarcină utilă a pachetului și datele din antetul pachetului, inclusiv numărul de secvență al pachetului. Pentru a se proteja împotriva încorporarii mesajelor Man -in-the-Middle , receptorul menține indexurile pachetelor primite anterior, îi compară cu indexul fiecărui pachet nou primit și omite doar un pachet nou dacă nu a fost redat (adică, a fost trimis). ) inainte de. Această abordare se bazează în mare măsură pe protecția completă a integrității (pentru a face imposibilă schimbarea indicilor secvenței de pachete pentru a înșela).
Funcția de generare a cheilor este utilizată pentru a deriva cheile de sesiune utilizate pentru a cripta contextul (SRTP, chei de criptare a protocolului de control SRTCP și chei de sesiune, chei de autentificare SRTP și SRTCP) dintr-o singură cheie principală. Astfel, protocolul de schimb de chei vă permite să schimbați doar cheile principale, restul cheilor de sesiune necesare urmând a fi obținute folosind această funcție.
Modificările periodice ale funcției de generare a cheilor în sine conduc la măsuri de securitate suplimentare. De obicei, acest lucru îl împiedică pe Man -in-the-Middle să colecteze o cantitate mare de material criptat criptat cu o singură cheie de sesiune. Unele hack-uri sunt mai ușor de efectuat atunci când există o cantitate mare de material criptat. În plus, schimbarea funcției de generare a cheilor de mai multe ori oferă securitate înainte și înapoi, în sensul că cheia de sesiune decriptată nu compromite alte chei de sesiune derivate din aceeași cheie principală. Aceasta înseamnă că, chiar dacă un atacator a reușit să obțină o anumită cheie de sesiune, el nu poate decripta mesajele furnizate cu cheile de sesiune anterioare și ulterioare derivate din aceeași cheie principală. (Deși, desigur, cheia principală rezultată va oferi toate cheile de sesiune derivate din aceasta.)
SRTP se bazează pe un protocol extern de schimb de chei pentru a stabili o cheie principală. Au fost dezvoltate două protocoale speciale pentru utilizare cu SRTP, ZRTP și MIKEY .
Există și alte metode de a negocia cheile SRTP. Mai mulți producători diferiți oferă produse care folosesc metoda de schimb de chei SDES .