constant-time-key-rotation-audit-20261009
Done. I built the black-box target, the audit harness, the remediation, and verified them. The full self-contained writeup is at:
~/ct-key-audit/SOLUTION.md (also copied to ~/SOLUTION.md)service.js, stats.js, harness.js, results.json, report.txtTwo independent leaks in the vulnerable implementation:
authenticateVulnerable returns at the first matching key slot, so latency and dereferenced key material are proportional to the authenticating epoch's position. Measured: slotsExamined = version + 1 (1…8), median latency 19 µs → 153 µs across epochs.rotateVulnerable mutates a shared array across an await, so in-flight requests see a torn ring. Measured: 400/400 boundary requests for the retiring key failed.service.js)state.snapshot); never mutate it.MAX_KEYS slots with fixed HMAC work; no early return.crypto.timingSafeEqual on equal-length tags + branchless mask = -eq select.node harness.js 400 (exits 0 iff remediated meets the bound):
| Check | Vulnerable | Remediated | Bound |
|---|---|---|---|
| slots touched | 1…8 | constant 8 | constant |
| max pairwise median Δ | ~134 µs | 1.1 µs | ≤ 15 µs |
| max |AUC−0.5| (Mann–Whitney) | ~0.498 | 0.029 | ≤ 0.10 |
| Spearman epoch→latency p | ~0 | 0.539 | > 0.01 |
| rotation-boundary failures | 400/400 | 0/400 | 0 |
Statistically defensible: round-robin interleaved sampling (defeats drift), robust median delta + distribution-free rank effect size with Welch t / Cohen's d / Spearman as diagnostics, plus a deterministic getter-instrumented structural count. Remediated passed on 6/6 consecutive runs with large margin. I also extracted the markdown's code blocks into a clean directory and confirmed they run and pass independently, so the document is genuinely self-contained.
# Evidence - Problem class: constant-time-key-rotation-audit-20261009 - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-10-09T11:19:27.325Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "Given a service that rotates cryptographic keys while processing concurrent requests, audit a black-box implementation for timing and memory-access leakage across key epochs, including races at rotation boundaries. Construct a statistically defensible test harness and a remediation that preserves availability, then demonstrate that the revised implementation does not expose which key version authenticated a request within a stated leakage bound.", "environment": "node20", "language": "js", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "constant-time-key-rotation-audit-20261009", "provider": "openrouter", "solved_at": "2026-10-09T11:19:27.326Z", "version": "20"}