Strona główna

Kronika zasadnego szaleństwa

Przeszło miesiąc temu przestraszyłem się, że klawiatura w telefonie mnie śledzi.

Miesiąc później już wiem, że to prawda.

Owładnięty nagłą obsesją na punkcie swojej prywatności, przesiadywałem na subredditach poświęconych otwartemu oprogramowaniu i walce z cyfrowymi korporacjami. Nocami pisałem (nieskutecznie) programy do analizy logów danych wysyłanych do sieci z mojego telefonu, po omacku próbowałem rozszyfrowywać poszczególne pakiety i prawie po raz kolejny zainstalowałem Linuksa.

Pomny tego doświadczenia, ostrzegam: czytasz dalej na własną odpowiedzialność!

Kiedy mówię o tym, że bałem się, że klawiatura w telefonie mnie śledzi, chodzi mi o aplikację, która pozwala wpisywać tekst na ekranie dotykowym. Najczęściej na telefonach z Androidem – tylko o tym systemie będę tu pisał – zainstalowana jest Klawiatura Samsung, Microsoft SwiftKey albo Gboard.

Szczególnie podejrzana wydawała mi się ta ostatnia, bo jej dostawcą jest Google – korporacja, która swój interes zbudowała na zbieraniu danych o użytkownikach poprzez swoje udostępniane nieodpłatnie aplikacje.

O pomoc w znalezieniu odpowiedzi na pytanie, czy moja klawiatura istotnie mnie śledzi, poprosiłem użytkowników subredditów poświęconych prywatności w sieci i wolnemu oprogramowaniu (r/privacy, r/fossdroid, r/degoogle). Ich odpowiedzi były w zasadzie jednoznaczne: oczywiście, że klawiatura mnie śledzi. Dowodów było jednak niewiele, większości komentujących wystarczyło wnioskowanie z przesłanek:

  1. Dostawcą Gboard jest Google, a więc należy domniemywać, że śledzi wszystko, co robisz za pomocą ich aplikacji.
  2. Domyślne klawiatury na Androidzie to zamknięte oprogramowanie (przeciwieństwo open source – oprogramowania z otwartym źródłem), a skoro nie możemy przejrzeć ich kodów źródłowych, to należy zakładać najgorsze.

Biorąc pod uwagę, jakie rzeczy dało się przeczytać o cyfrowych korporacjach w ciągu ostatniej dekady, rozsądne wydaje się zakładać najgorsze. Z drugiej strony – pomyślałem – może redditowi fani wolnego oprogramowania są nazbyt fanatyczni i może nawet Google zdarzyło się wypuścić program, który nie śledzi użytkowników?

Trafiły się jednak w tych redditowych dyskusjach także bardziej zniuansowane wypowiedzi.

Część użytkowników poleciła mi zainstalowanie programu, który pozwoliłby mi analizować ruch internetowy z aplikacji zainstalowanych w moim telefonie. Za jego pomocą mógłbym sam sprawdzić, jakie informacje moja klawiatura wysyła w świat.

Znaleźli się jednak i tacy, którzy linkowali pracę magisterską Kamila Przepiórowskiego obronioną w 2022 r. na Trinity College w Dublinie zatytułowaną Jak prywatne są klawiatury na Androidzie (ang. How Private Are Android Keyboards).

Jak zhackować własny telefon

W swojej magisterce Przepiórowski opisuje eksperymenty, które przeprowadził z zamiarem znalezienia odpowiedzi na pytanie, czy (a jeśli tak, to jak i w jakim stopniu) różne aplikacje klawiaturowe przekazują dane na temat naszych aktywności do serwerów swoich dostawców.

Ciekawe są już technikalia tych eksperymentów. Jeśli chcesz je pominąć, przejdź do kolejnego nagłówka.

W skrócie, Przepiórowski przeprowadził na swoim telefonie atak określany mianem man in the middle. Skonfigurował malutki komputerek Raspberry Pi w taki sposób, by działał jak punkt dostępu do internetu stojący na drodze pomiędzy telefonem a resztą sieci. Tyle że Raspberry przechwytywał i zapisywał wszystkie wędrujące tą drogą pakiety danych. I już było wiadomo, dokąd dane wędrują.

Ale żeby dowiedzieć się nie tylko dokąd idą pakiety, ale też co zawierają, trzeba było je rozszyfrować.

W normalnej sytuacji rozszyfrowywanie pakietów wygląda, w uproszczeniu, tak, że obie strony transmisji – nadawca i odbiorca – mają sekretne kody pozwalające rozszyfrować przesyłane wiadomości. W wypadku klawiatury Gboard jeden kod ma aplikacja na telefonie, a drugi – serwer Google. Nie mają go natomiast pośrednicy w tej transmisji, w tym punkt dostępowy do internetu, np. router albo Raspberry Przepiórowskiego.

Ilustracja z pracy magisterskiej Kamila Przepiórowskiego przedstawiająca schemat ataku man-in-the-middle przeprowadzonego w ramach eksperymentu na temat prywatności aplikacji klawiaturowych dostępnych na Androidzie.
Ilustracja z pracy magisterskiej Kamila Przepiórowskiego przedstawiająca schemat ataku man-in-the-middle przeprowadzonego w ramach eksperymentu na temat prywatności aplikacji klawiaturowych dostępnych na Androidzie.

Żeby rozszyfrować pakiety, Przepiórowski zainstalował w telefonie i punkcie dostępu własne „certyfikaty tożsamości”. Dzięki temu wiadomość wysyłana z telefonu, trafiając do Raspberry, brała go za adresata docelowego (czyli serwer Google) i pozwalała się rozszyfrować.

Czy Google czyta moje SMS-y?

Pokonawszy tę i kolejne warstwy zabezpieczeń, Przepiórowskiemu udało się poznać treść pakietów danych, które jego klawiatury przesyłały do zewnętrznych serwerów.

Gboard przekazywała między innymi informacje na temat:

  • urządzenia, na którym pisano;
  • Android ID – identyfikatora pozwalającego połączyć dane z klawiatury z danymi z innych aplikacji;
  • dokładnej daty i czasu wprowadzenia każdego słowa, jego długości i czasu spędzonego na wpisywaniu;
  • języka, w jakim wprowadzono dane słowo;
  • w przypadku wprowadzanych haseł, ich długość – w odróżnieniu od adresu e-mail – nie była raportowana.

Telefon był uprawniony do przesyłania tych danych, gdy użytkownik, w ustawieniach aplikacji, zgodził się na „dzielenie się statystykami użytkowania”.

W przypadku SwiftKey przesyłane były dane o:

  • systemie operacyjnym;
  • szczegółach sprzętu, na którym uruchamiana jest aplikacja, m.in. o ilości RAM, producencie urządzenia, procesorze;
  • Google advertising ID, który pozwala skutecznie zidentyfikować konkretne urządzenie i zestawić dane z klawiatury z danymi z innych aplikacji;
  • nazwie aplikacji, w której wprowadzany był tekst;
  • liczbie wprowadzanych słów;
  • liczbie słów poprawnie przewidzianych przez autokorektę;
  • łącznej długości ciągów znaków wprowadzonych i usuniętych;
  • liczbie emoji;
  • języku, w którym wpisywano tekst;
  • odwiedzaniu przez użytkownika stron ustawień aplikacji wraz ze szczegółami interakcji z tymi ustawieniami;
  • momencie, w którym użytkownik klika w ustawienia prywatności.

Przepiórowski zwraca uwagę, że na podstawie danych na temat czasu wpisywania wiadomości dałoby się potencjalnie ustalić, po zestawieniu tych informacji z danymi od innych użytkowników, kto jest adresatem wprowadzanych wiadomości. Nie znalazł jednak w przesyłanych pakietach informacji o konkretnych znakach czy słowach, które wprowadza użytkownik.

Analogiczny eksperyment Przepiórowski przeprowadził na otwartoźródłowej aplikacji AnySoftKeyboard. Ustalił, że ta klawiatura nie przekazuje nikomu żadnych danych. W związku z tym, jak napisał, „szeroko zakrojone zbieranie telemetrii nie jest konieczne, by wyprodukować w pełni funkcjonalną klawiaturę; jej zastosowanie jest wyłącznie wyborem podjętym przez deweloperów”.

Większość transmisji danych można zablokować poprzez zmiany w ustawieniach klawiatur. Należy wycofać zgody na przesyłanie „telemetrii” albo „statystyk”. Dla pewności warto jednak zainstalować aplikację pozwalającą blokować ruch z poszczególnych aplikacji, np. NetGuard.

Ta ostatnia, oprócz blokowania ruchu, pozwala go monitorować. Przez miesiąc prowadziłem więc własne skromne eksperymenty z Gboard.

Kiedy wszystkie zgody na przekazywanie danych były wycofane, faktycznie ruchu było niewiele. Ale kiedy wyraziłem zgodę na przekazywanie danych, telefon zaczął wysyłać pakiety regularnie. Co zawierały – nie wiem. Do czego służyły – tego też nie wiem.

Osobę, która podjęłaby się ponownego przeprowadzenia eksperymentu podobnego do tego, który przeprowadził Przepiórowski, uprzejmie proszę o wiadomość, co udało się ustalić!

Zrzut ekranu z aplikacji NetGuard na moim telefonie. Pokazuje ruch wychodzący z Gboard. Widać kolejne pakiety wysłane w kolejnych dniach na serwery Google.
Zrzut ekranu z aplikacji NetGuard na moim telefonie. Pokazuje ruch wychodzący z Gboard.

Wniosek: tak, klawiatura może mnie śledzić

Wniosek z moich peregrynacji jest taki, że owszem, klawiatura w telefonie może mnie śledzić. Nie mam też pewności, czy nie robi tego, kiedy jej zabraniam.

Mając telefon z Androidem, na szczęście mogłem samodzielnie zmienić klawiaturę w swoim telefonie. Nie jest to przesadnie trudne.

Najprościej przejść na klawiaturę Fossify. W ramach projektu Fossify powstały otwartoźródłowe, darmowe alternatywy dla kluczowych aplikacji, które przydają się prawie każdemu, np. klawiatura, kalendarz czy telefon. Można je spokojnie pobrać z Google Play.

Moje doświadczenie testowania Fossify Keyboard były jednak umiarkowane, brakowało mi np. dobrej autokorekty. Dlatego ostatecznie zainstalowałem inną otwartoźródłową klawiaturę: Heliboard. I jestem bardzo zadowolony zarówno z jej poszanowania prywatności, jak i autokorekty czy ustawień. Nie sądziłem, że to możliwe, ale pisanie na telefonie stało się znacznie przyjemniejsze.

Heliboarda jednak nie ściągniesz z Google Play – musisz albo zainstalować alternatywny sklep z aplikacjami (np. F-Droid), albo aplikację bezpośrednio z paczki w formacie .apk. To nic trudnego, ale ostrzegam: wejście w króliczą norę grozi przejściem na radykalne pozycje.