Physical entropy → multi-conditioned seeds → post-quantum keys.
Experimental research system that turns ordinary hardware, human activity, and environmental noise into cryptographic material for NIST-standardized post-quantum algorithms.
Warning
Experimental research software. This project has not undergone formal cryptographic audit or NVLAP certification. Do not use generated keys to protect high-value or production data. It exists to explore and demonstrate entropy harvesting methodologies on commodity and recycled hardware.
Most modern systems treat entropy as a solved problem (RDRAND, /dev/urandom, cloud HSM). That assumption is fragile. Hardware TRNGs can be biased, firmware can be compromised, and single-source designs create single points of failure.
NullMagnet starts from a different premise:
- Never trust a single source. Every seed is the product of multiple independent physical and environmental streams that are conditioned more than once.
- Observation is entropy. Human movement, heart rate variation, string vibration, RF timing jitter, camera pixel noise, microphone thermal noise, and system scheduling deltas are all measurable. The deltas themselves are the material.
- Older and lower-power hardware is often better. Devices from ~2007 onward (and many low-power ARM boards) frequently exhibit more usable timing and analog noise than highly optimized modern silicon whose pipelines and power management have been scrubbed clean.
- Existing technology is enough. No exotic quantum optics required. Piezo sensors, commodity ESP32s, webcams, microphones, Wi-Fi/Bluetooth radios, and LiDAR modules already present in the environment are sufficient when read and conditioned carefully.
- Budget reality. The entire research stack (guitars instrumented with ESP32s, wearable node, multiple SBCs, sensors) was built and iterated for well under $500 in incremental hardware cost.
The practical goal is simple: demonstrate that high-quality post-quantum key material can be generated from the physical world using tools almost anyone can obtain, and that the same approach scales from a single musician’s stage to distributed infrastructure.
| Layer | Role | Primary Implementations |
|---|---|---|
| Physical capture | Raw analog / digital noise | GuitaRNG (ESP32-S3 + piezo / tilt), NullCloak (ESP32-C6 + LiDAR + HR), laptop mic/webcam, Wi-Fi/BT RSSI, USB serial, system jitter |
| First-stage conditioning | Debias + mix | BLAKE3-style ARX, Von Neumann, SHA-512 / BLAKE3 on-device |
| Health monitoring | Source health | NIST SP 800-90B RCT + APT (and additional chi-square / runs tests on embedded) |
| Aggregation & second conditioning | Multi-source pool | NullMagnet (Rust) — SHA-family conditioning with conservative entropy credit |
| PQC key generation | Final output | ML-KEM-1024 (FIPS 203) key pairs; Falcon-512 signatures (transitioning to ML-DSA-87) |
| Distribution & storage | Vault + mesh | Local AES-256-GCM vault, HMAC-authenticated P2P entropy sharing, Headscale/Tailscale forwarding |
Languages and toolchains currently in use across the stack:
- Rust — core NullMagnet engine, vault, UI, networking
- MicroPython / ESP-IDF / Arduino / Embassy — GuitaRNG and NullCloak firmware
- Supporting scripts and earlier prototypes in Python
The design deliberately spans multiple languages and device classes so that the same philosophical approach (multi-source physical entropy + repeated conditioning) can be shown to work from a $4 microcontroller up to a full x86 workstation.
On stage, multiple instrumented guitars will feed real-time entropy into the system while a laptop simultaneously harvests from its own sensors (microphone, webcam, Wi-Fi/Bluetooth RSSI, RDRAND/RDSEED where available, timing jitter). All streams are health-tested, multi-conditioned, and used to generate fresh ML-KEM-1024 key pairs (with the signature path moving from Falcon-512 toward ML-DSA-87).
The point is not theatrical novelty. It is to make the entire pipeline visible and auditable in real time: physical vibration and environmental noise → conditioned seed → post-quantum keys, generated live under ordinary performance conditions.
Rust engine that:
- Aggregates entropy packets from GuitaRNG nodes (UDP)
- Continuously harvests local sources (audio, video, HID timing, system state, optional GPU memory races, Bluetooth RSSI)
- Runs SP 800-90B-style health tests
- Conditions the pool
- Generates ML-KEM-1024 key pairs and Falcon-512 signatures
- Stores key bundles in an encrypted local vault and can forward them over a private tailnet
See the original technical README sections below for build instructions, configuration, and compliance notes.
ESP32-S3 firmware that turns guitar body vibration (piezo), ball-tilt sensors, hardware RNG, timing jitter, Wi-Fi, and Bluetooth into entropy packets. Conditioned on-device with a BLAKE3-inspired construction and continuous health tests before transmission.
Repository: GuitaRNG-ESP32-S3-Edition
Wearable node (ESP32-C6 WaveShare + LiDAR) that captures:
- Movement of people in the immediate vicinity
- Heart-rate related signals
- Local RF and timing sources
These streams are conditioned (SHA-512 or BLAKE3 depending on the device) and forwarded for a second round of conditioning. The explicit design rule is multi-condition: never trust a single source or a single conditioning pass.
Repository: NullCloak (early stage)
- ChaosField — electromagnetic pickup coil experiments
- ChaosMagnet / EntropicChaos / CipherChaos — earlier x86 and multi-device prototypes
- Akari-PQC — low-power ARM / SBC path
- CHIRASU-Network — broader mesh and storage ideas on recycled hardware
If the only entropy you trust is the one that came with the silicon vendor’s black box, you have accepted a supply-chain and design assumption that is difficult to verify. NullMagnet explores the opposite direction: treat the physical world and the behavior of ordinary devices as the primary source, instrument them, health-test them continuously, and condition aggressively.
The same approach can be applied at larger scale by organizations that already possess cameras, microphones, dense RF environments, and fleets of IoT or edge devices. The research shown here is deliberately kept on a low budget and on mixed-age hardware so that the barrier to replication stays low.
- Working end-to-end pipelines exist for guitar → ESP32 → NullMagnet → ML-KEM-1024.
- Multiple independent sources are aggregated and health-tested.
- Keys have been generated at meaningful volume (tens of thousands of ML-KEM pairs in testing).
- Formal NVLAP-style offline evaluation of 1 000 000 consecutive raw samples, full stochastic models of the physical sources, and an approved SP 800-90A DRBG construction are not yet complete. The system is research-grade, not production-certified.
- Signature path is currently Falcon-512; migration to ML-DSA-87 is in progress.
NullMagnet listens on specific UDP ports for entropy packets broadcast by ESP32-S3 units embedded within instruments.
- Hardware and OS: TRNG, CPU/memory state, mouse/HID timing jitter, GPU memory race conditions (CUDA/OpenCL)
- Environmental: Microphone ADC noise, camera frame noise
- Signals: Wi-Fi interface statistics, USB serial noise, Bluetooth passive scheduling jitter, active BLE RSSI scanning
- NIST SP 800-90B methodology: Repetition Count Tests (RCT) and Adaptive Proportion Tests (APT)
- Conditioning: SHA-family vetted conditioning with a conservative entropy credit factor
- PQC: ML-KEM-1024 (FIPS 203) and Falcon-512
- Memory safety:
zeroizefor secret material - UI:
eguinative interface
- P2P mesh with HMAC-SHA256 authentication
- Local AES-256-GCM encrypted vault
- Headscale/Tailscale forwarding of encrypted key bundles
The engine implements core SP 800-90B health-test ideas and FIPS-oriented zeroization practices, but it is not formally certified. Full offline ea_non_iid evaluation, formal stochastic models of the physical sources, and an approved DRBG construction remain future work.
Prerequisites: Rust toolchain. Optional CUDA or OpenCL for GPU harvesting.
# Standard
cargo run --release
# With NVIDIA
cargo run --release --features gpu-cuda
# Full features
cargo run --release --features "gpu-all,bt-active"On first run a nullmagnet.toml configuration file is generated. Use the in-app Settings tab or edit the file directly for audio/video devices, GuitaRNG ports, and network targets.
Apache License 2.0
Independent research. Built by one person with commodity hardware, a few guitars, and a refusal to accept that high-quality entropy must come from a closed silicon box or a $600 000 degree. The work is public so that others can inspect it, critique it, improve it, or simply see that the approach is possible.