CAIN-42 CAIN Studio
CAIN-42 Academy

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

“A valid signature proves the record came from the vendor regardless of which key was used.”