Internetowa inwigilacja plus 2 – ukrywanie metadanych

ciemnastrona.com.pl 2 lat temu

Witam w drugim wpisie rozszerzającym serię „Internetowa inwigilacja”! przez cały czas skupiamy się na chowaniu wysyłanych informacji przed podglądaczami, takimi jak firmy telekomunikacyjne.

Dupochronik: to luźny wpis od hobbysty dla hobbystów. Nie zajmuję się cyberbezpieczeństwem. Zachęcam do weryfikowania informacji z tego wpisu w innych źródłach.

Poprzedni wpis mógł być nieco uspokajający, bo zobaczyliśmy, iż osoby trzecie nie są w stanie dostrzec szczegółowych informacji, takich jak treść oglądanych przez nas stron, ich dokładne adresy, pliki cookies albo podstawowe informacje o naszej przeglądarce.
Wszystko to dzięki powszechnie przyjętej szyfrowanej komunikacji przez HTTPS.

Uwaga

Mocno zachęcam, żeby czytać ten wpis na świeżo po poprzednim, dotyczącym HTTPS-a. Przedstawiam tam nieco nietypową analogię, w której szyfrowana komunikacja polega na tym, iż wymieniamy się otwartymi kłódkami, a potem przesyłamy sobie rzeczy w zamkniętych pancernych skrzynkach.

Ale oprócz samej treści wiadomości, zaszyfrowanej przez HTTPS, pozostają jeszcze metadane – ogólne informacje, które ujawniają, jakie strony odwiedzaliśmy. Na szczęście na nie również są sposoby.

Spis treści

  • O metadanych
  • Wykorzystanie VPN-a
  • Światowy marsz ku prywatności
    • Koniec z prośbami o weryfikację
    • Upychanie wielu osób pod jednym IP
    • ESNI – szyfrujemy dokładny adres
    • ECH – szyfrujemy prawie wszystko
  • Podsumowanie

O metadanych

Metadane to informacje wysyłane jawnie przy każdej internetowej interakcji. Nie zdradzą wprost, jaki konkretny wpis z bloga czytaliśmy, ale mówią bez owijania w bawełnę, iż weszliśmy na przykład na ciemnastrona.com.pl.

https://www.ciemnastrona.com.pl/internetowa_inwigilacja/2022/08/13/https

Dokładny adres poprzedniego wpisu. Operator telekomunikacyjny nie widzi tego, co na czerwono, ale widzi domenę.

Takie dane mógłby odczytać każdy, kto ma kontrolę nad routerem, przez który łączymy się z internetem.

Jedna grupa to podglądacze amatorscy; na przykład znudzony studenciak na śmieciówce sprawdzający, co odwiedza jakiś klient przez kawiarnianego hotspota.
Ich możliwości nie są zbyt wielkie – widzą jedynie nazwy tych stron, które odwiedzimy, sącząc u nich kawę. W najgorszym razie zapamiętają sobie kogoś. “O, to typ(-iara), co ogląda u nas niegrzeczne stronki”.

Gorsi są podglądacze wytrawni – jak dostawcy usług internetowych (ang. ISP, Internet Service Provider), od których mamy naszego routera domowego. Praktycznie codziennie korzystamy z ich infrastruktury, więc mogą zebrać pokaźną kolekcję odwiedzanych przez nas stron, a tym samym naszych zwyczajów i zachowań.

Potem, jeżeli chcą, przekazują te dane policji. „Delikwent często wchodzi na strony antyrządowe? Obniżymy mu ranking społeczny”.
Albo sprzedają je reklamodawcom. Co kto woli.

Z różnych powodów moglibyśmy chcieć ukryć przed nimi, jakie strony odwiedzamy. Jak to zrobić?

Wykorzystanie VPN-a

Firmy telekomunikacyjne to nie Sauron, nie są wszechwidzące. Zwykle ich wzrok sięga jedynie do pierwszego podmiotu, z którym się skontaktujemy.

A co, jeżeli tym podmiotem będzie zaufany pośrednik? Jak na przykład operator VPN-a?

W takim wypadku telekom zobaczy jedynie, iż wymieniliśmy się z pośrednikiem swoimi kłódkami, a potem przesyłamy sobie wiele rzeczy w zamkniętych pancernych skrzynkach.
Nie będzie natomiast widział, co pośrednik z tych pudełek wyjmuje i do kogo przesyła później nasze wiadomości. Straci nas z oczu.

Szyfrowana komunikacja z udziałem VPN-a. Dla czytelności przeskoczyłem etap przesyłania sobie kłódek, ale oczywiście również ma tu miejsce.
Pudło w górnej części jest półprzezroczyste tylko na schemacie; nikt nie podejrzy jego zawartości.
Źródło ikon: Flaticon.

Rozwiązanie idealne? Niekoniecznie.
O VPN-ach wspomniałem już w swoim wpisie o adresach IP. Byłem wtedy nieco sceptyczny i przez cały czas to podtrzymuję. VPN-y są bowiem znane z reklam, w których opowiadają o sobie niestworzone historie (link do YT). Podkreślając w szczególności, iż są niezbędną częścią cyfrowego życia i iż chronią nas przed hakerami.

Ochronę przed podglądaczami i podszywaczami zapewnia nam już HTTPS. VPN-y nie dają pod tym względem zbyt wiele wartości dodanej, zaś wrogi hotspot przechwytujący nasze hasła do banku jest trochę jak czarna wołga – taki straszak na niegrzeczne dzieci.

Fakt faktem, nieco chronią metadane przed wzrokiem telekomów. Ale nie przed swoim własnym. Korzystanie z VPN-ów oznacza po prostu przeniesienie zaufania z jednego wielkiego podmiotu na inny.
Telekom nie zobaczy, iż odwiedzaliśmy domenę ciemnastrona.com.pl, tylko iż odwiedzaliśmy naszego VPN-a. Ale już VPN tę domenę zobaczy. A czy możemy mu ufać? Kwestia do przemyślenia.

Tym niemniej sposób działa. jeżeli dostawca internetu jest w naszych oczach zagrożeniem pewnym i najgorszym, zaś VPN odległym i teoretycznym, to jak najbardziej można owego VPN-a odpalić.
O ile możemy – świat zna bowiem kraje, które wlepiają kary za korzystanie z VPN-a. Często te same, które mają wścibskich operatorów sieci.

Nie polecę tutaj żadnego konkretnego operatora, zachęcam do samodzielnej lektury.

Oczywiście zamiast VPN-a można użyć też innych sieciowych pośredników, jak przeglądarka Tor Browser. Mając na uwadze, iż bywa dość powolna i czasem blokowana przez nadgorliwe strony.

Ogólnie jedynym warunkiem jest to, żeby wszystkie rzeczy wysyłane i odbierane przez nas były szyfrowane i przechodziły przez co najmniej jeden obcy serwer. W ten sposób telekomy nie podejrzą, z kim piszemy.

A czy jest jakiś sposób na to, żeby podczas codziennego przeglądania internetu ochronić się przed wzrokiem telekomów, ale bez korzystania z pośredników? Tak! Ale to sam front walki o internetową prywatność.

Zainteresowanych zapraszam do dalszej lektury :smile:

Światowy marsz ku prywatności

Zacznijmy od tego, iż sami kilka tu zdziałamy, bo wysyłanie pewnych informacji jest integralną częścią internetu. Gdybyśmy ustawili w swoim komputerze, żeby ich nie wysyłało, to po prostu by nam się przestały ładować strony. Taki odpowiednik wysyłania listów bez adresu.

Do tanga trzeba dwojga. Nas i naszych adresatów.

Poprawienie prywatności wymaga zmian w protokołach – zasadach działania internetu. Niektóre organizacje, jak Mozilla i Cloudflare, podjęły obiecujące działania w kierunku ukrywania metadanych. Uszczelnili w tym celu interakcje, podczas których ujawniamy, jaką domenę odwiedzamy:

  1. Nazwa domeny wysyłana do DNS-a
    (na razie nie musimy wiedzieć, co to takiego, omawiam go w następnym wpisie; zapamiętajmy tylko, iż jest na początku).
  2. Nazwa bezpośrednio na rzeczach wysyłanych odwiedzanej stronie
    (albo adres IP, jeżeli jednoznacznie ją ujawnia).
  3. Nazwa umieszczona na liście do certyfikatora, z prośbą o weryfikację kłódki.

Trzeba ukryć wszystkie te informacje, żeby całkiem zataić, jakie strony odwiedzamy. Gdyby choć jedna pozostała widoczna, to nasz operator telekomunikacyjny prawdopodobnie ją podejrzy.

Kwestie DNS-owe opisałem w odrębnym wpisie, więc nie poświęcimy im tu uwagi. Skupmy się na pozostałych dwóch. Zaczynając od kwestii weryfikacji kłódek, bo adekwatnie rozwiązała się sama.

Koniec z prośbami o weryfikację

Wróćmy do naszej przeciętnej szyfrowanej interakcji. W normalnym przypadku przebiega następująco:

  1. Wysyłamy swojemu adresatowi – dajmy na to pani Y – zaproszenie do bezpiecznej korespondencji.
  2. W odpowiedzi otrzymujemy otwartą kłódkę.
  3. Wysyłamy dokładne informacje o tej kłódce do producenta, z pytaniem czy to na pewno kłódka pani Y.
  4. Otrzymujemy (oby!) odpowiedź twierdzącą.
  5. Od tej pory korespondujemy z panią Y, wysyłając sobie pudełka zamknięte na kłódki.

Dawno nie było akronimów, więc rzucę paroma – punkty 3 i 4, czyli ogólnie komunikację z „producentem” w celu potwierdzenia wiarygodności kłódki, określamy skrótem OCSP (Online Certificate Status Protocol).

Z punktu widzenia prywatności ta wymiana jest problematyczna. Pytając, czy kłódka na pewno należy do jakiejś osoby, musimy tę osobę wskazać. „Czy to na pewno kłódka od ciemnastrona.com.pl?”. Wszystko to na widoku albo łatwe do ustalenia.

Na szczęście ten problem już został w znacznej mierze rozwiązany; niejako przy okazji poprawiania wydajności.

Wyobraźcie to sobie – za każdym razem, kiedy ktoś otrzymał od jakiejś strony kłódkę, słał do certyfikatora pytanie o jej autentyczność. A przecież wymiany odbywały się non stop.
Serwery trzeszczały od obciążenia, aż „producenci kłódek” nie wytrzymali. Udostępnili metodę, dzięki której nie musimy się z nimi kontaktować. Przerzucili odpowiedzialność na właścicieli stronek.

Metoda nosi nazwę OCSP stapling. Chcąc wyrobić dla siebie kłódkę, stronki muszą regularnie zamawiać od producenta cyfrowy odpowiednik naklejek lub hologramów. Same je potem umieszczają na kłódkach.

Taki hologram wskazuje producenta, od którego dana kłódka pochodzi (a choćby cały łańcuszek firm, które ją stworzyły). Ma też określoną datę ważności – wyobraźmy sobie, iż wygląda to dokładnie jak te hologramy naklejane co semestr na odwrocie legitymacji studenckiej. I jest prawie niemożliwy do podrobienia.

Przykładowa kłódka z firmowym hologramem i datą ważności.

Tylko iż odejście od kontaktu z certyfikatorem niesie za sobą zagwozdkę. Skąd nasza „poczta” (przeglądarka) ma teraz wiedzieć, iż ta rzecz naklejona na kłódkę to jego niepodrabialny hologram? A nie świstek, który jakiś podszywacz sobie nakleił dla uwiarygodnienia?
Wie, bo trzyma gdzieś u siebie zamkniętą listę zaufanych podmiotów. Porównuje z nią otrzymany hologram. jeżeli się zgadza, to znaczy iż kłódka pochodzi od tego, od kogo powinna.

Wątki poboczne

Słowa „zamknięta lista podmiotów” może budzić pewien niepokój, zwłaszcza jeżeli znacie moje podejście do centralizacji i skupiania władzy w rękach nielicznych. Istotnie, zależność całego internetu od wąskiego grona „producentów kłódek” to sprawa interesująca i do zbadania. Ale nie na ten wpis.
Jeśli chodzi o sprawę „presji” OCSP na serwery, to wyszła na tym tle interesująca aferka z firmą Apple. Kiedyś przez ich przeciążenie wyszło na jaw, iż każde uruchomienie dowolnego programu na Macu prowadziło do wysłania informacji do Apple.

Dzięki tej zmianie – przerzuceniu obowiązków na stronę nabywającą kłódki – pozbywamy się konieczności pisania z ich producentem. Uszczelniamy pierwszą z interakcji ujawniających, jaką stronę odwiedzamy.
Nowsze metody ochrony prywatności wymagają korzystania z metody TLS w wersji co najmniej 1.3. Brak kłopotliwych (dla prywatności) pytań o certyfikat mamy wtedy niejako w pakiecie.

Upychanie wielu osób pod jednym IP

Jedna rzecz z głowy, pozostała kwestia adresu IP naszego adresata. Który jest obowiązkowy i potrafi całkiem sporo ujawniać.

W najbardziej skrajnym przypadku mamy stronkę pod stałym i niezmiennym adresem IP. To przypadek beznadziejny. Gdzieś w końcu musimy umieścić adres, żeby nasze przesyłki dotarły na miejsce. Telekom ten adres odczyta, a adres wprost identyfikuje stronę.

Żeby nie ujawniać jej nazwy, musielibyśmy skorzystać z pośrednika. Innej rady nie ma.

Nieco lepszą sytuację mamy wtedy, kiedy pod jednym adresem IP znajduje się jak najwięcej różnych odbiorców. Wtedy sam adres IP nikogo jednoznacznie nie ujawnia.
Analogia: adresując list do jakiegoś domu jednorodzinnego, wystarczy napisać ulicę i numer domu. Jednoznacznie wskazuje to adresata. Ale w przypadku mieszkania w bloku trzeba dodać jeszcze numer lokalu, bo w bloku jest wiele mieszkań.

Wyobraźmy sobie, iż mamy jakieś wielkie strzeżone osiedle. Ulica Zielona 4. Firma, dajmy na to, Cloudflare Development. Cała korespondencja do mieszkańców trafia do zaufanego osiedlowego stróża, który następnie roznosi listy i paczki pod konkretne mieszkania.

Ale my chcemy napisać do Nowaka z mieszkania 20, a nie do jakiegoś Kowalskiego czy innego z tysięcy lokatorów! Gdzieś to 20 dla stróża trzeba umieścić.

Jest to źródłem pewnych problemów i zaraz do tego przejdziemy. Na chwilę obecną zapamiętajmy tylko, iż lepszą sytuacją jest dla nas wiele różnych stron pod jednym adresem IP. „Lepiej pisać z ludźmi z blokowisk, niż z domów jednorodzinnych”.

Tylko iż blokowiska, choć lepsze z punktu widzenia naszej prywatności, siłą rzeczy oznaczają wepchnięcie ludzi w szpony branży deweloperskiej.
Podobnie jest z internetem – żeby być częścią wielkiej zbiorowości, strony musiałyby być hostowane przez dużych graczy, jak Cloudflare. Zganiając wszystkich w jedno miejsce, umacniamy kontrolę giganta. Widać zatem pewien dylemat między prywatnością a centralizacją.

Jest to jednak wątek poboczny. Warto o tym wiedzieć, ale tutaj skupiamy się stricte na prywatności. Dlatego przejdźmy dalej.

ESNI – szyfrujemy dokładny adres

Jak pisałem, gdzieś trzeba umieścić nasz „numer lokalu”. Informację dla stróża mówiącą, do którego z wielu lokatorów piszemy.

W przypadku komputerów taka informacja, wskazująca konkretną domenę spośród wielu, nosi nazwę SNI (Server Name Indication). I jest – tak, zgadliście – publicznie widoczna!

Może się zatem wydawać, iż upychanie wielu stron pod jednym IP jest bezcelowe. Ale spokojnie – to po prostu warunek konieczny, ale nie wystarczający. W jaki sposób można załatać tę lukę i ukryć SNI?

Odpowiedź: zastosować ESNI (E od Encrypted, szyfrowane), metodę fajnie opisaną na blogu Cloudflare.

Wyobraźmy sobie, iż osiedlowy stróż postanawia zadbać o prywatność nadawców. Zostawia w naszym tajemniczym DNS-ie – którego i tak każdy musi odwiedzić po drodze – małą otwartą kłódkę (inną niż ta nasza czy naszego adresata). Kluczyk do niej oczywiście trzyma u siebie.

Korzystając z tej małej kłódki, zamykamy pudełeczko zawierające informację o SNI („dokładnym numerze mieszkania”). I przyczepiamy to do korespondencji, którą chcemy wysłać Nowakowi.

Kiedy stróż otrzyma nasz pakunek, widzi iż pudełko z ESNI jest zamknięte na jedną z jego kłódek. Więc bierze swój kluczyk ze stróżówki, otwiera pudełko i odczytuje, iż to dla Nowaka z mieszkania numer 20. Zanosi mu przesyłkę.

Reszta interakcji to już typowa szyfrowana korespondencja z Nowakiem. HTTPS-owe pancerne pudełka, tylko iż przekazywane przez stróża. Który nie ma możliwości zajrzeć do ich wnętrza, bo w końcu ma jedynie kluczyk do ESNI.

Przyznam się, iż nie ustaliłem dotąd, czy ESNI jest wysyłane w każdej interakcji, czy tylko na samym początku, a potem zostaje zastąpione przez jakiś wewnętrzny identyfikator odbiorcy. W każdym razie efekt ten sam: nazwa naszego odbiorcy zawsze będzie nieczytelna dla postronnych.

Z ESNI wiąże się pewien problem – wymaga stróża skorego do współpracy. Gotowego zostawić gdzieś swoją kłódkę i wiedzącego, iż może otwierać zamknięte nią rzeczy. Mówiąc językiem komputerowym: serwer, któremu coś wysyłamy, musi wspierać ESNI. Inaczej to wszystko nie zadziała.

Jeśli jednak trafimy na takiego stróża, to super. W ten sposób połączyliśmy ze sobą kilka rzeczy:

  • HTTPS zamiast HTTP (korespondencja szyfrowana zamiast zwykłej).
  • TLS wersję 1.3 (koniec ujawniania domeny podczas pisania z certyfikatorem).
  • Upychanie wielu stron pod jednym adresem IP.
  • …i na koniec szyfrowanie dokładnego adresu strony.

Można mocno zamieszać, otrzymując prywatność w sieci.
…Tylko iż nie. Brakuje nam jeszcze jednego kluczowego składnika, jakim jest DNS. Poza tym ESNI da się zastąpić jeszcze lepszym składnikiem.

Warto dodać, iż rozwiązania oparte na TLS 1.3 oraz ESNI są albo mają być blokowane przez naszych ulubionych autokratów, Chiny i Rosję.
Uważam to za całkiem dobrą reklamę tych rozwiązań :wink:

ECH – szyfrujemy prawie wszystko

ESNI, choć świetne jako koncepcja, miało parę słabości technicznych, których tu nie będę opisywał.

Ponadto SNI nie jest jedyną wrażliwą informacją (rozszerzeniem) wysyłaną na widoku; są też inne rozszerzenia, jak choćby ALPN. Polegający z grubsza na tym, iż wypisujemy swoje możliwości, żeby osoba z drugiej strony lepiej dobrała do nas sposób komunikacji. Coś jak tagi z kategorii „zainteresowania”. Co nieco o nas ujawniają.

Poza tym metadane nie są sprawą zamkniętą. Pojawiają się pomysły na nowe rozszerzenia, żeby nieco lepiej dopasować internet do współczesności. Niektóre z nich siłą rzeczy musiałyby zdradzać wrażliwe informacje.

Ograniczając się do chowania samego SNI i wysyłania reszty na widoku, projektanci internetu nieco by się ograniczali. Mogłoby się to skończyć pogonią za standardami, przypominającą bieg Achillesa za żółwiem. Dlatego postanowili zrobić coś radykalniejszego.

W jaki sposób można zapewnić prywatność wszystkim informacjom z pierwszego kontaktu, również tym nieznanym, które mogą zostać dodane dopiero w przyszłości? Ktoś wpadł na pomysł: „pójdźmy na całość! Zaszyfrujmy wszystko poza adresem IP!”.

Siłą rzeczy oznacza to rezygnację z ESNI – skoro do zamkniętego pudełka upychamy wszystko, łącznie z SNI, to nie ma potrzeby szyfrować go dwa razy.
Ale dzięki temu dostaniemy coś jeszcze mocniejszego. Encrypted Client Hello
(przypominam poprzedni wpis: client hello to pierwsza rzecz, jaką wysyłamy. Nasza prośba o szyfrowany kontakt).

Metoda działania jest taka sama jak przy ESNI. Najpierw pozyskujemy z ustalonej skrytki (DNS-a) kłódkę stróża odpowiedzialnego za roznoszenie przesyłek po swoim osiedlu. Używając jej, zamykamy w małym pudełku wszystkie informacje dodatkowe. SNI, ALPN oraz inne potworki.
A następnie wysyłamy to pudełko pod ogólny adres osiedla (adres IP), współdzielony przez wiele osób. Stróż odbiera przesyłkę, otwiera swoim kluczykiem, odczytuje nasze client hello (w tym dokładny adres mieszkania) i dostarcza resztę gdzie trzeba.

W ten sposób zredukowaliśmy do minimum informacje ujawniane osobom postronnym podczas korespondencji. Wszystkie, w tym te, o jakich jeszcze się nam nie śniło. Zaś ta jedna, którą ujawnić trzeba – adres IP – jest współdzielona przez wiele osób i mało co zdradza.

Bieżące sprawy związane z ECH można znaleźć na blogu Cloudflare.

Podsumowanie

Poczyniliśmy znaczne kroki w stronę zrozumienia zagrożeń „po drodze”, między nami a adresatami. Wliczając w to wszelkich podglądaczy, małych i dużych. Środki w naszym arsenale to przejście na szyfrowaną komunikację (HTTPS), rezygnacja z publicznego pisania w sprawie certyfikatów, upychanie wielu stron pod jednym IP, szyfrowanie choćby metadanych.

Gdy rozwiązania z tego wpisu się upowszechnią i zacznie je wspierać więcej firm od infrastruktury internetowej, to będą tak po prostu działały w tle, chroniąc przed wścibskimi oczami.
Natomiast gdyby adresat naszej korespondencji nie wspierał tych nowinek, możemy po prostu korzystać z VPN-ów i innych pośredników. Z zastrzeżeniem, iż wtedy to oni dostają nasze informacje zamiast telekomów.

Warto też przypomnieć, iż na naszej drodze nieraz pojawiał się dylemat między prywatnością a centralizacją.

Zyskaliśmy HTTPS – szyfrowaną i wygodną komunikację dla szerszej społeczności… Ale w tym celu przeglądarka musi polegać na nielicznych, zaufanych organizacjach uwierzytelniających.
Zyskujemy prywatność, kiedy odwiedzany przez nas adres IP zlewa się z tłumem… Ale najlepiej się to sprawdzi, kiedy mamy jedną organizację zrzeszającą wiele różnych stronek.

Takich dylematów będzie coraz więcej. Bowiem kształt internetu wcale nie zależy tak bardzo od szarych użytkowników. To bardziej oligarchia niż demokracja.

Poza tym ten wpis to zaledwie kolejny element układanki. „Łańcuch jest tak wytrzymały, jak jego najsłabsze ogniwo”.
A kiedy już wzmocniliśmy kwestie wokół HTTPS-a i metadanych, to słabym ogniwem pozostaje DNS, o którym dotąd wspominałem tylko ogólnikowo. „Książka telefoniczna internetu”, z którą często się kontaktujemy, odwiedzając nieznane nam strony.

No i muszę uprzedzić, iż choćby DNS nie domknie tematu – szczególnie wścibskie telekomy mogą analizować rozmiar przesyłanych rzeczy oraz czas ich przesłania.
Ale to sprawa dość niszowa, muszę jeszcze trochę doczytać w temacie. Zostawię ją na przyszłość, a zainteresowani mogą szukać pod hasłem traffic analysis.

Tymczasem czas załatać luki DNS-owe. Zapraszam do kolejnego wpisu! :smile:

Idź do oryginalnego materiału