Prywatność: Cała prawda o ciasteczkach

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!

Reklama

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.

Sieć web jest pełna powiązań (linków)


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").

https://pl.wikipedia.org/wiki/Hypertext_Transfer_Protocol

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.

 

Dzięki ciasteczkom, możesz się zalogować i zobaczyć swoje maile.
Bez nich serwer nie wiedział by, że ty - to ty.

 

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.
     

Idea ciasteczek, trochę przypomina szkołę i dziennik.
W jednej z klas, wiadomo, że pod numerem 12 jest Maciek Kowalski, a pod 13 Maja Nowak.

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łę.

Reklama


Ciekawostka (generowanie ciągów, zgadywanie, liczby pseudo losowe):

Różne systemy generują ten ciąg w różny sposób.
Jeśli wiesz w jaki, może okazać się, ze wcale nie musisz sprawdzać wszystkich opcji.

Np. Jeśli system używa aktualnej daty + kilka znaków - wtedy nie ma sensu sprawdzać np ciagów: 1410-07-15___, ponieważ jest to mało prawdopodobne że w czasie bitwy pod Grunwaldem ktoś logował się do bankowości elektronicznej.

Jest to przykład trochę przesadzony.
Jednak musisz wiedzieć, że komputer jest konkretny i nie rozumie pojęcia 'wymyśl jakąś liczbę losową'.
Dlatego komputery generują liczby pseudo losowe (według określonego wzoru) (ang. pseudo-random number generator /  PRNG) (więcej na wikipedi).

Wzór jest bardziej złożony, ale załóżmy, że jest to: n*2

Jak wygląda generowanie liczb losowych.

Zacznijmy od 1  - liczbą losową będzie.. uwaga: 2,

Kolejną liczbą losową będzie (wcześniej mieliśmy 2, to 2*2=4): 4,

kolejną: 8, 16, 32, 64, 128, ...

Zatem ciąg jest w pełni przewidywalny!

natomiast zgadywanie można utrudnić nie zaczynając od 1, a od innej 'losowej lizby' - np. od aktualnego czasu (godziny, minuty, sekundy).
Punktem startowym, nazywa się ziarnem (and seed).

Jeśli ktoś nie pomyślał i generuje liczby zawsze od tej samej liczby - to jest to bardzo duże zagrożenie (bo łatwo można zgadnać).

Sam generator również może być kiepskiej jakości może być cykliczny (wtedy tylko określony podzbiór liczb się powtarza).
Warto wiedzieć, że nawet sprzetowe generatory mogą zostać ogłupione na etapie produkcji.

 

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.

Jeśli ktoś bardzo chciałby cię wytropić (jak na polowaniu), to usunięcie ciasteczek nie pomoże.
 

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/

Dziecko w piaskownicy jest bezpieczne. Wiemy z jakich narzędzi może korzystać.
Poza piaskownicą może znaleźć sie kamień, ostry nóż i wiele innych niebezpiecznych obiektów.
Podobnie w Informatyce - czasem zamyka się programy w piaskownicy (ang. sandbox), by ograniczyć ryzyko, że coś komuś się stanie. Trzeba jednak zadbać by dziecko/program pozostało w piaskownicy.

Reklama

Nikt jednak nie jest idealny (błędy)

 

 

Mama pilnuje, by Zuzia bawiła się w piaskownicy.
Uwielbia ona jednak buldożki francuzkie - zawsze o nich marzyła.
Gdy tylko zobaczy buldożka, musi choć przez chwilę się z nim pobawić.
Gdy bawi się z buldożkiem, pod wpływem emocji zapomina że przecież pilnuje mała Zuzię by została w piaskownicy. 

 

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)

Reklama


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.

Generowanie odcisku przypomina to trocę grę: Zgadnij kto to? (ang. Guess who?)

 

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.

Czy wybrana  osoba jest kobietą: Tak/Nie?

Czy wybrana osoba nosi czapkę: Tak/Nie?

Czy wybrana osoba posiada brodę: Tak/Nie?

Czy wybrana osoba ma siwe włosy: Tak/Nie?

 

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:

Reklama

Jeden z systemów sprawdza:

Information collected:

    + 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.

To już standard.

 

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).

 

 

 

 

Uwaga: Prawie wszystkie artykuły cały czas aktualizuję :) Możesz spotkać: literówki, niedokończone zdania itp. Najpierw jakoś potem jakość. Wszelkie uwagi są mile widziane!
Pomóż innym - Podziel się - Udostępnij, to takie proste.

Ciekawe?
Bądź na bierząco!
Polub StartHerePL: InfoTechnologia
Dodatkowo zobacz inne kategorie
Polub StartHerePL: Zdrowie
Polub StartHerePL: Biznes

Nie masz konta na FB?
Pomóż - Wsparcie - Darowizna?

Przygotowanie artykułów zajmuje dużo czasu, do tego dochodzą koszty m.in. serwera.
Dlatego wszelkie darowizny są mile widziane - każda złotówka się liczy!

PayPal (możliwość płatności kartą):
Konto

mBank: 81 1140 2004 0000 3902 7604 5817

Krypto

LTC: LZqTnSMxjEtJpT5VttKg8339gWJvig9rVE

ETH: 0x725F98e3eB04fbaC171410160F22a6cB95e26151 (duże prowizje)

BTC: 1E5Nk23zb7kohtX1tPNLiVyiRAjZxbuXr7 (bardzo duże prowizje)

Inne formy pomocy:

Kupując książki za pomocą porównywarki cen ksiązek (otrzymam 3-4% od ceny książki czyli ~1 zł).

Polub / Udostępnij