Forward-Secure Signatures
Evolve a signing key over time so a signature produced under epoch `i`'s key remains verifiable later, but compromise at epoch `i+k` reveals only `epochSecret_{i+k}` and future epoch secrets. Past epoch secrets, and the privacy properties of past signatures (unlinkable nullifiers, addresses), remain protected.
Evolve a signing key over time so a signature produced under epoch i's key remains verifiable later, but compromise at epoch i+k reveals only epochSecret_{i+k} and future epoch secrets. Past epoch secrets, and the privacy properties of past signatures (unlinkable nullifiers, addresses), remain protected.
The deployable instantiation on constrained signers is a hash-chain key-evolution wrapper around a standard signature primitive (ECDSA, EdDSA, RSA), trading the elegance of identity-based forward-secure schemes for primitives that already exist in shipping crypto APIs.
- One-way derivation primitive: SHA-2, or HMAC-SHA256 when per-epoch domain separation is needed.
- Underlying signature scheme: ECDSA-secp256k1 with RFC 6979 deterministic nonces and canonical-s, EdDSA, or RSA-PSS. The forward-secure wrapper does not replace the signature scheme.
- Erase-capable storage: per-epoch state securely erased at transition. Transactional erase prevents failure modes that leave both
epochSecret_{i-1}andepochSecret_iresident. - Epoch boundary signal: external clock, on-chain event, or beacon. Signer and verifier must agree on the current epoch.
- Forward secrecy: an adversary holding
epochSecret_icannot recoverepochSecret_jforj < ibecause SHA-256 is one-way. Past signatures retain their privacy properties up to public-channel disclosure. - Unforgeability of past signatures: compromise at epoch
idoes not retroactively forge epochj < isignatures. - Bounded compromise window: damage scope is the current and future epochs, not the device lifetime.
- Threat model: adversary reads post-compromise device state. Out of scope: covert pre-compromise observation that captures
epochSecret_jlive; side-channel leakage that reveals stored secrets before erase.
- Long-lived secrets are a separate erase boundary. Forward secrecy applies only to per-epoch state. Designs that hold long-lived secrets alongside per-epoch state treat those secrets as a residual under seizure.
- Epoch length is a deployment knob. Shorter epochs reduce post-seizure exposure; more transitions mean more chances for a failed transactional erase.
- Verifier rotation. Verifiers accept a per-epoch public key. Compatible with membership-tree designs where each leaf commits to a per-epoch public key; complicates direct verification flows.
- Audit surface. The hash-chain step, transactional erase, and refusal-to-skip have shipped broken in HSM and signer firmware historically. Audit each explicitly.
A document timestamping authority signs proof-of-existence statements weekly. The authority is provisioned with epochSecret_0, derives epochSecret_i = SHA-256(epochSecret_{i-1}) at each weekly transition, and transactionally erases prior epoch state. A breach during week 12 reveals epochSecret_12 only; an attacker can issue week-12 timestamps but cannot forge weeks 0 through 11, and any per-epoch unlinkability properties of those past signatures hold against the breach attacker.