cryptoadvance / cryptoadvance/specter-diy

Add fully stateless mode

Open
#235 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
Python
Stars
585
Forks
108
Avg merge
6d 1h
Merged PRs (30d)
5

Description

Currently even in stateless mode DIY stores some stuff in flash:
- currently selected network
- encrypted multisig wallets files
- number of PIN code attempts

It would be interesting to have a fully stateless mode where writing to flash is not possible at all.

# Idea

No need in PIN in this mode, instantly get to init screen with 4 options:
- generate key
- enter key
- import key (QR / SD)
- integrity check

If you go to integrity check you will get a keyboard where you type something unique, for example "blah blah blah".
As the result you get a pixel image like this:
![image](https://user-images.githubusercontent.com/1706012/202810258-ebe0fcc2-5000-4068-9fa0-c65d7258dc9f.png)

Next time you enter the same string you should get the same picture. So you just remember that "blah blah blah" gives you a pink bull.

And anything else will give you a completely different picture.

The picture is generated based on the string you entered and internal secret. So if internal secret changes you will get a completely different picture.
And if attacker loads malicious firmware he can not guess what you will enter, so he can not guess what picture to show.

Bootloader can lock flash for the main firmware, so it becomes read-only.

Contributor guide

No contributing guide indexed for this repository

Research direction

No files, tests, or entry points are named. Start by tracing the existing stateless-mode storage, PIN, bootloader, and integrity-check flows; define the flash-write prohibition and user-visible completion criteria before implementation.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cryptography, embedded-iot, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.