Question:
Existe-t-il des métriques pour l'obfuscation du code?
asheeshr
2013-03-23 19:05:21 UTC
view on stackexchange narkive permalink

L'obscurcissement du code source est-il quantifiable?

Existe-t-il des métriques qui mesurent le degré d'obfuscation dans un fichier source?

Deux réponses:
#1
+10
Andrew
2013-03-23 20:32:15 UTC
view on stackexchange narkive permalink

Pour le code source, une possibilité est la Complexité cyclomatique McCabe. Certains outils d'analyse de code source ( McCabe IQ) l'utiliseront comme une mesure de code "merdique" que vous devriez étudier et réécrire. La complexité cyclomatique indique généralement une logique de programme excessivement alambiquée ou compliquée, et un code qui sera difficile à comprendre. Cela ne reflète peut-être pas la difficulté réelle du reverse engineering, et ne prend pas non plus en compte d'autres types d'obscurcissements tels que le cryptage à variable constante et le cryptage de code, etc.

Je pense que ce serait très difficile à objectivement quantifiez tous les types d'obscurcissements, car vous essayez de mesurer leur capacité à résister aux attaques d'un adversaire. Si vous pouvez réduire vos problèmes de protection de programme à des problèmes cryptographiquement complexes (comme les auteurs de Gauss ont pu le faire), je pense que c'est une métrique d'obscurcissement utile car elle représente le travail que l'attaquant doit effectuer pour annuler votre obfuscation. Sinon, le niveau de travail est si variable de l'obscurcissement à l'obscurcissement d'un reverse engineering à un autre que je ne suis pas sûr qu'il puisse être mesuré de manière significative ...

#2
+9
Rolf Rolles
2013-03-24 01:31:10 UTC
view on stackexchange narkive permalink

Il existe une métrique purement théorique pour l'obfuscation du code basée sur une interprétation abstraite qui est délicieuse. Elle repose sur le fait que les interprétations abstraites sont comparables quant à leur précision. En particulier, dans la formulation d'opérateur de fermeture supérieure de l'interprétation abstraite - où un opérateur de fermeture supérieure est créé en composant les fonctions d'abstraction et de concrétisation, formant une carte du domaine concret à lui-même - nous pouvons comparer la puissance de deux interprétations abstraites par ordonner partiellement l'ensemble des points fixes d'une carte de fermeture donnée. Un opérateur avec strictement plus de points fixes est plus précis que, disons, celui qui mappe tout vers le haut.

Afin de comparer les obfuscations, nous considérons l'ensemble des interprétations abstraites sur la version originale du programme, puis également sur la version obscurcie. Nous pouvons maintenant utiliser la même construction décrite ci-dessus pour comparer la puissance des transformations obscurcissantes. Étant donné une propriété observable a , codée par une interprétation abstraite, nous disons que l'obfuscateur est puissant pour un si, en préservant une interprétation abstraite par rapport à cette propriété, le point fixe est différent pour la version originale par rapport à la version transformée.

Pour en savoir plus: http://profs.sci.univr.it/~dallapre/ICALP05.pdf



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...