Secure Transport Real-time Protocol (SRTP) adalah sistem keamanan yang memperluas
Protokol Transport Real-time (RTP) dengan seperangkat mekanisme keamanan.
WebRTC menggunakan DTLS-SRTP untuk enkripsi, otentikasi, dan integritas pesan, serta perlindungan terhadap serangan replay. Ini memberi privasi melalui enkripsi dan otentikasi beban RTP. SRTP adalah salah satu komponen untuk keamanan, sangat nyaman bagi pengembang yang mencari API yang andal dan aman. Tapi apa itu SRTP dan bagaimana cara kerjanya?
Apa itu SRTP?
SRTP meningkatkan keamanan RTP. Protokol ini diterbitkan oleh IETF (Internet Engineering Task Force) di
RFC 3711 , pada bulan Maret 2004.
SRTP memberikan privasi dengan mengenkripsi beban RTP, tidak termasuk header RTP. Otentikasi juga didukung, yang banyak digunakan sebagai mekanisme keamanan dalam RTP. Sementara SRTP dapat digunakan secara keseluruhan, juga dimungkinkan untuk menonaktifkan / mengaktifkan fungsi-fungsi tertentu. Plugin utama dalam SRTP adalah manajemen kunci, karena ada banyak opsi: DTLS-SRTP, MIKEY di SIP, SDES (Deskripsi Keamanan) di SDP, ZRTP, dll.
Enkripsi
SRTP menggunakan AES (Advanced Encryption Standard) sebagai cipher default. AES memiliki dua mode enkripsi: Mode Counter Integer Terpisah dan mode f8. Mode penghitung biasanya digunakan - ini sangat penting ketika mentransmisikan lalu lintas melalui jaringan yang tidak dapat diandalkan dengan potensi hilangnya paket. Mode f8 digunakan dalam jaringan seluler 3G dan merupakan varian dari mode Output Feedback, di mana dekripsi terjadi dengan cara yang sama seperti enkripsi.
SRTP juga memungkinkan pengembang untuk mematikan enkripsi menggunakan cipher nol. Zero cipher tidak melakukan enkripsi, melainkan menyalin aliran masuk langsung ke yang keluar, tanpa perubahan.
WebRTC tidak merekomendasikan penggunaan zero cipher, karena keamanan data sangat penting bagi pengguna akhir. Bahkan, implementasi WebRTC yang valid
HARUS mendukung enkripsi, saat ini dengan DTLS-SRTP .
Integritas
Untuk menjaga integritas pesan dalam SRTP, label otentikasi dibuat berdasarkan konten dan bagian dari header paket, yang kemudian ditambahkan ke paket RTP. Label ini digunakan untuk memvalidasi konten payload, yang pada gilirannya mencegah pemalsuan data.
Otentikasi juga merupakan dasar untuk menolak serangan akses ulang. Untuk memblokirnya, indeks
berurutan diberikan untuk setiap paket. Pesan baru akan diterima hanya jika indeksnya adalah yang berikutnya dan belum diterima. Indeks efektif karena integritas yang dijelaskan di atas; tanpanya, ada kemungkinan substitusi indeks.
Meskipun WebRTC terutama menggunakan algoritma HMAC-SHA1 untuk integritas SRTP, sangat disarankan agar Anda memilih set algoritma dengan PFS (Perfect Forward Secrecy) di atas non-PFS dan AEAD (Enkripsi terotentikasi dengan Data Terkait) di atas non-AEAD. Implementasi WebRTC terbaru menggunakan DTLS v1.2 dengan TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 suite algoritma.
Kuncinya
SRTP menggunakan fungsi pembuatan kunci (KDF) untuk membuat kunci berdasarkan kunci utama. Protokol manajemen kunci membuat semua kunci dalam suatu sesi menggunakan kunci utama. Karena setiap sesi memiliki kunci uniknya sendiri, semua sesi dilindungi. Oleh karena itu, jika satu sesi terganggu, maka sisanya masih dilindungi. Protokol manajemen kunci digunakan untuk kunci master - biasanya ZRTP atau MIKEY, tetapi ada variasi lain.
RTP IP StackStreaming di WebRTC dilindungi oleh salah satu dari dua protokol: SRTP atau DTLS (Datagram Transport Layer Security). DTLS - untuk enkripsi aliran data, SRTP - untuk aliran media. Namun, untuk pertukaran kunci dalam SRTP, DTLS-SRTP digunakan untuk mendeteksi serangan broker. Ini dirinci dalam dokumen IETF:
lengkungan keamanan dan
keamanan WebRTC .
SRTCP (Protokol Kontrol Transportasi Real-time Aman)
SRTP memiliki protokol tambahan - SRTCP (Secure Real-Transport Transport Protocol). SRTCP memperluas RTCP (Real-time Transport Control Protocol) dengan fitur yang sama dengan SRTP memperluas RTP, termasuk enkripsi dan otentikasi. Seperti SRTPP, hampir semua fitur keamanan SRTCP dapat dinonaktifkan, kecuali untuk otentikasi pesan - ini diperlukan untuk SRTCP.
Perangkap SRTP
SRTP mengenkripsi muatan paket RTP, tetapi bukan ekstensi header. Ini menciptakan kerentanan karena ekstensi header dalam paket RTP dapat berisi informasi penting, misalnya, tingkat suara setiap paket dalam aliran media. Secara potensial, ini mungkin tidak asing bagi penyerang yang berkomunikasi dua orang di jaringan - privasi percakapan dapat terganggu. Ini telah dibahas dalam
Permintaan Komentar IETF
: 6904 , yang mengharuskan semua implementasi SRTP berikutnya untuk mengenkripsi ekstensi header.
Dalam beberapa kasus - misalnya, konferensi dengan banyak peserta - perantara dalam bentuk SFM (Selective Forwarding Mixer) mungkin diperlukan untuk mengoptimalkan parameter RTP selama penerusan aliran. Perantara seperti itu melanggar prinsip enkripsi ujung ke ujung yang digunakan dalam sistem peer-to-peer; dengan kata lain, perangkat akhir harus "mempercayai" peserta lain. Untuk mengatasi keterbatasan ini, Privacy Enhanced RTP Conferencing (PERC, salah satu kelompok kerja IETF) sedang mengerjakan solusi
seperti prosedur enkripsi ganda SRTP . PERCs memberikan jaminan yang didukung oleh hop-by-hop dan enkripsi ujung ke ujung dalam dua konteks yang terpisah namun terkait. Kami akan memberi tahu Anda tentang hal itu di posting berikutnya!