CTO Entropy Audit Checklist

Ultra-dense binary assertions for auditing legacy and modern Bitcoin infrastructure.
CTO Entropy Audit Checklist

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 Coldcard MICROPY_HW_ENABLE_RNG vector).
  • [ ] 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_PROTOCOL execution in Linux EFI stub pre-OS initialization.

2. Virtualization / Hypervisor

  • [ ] VMGENID State Synchronization: Confirm hypervisor ACPI VMGENID triggers kernel reseed. Assert long-running crypto daemons continuously poll getrandom() 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-seed and /loader/random-seed state files in VM clone templates. Set /etc/machine-id to uninitialized to force unique pool generation per clone.

3. Kernel / OS

  • [ ] getrandom() Seccomp Passthrough: Verify container runtimes (K8s/Docker) do not block getrandom(). For kernels >= 6.11, assert the MAP_DROPPABLE flag in mmap() is unblocked by seccomp to permit vDSO state allocation.
  • [ ] Silicon & Bootloader Distrust: Assert random.trust_cpu=off AND random.trust_bootloader=off in boot parameters to block compromised silicon or poisoned UEFI seeds from bypassing CRNG mixing logic.
  • [ ] Userspace Daemon Purge: Delete haveged / jitterentropy on 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 legacy CryptoJS.lib.WordArray.random() software PRNGs (mitigating the May 2026 “Ill Bloom” vulnerability). Enforce strict crypto.getRandomValues() or crypto.randomBytes().
  • [ ] Early-Boot Blocking: Audit processes for /dev/urandom reads 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/urandom fallbacks upon getrandom() 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