Vérification de la signature d'un APK
La bonne manière de vérifier un fichier APK est d'utiliser apksigner
.
apksigner
fait partie des outils de construction Android (SDK Android), vous pouvez donc trouver plusieurs versions installées, une pour chaque version d'outils de construction installée.
Un exemple de chemin dans le SDK Android vers apksigner
est :
android-sdk/build-tools/30.0.1/apksigner
Pour plus de détails sur la manière d'obtenir apksigner, consultez le dernier chapitre de cette réponse.
Exécutez apksigner de cette manière :
apksigner verify --verbose --print-certs "Signal-website-universal-release-4.49.13.apk"
Vérifie
Vérifié en utilisant le schéma v1 (signature JAR) : vrai
Vérifié en utilisant le schéma v2 (Schéma de signature APK v2) : vrai
Vérifié en utilisant le schéma v3 (Schéma de signature APK v3) : vrai
Nombre de signataires : 1
Nom du certificat du signataire n°1 : CN=Whisper Systems, OU=Recherche et Développement, O=Whisper Systems, L=Pittsburgh, ST=PA, C=US
Empreinte SHA-256 du certificat du signataire n°1 : 29f34e5f27f211b424bc5bf9d67162c0eafba2da35af35c16416fc446276ba26
Empreinte SHA-1 du certificat du signataire n°1 : 45989dc9ad8728c2aa9a82fa55503e34a8879374
Empreinte MD5 du certificat du signataire n°1 : d90db364e32fa3a7bda4c290fb65e310
Algorithme de clé du signataire n°1 : RSA
Taille de clé du signataire n°1 (bits) : 1024
Empreinte SHA-256 de la clé publique du signataire n°1 : 75336a3cc9edb64202cd77cd4caa6396a9b5fc3c78c58660313c7098ea248a55
Empreinte SHA-1 de la clé publique du signataire n°1 : b46cbed18d6fbbe42045fdb93f5032c943d80266
Empreinte MD5 de la clé publique du signataire n°1 : 0f9c33bbd45db0218c86ac378067538d
Estimer l'authenticité du certificat du signataire
Maintenant que vous avez vérifié l'APK, vous ne savez toujours pas si vous pouvez faire confiance à la personne/organisation qui a signé le fichier APK. Cela est dû au fait que sur Android, les signatures d'APK utilisent par définition des certificats auto-signés. Il est donc difficile de dire si l'on peut faire confiance à un certificat. La seule manière de le savoir est de vérifier les autres applications qui ont été signées avec le même certificat.
La seule manière que je connaisse de le faire est d'utiliser des services en ligne de crawling PlayStore comme androidobservatory.org. Il propose une API pour vérifier quelles applications ont été signées avec le même certificat en utilisant l'empreinte de certificat SHA-1 :
Édition : apkmirror.com permet également de rechercher l'empreinte de certificat. Il suffit d'entrer l'empreinte de certificat SHA-1 ou SHA-256 en texte brut (sans deux-points ni espaces) dans le champ de recherche :
Sur cette page, vous pouvez voir tous les autres fichiers APK sur le Google Play Store qui sont signés avec le même certificat.
Obtention et exécution de apksigner
Apksigner est un outil Java fourni par Google, qui propose au démarrage un fichier batch apksigner.bat
(Windows) ou un script shell apksigner.sh
(Linux, MacOS).
Comme mentionné précédemment, il est inclus dans chaque version d'outils de construction du SDK Android. Mais il n'est pas placé dans le PATH, vous ne pouvez donc pas simplement ouvrir une invite de commande ou un terminal et exécuter apksigner
, vous devez plutôt fournir manuellement le chemin complet vers apksigner.bat
/apksigner.sh
.
Si vous ne voulez pas installer l'ensemble du SDK Android (avec ou sans Android Studio), vous pouvez directement télécharger les outils de construction, les extraire et exécuter apksigner. Des liens vers tous les outils de construction sont fournis sur ce site web (les liens fournis mènent aux emplacements de téléchargement originaux de Google).
Je préfère apksigner de la version d'outils de construction v30 :
Vous n'avez besoin que du fichier lib/apksigner.jar
de l'archive. Extraites-le et ouvrez un shell dans le dossier. Ensuite, exécutez java -jar apksigner.jar
. Pour exécuter, vous avez besoin de Java 9 ou d'une version ultérieure (idéalement Java 11 ou 17).
En utilisant cette approche directe, la commande pour exécuter apksigner est
java -jar apksigner.jar verify --verbose --print-certs "Signal-website-universal-release-4.49.13.apk"
Ou si vous utilisez des noms de chemin complets - remplacez les sections <..>
par le chemin approprié qui fonctionne sur votre système d'exploitation :
/java -jar /apksigner.jar verify --verbose --print-certs ""
0 votes
Si vous visitez, depuis votre mobile, la page :
m.google.com/maps
, vous propose-t-elle un lien de téléchargement ou quelque chose de similaire?0 votes
@Nicolás: Cela renvoie au marché, à partir duquel je ne peux pas le télécharger.
0 votes
D'où l'as-tu téléchargé, puisque ta question a été récemment modifiée. J'utilise gappsandroid.blogspot.com, j'ai vérifié certaines des applications et toutes correspondent aux sommes MD5 des applications officielles du Play Store.
0 votes
Lié Vérifier que l'APK Android n'a pas été reconditionné?
1 votes
Si vous avez une deuxième application qui est "authentique" et provient du même vendeur, vous pouvez comparer si les deux applications sont signées en utilisant les mêmes clés / identité: Comparaison des signatures des apks
0 votes
Tant que c'est un APK et non un AAB ... vous pouvez comparer la signature de l'application. Cela prouve simplement que l'application a été signée par un développeur qui a généré une clé.