How to restrict access from Prop to Mac
T Chap
Posts: 4,223
I have an app on the Mac and a Prop device that connects via USB. I want to prevent someone reverse engineering and adapting their own device to avoid buying it but don't want to get into adding licensing to the app. On launching the app it connects to the Prop via the silabs cp2110. It would be easy to send some pseudo random info like time date, mouse position, pixel color under the mouse etc to the Prop for it to do some math and reply with some response based on a formula. I am looking for ideas on how this might be done. Any thoughts?
Comments
http://www.ftdichip.com/Products/ICs/FT232R.htm
Almost any query-response massage will give some protection.
You could include a version message, which is useful anyway, and then use the firmware version number to scramble the scrambler...
Of course someone can reverse engineer the PC side and skip over this step, so you might want to include in the Prop side a verify-passed flag.
That leaves someone could reverse engineering both ends, and if you wanted still more protection there, use a small 8b MCU (EFM8,N76E003,...) as a key ?
Along these lines you could browse through the Atmel documents for their CryptoAuthentication products. Here's a high-level one:
http://www.atmel.com/Images/Atmel-8794-CryptoAuth-ATSHA204-Product-Uses-Application-Note.pdf
Then start here if that is interesting:
http://www.atmel.com/products/security-ics/cryptoauthentication/default.aspx
You are afraid somebody might copy you device. This is probably always possible, it is just a question of how much effort somebody puts into this.
To make it more complicated for the copycat, I once implemented some kind of protection, that made the device misbehave randomly. You could put this into the program running on the Mac.
Any message showing the detection of the illegal copy will make it easy for the copier to test , but random errors or crashes will make live more complicated for him.
But really irritating for anyone who is a legitimate user but is having problems for whatever reason. If FlexLM did this for EDA software, it could cost companies millions of dollars. Anyways something to keep in mind.
That's one reason people dislike copy protection. It can make life harder for legitimate users.
tamperproof device for proving identity I think.
You don't/can't. You make sure the software on the computer ensures that a legitimate device is plugged in. That can be done with the security dongle features provided by various USB UART chips.
There are vendor id and product id already built in the device from the factory. My existing code looks for the specific vendor and product id on connection, this is the code below that does the checking. I believe it is fairly easy to write the ROM with my own info so I will explore that and then the app will look for my unique information. I believe you are not allowed to just make up vendor ID's per USB spec but I'll have to study this some more, maybe leave the generic ID's alone and modify the manufacturers product string, device serial etc. I am not sure really how possible it is to sniff these on USB connection, else someone could just program a CP2110 with the same info. However, I am not trying to go too crazy on this, just need to make some slight effort.
the device from being recognized by any other manufacturer’s
software application. A vendor ID can be obtained from www.usb.org or Silicon Labs can provide
a free PID for the OEM product that can be used with the Silicon Labs VID. All CP2110 devi
ces are pre-programmed with a uniqueserial number. It is important to have a unique serial if it is possible for multiple CP2110-based devices to be connected to the same PC.
I'm pretty sure that this is trivial to do. They don't seem to tout any security features.