Bonjour,
Nous avons développé une application en WPF. Nous souhaiterions mettre en place un système de licence afin de pouvoir la vendre, de manière individuelle (un particulier récupère l'application sur internet), ou par lot (un certain nombre de licences vendus à une association).
J'ai parcouru un bon nombre de topics dédiés à ce sujet sur le forum, qui m'ont permis d'y voir plus clair :
http://www.developpez.net/forums/d11...el-p-piratage/
http://www.developpez.net/forums/d12...ation-licence/
http://www.developpez.net/forums/d11...eger-logiciel/
http://www.developpez.net/forums/d10...tir-dinternet/
http://www.developpez.net/forums/d11...steme-licence/
http://www.developpez.net/forums/d10...tion-licences/
http://www.developpez.net/forums/d10...t-web-service/
Nous avions d'abord décidé d'utiliser une solution toute faite. Nous sommes parti sur la solution IntelliLock de Eziriz. Mais il semble que la société ait déposée le bilan, car nous n'avons eu aucune réponses aux mails ou au téléphone depuis décembre. Du coup nous utiliserons uniquement la fonctionnalité d'obfuscation de code.
Faute de réponse à nos questions, nous avons alors choisi de développer notre propre solution, afin de pouvoir l'adapter complètement à nos besoins :
- le logiciel en mode "démo" par défaut, avec des fonctionnalités limitées
- la possibilité d'activer le logiciel via l'achat d'une licence valable 1 an
- l'activation doit marcher pour un utilisateur lambda, et pour un utilisateur d'une association
La solution consisterait donc à créer un WebService qui retournerait à l'utilisateur le numéro d'activation, à partir :
- d'un numéro de "série"
- d'un identifiant matériel
A chaque utilisation d'un numéro de série, le nombre d'utilisation sera incrémenté, afin de pouvoir limité le nombre "d'activations" par utilisateur.
Le numéro de série serait fourni :
- à un utilisateur individuel lors de l'achat de licence sur notre site web
- à un utilisateur d'une association, par l'association elle même, pour laquelle nous aurions générée toute une série de numéros
L'identifiant matériel serait quand à lui :
- le hardware ID du disque dur
- ou le numéro de série du processeur
- la solution de l'adresse MAC nous a semblé moins fiable (facilement modifiable, machines virtuelles, ...)
Le WebService retourne un message crypté avec une clé privée, que le logiciel pourra vérifier avec une clé publique.
Mais il reste quelques interrogations :
- ou stocker sur le poste client l'information retournant du WebService (fichier de config, registre)?
- sachant que nous utilisons actuellement un serveur unique pour stocker nos sources, quelques bases clientes pour un autre produit qui n'est pas destiné au "grand public", et un outil de suivi de bugs, serait il préférable de prendre un autre serveur pour héberger ce WebService pour une question de sécurité?
- comment prévoir la possibilité de "déplacer" le serveur hébergeant le WebService, sachant que l'adresse sera probablement stockée en "dur" dans le logiciel?
- quelles sont les informations à stocker dans la BDD sur le serveur? (Je pense conserver les numéros de séries, avec un état, et le nombre d’utilisation. Mais serait il utile de stocker également des infos sur l'utilisateur?)
Avez d'autres remarques sur la solution envisagée?
Ou d'autres conseils nous permettant d'éviter de faire des erreurs?
Merci d'avance,
Partager