semisol's avatar
semisol
semisol@nostr.land
npub12262...grkj
👨‍💻 software developer 📨 nostr.land relay all opinions are my own.
semisol's avatar
semisol 3 weeks ago
What do people actually think the benefits of a Bitcoin-only edition of an HWW are?!
semisol's avatar
semisol 3 weeks ago
I have pushed an update to Damus Translate which should increase the quality of nuanced translations and reduce some false positives
semisol's avatar
semisol 3 weeks ago
Maybe it would be beneficial to have a series of blog posts demystifying hardware wallets and Bitcoin security.
semisol's avatar
semisol 3 weeks ago
Good morning. If you are using a Coldcard-generated seed, please move your funds immediately. Here is an explanation of what went down without the influencer slop: View quoted note →
semisol's avatar
semisol 3 weeks ago
And, after this incident, what will change? All of this will still happen: ✅ Usage of insecure chips ✅ Basically no code review except once-in-a-while audits ✅ Firmware development done by people with no cryptography experience and the list goes on The founders of these companies are so disconnected from the risks of their products
semisol's avatar
semisol 3 weeks ago
It is unfortunate to see that so much great Nostr stuff has been consumed by the AI slop virus
semisol's avatar
semisol 3 weeks ago
It seems that the details were already posted all over the place over Twitter and Telegram, so here is an explanation of it: In Coldcard, there are two implementations of getting bytes from the HWRNG, in cckt and libngu. The path in libngu is used for generating seeds. This one calls the MicroPython API to get random values. The MicroPython API uses the HWRNG if enabled. The problem was that Coinkite disabled the HWRNG for MicroPython. This should not have been an issue, as libngu had a check to see if the HW RNG is enabled. However, this used ifndef, which explicitly checked *if the HW RNG enable was not configured*. It did not check if the HW RNG enable was turned off explicitly, which is what Coinkite did. This led to their code using the flawed software MicroPython RNG, which was solely based on the device boot time and a very weak manufacturing identifier. This means that there are not a lot of different seeds. In Mk4/Mk5, this issue still exists. The only difference is that 32 actually random bits (which is tiny) have been mixed into the RNG. By overly complicating their codebase, in what can only be described as “attempted security through complexity”, they have put all user funds at risk. Regarding the implications: - If you generated using dice or wordlist or another method that included non-Coldcard entropy, you are fine. - If you generated on a non-Coldcard device, you are fine. - If not, your funds are at risk. A passphrase will help slow it down but the main seed is still compromised. Multisigs: You are affected *privacy wise* if one of your members is a Coldcard-generated seed. You are only at risk if the majority of your members are CC. Secure element RNGs: These are fine. You need a proper one though from Infineon/NXP/ST, and not the crappy IoT ones. Also beware the HWW firmware can still butcher the resulting numbers.
semisol's avatar
semisol 3 weeks ago
The Coldcard RNG failure was not due to a weakness in HW/SE RNGs. The CC firmware’s multiple layers of complexity meant that the secure RNG was swapped for an insecure one. (They also never used SE RNG in Mk3) I estimate that there is only <64 bits of entropy in these seeds ⚠️ I have strong reasons to believe Mk4/5 is also at risk, with those devices only having somewhat more entropy. CHANGE YOUR SEEDS!!