11
votes

Comment mettre en place un système de licence simple?

Aucune infraction prévue, mais ne discutons pas que les régimes de licence peuvent être fissurés (je sais que) et que le recours à la loi est généralement un meilleur moyen de dissuasion (peut-être dans votre pays, mais pas du tout).

Pas mon choix - On m'a dit de mettre en œuvre des licences, juste assez bon pour éloigner les hackers occasionnels.

Qu'est-ce qui pourrait rendre cela légèrement différent, c'est que les PC qui exécuteront le logiciel n'auront pas toujours des privilèges d'accès à Internet.

Lorsque quelqu'un achète le produit, je peux construire des informations de licence dans elle et livrer un CD d'installation. Mais que se passe-t-il s'ils veulent acheter plus de licences? Je ne veux pas avoir à suivre sur place pour mettre à jour les données de licence, mais elles peuvent ne pas être en mesure d'accéder à mon serveur, ni i leur.

Je pensais avoir des licences dans des fichiers externes (cryptés), chacun contenant un certain nombre de licences et une date d'expiration. Si l'utilisateur achète plus de licences, je peux envoyer un fichier supplémentaire et leur sécurité, les gars de la sécurité peuvent le graver sur CD ou USB Stick, puis le copier dans le répertoire de données d'applications.

Cela semble-t-il bien? Pouvez-vous penser à quelque chose de mieux? Pouvez-vous voir des problèmes? Je n'ai pas trop de temps pour mettre en œuvre cela.


1 commentaires

2,5k vues et compter. Fermé (correctement) après 5 ans d'ouverture. En rétrospectivement, je me rendrais compte que je devrais avoir demandé sur programmeurs.stackexchange.com , mais de retour à ces jours-ci, je n'étais que actif sur cette placer.


3 Réponses :


6
votes

Ça irait bien si la licence contient beaucoup d'informations. Typiquement, ils ne peuvent pas être cryptés avec des protections de 30 à 50 caractères. Ceux-ci peuvent ensuite être envoyés par courrier électronique, coupé et collé, ou même dactylographiés.

comme pour les systèmes de protection, la vérification de la clé PKV ou partielle est populaire. Il y a un certain nombre de questions à ce sujet, et une recherche Google fournira un certain nombre de mises en œuvre différentes.


7 commentaires

+1 Merci pour la réponse rapide. Les seules informations contenues dans les fichiers doivent être le nombre de licences, date d'expiration et numéro de client. Pas beaucoup de données. La protection n'a pas besoin d'être trop lourde.


Droit. Et typiquement, la licence contient un hachage du nom d'utilisateur (num contre votre cas) et les deux sont entrés ensemble. Cela raccourcit plus loin que le hachage sera plus court que le nom / le numéro.


Je voudrais mettre en œuvre un système d'activation comme celui de Microsoft (bien qu'il puisse utiliser des lecteurs USB pour pouvoir travailler hors ligne) pour empêcher la copie occasionnelle, ce qui consiste simplement à installer le logiciel sur plusieurs ordinateurs qu'il n'est autorisé. Malheureusement, une société appelée Uniloc a un brevet à ce sujet et a déjà poursuivi ses nombreuses sociétés de logiciels, notamment Microsoft.


Je ne sais pas comment fonctionne le système MS - et vous ne me dites pas, et vous me dites aussi que je ne peux probablement pas l'utiliser légalement de toute façon, mais toujours +1 pour prendre le temps de répondre. Je ne pense pas que l'utilisateur célibataire, je pense à vendre dans des paquets de 5 ou 10, qui peuvent être ajoutés à tout moment


Comment appliqueriez-vous (techniquement) le "nombre de licences" stocké dans le fichier de licence?


Vous auriez besoin d'une sorte de serveur de permis central pour appliquer la limite de licence.


Oui, vous auriez besoin d'un serveur central en ligne ou sur un réseau local. Mes produits n'ont pas cela - je publie une clé pour chaque licence achetée.



2
votes

Si vous ne vous souciez pas particulièrement des tentatives de craquage, que diriez-vous de cela:

Pré-générer un certain nombre de clés entièrement aléatoires (je ne sais pas ... dites 10 000 pour le bien de cet exemple). Hachage chacune de ces touches avec SHA-1. P>

dans votre programme, incluez un tableau contenant les haubans SHA-1, par exemple: P>

static unsigned char *keys[20] = 
{
    // key 8WVJ-TH6R-R7TH-DXM2
    { 0xb2, 0x3c, 0xc2, 0xb3, 0xea, 0xa5, 0x69, 0xf6, 0xa6, 0x95, 0x8a, 0x75, 0xee, 0x76, 0x88, 0xa5, 0x71, 0xd9, 0x4a, 0x9e }, 
    // many more keys follow...
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}
  • Les clés peuvent être de toute longueur et complexité. li>
  • Si quelqu'un peut inverser SHA-1, ils ont de meilleures choses à faire que de casser votre application. Li>
  • simple à mettre en œuvre. li>
  • Simple à gérer. LI>
  • Si vous manquez jamais de clés, émettez une mise à jour de l'application et ajoutez de nouvelles clés à la fin de la table. LI>
  • Aucun accès en ligne n'est nécessaire. Li> ul>

    Inconvénients: P>

    • Les personnes qui veulent freeload peuvent facilement hexader votre binaire pour définir leurs propres valeurs SHA-1 dans la table et elles peuvent ensuite "licencier" le logiciel à eux-mêmes. LI>
    • Vous ne savez pas si vos utilisateurs payants utilisent la même clé dans 20 machines. LI>
    • Simple. LI> ul>

      Le schéma peut être amélioré de différentes manières. Mais c'est un point de départ pour vous. P> p>


1 commentaires

"Vous ne savez pas si vos utilisateurs payants utilisent la même clé dans 20 machines." - Cela ne signifie-t-il pas non plus qu'ils pourraient libérer leur clé sur le Web et tout le monde l'obtient gratuitement?



7
votes

J'utilise une cryptographie asymétrique avec des courbes elliptiques. Pour générer une nouvelle clé de licence, un nom d'utilisateur de hachage (ou un courrier électronique, éventuellement avec une identification d'application ajoutée), signer le hachage avec votre clé privée et encoder avec la base-32 pour obtenir une belle clé comme HQYRV-OZFNZ-M3L7B- WA644-CXLG4-D7IRD-QZ6FY-GJGTO-MEXEG .

Pour valider la licence, le nom de l'utilisateur a ci-dessus et vérifiez la signature du hachage avec votre clé publique.

Cela présente de nombreux avantages: la clé est relativement courte (grâce à l'utilisation de la CE au lieu de RSA / DSA), la clé est "aléatoire" dans laquelle une autre est générée à chaque fois pour le même nom d'utilisateur et, cruciale, Il n'y a pas de code Keygen dans l'application et un cracker ne peut pas écrire un keygen sans obtenir votre clé privée.

J'ai une bibliothèque pour ce faire sur github: https://github.com/vslavik/ellipticlicensele/a > (C'est une fourchette du projet d'objectif-mort-C, j'ai ajouté une API portable C et j'ai apporté d'autres améliorations).


0 commentaires