J'ai besoin d'idées comment créer un algorithme d'activation. Par exemple, j'ai un certificat de démonstration. À condition que l'application fonctionne en mode démo. Lorsque la version complète est fournie, l'application s'exécute en mode complet. Est-ce même possible et comment serait un bon moyen de créer ce système? P>
Un simple était que je pensais que je voudrais seulement avoir une 2 cordes cryptées, maintenant lorsque le déchiffrement est affectueux avec le certificat de clé publique de démonstration, l'application s'exécutera en mode démo et etc. P>
Edit: Utilisation C # et Windows 7 P>
7 Réponses :
Un simple était que je pensais serait juste avoir un 2 crypté Cordes, maintenant, lorsque le déchiffrement est affectueux avec la démo publique Certificat de clé alors l'application s'exécutera en mode démo et etc .. p> blockQuote>
pourrait être une solution simple. Mais de cette façon, vous n'empêcherez pas quelqu'un d'inverser l'ingénieur de vos fichiers binaires et de faire passer à la bonne ligne d'exécution. Tout le monde a votre programme, possède une version complète de celui-ci, ce n'est donc qu'une question de trouver comment briser ce mécanisme simple. P>
Peut-être qu'une meilleure solution est cryptée une partie des fichiers binaires nécessaires à l'utilisation de la version de l'application complète, au lieu d'une simple chaîne. De cette façon d'exécuter la version complète de l'application, une personne doit déchiffrer ces fichiers binaires afin de les exécuter. P>
Veuillez prendre en considération que même cette solution ne suffit pas. Il y a d'autres problèmes avec ceux: P>
- Est-ce que toute la version de votre outil partagera la même clé de cryptage? Briser l'un d'entre eux pour briser tous .. li>
- Même si vous utilisez une clé différente pour chaque application binaire publiée, le binaire crypté est-il identique? Une fois fissuré un, vous pouvez réutiliser les fichiers binaires non cryptés pour toutes les applications distribuées. LI> ol>
Comment résoudre ces problèmes? Il n'y a pas de solution simple. La plupart des logiciels commerciaux les plus importants avec des systèmes de protection même sophistiqués sont cassés quelques heures ou quelques jours après leur libération. P>
Oui, vous avez raison et je sais à ce sujet. La question concerne l'algorithme d'activation / le système ne consistant pas à empêcher son ingénierie inverse.
Vous pouvez faire quelque chose comme: p>
Comme surbose mentionnée - vous ne pouvez pas empêcher l'ingénierie inverse. En général, une personne pourrait prendre la fonctionnalité et la mettre dans sa propre application et éliminer ainsi tout algorithme d'activation possible. Donc, vous ne pouvez supposer que (ou faire) cela est suffisamment difficile pour ne pas valoir l'effort (c'est la même chose que pour la cryptographie - lorsque vous effectuez le coût de la rupture du message, alors le profit de l'obtenir, vous pouvez dire que c'est bien sécurisé). p>
afin que vous puissiez: p>
Comme mentionné - rien de tout cela n'est sécurisé de couper la partie d'authentification. Mais rien n'est et cela pourrait rendre plus difficile pour les craquelins. P>
Ce gars a écrit Un publication d'un blog sur une idée similaire, expliquant ce qu'il a fait avec leur propre logiciel commercial. A également écrit une liste de recommandations sur les techniques de craquage les plus évidentes. J'espère que ça vous aide. P>
Il n'a pas mentionné l'attaque où vous vous remplissez simplement la clé publique. Peut-être qu'il ne l'avait pas mentionné parce que son trivial de réaliser et qu'il brise complètement cette approche.
Je n'ai pas pensé à ça. Merci.
Activation du produit n'est pas un problème que la cryptographie asymétrique peut résoudre. La cryptographie asymétrique consiste à garder les secrets de votre adversaire. Le problème est que vous ne pouvez pas garder un secret qui est stocké sur votre machine adversaires, ce serait Sécurité bien que l'obscurité . p>
La bonne façon de faire l'activation du produit . Est de générer un NONCE CRYPTOGRAPHIQUE qui est stockée dans une base de données sur votre serveur. Vous donnez à cette nonce au client lorsqu'ils achètent le produit, puis ils l'activent en ligne. Ce processus d'activation pourrait télécharger de nouveaux matériaux, ce qui rendrait plus difficile l'attaquant de modifier la copie qu'ils ont pour "déverrouiller" de nouvelles fonctionnalités. P>
mais même avec des systèmes DRM qui nécessite que vous soyez en ligne tout en utilisant le produit. Comme ceux que ceux trouvés dans de nouveaux jeux comme "de la poussière" sont toujours cassé a > Quelques heures de leur libération. P>
Vous avez raison si quelqu'un va modifier vos fichiers binaires (bien que le contenu téléchargé puisse être facilement capturé, alors que la licence peut être achetée, beaucoup plus pourraient être volées). Si quelqu'un ne va pas modifier vos fichiers binaires en utilisant la cryptographie asymétrique pour signer et vérifier que les licences de produit sont assez éprouvées (aussi longtemps que votre clé privée, qui n'est pas distribuée, reste secrète)
@userx s'ils ne vont pas craquer votre logiciel, personne ne se soucie de cela et il n'y vaut rien. Mais que diriez-vous, essayez et pirate logiciel en tant que service (SaaS). Fissuration Wow n'est pas si facile, même si même des serveurs piratés ont été créés.
Désolé, mais je ne parviens toujours pas à voir ton point. Le cryptage asymétrique a une place dans les activations de produits et la licence. Protège-t-il contre toutes les méthodes de piratage, no. Cela vous permet-il de vérifier qu'une licence provient d'une source donnée, oui. Toute l'activation du produit est la sécurité par l'obscurité. Je suis en désaccord avec la déclaration de couverture que si "personne ne craque votre logiciel, personne ne se soucie". La fissuration est très spécifique à l'industrie. Gaming, oui c'est un problème. Enterprise Web Load Balance, pas tellement.
@userx laissez-moi être clair que cela n'est en aucune forme ou forme un système sécurisé.
Vous prétendez que le secret est "stocké sur votre machine adversaires", mais la clé privée (ce que vous utilisez pour signer la licence) reste interne. La clé publique (ce que vous utilisez pour vérifier la licence) est ce qui est exposé. Bien sûr, si vous craignez le logiciel et remplacé le Cert public en interne avec un autre, vous avez raison. Mais ce n'est pas différent de si quelqu'un craignait votre binaire et simplement contourné votre mécanisme de licence. La question ne concerne pas la protection des SaaS ou des jetons DRM; Il s'agit d'activation du produit. Comment activer un produit avec une clé signée ne pas faire cela raisonnablement?
@userx Le problème est qu'un modèle économique s'appuie sur quelque chose qui est totalement et totalement impossible à résoudre. Si vous pensez avoir une solution, vous êtes un imbécile b>.
Je ne pense pas que je proposais une solution absolue ... En fait, tout le contraire de cela, simplement en désaccord avec votre message parce que la cryptographie asymétrique peut avoir une place dans la prévention du piratage ... juste parce que c'est un problème difficile à résoudre le problème t le rendre futile. C'est un équilibre délicat entre tentative de niveau de protection IP et commodité de l'utilisateur. Le cryptage asymétrique peut parcourir cette ligne bien, si elle est mise en œuvre correctement.
@userx Il prendra 3-5 minutes pour casser votre solution.
Sans modifier les fichiers binaires, je ne vois pas comment. Si vous pouviez déterminer la clé privée d'un certificat RSA 1024 bits dans 3 à 5 minutes, SSL ne serait pas en sécurité non plus. Soin de donner un exemple? Oui, je me rends compte que vous pouvez simplement échanger la clé publique utilisée en interne. Je ne sais pas comment cela est bien différent de simplement modifier un binaire pour sauter la vérification de la licence tout ensemble (qui rend toute méthode anti-piratage inutile). Je suppose que vous pourriez remplacer la mise en œuvre de la RSA sur votre machine locale pour toujours utiliser une clé publique différente (au risque de briser tout le reste qui utilise RSA sur cette machine).
@userx ok donc je vais ouvrir cette bouteille de bière sans l'ouvre-bouteille dans ma main. Ce n'est pas un modèle de menace réaliste. À votre santé.
Je ne parviens tout simplement pas à voir comment la présumant que quelqu'un ne trouve pas (et de remplacer) votre proposition basée sur la nonce est mieux que de penser que quelqu'un ne trouvera pas (et remplacera) votre clé publique. Les deux sont des menaces et vous semblent être à une échelle similaire (ingénierie inverse et correctif binaire), mais en fonctionnement normal, on implique une configuration de serveur et une connexion Internet, l'autre nécessite une implémentation de RSA. S'il y a quelque chose ici, je manque, j'aimerais apprendre davantage sur le sujet.
Vous pouvez utiliser asprotect pour résoudre ce problème. C'est un bon point de regard. p>
Contexte: J'ai déployé un système basé sur l'activation construit sur un système de licence tiers, c'est-à-dire serveur, base de données, intégrations de commerce électronique. J'ai également écrit séparément un système d'activation C # à l'aide de clés RSA, mais ne l'a jamais déployé. P>
Produit Activation em> signifie généralement que le logiciel doit être activé sur une machine donnée. Je suppose que c'est ce que tu veux dire. Si tout ce que vous voulez faire, c'est avoir deux chaînes qui signifient "démo" et "acheté", puis ils seront déchiffrés et distribués en quelques heures (en supposant que votre produit soit précieux). Il n'y a tout simplement aucun point. P>
Alors. En supposant que vous voulez "activation", lorsque l'utilisateur achète votre logiciel, le processus suivant doit se produire: P>
Lors de la génération des touches d'achat, le serveur peut stocker non seulement quels produits ont été achetés, mais quel niveau de produit. Vous pouvez également avoir des produits «GRATUIT» de temps limité, l'utilisateur peut donc essayer la version complète du logiciel pendant 30 jours. P>
Vous utilisez c #, assurez-vous d'empêcher d'obscurier les fichiers binaires, à l'aide de Dotfuscator ou d'équivalent. Cependant, même avec cela, vous ne pouvez rien faire contre un pirate informatique déterminé. Votre objectif, je suppose, est de forcer les utilisateurs non payants à être des pirates informatiques eux-mêmes ou de risquer d'utiliser une version fissurée: les enfants ne se soucient pas, les sociétés pourraient. Ymmv. P>
Le code qui fait la vérification doit être dans chaque assemblage qui nécessite une protection, sinon un attaquant peut supprimer de manière triviale la protection en remplaçant l'assemblage qui fait la vérification. Coupez et collez le code si vous devez. P>
ou juste acheter quelque chose. P>
Une autre option consiste à avoir le serveur pré-générer des "touches d'achat" et donnez-leur au service d'exécution de la commande, mais vous n'obtenez donc pas à lier la clé aux détails des clients (au moins pas avant leur inscription). Mieux vaut que le serveur de commerce électronique a frappé votre serveur lorsqu'un achat a été effectué et que votre serveur l'envoie-vous. P>
La partie difficile n'est pas tellement la génération de touches d'activation, car il s'agit de la création du serveur, de la base de données et de l'intégration avec le logiciel de commerce électronique, et surtout des problèmes humains: permettez-vous des installations illimitées par Touche d'achat? Seulement 1? Si seulement 1, vous devez avoir un support client et un moyen d'autoriser un utilisateur à l'installer sur une nouvelle machine. C'est juste un problème. Toutes sortes de plaisir. p>
Ceci est une bonne réponse, mais la création d'une activation basée sur le serveur n'est tout simplement pas l'option pour moi. Je devrais mentionner que dans mon message original ...
Eh bien, dans ce cas, attendez-vous à une clé pour vous faire fuir. Si tel est un problème, vous pouvez surveiller les sites Warez et inclure une liste de clés bloquées dans chaque nouvelle version du logiciel. L'utilisation d'un cryptage Pubkey est bonne car cela signifie que les attaquants ne peuvent pas créer de logiciels Keygen (à moins qu'ils pirater votre ordinateur et obtenir la clé, auquel cas tous les paris sont éteints). Sur cette note, si vous voulez aller fou, vous pouvez utiliser un certificat vérifié qui permet la révocation.
Juste pour obtenir d'autres idées, je mentionne ici que cette application ne serait pas utilisée pour un usage public, elle est utilisée dans un groupe très étroit de sociétés, quiconque n'aura plus rien à voir avec cela.
Avez-vous vérifié qu'ils iront avec une solution personnalisée? Nous avons eu quelques clients (Fortune 50) qui nécessiteraient des licences floating Flexlm. Si vous n'avez pas eu cela, leurs gars, ils ne l'appuieraient pas, alors les ministères ne pouvaient pas l'acheter.
Oui, je suis sûr qu'ils accepteront toute solution que nous allons mettre en œuvre. Et plus à mentionner, dans l'environnement, l'application est utilisée, il n'y a pas de connexion Internet, il n'est donc pas possible que l'activation à l'aide de serveur n'est pas possible.
L'un des avantages du cryptage de clé publique est que vous pouvez Vérifiez l'origine d'une pièce donnée. Donc, si vous stockez la clé publique de votre assembly, signez une pièce donnée (disons un code d'autorisation ou un numéro de série) Votre assemblage peut déterminer de manière vérifiablement que vous étiez celui qui créait ces données - et non un pirate informatique. Les données réelles elles-mêmes ne sont pas toutes importantes - cela peut être une simple valeur de passe / échec. P>
Ceci est en fait assez facile à voir avec .NET. Vous pouvez utiliser un certificat X509 ou comme nous l'utilisons dans Licence de DeployLX le RsacryptoServiceProvider . P>
Je recommande vivement d'acheter un produit commercial (ce qui importe vraiment lequel, bien que Deploylx est excellent) et ne pas le faire vous-même pour 2 raisons p>
La deuxième phase dans la protection du logiciel consiste à s'assurer qu'elle exécute la façon dont vous l'avez créée - et n'a pas été modifiée par un pirate informatique. Peu importe le cryptage que vous utilisez si les pirates peuvent vérifier si (sous licence) code> à
si (vrai) code>. p>
Me rappelle une de mes réponses à une question précédente: Stackoverflow.com/Questtions/3002067/...
Alors, quel est le cas d'utilisation? Quel type de logiciel protège-t-il, quel genre de volume, quel prix?
@jamie, voir le commentaire sous votre réponse.