Ten samouczek uzupełnia mój wpis na temat WebRTC – standardu odpowiedzialnego głównie za wideorozmowy. Jednym z jego filarów jest odsunięcie pośrednika i komunikacja peer-to-peer, między użytkownikami.

Problem w tym, że w ten sposób może łatwo dojść do ujawnienia prawdziwego adresu IP, chowanego na przykład za VPN-em. A to niedobre dla prywatności.

Niektórzy mogą łatać luki i testować VPN-y, aż dopasują rozwiązanie do siebie. Ale najprościej chyba po prostu wyłączyć WebRTC.
Pokażę tutaj, w jaki sposób można to zrobić w różnych przeglądarkach i paru innych aplikacjach.

Uwaga

Po wyłączeniu WebRTC siłą rzeczy przestanie działać większość wideorozmów. Albo innych, mniej oczywistych rzeczy. Nawet jeśli działać nie przestaną, bo mają awaryjny wariant z pośrednikiem, to mogą być dużo wolniejsze.
Chcąc z kimś porozmawiać w dobrej jakości, musielibyśmy wrócić do opcji i przywrócić poprzednie ustawienie.
Dla codziennych użytkowników (jak rodzinka, której pomaga się ustawić elektronikę) może to być zaskakujące i wkurzające. Dlatego lepiej nie robić tego bez ich wiedzy.

Spis treści

Sprawdzanie w przeglądarkach

W przypadku przeglądarek praktycznie każda stronka, która doda do siebie odpowiedni kod, może otworzyć połączenie WebRTC, by po cichu zdemaskować adres IP.

Ta łatwość to zagrożenie, ale z drugiej strony – zaleta. Połączenie może otworzyć też stronka sprzyjająca prywatności. Po czym w przystępny sposób ostrzec użytkownika, że mu prawdziwe IP wystaje.

Jedną z takich stronek jest BrowserLeaks, zawierająca wiele innych cennych informacji związanych z profilowaniem użytkowników. To jej użyję w tym przykładzie.
A żeby nie było, że nie polecam alternatyw – jest też ipleak.net.

Gdy odwiedziłem powyższy link do BrowserLeaks przez Operę bez włączonego VPN-a czy innego pośrednika, to wyświetliło, że nie ma wycieku.

Zrzut ekranu pokazujący fragment interfejsu BrowserLeaks. Wyświetlają się dwa adresy IP w różnych formatach, przy każdym widnieje polska flaga. Informacje poniżej mówią, że nie wykryto wycieku.

Ale to żadne pocieszenie. Jeśli ktoś w ogóle nie maskuje adresu IP, to po prostu ma wszystko na widoku. Nic wtedy nie da uszczelnianie WebRTC.

Załóżmy, że ktoś jednak idzie o krok dalej i wykorzystuje jakiegoś pośrednika. Chociażby tego nisko ocenianego, ale darmowego VPN-a wbudowanego w Operę. Włączyłem go, a BrowserLeaks pokazał, że spod oficjalnego (szwedzkiego) IP widać ten prawdziwy:

Zrzut ekranu z Opery. U góry widać ikonkę VPN świecącą się na niebiesko. Poniżej widać stronę Browserleaks. Są tam dwa adresy IP ze szwedzkimi flagami, ale na dole znajduje się wzmianka, wyróżniona czerwonym kolorem, że wykryto inny adres IP, niezgodny z tym oficjalnym. To jeden z adresów z poprzedniego przykładu. Obok niego znajduje się polska flaga.

W takiej sytuacji wszedłem w opcje Opery i paroma kliknięciami wyłączyłem całkowicie WebRTC. Kiedy to zrobiłem, to BrowserLeaks zaczął pokazywać, że wykrywa tylko szwedzkie IP i żadnego innego. Wyciek zatkany!

Zrzut ekranu z Browserleaks. Pokazuje dwa adresy IP, przy nich szwedzkie flagi, a na dole informację o tym, że nie wykryto żadnego wycieku.

Proste? Proste. A teraz pokażę, jak wyłączać WebRTC w różnych przeglądarkach. Gdy już to zrobicie, koniecznie sprawdźcie przez BrowserLeaks, czy wszystko jest jak na trzecim ekranie.

Wyłączanie w przeglądarkach

Chrome

Zacznę od najpopularniejszego Chrome’a, żeby mieć go z głowy.
W jego przypadku stronka BrowserLeaks radzi, żeby użyć oficjalnego dodatku od Google’a, WebRTC Network Limiter. To samo proponuje IPLeak.

Oznacza to jednak zależność od Wujka G, dla którego prywatność nie jest sprawą priorytetową. Sam dodatek miał w ostatnich latach czas, gdy przez półtora roku nie działała ważna funkcja.

W związku z tym Ciemna Strona radzi, żeby Chrome’a w ogóle nie używać, chyba że do jednorazowych zadań :wink:

Edge

Kolejna korpoprzeglądarka, tym razem od Microsoftu. Ale ponoć daje możliwość całkowitego wyłączenia WebRTC.

Trzeba wpisać w górny pasek przeglądarki about:flags i aktywować opcję Ukrywaj mój lokalny adres IP podczas połączeń WebRTC.

Opera

Trzeba:

  • wpisać w górnym pasku przeglądarki about:config,
  • kliknąć zakładkę Zaawansowane po lewej,
  • następnie zakładkę Prywatność i bezpieczeństwo.
  • przewinąć długą listę aż do rzeczy pod nagłówkiem WebRTC.

Są tam cztery opcje kontrolujące WebRTC. Najlepsza dla prywatności będzie ostatnia, Disable non-proxied UDP (przypomnę: non-proxied, czyli bez pośrednika; UDP, czyli protokół u podstaw WebRTC).

Całkowicie wyłączy ona funkcję WebRTC. A na stronce BrowserLeaks nie pokaże już prawdziwego IP.

Vivaldi

A jak w „Porach roku” u Vivaldiego? Według ich forum – dość łatwo. Trzeba:

  • wejść w ustawienia,
  • kliknąć zakładkę Prywatność i bezpieczeństwo,
  • znaleźć pstryczki pod nagłówkiem Ochrona przed śledzeniem,
  • odznaczyć ten mówiący o transmitowaniu adresu IP dla lepszego działania WebRTC.

Warto zaznaczyć, że jeden z użytkowników pisze na forum, że mu to nie działa. Inni piszą, że działa.
Możliwe, że ma jakąś nietypową konfigurację albo coś zamotał. W każdym razie, jak zawsze, warto sprawdzić efekt przez BrowserLeaks.

Firefox

Tu poszło łatwo.

Musiałem wpisać w górny pasek adresów about:config. Wyskoczył komunikat mówiący, żebym zachował ostrożność. Niezbyt ze mną współgrał, ale napis Akceptuję ryzyko na przycisku pod nim – już bardziej. Dlatego go kliknąłem.

Aktywował się pasek wyszukiwania. Zacząłem wpisywać w niego media.peerconnection.enabled. Kiedy pojawiła się opcja o tej nazwie, to dwukrotnie ją kliknąłem, żeby zmienić true na false. Gotowe!

Tor Browser

Ta anonimizująca przeglądarka jest oparta na Firefoksie. Zaglądając w opcje, znalazłoby się to samo ustawienie co w punkcie wyżej, tyle że domyślnie wyłączone.
Ale nawet jego włączenie nic by nie dało. Bo, według odpowiedzi twórców z 2022 roku, Tor Browser po prostu nie wspiera WebRTC. Z własnego wyboru. Jest zatem bezpieczny.

Uwaga

Warto pamiętać, że Tor jest pojęciem szerszym niż Tor Browser. Gdyby ktoś połączył się z siecią Tor, używając innej, zwyczajnej przeglądarki (da się tak), to nadal byłby narażony na wyciek przez WebRTC. Dlatego warto się trzymać Tor Browsera.
Fajnie pokazuje to film użytkownika AKM.

Na różnych komunikatorach

Wideorozmowy przez WebRTC obsługują nie tylko przeglądarki, ale również wiele komunikatorów. W tym szyfrowanych, które nie mają wglądu do treści wiadomości.
Przejście na peer-to-peer to dla nich oszczędność danych, więc chętnie parują w ten sposób użytkowników.

W przypadku komunikatorów zagrożenie wydaje mi się mniejsze niż w przypadku stron internetowych.

Podczas surfowania po sieci adres IP mogą demaskować podmioty zawodowo profilujące użytkowników.
Obecne na wielu stronach. Gromadzące poza adresami również pliki cookies i inne dane, dokładniej mapujące wędrówki ludzi po sieci.

W porównaniu z tym zagrożeniem komunikatory mało mogą. Wspierając peer-to-peer, raczej nie mają złych intencji. Opcja nadużyć jest niewielka. A gdyby wszyscy korzystali z ich pośrednictwa, to by je dobili rachunkiem za serwery.

Tym niemniej fakt jest faktem. Podczas wideorozmowy peer-to-peer telekom wyraźnie zobaczy, że dwa adresy IP wymieniają między sobą informacje.

Co, jeśli oba adresy ma w swojej bazie? Bo to na przykład sieć Play, a rozmówcy to jej klienci?
Może wówczas spojrzeć na osoby, do jakich są przypisane w danej chwili. I dostać na tacy: „Arek J. odbył siódmą wideorozmowę w tym tygodniu z Maćkiem H.”.

Dlatego, jeśli ktoś nie chce ujawnienia swoich powiązań, może z własnej woli wybrać pośrednictwo apki. Niektóre dają taką możliwość.

Aktualny stan rzeczy oraz porady dotyczące apek (tylko na iOS, nie wiem czy na Androidzie jest podobnie) można znaleźć w artykule serwisu TechCrunch sprzed paru dni.

Signal

To akurat sprawdziłem osobiście, na systemie Android 12.

Domyślnie „swatanie” jest włączone między osobami, które mają siebie nawzajem w kontaktach. W innych przypadkach wyłączone.

Jeśli ktoś chce, to może nakazać, żeby dane zawsze szły przez serwery Signala, nawet między kontaktami.
W tym celu trzeba nacisnąć:

  • ikonę trzech kropek w górnym prawym rogu,
  • opcję Ustawienia,
  • opcję Prywatność,
  • opcję Zaawansowane (na samym dole),
  • opcję Zawsze przekazuj połączenia.

Telegram, Viber, Threema

Podobnie jak Signal, te komunikatory stosują peer-to-peer tylko między ludźmi, którzy mają siebie nawzajem w kontaktach. Czyli teoretycznie powinni sobie ufać.

Ale jeśli nie ufają infrastrukturze po drodze, to zawsze mogą wrócić do pośrednictwa serwerów.

Zdam się na porady z podlinkowanego wyżej artykułu TechCrunch oraz drugiego, o Telegramie.
Tłumaczenie moje, więc może nie zgadzać się co do litery. Ale sens powinien być zachowany.

  • Telegram

    Ustawienia, potem Prywatność i bezpieczeństwo, Połączenia (ang. Calls), opcja Nigdy pod nagłówkiem „Peer to Peer”.

  • Viber

    Trzy kropki, potem Ustawienia, Prywatność, odznaczamy Peer-to-peer.

  • Threema

    Ustawienia, Połączenia Threema (ang. Threema calls), Zawsze przekazuj połączenia (ang. Always Relay Calls).

WhatsApp, Messenger, FaceTime

Zarówno apki od Facebooka, jak i ta od Apple, nie dają użytkownikowi kontroli nad pośrednictwem. Ujawniają adres IP i nie da się wyłączyć tej opcji.

WhatsApp ponoć planuje to zmienić w bliższym czasie i dać możliwość wyłączenia połączeń peer-to-peer.
W przypadku Messengera brak możliwości oficjalnie potwierdził rzecznik, zmian nie ma w planie.

Jeśli chodzi o Apple, nikt nie odpowiedział dziennikarzowi. Wyczytał za to ładne słówka o szyfrowaniu treści (które jest tu bez znaczenia, bo nie obejmuje IP).