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.
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. –
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
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