Hello Paul. I hope you are reading this.
I've developed a solution to let's say a niche problem i am having (using your Teensy's as development boards;p) and since i've made all this trouble i am thinking on giving my chance launching a crowdfunding campaign for it.
I have done several projects in the past of much more complicated and expensive products/solutions (i'm a mechanical engineer by trade), but i didn't see enough marketing potential on those since were much more specific.
In fact i have a full working product with 3d printed case, custom pcb, etc and i could easily make 100pcs by hand to sell if i wanted to. But i don't see me going through all this trouble for such a small amount. From my previous experiences i can judge a 500pcs min to 2500pcs max potential for a one month crowdfunding campaign for this product. This will require me to move the design to mass production which opens a few improvement possibilities.
However this is not what worries me. I know if this product launches successfully the Chinese will make a clone out of it. I guarantee it, i've dealt several times before with them with my past developments.
I believe this is what happened with Teensy 2.0 if my memory serves me well.
I know there is no absolute security but there are solutions to make it difficult enough for them to spend the time and funds needed to reverse engineer it. Hardware wise i pretty much cannot do anything about. PCB is easy to reverse engineer and even if you pot the whole thing with epoxy it's just a matter of time to clean it. So the only protection i am left with is software:
Obviously the first line of defense is fuses and lock bits. These can be bypassed with optical fault injection but if they go through this trouble let it have it. Any solutions to mitigate would increase the product cost by a long shot. And i want my product to be cheap, i want as many people to have it because it means less potential market for them.
Secondly i could write some bootloader that encrypts/decrypts the firmware, and/or uses some key or checksum to verify that the user uses a genuine product; no reason to go into much detail here because it's not what worries me most. It's this instead:
- I want the FW to be user updatable; meaning a bootloader will have to be flashed at the assembly line with some sort of test program so the boards can be checked for functionality before moving to final assembly and then shipping to the customer.
- You would say this is a no-no since they will have my bootloader but the problem it doesn't make financial sense for me to having to import the product here, get taxed on it (since i am not a company) and then re-export it with even higher postage costs than what would be if shipped directly out from China.
Thus some kind of solution must be found and even though i thought about some other software solutions are not 100% secure. Which leaves the only other solution that you have implemented; having a pre-flashed microcontroller with a secured bootloader like what you have done with the Teensy 3.x+ with MKL02 chip and custom bootloader. I am assuming that you get them pre-programmed by yourself, or have even ordered them with pre-written ROM and you ship them to your assembly house to be installed on the final boards.
You don't need to go into detail on the inner workings of Teensy, just looking for some advice from someone much more experienced than i am.
ps. My product doesn't have much need for processing power so i have a huge selection of micro's i could use since the popular ones have jumped in price by a LOT during the last year, but i want to stay with either AVR or STM32, or even both, as they are the ones i have experience working with.
Kind regards
I've developed a solution to let's say a niche problem i am having (using your Teensy's as development boards;p) and since i've made all this trouble i am thinking on giving my chance launching a crowdfunding campaign for it.
I have done several projects in the past of much more complicated and expensive products/solutions (i'm a mechanical engineer by trade), but i didn't see enough marketing potential on those since were much more specific.
In fact i have a full working product with 3d printed case, custom pcb, etc and i could easily make 100pcs by hand to sell if i wanted to. But i don't see me going through all this trouble for such a small amount. From my previous experiences i can judge a 500pcs min to 2500pcs max potential for a one month crowdfunding campaign for this product. This will require me to move the design to mass production which opens a few improvement possibilities.
However this is not what worries me. I know if this product launches successfully the Chinese will make a clone out of it. I guarantee it, i've dealt several times before with them with my past developments.
I believe this is what happened with Teensy 2.0 if my memory serves me well.
I know there is no absolute security but there are solutions to make it difficult enough for them to spend the time and funds needed to reverse engineer it. Hardware wise i pretty much cannot do anything about. PCB is easy to reverse engineer and even if you pot the whole thing with epoxy it's just a matter of time to clean it. So the only protection i am left with is software:
Obviously the first line of defense is fuses and lock bits. These can be bypassed with optical fault injection but if they go through this trouble let it have it. Any solutions to mitigate would increase the product cost by a long shot. And i want my product to be cheap, i want as many people to have it because it means less potential market for them.
Secondly i could write some bootloader that encrypts/decrypts the firmware, and/or uses some key or checksum to verify that the user uses a genuine product; no reason to go into much detail here because it's not what worries me most. It's this instead:
- I want the FW to be user updatable; meaning a bootloader will have to be flashed at the assembly line with some sort of test program so the boards can be checked for functionality before moving to final assembly and then shipping to the customer.
- You would say this is a no-no since they will have my bootloader but the problem it doesn't make financial sense for me to having to import the product here, get taxed on it (since i am not a company) and then re-export it with even higher postage costs than what would be if shipped directly out from China.
Thus some kind of solution must be found and even though i thought about some other software solutions are not 100% secure. Which leaves the only other solution that you have implemented; having a pre-flashed microcontroller with a secured bootloader like what you have done with the Teensy 3.x+ with MKL02 chip and custom bootloader. I am assuming that you get them pre-programmed by yourself, or have even ordered them with pre-written ROM and you ship them to your assembly house to be installed on the final boards.
You don't need to go into detail on the inner workings of Teensy, just looking for some advice from someone much more experienced than i am.
ps. My product doesn't have much need for processing power so i have a huge selection of micro's i could use since the popular ones have jumped in price by a LOT during the last year, but i want to stay with either AVR or STM32, or even both, as they are the ones i have experience working with.
Kind regards