Secrets and Key Management
Private keys and secrets live in hardware security modules and device key stores, are never exported in the clear, and rotate on short, enforced schedules.
Keys are the root of every guarantee
Identity, attestation, signing, and encryption all reduce to keys. If a private key leaks, the guarantee built on it collapses. Kronos concentrates key material in hardware: a hardware security module (HSM) for the certificate authority and signing roots, and per-device key stores on FPGAs and controllers. Private keys are generated in hardware and never leave it in plaintext; operations happen inside the boundary.
Key hierarchy
- Long-term roots: the OT CA and the firmware signing root (SLH-DSA) in the HSM, used rarely and under two-person control.
- Short-lived leaf credentials: node and workload identities issued for hours - see zero-trust identity.
- Per-device bitstream and attestation keys provisioned in controlled manufacturing.
- Data-protection keys for exported telemetry, established via ML-KEM hybrid.
# Signing happens inside the HSM; the private key never leaves
def sign_root(payload):
handle = hsm.open('firmware-root', quorum=2) # 2-person to authorize
sig = hsm.sign(handle, payload, alg='SLH-DSA') # key stays in hardware
hsm.close(handle)
audit('root-sign', subject=sha384(payload))
return sig
Rotation and revocation
Short leaf lifetimes make routine rotation automatic - re-attestation issues fresh credentials continuously. Long-term roots rotate on a defined schedule with overlap so verification of existing artifacts is never interrupted, aided by crypto agility. Revocation of a leaf is mostly handled by expiry; roots have an explicit revocation and re-anchoring procedure.
Design status: HSM-backed signing, per-device provisioning logic, and rotation are implemented in the toolchain and twin. Production HSMs and device key injection are part of FOAK manufacturing and build; no live reactor key hierarchy is yet in service.