APK-handtekeningen verifiëren: hoe u ervoor kunt zorgen dat uw app veilig is

A magnifying glass over a phone showing a certificate and fingerprint, illustrating verifying APK signatures

Het sideloaden van apps op Android biedt vrijheid en flexibiliteit, maar brengt een groot risico met zich mee: gemanipuleerde applicaties. Kwaadwillige actoren passen vaak populaire apps aan om er spyware of adware in op te nemen voordat ze deze opnieuw verspreiden op niet-officiële sites. Hoe weet je zeker dat de APK die je zojuist hebt gedownload exact dezelfde is als de APK die de ontwikkelaar naar Google Play heeft geüpload?

Het antwoord komt neer op APK digitale handtekeningen. Hieronder bespreken we hoe app-ondertekening daadwerkelijk werkt en lopen we door met het gebruik van onze Online APK-verificatie om de hash en het certificaat van een APK te controleren voordat u besluit deze te vertrouwen.

De 60-secondenversie:

Android ondertekent elke APK met een uitgeverssleutel. De telefoon weigert een "update" waarvan de handtekening niet overeenkomt met de bestaande installatie; dat is de belangrijkste verdediging van het besturingssysteem tegen nabootsing van identiteit. Om een ​​sideloaded APK te verifiëren, berekent u de SHA-256-hash en de handtekeningcertificaatvingerafdruk, en vergelijkt u beide vervolgens met waarden die u vertrouwt (de bestaande Play Store-installatie, de gepubliceerde vingerafdruk van de ontwikkelaar of een eerder exemplaar waarvan bekend is dat het goed is). Een match betekent dat het bestand byte-identiek is en ondertekend is door dezelfde uitgever; een mismatch betekent niet installeren.

Wat is een APK-handtekening?

Een digitale handtekening is een cryptografisch identiteitsbewijs. Wanneer een ontwikkelaar een app voltooit, 'ondertekent' hij deze met een privésleutel (keystore). Android gebruikt vervolgens de overeenkomstige openbare sleutel die in de APK is ingebed om het volgende te garanderen:

  1. Integriteit: Het bestand is niet gewijzigd sinds het is ondertekend.
  2. Authenticiteit: De ontwikkelaar is wie hij zegt dat hij is.
  3. Updates: Alleen APK's die met dezelfde sleutel zijn ondertekend, kunnen een bestaande app op uw telefoon updaten.

Evolutie van ondertekening: V1, V2, V3 en V4

Google heeft de APK-beveiliging door de jaren heen voortdurend verbeterd:

Hoe u APK-handtekeningen online kunt verifiëren

Onze APK-verificatietool berekent niet alleen hashes; het voert een volledige cryptografische audit uit van de certificaatketen. Hier ziet u hoe u het kunt gebruiken:

Stappen om te verifiëren:

  1. Navigeer naar de APK-verificatie-pagina.
  2. Selecteer uw APK- of XAPK-bestand.
  3. Onze tool parseert de map META-INF/ en extraheert de certificaatgegevens (.RSA, .DSA of .EC).
  4. Wacht tot de analyse is voltooid (dit duurt slechts enkele seconden).
  5. Controleer de Certificaatinformatie: naam van de ontwikkelaar, organisatie en land van herkomst.
  6. Controleer de Hasj: Vergelijk de SHA-256 die op onze site wordt weergegeven met de waarde die de uitgever heeft gepubliceerd op zijn eigen officiële site, projectreleasepagina of ondertekeningsmanifest.

Beveiligingswaarschuwing

Als de verificateur een "Debug-certificaat" of een onbekende "zelfondertekende" entiteit toont voor een grote app zoals Facebook of WhatsApp, INSTALLEER HET NIET. Het is vrijwel zeker gecompromitteerd.

Controlesommen begrijpen (MD5, SHA-1, SHA-256)

Controlesommen zijn tekenreeksen met een vaste lengte die het hele bestand vertegenwoordigen. Als u één pixel in het pictogram van een app wijzigt, verandert de SHA-256-hash volledig.

Hasj-type Beveiligingsniveau Opmerkingen
MD5 Nalatenschap Kwetsbaar voor botsingen. Niet voor de veiligheid.
SHA-1 Gematigd Nog steeds veel gebruikt voor snelle zoekopdrachten.
SHA-256 Uitstekend De moderne standaard voor app-verificatie.

Wat een handtekeningcertificaat u eigenlijk vertelt

Wanneer de verificateur een certificaat retourneert, zijn de onderdelen die van belang zijn voor de veiligheid van sideloading niet de kleurrijke stukjes van de X.509-metagegevens, maar een klein handjevol velden. In praktische termen:

Hash versus handtekening: het verschil dat de meeste tutorials overslaan

Mensen halen vaak 'hash' en 'handtekening' door elkaar. Ze dienen heel verschillende doeleinden en voor een veilige verificatie zijn beide nodig:

Voor een sideloaded APK combineert de sterkste zekerheid de twee: de certificaatvingerafdruk komt overeen met de bekende vingerafdruk van de uitgever En en de SHA-256 van het bestand komt overeen met de waarde die de uitgever voor die exacte build heeft gepubliceerd.

Waar u een betrouwbare referentievingerafdruk kunt krijgen

Het moeilijkste deel van verificatie is het kennen van de juiste waarde om mee te vergelijken. Een paar betrouwbare benaderingen, in ruwe volgorde van vertrouwen:

  1. De eigen website of releasepagina van de uitgever. Veel open-sourceprojecten en beveiligingsbewuste leveranciers publiceren de SHA-256-vingerafdruk van hun ondertekeningscertificaat naast hun downloads. Dit is de gouden standaard.
  2. Een bestaande Play Store-installatie. Als de app al op een door Play beheerd apparaat is geïnstalleerd, is de certificaatvingerafdruk per definitie de vingerafdruk van de uitgever. Vergelijk de vingerafdruk van uw sideloaded APK daarmee. Tools zoals Apk Analyzer (in Android Studio) of apksigner verify --print-certs lezen het rechtstreeks vanuit een geïnstalleerde APK.
  3. De eerste APK die je ooit van deze app hebt geïnstalleerd. Als u de app al een tijdje gebruikt en nooit de melding "handtekening komt niet overeen", kunt u elk van uw oudere exemplaren als referentie gebruiken. Volgende updates van dezelfde uitgever moeten dezelfde sleutel gebruiken (of roteren via v3, in welk geval de keten nog steeds verifieert).
  4. Een gearchiveerde openbare momentopname. Het internetarchief en vergelijkbare services bewaren af ​​en toe oude APK-releasepagina's samen met hun aangegeven hashes. Handig voor zeer oude builds waarbij de originele uitgeverspagina verdwenen is.

Veel voorkomende verificatiefouten

Is uw app veilig?

Raad het niet. Verifieer uw sideloaded APK's binnen enkele seconden met officiële ontwikkelaarscertificaten.

Start APK-verificatie

Veelgestelde vragen (FAQ)

Waarom blokkeert Android het installeren van een aangepaste APK?

Omdat de handtekening van de nieuwe APK niet overeenkomt met de handtekening die al is geïnstalleerd. Hiermee voorkom je dat hackers je echte bankapp ‘overschrijven’ met een neppe.

Kan ik een APK opnieuw ondertekenen nadat ik deze heb gewijzigd?

Ja, maar u gebruikt een andere sleutel. De app wordt nog steeds geïnstalleerd op een "schone" telefoon, maar ontvangt geen updates meer van de oorspronkelijke ontwikkelaar.

Wat is certificaat vastzetten?

Het is een geavanceerde beveiligingsfunctie waarbij een app expliciet controleert op een specifiek certificaat voordat hij met zijn servers communiceert, waardoor apps waarmee geknoeid is onbruikbaar worden, zelfs als ze correct worden geïnstalleerd.

Maak handtekeningverificatie onderdeel van elke sideload

Handtekeningen doen een groot deel van het zware werk in de moderne Android-beveiliging. De extra paar seconden besteden aan het uitvoeren van een bestand via een APK-verificatie is een goedkope manier om een ​​app waarmee is geknoeid van uw apparaat te houden voordat deze ooit wordt geïnstalleerd.

Ontwikkeld en gedocumenteerd door Mst Shaefale Hoofdontwikkelaar en Android-pakketarchitect • Geverifieerd op Android 12–15

Mst Shaefale onderhoudt de XAPK/APKS-fusie aan de clientzijde, de parser voor binaire manifesten en de APK v1+v2-ondertekentools op xapktoapk.com. Ontdekt u een verouderde opdracht of een wijziging in het besturingssysteem? Stuur een redactionele opmerking.