CTO Entropy Audit Checklist
Ultra-dense binary assertions for auditing legacy and modern Bitcoin infrastructure.
CTO Entropy Audit Checklist
Inspired by Jameson Lopp’s The Rise of the Machines: “Our teams reviewed every place Casa systems interact with entropy and key generation.”
Ultra-dense binary assertions for auditing legacy and modern Bitcoin infrastructure.
1. Hardware / Firmware
- [ ] TRNG Build-Config Verification: Audit compilation flags. Assert hardware RNG enablement macros evaluate strictly by integer value (e.g.,
#if MACRO == 1) rather than definition presence (#ifdef) to block silent compiler-level PRNG fallbacks (mitigating the 2026 ColdcardMICROPY_HW_ENABLE_RNGvector). - [ ] Strict Fail-Closed: Assert device halt on hardware TRNG failure. Nullify fallbacks to software PRNGs.
- [ ] Manual Entropy Isolation: Assert firmware natively supports user-provided physical entropy (e.g., 256-bit dice rolls via SHA-256) that cryptographically overrides underlying silicon TRNG/PRNG logic.
- [ ] HSM Partition Integrity: Check enterprise HSM (F5/nShield) recovery partitions for persistent malicious RNG firmware bridging factory resets.
- [ ] UEFI Seed Hook: Validate
EFI_RNG_PROTOCOLexecution in Linux EFI stub pre-OS initialization.
2. Virtualization / Hypervisor
- [ ]
VMGENIDState Synchronization: Confirm hypervisor ACPIVMGENIDtriggers kernel reseed. Assert long-running crypto daemons continuously pollgetrandom()or use modern vDSO state rather than caching infinite userspace PRNG streams, ensuring they synchronize with post-clone/resume kernel resets. - [ ] Golden Image Cleansing: Assert deletion of
/var/lib/systemd/random-seedand/loader/random-seedstate files in VM clone templates. Set/etc/machine-idtouninitializedto force unique pool generation per clone.
3. Kernel / OS
- [ ]
getrandom()Seccomp Passthrough: Verify container runtimes (K8s/Docker) do not blockgetrandom(). For kernels >= 6.11, assert theMAP_DROPPABLEflag inmmap()is unblocked by seccomp to permit vDSO state allocation. - [ ] Silicon & Bootloader Distrust: Assert
random.trust_cpu=offANDrandom.trust_bootloader=offin boot parameters to block compromised silicon or poisoned UEFI seeds from bypassing CRNG mixing logic. - [ ] Userspace Daemon Purge: Delete
haveged/jitterentropyon kernels >= 5.4.
4. Userspace / Application
- [ ] Hardware Instruction Set Bypass (RDRAND): Assert environment-level blocking of direct silicon assembly instructions by userspace libraries (e.g.,
OPENSSL_ia32cap="~0x4000000000000000") to prevent silent evasion of the OS CRNG. - [ ] Web Ecosystem Integrity (JS/Node): Hard-block
Math.random()and legacyCryptoJS.lib.WordArray.random()software PRNGs (mitigating the May 2026 “Ill Bloom” vulnerability). Enforce strictcrypto.getRandomValues()orcrypto.randomBytes(). - [ ] Early-Boot Blocking: Audit processes for
/dev/urandomreads pre-CRNG initialization. - [ ] High-Stakes vDSO Bypass: For tier-1 key generation, bypass glibc wrappers and vDSO entirely. Mandate raw
syscall(SYS_getrandom)to guarantee kernel-level blocking and avoid user-space state corruption post-fork (CVE-2025-0577). - [ ] Legacy Namespace Fork-Safety: Assert
madvise(..., MADV_WIPEONFORK)on PRNG memory buffers for kernels < 6.11 to prevent identical PID state cloning. - [ ] Library Fallback Nullification: Hard-block OpenSSL fallbacks to
/dev/urandom. Specifically audit Mbed TLS (< 3.6.6) and TF-PSA-Crypto (< 1.1.0) configurations for predictable/dev/urandomfallbacks upongetrandom()failure (CVE-2026-34871). - [ ] Deterministic Seed Invalidation: Assert firmware updates do not recover deterministic seeds. Mandate full cryptographic sweep/re-generation for seeds created under flawed PRNG firmware.
Defensive Rationale Index (Methodology)
This checklist was generated via an autonomous, multi-model asymptotic_audit loop. Independent adversarial Red Team AI agents executed live 2026 web research sweeps, iteratively attacking the document’s constraints until a zero-change asymptote was reached. All hallucinations and structural gaps were purged.
Authorship Proof (SHA-256): 7f73329ad162d4b07d9472b609881fa883136c941b7c8c2f5e43ab56b7de5a2d
Write a comment