SHARE THE PERSPECTIVE
En kontrollsumma jämför byte med en referens. En signatur knyter integritet till en nyckel. Ingen av dem bevisar på egen hand att programvaran är säker.

Innan du installerar en Android-APK behöver du skilja mellan tre kontroller: Motsvarar den här filen den förväntade utgåvan? Har den signerats med den förväntade nyckeln? Kan oberoende parter återskapa den från den angivna källkoden? En SHA-256-kontrollsumma, en APK-signatur och ett reproducerbart bygge besvarar de frågorna på olika sätt.

Ingen av kontrollerna avgör på egen hand om programmet innehåller skadlig kod. Ett korrekt signerat, reproducerbart program kan fortfarande innehålla en säkerhetsbrist eller avsiktligt skadligt beteende.

Vad varje verifieringsmetod fastställer

Kontroll Användbart resultat Viktig begränsning
Filens SHA-256-hashvärde Dina byte motsvarar ett visst betrott hashvärde En angripare som byter ut både filen och hashvärdet kan kringgå denna jämförelse
Verifiering av APK-signaturen Paketets signatur är giltig enligt dess signeringscertifikat Du måste fastställa vilken signeringsnyckel som förväntas; giltighet i sig bevisar inte utgivarens identitet
Jämförelse av reproducerbara byggen Den angivna artefakten kan återskapas från dokumenterade indata Att källkod och binärfil stämmer överens bevisar inte att källkoden är säker
Säkerhetsgranskning Specifika frågor om design eller implementation har bedömts Omfattning, version, resultat och olösta problem har betydelse

Android kräver att APK-filer signeras för installation och uppdateringar. Med Play App Signing kan Google hantera appens signeringsnyckel och skapa APK-filer för distribution från ett app bundle. Detta är dokumenterade förtroendearrangemang, inte bevis för att godtyckliga mellanhänder i det tysta kan ändra ett paket och samtidigt behålla dess giltiga signatur. Se Androids guide till appsignering.

Steg 1: identifiera den exakta artefakten

Anteckna appversion, distributionskanal, filnamn och avsedd plattformsvariant. Använd utgivarens officiella distributionssida, inte en kontrollsumma kopierad från samma oombedda meddelande som levererade APK-filen.

En APK som hämtats direkt från en utgivare kan skilja sig från en APK som en appbutik har genererat för en viss enhet. Olika versioner, arkitekturer, paketeringar eller signeringsarrangemang kan av legitima skäl ge olika filhashar. Jämför likvärdiga artefakter innan du tolkar en avvikelse som bevis på manipulation.

Den praktiska frågan är: Varifrån kom det förväntade värdet, och varför litar jag på den källan? Att beräkna ett hashvärde offline löser inte förtroendeproblemet för ett referensvärde som hämtats online.

Steg 2: beräkna SHA-256 lokalt

Ersätt messenger.apk med namnet på filen du hämtade. De här exemplen läser filen; de installerar den inte.

Linux:

sha256sum messenger.apk

macOS:

shasum -a 256 messenger.apk

Kommandotolken i Windows:

certutil -hashfile messenger.apk SHA256

Jämför hela hashvärdet och bortse endast från mellanslag i visningen och skillnaden mellan stora och små bokstäver. Jämför inte bara de första eller sista tecknen. Spara det förväntade hashvärdet tillsammans med utgåve- och versionsinformationen så att jämförelsen går att upprepa.

Om värdena skiljer sig åt ska du stoppa innan installationen. Kontrollera artefakten och versionen, hämta vid behov filen igen från den betrodda källan och fråga utgivaren om en oförklarad avvikelse. ”Korrigera” inte den förväntade kontrollsumman så att den passar filen du råkade få.

Steg 3: kontrollera APK-signaturen

För användare som har Android SDK Build Tools beskriver Googles dokumentation för apksigner signaturverifiering och visning av certifikatinformation:

apksigner verify --verbose --print-certs messenger.apk

Verifieringen ska lyckas för de plattformar som APK-filen stöder. Jämför informationen om signerarens certifikat med betrodda utgåveuppgifter eller utgivarens dokumenterade följd av signeringsnycklar. En signatur som skapats med en okänd nyckel blir inte betrodd bara för att ordet ”verifierad” visas. Även ett legitimt byte av signeringsnyckel kräver belägg, inte bara en uppmaning att ignorera en avvikelse.

APK-filens SHA-256-hashvärde och signeringscertifikatets SHA-256-fingeravtryck är olika värden. Jämför inte det ena med det andra.

Steg 4: leta efter belägg för reproducerbara byggen

Ett påstående om ett reproducerbart bygge behöver en bestämd källkodsrevision, byggmiljö, instruktioner och målartefakt. Oberoende parter ska kunna återskapa den artefakten och jämföra resultatet. Definitionen från projektet Reproducible Builds gör dessa indata till en del av påståendet.

För en meddelandeapp omfattar användbara belägg för en utgåva en källkodstagg, låsta versioner av beroenden och verktygskedja, bygginstruktioner samt resultat från oberoende jämförelser. Fråga exakt vad som jämfördes: en osignerad artefakt, en signerad APK eller utvalda delar av paketets innehåll. Dra inte slutsatsen att ett bygge är reproducerbart bara för att källkod och ett hashvärde för nedladdningen har publicerats.

Reproducerbarhet stärker kopplingen mellan granskad källkod och distribuerad kod. Den gör inte en ogranskad implementation till ett säkert protokoll och bevisar inte att en telefon som är i bruk är okomprometterad.

Vilken roll Livaras Proof Lab har

Livaras Proof Lab erbjuder lokal hashberäkning av APK-filer för jämförelse med det publicerade hashvärdet. Dess kryptografiska demonstrationer har snävare omfattning än en granskning av hela meddelandeprotokollet. Använd hashkontrollen för dess angivna syfte, tillsammans med den förväntade utgåve- och signeringsinformationen; behandla den inte som ett oberoende bevis på reproducerbara byggen eller frånvaro av bakdörrar.

Hotmodellen tar uttryckligen upp begränsningen när både en APK och dess visade hashvärde kan bytas ut. Därför är referensvärdets ursprung lika viktigt som att utföra beräkningen korrekt.

Vanliga frågor

Bevisar en matchande kontrollsumma att en APK är säker?

Nej. Den fastställer en överensstämmelse med referensens hashvärde, förutsatt att referensen är tillförlitlig och att hashfunktionens säkerhetsegenskaper gäller. Den bedömer inte programmets beteende.

Är signaturverifiering överflödig om kontrollsumman stämmer?

Nej. Kontrollerna ger olika slags belägg. En signatur knyter paketets integritet till en nyckel; ett filhashvärde identifierar en bestämd följd av byte.

Måste en fil från appbutiken matcha APK-filens hashvärde på webbplatsen?

Bara om de är avsedda att vara samma artefakt. Kontrollera först distributionskanal, version och paketering. En oförklarad avvikelse bör undersökas, inte leda till en automatisk anklagelse eller ett automatiskt godkännande.

Kan de här kontrollerna upptäcka spionprogram som redan finns på min telefon?

Nej. De bedömer en installationsartefakt, inte varje komponent i enhetens aktuella körtillstånd.

Verifiera ditt bygge i Proof Lab
CONTINUE THE THREADAndroid & device security ↗
YOU’VE REACHED THE ENDBack to the reading room ↗