web-dev-qa-db-fra.com

Comment protéger les logiciels contre le piratage?

Pourquoi semble-t-il si facile de pirater aujourd'hui?

Il semble juste un peu difficile de croire qu'avec toutes nos avancées technologiques et les milliards de dollars dépensés pour concevoir le logiciel le plus incroyable et le plus époustouflant, nous n'avons toujours pas d'autre moyen de se protéger contre le piratage qu'un "numéro de série/clé d'activation". ". Je suis sûr qu'une tonne d'argent, peut-être même des milliards, a été consacrée à la création de Windows 7 ou Office et même de Snow Leopard, mais je peux l'obtenir gratuitement en moins de 20 minutes. Même chose pour tous les produits Adobe, qui sont probablement les plus simples.

Peut-il exister une méthode infaillible et anti-piratage pour protéger votre logiciel contre le piratage? Si ce n'est pas réaliste, qu'en est-il théoriquement possible? Ou quels que soient les mécanismes que ces entreprises déploient, les pirates peuvent-ils toujours trouver un moyen de contourner ce problème?

80
Snowman

Le code est une donnée. Lorsque le code est exécutable, une copie de ces données est du code non protégé. Le code non protégé peut être copié.

Pepper le code avec des contrôles anti-piratage le rend légèrement plus difficile, mais les pirates utilisent simplement un débogueur et les suppriment. L'insertion de no-ops au lieu d'appels à "check_license" est assez facile.

  • Les programmes difficiles à pirater font des choses progressivement plus ennuyeuses.
  • Mais les vendeurs doivent vendre aux clients les logiciels qu'ils sont prêts à utiliser.
  • Tout le monde ne permet pas aux ordinateurs de téléphoner à la maison.
  • Certaines personnes travaillant sur des sujets sensibles refusent de connecter des machines à Internet.

Les programmes que je vends chez mon employeur actuel (outils aérospatiaux) ne téléphonent jamais à la maison . Les clients ne toléreraient pas de téléphoner à la maison pour une "activation" à chaque démarrage du programme.

pire cas, le programme s'exécute dans un VM sans réseau, où c'est toujours une date fixe.

Donc, il aurait pu être légitimement installé une fois, mais aucun effort de la part des développeurs ne peut lui faire dire que ce n'est pas comme ça.

  • Les tentatives d'ajout de "prévention de copie" matérielle aux ordinateurs à usage général sont vouées à l'échec.
  • Quelle que soit la société qui vend du matériel sans prévention contre la copie, tout le matériel est vendu.
  • Des fournisseurs comme Dell et Intel essaient progressivement d'introduire du matériel d'espionnage comme Palladium, mais ils s'y opposent fortement.
  • Lorsque l'ordinateur effectue quelque chose de scientifique, en temps réel, toute interruption pour "vérifier le contenu piraté" entraînera des pannes. Si tous les ordinateurs avaient un DRM matériel, ceux spéciaux scientifiques/en temps réel ne devraient pas l'avoir. Par accident, tout le monde achèterait des produits scientifiques/en temps réel.
  • Les vérifications DRM matérielles auront des faux positifs sur certains types de contenu.

    • Cas le plus simple: résolution. J'enregistre une vidéo Quad HD à partir de mon réseau de caméras (assis sur mon bureau en ce moment). Windows DRM s'interpose entre moi et les données car il s'agit de QuadHD.

    • Analyse des signatures: le DRM matériel est petit et possède un ensemble de données relativement fixe. Il doit également utiliser le même bus de données que le CPU afin de ralentir les choses par intermittence. Cela ruine tout en temps réel.

    • Ainsi, pour rendre le DRM matériel plus intelligent lors d'un faux positif, votre ordinateur sera éventuellement interrompu pour aller vérifier à l'aide d'un service Web. Maintenant, mon processeur de données scientifiques échoue parce qu'il n'est pas en réseau ou arrête de diffuser des données.

78
Tim Williscroft

En fin de compte, le gros problème est que la plupart des logiciels impliquent de remettre à la fois le verrou et la clé à l'attaquant potentiel et en espérant qu'ils ne comprennent pas comment les assembler.

La méthode sécurisée niquement de protection du logiciel est ne pas la donner à l'utilisateur (par exemple SaaS). Vous remarquerez que vous ne pouvez pas "pirater" Google Docs, par exemple. En fin de compte, si vous essayez d'obtenir quelque chose, vous devez supposer qu'ils connaissent parfaitement tout ce que vous leur donnez. Vous ne pouvez pas faire confiance au client. Cela vaut autant pour la prévention du piratage que pour la protection d'un système contre les compromissions.

Étant donné que les modèles de distribution de logiciels existants sont basés sur la fourniture au client de l'ensemble du package, puis sur la tentative de le protéger sur le matériel, l'attaquant potentiel contrôle, le modèle de distribution est incompatible avec tout concept de logiciel "infranchissable".

64
Anon.

Pourquoi les logiciels sont-ils encore facilement piratés aujourd'hui?

Il est plus rentable de vendre des logiciels faciles à pirater.

Lorsqu'elles décident de mesures anti-piratage, les entreprises procèdent à une analyse coûts-avantages. Pour tout ensemble de mesures, si les avantages ne l'emportent pas sur les coûts, l'entreprise ne le fait pas.

Les coûts incluent du temps et des efforts pour mettre en œuvre, documenter, soutenir et maintenir les mesures, et peut-être des pertes de ventes si elles sont vraiment ennuyeuses. D'une manière générale, il existe deux types d'avantages:

  • Des profits plus importants parce que les gens qui auraient piraté le programme l'ont acheté à la place.
  • Les personnes qui prennent des décisions sont heureuses que le programme ne soit pas piraté.

Voici un exemple simple: Microsoft Office.

Maintenant, MS est une question d'argent, et pas tellement de rendre les cadres heureux du piratage. Depuis un certain temps, MS vend une édition d'Office "Famille et Étudiant" à un prix bien meilleur marché que l'édition "normale" pour les entreprises. Je l'ai acheté il y a quelques années et il n'avait aucune protection contre la copie! Et la technologie "anti-piratage" consistait à saisir une clé de produit qui était ensuite stockée dans le dossier de l'application. Mais vous pouvez l'exécuter sur autant d'ordinateurs que vous le souhaitez simultanément, et ils fonctionneront tous très bien! En fait, sur le Mac, vous pouviez faire glisser le dossier de l'application sur le réseau vers un autre ordinateur sur lequel vous n'aviez jamais effectué d'installation, et comme la clé de produit était stockée avec l'application, elle fonctionnait très bien.

Pourquoi une telle technologie anti-piratage pathétique? Deux raisons.

La première est que le coût supplémentaire du support technique pour les utilisateurs à domicile vissant leurs installations n'en valait tout simplement pas la peine.

Le second est le mesures anti-piratage non techniques. MS a un programme de dénonciation où si vous savez qu'une entreprise a piraté un logiciel MS - comme l'installation de 200 copies du même bureau "Domicile et étudiant" - vous pouvez les appeler. Ensuite, MS entre et vérifie l'entreprise, et s'il trouve des logiciels piratés, les poursuit en justice - et vous obtenez une grosse coupe des gains .

Ainsi, MS n'a pas à utiliser la technologie pour empêcher le piratage. Ils trouvent plus rentable de n'utiliser que de l'argent liquide et dur.

31
Bob Murphy

À mon humble avis, un problème fondamental est que la plupart ou la totalité des méthodes "infaillibles et anti-piratage" * de protection des logiciels contre le piratage ennuient ou même éloignent les utilisateurs innocents et légaux.

Par exemple. vérifier que l'application n'est installée que sur une seule machine peut rendre difficile pour un utilisateur de changer le matériel de sa machine. Les dongles matériels peuvent signifier que vous ne pouvez pas utiliser la même application sur vos machines professionnelles et personnelles. Sans oublier les codes de zone DVD, CSS, le rootkit Sony et al., Qui ne sont pas strictement destinés à la protection logicielle, mais étroitement liés.

* qui, comme l'a noté @FrustratedWithFormsDesigner, ne sont jamais parfaits en pratique; il n'y a pas de sécurité à 100%, vous pouvez seulement essayer de faire en sorte qu'il soit assez coûteux pour un intrus de briser la défense afin qu'il n'y en ait pas "trop". Et je pense que c'est en raison de la nature fondamentale des logiciels et des informations numériques, qu'une fois que quelqu'un parvient à briser une défense particulière, la rupture peut presque toujours être reproduite de manière triviale par des millions de personnes.

29
Péter Török

Comme Bruce Schneier a dit , essayer de rendre les fichiers numériques non copiables, c'est comme essayer de ne pas mouiller l'eau. Il parle principalement de "DRM", qui est appliqué plus au contenu (par exemple, les films) qu'au code, mais du point de vue d'empêcher la copie de ce qui est dans le fichier fait peu de différence réelle - copier un fichier c'est copier un fichier c'est copier un fichier .

25
Jerry Coffin

Il n'existe qu'une seule "méthode infaillible et anti-piratage pour protéger votre logiciel contre le piratage" :

Logiciel libre (Comme vous pouvez en faire ce que vous voulez, même le vendre.)

Vous ne pouvez pas voler ce qui est donné gratuitement. Certes, cela va brouiller certains modèles de logiciels de sociétés de dinosaures, mais le piratage ne va nulle part. Vendez quelque chose que vous ne pouvez pas copier, de préférence quelque chose qui accompagne gratuitement ce que vous avez donné; votre aide par exemple.

17
Orbling

Cela est dû à la combinaison de quatre facteurs principaux:

À un niveau fondamental, une grande partie de ce que fait un ordinateur fonctionne en copiant des données. Par exemple, pour exécuter un programme, l'ordinateur doit le copier du disque dur dans la mémoire. Mais une fois que quelque chose a été copié dans la mémoire, il peut être écrit de la mémoire vers un autre emplacement. En gardant à l'esprit que la prémisse fondamentale de la "protection contre le piratage" est de créer des logiciels qui ne peuvent pas être copiés avec succès, vous pouvez commencer à voir l'ampleur du problème.

Deuxièmement, la solution à ce problème difficile agit directement contre les intérêts des utilisateurs légitimes et de ceux qui souhaitent utiliser le logiciel sans l’acquérir légalement. Certains de ces utilisateurs auront les connaissances techniques nécessaires pour analyser le code compilé. Vous avez maintenant un adversaire compétent qui travaille activement contre vous.

Parce que c'est un problème difficile, et parce que produire un logiciel correct est également intrinsèquement difficile, il est très probable que votre solution contienne au moins un bogue exploitable quelque part. Pour la plupart des logiciels, cela n'a pas d'importance, mais la plupart des logiciels ne sont pas attaqués activement par un adversaire déterminé. La nature du logiciel étant ce qu'il est, une fois qu'un bogue exploitable est trouvé, il peut être utilisé pour prendre le contrôle de l'ensemble du système et le désactiver. Ainsi, afin de produire une protection fiable, votre solution au problème très difficile doit être parfait ou elle sera fissurée.

Le quatrième facteur est l'Internet mondial. Cela rend le problème de la transmission d'informations à quiconque est intéressé trivial. Cela signifie qu'une fois que votre système imparfait est fissuré une fois, il est fissuré partout.

La combinaison de ces quatre facteurs signifie qu'aucun système de protection contre la copie imparfait ne peut être sûr. (Et à quand remonte la dernière fois que vous avez vu un logiciel parfait?) À la lumière de cela, la question ne devrait pas être "pourquoi le logiciel est-il toujours facilement piraté?", Mais "pourquoi les gens essaient-ils toujours de l'empêcher?"

13
Mason Wheeler

ne motivation souvent négligée et majeure derrière le Cloud SaaS sécurisent les sources de revenus.

Je pense que c'est là que l'avenir de la monétisation et de la protection IP est vraiment.

En détournant l'attention de la vente de solutions sur site qui doivent être exécutées dans un environnement indépendant de la volonté des fournisseurs, chaque stratégie contre le piratage de logiciels est finalement vouée à l'échec. Il n'y a tout simplement aucun moyen de protéger vos actifs lorsque vous les donnez à quelqu'un d'autre, car la protection doit être appliquée sur sa machine.

En ayant votre logiciel hébergé dans le cloud et fourni en tant que service, vous élevez efficacement la barre du piratage à un niveau où son activité de singe.

9
Johannes Rudolph

Je pense que la réponse que vous cherchez est que de nombreuses entreprises ne se soucient plus vraiment du piratage de cette façon. Personne ne veut que ses trucs sortent gratuitement, mais quand vous regardez le compromis entre ennuyeux et devoir supporter tous les gens où la protection avancée contre la copie a cassé ou cassé leurs ordinateurs. Quelques entreprises ont fait de gros efforts pour s'en occuper, mais en fin de compte, les choses sont toujours fissurées et leurs utilisateurs ont tendance à repartir avec un mauvais goût dans la bouche.

Cela ne vaut pas la peine (ou la perte potentielle de clients) d'essayer de l'implémenter pour les quelques personnes que vous empêcheriez de pirater de toute façon.

Certaines entreprises ont même considéré les utilisateurs pirates comme une ressource. Valve a fait sensation dans l'actualité avec un commentaire comme ça il y a un certain temps, et vous ne pouvez pas me dire que Microsoft n'est pas sorti vainqueur de toutes les installations piratées de Windows en Asie au fil des ans.

Pour les microsofts là-bas, ils cherchent à vendre de gros blocs de licences pour les petits gars dont ils ont besoin à chaque vente, mais ne peuvent pas se permettre de perdre des clients ou, dans certains cas, même se permettre les rootkits et autres vilaines conneries que les gens utilisent pour essayer de construire ce genre de verrou -dans.

Vous ne pouvez pas faire un anti-piratage parfait, mais il n'y a plus beaucoup de gens très motivés pour essayer.

8
Bill

Quoi que vous intégriez dans votre logiciel, il doit être compréhensible par la machine qui l'exécutera. Comme le logiciel est devenu plus sophistiqué, le logiciel pour comprendre d'autres logiciels est également devenu plus sophistiqué. Donc, si ce logiciel est compréhensible par la machine, il est compréhensible (et modifiable) par le pirate.

Par exemple, en principe, vous pouvez intégrer un chiffrement fort à votre exécutable, de sorte que la plupart des logiciels sont illisibles. Le problème est alors que les machines des utilisateurs finaux ne peuvent pas plus lire ce code que les pirates. Pour résoudre ce problème, votre logiciel doit inclure à la fois l'algorithme de déchiffrement et la clé - tous deux en clair, ou au moins se cachant derrière un chiffrement plus faible (le déchiffrement pour cela étant en clair).

IIRC, les meilleurs démonteurs peuvent vous avertir du code crypté et vous aider à capturer et analyser ce qui se cache derrière le cryptage. Si cela semble que les rédacteurs du désassembleur sont mauvais, considérez que les développeurs de sécurité en ont besoin tous les jours pour enquêter sur les virus et autres logiciels malveillants qui se cachent également dans le code crypté.

Il n'y a probablement que deux solutions à cela. L'une est la plate-forme fermée qui verrouille ses propres utilisateurs. Comme le montre la PlayStation 3, ce n'est pas nécessairement une garantie. Dans tous les cas, il y a une grande classe d'utilisateurs non méchants qui ne l'aimeront pas.

L'autre est que votre logiciel s'exécute sur des serveurs sous votre contrôle.

7
Steve314

Techniquement parlant, les logiciels peuvent toujours être piratés car la plupart des TI fonctionnent toujours sur des environnements logiciels et matériels conçus il y a des millénaires, alors que même la notion de piratage de logiciels n'existait pas.

Ces fondations doivent être maintenues pour une compatibilité descendante, ce qui accroît encore notre dépendance à leur égard.

Si nous devions repenser les environnements matériels/logiciels à partir de zéro avec l'anti-piratage à l'esprit, nous pourrions ajouter des améliorations significatives.

Voir par vous-même:

  • Le même système d'exploitation ouvert avec tous ses composants entièrement exposés et se proposant littéralement pour la manipulation

  • La même architecture informatique ouverte qui accepte tous les logiciels que vous lui lancez

  • Le modèle de distribution de logiciels est toujours basé sur des fichiers non chiffrés qui sont remis à l'utilisateur

Le même problème existe avec Internet et sa faible sécurité, de nombreuses vulnérabilités, l'ouverture aux manipulations, le spam et les attaques distribuées. Nous le ferions beaucoup mieux la deuxième fois, si nous pouvions refaire Internet. Malheureusement, nous devons nous en tenir à ce que nous devons maintenir la compatibilité avec la masse des applications et des services existants.

Pour l'instant, il semble que la meilleure façon de protéger les logiciels contre le piratage soit d'introduire des changements au niveau matériel:

  • Fermez le matériel et transformez-le en boîte noire. Rendre impossible pour un utilisateur de jouer avec le matériel et ses logiciels. L'approche consiste ici à probablement tout chiffrer au niveau de la puce afin que leurs interfaces externes soient entièrement chiffrées. Un bon exemple de cela est le cryptage HDCP pour l'interface multimédia HDMI - un flux multimédia est crypté avant de quitter la boîte du lecteur et décrypté à l'intérieur d'une unité d'affichage afin qu'il n'y ait pas de flux de données ouvert à intercepter.

  • Fermez les canaux de distribution. Rendez tous les médias externes et canaux en ligne entièrement cryptés afin que seul le matériel certifié puisse déchiffrer le flux de données.

Il est possible de retirer les deux mais cela transformera tout l'écosystème en prison. Très probablement, un mouvement parallèle/souterrain d'un matériel/logiciel gratuit se produira créant un écosystème parallèle.

5
user8685

Une raison, je suppose, est que les mêmes personnes qui savent écrire une sécurité décente sont probablement des pirates eux-mêmes.

De plus, essayer de vous protéger contre le piratage est vraiment, vraiment difficile. Puisque votre ordinateur doit exécuter lui-même cette protection, elle peut être interceptée à tout moment (mémoire/exécution/trafic réseau/...). C'est là que l'obfuscation entre en jeu, essayant de rendre impossible de comprendre ce qui se passe.

Je crois que la puissance des numéros de série et des clés d'activation réside dans le fait que vous pouvez au moins voir qui pirate et essayer de le suivre/le bloquer de cette façon. Je crois que cela fait partie de la raison pour laquelle tant de services sont des services en ligne de nos jours. (Steam, mise à jour Windows etc ...) Cela devient soudainement beaucoup plus difficile à cracker, ... mais encore possible.

Lorsque vous avez un produit réussi, vous avez plus de gens qui essaient de le casser, donc les chances qu'il soit piraté sont plus grandes.

5
Steven Jeuris

L'anti-piratage automatisé est une contradiction logique.

Les utilisateurs légitimes sont approuvés par les fournisseurs.

Tout anti-piratage "automatisé" cherche à automatiser la relation de confiance.

Comment cela peut-il fonctionner? Comment tout moyen technique peut-il jamais faire "confiance" à une personne?

La confiance est une relation intrinsèquement humaine. Tout mécanisme technique peut toujours être renversé par des personnes qui semblent dignes de confiance mais qui ne le sont pas.

D'ailleurs, les gens perdent leur confiance tout le temps aussi.

5
S.Lott

Compte tenu de l'effort, une protection contre la copie presque parfaite pourrait probablement être obtenue… mais cela ne valait pas le coût . Plusieurs blogs notables ont en ont discutéexcellemment : en particulier, le concept d'un taux de piratage optimal .

Les mesures anti-piratage ont plusieurs coûts: le coût direct de leur mise en œuvre, mais aussi des coûts indirects: par exemple, les mesures causent souvent des désagréments, éloignant les utilisateurs.

Le piratage a des coûts, mais ils ne sont souvent pas terriblement élevés. Il peut également avoir certains avantages, par exemple en élargissant la base d'utilisateurs. Comme l'écrivait un commentateur sur le post Coding Horror: "Maintenant que je suis développeur et que j'ai réellement de l'argent à dépenser en logiciels, j'ai tendance à acheter les programmes que j'ai piratés à l'époque de mes études car je les connaissais déjà. "

Ainsi, une certaine protection anti-piratage est importante pour s'assurer que les ventes légitimes ne sont pas trop compromises; mais au-delà d'un certain point, il n'y a tout simplement pas d'incitation économique à améliorer les mesures anti-piratage.

4

Toutes les réponses semblent être techniques, mais ce n'est pas un problème technique, c'est social.

Le logiciel est facile à copier et difficile à écrire. Si ce n'était pas facile à copier, nous ne prendrions pas la peine. La plupart des programmes sont trop dispendieux pour écrire en une seule fois, et les plus petits s'appuient sur des programmes plus gros pour pouvoir s'exécuter. Si nous rendons également les programmes difficiles à copier, nous plaçons notre moi en désavantage concurrentiel. Oui, vous pouvez maximiser les bénéfices à court terme en décourageant la copie. Mais à la fin, vous perdrez des parts de marché à qui pourra jamais minimiser les coûts de copie, d’écriture et d’utilisation.

Le logiciel libre minimise un de ces coûts de copie et a une réduction massive sur les deux autres coûts d'écriture et d'utilisation.

coût à copier

Je peux installer Ubuntu linux en à peu près le même temps et les mêmes efforts que Windows 7 [Windows 7 a besoin de moi pour ajouter en plus une clé de licence, ce qui le rend un peu plus difficile].

Windows 7 coûtera 100 £, mais pour Ubuntu je peux le télécharger, l'acheter pour 6 £ dans le magasin de magazines (avec un magazine gratuit ajouté), 2 £ par correspondance ou emprunter un cd à un ami.

coût d'écriture

Le logiciel libre peut être modifié, ce qui réduit le coût. Je n'ai pas à partir du début.

coût d'utilisation

Avec Windows 7, je ne reçois aucune application, sauf un navigateur Web, avec Ubuntu, je reçois toutes les applications que je peux immaginer, beaucoup installées avec le système d'exploitation.

Je n'ai pas besoin d'un antivirus sur Linux.

Je peux exécuter Linux sur un matériel plus ancien.

Avec le Logiciel Libre, personne ne force à se mettre à jour, en créant des versions incompatibles de ses outils bureautiques.

4
ctrl-alt-delor

Dans un monde où les ordinateurs sont suffisamment similaires pour pouvoir télécharger des logiciels sur le net et les exécuter immédiatement, il est très difficile d'identifier quelque chose qui permet de déterminer si cet ordinateur peut fonctionner correctement, mais cet ordinateur ne l'est pas.

Cela se résume finalement à ce que vous ayez quelque chose que personne d'autre n'a. Cela peut être un numéro de série que vous avez payé, un dongle matériel ou un DVD avec des erreurs physiques à un certain endroit. Le logiciel recherche alors cette chose spécifique et refuse de s'exécuter s'il n'y est pas. Pour les numéros de série, vous devez également avoir un emplacement sur Internet où le logiciel peut valider que le numéro de série est acceptable pour le navire mère.

Malheureusement, les pirates sont très bons pour supprimer chirurgicalement de tels contrôles, donc le code doit être très compliqué et difficile à modifier pour le rendre difficile, mais avec un dévouement suffisant, un humain peut toujours le faire.

Par conséquent, la plupart des produits logiciels bon marché optent pour le numéro de série avec un vaisseau mère sur Internet pour le valider, ainsi qu'une politique de licence que les cashcows de la société sont obligés de suivre. Les produits coûteux utilisent généralement une protection par dongle.

3
user1249

Il existe différents types de logiciels qui ont des protections.

Lorsque vous prenez l'exemple de Windows 7, il est évident que la réponse est non, tout simplement parce que l'architecture et la programmation PC sont très bien connues.

Mais si vous considérez d'autres matériels, comme la PS3, la PSP et l'iPhone, c'est tout à fait différent, principalement parce que le fabricant a le contrôle sur tout, pas seulement sur le logiciel: ils ne peuvent faire fonctionner le matériel que par un logiciel authentique, et cela nécessite bonnes capacités de piratage pour les casser.

Vous devriez jeter un œil au projet Microsoft Longhorn à l'époque: à l'époque, ils voulaient implémenter des puces pour vérifier si votre logiciel était authentique ou non. Théoriquement, il aurait été très difficile de pirater, mais ils ne l'ont pas fait parce que cela aurait été très intrusif.

2
jokoon