Верификација потписа апликације: како функционише, како је онемогућити помоћу Кспосед-а и зашто не бисте

Можете лако да онемогућите верификацију потписа Андроид апликације (АПК) користећи Кспосед Фрамеворк, али то не би требало да радите у великој већини случајева.

Ако сте икада покушали да измените и поново инсталирате системску апликацију, вероватно сте наишли на проверу потписа апликације у овом или оном облику. Или сте уклонили оригиналну апликацију пре него што наставите, или сте свом измењеном АПК-у дали друго име пакета да бисте га инсталирали без претходног уклањања старе апликације. И у оба случаја, такође сте морали сами да поново потпишете апликацију да бисте је навели да се инсталира.

Сва ова понашања можете заобићи тако што ћете привремено онемогућити проверу потписа апликације. Али пре него што уђемо у метафорично месо и кромпир у овом чланку и кажемо вам како то да урадите, од кључне је важности да попричамо мало о проверама потписа апликација, шта оне раде и зашто ви требало би никад уклонити их у великој већини случајева.

Основе верификације Андроид потписа

Подразумевано, Андроид ОС захтева

све апликације које треба потписати да би се инсталирале. У основи, ово значи да се потпис апликације користи за идентификацију аутора апликације (тј. провери њену легитимност), као и успостави односе поверења између апликација са истим потписом. Са првим, сигурни сте (у разумној мери) да апликација са важећим потписом долази од очекиваних програмера. А преко последњег, апликације потписане истим приватним кључем могу да раде у истом процесу и да деле приватне податке. Затим када инсталирате ажурирање апликације, Андроид ОС проверава овај потпис да би се уверио да: А) АПК није био манипулисано у времену од када је потписано, и Б) сертификат апликације одговара оном тренутно инсталираног верзија.

Па како све ово утиче на мене у стварном свету? Једноставно је, заиста. Ако набавите АПК изван Гоогле Плаи продавнице и покушате да га инсталирате као ажурирање за тренутно инсталирану апликацију (прочитајте: исти назив пакета), ОС ће покушати да потврди сертификат апликације да би се уверио да потиче са истог иницијалног програмери. Ако се сертификат подудара, инсталација апликације ће се наставити како је планирано, ваша апликација ће задржати постојеће податке и све је спремно. Ако потпис није важећи (што указује да је АПК неовлашћен) или ако се сертификат не поклапа са оригиналном апликацијом, инсталација неће успети. И као што је раније речено, сертификат апликације ће се подударати само ако је потписан истим приватним кључем који је коришћен за потписивање претходне верзије. Другим речима, можете инсталирати апликацију само ако има важећи потпис који одговара АПК-у садржај, а ажурирање можете да инсталирате само ако се и његов сертификат подудара са оним у ранијој верзији апликације.

[Као хумор на страну у овом иначе густом чланку, постоји један веома јаван пример у којем је приватни кључ за потписивање апликације изгубљен или компромитован. Наравно, мислим на Гоогле-ову сопствену апликацију Аутхентицатор, која је добила ажурирање које је променило назив свог пакета из цом.гоогле.андроид.аппс.аутхентицатор до цом.гоогле.андроид.аппс.аутхентицатор2 у ажурирању пре око две године. Због ове промене, сва наредна ажурирања апликације Аутхентицатор могла су да се издају само под новим именом пакета – са новим потписом генерисаним новим приватним кључем за потписивање.]

Зашто бисте можда желели да (привремено) онемогућите верификацију потписа

Сада, хајде да погледамо потенцијални сценарио у коме бисмо можда желели да привремено онемогућимо верификацију потписа апликације. Као што је поменуто на почетку овог чланка, верификација потписа може бити мала главобоља када се мењају постојеће системске апликације. Ако инсталирате измењену верзију системске апликације, нећете моћи да потпишете апликацију важећим и одговарајућим сертификатом. У оваквим случајевима, обично бисте желели да прво уклоните постојећу апликацију, а затим да инсталирате измењену верзију као и обично. Такође можете да онемогућите верификацију потписа, али је боље (и сигурније) да оставите верификацију потписа омогућену и једноставно уклоните стару верзију како би се нова могла инсталирати. Ово, међутим, може постати проблем ако апликација коју покушавате да замените има податке које не бисте радије изгубили. Сигурно постоје начини да ручно сачувате податке користећи роот приступ и пресадите их у нову верзију апликацију, али корисници могу такође желети да једноставно привремено онемогуће верификацију потписа, а затим да наставе са провером после. Алтернативно, као што је истакао старији члан КСДА мцбите_ит у коментарима, ово такође може бити корисно у развоју апликација.

Како то учинити

До сада је онемогућавање верификације потписа било ужасно решење за скоро сваки проблем. То је зато што када то радите, у суштини одбацујете уграђену заштиту Андроид-а која осигурава да ваше апликације нису мењане и да њихова ажурирања потичу из оригинала програмери. Али сада захваљујући магији Кспосед Фрамеворк-а, можете привремено да онемогућите верификацију потписа и поново је омогућите када завршите са инсталирањем измењене апликације. Један такав Кспосед модул који може да уради управо то је недавно објавио КСДА Сениор Мембер пилер, и ради како је планирано за све уређаје који могу да покрећу Кспосед. На овај начин, када желите да инсталирате модификовано ажурирање апликације које није правилно потписано, можете једноставно омогућите модул, поново покрените, инсталирајте модификовану исправку апликације, онемогућите модул, поново покрените и будите весели начин.

Сада када знате како да привремено онемогућите верификацију потписа, важно је поновити колико је важно то је да оставите проверу потписа омогућену у сваком тренутку, осим ако немате веома, веома добар разлог да онемогућите то. Као такав, требало би да заиста користите такав алат само да бисте применили ажурирања апликација које сами креирате и када постоје олакшавајуће околности које захтевају да то урадите уместо да прво једноставно деинсталирате стару апликацију.

Будите безбедни и користите ово разборито.