CEFV · Module 3 of 5 · 12 min
Signatures, pinned keys and key swaps
Ed25519 signatures prove a record was signed by the holder of a private key. They prove nothing if the verifier accepts whatever public key ships with the evidence.
Pin the expected public key out of band (published fingerprint, prior bundle, /.well-known keys) and require it. CAIN's verifiers take a --pinned-pub argument for exactly this.
A classic forgery: replace the records, re-sign with your own key, ship your key in the bundle. Pinning defeats it.
Key points
- A signature binds data to a key, not to a vendor.
- Pin the key out of band.
- Key-swap forgery is defeated by pinning.
In the CAIN-42 codebase
keystone/family_verify.py— verifier with pinned public key
Practice check
Practice 1 · choose one
An attacker re-signs edited evidence with their own key and ships it. What stops this?
Practice 2 · true or false