2011-03-23 2 views
13

Je ne suis pas familier avec l'idée de signer des fichiers, et je ne trouve pas de réponse satisfaisante jusqu'à présent, donc je pense que je ferais mieux de demander:Est-ce que la signature de l'application protège contre la falsification du fichier?

Ce que je veux savoir est lors de la signature d'un fichier binaire (pour Android), l'outil de signature affecte-t-il une sorte de somme de contrôle au fichier de sorte que lorsqu'un pirate change quelque chose dans le fichier apk, le programme refuse de démarrer car la somme de contrôle ne correspond pas. Ce mécanisme existe-t-il dans l'outil de signature d'Android? Eh bien, je comprends quand un hacker a le binaire, il peut désactiver tout ce qu'il veut, y compris la vérification de la somme de contrôle. Mais la question est: L'outil de signature d'Android fournit-il ce niveau ou cette protection en premier lieu?

Merci d'avoir lu, et de répondre!

Répondre

9

Les réponses qui disent « non, ils ne peuvent pas modifier votre apk » ne sont à mi-chemin à droite: Oui, personne ne peut modifier votre code et sa démission avec votre clé, qui signifie que le cracker ne peut pas faire l'application modifiée ressemble à ce que vous venez de faire. Mais cela ne signifie pas qu'ils ne peuvent pas modifier et exécuter le fichier APK après l'avoir démissionné avec une clé différente.

Ils pourraient prendre votre APK signé, modifier son code, et le démissionner eux-mêmes avec leur propre clé; ils ne pouvaient pas publier cette application comme une mise à jour ou quelque chose comme ça, mais l'APK auto-signé modifié serait normalement installable par n'importe quel utilisateur, root ou pas.

EDIT: Cela vaut la peine d'explorer les développeurs xda pour voir ce que les gens font à cet égard (certains semi-légitimes, comme modifier et rééditer des APKs de thème, d'autres beaucoup moins). Des outils comme android-apktool sont particulièrement intéressants.

Voir aussi ces SO questions:

+0

Merci beaucoup! Oui, alors que j'étais en train de chercher sur ce sujet, j'ai vu un post de SO qui dit que son application a été republiée sur Android Market par un pirate informatique sous son propre nom !!! Je suppose que c'est exactement ce que vous avez dit ici. (Il y a plusieurs années j'avais l'habitude d'utiliser cette approche: Après qu'une construction soit faite, j'ajoute ma propre somme de contrôle au fichier binaire et au moment de l'exécution, le programme effectue sa propre vérification.Mais cela ne marche pas de nos jours, car cela signifierait que je suis moi-même un binaire signé!) – wwyt

+0

@wwyt vous pouvez essayer de vérifier l'app * signature * lors de l'exécution, mais un pirate particulièrement entreprenant pourrait simplement enlever les chèques si vous ne le faites pas correctement. Votre meilleur pari est quelque chose comme le service de licence Android (http://developer.android.com/guide/publishing/licensing.html). –

+0

@wwyt Le SDK à connexion unique de Facebook fait quelque chose comme ceci pour s'assurer qu'aucune application malveillante ne détourne son intention: https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/ facebook/android/Facebook.java # L244-277 –

0

Oui, le système d'exploitation doit vérifier que le contenu du binaire correspond réellement à la signature. Cela ne servirait à rien - quelqu'un pourrait simplement prendre une signature d'une application légitime et la coller sur n'importe quel autre fichier binaire.

5

La signature binaire Android est réalisée à l'aide de l'outil Jarsigner, qui fait partie du SDK Java standard. Signer un pot avec cet outil ajoute simplement deux fichiers; celui qui contient les valeurs hachées pour chaque fichier dans le fichier jar/application (le fichier de signature ou le fichier .sf), et celui qui vérifie le fichier de signature et identifie le certificat de signature (fichier DSA).

Ainsi, vérifier la signature impliquerait nécessairement de vérifier si les hachages du fichier binaire correspondent à la valeur fournie, ce qui détecterait toute modification du binaire. Et oui, le Android documentation dit que le système ne va pas installer ou exécuter une application sans une signature valide. Donc oui, vous pouvez supposer que signer votre fichier correctement l'empêchera de fonctionner après avoir été modifié.

Questions connexes