2011-02-08 3 views
13

Je travaille sur un petit produit multiplateforme pour Windows et Mac écrit en C++/Obj-C. On m'a demandé de mettre en place un module de licence pour le même. Cette tâche fait partie d'un projet très ambitieux visant à introduire des licences pour tous nos produits. À la fin, nous aurons un système de licences complet où nous pourrons vendre des licences à nos clients qui supportent les renouvellements annuels, les niveaux de licence, etc. Mon problème est que je ne connais pas la première chose à propos de l'implémentation des vérificateurs de licence. Est-ce que quelqu'un peut me diriger vers quelque chose pour la même chose? Existe-t-il des modules de licence open source autour de ce que je peux étudier?Implémentation de la bibliothèque de vérification des licences

Répondre

16

J'utilise un système de PKV (Partial Key Verification), et j'ai implémenté ceci en C# avec un générateur PHP. Google proposera divers hits, explications et implémentations; mais Brandon Staggs a écrit une bonne vue d'ensemble (bien que dans Delphi!), voici:

http://www.brandonstaggs.com/2007/07/26/implementing-a-partial-serial-number-verification-system-in-delphi/

PKV fonctionne en codant certaines informations (type de licence, produit numéro de série, date, etc.) dans la clé avec un hachage du nom d'utilisateur et hash de l'information codée. Une grande partie de la clé consiste en plusieurs hachages de char. L'idée est que vous ne vérifiez qu'un sous-ensemble de ces hachages. Le sous-ensemble exact qui a été émis peut être modifié au fil du temps pour une certaine sécurité et pour protéger contre certains types d'ingénierie inverse. Je voudrais également crypter la clé pour aider à masquer ce que chaque char de la licence signifie. Sinon, quelqu'un avec plusieurs clés pourrait déterminer certaines positions char signifie certaines choses ("oh, les caractères 3-4 sont le numéro de série"). Cela pourrait être une faille dans votre armure!

Tout système de licence que vous développerez sera imparfait. Ce sera craquant, et si vos produits sont populaires, ils seront craqués. Cependant, il existe un solide argument selon lequel un système de licence existe pour garder les honnêtes gens honnêtes et produire assez d'obstacles pour les personnes légèrement malhonnêtes - mais pas tellement d'obstacles que cela devient trop gênant (par exemple, je suis généralement contre le verrouillage matériel). Ceux qui piratent votre système ne le paieront probablement pas de toute façon.

+2

+1 pour le dernier paragraphe, ça ne sera jamais parfait, mais si c'est déjà assez difficile, ça ira. –

+0

J'adore votre explication et surtout le dernier paragraphe. Il résume tout cela! –

Questions connexes