Walka z Usługami Google na Androidzie (krótka wersja)
W tym pomocniczym miniwpisie zebrałem kilka schematów pokazujących różne etapy walki z aplikacją Usługi Google o kontrolę nad swoim smartfonem. Pod każdym schematem znajdziecie rozwijane streszczenie całej sytuacji.
Tryb domyślny

Opis schematu
System Android został podzielony na tym schemacie na kilka poziomów, podpisanych po prawej stronie.
Obszar środkowy (zielony) to strefa, w której użytkownicy mają najwięcej swobody. Mają m.in. możliwość odinstalowania lub przynajmniej dezaktywacji wielu aplikacji (obrazują to ikonki małych dźwigni).
Nie mają jednak wglądu w dwa miejsca:
- do warstwy nad sobą (plików wewnętrznych różnych aplikacji),
- do głębszych warstw systemu (nazwanych tu jądrem – dość luźno, bez związku z oficjalną definicją).
W tym drugim miejscu znajdują się Usługi Google, mocno zżyte z różnymi funkcjami systemu. Zapewniają udogodnienia, ale za cenę komunikowania się z korporacją Google i ujawniania jej różnych, potencjalnie wrażliwych informacji. Na schemacie ich interakcje symbolizują strzałki między ikoną Google’a a ikoną Usług.
Od Usług Google zależy działanie niektórych aplikacji. Tutaj przykładem apki zależnej jest Sklep Google Play, zaś zależność symbolizuje linia przerywana.
Wyłączenie Usług Google przez opcje

Opis schematu
Jak widać na pierwszym schemacie, przy Usługach Google’a widnieje ikonka dźwigni. A to oznacza, że chętni użytkownicy mogą je wyłączyć przez oficjalne menu systemowe.
Wyłączenie Usług w żadnym stopniu nie wpływa na układ warstw czy ich dostępność, więc większość schematu pozostaje bez zmian. W tym trybie przestają oczywiście działać same Usługi (dlatego ikona jest zaciemniona), a także ich komunikacja z Google’em. Co ma sporo zalet z punktu widzenia prywatności.
Efektem ubocznym jest natomiast brak możliwości korzystania z aplikacji, które były od Usług zależne. To dlatego cała ikona aplikacji Sklep Google Play stała się szara i widać na niej ikonkę błędu.
Rootowanie lub alternatywny system kontra Play Integrity

Opis schematu
Zrootowanie telefonu i wgranie alternatywnego systemu to dwa różne zabiegi, prowadzące do niemal tego samego efektu – zyskania kontroli nad wcześniej niedostępnym, „głębszym” obszarem telefonu.
Jeśli ktoś uzna, że chce skorzystać na tak zmienionym systemie z Usług Google albo apek od nich zależnych, to bardzo możliwe, że zderzy się z komunikatem o błędzie.
A to dlatego, że Usługi zawierają funkcję o nazwie Play Integrity. Polega ona na tym, że skanują na życzenie niektórych aplikacji swoje otoczenie. Wypatrują oznak tego, że otaczający je system został zmieniony i nie jest już typowym Androidem jak z pierwszego schematu.
O swoich wątpliwościach mogą powiadomić zainteresowane aplikacje. Te zaś mogą świadomie odmówić działania i szantażować: „jeśli nie zresetujesz telefonu do postaci grzecznego Androida, to się nie włączę”.
Właśnie taki stan pokazuje schemat. Dolna warstwa już zielona, czyli dostępna. Usługi włączone. Ale zarówno one, jak i aplikacja zależna są oznaczone na szaro, niefunkcjonalne.
Instalacja systemu GrapheneOS

Opis schematu
Wśród otwartych, alternatywnych systemów jest jeden, który wyróżnia się pod kątem doszlifowania i może przełamać barierę z poprzedniego schematu. To GrapheneOS, który stosuje wobec Usług Google sandboxing (dosłownie „zamknięcie w piaskownicy”, w praktyce „odizolowanie”).
Intuicyjnie: Usługi Google zostają niejako umieszczone w makiecie systemu, stworzonej specjalnie dla nich. Nie ma tam wrażliwych danych użytkowników, więc ich nie dosięgną. Są tam za to imitacje rzeczy znanych Usługom z czystego Androida, z którego wyciągnęłyby co chcą. Mając do nich dostęp, powinny uznać system za niezmieniony i nie alarmować aplikacji zależnych po odpaleniu Play Integrity.
Odgrodzenie Usług obrazuje na schemacie pogrubiony kwadrat wypełniony czerwonym tłem, otaczający ich ikonę. Widać również, że cała komunikacja z Google’em i aplikacjami zależnymi działa jak na domyślnym systemie.
Bardzo chciałbym powiedzieć, że to niezawodny sposób na wygranie wojny o smartfona (zwłaszcza że Graphene nawiązał niedawno współpracę z Motorolą, co mogłoby go przybliżyć codziennym użytkownikom).
Niestety niżej czeka jeszcze jeden schemat.
Weryfikacja Play Integrity na poziomie sprzętowym

Opis schematu
Zainstalowanym systemem nadal jest tutaj Graphene OS, więc prawie wszystko jest jak na poprzednim schemacie. Tylko że tym razem, niestety, nawet on został pokonany.
Wewnątrz smartfonów tkwi bowiem niezależny chip kryptograficzny. Bywa nazywany różnie: w przypadku ogólnym to TEE (Trusted Execution Environment), ale czasem producenci chipów albo telefonów wypuszczają coś pod własną marką.
Osobiście preferuję nazwę enklawa, podpatrzoną od ajfonów i podkreślającą izolację oraz niedostępność, czyli kluczowe cechy takich elementów.
Chip bierze udział w procesie uruchamiania systemu i zapisuje sobie informację o tym, czy to czysty, niezmieniany Android, czy też coś nietypowego. Okazuje swoje zapiski na życzenie Usługom Google Play – w sposób oznaczony cyfrowo i niemożliwy do podrobienia – jeśli apka zależna od Usług zechce poświadczenia na poziomie MEETS_DEVICE_INTEGRITY lub wyższym.
Po poznaniu prawdy o zmienionym systemie aplikacje mogą złośliwie odmówić działania. Tak robią: liczne aplikacje bankowe, Revolut, apki od gier online, a nawet… apka McDonalda.
Przeciw takiej barierze nawet GrapheneOS jest bezsilny i musi ulec. A wielu użytkowników nie interesuje przyczyna – przyjmują, że skoro nie działa, to jest to wina niedopracowanych alternatyw i lepiej trzymać się Google’a. W ten sposób monopol Wielkiego G się cementuje.