8
\$\begingroup\$

I develop commercially embedded hardware, using Microchip dsPIC or similar processors.

The firmware I have is sometimes very complex and costly, and needs to be hacker and tamper proof in hardware. All basic software protections are there, but for $500 - $1,000 the hex code can be retrieved via several foreign website services, even if there are security fuses (preventing only not-determined tampering). After that, it is just a few months and the code can be reverse-engineered using disassembler, like IDA Pro.

How can I protect the hardware design a bit better (no need for military protection)?

Can you recommend another non-readable processors, or perhaps an addition to my existing design?

All I need is to hide few functions, I do not need the whole product. Also, it is not enough just to hide data in secure external memory, I need to hide a piece of program.

Update (based on many comments): I have dsPIC and 4 full-time years of development on firmware (would take quite an effort to do it from scratch another way):

1) This product already sells and hackers have access if they want to

2) The NEW FIRMWARE is not released yet. Contains 5kB code which no-one from all competition has yet. I need to prevent anyone easily getting it for about 12 months after the release

3) There is no budget to go very exotic or complicated, maybe additional $10 per product, plus or minus

4) A solution like added SIM card might do the trick?

5) The function to hide does very tricky calculation, non-standard, to decrypt/encrypt 16 bytes. Known processes cannot hack it in 1 year, the function is needed, which is why I want to hide it.

6) I do not mind if it is publicly visible, when the request is sent to 'hidden' hardware, or if the response is publicly visible. Only need to hide the process calculating it, and cannot be inside the dsPIC processor.

\$\endgroup\$
  • 1
    \$\begingroup\$ user1831847: that doesn't really work, see the question and $1,000 ( I have witnessed it myself with my own secure code) \$\endgroup\$ – EmbeddedGuy Feb 12 '17 at 21:04
  • 2
    \$\begingroup\$ Then as you know its not that easy - even on microprocessors that are 'secure'. If you throw enough resources at it just about anything is crackable. At least if you hire a third party you can always sue them if it goes wrong ;) \$\endgroup\$ – JIm Dearden Feb 12 '17 at 21:06
  • 2
    \$\begingroup\$ @Jim Dearden 2nd rule, security by obscurity is no security. Hiring a specialist would be a good idea though. Guy. Security is never absolute it always a factor of time and money can you give us a clue as to what level of protection you are looking for in these terms. \$\endgroup\$ – RoyC Feb 12 '17 at 21:10
  • 2
    \$\begingroup\$ If you don't have something like online authentication I think you're pretty much SOL. As you say, it's cheap enough to break simple protections (they can remove the encapsulation and use various techniques to disable, bypass or rewire around protections if nothing easier works). You can try the security SE. If your product is any good it will get copied, and even if you could secure the firmware, how hard really would it be to rewrite it? A lot of the cost is in determining specs and so on that the copier doesn't need to do. \$\endgroup\$ – Spehro Pefhany Feb 12 '17 at 21:10
  • 1
    \$\begingroup\$ What about the various smartcard systems? \$\endgroup\$ – pjc50 Feb 12 '17 at 21:22
1
\$\begingroup\$

There is companies specializing on that. Atmelwas one of them, also inside secure. They habe special hardware that can suit your needs. But if you want it really work,be prepared to secure the whole chain from their asic warehouse to your production facility with vaults and guards for the security codes. Otherwise you will only make $1k for attempt $10k, while you actually need $1M at least.

\$\endgroup\$
  • \$\begingroup\$ I hear what you mean. $1M is okay if the product sells for $10M/year, which is not my case. But the Secure hardware without vaults and guards might suffice. I only need small type of CPU for this extra calculation security. \$\endgroup\$ – EmbeddedGuy Feb 12 '17 at 21:48
  • \$\begingroup\$ Then fire the guards :) \$\endgroup\$ – Gregory Kornblum Feb 12 '17 at 21:49
  • \$\begingroup\$ Based on your update- call inside secure. \$\endgroup\$ – Gregory Kornblum Feb 12 '17 at 21:51
  • \$\begingroup\$ Gregory: Sorry, i do not understand what do you mean by "inside secure" \$\endgroup\$ – EmbeddedGuy Feb 12 '17 at 21:57
  • 1
    \$\begingroup\$ insidesecure.com \$\endgroup\$ – Christian Feb 12 '17 at 22:04
1
\$\begingroup\$

Researchers at MIT developed a way to scramble the code mathematically, but keep the output the same. The only way the function executes is if you give it the correct key, which could be downloaded from time to time.

This might be useful to you: http://spectrum.ieee.org/computing/software/scrambled-code-keeps-software-safe

\$\endgroup\$
  • \$\begingroup\$ While not yet practical solution, thank you for an interesting educational read. \$\endgroup\$ – EmbeddedGuy Feb 14 '17 at 2:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.