Blockstream / Blockstream/Jade

[Feature Request] Forced delay on PIN entry

Open
#277 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

A forced delay on PIN entry, ranging from minutes to days, could be a useful way to protect against $5 wrench attacks.

This feature would be available as an optional configurable timeout when setting up the PIN.

Unlocking the device would then work something like the following:

1. User enters PIN.
2. The device starts a countdown with the configured timeout and does not proceed until it has reached zero. Powering off the device results in having to restart from step 1.
3. Optionally: Ask the user again for the PIN. If it doesn't match the first PIN, restart from step 1.
4. If the PIN is wrong, the "wrong PIN" counter is increased. If the wrong PIN limit has been reached, the PIN is made invalid and the unlocking procedure is aborted. Otherwise restart from step 1.
5. If the PIN is correct, the device gets successfully unlocked and the "wrong PIN" counter is reset to 0.

On Coldcard this feature is referred to as *login countdown*. However, that implementation is not enforced by the device's secure element. Jade has the potential to provide an even more secure implementation by having the PIN oracle enforce the delay. This would require extending the PIN oracle protocol, but that shouldn't be too complicated I think.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading the PIN oracle protocol and the device unlock flow to determine how a configurable delay could be enforced. Define the protocol and setup changes needed for the timeout, interruption, optional PIN confirmation, and wrong-PIN handling. Done means the delay is enforced by the PIN oracle and the described unlock behavior is covered.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
authentication, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.