Question

Mon entreprise cherche à commencer à distribuer certains logiciels que nous avons développés et aimerait pouvoir permettre aux gens de les essayer avant de les acheter.Nous souhaitons également nous assurer qu'il ne peut pas être copié et distribué aux clients de nos clients.

Un modèle que nous avons vu consiste à lier une licence à une adresse MAC afin que le logiciel ne fonctionne que sur une seule machine.

Ce que je me demande, c'est quel est le bon moyen de générer une clé de licence contenant différentes informations intégrées, telles que la date d'expiration de la licence, l'adresse MAC et différentes restrictions logicielles ?

Était-ce utile?

La solution

Je vous suggère de prendre les informations que vous souhaitez dans la clé et de les hacher avec md5, puis de prendre simplement les X premiers caractères (où X est une longueur de clé que vous pensez gérable).

Cryptographiquement, c'est loin d'être parfait, mais c'est le genre de domaine dans lequel vous souhaitez déployer le minimum d'efforts pour arrêter un attaquant occasionnel - tout ce qui est plus rapide devient rapidement un trou noir.

Oh, je dois également souligner que vous souhaiterez également fournir la date d'expiration (et toute autre information que vous voudrez peut-être lire vous-même) en texte brut (ou légèrement obscurci) dans le cadre de la clé si vous suivez cette voie. - Le md5 sert simplement à empêcher l'utilisateur final de modifier la date d'expiration pour prolonger la licence.

Le plus simple serait un fichier clé comme celui-ci...

# License key for XYZZY
expiry-date=2009-01-01
other-info=blah
key=[md5 has of MAC address, expiry date, other-info]

Autres conseils

J'ai utilisé à la fois FLEXlm de Macrovision (anciennement Globetrotter) et le nouveau RLM de Reprise Software (si je comprends bien, écrit par les auteurs originaux de FlexLM).Les deux peuvent saisir soit l'adresse MAC, soit un dongle physique, peuvent être soit verrouillés par nœud (liés à une seule machine) soit « flottants » (toute machine autorisée sur le réseau peut obtenir une licence distribuée par un serveur de licences central, jusqu'à jusqu'à un nombre maximum d'exemplaires extraits simultanément déterminé par le montant payé).Il existe diverses manières flexibles de le configurer, notamment les dates d'expiration, les fonctionnalités individuelles sous licence, etc.L'intégration dans une application n'est pas très difficile.Ce ne sont que les deux que j'ai utilisés, je suis sûr qu'il y en a d'autres qui font tout aussi bien le travail.

Ces programmes sont facilement craqués, ce qui signifie qu'il existe des exploits connus qui permettent aux utilisateurs de contourner la sécurité de votre application qui les utilise, soit en supprimant leurs propres licences pour usurper le serveur de licences, soit en patchant simplement votre binaire pour contourner la vérification de licence ( remplaçant essentiellement l'appel de sous-programme à leur bibliothèque par du code qui dit simplement "retourner 'vrai'".C'est plus compliqué que cela, mais c'est surtout à cela que cela se résume.Vous verrez des versions crackées de votre produit publiées sur divers sites Warez.Cela peut être très frustrant et démoralisant, d'autant plus qu'ils sont souvent intéressés par le crack pour le plaisir du crack, et n'ont même aucune utilité pour votre produit ni aucune connaissance de ce qu'il faut en faire.(Cela est évident si vous disposez d'un programme suffisamment spécialisé.)

Pour cette raison, certaines personnes diront que vous devriez écrire le vôtre, peut-être même changer fréquemment le schéma de cryptage.Mais je ne suis pas d'accord.Il est vrai que déployer votre propre système signifie que les exploits connus contre FLEXlm ou RLM ne fonctionneront pas instantanément pour votre application.Cependant, à moins que vous ne soyez un expert total en matière de sécurité (ce qui n'est clairement pas le cas ou vous ne poseriez pas la question), il est fort probable que, du fait de votre inexpérience, vous finissiez par écrire un système beaucoup moins sécurisé et plus craquable. que les leaders du marché (aussi faibles soient-ils).

L'autre raison de ne pas lancer le vôtre est simplement qu'il s'agit d'un jeu sans fin du chat et de la souris.Il est préférable pour vos clients et vos ventes de consacrer un minimum d'efforts à la sécurité des licences et de consacrer ce temps au débogage ou à l'ajout de fonctionnalités.Vous devez comprendre que le système de licence consiste simplement à « garder les gens honnêtes honnêtes », sans pour autant empêcher les piratages déterminés.Acceptez que les pirates n’auraient de toute façon pas payé pour le logiciel.

Tout le monde ne peut pas adopter ce genre d’attitude zen.Certaines personnes ne peuvent pas dormir la nuit en sachant que quelqu'un quelque part reçoit quelque chose pour rien.Mais essayez d'apprendre à y faire face.Vous ne pouvez pas arrêter les pirates, mais vous pouvez équilibrer votre temps/efforts/dépenses pour essayer d'arrêter tout piratage et pour améliorer votre produit pour les utilisateurs.N’oubliez pas que parfois les applications les plus piratées sont aussi les plus populaires et les plus rentables.Bonne chance et dormez bien.

Nous avons utilisé l'algorithme suivant à mon entreprise pendant des années sans un seul incident.

  1. Choisissez les champs que vous souhaitez dans le code.Regroupez autant de bits que possible.Par exemple, les dates pourraient être « nombre de jours depuis 2007 », et vous pouvez alors vous en sortir avec 16 bits.
  2. Ajoutez un champ "somme de contrôle" supplémentaire.(Vous verrez pourquoi dans une seconde.) La valeur de ce champ est une somme de contrôle des octets compressés des autres champs.Nous utilisons "les 32 premiers bits de MD5".
  3. Chiffrez tout en utilisant THÉ.Pour la clé, utilisez quelque chose qui identifie le client (par ex.nom de l'entreprise + adresse e-mail personnelle), de cette façon, si quelqu'un souhaite publier une clé sur l'interweb, il doit inclure ses propres coordonnées en texte brut.
  4. Convertissez un hexadécimal en chaîne d'une manière judicieuse.Vous pouvez utiliser des chiffres hexadécimaux droits, mais certaines personnes aiment choisir un ensemble différent de 16 caractères pour le rendre moins évident.Incluez également régulièrement des tirets ou quelque chose pour qu'il soit plus facile de le lire par téléphone.

Pour décrypter, convertissez l'hexadécimal en chaîne et décryptez avec TEA.Mais il y a ensuite cette étape supplémentaire :Calculez votre propre somme de contrôle des champs (en ignorant le champ de somme de contrôle) et comparez-la à la somme de contrôle donnée. C'est l'étape qui garantit que personne n'a altéré la clé.

La raison en est que TEA mélange complètement les bits, donc si même un bit est modifié, tous les autres bits sont également susceptibles de changer pendant le déchiffrement de TEA, donc la somme de contrôle ne passera pas.

Est-ce piratable ?Bien sûr!Presque tout l'est, mais c'est assez serré et simple à mettre en œuvre.

Si lier les informations de contact n'est pas suffisant, incluez un champ pour "ID de nœud" et verrouillez-le sur l'adresse MAC ou une autre comme vous le suggérez.

N'utilisez pas d'adresses MAC.Sur certains matériels que nous avons testés - notamment certains IBM Thinkpad - l'adresse MAC peut changer au redémarrage.Nous n'avons pas pris la peine d'enquêter pourquoi c’était le cas, mais nous avons appris assez tôt au cours de nos recherches à ne pas nous y fier.

Avis de non-responsabilité et prise obligatoire :l'entreprise que j'ai co-fondée produit le Solution de licence OffByZero Cobalt.Vous ne serez donc probablement pas surpris d'apprendre que je recommande d'externaliser votre licence et de vous concentrer sur vos compétences de base.

Sérieusement, ce genre de choses est assez difficile à réaliser, et les conséquences d'une erreur pourraient être assez graves.Si vous avez un faible volume et un prix élevé, quelques copies piratées pourraient sérieusement réduire vos revenus, et si vous avez un gros volume et un prix bas, warez d00dz est incité à pirater votre logiciel pour le plaisir et la réputation.

Une chose à garder à l’esprit est qu’il n’existe pas de licence véritablement à l’épreuve du crack ;Une fois que quelqu'un a votre byte-code sur son matériel, vous lui donnez la possibilité de contrôler complètement ce qu'il en fait.

Un bon système de licence permet de placer la barre suffisamment haut pour que l'achat de votre logiciel soit une meilleure option, en particulier avec l'augmentation du nombre de logiciels piratés infectés par des logiciels malveillants.Nous vous recommandons de prendre un certain nombre de mesures pour sécuriser votre candidature :

  • obtenez un bon système de licence tiers
  • parsemez votre code de vérifications contenues dans la portée (par ex.aucune variable globale comme fIsLicensed, ne vérifiez pas l'état d'une fonctionnalité à proximité du code qui implémente la fonctionnalité)
  • employer une obscurcissement sérieux dans le cas du code .NET ou Java

L'entreprise pour laquelle je travaillais utilisait en fait un clé USB.C'était pratique car :

  • Notre logiciel a également été installé sur cette clé USB
  • Le programme ne fonctionnerait que s'il trouvait la clé matérielle (unique) (n'importe quelle clé USB standard en possède, vous n'avez donc pas besoin d'acheter quelque chose de spécial, n'importe quelle clé fera l'affaire)
  • il n'était pas limité à un ordinateur, mais pouvait être installé sur un autre système si vous le souhaitez

Je sais que la plupart des gens n'aiment pas les dongles, mais dans ce cas, c'était très pratique car ils étaient utilisés dans un but spécial. lecteur multimédia que nous avons également livré, les clés USB pourraient ainsi être utilisées en démonstration sur n'importe lequel pc, mais aussi, et sans aucune modification, être utilisé dans l'application réelle (c'est à dire les vrais joueurs), une fois le client satisfait

Nous gardons les choses simples :stockez toutes les données de licence dans un fichier XML (facile à lire et à gérer), créez un hachage de l'intégralité du XML, puis cryptez-le avec un utilitaire (également propre et simple).

C’est également loin d’être parfait, mais cela peut durer un certain temps.

Presque tous les systèmes de licences commerciales ont été crackés, nous en avons utilisé beaucoup au fil des années, tous finissent par être crackés, la règle générale est d'écrire le vôtre, de le modifier à chaque version, une fois que vous êtes heureux, essayez de le cracker vous-même.

Rien n'est vraiment sécurisé, en fin de compte regardez les grands acteurs Microsoft, etc., ils suivent le modèle que les gens honnêtes paieront et d'autres copieront, n'y mettez pas trop d'efforts.

Si votre candidature vaut la peine de payer de l’argent, les gens le feront.

J'ai utilisé un certain nombre de produits différents qui génèrent des licences et j'ai créé ma propre solution, mais cela se résume à ce qui vous donnera le plus de flexibilité maintenant et plus tard.

Les sujets sur lesquels vous devriez vous concentrer pour générer vos propres clés de licence sont...

Formatage HEX, cryptographie à courbe elliptique et tous les algorithmes de cryptage tels que AES/Rijndael, DES, Blowfish, etc.Ceux-ci sont parfaits pour créer des clés de licence.

Bien sûr, il ne suffit pas d'avoir une clé, il faut également l'associer à un produit et programmer l'application pour qu'elle se verrouille en fonction d'un système de clés que vous avez créé.

J'ai essayé de créer ma propre solution, mais au final, lorsqu'il s'agissait de gagner de l'argent avec le logiciel, j'ai dû céder et obtenir une solution commerciale qui me ferait gagner du temps dans la génération de clés et la gestion de ma gamme de produits...

Jusqu'à présent, mon préféré a été License Vault de SpearmanTech, mais j'ai également essayé FlexNet (coûteux), XHEO (beaucoup trop de programmation requise) et SeriousBit Ellipter.

J'ai finalement choisi le produit License Vault parce que je l'obtiendrais pour beaucoup moins cher que les autres et qu'il avait tout simplement plus à m'offrir car nous effectuons la plupart de notre travail dans .NET 3.5.

Il est difficile de fournir une bonne réponse sans rien connaître de votre produit et de vos clients.Pour les logiciels d'entreprise vendus à des techniciens, vous pouvez utiliser un système de licence assez complexe et ils le comprendront.Pour les logiciels grand public vendus à des personnes à peine instruites en informatique, vous avez besoin d’un système beaucoup plus simple.

En général, j'ai adopté la pratique consistant à créer un système très simple qui permet aux personnes honnêtes de rester honnêtes.Quiconque souhaite réellement voler votre logiciel trouvera un moyen de contourner n'importe quel système DRM.

Dans le passé, j'ai utilisé Armadillo (maintenant Software Passport) pour des projets C++.J'utilise actuellement XHEO pour les projets C#.

Si votre produit nécessite l'utilisation d'Internet, vous pouvez générer un identifiant unique pour la machine et l'utiliser pour vérifier auprès d'un service Web de licence.

Si ce n’est pas le cas, je pense qu’opter pour un produit commercial est la voie à suivre.Oui, ils peuvent être piratés, mais pour la personne absolument déterminée à le faire, il est peu probable qu’elle ait jamais payé.

Nous avons utilisé: http://www.aspack.com/asprotect.aspx

Nous utilisons également un appel de fonction dans leur produit SDK qui nous donne un identifiant unique pour une machine.

Bonne entreprise bien que clairement non anglophone puisque leur premier produit s'appelait "AsPack".

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