Pełna anonimowość (prywatność) w sieci – to nie takie proste.
Na tej stronie używam ciasteczek, jako mechanizm pozwalający na logowanie oraz w celach statystycznych (analiza ruchu, popularności artykułów, etc.
Warto zrozumieć, przy okazji czym są słynne ciasteczka oraz że nawet ich brak (usuwanie ciasteczek) wcale nie oznacza anonimowości!
Poznasz i zrozumiesz różne techniki, które można wykorzystać do śledzenia (jeśli komuś na tym zależy).
Ciasteczka
Korzystasz z internetu, więc pewnie słyszałeś o tak zwanych ciasteczkach.
Zwłaszcza, że pojawił się wymóg informowania o ciasteczkach (dyrektywy unijne 2009/136/WE i 2009/140/WE oraz Ustawa o prawie telekomunikacyjnym Art. 173, 174 oraz Art. 209).
Wiele osób kojarzy sobie ciasteczka ze 'szpiegowaniem’ (utrata naszej prywatności).
Warto jednak wiedzieć, że bez nich – niemożliwe było by zalogowanie się na żadną stronę.
Śledzenie jest złe, ale gdybyś posiadał własną stronę również chciałbyś sledzić swoich użytkowników.
Dlaczego wszyscy chcą mie śledzić?
Wyobraź sobie: poświęcasz dużo czasu na tworzenie swojej własnej strony, jednak czy w ogóle ktoś to czyta?
Na te pytanie może odpowiedzieć śledzenie.
Dzięki temu wiesz ile osób korzysta z twojej strony/bloga.
Czy artykuły są ciekawe (ile czasu spędzają osoby nad artykułami).
Czy osoby wracają na twoją stronę by doczytać, czy już nigdy nie wracają?
Czy zaciekawiłeś wystarczajaco do przeczytania kolejnego artykułu?
Czy jest artykuł, który cieszy się dużą popularnością (warto szczegółnie o niego zadbać – odświeżyć co jakiś czas).
Wyobraź sobie: masz genialny produkt – nikt go nie kupuje ponieważ ludzie nie wiedzą, że coś takiego istnieje.
W końcu inwestujesz w reklamę. A produkt nadal kiepsko się sprzedaje.
Dlaczego?
Bez śledzenia nic nie wiesz.
Być może reklama nie została zrealizowana (mimo iż została zlecona).
Może wypadła naprawdę świetnie i ludzie trafili na twoją stronę. Jednak twoja strona mogła być niezrozumiała, nieczytelna, nie przedstawiła wyjątkowych wartości twojego produktu – dlatego nikt nie kupił, tak genialnego produktu.
Kolejna sprawa, to im więcej wiesz o swoim kliencie, tym bardziej możesz dopasować się do jego potrzeb!
Na skróty
Ciasteczka są niezbędnym elementem współczesnego internetu.
Bez nich niemożliwe było by zalogowanie się do żadnej usługi w sieci (np. maila w przeglądarce).
Ciasteczka, nie są jedynym elementem, który może zdradzić twoją historię (co robiłeś w sieci).
Jeśli uważasz, że usunięcie ciasteczek rozwiąże problem prywatności – to jesteś w błędzie!
Trochę teorii
Wchodząc na dowolną stronę, z technicznego punktu widzenia korzystasz z protokołu HTTP(S).
HTTPS w odróżnieniu od HTTP, dodatkowo szyfruje komunikację między twoim komputerem a serwerem.
Protokół jest to po prostu ustalony sposób komunikacji między klientem (twoim komputerem), a serwerem (komputerem, który pracuje dla ciebie – usługuje – udostępnia Ci dane).
HTTP (ang. Hypertext Transfer Protocol) – protokół przesyłania dokumentów hipertekstowych to protokół sieci WWW (ang. World Wide Web).
…
Jest zaliczany do protokołów bezstanowych (ang. stateless) z racji tego, że nie zachowuje żadnych informacji o poprzednich transakcjach z klientem (po zakończeniu transakcji wszystko „przepada”).
W pierwotnym założeniu standard HTTP, służył do pobierania plików, które mogły zawierać stronę internetową.
Pod danym adresem, każdy otrzymywał ten sam plik.
Jednak współcześnie, pod danym adresem może znajdować się treść unikalna dla ciebie.
Gdy korzystasz z poczty w przeglądarce internetowej to pod adresem np. gmail.com czy poczta.wp.pl widzisz wyłącznie swoje maile. Zaś sąsiad wchodząc pod ten sam adres już nie zobaczy twoich mail.
By było to możliwe, powstały tak zwane ciasteczka
Idea jest prosta.
- Serwer może poprosić o zapisanie, krótkiego tekstu po stronie klienta (twojej przeglądarki) – tzw. ciasteczko (cookie).
Ten tekst będzie służył do identyfikacji klienta.
Taki tekst zawiera coś w stylu: „zalogowany jako: Jan Kowalski”. - Przy kolejnym zapytaniu do serwera, należy załączyć wspomnianą notatkę.
Dzięki takiej informacji serwer będzie wiedział, że powinien wyświetlić treść dla Jana Kowalskiego.
Oczywiście w praktyce ciasteczka nie zawierają treści typu: „Jan Kowalski”.
Gdyby tak było, to mógłbyś wysłać zapytanie do banku z załączoną notatką (ciasteczko): „Maciek Kowalski” – wtedy serwer przedstawił panel bankowy Maćka Kowalskiego i mógłbyś robić za niego przelewy.
Używanie numerów jak w dzienniku szkolnym (numer w dzienniku – imię i nazwisko) również nie jest najlepszym pomysłem.
Użycie takiej numeracji stanowiłoby jeszcze większe zagrożenie – by uzyskać dostęp do innego konta wystarczyło by użyć kolejnego numeru.
Dlatego w praktyce używa się długich alfanumerycznych ciągów (trudnych do zgadnięcia), które zmieniają się przy każdym logowaniu.
Na przykład 32 znaki alfanumeryczne (a-z + cyfry), dają mniej-więcej: 9 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 kombinacji!. Szukanie kolejnych numerów w takiej sytuacji odpada.
Gdyby ktoś się uparł, i chciałby przechwycić sesję (i zobaczyć to co widzi Jan Kowalski), to w najgorszym przyapadku musiał by sprawdzić wszystkie 9 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 kombinacji.
Nawet gdyby był w stanie sprawdzać 10 000 kombinacji w czasie jednej sekundy, to w ciągu roku byłby w stanie sprawdzić jedynie: 315 360 000 000 (a to zdecydowanie za wolno, poza tym do tego czasu ID sesji z pewnością się zmieni).
Próbę sprawdzania wszelkich możliwych opcji nazywa się atakiem siłowym (brute force).
Jednak zazwyczaj lepiej trochę pomyśleć niż robić coś na siłę.
Ciekawostka (generowanie ciągów, zgadywanie, liczby pseudo losowe):
Przykładowe zapytanie HTTP (uproszczone)
GET http://starthere.pl/
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36
ccept-Encoding: gzip, deflate, sdch
Accept-Language: pl,en-US;q=0.8,en;q=0.6
Cookie: sessionid=enplwxk0rt02fjm0kc0u63ohz9rla2cv
GET http://starthere.pl/
Oznacza podaj mi plik (treść strony): http://starthere.pl/,
poniżej tej linii znajdują się tak zwane nagłówki http.
Jest tam również słynne ciasteczko – cookie.
Cookie: sessionid=enplwxk0rt02fjm0kc0u63ohz9rla2cv
Gdy serwer otrzyma takie żądanie, sprawdza w tabelce z kim skojarzony jest taki ciąg.
Okazuje się, że ze mną i w takiej sytuacji może wyświetlić stronę spersonalizowaną – zawierającą dodatkowe opcje – np. dodawanie/edycję artykułów.
Przeglądarka ma obowiązek dołączyć ciasteczka do każdego żądania strony, obrazka, czy dowolnego innego pliku w ramach tej samej domeny.
Ciasteczka mnie śledzą
Ciasteczka w teorii działają w ramach tej samej strony.
Remarketing
Jednak gdy szukasz jakiegoś produktu w internecie, to chwilę później okazuje, że te same reklamy pojawiają się również w innych serwisach.
Jest to tak zwany remarketing.
Każda strona może zawierać np. obrazki które znajdują się np. na serwerze zewnętrznym.
Przeglądarka wysyłając żądanie do tego serwera zewnętrznego musi załączyć ciasteczka należące do tego serwera.
W praktyce wygląda to tak:
- Wchodzisz na stronę gdzie oglądasz prezent dla bliskiej ci osoby.
Strona informuje twoją przeglądarkę by zapisała krótką informację (ciasteczko). - Wchodzisz na inną jednak na niej znajduje się niewidoczny mały (zawierający jedną kropkę – 1 pixel) obrazek.
Ale przeglądarka pobierając ten obrazek wysyła ciasteczko.
Śledzenie bez ciasteczek
Mechanizm cookie, jest podstawowym (oficjalnym) mechanizmem wykorzystywanym do identyfikacji użytkownika.
Wbudowane technologie
Sieć web bardzo dynamicznie rozwija się od lat. Powstało wiele technologii, które umożliwiają zapisanie danych po stronie użytkownika.
Mogłoby się wydawać, że jest to jedyna możliwość śledzenia użytkownika, jednak oczywiście tak nie jest.
Zatem jeśli ktoś się uprze to istnieje wiele sposobów by zidentyfikować daną osobę.
Stare technologie (kiedyś)
Być może słyszałeś kiedyś o technologii flash np. w kontekście filmów czy gier online (obecnie się od niej odchodzi).
Technologia również zawiera swoje 'cookie’: jest to ’Local Shared Objects’.
A może czasem masz zainstalowaną Jave?
Java również pozwala na zapiswanie danych po stronie klienta (Java JNLP PersistenceService).
A może Silverlight – w tym przypadku mamy (Silverlight Isolated Storage).
Internet Explorer (userData storage)
Google Gears
Wspomniane technologie działają jako dodatek do przeglądarki.
Zatem są to osobne programy które mogą być współdzielone pomiędzy różne przeglądarki.
Zatem nieraz możliwe było zidentyfikowanie osoby która zalogowała się – uwaga w innej przeglądarce na tym samym komputerze !?!?!?!?!!!!
Kiedyś można było to sprawdzić na: http://samy.pl/evercookie/
Nikt jednak nie jest idealny (błędy)
Gdy zuzia wyjdzie z piaskownicy – może robić co chce! Tak samo bywa w przypadku oprogramowania.
Istnieją różne podatności (błędy), które pozwalają uciec z piaskownicy
Np. w JAVIE jakiś czas temu można było wykorzystać bład: „Java CVE-2013-0422” (applet sandbox escaping).
A w takiej sytuacji można zapisać swoje własne ciasteczka i nie tylko 🙂
Nowe technologie (aktualnie)
Aktualnie prawie już się nie korzysta Flasha, Silverlighta, Javy, ponieważ podobne możliwości daje współczesny standard HTML5.
Poza tym wspomniane technologie – zwłaszcza flash stanowił bardzo duże zagrożenie bezpieczeństwa ze względu na dużą ilość błędów. Natomiast standard HTML5 jest wspierany przez wszystkie współczesne przeglądarki.
Tak się składa, że HTML5 również pozwala na zapisanie pewnych danych na komputerze użytkownika, które potem mogą posłużyć do identyfikacji klienta.
W HTML5 mamy:
- HTML5 Session Storage
- HTML5 Local Storage
- HTML5 Global Storage
- HTML5 Database Storage via SQLite
- HTML5 IndexedDB
Ciekawe wykorzystanie możliwośći
Kolorowy obrazek
Wyobraź sobie, że wchodząc na stronę, twoja przeglądarka pobiera obrazek.
Jednak tak się składa, że ten obrazek jest unikalny dla ciebie (gdzie w postaci kolorów zakodowane jest twoje ID).
Jeśli usuniesz ciasteczko.
To aplikacja może odtworzyć twoje ID po przez odczytanie obrazka, który został zapisany w pamięci twojej przeglądarki.
Technologia HTML5 w obiekcjie Canvas pozwala odczytywać wartości kolorów piksel po pikselu (kropka po kropce), to zaś pozwala na zdekodowanie wcześniej zakodowanego ID. (Storing cookies in RGB values of auto-generated, force-cached PNGs using tag to read pixels (cookies) back out)
Historia odwiedzonych stron
Czy zauważyłeś, że klikając w link na stronie, często zmienia on kolor (dzięki czemu widzisz, że dana strona została odwiedzona).
A teraz wyobraź sobie, że wchodząc na stronę system automatycznie generuje wiele linków (unikalnych dla ciebie) i wchodzi na nie.
W takiej sytuacji gdy usuniesz plik cookie – aplikacja może sprawdzić kolor linków które zostały kliknięte i w ten sposób odtworzyć twój unikalny kod 🙂 (Storing cookies in Web History)
Sposobów jest więcej:
Czy usuwanie ciasteczek chroni mnie przed śledzeniem?
Tak i nie.
Musisz jednak wiedzieć, że istnieje wiele technologii pozwalających zapamiętać i skojarzyć twój komputer z tym co robiłeś w sieci.
Kilka przykładowych sposbów:
- Storing cookies in HTTP ETags
- Storing cookies in Web cache
- HTTP Strict Transport Security (HSTS) Pinning
- window.name caching
- Caching in HTTP Authentication
- Using Java to produce a unique key based off of NIC info
- TLS Session Resumption Identifiers/Tickets (works in Incognito mode)
- Generating HTTP Public Key Pinning (HPKP) certificates per user
Współczesne podejście (to się już dzieje)
Odcisk palca – Fingerprint
Generowanie unikalnego ID twojego urządzenia/przeglądarki.
Jak generuje się odcisk palca?
Generowanie odcisku palca, to zbieranie różnych unikalnych cech.
Gra polega na określeniu pewnych charakterystycznych cech.
Jedna cecha nie jest wytarczająca do określenia wybranej osoby, ale zbiór tych cech już tak.
Jakie unikalne cechy może zebrać przeglądarka:
- Unikalne właściwości karty graficznej (przesuniecie pixela, inny odcień, włączone / wyłączone wygładzanie – a to wpływa na wygląd docelowgo obrazka)
- Unikalne czcionki – jeśli zainstalowałeś jakąkolwiek czcionkę to już masz dodatkowy element, który może cię różnić od innych przeglądających strony.
- Unikalna nazwa przeglądarki/wersja (nagłówek 'user agent’).
- System operacyjny (jaki windows 7/8/10/ ubuntu, …?).
- Wybrany język (przeglądarka wysyła informacje o twoich preferencjach językowych).
- System kodowania znaków – jaki? (nagłówek 'encoding’),
- Akceptowane formaty (nagłówek 'Accept’)
np.Accept: text/html Accept: image/* Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8
- Rozdzielczość ekranu i głebia koloru.
- Ustawienia połączenia (nagłówek 'connection’)
-
Connection: keep-alive Connection: close
- Ustawienia strefy czasowej (timezone).
- Obecność AdBlock’a.
- Ustawienia „Do Not Track” (Tak / Nie / Brak informacji).
- Ciasteczka (włączone / wyłączone).
- Local storage (włączone / wyłączone).
- Session storage (włączone / wyłączone).
- Lista dodatków do przeglądarki.
Dodatkowo można narysować obrazek w elemencie Canvas (HTML5) i wyłapać wszelkie różnice.
Warto również narysowac obrazek przy pomocy WebGL (gdzie również można wyłapać różnice).
Zobacz:
- https://github.com/Valve/fingerprintjs2
- http://valve.github.io/fingerprintjs2/
- https://amiunique.org/
- https://panopticlick.eff.org
+ UserAgent
+ IP address
+ HTTP headers sent to the server
+ UserAgent reported by navigator object
+ Browser plugin details
+ Date and time information
+ Navigator language
+ Screen resolution
+ Color and pixel depth
+ System fonts
+ Cookie enabled
+ Java enabled
+ DoNotTrack enabled
+ Mime types
+ Math constants
+ IP as reported by flash to the server (it ignores proxy settings).
+ If accessibility is enabled.
+ Vidio driver compatibily with Flash Player.
+ Locales avialable in the system.
+ Cameras information including their name, bandwidth.
+ Microphones information including their codecs, gain, silence level, noise suppression level, and more.
+ If DRM is supported.
+ If there is an accelerometer enabled.
+ If Flash’s security settings are working in stricter (aka “exact”) mode.
+ If there are virtual and physical keyboards.
+ The default mouse cursor mode.
+ If Flash context menu APIs are available.
+ The list of fonts as reported by Flash.
+ If Flash Local Shared Storage is available.
+ Information about GPU video acceleration capabilities.
+ If multitouch is enabled, how much touchpoints and which gestures does it support.
+ CPU architecture.
+ Flash player’s version, manufacturer and debugging options information.
+ The system language as reported by Flash.
+ The OS and its version as reported by Flash.
+ The screen size, resoluction, color depth and pixel density as reported by Flash.
+ Video and audio codecs information.
Czy to tylko ciekawostka?
Nie – to się już dzieje.
Jednak z większych firm marketingowych domyślnie korzysta z odcisków do identyfikacji użytkowników.
http://www.tradedoubler.com/pl/technologia/tracking/tracking-bez-plikow-cookie/
źródło: http://www.tradedoubler.com/pl/technologia/tracking/tracking-bez-plikow-cookie/
Usuniesz ciasteczko? W tym przypadku, to już nie pomoże.
Kwestię prywatności w sieci omówię za jakiś czas w osobnym artykule (VPN, sieci TOR, jak możemy zdradzić przypadkiem naszą tożsamość, etc).
Czy to wszystko?
Nowe pomysły by zastąpić ciasteczka.
Technologia Google: FLoC
polega na tworzeniu specjalnego identyfikatora, takiego, że
grupa osób o podobnych zainteresowaniach (na podstawie historii przeglądanych stron)
będzie mięć ten sam identyfikator.
Zatem taki identyfikator przedstawia twoje zainteresowania!
Taki identyfikator ma być widoczny dla wszystkich!
W związku z tym, że na podstawie takiego identyfikatora
wiadomo czym się interesujesz!
Google jednak twierdzi, że chrome nie utworzy grup, które uzna
za wrażliwe (treści medyczne, polityczne, religijne,…)
Więcej w papierze technicznym.
Później reklmodawca wiedząc, że grupy np. 1545, 4556, 9922,.. to osoby które odwiedzaja strony o tematyce około porodowej. To wiadomo, że można Cię bombardować np. reklamami pampersów, kremów, itd.
Więcej o FLoC: https://blog.google/products/chrome/privacy-sustainability-and-the-importance-of-and/
Więcej informacji znajdziesz na: AmIFLoCed.org
Jak wyłączyć FLoC?
W chrome (w chwili pisania) można wyłaczyć jedynie przez wyłaczenie „Third party cookies”.
Nie jest to najlepzym rozwiązaniem.
Możesz też użyć innych przeglądarek opartych na chromium Vivaldi, Edge, Brave, …