web-dev-qa-db-fra.com

Comment protégez-vous votre logiciel contre la distribution illégale?

Je suis curieux de savoir comment protégez-vous votre logiciel contre le craquage, le piratage, etc.

Utilisez-vous une sorte de vérification du numéro de série? Clés matérielles?

Utilisez-vous des solutions tierces?

Comment résolvez-vous les problèmes de licence? (par exemple, gestion des licences flottantes)

EDIT: Je ne parle pas d'open source, mais de distribution de logiciel strictement commerciale ...

89
petr k.

Il existe de très nombreuses protections disponibles. La clé est:

  • Évaluer votre public cible et ce qu'il est prêt à accepter
  • Comprendre le désir de votre public de jouer gratuitement
  • Évaluer le montant que quelqu'un est prêt à mettre de l'avant pour briser votre protection
  • Appliquer juste assez de protection pour empêcher la plupart des gens d'éviter le paiement, sans ennuyer ceux qui utilisent votre logiciel.

Rien n'est incassable, il est donc plus important de jauger ces choses et de choisir une bonne protection que de simplement appliquer la meilleure (pire) protection que vous puissiez vous offrir.

  • Codes d'enregistrement simples (vérifiés en ligne une fois).
  • Inscription simple avec des clés révocables, vérifiées fréquemment en ligne.
  • La clé cryptée contient une partie de l'algorithme du programme (vous ne pouvez pas simplement ignorer la vérification - elle doit être exécutée pour que le programme fonctionne)
  • Clé matérielle (cryptographie à clé publique/privée)
  • Clé matérielle (inclut une partie de l'algorithme du programme qui s'exécute sur la clé)
  • Le service Web exécute un code critique (les pirates ne peuvent jamais le voir)

Et des variations de ce qui précède.

73
Adam Davis

Quel que soit votre itinéraire, facturez un prix raisonnable, facilitez l'activation, offrez des mises à jour mineures gratuites et ne désactivez jamais leur logiciel. Si vous traitez vos utilisateurs avec respect, ils vous récompenseront pour cela. Quoi qu'il en soit, peu importe ce que vous faites, certaines personnes finiront par le pirater.

28
rpetrich

Ne fais pas ça.

Les pirates pirateront. Quelle que soit la solution que vous proposez, elle peut et sera fissurée.

D'un autre côté, vos clients réels et payants sont ceux qui sont incommodés par la merde.

24
Asmor

Facilitez l'achat que le vol. Si vous mettez des tas de protection contre la copie, cela rend simplement la valeur de posséder la vraie affaire assez faible.

Utilisez une simple clé d'activation et assurez aux clients qu'ils peuvent toujours obtenir une clé d'activation ou retélécharger le logiciel s'ils perdent la leur.

Toute protection contre la copie (à part les composants uniquement en ligne comme les jeux multijoueurs et les logiciels financiers qui se connectent à votre banque, etc.) que vous pouvez simplement supposer sera vaincue. Vous voulez au moins que télécharger votre logiciel illégalement soit un peu plus difficile que de l'acheter.

J'ai des jeux PC que je n'ai jamais ouverts, car il y a tellement de déchets de protection contre la copie qu'il est en fait plus facile de télécharger la fausse version.

22
Grant

Le système de licence logicielle Microsoft est extrêmement coûteux pour une petite entreprise. Le coût du serveur est d'environ 12 000 $ si vous souhaitez le configurer vous-même. Je ne le recommande pas pour la feinte du cœur.

Nous venons en fait de mettre en œuvre Intellilock dans notre produit. Il vous permet de prendre toutes les décisions concernant la rigueur de votre licence, et il est également très rentable. De plus, il fait l'obfuscation, la prévention du compilateur, etc.

Une autre bonne solution que j'ai vue dans les petites entreprises/entreprises médicales est SoloServer . Il s'agit bien plus d'un système de commerce électronique et de contrôle des licences. Il est très configurable au point de peut-être un peu trop complexe. Mais cela fait un très bon travail d'après ce que j'ai entendu.

J'ai également utilisé le système licence Desaware pour dot net dans le passé. C'est un système assez léger par rapport aux deux ci-dessus. C'est un très bon système de contrôle de licence en termes de son cryptographique. Mais c'est une API de très bas niveau dans laquelle vous devez implémenter presque tout ce que votre application utilisera réellement.

15
Jason Short

Les protections logicielles ne valent pas l'argent - si votre logiciel est demandé, il volonté être vaincu, quoi qu'il arrive.

Cela dit, les protections matérielles peuvent bien fonctionner. Voici un exemple de la façon dont cela peut bien fonctionner: Trouvez un composant (assez) simple mais nécessaire de votre logiciel et implémentez-le dans Verilog/VHDL. Générez une paire de clés public-privé et créez un service Web qui accepte une chaîne de défi et la crypte avec la clé privée. Créez ensuite un dongle USB contenant votre clé publique et générant des chaînes de défi aléatoires. Votre logiciel doit demander au dongle USB une chaîne de défi et l'envoyer au serveur pour le chiffrement. Le logiciel l'envoie ensuite au dongle. Le dongle valide la chaîne de défi chiffrée avec la clé publique et passe en mode "activé". Votre logiciel appelle ensuite le dongle chaque fois qu'il doit effectuer l'opération que vous avez écrite en HDL. De cette façon, quiconque veut pirater votre logiciel doit comprendre en quoi consiste l'opération et la réimplémenter - beaucoup plus difficile que de simplement vaincre une protection logicielle pure.

Edit: Je viens de réaliser que certains éléments de vérification sont à l'envers par rapport à ce qu'ils devraient être, mais je suis à peu près sûr que l'idée se présente.

15
Cody Brocious

La gestion des "droits" numériques est le plus gros produit logiciel d'huile de serpent de l'industrie. Pour emprunter une page à la cryptographie classique, le scénario typique est qu'Alice souhaite transmettre un message à Bob sans que Charlie puisse le lire. DRM ne fonctionne pas car dans son application, Bob et Charlie sont la même personne!

Vous feriez mieux de poser la question inverse, qui est "Comment puis-je amener les gens à acheter mon logiciel au lieu de le voler?" Et c'est une question très large. Mais cela commence généralement par des recherches. Vous déterminez qui achète le type de logiciel que vous souhaitez vendre, puis vous produisez des logiciels qui plaisent à ces personnes.

Le point supplémentaire à cela est de limiter les mises à jour/add-ons aux copies légitimes uniquement. Cela peut être quelque chose d'aussi simple qu'un code de commande reçu lors de la transaction d'achat.

Découvrez le logiciel Stardock, les fabricants de WindowBlinds et de jeux tels que Sins of a Solar Empire, ce dernier n'a pas de DRM et a réalisé un profit considérable sur un budget de 2 millions de dollars.

9
Nathan Strong

Il existe plusieurs méthodes, telles que l'utilisation de l'ID de processeur pour générer une "clé d'activation".

L'essentiel est que si quelqu'un le souhaite suffisamment, il procédera à une ingénierie inverse de toute protection dont vous disposez.

Les méthodes les plus sûres sont d'utiliser la vérification en ligne lors de l'exécution ou un hachage matériel.

Bonne chance!

6
Ian P

Avec un peu de temps, votre logiciel sera toujours craqué. Vous pouvez rechercher des versions fissurées de tout logiciel bien connu afin de le confirmer. Mais cela vaut toujours la peine d'ajouter une forme de protection à votre logiciel.

N'oubliez pas que les personnes malhonnêtes ne paieront jamais pour votre logiciel et trouveront/utiliseront toujours une version fissurée. Les gens très honnêtes s'en tiendront toujours aux règles, même sans système de licence, simplement parce que c'est le genre de personne qu'ils sont. Mais la majorité des gens se situent entre ces deux extrêmes.

L'ajout d'un système de protection simple est un bon moyen de faire en sorte que cette masse de personnes intermédiaires agisse de manière honnête. C'est une façon de les pousser à se souvenir que le logiciel n'est pas gratuit et qu'ils devraient payer pour le nombre approprié de licences. Beaucoup de gens réagissent réellement à cela. Les entreprises sont particulièrement douées pour respecter les règles parce que le gestionnaire ne dépense pas son propre argent. Les consommateurs sont moins susceptibles de s'en tenir aux règles parce que c'est leur propre argent.

Mais l'expérience récente avec des versions telles que Spore de Electronic Arts montre que vous pouvez aller trop loin dans le domaine des licences. Si vous faites en sorte que même des personnes légitimes se sentent comme des criminels parce qu'elles sont constamment validées, elles commencent à se rebeller. Ajoutez donc quelques licences simples pour rappeler aux gens s'ils sont malhonnêtes, mais il est peu probable que quelque chose de plus que cela augmente les ventes.

4
Phil Wright

Ce n'est pas exactement la réponse que vous recherchez, mais c'est une excellente ressource sur le piratage d'un développeur de jeux qui a activement demandé à leurs pirates pourquoi ils faisaient cela. Et est lié à la première partie de la réponse que vous choisissez.

Lisez-le à Parler aux pirates .

3
Fernando Barrocal

Des jeux en ligne uniquement comme World of Warcraft (WoW) l'ont fait, tout le monde doit se connecter au serveur à chaque fois et ainsi les comptes peuvent être constamment vérifiés. Aucune autre méthode ne fonctionne pour les haricots.

3
Jeff

Généralement, il y a deux systèmes qui se confondent souvent -

  • Suivi de licence ou d'activation, utilisation légale légitime
  • Sécurité empêchant l'utilisation illégale

Pour les licences, utilisez un package commercial, FlexLM de nombreuses entreprises investissent d'énormes sommes d'argent dans la licence pensent qu'elles obtiennent également la sécurité, c'est une erreur courante que les générateurs de clés pour ces packages commerciaux sont prolifiquement abondants.

Je ne recommanderais la licence que si vous vendez à des entreprises qui paieront légitimement en fonction de l'utilisation, sinon c'est probablement plus d'effort que de valeur.

N'oubliez pas qu'au fur et à mesure du succès de vos produits, toutes les mesures de licence et de sécurité seront éventuellement violées. Alors décidez maintenant si cela vaut vraiment la peine.

Nous avons implémenté un clone de salle blanche de FlexLM il y a quelques années, nous avons également dû améliorer nos applications contre les attaques binaires, son long processus, il faut le revoir à chaque version. Cela dépend aussi vraiment des marchés mondiaux que vous vendez ou de l'endroit où se trouve votre clientèle principale et de ce que vous devez faire.

Découvrez une autre de mes réponses sur sécuriser une DLL .

3
titanae

La distribution illégale est pratiquement impossible à empêcher; demandez simplement à la RIAA. Le contenu numérique peut simplement être copié; le contenu analogique peut être numérisé, puis copié.

Vous devez concentrer vos efforts sur la prévention des exécutions non autorisées . Il n'est jamais possible d'empêcher complètement l'exécution de code sur la machine de quelqu'un d'autre, mais vous pouvez prendre certaines mesures pour élever la barre suffisamment haut pour qu'il devienne plus facile d'acheter votre logiciel que de le pirater.

Jetez un œil à l'article Developing for Software Protection and Licensing qui explique la meilleure manière de développer votre application en gardant à l'esprit les licences.

Clause de non-responsabilité et prise obligatoires: la société que j'ai cofondée produit la solution de licence logicielle OffByZero Cobalt pour .NET .

2
Duncan Bayne

Même si vous utilisiez une sorte d'authentification biométrique d'empreintes digitales, quelqu'un trouverait un moyen de la casser. Il n'y a vraiment aucun moyen pratique de contourner cela. Au lieu d'essayer de rendre votre logiciel à l'épreuve du piratage, pensez au revenu supplémentaire qui sera généré en ajoutant une protection supplémentaire contre la copie par rapport au temps et à l'argent qu'il faudra pour l'implémenter. À un moment donné, il devient moins cher d'utiliser un système de protection contre la copie moins rigoureux.

Cela dépend de ce qu'est exactement votre produit logiciel, mais une possibilité est de déplacer la partie "précieuse" du programme hors du logiciel et de la garder sous votre contrôle exclusif. Vous factureriez des frais modestes pour le logiciel (principalement pour couvrir les coûts d'impression et de distribution) et généreriez vos revenus à partir du composant externe. Par exemple, un programme antivirus vendu à bas prix (ou fourni gratuitement avec d'autres produits) mais qui vend des abonnements à son service de mise à jour des définitions de virus. Avec ce modèle, une copie piratée qui s'abonne à votre service de mise à jour ne représenterait pas une grande perte financière. Avec la popularité croissante des applications "dans le cloud", cette méthode devient plus facile à mettre en œuvre; Hébergez l'application sur votre cloud et facturez aux utilisateurs l'accès au cloud. Cela n'empêche pas quelqu'un de réimplémenter son propre cloud pour éliminer le besoin de votre service, mais le temps et les efforts nécessaires pour le faire l'emporteraient probablement sur les avantages (si vous maintenez votre modèle de tarification raisonnable).

2
bta

DRM ceci, DRM cela - les éditeurs qui imposent la DRM sur leurs projets le font parce que c'est rentable. Leurs économistes concluent cela sur des données qu'aucun de nous ne verra jamais. Les trolls "DRM is evil" vont un peu trop loin.

Pour un produit à faible visibilité, une simple activation Internet va arrêter la copie occasionnelle. Toute autre copie est probablement négligeable pour votre résultat net.

2
Dustin Getz

Le problème avec cette idée de laisser les pirates l'utiliser, ils ne l'achèteront pas de toute façon et montreront à leurs amis qui pourraient l'acheter est double.

  1. Avec un logiciel qui utilise des services tiers, les copies piratées utilisent une bande passante/ressource précieuse qui donne aux utilisateurs légitimes une pire expérience, rend mon sw plus populaire qu'il ne l'est et les services tiers me demandent de payer plus pour leurs services parce que de la bande passante utilisée.

  2. Beaucoup d'occasionnels ne rêveraient pas de casser eux-mêmes le sw, mais s'il y a une fissure facilement évaluable sur un site comme piratebay, ils l'utiliseront, sinon ils pourraient l'acheter.

Ce concept de ne pas désactiver les logiciels piratés une fois découverts semble également fou, je ne comprends pas pourquoi je devrais laisser quelqu'un continuer à utiliser des logiciels qu'ils ne devraient pas utiliser, je suppose que ce n'est que le point de vue/l'espoir des pirates.

En outre, il convient de noter que rendre un programme difficile à déchiffrer est une chose, mais vous devez également empêcher le partage de copies légitimes, sinon quelqu'un pourrait simplement acheter une copie et ensuite
partagez-le avec des milliers d'autres via un site torrent. Le fait d'avoir leur nom/adresse e-mail intégré dans la licence ne suffira pas à dissuader tout le monde de faire cela, et il n'en faut vraiment qu'un pour qu'il y ait un problème.

La seule façon que je peux voir pour éviter cela est de:

  1. Demandez au serveur de vérifier et de verrouiller la licence au démarrage du programme à chaque fois, et de libérer la licence à la sortie du programme. Si un autre client démarre avec la même licence alors que le premier client a une licence, il est rejeté. Cette méthode n'empêche pas que la licence soit utilisée par plus d'un utilisateur, mais l'empêche d'être utilisée simultanément par plus d'un utilisateur - ce qui est assez bien. Il permet également à un utilisateur légitime de transférer la licence sur l'un de leurs ordinateurs, ce qui offre une meilleure expérience.

  2. Au premier démarrage du client, le client envoie la licence au serveur et le serveur la vérifie, provoquant la définition d'un indicateur dans le logiciel client. Les demandes supplémentaires d'autres clients avec la même licence sont rejetées. Le problème avec cette approche est que le client d'origine aurait des problèmes s'il réinstallait le logiciel ou souhaitait utiliser un autre ordinateur.

2
Paul Taylor

Comme cela a été souligné, la protection logicielle n'est jamais garantie à toute épreuve. Ce que vous comptez utiliser dépend en grande partie de votre public cible. Un jeu, par exemple, n'est pas quelque chose que vous allez pouvoir protéger pour toujours. Un logiciel serveur, par contre, est quelque chose de beaucoup moins susceptible d'être distribué sur Internet, pour un certain nombre de raisons (la pénétration du produit et la responsabilité viennent à l'esprit; une grande entreprise ne veut pas être tenue pour responsable des logiciels piratés, et les pirates ne se soucient que des choses suffisamment demandées). En toute honnêteté, pour un jeu de haut niveau, la meilleure solution est probablement de semer le torrent vous-même (clandestinement!) Et de le modifier d'une manière ou d'une autre (par exemple, pour qu'après deux semaines de jeu, il apparaisse avec des messages vous disant de veuillez envisager de soutenir les développeurs en achetant une copie légitime).

Si vous mettez en place une protection, gardez deux choses à l'esprit. Premièrement, un prix inférieur complétera toute protection contre la copie en rendant les gens plus enclins à payer le prix d'achat. Deuxièmement, la protection ne doit pas gêner les utilisateurs - voir Spore pour un exemple récent.

2
coppro

Si vous êtes intéressé par la protection des logiciels que vous avez l'intention de vendre aux consommateurs, je recommanderais l'une des nombreuses bibliothèques de génération de clés de licence (recherche Google sur la génération de clés de licence). Habituellement, l'utilisateur doit vous donner une sorte de graine comme son adresse e-mail ou son nom et il récupère le code d'enregistrement.

Plusieurs entreprises hébergeront et distribueront votre logiciel ou fourniront une application complète d'installation/d'achat avec laquelle vous pourrez vous intégrer et le feront automatiquement, probablement sans frais supplémentaires pour vous.

J'ai vendu des logiciels aux consommateurs et je trouve que c'est le bon équilibre entre coût/facilité d'utilisation/protection.

1
Mike

La solution la plus simple et la meilleure consiste simplement à les recharger à l'avance. Fixez un prix qui fonctionne pour vous et eux.

Demander aux clients payants de prouver qu'ils paient des clients après avoir déjà payé les fait chier. L'implémentation du code pour empêcher l'exécution de votre logiciel vous fait perdre du temps et de l'argent, et introduit des bogues et des ennuis pour les clients légitimes. Vous feriez mieux de passer ce temps à fabriquer un meilleur produit.

Beaucoup de jeux/etc "protégeront" la première version, puis abandonneront les protections dans le premier patch en raison de problèmes de compatibilité avec de vrais clients. Ce n'est pas une stratégie déraisonnable si vous insistez sur un minimum de protection.

1
davenpcj

Presque toutes les protections contre la copie sont à la fois inefficaces et un cauchemar d'utilisabilité. Certains d'entre eux, comme mettre des root-kits sur les machines de vos clients, deviennent carrément contraires à l'éthique

1
wnoise

Si vous êtes un développeur de logiciels, l'une des solutions possibles consiste à intégrer des métadonnées directement dans votre produit. Recherchez un outil de sécurité de destruction d'instance de theredsunrise.

0
user613111

Nous accordons une licence à nos logiciels commerciaux en utilisant notre propre système de licence - ce que nous vendons (outils de gestion de licence). Nous vendons généralement des licences d'abonnement, mais pouvons également vendre en fonction de l'utilisation si nous le souhaitons. Il a été sécurisé pour nous jusqu'à présent: www.agilis-sw.com

0
user332801

Faites partie de votre produit un composant en ligne qui nécessite une connexion et une authentification. Voici quelques exemples:

  • Jeux en ligne
  • Protection contre le virus
  • Protection contre les spams
  • Logiciel de suivi d'ordinateur portable

Ce paradigme ne va cependant que jusque-là et peut décourager certains consommateurs.

0
pdavis

Je suggère une simple clé d'activation (même si vous savez qu'elle peut être cassée), vous ne voulez vraiment pas que votre logiciel gêne vos utilisateurs, ou ils le repousseront simplement.

Assurez-vous qu'ils peuvent re-télécharger le logiciel, je suggère une page Web où ils peuvent se connecter et télécharger votre logiciel uniquement après avoir payé (et oui, ils devraient pouvoir télécharger autant de fois qu'ils le souhaitent, directement, sans une seule question pourquoi de votre part).

Poussez avant tout vos utilisateurs payants, il n'y a rien de plus irritant que d'être accusé d'être un criminel lorsque vous êtes un utilisateur légitime (le DVD avertit quiconque contre le piratage).

Vous pouvez ajouter un service qui vérifie la clé par rapport à un serveur en ligne, et dans le cas où deux adresses IP différentes utilisent la même clé, affichez une suggestion pour acheter une autre licence.

Mais s'il vous plaît ne le désactivez pas, il pourrait s'agir d'un utilisateur heureux montrant votre logiciel à un ami !!!!

0
levhita

Je suis d'accord avec beaucoup d'affiches qu'aucun système de protection contre la copie basé sur un logiciel ne dissuadera un pirate de logiciel qualifié. Pour les logiciels commerciaux basés sur .NET, Microsoft Software License Protection (SLP) est une solution à un prix très raisonnable. Il prend en charge les licences limitées dans le temps et flottantes. Leur prix commence à 10 $/mois + 5 $ par activation et les composants de protection semblent fonctionner comme annoncé. C'est une offre relativement nouvelle, cependant, donc l'acheteur se méfie.

0
PoppaVein