I have a proprietary firmware which I plan to publish publicly. This firmware is to be run on a common Arduino boards. I would like to maximize security to protect my firmware from being reverse engineered. I do not care if the user replace my firmware with another one, so I am not interested in locking my boot-loader. I am merely interested in a way to publish an encrypted firmware that'll be decoded by the hardware.
Is such mechanism exist in Arduino?
Firmware is reverse engineered by documenting every action/reaction by the Arduino, NOT by looking at the code in memory. Sorry!
Very similar topic here
Is such mechanism exist in Arduino?
No. As I mentioned in your other post on this same topic, this is an open source, open hardware forum.
Few of us, if any, care about hiding Arduino code from prying eyes.
And, again, your licensing agreement is the ONLY way you really have of protecting your product.
I have the following scenario that I need to implement: A customer buys an Arduino device. I want to send him an image file that is specifically built for that device only. The firmware is hard-coded with the device's unique identification details, and refuses to run unless they are detected in runtime (or maybe flash time?)
Is there such mechanism in Arduino? If so, how can I read the unique ID of the device?
Some Arduinos (p.e. Leonardo) have such a unique ID, others don't. But you can add such a functionality yourself by writing the ID to the EEPROM of the Arduino and reading it from there.
How do you expect the customer to install the image?
At the cost of a single I/O pin, you could put a cheap one-wire temperature sensor ds18 with its own unique ID on your product.
sir if he connect that with other board then code run on this how this be unique?
The "other board" would become the unique board.
Perhaps you need to rephrase you question about "unique".
I have no control of the customer's HW. He gets my image by any digital mean (file download, email, etc.). I only want to guarantee that he will not flash that image to multiple devices.
What does your licensing agreement say about this, relating to having an emergency backup in case one Arduino dies?
Your desire to maximize profits is understandable, but the goal is extremely difficult to attain, and may not be cost effective to pursue.
This is an open source, open hardware forum, so we never have to worry about things like this.
You can get 1Wire devices that just have the unique ID with no other functions.
Like the DS2401 chip which is a dedicated Serial number chip. But I guess that someone could develop a programmable emulator which could present any chosen serial number to defeat such a security mechanism.
The effort just depends how valuable this application is.
There is a proverb that says:-
"A lock only stops an honest man"
I know, it's just that the temperature sensors are commonly available, and provide another useful function.
Thank you all for your replies. Indeed an external chip with a unique serial number would be a rather good solution for me.
Your two topics on the same or similar subject have been merged.
Please do not duplicate your questions as doing so wastes the time and effort of the volunteers trying to help you as they are then answering the same thing in different places.
Repeated duplicate posting could result in a temporary or permanent ban from the forum.
Could you take a few moments to Learn How To Use The Forum
It will help you get the best out of the forum in the future.
Thank you.