Publié le 12/11/2008 Dans Programmation
Introduction
Lorsqu'un développeur ou une société fournit un logiciel de sa propre conception, il ou elle veut souvent le protéger à l'aide de clés. Le principe est simple: pour pouvoir utiliser le logiciel, l'utilisateur devra fournir une clé sous forme de numéro, de texte ou de fichier de licence.De tels systèmes existent « out-of-the-box », comme FLEXlm par exemple, mais ces systèmes s'avèrent souvent coûteux et de plus, il existe sur internet des solutions génériques pour détourner ces protections (dans le cas de FLEXlm, le remplacement d'une simple DLL suffit parfois, testé et approuvé par votre humble serviteur ...)
Le but de ce petit article est de vous expliquer comment et « simplement » vous pouvez implémenter votre propre système de vérification de licence en utilisant la librairie OpenSSL <www.openssl.org> (lié statiquement bien sûr, sinon ce serait trop simple ;)).
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