Question

Je souhaite distribuer une application, mais disposer d'une clé de licence à saisir. Qu'est-ce qu'un bon algorithme pour créer une clé concise contenant des informations sur la version achetée, ainsi que des éléments supplémentaires tels que la durée de la licence, etc.

Je réalise que cette protection peut être fissurée, mais elle garde les honnêtes gens honnêtes. Je peux ou non implémenter l'activation en ligne, mais je suis principalement préoccupé par un bon moyen de générer ces clés.

Nous avons tous vu cette situation, quel algorithme fonctionne le mieux? Devrais-je demander un nom en clair à l'utilisateur et l'utiliser pour créer une clé de produit unique basée sur ses propres informations?

Existe-t-il un système permettant de rendre presque impossible la génération d’une clé valide?

Peut-être une situation de chiffrement de paire de clés publique / privée où seul le fabricant possède la clé privée et où les données peuvent être validées par une clé publique, mais la clé publique ne peut pas être piratée pour créer des clés valides.

Comme il s'agit d'une clé de produit, ce serait génial si elle était assez courte, 64 caractères ou peut-être 128 max, mais plus court sera le mieux, 32 ou moins serait génial.

Était-ce utile?

La solution

Vous n'avez pas précisé sur quelle plate-forme vous vous trouvez, mais en voici un dans Microsoft .Net:

http://jclement.ca/devel/dotnet/reallysimplelicensing.html

  

Cette page documente un très simple   régime de licence que vous pouvez utiliser avec   votre application .NET. C'est intensionnel   être assez sécurisé, facile à mettre en œuvre   et facile à étendre. La version exemple   vous permet de fournir des fichiers de licence   avec un nom de client intégré   mais vous pouvez facilement l'étendre pour ajouter   autres informations d'identification, machine   reliures, dates d'expiration, etc.

     

Ce schéma utilise Microsoft   Bibliothèque RSA et signature XML. Fondamentalement   vous mettez ce que vous voulez dans un XML   Documentez et signez ce document. ensuite   vous pouvez fournir ce fichier à votre   le client et l'application peuvent lire   les informations de licence sur cette   fichier. Puisque le fichier est numériquement   signé le fichier de licence ne peut PAS être   altéré sauf si vous relâchez votre   clé privée (que vous avez vraiment   ne devrait pas faire).

Autres conseils

Pas d'accès Internet et de clés d'accès

En ce qui concerne la taille de la clé de série, il existe un compromis entre les clés lisibles courtes / lisibles par l'homme. ( moins sécurisé ) et ayant de longues clés ou éventuellement des fichiers de licence ( plus sécurisé ).

Si vous voulez des clés courtes et lisibles par l'homme, qui vous permettent de stocker des éléments tels que la date d'expiration et les fonctionnalités, vous pouvez utiliser SKGL avec Software Protector, deux sources ouvertes ( https://help.cryptolens.io/faq/what-is-skgl ).

Cependant, l’inconvénient est qu’ils utiliseront très probablement la cryptographie symétrique et / ou stockeront l’algorithme de génération de clé dans l’application. Cela signifie que l'utilisateur final peut tenter de trouver la clé de cryptage et / ou l'algorithme (voir http://www.codeproject.com/Articles/764610/Licensing-systems-in-NET ).

Accès Internet (ou hors connexion avec les fichiers d'activation)

Une meilleure alternative consiste à utiliser un système basé sur le cloud qui garde une trace de toutes les clés de licence et vous permet de les modifier à tout moment.

Si vous avez un système de licence basé sur le Web, vous pouvez raccourcir les clés et ne pas avoir à stocker d'informations dans la clé réelle (ce qui est le cas avec la plupart des systèmes hors ligne).

De plus, vous pourrez prendre en charge davantage de modèles de licence, par exemple, un modèle basé sur un abonnement.

Les solutions sont les suivantes:

  • construisez vous-même un tel système , ce qui prendra beaucoup de temps et vous distraira des fonctionnalités essentielles de l'application.

  • utilisez un système open source existant comme point de départ - même si cela peut être tentant, étant donné qu'il est open source et gratuit, il faudra du temps pour les amener dans le cloud + configurer à vos besoins particuliers + maintenez-le. les systèmes open source que j'ai observés ont tendance à avoir une fonctionnalité très large, ce qui contribue à la complexité.

  • sous-traiter à un tiers - l'inconvénient est que la plupart d'entre eux ne sont pas gratuits.

À mon avis, l’ensemble de la procédure devrait être sous-traitée à un tiers spécialisé dans le développement de cet élément. Une fois l’échelle mise à l’échelle, vous devrez peut-être modifier la logique de gestion des licences. Au lieu de le développer vous-même, il est probable que la tierce partie prenne déjà en charge ce scénario.

Il existe plusieurs solutions ( assurez-vous de rechercher celles qui sont basées sur le Web ), Cryptolens en est un exemple. Si vous développez une application .NET, voici un exemple étape par étape: https: // help. cryptolens.io/examples/key-verification .

Clause de non-responsabilité : je suis l'auteur de SKGL / Software Protector, l'article sur les systèmes de licence et Cryptolens.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top