Schéma podpisu APK v3 bola zaznamenaná v projekte Android Open Source Project a zdá sa, že prináša podporu pre striedanie kľúčov.
Ak ste vývojár alebo ste akýmkoľvek spôsobom oboznámení s dekompiláciou, úpravou a/alebo inštaláciou upravených súborov APK, pravdepodobne poznáte podpisy aplikácií. Zjednodušene povedané, Android vyžaduje, aby aplikácia musieť byť podpísané rovnakým kľúčom, aby systém umožnil aktualizáciu príslušnej aplikácie. Android to overí kontrolou podpisu súboru APK.
Podpisy APK sú veľmi základným bezpečnostným opatrením v systéme Android, o ktorom sme už hovorili. V zásade sú všetky podpisy jedinečné pre určitého vývojára alebo skupinu vývojárov, takže ak podpis/certifikát v súbore APK nie je platný resp. sa nezhoduje s pôvodnou aplikáciou, inštalácia zlyhá, čím sa zabráni inštalácii sfalšovaných alebo falošných súborov APK do vášho Androidu zariadenie. Podpisové kľúče musí vývojár bezpečne uchovávať, pretože sú nevyhnutné na overenie a prípadne aj na vytlačenie aktualizácie aplikácie. Našťastie schéma podpisu na podpisovanie súborov APK dostáva ďalšiu revíziu – v3 – ktorá zrejme pridáva pohodlnú funkciu pri zachovaní vysokých bezpečnostných štandardov.
APK Signature Scheme v1 a v2
Nie je to tak dlho, čo aktuálna verzia APK Signature Scheme, v2, bol vydaný pre vývojárov. Koniec koncov, bol nám sotva predstavený s uvedením Androidu 7.0 Nougat, koncom roka 2016. Používanie podpisovej schémy v2 v aplikáciách pre Android 7.0+ bolo veľmi odporúčané, pretože prinieslo sériu základných opráv a vylepšenia zabezpečenia: zatiaľ čo v1 podpísala iba JAR, v2 podniká ďalšie kroky na ochranu integrity celku súbor. Podpisové schémy však nie sú spätne kompatibilné a Android Marshmallow a nižší vyžaduje pre aplikácie podpisy v1.
Pokiaľ sa nezameriavate konkrétne na používateľov na Nougate alebo vyššej, ideálnym scenárom by bolo použitie oboch podpisových schém vedľa seba, a to tak, že sa najprv podpíšete s v1 a potom odstúpite s v2. Týmto spôsobom Nougat a vyšší rozpoznajú podpis v2, zatiaľ čo Marshmallow a nižší rozpoznajú podpis v1.
Používanie iba verzie 1 sa však silne neodporúča kvôli sérii zraniteľností a iných bezpečnostných problémov, z ktorých najpozoruhodnejšie sú zraniteľnosť Janus, ktorá umožňuje útočníkom priamo útočiť a upravovať súbory APK bez ovplyvnenia podpisov. Populárne aplikácie so zriedkavými aktualizáciami, ako je Instagram alebo Snapchat, sú podpísané iba podpismi v1, čo znamená, že sú náchylné na tieto problémy.
APK Signature Scheme v3
Najväčšou funkciou nadpisu v3, ktorá má byť revíziou v2, bude podpora otáčania kľúčov. The podpisová schéma v3 predstavuje APK Signer Lineage, ktorý podľa jeden zo záväzkov,“ obsahuje históriu podpisovania certifikátov s každým predkom, ktorý potvrdzuje platnosť jeho potomka. Každý ďalší potomok predstavuje novú identitu, ktorú možno použiť na podpísanie súboru APK. Týmto spôsobom rodokmeň obsahuje dôkaz rotácie, ktorým môže súbor APK, ktorý ho obsahuje, preukázať ostatným strany, jeho schopnosť dôverovať jeho aktuálnemu podpisovému certifikátu, ako keby bol podpísaný niektorým z jeho starších jedničky."
Otáčanie kľúčov je pre vývojárov skvelá funkcia v niekoľkých smeroch. Na začiatok to môže byť užitočné pre vývojárov v tímoch pracujúcich na jednej aplikácii, takže vývojári nemusia zdieľať svoje podpisové kľúče s tímom. Keďže aplikácia potrebuje na aktualizáciu rovnaký presný podpis, všetky aplikácie musí v súčasnosti skompilovať rovnaký vývojár alebo skupina vývojári pracujúci s rovnakým kľúčom, čím sa znižuje bezpečnosť (existuje väčšia šanca na odcudzenie kľúča) a spomaľuje sa vývoj.
Okrem toho to môže byť užitočné aj v prípade, že vývojárovi ukradli/stratili podpisový kľúč, čo by normálne znamenalo, že by sa aplikácia musela znova nahrať do Obchodu Play v rámci iného balíka názov. Nie je to vôbec nezvyčajný prípad, pretože už dávno dokonca aj Google zjavne stratil podpisový kľúč pre aplikáciu Google Authenticator, čo viedlo k jeho opätovnému zverejneniu pod iným názvom balíka. Spoločnosť Google odvtedy poskytuje prostriedky na bezpečné uloženie vašich podpisových kľúčov v cloude Podpisovanie aplikácií Google Play, ale striedanie kľúčov by vám umožnilo pokračovať v aktualizácii aplikácie v prípade hypotetického neporiadku.
Kedy sa to spustí?
Aj keď by ste mohli byť nedočkaví, aby ste si to vyskúšali pre väčšie pohodlie, schéma podpisu v3 sa objavila okolo AOSP Stránka Gerrit Code Review a samotné commity neboli práve teraz zlúčené do hlavnej vetvy, takže nie sú pripravené len ešte. Mali by sme očakávať, že sa podpisová schéma v3 dostane do rúk vývojárov s nadchádzajúcim vydaním Androidu P, ak nám predchádzajúce vydanie v2 so systémom Android Nougat niečo hovorí.
Mali by sme tiež poznamenať, že striedanie kľúčov pravdepodobne nie je jediným rozdielom oproti verzii 2. APK Signature Scheme v3 stále prebieha, takže skutočné vylepšenia podpisovej schémy v3 uvidíme, keď v budúcnosti vyjde úplná dokumentácia k nej.