Čo vlastne robia Play services na GrapheneOS? Pozrel som sa dovnútra

Postava s telefónom stojí v hmlistej chodbe pred rozdvojením: vľavo hrejivé svetlo s ikonkami máp a zvončekov, vpravo tma so štítom.

Written by

in

Rýchlosť: · Stiahnuť MP3 (18 MB)

Audioverzia článku (asi 30 minút).

Technický rozbor v PDF: Play services (English), Android Auto (English).

Skoro každý, kto prejde na GrapheneOS, narazí na rovnaké rozhodnutie: nainštalovať si Google Play services, alebo nie? Odpoveď „nie, veď je to Google“ znie rozumne, ale zvyčajne vydrží len do chvíle, keď vám banková appka nepošle notifikáciu, ktorou potvrdíte platbu. Odpoveď „áno, bez nich nič nefunguje“ je pohodlná, ale netvárme sa, že Play services na pozadí nič zlé nerobia.

Rozobral som aktuálnu verziu Play services a zisťoval, čo presne robia. Vznikol z toho technický rozbor, ktorý nájdete aj na konci článku. Tento článok je ľahšia verzia: čo vás stojí a čo vám prináša každá z možností. Je to analýza kódu, nie odchytená sieťová prevádzka. Viem, čo aplikácia dokáže a aké má predvolené nastavenia, ale čo Google robí s dátami po tom, čo dorazia na jeho servery, z aplikácie nevidno.

Najprv: čo vlastne chránim?

Kniha Praxeológia súkromia od Maxa Hillebranda to definuje takto: súkromie je schopnosť selektívne sa odhaliť svetu. Nosné slovo je selektívne. Sami rozhodujete, ktoré informácie o sebe zverejníte a ktoré si necháte pre seba. Nie je to ukrývanie viny, ale kontrola nad odhaľovaním.

O súkromí sa ťažko hovorí aj preto, že sa zamieňa s tajnosťou a s anonymitou. Kniha ich pekne oddeľuje: „Súkromie je bežné a stále. Tajnosť je užší prípad, ktorý vyžadujú niektoré činnosti. Anonymita je nástroj, ktorý sa stane nevyhnutným, keď už samotné pripísanie vytvára nebezpečenstvo.“

Pre Play services z toho plynie praktická otázka: čo z toho, čo sa o mne dá zistiť, chcem mať pod kontrolou? Do úvahy prichádza poloha, komunikácia (čo a komu posielate), zoznam nainštalovaných aplikácií a identita samotného zariadenia. Nie všetko má rovnakú váhu. Mne záleží najviac na polohe, zoznam aplikácií ma trápi menej. Vy to môžete mať úplne inak, a preto sa nepokúšam nájsť univerzálnu odpoveď.

Mimochodom, tú knihu vám odporúčam. Spája rakúsku ekonómiu s cypherpunkovou praxou, je zadarmo a existuje v slovenčine, aj ako audiokniha. Nájdete ju tu.

Čo Play services vlastne sú

Najprv jedna vec, ktorá sa v diskusiách stráca. Play services nie sú „Google účet v telefóne“. Je to balík služieb, na ktorý sa spolieha množstvo aplikácií, aj takých, ktoré s Googlom nemajú nič spoločné:

  • Push notifikácie. Signal, WhatsApp, banky, kuriéri, takmer všetko, čo vám vie pípnuť, ide cez Google. Bez Play services chodia oneskorene, alebo vôbec.
  • Kontrola zariadenia. Čoraz viac aplikácií, nielen bankových a platobných, sa cez Play services (Play Integrity) pýta, či je telefón „v poriadku“. Keď sa nemajú koho opýtať, aplikácia buď odmietne fungovať, alebo (častejšie) ju server nepustí k backendu bez atestácie. Prečo to tak je, som písal v článku o hardvérovej atestácii.
  • Poloha. Rýchle a presné určenie polohy podľa okolitých Wi-Fi sietí a vysielačov, aj zdieľanie polohy v Google Maps. Základná poloha v Mapách Play services možno nepotrebuje, GPS zabezpečí systém. Podľa používateľov GrapheneOS Mapy bez Play services fungujú, niektorí ale hlásia sivú mapu, takže si to vyskúšajte. Zdieľanie polohy s inými ľuďmi je naopak funkcia Play services.
  • Mapy v cudzích aplikáciách. Aplikácie s vloženou mapou od Googlu na Play services závisia.
  • Účty. Prihlasovanie do Google účtu, passkeys a synchronizácia.
  • Auto a zariadenia v okolí. Android Auto, Fast Pair pre slúchadlá, Quick Share, hľadanie stratených zariadení.

Toto sú prínosy, ak si Play services necháte. Nie je to len pohodlie. Pre niektorých ľudí je to rozdiel medzi telefónom, ktorý bežne používajú, a telefónom, ktorý niektoré veci jednoducho nevie.

Čo vás to stojí

Play services sú navrhnuté ako privilegovaná súčasť systému. Na bežnom Androide majú práva, aké nemá žiadna iná aplikácia. GrapheneOS ich preto nespúšťa ako systémovú súčasť, ale ako obyčajnú aplikáciu v sandboxe, bez privilegovaných práv. Z 402 oprávnení, ktoré aplikácia žiada, 132 nikdy nedostane, napríklad čítanie IMEI bez vášho súhlasu, MAC adries alebo systémových logov.

To je dobrá správa. Horšia je, že aj to, čo ostane, stačí na dosť veľa:

  • Pravidelné hlásenie. Približne každých 12 hodín sa zariadenie ohlási Googlu. Pri prvom hlásení dostane identifikátor, ktorý prežije všetko okrem vymazania dát aplikácie alebo obnovenia továrenských nastavení.
  • Telemetria. V kóde je 468 zdrojov, ktoré zapisujú údaje o používaní. Keď ste prihlásení, môžu sa viazať na účet.
  • SIM. Ak Play services dáte oprávnenie Phone, vedia čítať identifikátory SIM karty.
  • Zoznam aplikácií. Zoznam nainštalovaných aplikácií vidia bez opýtania. Nie je to len vec Play services: veľa aplikácií, hlavne bankových, posiela zoznam všetkých nainštalovaných aplikácií na svoje servery. Slovenské banky, ktoré som si pozeral, to robia všetky.
  • Play Protect. Ak je zapnuté „Improve harmful app detection“, posiela Googlu aj aplikácie, ktoré nepozná.
  • Reklamné ID. Je uložené v telefóne, ale aplikácie ho môžu čítať, kým ho nezmažete.

Kód, ktorý príde neskôr

Rozbor vychádza z APK, ktoré si stiahnete z repozitára aplikácií GrapheneOS, ale to nie je celý obraz. Play services sú hostiteľ modulov: APK ich deklaruje 200 a po inštalácii posiela Google cez Play Store do telefónu ďalšie modulové APK. Na mojom Pixeli systém kompiloval trinásť takých modulov a ani jeden z nich v repozitári nie je. Ktoré moduly telefón dostane, neurčuje APK, ale konfiguračný súbor zo servera Googlu.

Z telefónu sa tieto súbory bez rootu dostať nedajú. Pripravil som si preto testovací emulátor s rootom a moduly som vytiahol odtiaľ: 24 APK súborov v 19 buildoch a k tomu engine DroidGuard (časť Play Integrity, ktorá zisťuje, či je telefón „v poriadku“). Nepochádzajú teda z GrapheneOS, ale sú to tie isté moduly, ktoré Google posiela Play services všade. Každý súbor sedel s kontrolným súčtom, ktorý si zaznamenal Play. Potom som ich dekompiloval.

Dobrá správa je, že sú väčšinou tým, čo hovorí ich názov: skenovanie QR a čiarových kódov, rozpoznávanie textu, vykresľovanie mapy pre aplikácie s vloženou mapou Google, vykresľovanie reklám, passkeys, vyhľadávanie v launcheri a vyhľadávací index v zariadení. Je to obyčajný kód.

Čo ma trápi, je niečo iné. Ani jeden z modulov nežiada žiadne oprávnenie. Používajú oprávnenia procesu, v ktorom bežia. Väčšina beží vnútri Play services a dostane všetko, čo ste dali Play services.

Moduly pre mapy a reklamy sa zase načítajú do aplikácie, ktorá mapu alebo reklamu ukazuje, a dostanú jej oprávnenia aj jej prístup na sieť. Ak teda Play services zakážete prístup na sieť, tento kód sa na sieť dostane aj tak. Reklamný modul má jeden detail, ktorý som nečakal: keď nezíska reklamné ID, pošle v požiadavke na reklamu namiesto neho Android ID aplikácie, nehashované.

Príklad z opačnej strany: povolíte Play services kameru kvôli skenovaniu QR kódov. Tú kameru potom používa modul, ktorý ste si neinštalovali sami, Play services ho stiahli podľa vlastnej konfigurácie. V zozname aplikácií ani v nastaveniach ho nenájdete.

Google ten kód navyše môže vymeniť bez aktualizácie Play services. Na GrapheneOS to aspoň znamená len to, čo ste povolili vy. Na bežnom Androide, kde sú Play services systémová aplikácia, je to oveľa viac.

Najzaujímavejší je engine DroidGuard. Je zámerne napísaný tak, aby sa ťažko čítal: funkcie, ktoré navonok ponúka, sú návnady a skutočné sa registrujú pod zašifrovanými menami. Sám od seba odtlačí grafický čip a jeho ovládače a zhrnie údaje z pohybových senzorov. Play services mu k tomu podajú Android ID a zoznam škodlivých aplikácií z Play Protect. Všetko ostatné závisí od malého programu, ktorý Google pošle pri každej kontrole, a engine má univerzálnu bránu, cez ktorú ten program prečíta akýkoľvek súbor alebo urobí akékoľvek systémové volanie, ktoré môžu urobiť samotné Play services. Taký program sa mi zachytiť nepodarilo, takže čo skutočná kontrola sleduje, neviem.

Toto je dynamické načítavanie kódu: kód, ktorý beží, neurčuje APK, ktoré ste si nainštalovali. A môže byť pre rôznych ľudí iný. Ktoré moduly má telefón mať, prichádza ako vzdialené nastavenie a požiadavka naň nesie Android ID zariadenia a token každého prihláseného Google účtu. Google teda technicky môže jednému konkrétnemu zariadeniu alebo účtu poslať modul, ktorý nikto iný nedostane, a to bez aktualizácie Play services, ktorú by si niekto mohol prezrieť. Nemôže to však umožniť nikomu inému: pred načítaním modulu Play services overia, že ho podpísal Google. Či to Google niekedy niekomu robí, z kódu nevidno. Po lopate: keby chcel Google nasadiť na jeden telefón cielený spyware, doručovací mechanizmus na to existuje. Na GrapheneOS by mal taký kód stále len oprávnenia, ktoré ste dali Play services, a práve preto záleží na tom, čo im dáte.

Nie som prvý, kto si všimol, že tento kód nie je pevný. Romain Thomas rozobral DroidGuard v staršej službe SafetyNet (SSTIC 2022) a zistil, že Play services stiahnu najnovší DroidGuard, ak ho nemajú, a ten si potom stiahne bajtkód, ktorý je „unikátny pre každú atestačnú požiadavku“. Doug Leith z Trinity College Dublin (2025) zistil, že Play services sťahujú nastavenia pre jednotlivé aplikácie spolu s tokenmi experimentov, takže Google môže zmenu najprv vyskúšať na malej skupine používateľov, a že požiadavka na doručenie modulov (play-fe.googleapis.com/fdfe/moduleDelivery) posiela Android ID. GrapheneOS muselo svoj runtime naučiť načítavať moduly Dynamite z Play services cez file descriptory (pull request). Pokiaľ viem, nikto nezverejnil pohľad na samotné doručené moduly, s tabuľkou toho, kam sa pripájajú a na čo by sa dali cieliť. Táto časť je nová.

V praxi to znamená, že neexistuje jedno „Play services“, ktoré by sme všetci spúšťali a ktoré by sa dalo raz zaudítovať pre všetkých. Váš telefón pošle Googlu svoju konfiguráciu a na jej základe Google rozhodne, aké moduly dostane a v akých verziách. Aplikácia si ich potom sama stiahne a sama sa aktualizuje, bez toho, aby niekto vydal novú verziu Play services. Dva telefóny s rovnakou verziou Play services môžu spúšťať rôzny kód. To, čo tu opisujem, je hostiteľská aplikácia (samotný inštalačný balíček Play services, teda APK) plus vzorka dynamického kódu, ktorý si stiahlo jedno testovacie zariadenie. Nie je to však vyhodnotenie toho, čo bude bežať na vašom telefóne.

Pozrime sa aj na reklamný modul. Keď aplikácia ukáže reklamu Googlu, reklamný server modulu podá adresy, ktoré má zavolať, napríklad na započítanie zobrazenia alebo kliknutia. Modul zavolá každú z nich, nasleduje presmerovania a nekontroluje, kam vedú. Jedna reklama tak môže prinútiť telefón rozprávať sa s celým reťazcom inzerentov a meracích firiem.

GrapheneOS na to má prepínač: Nastavenia > Aplikácie > Play services > Ochrana pred zneužitím > Dynamické načítavanie kódu z úložiska. Pre Play services je načítavanie predvolene povolené: GrapheneOS im dalo výnimku, lebo staršie moduly Dynamite ešte nie sú nahradené split APK. Keď ho vypnete, engine DroidGuard a stiahnuté moduly sa prestanú načítavať (v issue #8714 je pád Play services práve pri načítaní modulu z `app_chimera`). Cena je vysoká: Play Integrity, skenovanie QR kódov, rozpoznávanie textu a passkeys pravdepodobne prestanú fungovať. Na hlavnom telefóne som to neskúšal, takže to berte ako experiment, nie ako odporúčanie. A je tu háčik, ktorý presahuje samotné funkcie: pozrite si nasledujúcu časť o atestácii.

Čo prejde atestáciou v GrapheneOS

Strong integrity, teda hardvérovú atestáciu podpísanú Googlom, GrapheneOS nepreukáže, takže aplikácie, ktoré ju vyžadujú, ostanú zablokované. Nedá sa to obísť nastavením ani obmedzením kódu Googlu. GrapheneOS v sprievodcovi kompatibilitou atestácie vysvetľuje, ako by vývojári aplikácií mohli akceptovať jeho kľúče, a komunita sleduje, ktorých bankových aplikácií sa to týka, v zozname kompatibility PrivSec, za ktorý GrapheneOS neručí.

Zďaleka nie všetko však na atestácii padá. Pokiaľ viem, s Play services v sandboxe GrapheneOS zvyčajne prejde basic a device integrity (príručka GrapheneOS uvádza, že prejde basicIntegrity, ale nie je certifikovaný Googlom). Mnoho aplikácií kontroluje len tieto úrovne, a práve tie by ste vypnutím mohli stratiť: DroidGuard generuje podklady pre tieto výsledky, takže bez neho sa nevyhodnotí ani to, čo dnes prechádza. Aplikácia, ktorá dnes funguje, by potom mohla začať hlásiť chybu integrity.

Analýza nákladov a prínosov

Nechcem súdiť, čo je dobré alebo zlé, lebo nepoznám vaše priority. Môžeme ale povedať, čo každé rozhodnutie prináša a čo vás stojí. Aj nečinnosť má svoje náklady, respektíve dopady.

NákladyPrínosy
Nainštalujem Play servicesGoogle dostane identitu zariadenia, telemetriu a zoznam aplikácií. Treba nastaviť oprávnenia a občas ich skontrolovať.Funguje push, mapy, Android Auto a časť aplikácií, ktoré vyžadujú atestáciu. Tie najprísnejšie nezbehnú ani s Play services, lebo GrapheneOS nie je od Googlu certifikovaný.
NenainštalujemNiektoré aplikácie nebudú fungovať a push môže meškať. Treba hľadať alternatívy.Google nedostane identitu zariadenia a z telefónu uniká najmenej údajov.

Ani jedno rozhodnutie nie je vo všeobecnosti dobré alebo zlé. Záleží na tom, čo chránite a o čo vám v živote naozaj ide. Ak nepoužívate Android Auto a banku máte v prehliadači, Play services možno nepotrebujete. Ak by vám ráno chýbala pracovná notifikácia, potrebujete ich. Existuje aj tretia možnosť: nainštalovať ich a vziať im oprávnenia, ktoré nepotrebujú. O tej je ďalšia časť.

Čo s nimi urobiť, ak ich chcete

Všetko, čo opisujem, sú bežné nastavenia v menu. Nič sa nepatchuje ani neinštaluje nanovo. Väčšina nastavení je na jednom mieste: Settings > Apps > Sandboxed Google Play.

Úvodná obrazovka Sandboxed Google Play v nastaveniach GrapheneOS
Všetko pod jednou strechou: Settings > Apps > Sandboxed Google Play.

1. Zvážte, kam ich dať

Play services môžete nainštalovať do hlavného profilu, alebo do druhého používateľa, pracovného profilu či Private Space. Potom ich môžu používať len aplikácie v tom profile a Play services vidia len jeho aplikácie a dáta. Oddelený profil dáva zmysel, ak aplikácií, ktoré Play potrebujú, je málo a zvyšok chcete mať mimo Googlu. Má to ale cenu: Play services sa Googlu ozývajú aj tak, kým profil beží, a push dostanete len vtedy, keď ten profil máte pred sebou (Private Space sa po zamknutí zastaví). Ak je push jeden z dôvodov, prečo Play services chcete, patria do profilu, ktorý používate ako primárny, a tam ich nainštalujte. Tak to mám aj ja: Play services mám v hlavnom profile, kvôli push notifikáciám a použiteľnosti. Keď si objednám jedlo cez Wolt alebo Uber, chcem vedieť, kedy sa blíži. Privátny profil mám bez Play services. Private Space nájdete v Settings > Security & privacy > Privacy > Private space.

2. Zoberte, čo nepotrebujú

Otvorte Play services app info > Permissions. Najcitlivejšie sú tieto:

  • Phone. IMSI a údaje o SIM karte, ktoré sa posielajú pri pravidelnom hlásení. Nechajte na Don’t allow.
  • SMS. Nechajte na Don’t allow, ak nepoužívate aplikáciu, ktorá číta overovacie SMS cez Play services.
  • Contacts. Ak niektorá aplikácia kontakty chce, dajte jej Contact Scopes, nie plný prístup.
  • Location. Tomu sa venujem nižšie.
Zoznam oprávnení Play services v nastaveniach
Play services app info > Permissions. Oprávnenia, ktoré nepotrebujete, nechajte na Don’t allow.

3. Vypnite, čo sa dá vypnúť

  • Reklamné ID. Google Settings > All services > Privacy & security > Ads > Delete advertising ID. Aplikácie potom dostanú samé nuly.
  • Usage & diagnostics. V tej istej sekcii ho vypnite.
  • Play Protect. Play Store > ikona profilu > Play Protect > Settings. „Scan apps with Play Protect“ nechajte zapnuté, „Improve harmful app detection“ vypnite.

4. Sieťový vypínač (nepoužil by som ho)

Na GrapheneOS má každá aplikácia vlastné oprávnenie Network. Keď ho Play services odoberiete, ostanú bez internetu. Neodporúčal by som to, hoci je to najsilnejší nástroj, aký máte. Play services bez internetu nie sú veľmi použiteľné (QR kód, ktorý číta už stiahnutý modul, napríklad ešte funguje) a väčšina ľudí ich chce kvôli push notifikáciám, ktoré idú presne cez spojenie, ktoré by ste prerušili. Bankové aplikácie, messengery a kuriéri vám prestanú posielať upozornenia, zlyhá prihlásenie aj Play Integrity a rozbije sa toho oveľa viac. Ak chcete ísť až takto ďaleko, je lepšie Play services vôbec nenainštalovať. Najprv obmedzte oprávnenia, ako je popísané vyššie.

Rant o polohe

Teraz k veci, ktorá ma na tom celom trápi najviac. Poloha.

Hneď na začiatku: nainštalované aplikácie mi až tak nevadia. Google vidí, že mám Uber? Dobre, mám Uber. Je to vec, ktorú viem prežiť, a keď to chcem skryť, mám Private Space. Poloha je iná. Nerád zdieľam, kde sa nachádzam, a určite nie dopredu.

Praktický príklad. Fotku z pláže zverejnite, až keď sedíte v lietadle. „Nedávno som bol vo Švajčiarsku“ je v poriadku, „som vo Švajčiarsku“ je informácia, ktorú nemusí vedieť každý.

V nedávnom podcaste som spomínal paraguajského prokurátora Marcela Pecciho. V máji 2022 ho zastrelili na pláži ostrova Barú pri Cartagene v Kolumbii, kde bol na svadobnej ceste. Jeho manželka dávala na Instagram fotky z pláže. Podľa správ organizácie OCCRP štyria obvinení, ktorí sa k činu priznali, uviedli, že jeho pohyb sledovali cez sociálne siete. Polícia vraždu spájala s jeho prácou, no kde ho nájsť, zistili útočníci zo sociálnych sietí. Poloha v reálnom čase uľahčí prácu každému, kto vás hľadá.

Dá sa to ale aj preháňať. Poznáte to: stojíte s kamarátom na ulici v juhoamerickom meste, je druhá ráno, kamarát sa snaží dostať domov, ale má vypnuté všetky nastavenia súvisiace s polohou. Tak začne hľadať názov ulice a zisťovať na mape, kde sa vlastne nachádza. To nie je súkromie, to je len telefón, ktorý nevie, kde je.

Cieľ teda nie je „žiadna poloha“. Cieľ je poloha pod kontrolou: ktorá aplikácia ju dostane, kedy a ako presne.

Ako to rieši GrapheneOS

GrapheneOS má vlastnú službu na určovanie polohy a Play services ju vedia použiť. V nastaveniach Sandboxed Google Play je prepínač „Reroute location requests to the OS“ (predvolene zapnutý). Keď Play services alebo aplikácie cez ne žiadajú polohu, vybaví to operačný systém. Play services preto na polohu vlastné oprávnenie nepotrebujú a práve to im môžete odobrať.

Nastavenie oprávnenia Location pre Play services
Play services app info > Permissions > Location: Don’t allow.

Je tu jedno upozornenie. Podľa príručky GrapheneOS prestane bez polohy v Play services fungovať zdieľanie polohy v Mapách (potrebuje „Allow all the time“ a oprávnenie Physical activity). Prestane fungovať aj vlastná sieťová poloha od Googlu, ktorú príručka aj tak neodporúča. Pre mňa je to vlastnosť, nie chyba. Ak zdieľanie polohy v Mapách používate, rozhodnite sa, čo je pre vás dôležitejšie.

Druhá vec je batéria. Presmerovanie polohy do systému spotrebuje viac energie, kým nezapnete sieťovú polohu GrapheneOS. Tá určuje polohu podľa Wi-Fi sietí a vysielačov, takže GPS nemusí pracovať samo. Nájdete ju v Settings > Location > Location services > Network location.

Menu Network location v nastaveniach GrapheneOS
Settings > Location > Location services > Network location.

Na výber je proxy od GrapheneOS k službe Apple, priamo server Apple, server Apple pre Čínu a vypnutie. Áno, GrapheneOS tu používa Apple, nie Google. Prečo nie Google, GrapheneOS priamo nevysvetľuje, takže presne neviem. Z toho, čo o tom písali, sa dajú vyčítať tri veci. Službu Applu podľa nich ponúka voľne, bez prihlasovania. Jej rozhranie vracia polohy konkrétnych Wi-Fi sietí, takže vašu polohu si počíta zariadenie samo, a to je rozdiel oproti službe Googlu. A z dát Applu chcú postaviť vlastnú databázu sietí, ktorú plánujú dať na stiahnutie aj na používanie bez internetu (GrapheneOS, Privacy Guides).

Do dotazu idú identifikátory (BSSID) 15 najsilnejších okolitých Wi-Fi sietí a systém sa navyše pýta na až 100 sietí v okolí, aby sa naplnila vyrovnávacia pamäť. Podľa GrapheneOS neposiela silu signálu ani vašu polohu (diskusia). Odpoveďou sú polohy týchto sietí, nie vaša poloha, tú si zariadenie dopočíta. Údaje sa držia len v pamäti (najviac 10 000 sietí, 15 minút po poslednom použití), takže sa nevedie história polôh. Služba nevyžaduje prihlásenie, takže sa na to nepoužíva váš účet.

Proxy od GrapheneOS stojí medzi vami a Applom, takže Apple vidí IP adresu proxy, nie vašu. Platíte za to dôverou v GrapheneOS. Sami to opisujú ako voľbu (diskusia): proxy má zmysel, ak viac veríte im než samotnej službe, ale kto chce mať v reťazci čo najmenej strán, má sa pripojiť priamo.

Nie je to bez nákladov, ale treba vedieť, čo presne sa prezrádza. Apple vie, aké Wi-Fi siete sú na ktorej adrese, aj bez vás: stačí, že tadiaľ prešiel niekto s iPhonom. Dotaz neobsahuje identifikátor používateľa a cez proxy Apple nevidí ani vašu IP adresu, takže sa dozvie najviac to, že niekto na tomto mieste dotaz poslal. Pri priamom pripojení by videl aj IP adresu. A ak vám vadí, že niekto vie, akú máte doma Wi-Fi, tú zistí aj sused za stenou alebo ktokoľvek, kto prejde okolo domu. Ak vám to aj tak vadí, môžete sieťovú polohu vypnúť a spoliehať sa na GPS, ktoré je pomalšie a v budovách slabšie. Je to kompromis medzi presnosťou a tým, kto o vašej polohe vie. Pre mňa je najlepšou funkčnou voľbou proxy.

Čo sa môže pokaziť

Čo môže prestať fungovať:

  • Zdieľanie polohy v Mapách. Opísal som to vyššie.
  • Automatické vyplnenie SMS kódov. Aplikácie, ktoré si overovací kód z SMS preberajú cez Play services (napríklad niektoré banky), ho už nemusia vedieť vyplniť.
  • Overenie telefónneho čísla cez Google. Môže prestať fungovať, ak odoberiete oprávnenie Phone.

Všetko sa dá vrátiť rovnakou cestou: Settings > Apps > Sandboxed Google Play > Play services app info > Permissions.

Čo som skúšal a čo by som nerobil

Rozbor má sekciu o tom, ako ísť ďalej než nastavenia. Skúmal som dva nápady, oba len teoreticky.

  • Modifikovanie a prebaľovanie APK. Neodporúča sa. Uvádzam to len ako teoretické cvičenie, aby bolo jasné, či to má zmysel a čo by to mohlo priniesť. Je to oveľa väčší pain, než sa zdá: spoločná podpisová identita Play services a Play Store, pripnuté certifikáty v kóde Googlu, premenovaný kód v každom vydaní a pravdepodobná strata integritných výsledkov, ktoré dnes prechádzajú.
  • Modifikovanie samotného GrapheneOS. Tiež sa neodporúča a tiež je to len myšlienkový experiment. Potrebovali by ste vlastný kľúč verified boot, vzdali by ste sa oficiálnych aktualizácií a patche by ste museli niesť cez každé vydanie.

Spomínam ich, aby ste sa nemuseli pýtať, či som nevynechal nejaký šikovný trik. Je to teoretická úvaha, nie praktická rada. Praktická rada je v častiach vyššie.

Takže, nainštalovať?

Odpoveď za vás nenapíšem. Pre mňa je to otázka, čo chránim a koľko som ochotný zaplatiť. Ak potrebujete push, mapy alebo Android Auto, Play services nainštalujte tam, kde ich potrebujete, a vezmite im všetko, čo nepotrebujú. Poloha pritom pokojne pôjde cez operačný systém. Ak žiadnu z týchto vecí nepotrebujete, nemusíte ich mať vôbec.

Celý rozbor v PDF

Kto sa chce pozrieť pod kapotu, nájde tu celý rozbor Play services: 35 strán o tom, čo je v aplikácii, čo do nej Google posiela neskôr, čo z nej odchádza, čo sa s tým dá robiť a ako to overiť.

Prvá strana PDF rozboru Play services
Prvá strana rozboru Play services.

Stiahnuť rozbor Play services (PDF, 35 strán)

A čo Android Auto

Rovnako som rozobral aj Android Auto, ktorý GrapheneOS ponúka spolu s Play services. Z toho, čo som našiel: vidí zoznam všetkých nainštalovaných aplikácií a jeho sieťové oprávnenie sa nedá odobrať, systém ho nechá zapnuté, lebo ho aplikácia potrebuje na fungovanie. Heslo k Wi-Fi auta si ukladá do vlastnej databázy, čo je pri bezdrôtovom pripojení nevyhnutné, a vďaka sandboxu v GrapheneOS by som to neriešil. Čo sa s tým dá robiť, je v PDF.

Prvá strana PDF rozboru Android Auto
Prvá strana rozboru Android Auto.

Stiahnuť rozbor Android Auto (PDF, 21 strán)

Záver

Play services dávajú reálne funkcie a platíte za ne údajmi o zariadení. GrapheneOS ich zavrie do sandboxu, takže cena je nižšia než inde, a dá sa znížiť ešte viac: obmedzením oprávnení, vymazaním reklamného ID a presmerovaním polohy do systému.

Ja mám Play services v hlavnom profile, bez polohy, telefónu a SMS a s vymazaným reklamným ID, a v privátnom profile mám veci, ktoré Google nemá vidieť, bez Play services. Vy sa môžete rozhodnúť inak. Začnite tým, čo chránite a čo vás to stojí, a podľa toho si poskladajte nastavenia.

Podpora

Ak vám rozbor pomohol a chcete ho podporiť, môžete poslať ľubovoľnú sumu. Vyberte si, čo vám vyhovuje.

Lightning (BOLT 12)

QR Lightning BOLT 12 offer

lno1pgvhqmrp0ys8xetjwe5kxetnypskuctv09ekjueq2d93vggz7yjxhrlfqjju2xf4qnvqd9fjk8acdy4cf7e7kep33vspyw8kplcs

Monero

QR Monero

89jGcmA65CReki73oLFvxHUzyR45wMqTN8G93ZYRizWVF2XUQgYKbPLGQYgxj2YjX4fxAUPQ7tLr4ATP7fpR4dSeHH3r9iH

Zcash (unified adresa)

QR Zcash

u1defv75w2x9p6u82qu8je0rrz5g98gnhvs0ervckctfrjvsscvx00e4qgfk63vm0uar587exxhtp3ps7gwd54anwm32a3sg2432htr53nv22d23agngdpdjkdt75lzd8pp0e3f6s2c6n52nk9ecmnjwvdxggflcl7ndsh5uq3wqptk60z

Ostatné formy podpory nájdete na juraj.bednar.io/podporte-ma.