WebRTC
WebRTC ialah protokol yang membenarkan dua penyemak imbas bercakap antara satu sama lain secara langsung — rakan kepada rakan sebaya, kependaman rendah, dengan audio, video atau data. Ia menjadikan panggilan video berasaskan pelayar berdaya maju. Ia juga mencipta kategori kebocoran privasi yang sama sekali baharu, kerana untuk mencari satu sama lain melalui NAT, penyemak imbas perlu menyiasat IP awam mereka dengan cara yang mendedahkannya kepada JavaScript.
Badan artikel penuh disediakan dalam bahasa Inggeris di bawah.
WebRTC (Komunikasi Masa Nyata Web) ialah satu set API terbina dalam setiap penyemak imbas moden yang membolehkan halaman web mewujudkan sambungan rakan ke rakan secara langsung antara satu sama lain atau dengan aplikasi asli. Ia memberi kuasa kepada Google Meet, Zum dalam penyemak imbas, sembang suara Discord, Twitter Spaces pada zaman mereka dan banyak lagi perkhidmatan yang lebih kecil. Tanpa WebRTC, video penyemak imbas masa nyata masih akan menjadi cadangan Flash-atau-bust.
Apa yang terkandung dalam spesifikasi
WebRTC menggabungkan tiga API utama:
- getUserMedia — mengakses kamera dan mikrofon
- RTCPeerConnection — mengurus sambungan rakan sebaya sebenar: rundingan codec, penyulitan, lintasan NAT, kawalan kesesakan
- RTCDataChannel — menghantar data sewenang-wenangnya melalui sambungan binari atau teks peer-to-peer
Sambungan itu sendiri menggunakan ICE (Interactive Connectivity Establishment) untuk traversal NAT, DTLS untuk penyulitan jabat tangan dan SRTP untuk penyulitan media. Keseluruhan sambungan disulitkan hujung ke hujung secara lalai; anda tidak boleh mematikannya.
Cara rakan sebaya mencari antara satu sama lain
Bahagian sukar rakan ke rakan ialah kedua-dua rakan sebaya biasanya berada di belakang NAT. WebRTC menggunakan ICE untuk menemui laluan rangkaian yang mungkin:
- Pelayar bertanya kepada pelayan STUN "apakah rupa IP awam dan port saya?" Pelayan STUN membalas dengan alamat sumber yang dilihatnya — iaitu pemetaan luaran NAT.
- Pelayar mengumpul semua alamat calonnya: IP tempatan pada LAN, IP awam yang ditemui STUN, secara pilihan geganti TURN jika NAT tidak dapat dilalui oleh senarai calon penukar pePLZ3Z3X3X36. saluran (biasanya WebSocket ke pelayan aplikasi).
- Mereka cuba menyambung pada setiap kombinasi sehingga satu berjaya.
Masalah kebocoran IP
Langkah pengumpulan calon ialah punca kebocoran IP WebRTC. JavaScript boleh meminta penyemak imbas untuk mula mengumpul calon ICE — dan penyemak imbas akan mendedahkan IP awam dan tempatan yang terhasil ke halaman. Halaman yang ingin menjejaki anda boleh menghubungi new RTCPeerConnection().createDataChannel(...), menuai calon, dan kini mengetahui IP sebenar anda tanpa mengira sebarang kekeliruan lapisan HTTP.
Ini ditemui pada tahun 2015 dan dengan cepat menjadi senapang privasi standard. WebRTC bocor ialah sebab seseorang yang menggunakan VPN masih boleh menunjukkan IP sebenar mereka kepada tapak web yang menanyakan cara yang betul.
Apa yang telah dilakukan mengenainya
Vendor penyemak imbas telah bertindak balas dengan mengehadkan secara progresif tingkah laku calon yang boleh dilihat oleh halaman:ZPLZPLZ5XX5ZPLZPLZ5XX5 moden Chrome/Firefox/Safari hanya mendedahkan IP tempatan (yang pada LAN — biasanya 192.168.x atau 10.x) tanpa kebenaran yang jelas. Nama hos
192.168.1.1.42 secara rawak penyemak imbas. nama hos.getUserMedia (cth., panggilan video sebenar), penyemak imbas akan mengumpulkan calon penuh termasuk IP awam — pada ketika itu anda telah memberikan kebenaran media juga.Hasilnya: dalam tetapan lalai WebRTC kebanyakannya telah ditutup. Tapak yang mengumpulkan calon secara agresif masih wujud dan pengguna dengan penyemak imbas lama atau tetapan santai masih terdedah. Panduan kebocoran WebRTC kami meliputi pengesahan.
Mengapa peer-to-peer penting
Untuk panggilan dua orang, WebRTC menghantar media terus antara rakan sebaya, dengan pelayan isyarat hanya digunakan untuk persediaan sambungan. Video tidak merentasi pelayan aplikasi. Ini secara mendadak lebih murah untuk dikendalikan (tiada kos lebar jalur untuk media) dan kependaman yang lebih rendah secara mendadak (tiada lompatan tambahan). Panggilan kumpulan biasanya memerlukan Unit Pemajuan Terpilih (SFU) — pelayan yang menyampaikan media — tetapi penyulitan masih hujung-ke-hujung jika dikonfigurasikan dengan betul.
Tempat WebRTC akan pergi
Langkah utama seterusnya ialah WebTransport bukan berasaskan masa sebenar APICUIC berasaskan masa rendah strim) dan WebCodecs (akses mentah kepada perkakasan pengekod/penyahkod). Bersama-sama mereka membuka kunci kes penggunaan baharu seperti permainan awan, transkod video kependaman rendah dalam penyemak imbas dan pemindahan fail peer-to-peer pukal dengan kawalan kesesakan yang lebih baik daripada RTCDataChannel.
WebRTC sendiri juga sedang dimodenkan — semantik asal Pelan B SDP sedang ditamatkan secara berperingkat memihak kepada Pelan Bersepadu, dan permukaan API semakin bersih untuk pembangun.
Soalan lazim
- Bolehkah saya melumpuhkan WebRTC sepenuhnya?
- Ya, dalam Firefox: about:config → <code>media.peerconnection.enabled</code> → false. Penyemak imbas Chromium tidak mendedahkan togol tanpa sambungan (uBlock Origin mempunyai tetapan; Pengehad Rangkaian WebRTC daripada Google adalah satu lagi). Melumpuhkan memecahkan mana-mana tapak yang menggunakan WebRTC untuk membuat panggilan.
- Adakah VPN melindungi daripada kebocoran WebRTC?
- Bergantung pada pelayar. Penyemak imbas moden tidak mendedahkan IP awam kepada JavaScript tanpa kebenaran media, jadi kebocoran WebRTC pasif melalui VPN jarang berlaku pada tetapan lalai. Tetapi jika halaman memanggil getUserMedia dan pengguna menerima, calon yang dikumpul boleh memasukkan IP awam VPN — itu dijangka — atau IP sebenar jika tindanan IPv6 bocor di sekitar VPN.
- Apakah pelayan STUN, dan siapa yang menjalankannya?
- Pelayan STUN hanya mencerminkan IP sumber dan port yang mereka lihat — kecil, tanpa negara, bebas untuk dijalankan. Google mengendalikan pelayan STUN awam di stun.l.google.com:19302; Twilio, Mozilla dan yang lain menjalankannya. Banyak apl menggunakan Google secara lalai. Pelayan STUN hanya melihat bahawa permintaan berlaku; mereka tidak melihat media yang mengalir selepas itu.
- Adakah WebRTC disulitkan?
- Sentiasa, mengikut spesifikasi. Jabat tangan DTLS memperoleh kunci untuk SRTP, yang menyulitkan media. Saluran data disulitkan oleh DTLS. Anda tidak boleh melumpuhkan penyulitan. Penyulitan hujung ke hujung ialah sifat yang berasingan — panggilan kumpulan melalui SFU mungkin E2EE hanya jika aplikasi melaksanakannya secara eksplisit (Zum, Isyarat lakukan; banyak apl yang lebih mudah tidak melakukannya).
- Mengapa video penyemak imbas ke penyemak imbas begitu baik sekarang berbanding sedekad yang lalu?
- Pecutan perkakasan codec (AV1, VP9, H.264 pada GPU), kawalan kesesakan yang disesuaikan untuk media masa nyata (algoritma kawalan kesesakan Google), dan traversal NAT yang lebih baik menjadikan laluan terus lebih kerap. Kesemuanya berada di dalam WebRTC.