-1
votes

Signature pour protéger le pot de l'ingénierie inverse

Je pense à protéger le pot de l'ingénierie inverse.

(question 1):

Si le pot est signé par signature, la signature est-elle capable de protéger le pot? Sinon, alors quel est le but de la signature?

(question 2):

APK Android peut être signé par la signature de la plate-forme, et il est impossible d'extraire la signature de la plate-forme de l'APK lui-même.

De ce point de vue, je pense que la signature peut être utilisée pour protéger quelque chose. Mais pourquoi pouvons-nous décompiler tout apk même qu'il est protégé par la signature de la plate-forme?


2 commentaires

1. Non. Il protège quelqu'un d'autre de changer le contenu du pot et de la revendiquer est légitime.


S'il vous plaît vérifier cette owasp.org/index.php/bytecode_obfuscation Si vous avez besoin de le faire Difficile d'ingénierie inverse votre pot


3 Réponses :


3
votes

Pensez à votre propre signature que vous écrivez avec un stylo. La signature d'un morceau de papier rend-il le contenu du papier impossible en quelque sorte à lire?

Non: cela donne simplement à quelqu'un que quelqu'un lise le papier une indication qu'il a été écrit par vous (ou que vous êtes d'accord avec son contenu, ou autre).

et donc avec la signature d'un pot: tout ce que cela fait, c'est que cela donne aux gens une indication que vous (ou des personnes que vous avez autorisées à utiliser la signature) la produisait, afin que personne d'autre ne puisse changer le contenu du pot et le présenter comme "Authentique".

Les signatures ne vous aideront pas à arrêter l'ingénierie inverse.


1 commentaires

Merci, @andy Turner.



2
votes

Si le pot est signé par signature, la signature est-elle capable de protéger le pot? Sinon, alors quel est le but de la signature?

Si vous signe un contrat, cela empêche-t-il l'une des parties concernées de briser le contrat ?! Nope, ça ne pas. La signature est simplement quelque chose qui (théoriquement) vous identifie légalement.

Et c'est tout le point de Signature Software: Pour dire aux utilisateurs du logiciel: «Ceci est ma livraison, vous pouvez la faire confiance, car i a signé ( et personne d'autre d'autre ne peut l'avoir changé) ".

Les signatures font rien pour protéger votre contenu d'ingénierie inverse. Ils sont uniquement utiles pour les utilisateurs de votre contenu, car ils peuvent être «sûrs», qu'ils utilisent vraiment votre contenu et non quelque chose qu'un tiers aisé et ne prétend que votre livraison.

Le seul type de protection consiste à examiner Obfuscant votre contenu de fichier JAR. Il existe des outils pour cela (surtout sur Android). Néanmoins, l'obscurcissement pour Java n'est pas parfaitement parfait. Voir ici par exemple.


3 commentaires

@Global Kind an non pertinent. Vous avez posé une question sur la signature et cette partie a été répondue. Comme dit: le monde de l'obscurcissement à Java n'est pas simple et n'est pas parfait. Mais pour ce sujet spécifique, il y a déjà beaucoup de questions ici. Alors étudiez ceux-ci en premier. Et s'il vous plaît n'oubliez pas d'accepter l'une des réponses à un moment donné.


Merci de votre aide.


J'ai supprimé mon commentaire original car il contient un lien de site Web de l'extérieur qui peut ne pas convient ici. Merci encore.



2
votes

Si le pot est signé par signature, la signature est-elle capable de protéger le pot? Sinon, alors quel est le but de la signature?

Comme les autres ont souligné, il empêche les autres de distribuer leurs propres copies de votre code sous votre nom / marque. Par exemple, supposons que vous écriviez une calculatrice et poster un bytecode signé sur GitHub, puis je ne peux pas écrire mon propre bytecode et prétendre (sans vous avoir attrapé que c'est faux, à moins que je trouve la clé avec laquelle il a été signé, ce qui lui a été signé. est très très ... très improbable) qu'il s'agit d'une copie de votre calculatrice.

Mais pourquoi pouvons-nous décompiler tout apk même qu'il est protégé par la signature de la plate-forme?

Parce que, cela ne nous empêche pas de décompilation. Nous pouvons obtenir le code source de tels puits mais, nous ne pouvons pas aimer mettre notre propre code arbitraire à sa place et fait croire que les autres croient que c'est la même que la vôtre.

mis en termes simples, une signature est une preuve de source et d'authenticité d'un code, rien de plus.

EDIT:

Pourquoi ne pouvons-nous pas extraire la signature originale de l'APK? Pourquoi est-ce impossible?

Étant donné que la signature est une hache, générée à l'aide d'une fonction de hachage cryptographique et une clé que vous seul tenez (appelé clé privée) et une clé publique librement disponible. Depuis que cette clé privée est avec vous et en supposant que vous avez utilisé une puissante fonction de hachage cryptographique, il faudra beaucoup de temps pour une personne qui tente d'imiter cette clé pour trouver cette clé en essayant directement tous les hachages possibles, ce qui est généralement le seul manière possible, sauf si vous avez un travail intelligent pour trouver la clé. La clé publique est ouvertement disponible et est utilisée pour la vérification de l'authenticité de la signature.

Pouvons-nous utiliser ce mécanisme pour protéger notre pot?

dépend de ce que vous essayez de protéger. Si c'est une impersonnation de quelqu'un d'autre, alors oui, pour un moment, tant qu'ils ne trébuchent pas sur la clé d'une certaine manière. Comme il semble évident, ce n'est pas bon contre l'ingénierie inverse


3 commentaires

Le point est: pourquoi ne pouvons-nous pas extraire la signature originale de l'APK? Pourquoi est-ce impossible? Pouvons-nous utiliser ce mécanisme pour protéger notre pot?


J'ai édité que cela inclut tout ça aussi. J'espère que vous avez répondu, bien que je vois déjà cela :)


Merci beaucoup pour expliquer les détails.