How It Works Pricing Benchmarks
vs Redis Docs Resources Blog
Start Free Trial
Post-Quantum Attestation

Post-Quantum
Cache Attestation

Every write signed. Every read verified. Tamper detected at read time. Cache poisoning caught before your application sees it.

ML-DSA-65
Signature Algorithm
FIPS 204
NIST Standard
145µs
Sign Latency
146µs
Verify Latency
The Problem

Cache Poisoning Is a Real Attack

A compromised sidecar, a memory bit flip, a malicious replication inject — and your application sees wrong data. No cache product detects this. Not Redis. Not Memcached. Not Hazelcast.

💥
Silent Corruption
A single bit flip in memory changes a price from $182.50 to $18250. A hardware fault overwrites a patient record. Your application reads it, trusts it, acts on it. There is no detection mechanism in any cache today. The wrong data is served with full confidence.
Zero tamper detection in any existing cache
🔥
Cache Poisoning
An attacker compromises a sidecar process, a replication channel, or a shared-memory segment and injects forged cache entries. Your application reads the poisoned value as if it were legitimate. No signature. No verification. No alarm. The attack succeeds silently.
Poisoned data served as legitimate
🔒
No Integrity Layer
Databases have checksums. Networks have TLS. File systems have journaling. Caches have nothing. The fastest data path in your stack — the one your application trusts most implicitly — has zero integrity verification. Every GET is a leap of faith.
Caches are the only unverified data path
How It Works

Sign on Write. Verify on Read.

Every SET signs the value with ML-DSA-65 and appends the signature. Every GET verifies the signature before returning data. Tampering is detected at read time, before your application ever sees the value.

SET: Write + Sign

When your application issues a SET, Cachee writes the value, then computes an ML-DSA-65 signature over [key || value] and appends the signature with a CATT marker. The key is included in the signed payload — so moving a value to a different key is detected as a forgery.

Format: [value][CATT marker][3,309-byte ML-DSA-65 signature]

GET: Read + Verify

When your application issues a GET, Cachee reads the stored value, strips the CATT marker and signature, verifies the signature against the key and value, and returns the data with an attestation status header. If verification fails, the response is flagged and the event is logged immediately.

Your application receives clean data plus a trust signal. Tampered entries never reach your business logic.

# SET: Write the value, sign it, store with attestation cachee> SET patient:record '{"name":"Alice"}' OK (15µs + 145µs sign) attestation: signed # GET: Read the value, verify the signature, return with status cachee> GET patient:record "{"name":"Alice"}" (16µs + 146µs verify) attestation: VALID # Tampered value: signature verification fails at read time cachee> GET patient:record "{"name":"Eve"}" (16µs + 146µs verify) attestation: TAMPERED # Key-swap attack: value moved to a different key cachee> GET admin:record "{"name":"Alice"}" (16µs + 146µs verify) attestation: KEY_MISMATCH
Detection

What It Detects

Four classes of cache integrity violations, all caught at read time before your application processes the data.

💻
Memory Corruption
Bit flips, hardware faults, and ECC failures that silently alter cached values. A single flipped bit changes the data but not the signature. Verification fails. Your application never sees the corrupted value.
Bit flips caught at read time
Cache Poisoning
Malicious writes from compromised sidecars, shared-memory attacks, or exploited write paths. The attacker can write any value, but cannot forge an ML-DSA-65 signature without the private key. Verification fails.
Poisoned entries rejected on read
🌐
Replication Forgery
Fake entries injected from untrusted replication nodes or man-in-the-middle attacks on replication channels. Forged entries arrive without valid signatures. Verification fails at the receiving node.
Forged replicas detected instantly
🔀
Key-Swap Attacks
An attacker moves a legitimate value to a different key. Because the key is included in the signed payload, the signature is bound to the original key. Reading the value under a different key produces a key mismatch.
Key bound to signature
Origin

Born from H33's Production Pipeline

Cachee was not designed in a vacuum. It was extracted from a system that processes 2.17 million post-quantum authenticated operations per second.

Cachee was born from H33's post-quantum cryptography pipeline. STARK proof lookups were bottlenecking at 339µs through Redis. We built an in-process L1 and dropped it to 0.059µs. The same DashMap engine, the same Dilithium signatures that attest 2.17 million authentications per second, now protect your cache.

The ML-DSA-65 signing code running inside Cachee is not a library integration or a proof of concept. It is the same code path, the same key management, and the same verification logic that runs in H33's production pipeline on Graviton4 hardware at scale.

This is not a feature bolted onto a cache. This is a cache built by a team that has been shipping post-quantum cryptography in production since 2025.

H33 Production Numbers
Auth/sec
2.17M
Sustained throughput
Per Auth
38.5µs
End-to-end latency
ZKP Lookup
0.059µs
DashMap cached
Dilithium
291µs
Sign + verify per batch
Algorithm

ML-DSA-65 Specification

The signature algorithm behind Cachee's attestation layer. NIST standardized. Quantum-resistant. Deterministic.

ML-DSA-65 (Dilithium) — NIST FIPS 204
Standard
FIPS 204
NIST Post-Quantum
Security Level
3
128-bit post-quantum
Signature Size
3,309 B
Per cache entry
Signing
Deterministic
No RNG in hot path
Security
CCA2
Chosen-ciphertext secure
Basis
Lattice
Module-LWE hardness
ML-DSA-65 is the NIST-standardized version of the CRYSTALS-Dilithium signature scheme. It provides security against both classical and quantum adversaries. The 3,309-byte signature is appended to each cache entry alongside the CATT marker.
Enable

One Environment Variable. That's It.

Post-quantum cache attestation is built into every Cachee instance. Enable it with a single environment variable. No configuration files. No schema changes. No restarts required on supported versions.

Enable Post-Quantum Attestation
PQ_ATTESTATION=true cachee-server
Every SET is signed. Every GET is verified. Tampered entries are flagged before your application sees them. Disable it by removing the variable — existing entries are served unsigned with zero overhead.
# Docker docker run -e PQ_ATTESTATION=true cachee/cachee-server # Docker Compose environment: - PQ_ATTESTATION=true - PQ_KEY_ROTATE_INTERVAL=24h # optional: auto-rotate signing keys # Kubernetes env: - name: PQ_ATTESTATION value: "true" # Bare metal PQ_ATTESTATION=true ./cachee-server --port 6380
FAQ

Frequently Asked Questions

How much latency does post-quantum attestation add?

ML-DSA-65 signing adds approximately 145 microseconds to SET operations and 146 microseconds to GET operations for signature verification. For most workloads, this is negligible compared to network round-trip time. The signing and verification happen in-process with zero external dependencies. If your workload is latency-sensitive at the sub-millisecond level, you can selectively enable attestation on specific key prefixes.

How does signing key rotation work?

Cachee supports automatic key rotation via the PQ_KEY_ROTATE_INTERVAL environment variable. When a new signing keypair is generated, the previous public key is retained in a verification ring for a configurable grace period. Existing signatures remain valid during the transition. Zero-downtime rotation with no cache flush required.

What happens if attestation is disabled?

When PQ_ATTESTATION is not set or set to false, Cachee operates as a standard cache with no signing or verification overhead. The CATT marker and signature bytes are not appended. Enabling attestation is a one-line environment variable change with no schema migration or data loss. Existing unsigned entries are served normally and re-signed on their next SET.

Does this help with compliance requirements?

Yes. Post-quantum cache attestation provides cryptographic proof that cached data has not been tampered with since it was written. This satisfies data integrity requirements in SOC 2 Type II, HIPAA, and PCI-DSS. The ML-DSA-65 algorithm is NIST FIPS 204 standardized, which satisfies federal compliance requirements including FedRAMP and CMMC. Every verification event is logged with timestamp, key, and attestation status for audit trails.

Is this quantum-safe? Why does that matter for a cache?

ML-DSA-65 (Dilithium) is a lattice-based signature scheme standardized by NIST as FIPS 204. It is resistant to attacks from both classical and quantum computers. While quantum threats to cache integrity may seem distant, harvest-now-decrypt-later attacks mean that adversaries can record signed data today and attempt to forge signatures later with quantum computers. Using post-quantum signatures now eliminates that future risk entirely.

Your Cache Has No Integrity Layer.
Now It Does.

ML-DSA-65 signed writes. Verified reads. Tamper detection at read time. One environment variable to enable. Born from a pipeline that signs 2.17 million operations per second.

Start Free Trial See Benchmark