Ověřování podpisu aplikací pro Android (APK) můžete snadno zakázat pomocí Xposed Framework, ale v drtivé většině případů byste to dělat neměli.
Pokud jste se někdy pokoušeli upravit a přeinstalovat systémovou aplikaci, pravděpodobně jste se setkali s kontrolami podpisů aplikací v té či oné podobě. Buď jste před pokračováním odstranili původní aplikaci, nebo jste svému upravenému souboru APK dali jiný název balíčku, abyste jej mohli nainstalovat bez předchozího odstranění staré aplikace. A v obou případech jste také museli aplikaci znovu podepsat, abyste ji mohli nainstalovat.
Všechna tato chování můžete obejít dočasným vypnutím kontroly podpisu aplikace. Ale než se pustíme do metaforického masa a brambor v tomto článku a řekneme vám, jak na to, je důležité, abychom si trochu popovídali o kontrolách podpisů aplikací, o tom, co dělají a proč vy by měl nikdy v naprosté většině případů je odstranit.
Základy ověřování podpisu Android
Ve výchozím nastavení vyžaduje operační systém Android Všechno
aplikace, které mají být podepsány, aby mohly být nainstalovány. Velmi zjednodušeně to znamená, že podpis aplikace se používá k identifikaci autora aplikace (tj. ověřit jeho legitimitu) a také vytvořit vztahy důvěryhodnosti mezi aplikacemi se stejným podpisem. S prvním máte jistotu (v rozumné míře), že aplikace s platným podpisem pochází od očekávaných vývojářů. A díky tomu mohou aplikace podepsané stejným soukromým klíčem běžet ve stejném procesu a sdílet soukromá data. Poté, když nainstalujete aktualizaci aplikace, operační systém Android zkontroluje tento podpis, aby se ujistil, že: A) nebyl soubor APK byl zfalšován v době od podpisu a B) certifikát aplikace se shoduje s certifikátem aktuálně nainstalovaného verze.Jak mě to všechno ovlivňuje v reálném světě? Je to jednoduché, opravdu. Pokud získáte soubor APK mimo Obchod Google Play a pokusíte se jej nainstalovat jako aktualizaci aktuálně nainstalované aplikace (přečtěte si: stejný název balíčku), OS se pokusí ověřit certifikát aplikace, aby se ujistil, že pochází ze stejné iniciály vývojáři. Pokud se certifikát shoduje, instalace aplikace bude pokračovat podle plánu, vaše aplikace si zachová svá stávající data a vše je omáčka. Pokud podpis není platný (což znamená, že soubor APK byl zfalšován) nebo pokud certifikát neodpovídá certifikátu původní aplikace, instalace se nezdaří. A jak bylo uvedeno dříve, certifikát aplikace se bude shodovat pouze v případě, že je podepsán stejným soukromým klíčem, který byl použit k podpisu předchozí verze. Jinými slovy, aplikaci můžete nainstalovat pouze v případě, že má platný podpis, který odpovídá APK obsah a aktualizaci můžete nainstalovat pouze tehdy, pokud se její certifikát také shoduje s certifikátem předchozí verze aplikace.
[V tomto jinak hutném článku je vtipné, že existuje jeden velmi veřejný příklad, kdy byl ztracen nebo kompromitován podpisový klíč soukromé aplikace. Mám samozřejmě na mysli vlastní aplikaci Google Authenticator, která obdržela aktualizaci, která změnila název balíčku z com.google.android.apps.authenticator na com.google.android.apps.authenticator2 v aktualizaci asi před dvěma lety. Kvůli této změně mohly být všechny následující aktualizace aplikace Authenticator vydávány pouze pod novým názvem balíčku – s novým podpisem vygenerovaným novým soukromým podpisovým klíčem.]
Proč si můžete přát (dočasně) deaktivovat ověřování podpisu
Nyní se podívejme na potenciální scénář, ve kterém bychom mohli chtít dočasně zakázat ověřování podpisu aplikace. Jak již bylo zmíněno na začátku tohoto článku, ověření podpisu může být při úpravách stávajících systémových aplikací trochu bolestí hlavy. Pokud nainstalujete upravenou verzi systémové aplikace, nebudete moci aplikaci podepsat platným a odpovídajícím certifikátem. V případech, jako je tento, byste normálně chtěli nejprve odstranit existující aplikaci a poté nainstalovat upravenou verzi jako obvykle. Můžete také zakázat ověřování podpisů, ale je lepší (a bezpečnější) nechat ověřování podpisů zapnuté a starou verzi jednoduše odebrat, aby se mohla nainstalovat nová. To se však může stát trochu problémem, pokud aplikace, kterou se pokoušíte nahradit, obsahuje data, o která byste raději nepřišli. Určitě existují způsoby, jak data uchovat ručně pomocí přístupu root a transplantovat je do nové verze aplikaci, ale uživatelé mohou také chtít jednoduše dočasně deaktivovat ověřování podpisů a poté pokračovat v kontrolách později. Alternativně, jak upozornil starší člen XDA mcbyte_it v komentářích se to může hodit i při vývoji aplikací.
Jak na to
Až dosud bylo zakázání ověřování podpisů hrozným řešením téměř jakéhokoli problému. Je to proto, že když tak učiníte, v podstatě zahodíte vestavěnou ochranu Androidu, která zajišťuje že s vašimi aplikacemi nebylo manipulováno a že jejich aktualizace pocházejí z originálu vývojáři. Nyní však díky kouzlu Xposed Framework můžete dočasně zakázat ověřování podpisů a znovu je povolit, jakmile dokončíte instalaci upravené aplikace. Jeden takový modul Xposed který umí přesně toto, nedávno vydal XDA Senior Member pylera funguje tak, jak bylo plánováno pro všechna zařízení schopná spustit Xposed. Tímto způsobem, když si přejete nainstalovat upravenou aktualizaci aplikace, která nebyla řádně podepsána, můžete jednoduše aktivujte modul, restartujte, nainstalujte upravenou aktualizaci aplikace, deaktivujte modul, restartujte a buďte veselí cesta.
Nyní, když víte, jak dočasně zakázat ověřování podpisů, je důležité zopakovat, jak důležité je ponechat ověřování podpisu vždy zapnuté, pokud nemáte velmi, velmi dobrý důvod k deaktivaci to. Takový nástroj byste proto měli skutečně používat pouze za účelem použití aktualizací aplikací, které sami vytvoříte a kdy existují polehčující okolnosti, které vyžadují, abyste tak učinili, než abyste nejprve odinstalovali starou aplikaci.
Buďte v bezpečí a používejte to uvážlivě.