How the entropy reservoir, health gating, cryptography layer, and audit pipeline are wired. Every draw is observable. Every response is reproducible.
fallback object on every responseSix layers back every draw. Three feed the API today (L2, L5, L6). Three remain on the internal calibration loop (L1, L3, L4).
X25519 + ML-KEM-1024 hybrid key establishment. FIPS 203 Category 5. AEAD via AES-256-GCM with 96-bit nonces. Private-beta service pending independent interoperability validation. ML-DSA-65 signing available when client provides a public key.
SP 800-90B Repetition Count Test (RCT) and Adaptive Proportion Test (APT) on every draw against a 1024-byte sample window. rct_passed / apt_passed boolean fields in the response.
State-tomography snapshots from the calibration loop. Used to characterize backend fidelity and validate admission thresholds. Not yet surfaced in the API.
State-transport fidelity tracking per channel on the calibration loop. Not yet surfaced in the API.
Hardware-derived entropy with a disclosed source_class per draw. Per-batch entropy_score admission threshold: ≥ 0.99. source_class enum in every response.
Engineered gate connectivity and backend-specific correlation metrics. Informs the hardware procurement cycle. Not yet surfaced in the API.
Every authenticated draw returns the same shape. Fields are stable across versions; additions are versioned.
Request body
{
"format": "hex",
"length": 32
}
Response body (real shape, abbreviated)
{
"success": true,
"request_id": "req-example",
"timestamp": "2026-09-08T12:00:00.000Z",
"issued_at": "2026-09-08T12:00:00.000Z",
"purpose": "vrf-seed",
"data": {
"format": "hex",
"length": 32,
"size_bytes": 32,
"entropy": "…",
"encoding": "hex"
},
"provenance": {
"source_class": "hardware-derived",
"source_id": "qsg_pool_20260908_001",
"backend_class": "hardware-batch-reservoir",
"entropy_score": 0.99875,
"conditioning": "von-neumann",
"unique_states": 8192,
"job_epoch": "2026-09-08",
"health_check": {
"rct_passed": true,
"apt_passed": true,
"timestamp": "2026-09-08T12:00:00.000Z"
},
"tier": "builder",
"purpose": "vrf-seed"
},
"fallback": {
"is_fallback": false,
"reason": null,
"original_source": null
},
"audit": {
"reservoir_remaining_bits": 41915136
},
"tier": "builder",
"rate_limit": {
"remaining": 59,
"reset_at": 1789923180000
},
"billing": {
"tier": "builder",
"units": 1,
"weight": 1,
"charged_units": 1,
"unit_definition": "1 unit = 1 entropy request (length ≤ 64 bytes); larger requests charged at higher weight"
}
}
format — output format: hex or base64length — integer, bytes requested (max 4096)source_class — enum: hardware-derived | csprng-fallbackentropy_score — min-entropy estimate. Two scales are used internally: raw QRNG output in bits/byte (e.g. 7.99), or normalized 0.0–1.0 (e.g. 0.999). The API normalizes on recording; both formats are accepted.source_id — pool identifier (e.g. qsg_pool_20260908_001)fallback — nested object. is_fallback: false on a normal draw; is_fallback: true with a reason code when CSPRNG fallback engagedrequest_id — UUID for GET /v1/audit/:id lookupFive sequential stages from raw hardware output to signed API response. Each stage gates the next; failure at any stage is observable.
Raw measurement output with a disclosed source_class per draw. Each batch is tagged with a source_id (e.g. qsg_pool_20260908_001), job_epoch, and entropy_score. Pool byte-age cap: 14 days.
entropy_score ≥ 0.99 required for admission. Min unique states per batch: 8,192. Below threshold → batch is rejected, never admitted to reservoir.
SP 800-90B RCT and APT run on a rolling 1024-byte sample window. Failed tests force fallback regardless of entropy_score.
Admitted bytes buffer in the edge layer. Pool threshold: ≥ 1 MB (MIN_POOL_THRESHOLD = 1024 * 1024). Consumption cap: 90% per draw (MAX_BATCH_CONSUMPTION = 0.90).
Authenticated draw returns entropy bytes + provenance record. KV (90-day operational) + R2 (compliance archive planned) audit chain attached.
Fallback is explicit and customer-visible. The fallback.is_fallback field is true only when one of these checks fails — never silently.
Reservoir must hold at least 1 MB plus the requested draw. Failure → reason: "pool_unavailable".
entropy_score of the candidate batch must be ≥ 0.99. Failure → reason: "entropy_score_below_threshold".
RCT and APT must both pass on a 1024-byte sample. Failure of either → reason: "health_tests_failed:RCT,APT" (or whichever test failed).
If any check fails, the response is still issued — with bytes from the documented CSPRNG fallback path and the nested fallback object populated. The original requested source and the failure reason are both preserved in fallback.reason and fallback.original_source.
Every draw produces two records: an operational telemetry record and a compliance archive. Both share the same request_id.
Edge KV Store · 90-day rolling TTL
Object Storage Archive · Retention under configuration
End-to-end latency budget for a normal draw at the edge.
| Stage | Component | Typical |
|---|---|---|
| 1 | TLS + auth verification (edge network) | 5–10 ms |
| 2 | Pool byte extraction (edge-backed) | <1 ms |
| 3 | NIST RCT/APT on 1024-byte sample | 2–5 ms |
| 4 | HKDF derivation + provenance assembly | <1 ms |
| 5 | Provenance record construction | 1–3 ms |
| 6 | Operational write (KV) | 2–8 ms |
| 7 | Response serialization + edge return | <1 ms |
| Total | Edge P50 | <20 ms |
| Total | Edge P95 | Unspecified |
The service runs on a global edge network. No infrastructure to manage; no warm-up; no provisioned capacity.
Distributed compute at 300+ global POPs. Sub-50ms P95 latency.
Operational audit record. 90-day TTL.
Persistent audit log. Retention under configuration.
Access is reviewed; keys start at Builder. Same response shape, same audit chain.