ABpeer-to-peerSRTP encrypted

WebRTC

11 ελάχιστη ανάγνωσηΤεχνολογία Ιστού

Το WebRTC είναι το πρωτόκολλο που επιτρέπει σε δύο προγράμματα περιήγησης να συνομιλούν μεταξύ τους απευθείας — peer to peer, χαμηλή καθυστέρηση, με ήχο, βίντεο ή δεδομένα. Κατέστησε βιώσιμες τις βιντεοκλήσεις που βασίζονται σε πρόγραμμα περιήγησης. Δημιούργησε επίσης μια εντελώς νέα κατηγορία διαρροής απορρήτου, επειδή για να βρουν ο ένας τον άλλον μέσω των NAT, τα προγράμματα περιήγησης πρέπει να διερευνήσουν τις δημόσιες IP τους με τρόπο που να τις αποκαλύπτει στο JavaScript.

Το πλήρες κείμενο του άρθρου παρέχεται στα Αγγλικά παρακάτω.

Το

WebRTC (Web Real-Time Communication) είναι ένα σύνολο API ενσωματωμένων σε κάθε σύγχρονο πρόγραμμα περιήγησης που επιτρέπει στις ιστοσελίδες να δημιουργούν άμεσες συνδέσεις peer-to-peer μεταξύ τους ή με εγγενείς εφαρμογές. Εξουσιοδοτεί το Google Meet, το Zoom στο πρόγραμμα περιήγησης, τη φωνητική συνομιλία του Discord, τους χώρους Twitter στην εποχή τους και αμέτρητες μικρότερες υπηρεσίες. Χωρίς WebRTC, το βίντεο του προγράμματος περιήγησης σε πραγματικό χρόνο θα εξακολουθούσε να είναι μια πρόταση Flash-or-bust.

Τι περιέχει η προδιαγραφή

WebRTC περιλαμβάνει τρία κύρια API:

  • getUserMedia και πρόσβαση στην κάμερα μικρόφωνο
  • RTCPeerConnection — διαχειρίζεται την πραγματική ομότιμη σύνδεση: διαπραγμάτευση κωδικοποιητή, κρυπτογράφηση, διέλευση NAT, έλεγχος συμφόρησης
  • RTCDataΚανάλι μέσω αυθαίρετης σύνδεσης, αποστολή δεδομένων κειμένου μέσω αυθαίρετης σύνδεσης peer-to-peer

Η ίδια η σύνδεση χρησιμοποιεί ICE (Interactive Connectivity Establishment) για διέλευση NAT, DTLS για κρυπτογράφηση χειραψίας και SRTP για κρυπτογράφηση πολυμέσων. Όλη η σύνδεση είναι κρυπτογραφημένη από άκρο σε άκρο από προεπιλογή. δεν μπορείτε να το απενεργοποιήσετε.

Πώς οι ομότιμοι βρίσκονται μεταξύ τους

Το δύσκολο μέρος του peer-to-peer είναι ότι και οι δύο ομότιμοι είναι συνήθως πίσω από το NAT. Το WebRTC χρησιμοποιεί το ICE για να ανακαλύψει πιθανές διαδρομές δικτύου:

  1. Το πρόγραμμα περιήγησης ρωτά έναν διακομιστή STUN "Πώς είναι η δημόσια IP και η θύρα μου;" Ο διακομιστής STUN απαντά με τη διεύθυνση προέλευσης που είδε — η οποία είναι η εξωτερική αντιστοίχιση του NAT.
  2. Το πρόγραμμα περιήγησης συλλέγει όλες τις υποψήφιες διευθύνσεις του: τοπικές IP στο LAN, τη δημόσια IP που ανακαλύφθηκε από το STUN, προαιρετικά μια αναμετάδοση TURN εάν δεν είναι δυνατή η διέλευση των NATZ33 υποψήφιων καταλόγωνXXXX. ένα κανάλι σηματοδότησης (συνήθως ένα WebSocket προς τον διακομιστή της εφαρμογής).
  3. Προσπαθούν να συνδεθούν σε κάθε συνδυασμό μέχρι να πετύχει κάποιος. Η JavaScript μπορεί να ζητήσει από το πρόγραμμα περιήγησης να ξεκινήσει τη συλλογή υποψηφίων ICE — και το πρόγραμμα περιήγησης θα αποκαλύψει τις δημόσιες και τοπικές IP που προκύπτουν στη σελίδα. Μια σελίδα που θέλει να σας παρακολουθήσει μπορεί να καλέσει το new RTCPeerConnection().createDataChannel(...), να συγκεντρώσει τους υποψήφιους και τώρα γνωρίζει την πραγματική σας IP ανεξάρτητα από τυχόν συσκότιση του επιπέδου HTTP. WebRTC διαρροές είναι ο λόγος για τον οποίο ένα άτομο σε ένα VPN μπορεί ακόμα να έχει την πραγματική του IP ορατή σε έναν ιστότοπο που ρωτά τον σωστό τρόπο. δείτε:

    • Η προεπιλεγμένη συμπεριφορά στο σύγχρονο Chrome/Firefox/Safari είναι να αποκαλύπτει μόνο τοπικές IP (αυτές στο LAN — συνήθως 192.168.x ή 10.x) χωρίς ρητή άδεια. Το
    • mDNS αποκαλύπτει μόνο τις τοπικές διευθύνσεις IP για τις συνδέσεις 192.168.1.42, το πρόγραμμα περιήγησης χρησιμοποιεί ένα τυχαίο όνομα κεντρικού υπολογιστή .local.
    • Εάν μια σελίδα καλεί το getUserMedia (π.χ. μια πραγματική κλήση βίντεο), το πρόγραμμα περιήγησης θα συγκεντρώσει πλήρεις υποψηφίους, συμπεριλαμβανομένης της δημόσιας IP' σας ούτως ή άλλως.

    Το αποτέλεσμα: οι παθητικές διαρροές IP WebRTC έχουν κλείσει ως επί το πλείστον στις προεπιλεγμένες ρυθμίσεις. Οι ιστότοποι που συγκεντρώνουν υποψηφίους επιθετικά εξακολουθούν να υπάρχουν και οι χρήστες με παλιά προγράμματα περιήγησης ή χαλαρές ρυθμίσεις εξακολουθούν να είναι ευάλωτοι. Ο οδηγός διαρροών WebRTC καλύπτει την επαλήθευση.

    Γιατί έχει σημασία η peer-to-peer

    Για κλήσεις δύο ατόμων, το WebRTC στέλνει μέσα απευθείας μεταξύ ομοτίμων, με τον διακομιστή σηματοδότησης να χρησιμοποιείται μόνο για τη ρύθμιση σύνδεσης. Το βίντεο δεν διασχίζει τους διακομιστές της εφαρμογής. Αυτό είναι δραματικά φθηνότερο στη λειτουργία (χωρίς κόστος εύρους ζώνης για μέσα) και δραματικά χαμηλότερη καθυστέρηση (χωρίς επιπλέον άλματα). Οι ομαδικές κλήσεις συνήθως χρειάζονται μια Μονάδα Επιλεκτικής Προώθησης (SFU) — έναν διακομιστή που αναμεταδίδει μέσα — αλλά η κρυπτογράφηση εξακολουθεί να είναι από άκρο σε άκρο εάν ρυθμιστεί σωστά. αμφίδρομες ροές μη σε πραγματικό χρόνο) και WebCodecs (ακατέργαστη πρόσβαση σε υλικό κωδικοποιητή/αποκωδικοποιητή). Μαζί ξεκλειδώνουν νέες περιπτώσεις χρήσης, όπως gaming cloud, διακωδικοποίηση βίντεο χαμηλής καθυστέρησης στο πρόγραμμα περιήγησης και μαζική μεταφορά αρχείων peer-to-peer με καλύτερο έλεγχο συμφόρησης από το RTCDataChannel.

    Το ίδιο το WebRTC εκσυγχρονίζεται επίσης — η αρχική σημασιολογία του Σχεδίου B SDP καταργείται σταδιακά υπέρ του Ενοποιημένου Σχεδίου και η επιφάνεια του API γίνεται πιο καθαρή για τους προγραμματιστές.

Συχνές ερωτήσεις

Μπορώ να απενεργοποιήσω πλήρως το WebRTC;
Ναι, στον Firefox: about:config → <code>media.peerconnection.enabled</code> → false. Τα προγράμματα περιήγησης Chromium δεν εκθέτουν μια εναλλαγή χωρίς επέκταση (το uBlock Origin έχει μια ρύθμιση. Το WebRTC Network Limiter από την Google είναι μια άλλη). Η απενεργοποίηση διακόπτει κάθε ιστότοπο που χρησιμοποιεί το WebRTC για κλήσεις.
Προστατεύει ένα VPN από διαρροές WebRTC;
Εξαρτάται από το πρόγραμμα περιήγησης. Τα σύγχρονα προγράμματα περιήγησης δεν αποκαλύπτουν τη δημόσια IP στο JavaScript χωρίς άδεια πολυμέσων, επομένως μια παθητική διαρροή WebRTC μέσω ενός VPN είναι σπάνια στις προεπιλεγμένες ρυθμίσεις. Αλλά εάν η σελίδα καλεί το getUserMedia και ο χρήστης αποδεχτεί, οι συγκεντρωμένοι υποψήφιοι μπορούν να συμπεριλάβουν τη δημόσια IP του VPN — αυτό είναι αναμενόμενο — ή την πραγματική IP εάν η στοίβα IPv6 διαρρέει γύρω από το VPN.
Τι είναι ένας διακομιστής STUN και ποιος τον τρέχει;
Οι διακομιστές STUN αντικατοπτρίζουν απλώς την πηγή IP και τη θύρα που βλέπουν — μικροί, χωρίς ιθαγένεια, δωρεάν για εκτέλεση. Η Google λειτουργεί έναν δημόσιο διακομιστή STUN στη διεύθυνση stun.l.google.com:19302; Οι Twilio, Mozilla και άλλοι διαχειρίζονται τη δική τους. Πολλές εφαρμογές χρησιμοποιούν την Google από προεπιλογή. Οι διακομιστές STUN βλέπουν μόνο ότι έγινε ένα αίτημα. δεν βλέπουν τα μέσα που ρέουν μετά.
Είναι το WebRTC κρυπτογραφημένο;
Πάντα, βάσει προδιαγραφών. Η χειραψία DTLS εξάγει κλειδιά για το SRTP, το οποίο κρυπτογραφεί τα μέσα. Το κανάλι δεδομένων είναι κρυπτογραφημένο με DTLS. Δεν μπορείτε να απενεργοποιήσετε την κρυπτογράφηση. Η κρυπτογράφηση από άκρο σε άκρο είναι μια ξεχωριστή ιδιότητα — οι ομαδικές κλήσεις μέσω μιας SFU μπορεί να είναι E2EE μόνο εάν η εφαρμογή την εφαρμόζει ρητά (Zoom, Signal κάνει, πολλές απλούστερες εφαρμογές όχι).
Γιατί το βίντεο από πρόγραμμα περιήγησης σε πρόγραμμα περιήγησης είναι τόσο καλό τώρα σε σύγκριση με πριν από μια δεκαετία;
Επιτάχυνση υλικού κωδικοποιητή (AV1, VP9, ​​H.264 σε GPU), έλεγχος συμφόρησης προσαρμοσμένος για μέσα σε πραγματικό χρόνο (αλγόριθμος ελέγχου συμφόρησης της Google) και καλύτερη διέλευση NAT καθιστώντας πιο συχνά δυνατές τις άμεσες διαδρομές. Όλα αυτά βρίσκονται μέσα στο WebRTC.
WebRTC Επεξήγηση: Το πρωτόκολλο προγράμματος περιήγησης που τροφοδοτεί τις βιντεοκλήσεις — και μερικές φορές διαρρέει την IP σας