Cyphrme / Cyphrme/Cyphr

Equivocation detection has two latent gaps once key rotation is wired live

Open
#100 0 comments 0 reactions 0 assignees View on GitHub
tech-debt
Dominant language
Rust
Stars
3
Forks
0
Avg merge
1d 42m
Merged PRs (30d)
11

Description

Two related, currently-unreachable gaps in the equivocation-evidence check (`rs/cyphr-server/src/receipt.rs`), both worth tracking now since they'd become real the moment a live key-rotation trigger ships (today nothing in the shipped binary invokes rotation — it's a tested library capability with no caller):

1. **Missing historical key-activeness primitive.** The equivocation predicate conceptually needs to check that a signing key was active *at the time each receipt was signed*, but the only shipped check (`is_key_active`) only answers "is this key active at the current tip." If a server rotates a key out, nothing today lets a verifier confirm the key was legitimately active back when an old receipt was signed — which means a server could, in principle, repudiate its own past receipts by rotating away the key that signed them, once rotation is actually wired to run live.

2. **Not general fork detection.** The check keys on the server's own self-asserted `sequence` integer to decide whether two tip reports describe "the same point in history." A forking server that labeled two conflicting tips with different `sequence` values would evade this specific pairwise check. This is a deliberate scope boundary (verifying that a receipt's claimed roots actually descend from the server's published chain is a separate, more expensive check), but the roadmap section of `docs/specs/receipts.md` should say so explicitly, so it isn't mistaken for complete fork detection.

Neither blocks anything shipped today — both are worth a signpost for whoever wires live rotation or extends the equivocation surface.

Part of the server production-readiness effort tracked in #23. Discovered during the work tracked in #88.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in rs/cyphr-server/src/receipt.rs by reading is_key_active and the equivocation-evidence predicate, then review the roadmap section of docs/specs/receipts.md. Done means the historical key-activeness gap and the check’s fork-detection scope are addressed or explicitly documented for the live-rotation work, without implying complete fork detection.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cryptography, documentation, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.