Blockstream / Blockstream/Jade

feature request: require entropy from companion app to initialize the device

Open
#322 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
496
Forks
127
PR merge metrics
No merged PRs in 30d

Description

[This](https://help.blockstream.com/blockstream-jade/faqs/how-does-jade-generate-my-recovery-phrase) post outlines how the Jade generates its entropy:
```
User input
- CPU counters
- Battery state
- Ambient temperature
- Multiple images taken with camera during boot
- Built-in cryptographic-strength hardware number generator
- Entropy from the Blockstream companion app

The built-in hardware cryptographic random number generator (CRNG) derives entropy from various sources, one of which is the included radio (used for Bluetooth). If you [disable radio](https://help.blockstream.com/blockstream-jade/add-more-security-functionality/disable-bluetooth) with the optional “No-Radio” firmware, the CRNG loses that source and, therefore, has reduced entropy. To mitigate this, we use an ESP32 API call named “bootloader_random_enable()” to sample raw radio noise only during boot, which is then added to the entropy pool along with the sources mentioned above.
```

However, `Entropy from the Blockstream companion app` is optional. It would be nice to require that [add_entropy](https://blockstreamjade.readthedocs.io/en/latest/#add-entropy-request) be called at least once with at least 32 bytes before the entropy state is considered valid:
```
{
"id": "925",
"method": "add_entropy"
"params": {
"entropy":
}
}
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing the device initialization and entropy-state handling around the add_entropy request documented in the issue. Determine where the companion-app entropy is accepted and where entropy becomes valid; done means initialization cannot consider the state valid until add_entropy has supplied at least 32 bytes, with coverage for the requirement.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
embedded-iot, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.