docs/research/sota-2026-05-22/ticks/tick-28.md
Thread: ADR-108 (Kyber post-quantum key exchange) Verdict: Final ADR in the privacy + federation chain. Closes the quantum-resistance gap deferred from ADR-107. Hybrid mode (Kyber-768 + X25519) for 2027-2030 migration; pure Kyber-768 for Phase 3.
docs/adr/ADR-108-kyber-post-quantum-key-exchange.md — full ADR draft.| Phase | Timeline | Cryptography |
|---|---|---|
| Phase 0 | NOW (2026) | Classical X25519 (ADR-107 default) |
| Phase 1 | 2026-Q4 → 2027 | Kyber-768 opt-in via --enable-pqc |
| Phase 2 | 2027-Q2 → 2028 | Hybrid (X25519 + Kyber-768) becomes default |
| Phase 3 | 2030+ | Pure Kyber-768 (classical retired) |
Why Kyber-768: NIST FIPS 203 (2024); ~AES-192 equivalent; CNSA 2.0 default; used by Cloudflare/Google/AWS in 2024-2026 rollouts.
Why hybrid for Phase 2: belt-and-braces against future Kyber breaks (Kyber is ~5 years old) OR classical breaks OR implementation bugs in either primitive.
Adversaries can record federated updates today and decrypt them in 2035 when quantum capabilities arrive. Without ADR-108, the (ε, δ) guarantees of ADR-106 silently expire when quantum computers arrive.
Bandwidth: ~3 kB/round/installation extra during hybrid mode (negligible).
LOC: +220 on top of ADR-107.
Total federation budget across ADR-105+106+107+108: ~1,550 LOC.
Final ADR in the privacy + federation chain:
| # | ADR | What it closes |
|---|---|---|
| 1 | ADR-100 | cog packaging (foundation) |
| 2 | ADR-103 | first cog example (cog-person-count) |
| 3 | ADR-104 | MCP + CLI distribution |
| 4 | ADR-105 | within-installation federation |
| 5 | ADR-106 | DP-SGD + biometric primitive isolation |
| 6 | ADR-107 | cross-installation + secure aggregation |
| 7 | ADR-108 | post-quantum key exchange |
No remaining unspecified privacy gap at any threat horizon (classical OR quantum).
pqcrypto-kyber Rust crate maturitycog-store distribution chainticks/tick-28.md. No PROGRESS.md edit. Branch research/sota-adr108-kyber.
~2.3h to cron stop. 28 ticks landed. 4 ADRs in the privacy chain (105/106/107/108). Loop covers everything except R12.1 implementation.