Internet a počítače nie sú to čo bývali: prečo vám nebudú fungovať appky

K napísaniu tohto článku ma viedol fakt, že mi prestala fungovať appka X (Twitter) na mojom mobile. Dôvodom je používanie nových technológií, ktoré zásadne obmedzujú možnosti užívateľov používať svoje zariadenia.

Historické okienko

Internet bol od začiatku otvorenou platformou, založený na protokoloch, ktoré mohol ktokoľvek implementovať. Protokoly ako TCP/IP, HTTP, TLS, SMTP, POP3, IMAP, FTP apod. zabezpečovali, že ste mohli používať akýkoľvek kompatibilný softvér a vaše aplikácie, aj váš operačný systém fungoval. Protipól k vtedajšiemu internetu boli uzavreté komunikačné platformy, či operačné systémy s natívnymi aplikáciami (.exe súbor ste na Linuxe alebo Macu spustili len ťažko – platilo to aj opačne, ale Linuxové aplikácie ste mali väčšinou so zdrojovými kódmi, takže ste ich mohli spustiť kdekoľvek).

Tento problém sa do veľkej miery podarilo vyriešiť. S nárastom používania Mac-ov (a čiastočne Linuxu) a s príchodom mobilných platforiem nastalo niekoľko pozitívnych zmien:

  • Frameworky a programovacie jazyky (Java, JavaScript) na multiplatformové aplikácie. Idea bola, že napíšete jednu aplikáciu v jazyku Java a spustíte ju všade. Java síce už nie je až taká kúl ako kedysi, ale s frameworkami, ktoré dodávajú podobnú službu sa roztrhlo vrece a dnes je možné písať kvalitné multiplatformové aplikácie.
  • Protokoly vs. platformy. Túto hru síce momentálne znova prehrávame a kyvadlo sa otáča, ale je dôležité si to uvedomiť. Výsledok web 2.0 revolúcie a browser wars bolo, že webové stránky a neskôr webové aplikácie bežali na akejkoľvek platforme, ktorá mala webový browser. Bolo to spojenie protokolov a štandardných technológií, vďaka ktorým ste mohli používať pomerne pokročilé appky (napríklad Google Docs, ktoré nahradili vtedy dominantný Microsoft Office). Na poslanie e-mailu bolo jedno, či používate Hotmail, Gmail, Protonmail. Kalendárová pozvánka funguje ako príloha e-mailu bez ohľadu na to, akú kalendárovú appku používate. Bitcoiny môžete poslať bez ohľadu na to, akú peňaženku používate vy a váš príjemca. Toto všetko je možné vďaka otvoreným protokolom.
  • Open-source a slobodný softvér umožnili, že ak aj pôvodný autor aplikácie nemá operačný systém alebo zariadenie, na ktorom by appka mohla bežať, preportuje ju niekto iný. Open source model úplne narušil model predaja softvéru a trochu nešťastne sme naskočili na iný model – softvér ako služba (SaaS). Ľudia platia mesačné predplatné na appky od výmyslu sveta. Ale open-source bol veľkým ťahúňom a adaptovali ho dokonca aj úhlavní nepriatelia tohto modelu. To vidíme na tom, že Microsoft kúpil Github, kde sa väčšina vývoja odohráva a uvoľňuje obrovské množstvo open-source softvéru. Ich zaujíma primárne to, že im platíte predplatné za ich softvér alebo infraštruktúru. Ak zákazník dokáže viac vďaka open-source softvéru, sú radi.

Všetky tri tieto modely sú teraz do nejakej miery narušené. Vývojári softvéru sú často hrdí, že softvér je „Mac only“, teda nemá množstvo portabilného kódu, ale tlačítka sú zakrútené a vymaľované presne tak, ako to nadizajnovali dizajnéri neportabilného frameworku. Platformy vyhrávajú nad protokolmi. Už nepoužívame protokol XMPP, SMTP, ale Facebook, Twitter/X, … Tieto platformy výrazne obmedzujú, s akým softvérom ich môžete používať. To zároveň znižuje výhody open-source modelu. A open-source model je zároveň narušený novými gatekeepermi – obchodmi s aplikáciami, ktoré vracajú staré modely predaja softvéru, pričom si berú svoje percentá.

To, čo však mnohí nevidia je problém, ktorý len prichádza, ale je veľkou negatívnou silou.

Dovidenia API – platformy vyhrávajú nad protokolmi

V našich zariadeniach máme poväčšinou procesory, ktoré dokážu bežať ľubovoľný kód. Podhodíte mu počítačovú hru, webový prehliadač, operačný systém a procesor ho vykoná. Ak sa jedná o program, ktorý komunikuje otvoreným protokolom (napríklad prehliadač stránok, prehrávač podcastov, e-mailový klient, …), tak je v zásade jedno, aký je kód – ak chcete, môžete používať open-source a bude fungovať rovnako dobre. Ak chcete čokoľvek vo fungovaní tohto klienta zmeniť, môžete.

Mnohé platformy do nejakej miery fungovali podobne. Facebook aj Twitter mali síce webové rozhranie aj mobilnú appku, ale ak ste chceli používať alternatívneho klienta, mohli ste to urobiť. Vznikali tak rôzne appky ako napríklad Buffer, Hootsuite, TweetDeck, ktoré vám umožnili s obsahom pracovať inak. K prvému obmedzeniu došlo po škandále Cambridge Analytica, kedy toto API bolo zneužité na profilovanie ľudí na cielený volebný marketing (mimochodom, vyzerá, že jeho účinnosť a dopad bol dosť zásadne prehnaný). Mnohé volania API a teda aplikácie, ktoré toto API používali boli obmedzené.

Po tom ako Twitter kúpil Elon Musk s kamarátmi, došlo k veľkému obmedzeniu API aj touto platformou. Nemôžete už mať otvorené klienty, ktoré používajú protokol – za API musíte platiť a aj to API je obmedzené. Jack Dorsey – zakladateľ Twitteru – sa vyjadril, že to, že Twitter bol platforma a appka a nie protokol bola najväčšia chyba. Vďaka tomu začal ešte v Twittri podporovať projekt BlueSky a momentálne podporuje otvorený protokol Nostr, ktorý daný problém rieši.

Samozrejme, keďže sú aplikácie postavené na otvorených webových technológiách, stále bola možnosť pozrieť sa, ako komunikuje oficiálna appka (alebo webová stránka) so serverom a robiť niečo podobné. Na strane platformy vznikli teda rôzne spôsoby ako zistiť, či človek používa zmodifikovanú appku.

Príkladom ako to funguje môže byť krásny projekt bubbles od Pavla Trávnika. Idea je jednoduchá – poďme si zdieľať zoznam zablokovaných ľudí na Facebooku. Ak môj dobrý kamarát niekoho zablokoval, je väčšinou dobrý nápad, aby som toho človeka zablokoval aj ja. Keďže sociálne siete sú o pozornosti, venovať pozornosť negatívnym ľuďom sa nevypláca. A zlé správanie je niekedy fajn potrestať sociálnou ostrakizáciou. Takýto projekt šetrí čas. Automatizácia blokovania funguje cez webový prehliadač ovládaný automatizačným nástrojom. Toto zlyhá väčšinou už v časti písania hesla, kedy JavaScript v stránke zistí, že človek nepíše na klávesnici, prípadne je rytmus písania príliš pravidelný. A ak chcete importnúť zoznam sto zablokovaných ľudí, server zistí, že blokujete nejak príliš rýchlo a teda to nemôžete robiť ručne a zablokuje vás.

Všetky tieto spôsoby blokovania však závisia na heuristike a je to hra na mačku a myš. Heslo môžete písať pomaly alebo vám appka povie, aby ste sa prihlásili manuálne. Medzi jednotlivými zablokovaniami môže byť náhodný a pomerne dlhý čas, aby to nebolo divné – ak appka beží aj dva dni na pozadí, je to jedno.

Hardvérová atestácia

A tu sa dostávame k technológii, ktorú väčšina z vás nosí vo vrecku a ani o tom nevie. Máte síce „váš“ telefón, ale už to nie je úplne všeobecný procesor, ktorý spustí akýkoľvek kód, ktorý mu poviete. A ak aj je (napríklad Pixel telefón s GrapheneOS), tak si appka môže vyžiadať hardvérovú atestáciu, ktorú neobídete ani open-source softvérom.

Procesor vo vašom zariadení totiž vie, aký operačný systém beží. Vie verifikovať kľúče od bootloadera až po operačný systém. Zároveň vie, aká appka beží (a aký má hash), odkiaľ bola nainštalovaná. Vie dokonca garantovať, že aplikácia je izolovaná a do jej činnosti nezasahujú iné appky. A toto všetko garantuje procesor – bez ohľadu na to, aký operačný systém máte nainštalovaný. Procesor má podpisovací kľúč, ktorý mu bol vygenerovaný v továrni (a je unikátny pre vaše zariadenie).

Rodný list procesora

Kľúč procesora nie je len tak nahratý v pamäti, odkiaľ by sa dal skopírovať. Vzniká priamo pri „narodení“ čipu v továrni, často vypálením do kremíka alebo využitím mikroskopických fyzikálnych nedokonalostí výroby, ktorým hovoríme PUF (Physically Unclonable Function). Tieto nedokonalosti sú jedinečné ako ľudský odtlačok prsta a slúžia na vygenerovanie kľúča, ktoré nikto, ani samotný výrobca, nepozná a nevie skopírovať, iba ho v továrni kryptograficky podpíše.

Výsledok je, že v továrni vyrobený čerstvý čip má v sebe privátny kľúč. Po spustení len povie „prislúchajúci verejný kľúč je toto číslo“ a systém v továrni verejný kľúč podpíše („procesor vyrobený podľa štandardov“). Procesor má hardvérové obmedzenia na to, za akých okolností kľúč podpíše a niečo s ním urobí.

Tieto technológie sú známe ako Secure Enclave v Apple svete, TrustZone (ARM technológia využívaná na Android zariadeniach) alebo TPM a SGX v počítačoch (resp. serveroch). Je to v podstate samostatný, miniatúrny počítač v počítači s vlastnou pamäťou a logikou, do ktorého nevidí ani operačný systém, a dokonca ani vy s plnými administrátorskými právami.

Práve tu do hry vstupujú mechanizmy ako Play Integrity API od Google alebo App Attest na iOS, ktoré tento hardvérový trezor využívajú ako notára. Keď spustíte bankovú aplikáciu alebo hru, táto požiada trezor o vystavenie „potvrdenia o pravosti“. Trezor skontroluje, či systém nebol narušený, či nejde o emulátor na serverovej farme v Číne, a túto správu digitálne podpíše oným nevytiahnuteľným kľúčom, pričom server na druhej strane overí podpis výrobcu. Vývojári aplikácií tak získavajú do rúk mocnú zbraň, vďaka ktorej majú takmer matematickú istotu, že na druhej strane je skutočné, nemodifikované fyzické zariadenie a nie skript, ktorý by sa snažil hackovať hru alebo zakladať tisíce falošných účtov. Pre autorov to znamená koniec lacného spamu a férové prostredie pre hráčov, no pre nás to znamená, že ak nemáme „kóšer“ systém schválený výrobcom, dvere do služby ostávajú zatvorené.

Táto technológia však siaha ešte ďalej a umožňuje niečo, čo znie ako paradox – bezpečné spracovanie dát na cudzom hardvéri bez toho, aby ich majiteľ hardvéru videl. Ukážkovým príkladom je aplikácia Signal a jej riešenie na objavovanie kontaktov. Signal potrebuje zistiť, kto z vašich známych používa ich appku, no z hľadiska súkromia nesmie vidieť váš zoznam kontaktov v čitateľnej podobe. Preto vaše zašifrované čísla pošle do špeciálnej enklávy na svojich serveroch (postavenej na technológii Intel SGX). Táto enkláva dáta v izolácii dešifruje, porovná a vráti výsledok, pričom prevádzkovateľ Signal-u ani prípadní hackeri na ich serveroch nikdy nevidia obsah vašich kontaktov, pretože nemajú kľúč od bežiacej enklávy. Je to dôkaz, že hardvérová atestácia môže slúžiť na ochranu súkromia, hoci jej primárne nasadenie v mobilnom svete skôr smeruje k upevňovaniu kontroly nad tým, čo so svojím zariadením smiete robiť.

Táto technológia sa dá využiť na rôzne iné užitočné veci. Používajú ju niektoré kryptomenové bridge medzi sieťami, dokonca sa dá používať na privátne smart kontrakty, ktorých správne vykonanie certifikuje práve kľúč procesora v secure enclave.

Prečo mi nefunguje X a množstvo iných appiek

Vývojári appiek čakali na adopciu týchto technológií. Napríklad appka X (bývalý Twitter) sa už neprihlási, ak nezbehne plná atestácia. To znamená, že jediný, komu bude fungovať prihlásenie cez túto appku je človek s certifikovaným, nerootnutým telefónom, s originálnym operačným systémom výrobcu, originálnou nezmodifikovanou aplikáciou X nainštalovanou z Play Store alebo App Store. Atestácia dokonca nezbehne ani keď máte príliš starý operačný systém, ktorý by mohol mať bezpečnostné zraniteľnosti.

Je to pre výrobcov spôsob, ako zabezpečiť, že užívateľ má ako-tak bezpečné prostredie, že sa baví naozaj s oficiálnou appkou a nie nejakým skriptom alebo botom. Umožňuje to obmedzenie spamu, vytváranie účtov, prípadne znemožnenie blokovania reklamy.

A zároveň to ide úplne proti filozofii internetu. Namiesto protokolov, na ktorých boli postavené internetové služby, máme end-to-end kontrolované appky a nemáme pod kontrolou dokonca ani tú časť, ktorú bežíme na vlastnom zariadení, ktoré je našim majetkom. Ak sa rozhodneme na zariadenie nainštalovať iný operačný systém, prípadne využiť možnosť modifikovať ho vďaka open-source licenciám, máme smolu.

Čo je ešte smutnejšie, sme tak zamknutí na dve firmy – Google a Apple a ich schválených partnerov. Napríklad GrapheneOS je oveľa bezpečnejší Android ako oficiálny Android s množstvom bezpečnostných patchov. Existuje spôsob ako overiť, že beží oficiálny, nerootnutý GrapheneOS pomocou hardvérovej atestácie, ale keďže nie je podpísaný kľúčom Google, väčšina výrobcov appiek ho nepodporuje (ale je to možné!), čo je trochu paradox – všetky záruky, ktoré dáva atestácia sú pri GrapheneOS dokonca silnejšie ako oficiálne Androidy – nemožnosť rootnuť a manipulovať s appkou, úplne najnovšie bezpečnostné aktualizácie, ktoré sa často dostanú do oficiálnych firmware výrobcov niekoľko týždňov až mesiacov neskôr.

Problém majú aj užívatelia telefónov Huawei. Tie sú síce založené na Androide, ale s Google sa už nekamarátia a tak atestácia neprejde.

Čo z toho má Google a Apple?

Aj napriek tomu, že Google ekosystém je pomerne otvorený a samotný Android je open-source, jeho použiteľnosť bez licencie na Android, ktorú platí väčšina výrobcov dosť klesá. Google poskytol technológiu, vďaka ktorej väčšina užívateľov bude musieť byť v Google ekosystéme, vrátane ich obchodu, z ktorého obratu má podiel.

Paradoxne to urobil tak, že tvorcom aplikácií dodal užitočnú službu a znížil hodnotu produktov (lacnejšej alebo lepšej) konkurencie, ktorá by chcela stavať na otvorených Android technológiách, ale neplatiť Google poplatky. Domáci kutilovia a malé firmy teda nebudú môcť vytvárať až tak použiteľné zariadenia.

Čo je ešte horšie, atestácia overuje aj to, či je operačný systém aktuálny a bezpečný. Ak si kúpite lacnejšie zariadenie, ktoré má krátku podporu bezpečnostných aktualizácií, môže sa vám veľmi ľahko stať, že vám na ňom o rok-dva po poslednej aktualizácii nepôjdu ani aplikácie, ktoré fungovali – X, bankové aplikácie a podobne. Nemáte inú možnosť ako si kúpiť nové zariadenie. Keďže ste v Google ekosystéme uzamknutí pravdepodobne preto, že ste si cez Play Store kúpili nejaké appky, bude to znova zariadenie s pečiatkou od Google (aj keď od alternatívneho výrobcu). Teda neprejdete k Huawei, ani k Apple. Na Huawei vám nebudú fungovať appky kvôli atestácii a na Apple platforme by ste si mnohé aplikácie museli kúpiť znovu.

Tento tlak zatiaľ až tak nevzniká, nie všetky appky (s výnimkou X) vyžadujú hardcore atestáciu, ale výsledkom o nejaký čas bude, že budete musieť aktualizovať hardvér, pretože jednoducho prestane byť použiteľný. A aj napriek tomu, že jadro Android systému je open-source, nemôžete si ho ani aktualizovať s pomocou komunity. Rôzne alternatívne operačné systémy ako napríklad LineageOS, ktoré starším zariadeniam dali dlhší život už nebudú riešením, lebo síce na zariadení môžete mať bezpečnejší systém s aktualizáciami, ale atestácia aj tak neprejde.

Riešenie

Pre X a aj mnohé iné aplikácie je riešenie vrátiť sa späť k pôvodnej filozofii internetu – namiesto appiek používať otvorené protokoly. To sa momentálne stále dá. Napríklad X môžete používať v prehliadači, dokonca sa môže tváriť tak trochu ako appka cez možnosť „Add To Homescreen“. Táto technológia sa volá Progressive Web App.

Keďže ľudia stále používajú X a aj iné appky z desktopových počítačov, kým nebude podobný systém atestácií dostupný na väčšine desktopových operačných systémov, máme stále webový prístup. Nie je to však vždy riešením – napríklad niektoré banky vôbec nemajú webové rozhranie, prípadne na prihlásenie do webového rozhrania potrebujú appku, ktorá vyžaduje atestáciu.

Konkrétne pre appku X dokonca môžete používať rozšírenie prehliadača Control Panel for Twitter, ktoré umožní zmeniť správanie X vo vašom prehliadači – zablokovať niektoré funkcie, pridať funkcie, nezobrazovať reklamy a podobne. Čiže presne to, čomu chceli zabrániť atestáciou stále funguje v prehliadači. A paradoxne, čím viac nás bude používať webovú verziu, tým menej pravdepodobné je, že prestane fungovať úplne – ak dostatočné množstvo ľudí používa X cez web a cez appku ho používať nebude, hra na atestáciu nebude fungovať.

Mnohé platené služby však o užívateľov GrapheneOS alebo telefónov iných výrobcov nemajú záujem. Banka si môže jednoducho povedať, že ak používate indický alebo čínsky telefón bez rodného listu od Google, nie ste pre ňu zaujímaví ako zákazník. Nemáte peniaze ani na „poriadny telefón“. A ste vylúčení z používania moderných služieb.

Hru o otvorený internet teda čiastočne prehrávame, ale otvorený internet vo forme web technológií je naša najsilnejšia zbraň. Pokiaľ užívatelia používajúci appky cez web sú dostatočne zaujímaví, mali by sme si uchovať aspoň túto možnosť.

Záver

Vybojovali sme ťažký boj o otvorený internet (vs. uzavreté platformy ako AOL, Prodigy, …). Slobodný a open-source softvér vyhral na plnej čiare – Linux je najrozšírenejší operačný systém, beží na routroch, všetkých Android zariadeniach, mnohých serveroch a podobne. Slobodný a open-source softvér dáva užívateľom naspäť do rúk možnosti, aby ich výpočtové prostredie fungovalo tak, ako si ho predstavujú.

Bohužiaľ, tak trochu sme premeškali ďalší súboj a umožnili sme dvom firmám úplne ovládnuť trh s aplikáciami. To, či sa appka dostane do Google Play alebo Apple App Store rozhoduje o tom, či má šancu prežiť. A podobné je to aj s mobilnými zariadeniami. Mám napríklad Daylight Computer alebo Pixel s GrapheneOS, ale o tom, či mi na ňom pobeží appka rozhoduje v tomto prípade do veľkej miery Google. Aj keď v prípade GrapheneOS sa aspoň tvorca appky môže rozhodnúť, že verí aj GrapheneOS kľúčom, čo je dobrý nápad a tvorca o nič zásadné nepríde, práve naopak.

Máme síce otvorený internet, mnohé otvorené protokoly a dokonca otvorený zdrojový kód. Ale nič z toho nemôžeme využiť. Cez otvorený internet sa na služby môže prihlasovať len oficiálna appka, nie hocikto, kto dokáže komunikovať daným protokolom. A akákoľvek zmena operačného systému alebo kódu appky, na ktoré nám často dávajú dokonca práva licencie znamená, že procesor odmietne podpísať atestáciu a appka prestane fungovať úplne.