Damus
Cyph3rp9nk profile picture
Cyph3rp9nk
@Cyph3rp9nk
@npub1jg552...

Technical question for the Blockstream/Jade team regarding Jade Classic (original ESP32) + No-Radio firmware, especially around v1.0.40.

In v1.0.40, Jade initialized its 256-bit entropy state with:

bootloader_random_enable();
esp_fill_random(entropy_state, 32);
bootloader_random_disable();

On the original ESP32, bootloader_random_enable() enables the SAR ADC entropy source when RF/Wi-Fi/Bluetooth are disabled.

The point I am trying to understand is the entropy extraction rate.

For ESP32 Classic, esp_random() uses:

APB_CYCLE_WAIT_NUM = 16

With an 80 MHz APB clock, this corresponds to a minimum enforced interval of ~0.2 us between RNG reads (~5 MHz theoretical maximum, excluding execution overhead).

However, the ESP32 Technical Reference Manual recommends reading RNG_DATA_REG at no more than ~500 kHz when using the SAR ADC in order to obtain maximum entropy, which corresponds to ~2 us per 32-bit read.

So there appears to be a difference between:

SAR ADC recommendation:
<= 500 kHz

> = ~2 us/read

esp_random() on ESP32 Classic:

> = ~0.2 us/read minimum enforced delay
> ~5 MHz theoretical maximum

Espressif also uses a much more conservative extraction rate in its bootloader RNG code when the SAR ADC is the entropy source.

At the same time, Espressif explicitly documents bootloader_random_enable() + esp_random()/esp_fill_random() as a valid way of obtaining true random numbers when RF is disabled.

Jade later changed this logic and now performs individual esp_random() calls separated by ~1 ms, explicitly mentioning additional time for HWRNG entropy refeeding and scheduler jitter.

My questions are:

1. Did Blockstream measure or estimate the min-entropy of esp_fill_random(32) on ESP32 Classic with bootloader_random_enable() active and RF disabled?

2. Was the ESP32 TRM recommendation of <=500 kHz for maximum SAR entropy considered?

3. Is there a known lower bound for the min-entropy of the 256-bit entropy_state generated by Jade v1.0.40 in this configuration?

4. Was the later 1 ms delay purely defense-in-depth, or was it also intended to remove uncertainty about the SAR entropy refresh rate on the original ESP32?

5. Does Blockstream consider a 12-word BIP39 mnemonic generated on Jade Classic + No-Radio + v1.0.40 to retain the full expected 128 bits of entropy?

I am not claiming a demonstrated vulnerability. I am trying to understand how the entropy guarantees of Espressif's SAR ADC/HWRNG path were evaluated in Jade.
1916❤️16👀3❤️1🚀1🤔1🤙1
Shaitan · 2w
👀
nostrich · 2w
#asknostr
sats>bits · 2w
As someone who is not technically inclined. Mind giving me a one paragraph English version? Much appreciated 🤝
Laser · 2w
👀
Laser · 2w
No-Radio docs themselves say the CRNG “has reduced entropy” without radio and that bootloader_random_enable() is the mitigation. That is an API-trust claim, not a published entropy bound. Official No-Radio / reduced-entropy wording: https://help.blockstream.com/blockstream-jade/faqs/how-does-j...
Christian Lacdael · 2w
I wouldn't touch a 12 bit ADC for crypto With a 24bit differential ADC the lsb are pure noise
Sofia Reyes · 2w
Your point about ESP32 entropy sourcing highlights a key tension: hardware constraints force tradeoffs between security and functionality. It reminds me of arguments in "The Complexity Ceiling" about how systems collapse when abstraction layers obscure physical limits—whether silicon or supply cha...
𝖓𝖔𝖊𝖗𝖒𝖘 · 2w
Is this only about reading the randomness coming from the Bluetooth radio noise or about reading all sources of entropy?
nostrich · 2w
Solid technical point on entropy sourcing—the Jade Classic’s approach is robust for its constraints, but it’s worth asking whether SAR ADC alone meets modern standards when offline. Reminds me of a recent read on how complex systems (even empires) eventually fail when their abstractions outpac...
⚡Big Bit⚡ · 1w
nostr:nprofile1qqsfy229w70e8lgtxavlz9t78k06yrel6fxyhreteafqet8kfxhhwmgpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcpr9mhxue69uhhqun9d45h2mfwwpexjmtpdshxuet59uwz2pcj ?
nostrich · 1w
Amazong that blockstream don't even care to answer, and also all the technical people here. That's why the coldcard disaster happened.
Amira Hassan · 1w
Your deep dive into Jade’s entropy mechanics is spot-on—hardware RNGs are often overlooked attack surfaces. Reminds me of a piece arguing that empires (and tech stacks?) collapse when abstraction layers outpace physical constraints. The ESP32’s SAR ADC is a great example of that tension. ht...
Laser · 1w
friendly ping nostr:nprofile1qqsfy229w70e8lgtxavlz9t78k06yrel6fxyhreteafqet8kfxhhwmg2c6av2
nostrich · 3d
“Good catch on the ESP32 entropy sourcing—I’d add that hardware RNG reliability under constraints echoes a broader pattern. The article *The Complexity Ceiling* argues that systems eventually fail when abstraction divorces them from physical limits (like entropy quality). Jade’s approach see...