I am wondering if anybody has tried to implement a bitcoin hardware wallet on the Arduboy. I think in principle it should be possible.
But not very secure.
Why do you say that? It has no wifi or bluetooth which eliminates one common attack vector. Setting the lock fuses prevents reading the code/data. If all the key encryption standards can be implemented it should be as safe as many commercial HW wallets.
If you set the lock fuses, you’re dedicating it to be a hardware wallet forever. You may as well buy a device designed for the purpose. And, there are almost always ways to get around the locks.
Without hardware specifically designed to store keys securely, and tamper detection/prevention, I certainly wouldn’t trust it to protect anything of significant value.
Some people have attempted to make bitcoin wallets for Arduino devices. One particular group claims that:
It doesn’t work on 8-bit microcontrollers like a classic Arduino as these microcontrollers are not powerful enough to run complicated crypto algorithms.
I have my doubts about that claim, but without knowing more about elliptic curve cryptography and what kind of operations it entails I can give no evidence to the contrary.
Edit: I forgot to link to the group mentioned. They make the claim here.
If I’m reading the datasheet correctly, a chip erase instruction should reset the lock bits.
If the chip erase command is what I think it is then it doesn’t erase the bootloader either, so setting the lockbits shouldn’t be too cumbersome.
Even if it did wipe the bootloader, that’s still not quite a ‘forever’ situation.
There’s very likely to be a means of recovering the contents of flash and EEPROM even with the lock bits set.
Whether it’s by bypassing circuit paths or something crazy like cryogenically freezing the memory*.
(* That’s actually a trick for making RAM less volatile. That particular technique isn’t likely to be useful here, but the point is that security flaws can come in surprising forms.)
It’s possible using a secondary security chip somehow, but at that point it’s probably better to just start with a main mcu that can do it natively.