Prečo nahradenie súboru APK v službe Google Play vystrašuje niektorých bezpečnostných expertov

click fraud protection

Služba Google Play čoskoro prinúti vývojárov, aby namiesto súborov APK nahrávali balíky aplikácií, čo vyvoláva nepríjemné bezpečnostné otázky týkajúce sa tejto požiadavky.

Minulý november, Google oznámil že vývojári budú musieť publikovať nové aplikácie v Obchode Play pomocou formátu Android App Bundle (AAB) namiesto súboru APK. Práve druhý deň Google pripomenul vývojárom túto nadchádzajúcu požiadavku a spustil tak búrku kontroverzií od používateľov, ktorí sa domnievajú, že Google zabíja súbory APK, odstraňuje bočné zaťaženie, bráni obchodom s aplikáciami tretích strán a čo už.

Je pravda, že balíky Android App Bundle sú dosť veľkým odklonom od klasického formátu APK, na ktorý ste mohli byť zvyknutí ako používateľ, tak aj ako vývojár. Aj keď existuje niekoľko výhod používania balíkov aplikácií, je tu jeden kľúčový aspekt, ktorý niektorých vývojárov a bezpečnostných expertov oprávnene znepokojuje.

V tomto článku sa budeme zaoberať kritikami, s ktorými sme sa stretli v súvislosti s prechodom na Android App Bundle, ako aj niektorými navrhovanými riešeniami a povieme si aj o riešení týchto problémov navrhovaným spoločnosťou Google.

Pozadie

Predtým, ako sa tak stane, si však musíme povedať niečo o tom, ako funguje distribúcia aplikácií v systéme Android vo všeobecnosti. Ak už viete, ako funguje podpisovanie aplikácií a balíky aplikácií, môžete túto časť preskočiť.

súbory APK

Aplikácie pre Android sú väčšinou distribuované v súboroch APK. Súbor APK obsahuje všetok kód a zdroje aplikácie spolu s niektorými bezpečnostnými funkciami, ako je napríklad podpisový manifest. Keď je nainštalovaný súbor APK, v podstate sa iba skopíruje do konkrétneho priečinka a pridá sa do internej databázy nainštalovaných aplikácií.

Obsah súboru APK je možné preskúmať rovnako ako formáty archívnych súborov, ako je .zip.

Podpisy

Počas inštalácie sa overí aj podpis tejto aplikácie, aby sa zabezpečilo, že je platný. Ak je aplikácia už nainštalovaná, Android porovná podpis novej aplikácie s podpisom, ktorý už je nainštalovaný. Ak podpis nie je platný alebo sa nezhoduje, Android odmietne nainštalovať aplikáciu.

Táto kontrola podpisov je dôležitou súčasťou zabezpečenia v systéme Android. Zabezpečuje, aby aplikácia, ktorú inštalujete, je platná a aspoň z rovnakého zdroja ako tá, ktorú ste už nainštalovali. Napríklad, ak nainštalujete, povedzme moja aplikácia Lockscreen Widgets z Obchodu Play, môžete si byť dostatočne istí, že som to podpísal a že je to autentické. Ak sa potom pokúsite nainštalovať aktualizáciu widgetov Lockscreen z nejakej tienistej stránky tretej strany a tá zlyhá, budete vedieť, že niekto s týmto súborom APK manipuloval, možno preto, aby pridal malvér.

Kľúč používaný na podpísanie aplikácie je (v ideálnom prípade) nikdy verejne prepustený. Toto je známe ako súkromný kľúč. Súkromný kľúč sa potom použije na vygenerovanie kľúča zobrazeného v podpise aplikácie, známeho ako verejný kľúč. Toto je to, čo Android a obchody s aplikáciami používajú na overenie platnosti aplikácie. Nebudem sa zaoberať tým, ako presne môžete vygenerovať verejný kľúč bez odhalenia súkromného kľúča, pretože to vyžaduje veľa šifrovacej matematiky. Ak chcete viac podrobností, pozrite sa Dokumentácia spoločnosti Google o podpisovaní súborov APK alebo urobte nejaký výskum o jednosmerných matematických funkciách.

Podpisovanie aplikácie, keď spravujete svoj vlastný podpisový kľúč aplikácie. Zdroj: Google.

Ďalšou funkciou podpisov aplikácií je možnosť obmedziť povolenia iba na aplikácie so zodpovedajúcimi podpismi. Android to robí interne pre množstvo funkcií, pričom k určitým funkciám majú prístup iba aplikácie podpísané rovnakým kľúčom ako framework.

Balíky aplikácií

Teraz, keď sme vám poskytli rýchly prehľad súborov APK a podpisov, poďme sa rozprávať o balíkoch aplikácií. Tu prichádzajú na rad zdroje APK. Zdroje sú veci ako rozloženia, obrázky, zvuk atď. V podstate sú to čokoľvek, čo nie je kód. Na lepšiu podporu rôznych konfigurácií displeja a rôznych jazykov môžu vývojári vytvoriť viacero verzií rovnakého prostriedku, ktoré sa používajú v závislosti od zariadenia a jazyka.

Ale v súbore APK existujú všetky tieto zdroje bez ohľadu na to, ktoré používate. A zaberajú miesto. V závislosti od zložitosti vašej aplikácie môže existovať veľa nevyužitých zdrojov pre veľa zariadení. Toto sú balíčky aplikácií určené na riešenie. Vývojári môžu vygenerovať balík aplikácie rovnako ako súbor APK a tento balík aplikácie je možné potom nahrať do Obchodu Play, rovnako ako súbor APK.

Obsah vzorového balíka Android App Bundle zobrazujúci jeden základný modul, dva moduly dynamických funkcií a dva balíky aktív. Zdroj: Google.

Google potom použije tento balík aplikácií na vygenerovanie množstva rôznych súborov APK pre rôzne konfigurácie zariadení. Každý balík App Bundle obsahuje iba zdroje potrebné na danú konfiguráciu. Keď si používateľ stiahne danú aplikáciu, zobrazí sa mu vygenerovaný súbor APK, ktorý zodpovedá jeho konfigurácii. Pomáha to zmenšiť veľkosť sťahovania a inštalácie aplikácií, čím sa šetrí šírka pásma a úložný priestor.

Grafika, ktorá ukazuje, ako môže dynamické doručovanie viesť k menšiemu počtu zdrojov inštalovaných na zariadení. Zdroj: Google.

Inštalácia súboru APK špecifického pre vaše zariadenie samozrejme znamená, že je pre vás ťažšie skopírovať ho do iného zariadenia a nainštalovať ho bez problémov. V závislosti od vašej perspektívy to môže byť dobrá alebo zlá vec. Na jednej strane to sťažuje pirátstvo, keďže používatelia už nemajú celú aplikáciu. Na druhej strane to sťažuje legitímnu archiváciu aplikácií z rovnakého dôvodu.

Podpisovanie aplikácií

Keďže balíky Android App Bundle nie sú súbory APK, nemôžete len otvoriť súbor AAB a nainštalovať ho priamo do zariadenia. Keď jeden nahráte do Obchodu Play, Google ho použije na generovanie rôznych (nepodpísaných) súborov APK. Tieto súbory APK sa musia pred inštaláciou podpísať.

Namiesto toho, aby Google požiadal vývojára, aby podpísal a znova odovzdal vygenerované súbory APK, spravuje podpisovanie sám. Obchod Play buď použije nový kľúč, ktorý vytvorí, alebo požiada vývojára o kľúč, ktorý používa na podpis súbory APK. Pri oboch možnostiach sa Google postará o verejné podpisovanie vývojára a poskytne nahrávanie kľúč. Google používa kľúč nahrávania na interné overenie a uisťuje sa, že balík App Bundle (alebo v niektorých prípadoch súbor APK), ktorý vývojár nahráva, je správny.

Podpisovanie aplikácie pomocou podpisovania aplikácií Play. Zdroj: Google

Ak dôjde k ohrozeniu alebo strate kľúča nahrávania, vývojári môžu požiadať o nový a podpisový kľúč použitý na distribúciu aplikácie zostane nezmenený.

Podpisovanie aplikácií obsahuje oveľa viac, ale toto je relevantné pre tento článok. Ak chcete, môžete si prečítať viac o balíkoch aplikácií a prihlasovaní aplikácií na tento článok Medium od Wojteka Kalicińského.

Kritika

Teoreticky aj v praxi sú balíky aplikácií celkom skvelé. Znižujú spotrebu dát a veľkosť inštalácie, a to všetko bez toho, aby používateľ musel čokoľvek robiť. Ale kvôli tomu, ako je implementovaný, niektorí vývojári a bezpečnostní výskumníci v posledných mesiacoch vyjadrili obavy. Predtým, ako zhrniem tieto obavy, chcem chvíľu povedať, že väčšina z toho, čo je napísané nižšie, je priamo na základe série článkov od vývojára Marka Murphyho z CommonsWare. Jeho články by ste si mali určite pozrieť, pretože poskytujú viac podrobností a kritiky z pohľadu vývojára.

Bezpečnosť

V klasickom distribučnom modeli si vývojár ponechá kľúč, ktorý používa na podpis súboru APK, ako súkromný. Nikdy sa nezdieľa verejnosti a prístup k nemu by mali mať iba oprávnené osoby. To zaisťuje, že iba títo ľudia môžu vygenerovať platný súbor APK.

Ak však používate balíky aplikácií v Obchode Play, Google spravuje kľúč, ktorý podpisuje súbory APK, ktoré používatelia dostanú. The predvolená správanie pre nové aplikácie nahrané do služby Google Play od augusta 2021 je pre Google, aby vytvoril svoj vlastný distribučný kľúč, ktorý uchováva v súkromí pred vývojárom.

Zhrnutie toho, čo sa mení pre vývojárov Google Play od augusta 2021. Zdroj: Google

Predkladajú vývojári nové aplikácie Google pre nich bude predvolene spravovať ich súkromný kľúč, hoci vývojári odosielajú aktualizácie existujúce aplikácie môžete pokračovať v používaní súborov APK alebo môžu prejsť na distribúciu AAB vygenerovaním nového kľúča, ktorý Google použije pre nových používateľov. Existujúce aplikácie sa nevyžadujú prejsť z distribúcie APK na balíky Android App Bundle, hoci táto možnosť je pre nich dostupná, ak sa rozhodnú. Po určitom odmietnutí Google dokonca to umožní na nahranie vlastného súkromného kľúča, pomocou ktorého sa môže Google prihlásiť pre nové aj existujúce aplikácie. Žiadna z týchto situácií nie je ideálna, pretože bez ohľadu na to, Google bude mať prístup k vášmu súkromnému kľúču, ak budete chcieť používať balíky Android App Bundle (a vývojári nemajú v tejto veci na výber, ak chcú po auguste odoslať novú aplikáciu 2021!)

Hoci sme si istí, že Google berie bezpečnosť veľmi vážne, na Zemi neexistuje žiadna spoločnosť, ktorá by bola imúnna voči narušeniu údajov. Ak je kľúč, ktorý Google používa na podpísanie vašej aplikácie na distribúciu, v jednom z týchto porušení, potom môže ktokoľvek podpísať verziu vašej aplikácie, aby vyzerala, akoby ste ju podpísali vy. A niektorí vývojári a bezpečnostní experti z tejto možnosti nie sú nadšení. Je to veľmi, veľmi malá možnosť, áno, ale skutočnosť, že je to vôbec možnosť, niektorých v komunite Infosec desí.

Ak vývojári podpíšu súbory APK pre Android, znamená to, že každý môže overiť súbory APK zo služby Google Play, slepá dôvera sa nevyžaduje. Ide o elegantný dizajn, ktorý poskytuje overiteľnú bezpečnosť. Balíky aplikácií to stavajú na hlavu a zdajú sa byť štruktúrované tak, aby podporovali viazanosť dodávateľov. Existuje mnoho alternatívnych technických prístupov, ktoré by poskytovali malé súbory APK stále podpísané vývojármi, tieto však neuprednostňujú Play. Všetky varianty súboru APK môže napríklad vygenerovať a podpísať vývojár a následne nahrať do ľubovoľného obchodu s aplikáciami.

Určite sa nájdu argumenty, či je lepšie nechať bezpečné ukladanie súkromných kľúčov v rukách Google alebo jednotlivých vývojárov. Ale títo vývojári (pravdepodobne) zvyčajne nepoužívajú centrálne úložisko pre svoje kľúče. Tým, že nútite vývojárov používať podpisovanie aplikácií v službe Play, musí útočník so zlým úmyslom narušiť zabezpečenie spoločnosti Google iba raz, aby získal tisíce alebo milióny kľúčov.

Tu je to, čo Google hovorí o tom, ako chráni váš podpisový kľúč vo svojej infraštruktúre:

[blockquote author="Wojtek Kaliciński, Android Developer Advocate v Google"]Keď používate podpisovanie aplikácií v službe Play, vaše kľúče sú uložené v rovnakej infraštruktúre, ktorú Google používa na ukladanie vlastných kľúčov.

Prístup ku kľúčom je riadený prísnymi zoznamami prístupových práv a kontrolnými záznamami, ktoré sú evidentné pre všetky operácie.

Všetky artefakty vygenerované a podpísané kľúčom vývojára sú vám sprístupnené v službe Google Play Console na kontrolu/osvedčenie.

Okrem toho, aby sme predišli strate kľúča, veľmi často zálohujeme naše primárne úložisko. Tieto zálohy sú silne šifrované a pravidelne testujeme obnovenie z týchto záloh.

Ak sa chcete dozvedieť viac o technickej infraštruktúre Google, prečítajte si Biele dokumenty o zabezpečení cloudu Google.[/blockquote]

Tak skvelé, že všetky zvuky, strata a krádež sú stále možné. A audit traily len pomáhajú predchádzať budúcim útokom; nedostanú poškodené kľúče späť.

Potenciál pre neautorizované úpravy

Veľkým problémom spôsobu, akým Google nastavil balíky aplikácií, je možnosť pridania neoprávnených úprav do aplikácie. Proces extrakcie súborov APK z balíka App Bundle vo svojej podstate zahŕňa úpravy, pretože Google musí každý súbor APK zostaviť manuálne. Zatiaľ čo Google sľúbil, že nevkladá a ani nebude vkladať ani upravovať kód, problém s procesom App Bundle je v tom, že má právomoc to urobiť.

Tu je niekoľko príkladov toho, čo má spoločnosť na pozícii Google v kompetencii:

Povedzme, že existuje bezpečná aplikácia na odosielanie správ, ktorú ľudia používajú na komunikáciu bez rizika vládneho dohľadu. Môže to byť neuveriteľne užitočný nástroj pre ľudí protestujúcich proti autoritárskej vláde alebo dokonca pre ľudí, ktorí si len chcú zachovať svoje súkromie. Táto vláda, ktorá chce mať možnosť vidieť, čo hovoria používatelia aplikácie, by sa mohla pokúsiť prinútiť Google, aby do kódu aplikácie pridal zadné vrátka dohľadu.

Tento príklad je o niečo neškodnejší, ale je to tiež niečo, čo niektorých ľudí znepokojuje. Povedzme, že existuje aplikácia, ktorá má milióny stiahnutí denne, no neobsahuje žiadne reklamy ani analýzy. Je to obrovský zdroj údajov bez možnosti prístupu k týmto údajom. Google ako reklamná spoločnosť môže chcieť získať prístup k týmto údajom.

V klasickom modeli distribúcie aplikácií APK nemôže Google upravovať aplikácie bez zmeny podpisu. Ak Google zmení podpis, najmä v populárnej aplikácii, ľudia si to všimnú, pretože aktualizácia sa nenainštaluje. Vďaka balíkom aplikácií a podpisovaniu aplikácií však môže Google pred ich distribúciou potichu vložiť svoj vlastný kód do aplikácií. Podpis by sa nezmenil, pretože podpisový kľúč by vlastnil Google.

V klasickej schéme distribúcie súborov APK musí byť aktualizovaný súbor APK podpísaný rovnakým kľúčom, ktorý sa použil na podpísanie pôvodného súboru APK. Tento kľúč v ideálnom prípade drží iba jednotlivý vývojár. Zdroj: Zachary Wander.

aby bolo jasné, tieto príklady sú neuveriteľne nepravdepodobné. Google má tendenciu jednoducho úplne vytiahnuť z problematických trhov, skôr ako sa prispôsobiť. Ale aj keď je to nepravdepodobné, stále je to možné. Len preto, že spoločnosť sľúbi, že sa niečo nestane, nezaručí to.

Transparentnosť kódu

Google, vypočujúc si tieto obavy, tento týždeň predstavil novú funkciu s názvom Transparentnosť kódu pre balíky aplikácií. Transparentnosť kódu umožňuje vývojárom v podstate vytvoriť druhý podpis, ktorý sa používateľom dodáva s aplikáciou. Tento dodatočný podpis by mal byť vytvorený zo samostatného súkromného kľúča, ku ktorému má prístup iba vývojár. Táto metóda má však určité obmedzenia.

Ako funguje transparentnosť kódu pre Android App Bundle. Zdroj: Google

Transparentnosť kódu pokrýva iba kód. To sa môže zdať zrejmé vzhľadom na názov, ale tiež to znamená, že to používateľom neumožňuje overiť zdroje, manifest alebo čokoľvek iné, čo nie je súbor DEX alebo natívna knižnica. Hoci škodlivé úpravy súborov bez kódu majú zvyčajne oveľa menší vplyv, stále ide o dieru v zabezpečení aplikácie.

Ďalším problémom transparentnosti kódu je, že neexistuje žiadne vlastné overenie. Pre jedného, je to voliteľná funkcia, takže vývojári musia pamätať na to, že ho musia zahrnúť do každého nového súboru APK, ktorý odovzdajú. V súčasnosti sa to musí robiť z príkazového riadku a pomocou verzie bundletool ktorý sa nedodáva so štúdiom Android Studio. Aj keď ho vývojár zahrnie, Android nemá zabudované žiadne overenie, ktoré by skontrolovalo, či sa manifest transparentnosti kódu zhoduje s kódom v aplikácii.

Je na koncovom používateľovi, aby sa sám skontroloval porovnaním manifestu s verejným kľúčom, ktorý môže vývojár poskytnúť, alebo odoslaním súboru APK vývojárovi na overenie.

Transparentnosť kódu síce umožňuje potvrdiť, že žiadny kód v aplikácii nie je upravený, nezahŕňa však žiadne overenie iných častí aplikácie. V tomto procese tiež nie je prirodzená dôvera. Mohli by ste namietať, že ak nedôverujete Googlu, pravdepodobne zvládnete nezávisle overenie, ale prečo by ste mali?

Existujú ďalšie problémy s funkciou Transparentnosť kódu, as poukázal od Marka Murphyho z CommonsWare. Odporúčam prečítať si jeho článok pre hlbšiu analýzu funkcie.

Pohodlie a výber pre vývojárov

Tretím (a posledným pre tento článok) dôvodom, prečo niektorí vývojári nesúhlasia s balíkmi aplikácií, je znížené pohodlie a výber.

Ak vývojár vytvorí novú aplikáciu v Obchode Play po tom, čo Google začne vyžadovať balíky aplikácií, vyberie sa predvolenú možnosť nechať Google spravovať podpisový kľúč, nikdy nebudú mať prístup k tomuto podpisu kľúč. Ak potom ten istý vývojár bude chcieť distribuovať túto aplikáciu v inom obchode s aplikáciami, bude musieť použiť svoj vlastný kľúč, ktorý sa nezhoduje s kľúčom Google.

To znamená, že používatelia budú musieť nainštalovať a aktualizovať zo služby Google Play alebo zo zdrojov tretích strán. Ak chcú zmeniť zdroj, musia aplikáciu úplne odinštalovať, čím môžu prísť o údaje, a znova ju nainštalovať. APK agregátorom sa páči APKMirror potom sa tiež bude musieť vysporiadať s viacerými oficiálnymi podpismi pre rovnakú aplikáciu. (Technicky to už musia urobiť, pretože podpisovanie aplikácií vám umožňuje vytvoriť nový, bezpečnejší kľúč pre nových používateľov, ale pre nich a iné stránky to bude horšie, keď urobiť to.)

Reakciou Googlu na tento problém je použitie prieskumníka App Bundle alebo Artifact explorer v Play Console na stiahnutie výsledných súborov APK z nahraného balíka. Podobne ako v prípade Transparentnosti kódu, toto nie je úplné riešenie. Súbory APK stiahnuté zo služby Play Console budú rozdelené pre rôzne profily zariadení. Hoci Play Console podporuje nahrávanie viacerých súborov APK pre jednu verziu jednej aplikácie, mnoho iných distribučných kanálov to nepodporuje.

Preto veľa výhod používania balíkov aplikácií zmizne, keď vývojári spravujú viacero obchodov, čo sťažuje distribúciu. S tými novinkami Windows 11 je získanie podpory aplikácií pre Android vďaka Amazon Appstore sa niektorí domnievajú, že požiadavka na balíky aplikácií odradí vývojárov od distribúcie na Amazone. Samozrejme, prvoradým záujmom Googlu je vlastný obchod s aplikáciami, no presne o to ide vysadil ich v horúcej vode s konkurentmi viesť ich k tomu, aby urobili malé, zmierlivé zmeny ako fungujú obchody s aplikáciami tretích strán v systéme Android.

Niekoľko problémov súvisiacich s viacerými obchodmi je prepojenie aplikácií a rýchle testovanie.

Začnime prepojením aplikácií. Stiahli ste si niekedy aplikáciu, ktorá uzamyká funkcie za paywall? Takmer určite. Niektorí vývojári zahrnuli funkcie do nákupu v aplikácii, no iní sa môžu rozhodnúť vytvoriť samostatnú platenú aplikáciu. Keď sa táto doplnková aplikácia nainštaluje, funkcie hlavnej aplikácie sa odomknú.

Čo však niekomu bráni nainštalovať doplnok z pirátskeho zdroja? Existuje veľa možností pre vývojárov, ale aspoň jedna zahŕňa použitie povolení chránených podpismi. Povedzme, že hlavná aplikácia deklaruje povolenie chránené podpisom. Doplnková aplikácia potom vyhlási, že chce použiť toto povolenie. V ideálnom prípade bude doplnková aplikácia obsahovať aj nejakú funkciu overenia licencie, ktorá sa pripojí k internetu, aby sa uistil, že používateľ je legitímny.

Ak majú obe aplikácie rovnaký podpis, Android udelí povolenie doplnkovej aplikácii a kontroly ochrany proti pirátstvu prejdú. Ak doplnková aplikácia nemá správny podpis, povolenie nebude udelené a overenie zlyhá.

S klasickým modelom distribúcie APK môže používateľ získať ktorúkoľvek aplikáciu z akéhokoľvek legitímneho zdroja a skončiť s ňou. Pri súčasnom predvolenom modeli balíka aplikácií sa podpisy v hlavnej a doplnkovej aplikácii nezhodujú. Google vytvorí jedinečný kľúč pre každú aplikáciu. Vývojár mohol vždy zrušiť povolenie chránené podpisom a použiť priame overenie hash podpisu, ale je to oveľa menej bezpečné.

A potom je tu rýchle testovanie. Používatelia neustále e-mailujú vývojárom o problémoch v ich aplikáciách. Niekedy sú tieto problémy jednoduché opravy: reprodukujte problém, nájdite problém, opravte ho a nahrajte novú verziu. Ale niekedy nie sú. Niekedy vývojári nedokážu reprodukovať problém. Môžu opraviť to, čo si myslia, že je problém, ale potom to musí otestovať používateľ. Teraz predpokladajme, že používateľ nainštaloval aplikáciu prostredníctvom služby Google Play.

Pomocou modelu APK môže vývojár zmeniť nejaký kód, zostaviť a podpísať nový súbor APK a odoslať ho používateľovi na testovanie. Keďže podpis testovacieho súboru APK sa zhoduje s podpisom, ktorý si používateľ nainštaloval, je to jednoduchý proces na aktualizáciu, testovanie a hlásenie. S balíkmi aplikácií sa to rozpadá. Keďže Google podpisuje súbor APK, ktorý si používateľ pôvodne nainštaloval, nebude sa zhodovať s podpisom súboru APK, ktorý vývojár odošle. Ak bude táto aplikácia zverejnená po termíne balíkov aplikácií, vývojár nebude mať prístup ani ku kľúčom, ktoré Google používa. Aby používateľ mohol testovať, musel by pred inštaláciou testovacej verzie odinštalovať aktuálnu aplikáciu.

Je tu kopa problémov. Po prvé, sú tu nepríjemnosti na strane vývojára aj používateľa. Nutnosť odinštalovať aplikáciu len kvôli testovaniu opravy nie je zábava. A čo ak problém zmizne? Boli to zmeny, ktoré vykonal vývojár, alebo to bolo preto, že používateľ efektívne vymazal údaje aplikácie? Obchod Play má interné testovanie, ktoré má vývojárom umožniť rýchle zostavenie a distribúciu, ale vyžaduje, aby používateľ najprv odinštaloval verziu. Naozaj to nič nerieši.

V prípade, že to všetko znie ako kopa hypotetických nezmyslov, tu je veľmi reálny príklad vývojára, ktorý bude mať tieto problémy, ak nechá Google vygenerovať pre nich súkromný kľúč: João Dias. Je vývojárom aplikácie Tasker spolu s množstvom doplnkových aplikácií vrátane balíka AutoApps. S novou požiadavkou na balíky aplikácií môže byť vývojový cyklus João oveľa zložitejší, aspoň pre nové aplikácie. Priame odosielanie testovacích verzií bude menej pohodlné. Overovanie licencií bude menej efektívne.

João Dias spravuje množstvo aplikácií, ktoré sa všetky spoliehajú na zdieľanú licenciu. Ak ide o dva podpisové kľúče, môže sa mu to poriadne skomplikovať.

Môže to znieť ako trochu okrajový prípad, ale nie je to tak, že by João bol nejaký malý vývojár a je pravdepodobné, že nie je sám. V Obchode Play je veľa aplikácií, ktoré sa spoliehajú na overenie podpisu na odhalenie nelegitímnych používateľov.

Samozrejme, s novou možnosťou pre vývojárov nahrať do Google svoje vlastné podpisové kľúče sú tieto problémy aspoň trochu odľahčené. Vývojári však musia túto možnosť aktivovať pre každú aplikáciu. Ak sa tak nestane, prepojenia zlyhajú a podpora rýchleho nasadenia si bude vyžadovať nahranie balíka do Googlu a čakanie na vygenerovanie súborov APK, kým sa používateľovi odošle ten správny. Navyše to stále znamená, že musia zdieľať svoj súkromný kľúč, čo nás privádza späť k obavám, o ktorých sme hovorili predtým.

Riešenia

Toto je starý problém, keďže požiadavky na App Bundle boli zverejnené pred mesiacmi, takže medzitým bolo navrhnutých pomerne veľa riešení.

Jedným z riešení je vyhnúť sa potrebe podpisovania aplikácií Play. Namiesto generovania balíka aplikácií, ktorý Google potom spracuje do súborov APK a podpíše, môže toto spracovanie vykonať Android Studio. Potom môžu vývojári jednoducho nahrať ZIP plný miestne podpísaných súborov APK pre každú konfiguráciu, ktorú by Google vygeneroval.

S týmto riešením by Google vôbec nepotreboval prístup ku kľúčom vývojárov. Proces by bol veľmi podobný klasickému distribučnému modelu APK, ale zahŕňal by viacero menších súborov APK namiesto jedného.

Podpísanie aplikácie v Android Studio pomocou vlastného kľúča nahrávania. Zdroj: Google

Ďalším riešením je jednoducho nevyžadovať používanie balíkov aplikácií a naďalej umožniť vývojárom nahrávať lokálne podpísané súbory APK. Zatiaľ čo balíky aplikácií môžu byť v mnohých prípadoch lepším zážitkom pre používateľa, niektoré aplikácie v skutočnosti nemajú prospech z toho, že sú rozdelené podľa konfigurácie s minimálnou veľkosťou zníženie.

Ak Google implementoval obe tieto riešenia, vývojár, ktorý chce používať balíky aplikácií, nebude musieť pracovať pri podpisovaní do Googlu a vývojár, ktorého aplikácia nebude mať z tohto formátu veľký úžitok, ho nebude musieť používať všetky.

Odpovede Google

Vlastné podpisovanie

Keď sa ich prvýkrát pýtali, či majú vývojárom povoliť podpisovanie balíkov aplikácií, odpoveď Googlu bola veľmi nezáväzná:

[blockquote author=""]V krátkosti som teda hovoril o požiadavke na budúci rok, aby nové aplikácie používali balíky aplikácií, a jedna vec, ktorá s tým prichádza, je, že budeme vyžadovať podpisovanie aplikácií Play. Vývojári si teda budú musieť vygenerovať podpisový kľúč aplikácie v službe Play alebo nahrať svoj vlastný kľúč do služby Play... pretože to je predpoklad pre balíky aplikácií. Od vývojárov sme počuli, že niektorí z nich to jednoducho nechcú robiť. Nechcú mať kľúče spravované službou Play. A v súčasnosti to nie je možné, ak chcete používať balíky aplikácií.

Počuli sme však túto spätnú väzbu a... momentálne nemôžem o ničom hovoriť, nemáme čo oznámiť, ale hľadáme, ako by sme mohli zmierniť niektoré z týchto obáv. Nemusí to nutne umožniť ponechať si vlastný kľúč pri nahrávaní balíkov. Hľadáme rôzne možnosti. Práve teraz nemáme riešenie, ktoré by sme mohli oznámiť. Do splnenia požiadavky však zostáva približne rok, takže naozaj dúfam, že na to budeme mať pre vývojárov odpoveď.[/blockquote]

Bolo to koncom novembra minulého roka a zdá sa, že sa nič nestalo. Do konca zostávalo len niekoľko mesiacov Požiadavka na balíky aplikácií vstúpi do platnosti, stále neexistuje spôsob, ako by vývojári zvládli podpisovanie vlastných aplikácií. Zatiaľ čo Google to teraz umožnil nahrať svoj vlastný kľúč pre nové aj existujúce aplikácie, vývojárovi sa tým stále vymkne z rúk časť podpisovania.

Zmeny kódu

Aj keď Google konkrétne sľúbil, že Obchod Play nebude upravovať kód aplikácie, prísľub nie je zárukou. V prípade balíkov aplikácií a podpisovania aplikácií neexistujú žiadne technické obmedzenia, ktoré by spoločnosti Google bránili upravovať nahrané aplikácie pred distribúciou.

Google predstavil Transparentnosť kódu ako voliteľná funkcia, a aj keď to trochu pomáha, má to dosť problémov, ako sme už diskutovali.

Vlastnoručne vyrobené zväzky

Keď bol Google požiadaný, aby umožnil vývojárom vytvárať ich vlastné „balíky“ aplikácií (ZIP obsahujúce rozdelené súbory APK), odpoveď bola v podstate „to neurobíme“:

Pravdepodobne nie tak, ako je to opísané v otázke, pretože by to pre vývojárov ešte viac sťažilo proces publikovania a my ho vlastne chceme zjednodušiť a urobiť bezpečnejším. Opäť sme však počuli túto spätnú väzbu a budeme hľadať možnosti, ako to urobiť, pravdepodobne však nie spôsobom, ktorý je tu popísaný.

Zaujímavé je, že zdôvodnenie Google sa zdá byť také, že by to skomplikovalo publikovanie. Google však môže tento proces stále zautomatizovať ako súčasť dialógového okna generovania súboru APK v Android Studio. Okrem toho, ak je príslušná aplikácia distribuovaná vo viacerých obchodoch, v skutočnosti by to bolo proces publikovania jednoduchší, pretože vývojári by nemuseli spravovať viaceré podpisové kľúče a sťažnosti z používateľov.

A so zavedením Transparentnosti kódu sa zdá, že komplikácie nakoniec nie sú práve problémom. Transparentnosť kódu zatiaľ aspoň vyžaduje, aby vývojár používal nástroj príkazového riadka a aby používatelia explicitne overili platnosť aplikácie, ktorá sa im poskytuje. Je to komplikovanejšie ako proces vlastnej výroby balíkov a nie je jasné, prečo práve toto riešenie Google uprednostňuje.

Napredovať

Balíky aplikácií budú požadovaným distribučným formátom pre nové aplikácie odoslané do služby Google Play od 1. augusta. Aj keď Google aspoň trochu vyriešil väčšinu problémov, ktoré nastolili vývojári a odborníci na bezpečnosť, odpovede zanechávajú veľa želaní. Balíky aplikácií ako distribučný formát novej generácie majú mnoho zjavných výhod, no vždy budú pretrvávať obavy z poskytnutia čiastočnej alebo úplnej kontroly nad podpisovaním aplikácií Googlu.

Reakcie a úsilie spoločnosti Google sa určite oceňujú, no niektorí, ako napríklad Mark Murphy, majú pocit, že nezašli dostatočne ďaleko. Riešenia, ako sú vlastné balíky, sa neimplementujú a konečný termín pre balíky Android App Bundle sa vyžaduje rýchlo S blížiacim sa príchodom to nevyzerá, že vývojári v službe Google Play si budú môcť ponechať plnú kontrolu nad svojimi aplikáciami dlhšie.


O dôsledkoch požiadavky na Android App Bundle budeme hovoriť v priestore Twitter neskôr popoludní, tak sa k nám pridajte!