News

Coldcard rebuilds how a seed gets its randomness

After July's entropy failure, Coinkite's unreleased changelog rewires seed generation to combine three hardware sources, adds checks that the random path reaches the hardware, and makes user-supplied entropy mandatory. None of it repairs a seed already made.

3 min readHardware Wallets
Coldcard rebuilds how a seed gets its randomness

What happened

Through 17 to 19 August 2026, Coinkite pushed a batch of changes to the Coldcard firmware repository that rewrite how the device produces the randomness behind a new seed. They are listed in the repository's unreleased changelog under versions 5.6.1 (Mk4, Mk5) and 1.5.1Q (Q), both dated 20 August 2026. They follow the urgent hotfix of 31 July, which told owners that seeds generated on earlier firmware carried "critically low" entropy - about 40 bits on Mk3, and as low as about 72 bits on Mk4, Mk5 and Q, against a stated target of 128. Mk3 owners were told to move funds to new seeds.

What it changes

A hardware wallet generating a seed is doing one job that matters: producing a number nobody can guess. The new changelog treats that job as something to be proved rather than assumed.

Master seed generation now mixes fresh entropy from three sources, the STM32 hardware generator and both secure elements - instead of relying on those elements only through boot-time seeding, which itself now uses the full 256-bit digest rather than a 32-bit truncation. The software generator inside Coinkite's crypto library was swapped from the Yasmarang algorithm to a SHA-256 Hash_DRBG from NIST SP 800-90A, and backup passwords, encryption salt and 2FA secrets were moved onto it.

Two additions speak directly to how July's defect survived five years. A boot-time self-test "proves rng_get() enters the hardware read path" and stops the boot if it does not, and a build-time check verifies that the library's random-byte path reaches the hardware implementation at all. A random number generator that has silently failed produces output that looks exactly like one that is working, which is why the fix is a test rather than a correction. Newly generated seeds also now require user-supplied entropy - physical dice, coin flips, or timed key mashing - added to the hardware sources rather than replacing them.

What it does not change

New firmware does not repair an old seed. Entropy is fixed at the moment the words are generated, so a weak seed stays weak on any version. Affected owners still face a migration: generate a fresh seed on fixed firmware, back it up, test the restore, move the coins on chain, and update whatever inheritance record points at the old backup. That is the whole of self-custody done twice, under time pressure, and it has its own well-documented ways to go wrong.

The checks also prove a path, not a quality. Confirming that code reaches a hardware register says nothing about whether the numbers coming out of that register are good. And a user grinding out dice rolls is trusting the firmware to mix them in as described, the hedge is only worth what the mixing code is worth, which an owner cannot verify from the device's own screen.

Context

The 31 July hotfix stopped the bleeding: it fixed generation going forward and told people to move. What is queued now is the structural version of the same answer, and it arrives alongside a long list of unrelated hardening in the same changelog, much of it credited to outside researchers - including a case where a compromised USB host could rewrite a staged transaction after the owner reviewed it but before the device signed.

Newsletter

Bitcoin, without the noise

What happened in Bitcoin, what it actually changes, and the sources so you can check us. One issue at a time, straight to your inbox.

  • One email per issue, never a drip campaign
  • No tracking pixels and no shared addresses
  • Unsubscribe from any issue in one click

Get the next issue

One email per issue, no tracking pixels, and unsubscribe from any of them. We do not share your address. Privacy policy