Timing entropy primitive for human process attestation
Part of the Cryptographic Proof of Process (CPoP) specification — an LF Decentralized Trust Lab
Overview
cpop-jitter provides cryptographic proof-of-process through timing jitter,
producing tamper-evident evidence that content was created through a human
typing process rather than generated or pasted. Two engines are available:
- PureJitter — HMAC-based, deterministic,
no_stdcompatible. Uses externally-provided timestamps for environments without OS timing. - PhysJitter — Hardware entropy collection via CPU timing (TSC).
Requires
stdfor OS timing primitives. - HybridEngine — Automatic fallback from PhysJitter to PureJitter.
Quick Start
[]
= "0.2"
use ;
let engine = new;
let mut session = new;
session.record_keystroke;
session.record_keystroke;
let evidence = session.finalize;
assert!;
Features
| Feature | Default | Description |
|---|---|---|
std |
Yes | Standard library — enables Session, timing, serde_json |
hardware |
No | Hardware entropy collection (TSC) |
rand |
No | Random secret generation |
For no_std environments, use PureJitter with explicit timestamps:
[]
= { = "0.2", = false }
Architecture
PureJitter (HMAC-SHA256, deterministic)
↓ fallback
PhysJitter (hardware TSC entropy)
↓ combined
HybridEngine → Session → Evidence
Each keystroke is bound to a timing jitter measurement. The evidence chain is HMAC-linked, making insertion, deletion, or reordering of events cryptographically detectable.
Contributing
See CONTRIBUTING.md for DCO sign-off requirements and contribution workflow.
License
Apache License, Version 2.0. See LICENSE.
Part of the proof-of-process repository.