Documentation · Security
Quantum-Readiness Coverage Matrix
network/docs/quantum-readiness/coverage-matrix.md · commit e561109 · 2026-10-23
Exact Claim
Breaking ECDSA/secp256k1 alone cannot move default Minerva Account funds or control protocol/admin accounts.
This claim is true for default Minerva Account funds on the current devnet because account execution and key rotation require ML-DSA-65 authorization. The protocol/admin part is a release gate: privileged production controls must be Minerva Accounts or stricter PQ-controlled policies before the claim applies to those controls. The current inventory is tracked in docs/security/admin-control-inventory.md.
Minerva-native devnet now removes EOA deployer, faucet, relayer, and miner keys from the live flow. The rule is No EOA anywhere: Minerva wallet addresses are the only sender/control addresses in the native path. On Minerva networks legacy Ethereum transaction types are rejected by consensus from the minervaNativeOnly activation (block validation, state transition and txpool), not by a node setting; MINERVA_EOA_TXS=0 survives only as a deprecated local policy for pre-Minerva profiles.
Current Coverage
| Surface | ECDSA Break Impact | PQ Control | Current Proof | Claim Status |
|---|---|---|---|---|
| Default Minerva Account funds | ECDSA alone cannot authorize a transfer | executePQ requires ML-DSA-65 via precompile 0x0000000000000000000000000000000000004D00 (Minerva; 0x...0100 on the pre-Minerva devnet), activated by fork block |
pnpm contracts:test, pnpm devnet:pq-smoke, pnpm devnet:wallet-pq-smoke |
Covered on devnet |
| PQ account execution | EOA or relayer key compromise cannot create a valid account operation | Signed message binds domain, chain ID, account, nonce, target, value, and data hash | Foundry tests plus devnet transfer receipts | Covered on devnet |
| PQ key rotation | ECDSA alone cannot replace the account key | rotatePQKey requires the current ML-DSA-65 key |
pnpm devnet:wallet-pq-rotate-smoke |
Covered on devnet |
| Native-path policy enforcement | A rotated-out ML-DSA key (or any key that is not the account's) cannot sign native transactions | The node checks the AccountControlRegistry record (key commitment, algorithm, policyVersion) for every MinervaPQTxV1 from a deployed account, at txpool admission and in block validation |
pnpm coregeth:test (TestMinervaRotatedOutKeyIsRejectedOnNativePath), pnpm devnet:pq-rotation-smoke |
Covered on devnet |
| Device keys and scoped permissions | A device key cannot rotate, change the key set, or spend outside its scope | Device keys live in the registry key set; consensus admits them only for zero-value self-calls; executeNative reads the signer from MINERVA_TX_CONTEXT (0x...4D01) and enforces targets, value window, expiry and protected targets; revocation bumps policyVersion |
pnpm contracts:test, pnpm coregeth:test (TestMinervaDeviceKeyNativePath), pnpm devnet:pq-device-key-smoke, wallet devnet:device-acceptance |
Covered on devnet |
| Deterministic account factory | ECDSA cannot deploy or control the default account in the native flow | Genesis installs the factory; a PQ wallet funds/deploys counterfactual accounts with MinervaPQTxV1 |
pnpm contracts:deploy:devnet, pnpm devnet:pq-smoke |
Covered on devnet |
| Security mode registry | ECDSA cannot label another account as PQ Native |
SecurityModeRegistry.recordMode requires msg.sender == account |
pnpm contracts:test and devnet smoke assertions |
Covered on devnet |
| Account readiness registry | Third parties cannot mark another address as ready | AccountReadinessRegistry.recordPQNative records msg.sender |
pnpm contracts:test and wallet acceptance reads |
Covered on devnet |
| Mobile wallet default flow | User funds are moved by wallet ML-DSA signing, not ECDSA signing | Wallet displays MRV, deployment state, and PQ Native, then submits PQ-signed transfer through the relayer |
pnpm devnet:wallet-app-acceptance, pnpm devnet:wallet-app-ui-smoke |
Covered on devnet |
| PQ-native transaction layer | ECDSA cannot create the Minerva-native sender or submit through minerva_sendRawPQTransaction (minerva_ alias) |
CoreGeth validates MinervaPQTxV1 (type 0x4D, pqAlgorithm, policyVersion) with ML-DSA, binds a counterfactual account to the public key and salt, charges gas to the Minerva Account, and lets the canonical factory deploy at a used address |
pnpm pq-native:acceptance, pnpm coregeth:test, pnpm devnet:pq-native-raw-smoke |
Covered on devnet |
| Encrypted wallet backup | ECDSA break does not unlock a PQ account backup | Restored profile must decrypt the ML-DSA key and produce a valid PQ signature | pnpm devnet:wallet-pq-backup-smoke |
Covered on devnet |
| Legacy EOA transactions | ECDSA break can spend EOAs only on non-native compatibility experiments | Rejected by consensus from minervaNativeOnly (block validation, state transition, txpool, RPC); not funded in native devnet genesis |
pnpm pq-native:acceptance, pnpm coregeth:test (block-level rejection), live EOA rejection smoke |
Excluded by consensus |
| Deployer, faucet, and relayer gas keys | ECDSA break has no live native-flow key to exploit | Genesis system install, faucet PQ treasury, and raw submit gateway remove EOA gas-payer keys | pnpm contracts:deploy:devnet, faucet/relayer native smokes |
Covered on devnet |
| PQ admin simulator | ECDSA alone cannot call simulated treasury, faucet top-up, or policy controls | MinervaAdminVault requires msg.sender to be a Minerva Account controlled by ML-DSA |
pnpm contracts:test, pnpm devnet:pq-admin-smoke |
Covered as devnet proof |
| Protocol/admin accounts | Any ECDSA-only privileged key would violate the public claim | Must use Minerva Accounts or stricter PQ policies before production authority exists | Not deployed as privileged production controls in this milestone | Release gate |
| Mining consensus | ECDSA break does not directly control account execution, but PoW reorgs affect finality | PoW security is separate from PQ account security | pnpm coregeth:test plus devnet mining acceptance |
Separate consensus risk |
| Bridge (Sepolia MRV / native MRV) | ECDSA-only guardians would violate the claim for bridged funds | Bridge deployed on Sepolia and installed in the bridge devnet genesis (MErva/bridge); releases and refunds are guardian-attested (EIP-191 today), with explicit inventory ledgers and no timer refunds; guardians are not yet PQ |
MErva/bridge: 42 Foundry tests incl. ledger invariants, relayer tests |
Known gap: guardian keys are classical (release gate) |
| Bridge cancellation and refunds | A timer or a single party cannot trigger a refund that races a release | Refund only after a guardian-attested cancellation; destination refuses releases past the deadline and marks them Expired after the margin | MErva/bridge EthereumBridgeSafety.t.sol, MinervaNativeBridgeVault.t.sol |
Covered by tests; live testnet proof pending |
| Release signing | Classical-only release signing is a supply-chain risk | Reproducible node builds (scripts/release/check-reproducible.sh), SSH-signed SHA256SUMS and an ML-DSA-65 signature over the same file (release:pq, context MINERVA_RELEASE_V1); verify-release.sh checks both |
scripts/release/check-reproducible.sh (two builds, identical hashes); release:pq verify tamper test |
Covered: classical plus ML-DSA-65 |
Primitive Coverage
- ML-DSA-65 is the primary account-control primitive. NIST FIPS 204 standardizes ML-DSA: https://csrc.nist.gov/pubs/fips/204/final
- SLH-DSA is the fallback and research track. NIST FIPS 205 standardizes SLH-DSA: https://csrc.nist.gov/pubs/fips/205/final
- The devnet verifier uses Cloudflare CIRCL ML-DSA-65 through the Minerva precompile: https://pkg.go.dev/github.com/cloudflare/circl/sign/mldsa/mldsa65
- SPHINCS- is vendored only as a hash-based research track from https://github.com/vbuterin/sphincsminus. It is not a default account-control primitive or a consensus precompile. See
docs/quantum-readiness/sphincs-minus-track.md.
Accepted Public Language
Use:
- quantum-resistant default accounts
- PQ-native Minerva Accounts
- ECDSA compromise alone cannot move default Minerva Account funds
- Breaking ECDSA/secp256k1 alone cannot move default Minerva Account funds or control protocol/admin accounts.
Avoid:
- impossible to hack
- forever quantum-proof
- every subsystem is fully PQ-native today
- Legacy EOA accounts are quantum-resistant
Required Evidence Before Broad Claims
Run these before presenting the devnet claim:
pnpm docs:acceptance
pnpm admin:acceptance
pnpm research:sphincs-minus:smoke
pnpm coregeth:test
pnpm contracts:test
pnpm devnet:pq-admin-smoke
pnpm devnet:acceptance
Before production or public testnet claims include protocol/admin controls, every privileged control path must be inventoried and moved to Minerva Account control or an explicitly stronger PQ policy.
