How can I bind my application to specific hardware?

I have a C # .NET application. This application is closely related to hardware. Think of an ATM, pick up a kiosk. I want my application to guarantee that it runs on our hardware. Our initial plan was to get the serial number of a processor, OS, HD or other equipment with WMI, sign a digital signature and transfer this signature using software. Then the application will have a public key to verify the signature. Is there a better way to do this?

Update 1

We do not need a key or a hat. Nothing is external to the system.

+3
source share
2 answers

Yes, you will have a semi-secure system. This may interfere with operation on other equipment. It will also prevent some form of maintenance for this equipment.

It, as usual, will not prevent someone from decompiling and changing your software.

+2
source

We do something similar for software licensing by signing an XML file, although ours are not tied to any hardware. The same concept applies. It works well.

You will also need to protect your .NET code with some kind of obfuscation tool, we use {smartassembly} , but there are several others there.

Keep in mind that no matter what you do, given enough time and resources, someone can get around it.

, , , , .

+1

Source: https://habr.com/ru/post/1720225/


All Articles