Publié le 12/11/2008 Dans Programmation
Conclusion
Oh my god! Ce programme ne contient aucun commentaire! Et oui, c'est voulu ... En effet, c'est en comprenant les principes théoriques de ce programme et en parcourant le code (tout en vous aidant des pages de manuel d'openssl, donc man openssl_fonction) que vous pourrez comprendre et réutiliser ce code (il est plus simple à comprendre que vous ne l'imaginez ...).En terme d'efficacité théorique ... ce principe est sans faille. En pratique, ce n'est guère le cas. Car une personne mal intentionnée pourrait, par exemple, modifier votre fichier exécutable et changer la clé publique par sa propre clé. Mais sachez que sans modification de l'exécutable (ou de son image mémoire pendant l'exécution), aucun hacker ne pourra générer de licence valide ou écrire un générateur de licence. Sans la clé privée, rien n'est possible.
Donc, la seule protection supplémentaire à apporter à la solution est de protéger votre exécutable contre la modification. Et pour cela, il existe beaucoup de solutions ... une simple recherche sur google de « exe packer », « exe protector », ... suffira à vous convaincre.
La clé privée ne doit se trouver que dans le programme qui crée la license. Le programme qui la vérifie ne doit contenir que la clé publique (sinon il n'y a aucun intérêt à utiliser la crypto à clé publique).
Le link statique avec openssl est très lourd: le programme license que tu donnes fait chez moi 854kB à lui tout seul (strippé), et une version qui ne fait que la vérification ajoute 660kB au programme que tu veux protéger. Il existe des librairies crypto beaucoup plus légères qui seraient plus adaptées au link statique (matrixssl, libtomcrypt, ...)
Les exe protect dont tu parles, tu en as sous linux ? Parce que les clés en format ASCII armor comme tu les fais sont excessivement faciles à trouver et à remplacer dans un exécutable ELF... Il faut donc effectivement protéger l'exécutable contre toute modification.
Sinon, joli tuto J'embrayerais bien sur une version light...
La clé privée ne doit se trouver que dans le programme qui crée la license. Le programme qui la vérifie ne doit contenir que la clé publique (sinon il n'y a aucun intérêt à utiliser la crypto à clé publique).
Le link statique avec openssl est très lourd: le programme license que tu donnes fait chez moi 854kB à lui tout seul (strippé), et une version qui ne fait que la vérification ajoute 660kB au programme que tu veux protéger. Il existe des librairies crypto beaucoup plus légères qui seraient plus adaptées au link statique (matrixssl, libtomcrypt, ...)
Les exe protect dont tu parles, tu en as sous linux ? Parce que les clés en format ASCII armor comme tu les fais sont excessivement faciles à trouver et à remplacer dans un exécutable ELF... Il faut donc effectivement protéger l'exécutable contre toute modification.
Sinon, joli tuto J'embrayerais bien sur une version light...
Pour la clé privée, je l'ai noté dans le tuto
C'est vrai que le link static est très lourd, mais je ne connaissais pas vraiment d'autres lib. Je vais regarder du coté des libs que tu as renseigné tiens.
Pour ce qui est de la protection des exécutables ELF, ça existe, j'en suis sûr. Je n'ai pas de nom en tête la mais un bête UPX (un peu bidouillé) pourrait faire l'affaire.
Mais si je te dis que je lis pour le moment les specs ELF ... tu comprendras quel pourrait être le contenu du prochain article