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:
- Dostawcą Gboard jest Google, a więc należy domniemywać, że śledzi wszystko, co robisz za pomocą ich aplikacji.
- 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.

Ż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ć!

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.