APK Signature Scheme v3 kommer med stöd för Key Rotation

APK Signature Scheme v3 har upptäckts i Android Open Source Project, och det verkar ge stöd för nyckelrotation.

Om du är en utvecklare eller om du på något sätt är bekant med att dekompilera, modifiera och/eller installera modifierade APK-filer, är du förmodligen bekant med programsignaturer. För att uttrycka det enkelt, Android kräver att en app måste signeras med samma nyckel för att systemet ska tillåta uppdatering av den aktuella appen. Android verifierar detta genom att kontrollera APK-signaturen.

APK-signaturer är en mycket grundläggande säkerhetsåtgärd i Android, som vi har pratat om tidigare. I grund och botten är alla signaturer unika för en viss utvecklare eller grupp av utvecklare, så om signaturen/certifikatet i en APK inte är giltigt eller inte stämmer överens med originalappen, kommer installationen att misslyckas, vilket förhindrar installationen av manipulerade eller falska APK-filer på din Android enhet. Signaturnycklar måste också förvaras säkert av utvecklaren eftersom de är viktiga för att verifiera och så småningom skjuta ut en appuppdatering. Lyckligtvis får signaturschemat för att signera APK-filer en annan version—v3—som verkar lägga till en bekväm funktion samtidigt som höga säkerhetsstandarder bibehålls.


APK-signaturschema v1 och v2

Det har inte gått alltför länge sedan den nuvarande versionen av APK Signature Scheme, v2, släpptes för utvecklare. Trots allt introducerades det knappt för oss med lanseringen av Android 7.0 Nougat, i slutet av 2016. Att använda v2-signaturschemat i appar för Android 7.0+ uppmuntrades starkt eftersom det medförde en rad viktiga patchar och säkerhetsförbättringar: medan v1 endast signerade JAR, tar v2 ytterligare steg för att skydda helhetens integritet fil. Signaturscheman är dock inte bakåtkompatibla, och Android Marshmallow och lägre kräver v1-signaturer för appar.

APK-valideringsprocess. Källa: Google.

Om du inte vänder dig till användare på Nougat eller högre specifikt, skulle det idealiska scenariot vara att använda båda signaturscheman sida vid sida, genom att först signera med v1 och sedan avgå med v2. På så sätt kommer Nougat och högre att känna igen v2-signaturen, medan Marshmallow och lägre kommer att känna igen v1-signaturen.

Att endast använda v1 avråds dock kraftigt på grund av en rad sårbarheter och andra säkerhetsproblem, varav de mest anmärkningsvärda är Janus sårbarhet, som låter angripare direkt attackera och modifiera APK-filer utan att påverka signaturerna. Populära appar med sällsynta uppdateringar som Instagram eller Snapchat signeras endast med v1-signaturer, vilket betyder att de är sårbara för dessa problem.

Kontrollera APK-signeringsversionerna av populära sociala medier/betalningsappar.

APK-signaturschema v3

Den största rubriken i v3, tänkt att vara en revidering av v2, kommer att vara stöd för nyckelrotation. De v3 signaturschema introducerar APK Signer Lineage, som enligt en av åtagandena, "innehåller en historia av signering av certifikat med varje förfader som intygar giltigheten av dess efterkommande. Varje ytterligare ättling representerar en ny identitet som kan användas för att signera en APK. På detta sätt innehåller härstamningen ett rotationsbevis genom vilket APK-filen som innehåller den kan visa, för andra parter, dess förmåga att lita på sitt nuvarande signeringscertifikat, som om det var undertecknat av en av dess äldre sådana."

Nyckelrotation är en fantastisk funktion för utvecklare på flera sätt. Till att börja med kan detta vara användbart för utvecklare i team som arbetar mot en enda app, så utvecklare behöver inte dela sina signeringsnycklar med teamet. Eftersom appen behöver samma exakta signatur för uppdatering måste alla appar för närvarande kompileras av samma utvecklare eller en grupp av utvecklare som arbetar med samma nyckel, minskar säkerheten (det finns fler chanser att nyckeln blir stulen) och saktar ner utvecklingen.

Dessutom kan det också vara användbart i fallet med en utvecklare som får sin signeringsnyckel stulen/förlorad, vilket skulle normalt innebära att appen måste laddas upp på nytt till Play Butik under ett annat paket namn. Detta är inte ett ovanligt fall alls, eftersom till och med Google uppenbarligen förlorade signeringsnyckeln för Google Authenticator-appen, vilket ledde till att de publicerade den igen under ett annat paketnamn. Google har sedan dess tillhandahållit medel för att säkert lagra dina signeringsnycklar i molnet med Google Play App Signing, men tangentrotation skulle tillåta dig att fortsätta uppdatera din app i händelse av en hypotetisk röra.

När rullar den ut?

Även om du kanske är sugen på att testa det för den extra bekvämligheten, sågs v3-signaturschemat flyta runt AOSP Gerrit Code Review-webbplatsen, och själva åtagandena har inte slagits samman till huvudgrenen just nu, så den är inte klar bara än. Vi bör förvänta oss att v3-signaturschemat kommer till utvecklarnas händer med den kommande releasen av Android P om den tidigare v2-versionen med Android Nougat säger oss något.

Vi bör också notera att nyckelrotation, ganska troligt, inte är den enda skillnaden jämfört med v2. APK Signature Scheme v3 är fortfarande ett pågående arbete, så vi kommer att se de faktiska förbättringarna av v3-signaturschemat när den fullständiga dokumentationen för det kommer ut i framtiden.