Meilleur mécanisme de génération de clés de licence [fermé]


35

Quelles méthodes / bibliothèques / outils les gens suggéreraient-ils pour générer des clés de licence (ces jolies choses AAAAA-AAAAA-AAAAA-AAAAA-AAAAA que vous avez insérées lorsque vous enregistrez un logiciel)?

Des pièges à surveiller lors de leur mise en œuvre?

(Pour le moment, cela m'intéresse en général, plutôt qu'en termes de langue, alors indiquez simplement la langue que vous utilisez si votre solution est spécifique à une langue).

Réponses:


23

C'est à peu près la même chose que pour stocker des mots de passe. Vous devriez avoir une clé secrète unique connue uniquement du générateur et de votre programme. Utilisez cette clé pour manipuler les détails (nom d'utilisateur, mot de passe, organisation, etc.) puis les hacher. Vous pouvez ensuite faire quelque chose de simple encodage de transfert en Base32 sur le hachage ou simplement le déplacer vers une chaîne hexadécimale si vous ne vous souciez pas d'un format.

Des pièges à surveiller lors de leur mise en œuvre?

Gardez les secrets secrets et séparés. Rendez votre implémentation améliorable. Si quelqu'un casse, pouvez-vous facilement changer la mise en œuvre? Une implémentation courante sur les applications de bureau consiste à utiliser un serveur distant pour valider la licence. Cela supprime la possibilité que quelqu'un puisse désosser un hachage ou l'algorithme en inspectant l'application elle-même.


11
BASE32 à encoder est la norme. Il permet une entrée utilisateur humaine facile;) (Base32: sélection de lettres et de chiffres très différents. Par exemple, 0 et O ne sont pas dans la séquence)

1
@Pierre: Je ne le savais pas, bonne information!
Josh K

10

Cette même question a été posée sur SO et la réponse acceptée est plutôt bonne. L'essentiel général est:

  • Prenez le nom de l'utilisateur
  • Concatentez le nom des utilisateurs et la clé secrète et le hachage avec (par exemple) SHA1
  • Décompressez le hachage SHA1 sous forme de chaîne alphanumérique. Ceci est la "clé de produit" de l'utilisateur individuel
  • Dans le programme, faites le même hachage et comparez-le avec la clé de produit. Si égal, d'accord.

1

Ma méthode préférée est de générer 10 000 chaînes de licence aléatoires, SHA1 (ou MD5) de les hacher ou HMAC, et d'inclure tout ou partie du hachage SHA1 / MD5 dans l'exécutable lui-même. Quand une chaîne de licence est entrée, vous utilisez simplement un code obscurci pour générer le hachage de la chaîne et le comparer à ceux de la liste. Si cela correspond, c'est une licence valide. Si vous manquez de licences, publiez une nouvelle version avec plus de chaînes.

Utiliser uniquement les 96 premiers bits du hachage SHA1 est suffisant. Donc, 10 000 licences prendraient moins de 120 Ko. La génération algorithmique de clés ou la création d'un générateur de clés serait impossible. La seule vulnérabilité à craindre est le reverse engineering ou le bypass. (Ou quelqu'un qui distribue sa clé valide.)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.