APK-handtekeningen verifiëren: hoe u ervoor kunt zorgen dat uw app veilig is
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:
- Integriteit: Het bestand is niet gewijzigd sinds het is ondertekend.
- Authenticiteit: De ontwikkelaar is wie hij zegt dat hij is.
- 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:
- V1 (Jar-ondertekening): Ondertekent individuele vermeldingen in de ZIP. Langzaam en kwetsbaar voor bepaalde aanvallen.
- V2 (APK-handtekeningschema): Ondertekent het gehele bestandsblok. Veel sneller te verifiëren en veiliger. (Android 7.0+)
- V3 (sleutelrotatie): Hiermee kunnen ontwikkelaars hun ondertekeningssleutel wijzigen terwijl app-updates behouden blijven. (Android 9.0+)
- V4 (streamen): Geoptimaliseerd voor incrementele installaties via ADB. (Android 11+)
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:
- Navigeer naar de APK-verificatie-pagina.
- Selecteer uw APK- of XAPK-bestand.
- Onze tool parseert de map META-INF/ en extraheert de certificaatgegevens (.RSA, .DSA of .EC).
- Wacht tot de analyse is voltooid (dit duurt slechts enkele seconden).
- Controleer de Certificaatinformatie: naam van de ontwikkelaar, organisatie en land van herkomst.
- 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:
- SHA-256 vingerafdruk van het certificaat. Dit is de allerbelangrijkste waarde: een hash van 64 hexadecimale tekens die de ondertekeningssleutel op unieke wijze identificeert. Twee APK's met dezelfde SHA-256-vingerafdruk zijn ondertekend met dezelfde privésleutel. Dat is wat "handtekeningcontinuïteit" betekent in de updatelogica van het besturingssysteem.
- Onderwerp onderscheidende naam. Vaak zoiets als CN=Some App, O=Example Inc., C=US. Handig als hint, niet als identiteitsbewijs, omdat een aanvaller elke gewenste tekenreeks in de DN van zijn eigen zelfondertekende certificaat kan plaatsen. Controleer altijd de vingerafdruk, niet de naam.
- Geldigheidsperiode. De meeste legitieme publicatiesleutels worden gegenereerd met een geldigheidsduur van ongeveer 25 jaar (de historische aanbeveling is 10.000 dagen). Een certificaat dat volgende maand verloopt, of een certificaat waarvan de geldigheid het verleden al overlapt, is een waarschuwingssignaal.
- Handtekeningalgoritme. Moderne apps gebruiken SHA256withRSA of SHA256withECDSA. MD5 is kapot; SHA1withRSA is verouderd. Een APK die alleen is ondertekend met v1/SHA-1 is anno 2026 verdacht.
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:
- Een hasj (SHA-256 van de gehele APK) vertelt u of de bytes van het bestand identiek zijn aan een referentiekopie. Als uw hash overeenkomt met de gepubliceerde hash van de uitgever, is het bestand niet gewijzigd sinds zij die hash hebben berekend. Een hash-check alleen zegt niets over wie de bytes heeft gemaakt.
- Een handtekening bewijst wie de bytes heeft gemaakt, met name dat de houder van de privésleutel gekoppeld aan het handtekeningcertificaat dit bestand heeft geproduceerd. Een handtekeningcontrole alleen zegt niets over de vraag of er na ondertekening met het bestand is geknoeid (het besturingssysteem zal dat detecteren en afwijzen, maar het certificaat zelf "weet" niets van de bestandsinhoud).
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:
- 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.
- 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.
- 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).
- 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
- Het verkeerde veld vergelijken. "MD5 van het APK-bestand" is niet hetzelfde als "MD5 van het certificaat." Gebruik hetzelfde veld voor het kandidatendossier en de referentie.
- Vertrouwen op de eigen metagegevens van het bestand. Een APK kan elke versietekenreeks, elk pakketlabel en elke auteurstag in het manifest bevatten. Geen daarvan is cryptografisch. Het handtekeningblok is het enige dat het besturingssysteem daadwerkelijk verifieert.
- Verificatie overgeslagen omdat het bestand door een vriend is verzonden. Een vriend die zegt "dit is de officiële APK" heeft deze net zo min geverifieerd als jij. Dring aan op een bron die een vingerafdruk publiceert die u kunt controleren.
- Eén overeenkomend veld als voldoende beschouwen. Komt overeen met de SHA-256 van het bestand en de SHA-256-vingerafdruk van het certificaat; het matchen van de ene en de andere niet is een teken dat de bytes zijn gewijzigd of dat de bron zich voordoet als de uitgever.
- Play Protect uitschakelen voor 'gemak'. Play Protect is een second-opinion-scanner, geen vervanging voor handtekeningverificatie, maar vangt daadwerkelijke malware op die handtekeningverificatie niet kan, omdat Protect op de hoogte is van bekende slechte pakketten op basis van de inhoud en niet op basis van de handtekeningsleutel. Laat het aan.
Is uw app veilig?
Raad het niet. Verifieer uw sideloaded APK's binnen enkele seconden met officiële ontwikkelaarscertificaten.
Start APK-verificatieVeelgestelde 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.