Trust it
Threat model
What the device defends against, what it only mitigates, and what it cannot do, the air gap included.
This document states what nullroute defends against, what it partially defends against, and what it does not defend against at all. The third list is the important one. A security document that only describes its successes is marketing.
Read the Out of scope section before you put money on this device.
In this chapter
- 01What nullroute isA signing-only Bitcoin device. It holds keys, displays transactions, and produces signatures. It has no network stack reachable from outside loopback, and it moves data across an...
- 02AssetsRanked by what their loss costs you.
- 03In scope: threats the design must defend againstEach row has a corresponding invariant in the codebase and a test that fails loudly if the defence regresses. Invariant identifiers are listed in the Invariants section and...
- 04Partially in scope: mitigated, but do not rely on itNot built yet. Indistinguishable profiles and a wipe PIN are planned for phase 7 and no part of either exists in the code today. What the device has right now is a passphrase and...
- 05Out of scopenullroute does not defend against any of the following. If your threat model includes one of them, this is the wrong device.
- 06What the air gap does and does not doNothing carrying a private key crosses in either direction. The seed is written down by you, on paper, once. A backup file can hold an encrypted copy if you ask for one, and it...
- 07The trust boundary between the signer and the wallet layernullroute is designed around two assurance tiers. One of them exists.
- 08Assumptions we are makingStated so they can be challenged.
- 09InvariantsThe full list lives in the spec files and is checked by make verify. The security-critical ones are below.
- 10Reporting a vulnerabilitySee SECURITY.md. Please do not open a public issue for anything that affects key material or signing.
Rendered from docs/THREAT-MODEL.md, the same bytes that ship with the code. SHA-256 d932f13db7fe836f45194ab98069c47dc556d4f29b2cfbf0ef1ab3bf7b334ffd