Protecting sketch binary

Hi guys, I have read a lot about protecting sketch binary/hex files, I have been developing for over a year now, and I really don't want it to end up being cloned in china, or at least make it hard enough to not be worth the trouble.

I know that perfect protection does not exist, and pretty much anything can be cracked down, however my goal is to make it hard to the point that they would better write one from scratch than cloning my files.

I have read about binary encryption, with the bootloader containing a secret key to decrypt it, and I have seen a proof of concept of this technique, but my question is:

If you encrypt the binary file, and have the bootloader hold the decryption key, wouldn't extracting the flash from the cpu extract the bootloader region as well, and therefore install it on another hardware?

Anyone have some creative ideas on how to bind the software to your hardware only? my cpus have unique serial numbers, i was thinking about using that somehow.

jojojijijojo: Hi guys, I have read a lot about protecting sketch binary/hex files, I have been developing for over a year now, and I really don't want it to end up being cloned in china, or at least make it hard enough to not be worth the trouble.

I know that perfect protection does not exist, and pretty much anything can be cracked down, however my goal is to make it hard to the point that they would better write one from scratch than cloning my files.

I have read about binary encryption, with the bootloader containing a secret key to decrypt it, and I have seen a proof of concept of this technique, but my question is:

If you encrypt the binary file, and have the bootloader hold the decryption key, wouldn't extracting the flash from the cpu extract the bootloader region as well, and therefore install it on another hardware?

Anyone have some creative ideas on how to bind the software to your hardware only? my cpus have unique serial numbers, i was thinking about using that somehow.

Just set the lock bits. It's kind of one of those things where, if you're having to ask this question like this, then there's really no way that you wrote anything that would be worth the effort of that much protection. Just set the lock bits so folks can't just read it out and you can almost guarantee that for anyone with the ability to crack it and get your code it would be far far easier for someone with that ability to just rewrite your code.

Uh, program it via ICSP (no bootloader) and set the lockbits? Beyond that, you can probably relax.

It's not perfect, but it takes a dedicated adversary to extract data if the lockbits are set.

I agree with Delta_G. The Arduino (Uno at least) is so small and simple that most skilled programmers could fairly quickly and easily reproduce just about any observed program functionality.

Keep it simple and make your stuff open source. Better yet, publish it in a well written blog article. If it is really good, you can then enjoy the admiration of your fellows when they cite your work.

jremington: I agree with Delta_G. The Arduino (Uno at least) is so small and simple that most skilled programmers could fairly quickly and easily reproduce just about any observed program functionality.

Keep it simple and make your stuff open source. Better yet, publish it in a well written blog article. If it is really good, you can then enjoy the admiration of your fellows when they cite your work.

Agree.

It's too easy to get carried away with how uniquely clever we think we each may be.

Whilst some hardware concepts\projects\ideas might take a while to investigate, evaluate and then code, once it's known the 'idea' can be coded, others are sure to follow.