2009-10-15 10 views
3

J'ai une application C# .NET. Cette application est étroitement couplée à un morceau de matériel. Pensez ATM, conduire quelque chose de kiosque. Je veux un moyen pour mon application de m'assurer qu'elle fonctionne sur notre matériel. Notre plan initial était d'obtenir le numéro de série du CPU, OS, HD, ou autre matériel avec WMI, signer numériquement cela, et envoyer cette signature avec le logiciel. L'application aurait alors la clé publique pour vérifier la signature. Y a-t-il une meilleure manière de faire cela?Comment puis-je lier mon application à un matériel spécifique?

Update 1

nous ne voulons pas une clé ou un HASP. Rien d'extérieur au système.

+0

Vous vous rendez compte que vous allez probablement mettre plus d'argent et de l'effort pour l'empêcher de tout autre matériel que cela vaut la peine. Toute personne qui veut vraiment exécuter le logiciel sans votre clé de signature peut simplement supprimer vos protections. De plus, vous limitez maintenant vos clients s'ils ont besoin de réparer rapidement le système. –

+0

Tout dépend de la situation. Nous avons des applications qui sont livrées avec un matériel très spécifique, pas un ordinateur, mais un matériel embarqué prenant en charge .NET. Le matériel et les logiciels sont livrés sous la forme d'un contrat et c'est ce qu'ils achètent chez nous. Le client ne veut pas effectuer de maintenance, c'est pourquoi ils ont des contrats et des SLA avec nous ... Il y a certainement de bonnes raisons de le faire, mais pas pour la plupart des applications c'est vrai ... Cela dit, sauf si vous contrôlez tous les aspect, du développement de la puce au logiciel, vous ne pouvez jamais entièrement protéger tout. (Qui est la raison pour laquelle Apple contrôle les puces aussi) – TimothyP

+0

http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm a des outils qui vous aideront à créer le verrouillage du matériel, mais ne l'utilisez pas comme seule méthode. Plus un outil d'obfuscation/verrouillage est populaire, plus les gens font des efforts pour le piratage. Et assurez-vous que vous avez des accords juridiques solides avec le client, c'est la chose la plus importante! – TimothyP

Répondre

2

Oui, vous auriez un système semi-sûr. Il peut empêcher l'exécution sur un matériel différent. Cela empêchera également certaines formes de maintenance de ce matériel.

Comme d'habitude, cela n'empêchera personne de décompiler et de modifier votre logiciel.

1

Nous faisons quelque chose de similaire pour l'octroi de licences logicielles en signant un fichier XML, bien que le nôtre ne soit lié à aucun matériel. Le même concept s'applique. Ça marche bien.

Vous devrez également protéger votre code .NET en utilisant une sorte d'outil d'obscurcissement, nous utilisons {smartassembly} mais il y a plusieurs autres là-bas. Gardez à l'esprit que, quoi que vous fassiez, avec suffisamment de temps et de ressources, quelqu'un peut l'ignorer. Cela ne veut pas dire que vous ne devriez pas protéger votre propriété intellectuelle, mais il y a un moment où vous obtenez des rendements décroissants et vous causez plus de problèmes à vous et à vos clients.

+0

Aucun outil d'obfuscation n'est parfait. Le code natif peut même être inversé ces jours-ci. Pour chaque outil d'obfuscation/protection, il existe un moyen de le contourner. – IDWMaster

Questions connexes