{"id":14215,"date":"2026-01-11T16:13:46","date_gmt":"2026-01-11T15:13:46","guid":{"rendered":"https:\/\/nolle.engineering\/?page_id=14215"},"modified":"2026-09-28T11:45:31","modified_gmt":"2026-09-28T09:45:31","slug":"qes","status":"publish","type":"page","link":"https:\/\/nolle.engineering\/en\/qes\/","title":{"rendered":"Quantum Entropy Source"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Scope<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>Quantum Entropy Source (QES)<\/strong> generates, measures and publishes physical entropy from radioactive decay, a process whose timing is unpredictable in principle, not for lack of knowledge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The point is <strong>quantified entropy<\/strong>, not random-looking numbers: the system counts physical events, assesses their entropy offline against NIST\u2019s estimators, conditions the output with standard cryptography, and shows the count rate and the health of the source on a live dashboard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The goal is an <strong>auditable, openly observable entropy source<\/strong> for research and for integration into other systems.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Theory<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In this project, <em>entropy<\/em> is used in the <strong>information-theoretic and cryptographic sense<\/strong>:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Entropy is a quantitative measure of the unpredictability of a physical process.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">The system derives entropy from the <strong>timing uncertainty of radioactive decay events<\/strong>, a process governed by quantum mechanics and widely accepted as fundamentally unpredictable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cryptographic conditioning (SHA-256, HMAC) makes the output uniform; it cannot add entropy.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Entropy resides in the <strong>physical process<\/strong>, not in the output bits<\/li>\n\n\n\n<li>Output bitstreams <strong>carry entropy only if extraction is done correctly<\/strong><\/li>\n\n\n\n<li>Entropy is quantified conservatively using <strong>min-entropy bounds<\/strong><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">System overview<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Physical entropy source<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Naturally occurring radioactive material, sealed in a ceramic matrix<\/li>\n\n\n\n<li>Decay events detected using Geiger-M\u00fcller tubes<\/li>\n\n\n\n<li>High-resolution hardware timers capture event timestamps<\/li>\n\n\n\n<li>Timing jitter and arrival statistics form the raw entropy source<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The radioactive material is <strong>fixed, non-dispersible, and continuously monitored<\/strong>. External radiation exposure remains comparable to natural background levels.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Entropy processing pipeline<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Event detection<\/strong> (decay triggers)<\/li>\n\n\n\n<li><strong>High-resolution timestamp capture<\/strong><\/li>\n\n\n\n<li><strong>Raw entropy estimation<\/strong><\/li>\n\n\n\n<li><strong>Health monitoring and interference detection<\/strong><\/li>\n\n\n\n<li><strong>Cryptographic conditioning<\/strong><\/li>\n\n\n\n<li><strong>Distribution and visualization<\/strong><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Operational safety and transparency<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Operational safety is treated as a first-class design requirement.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Radiation levels are continuously monitored<\/li>\n\n\n\n<li>Alpha radiation remains fully contained within the material matrix<\/li>\n\n\n\n<li>The radioactive material is not accessible during normal operation<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Standards<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The design follows the NIST recommendations for random number generation (SP 800-90 series). The standard defines how a physical entropy source has to be documented, monitored and measured \u2014 we apply it end to end:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Source (SP 800-90B)<\/strong> \u2014 NIST\u2019s own <code>ea_iid<\/code> and <code>ea_non_iid<\/code> estimators on 3.0 million 8-bit symbols, each the low byte of an inter-event tick difference: <strong>7.92 bits of min-entropy per symbol<\/strong> on the IID track, which the suite\u2019s 10 000 permutation tests justify, with <strong>7.03<\/strong> as the conservative non-IID floor. Assessed in 2026-08 on v1 data captured in 2026-01; the equivalent run on v2 hardware has not been done. The tools\u2019 unedited output is <a href=\"https:\/\/gitlab.nolle.engineering\/qes\/records\/-\/tree\/main\/qualification\/entropy-assessment-v1\">published<\/a><\/li>\n\n\n\n<li><strong>Conditioning and combination (SP 800-90A, 800-90C)<\/strong> \u2014 a standard HMAC-based generator, with the physical source feeding every output bit. Neither has been assessed against the standard, and we publish nothing for either<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Formal certification by an accredited lab is a planned milestone. Two of the claims above come with the artefact behind them: the min-entropy assessment is published as the assessment tool\u2019s own unedited output, and the positive-control results below come with the raw bytes and a script that recovers their numbers from those bytes. The rest of the figures on this page \u2014 the conditioning test vectors, the full-entropy construction, the clock and battery specifications, the dose statements \u2014 are stated on our authority with nothing published to check them against, and should be read that way.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The symbol assessed is the low byte of an inter-event interval, so that figure is an entropy budget conditional on decay timing being unpredictable, rather than a demonstration of it. Run on a record made by a pulse generator with no decay in it at all, the same estimators give 7.22 bits against the decay source\u2019s 7.92 \u2014 and on the conservative track the generator wins, 7.10 against 7.03. That run is <a href=\"https:\/\/gitlab.nolle.engineering\/qes\/records\/-\/tree\/main\/qualification\/entropy-assessment-null-2026-09-21\">published<\/a> with the tools\u2019 own output, so the limit can be checked rather than taken.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Development roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">V1 prototype<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The V1 system demonstrates end-to-end entropy generation, monitoring, and dissemination.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Radioactive decay as the entropy source<\/li>\n\n\n\n<li>Single Geiger-M\u00fcller counter<\/li>\n\n\n\n<li>7.92 bits of min-entropy per 8-bit timestamp symbol, assessed with NIST\u2019s own SP 800-90B estimators on 3.0 million symbols \u2014 350\u2013400 bit\/s at typical count rates<\/li>\n\n\n\n<li>Basic health monitoring<\/li>\n\n\n\n<li>Real-time data output<\/li>\n\n\n\n<li>Public dashboard access<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">V1 architecture<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The architecture separates physical sensing, entropy estimation, conditioning, storage, and presentation into independent modules to allow verification and future scaling.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"738\" height=\"1024\" src=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/RNG_architecture-738x1024.png\" alt=\"\" class=\"wp-image-14223\" srcset=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/RNG_architecture-738x1024.png 738w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/RNG_architecture-216x300.png 216w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/RNG_architecture-768x1065.png 768w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/RNG_architecture-1107x1536.png 1107w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/RNG_architecture-9x12.png 9w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/RNG_architecture-700x971.png 700w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/RNG_architecture.png 1162w\" sizes=\"auto, (max-width: 738px) 100vw, 738px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Live dashboard<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The live dashboard exposes the internal state of the system in real time, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Event rate<\/li>\n\n\n\n<li>Entropy rate, as the event rate multiplied by a fixed figure \u2014 see the note below<\/li>\n\n\n\n<li>Tube voltage, and the entropy delivered per day<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The dashboard is at <a href=\"https:\/\/rng.nolle.engineering\/d\/ef9gqzg0mff28d\/random-number-generator\">rng.nolle.engineering<\/a> and is open without a login. Note on its entropy figure: it multiplies the live event rate by 7.9 bits per event rather than estimating entropy live, so anything that raises the count rate \u2014 contamination, interference \u2014 raises the number it shows. The entropy assessment is made offline on recorded data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><iframe loading=\"lazy\" style=\"border: 0px #ffffff none;\" src=\"https:\/\/rng.nolle.engineering\/d\/ef9gqzg0mff28d\/random-number-generator?orgId=1&amp;refresh=1s&amp;kiosk\" name=\"myiFrame\" width=\"100%\" height=\"1800px\" frameborder=\"1\" marginwidth=\"0px\" marginheight=\"0px\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">V2 development prototype<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">V2 is the prototype on our bench today. It carries the electronics of the field unit \u2014 three Quantum Entropy Modules, hardware timestamping and the clock assembly \u2014 and is where the design is being qualified.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Three independent Quantum Entropy Modules<\/strong> \u2014 each source and tube in its own shielded aluminium enclosure<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>About 1 kbit\/s from three modules<\/strong> at the present source loading, which is roughly 130 events per second<\/li>\n\n\n\n<li><strong>Clock assembly<\/strong> \u2014 atomic clock, GPS-disciplined oscillator and GNSS timing receiver<\/li>\n\n\n\n<li>Cross-module correlation monitor<\/li>\n\n\n\n<li><strong>Tamper-evident recording<\/strong> \u2014 the encoded byte stream is written to two sinks, the card and the link, from one encoder, so they are copies of each other rather than independent measurements; the hash chain and its signatures are what make either verifiable<\/li>\n\n\n\n<li><strong>Continuous self-tests<\/strong> \u2014 the health of each source is watched while it runs<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Precision timebase.<\/strong> Events are timestamped on a 150 MHz counter, so the quantisation step is 6.7 ns \u2014 a step size, not a timing accuracy, and far smaller than the detector\u2019s own contribution. The clock assembly carries a rubidium frequency standard, a GPS-disciplined oscillator and a satellite timing receiver so that the three can be compared against one another continuously and their offsets recorded. <strong>None of that has yet been demonstrated on a published record:<\/strong> in every record we have published the receiver had no fix, so no record here is tied to UTC at all. We do not claim metrological traceability \u2014 that needs an unbroken chain of calibrations with a stated uncertainty at each link, and we have published none \u2014 and the clock assembly\u2019s own stability figures are not published either.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2384\" height=\"1568\" src=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qem-board-render.png\" alt=\"Custom circuit board for the Quantum Entropy Module, 3D render\" class=\"wp-image-16312\" srcset=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qem-board-render.png 2384w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qem-board-render-300x197.png 300w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qem-board-render-1024x674.png 1024w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qem-board-render-768x505.png 768w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qem-board-render-1536x1010.png 1536w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qem-board-render-2048x1347.png 2048w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qem-board-render-18x12.png 18w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qem-board-render-1320x868.png 1320w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qem-board-render-700x460.png 700w\" sizes=\"auto, (max-width: 2384px) 100vw, 2384px\" \/><figcaption class=\"wp-element-caption\">Quantum Entropy Module board, in development.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">V3 field unit (QES-3)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">V3 packages the V2 electronics into a field unit that runs unattended, remotely or on site, and records everything it measures. <strong>It is designed and not yet built.<\/strong> The electronics are the ones running on the bench today; the sealed enclosure, the shield and the source assembly exist as a design study, and building them is project work rather than something we have on a shelf. The images below are from that study.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ruggedized, sealed case<\/strong> \u2014 mechanical protection, water seal and thermal insulation<\/li>\n\n\n\n<li><strong>Radiation shield<\/strong> \u2014 around the three modules<\/li>\n\n\n\n<li><strong>Battery operation<\/strong> \u2014 then site power<\/li>\n\n\n\n<li><strong>Wireless link<\/strong> \u2014 live data and remote access<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">V3 architecture<\/h3>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6abefd91c9f73&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6abefd91c9f73\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"613\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qes-3-architecture-2026-09-1024x613.png\" alt=\"QES-3 architecture block diagram\" class=\"wp-image-16226\" srcset=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qes-3-architecture-2026-09-1024x613.png 1024w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qes-3-architecture-2026-09-300x180.png 300w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qes-3-architecture-2026-09-768x460.png 768w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qes-3-architecture-2026-09-1536x920.png 1536w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qes-3-architecture-2026-09-2048x1226.png 2048w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qes-3-architecture-2026-09-18x12.png 18w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qes-3-architecture-2026-09-1320x790.png 1320w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/09\/qes-3-architecture-2026-09-700x419.png 700w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">QES-3 architecture: three Quantum Entropy Modules, clock assembly with GNSS time reference, data processing unit and battery in a shielded, sealed case<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"875\" height=\"1024\" src=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/quantum_entropy_source_top_assembly-scaled-e1768937339837-875x1024.png\" alt=\"\" class=\"wp-image-14276\" srcset=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/quantum_entropy_source_top_assembly-scaled-e1768937339837-875x1024.png 875w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/quantum_entropy_source_top_assembly-scaled-e1768937339837-256x300.png 256w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/quantum_entropy_source_top_assembly-scaled-e1768937339837-768x899.png 768w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/quantum_entropy_source_top_assembly-scaled-e1768937339837-10x12.png 10w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/quantum_entropy_source_top_assembly-scaled-e1768937339837-700x819.png 700w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/quantum_entropy_source_top_assembly-scaled-e1768937339837.png 1156w\" sizes=\"auto, (max-width: 875px) 100vw, 875px\" \/><figcaption class=\"wp-element-caption\">QES-3 mechanical layout, design study<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"605\" src=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/qe_modul_subassy-scaled-e1768937271308-1024x605.png\" alt=\"\" class=\"wp-image-14275\" srcset=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/qe_modul_subassy-scaled-e1768937271308-1024x605.png 1024w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/qe_modul_subassy-scaled-e1768937271308-300x177.png 300w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/qe_modul_subassy-scaled-e1768937271308-768x453.png 768w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/qe_modul_subassy-scaled-e1768937271308-1536x907.png 1536w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/qe_modul_subassy-scaled-e1768937271308-18x12.png 18w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/qe_modul_subassy-scaled-e1768937271308-1320x779.png 1320w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/qe_modul_subassy-scaled-e1768937271308-700x413.png 700w, https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/qe_modul_subassy-scaled-e1768937271308.png 1660w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Quantum Entropy Module, design study<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Verifiable records<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every instrument signs what it records, as it records it. At intervals it emits an anchor carrying a SHA-256 hash chained over every byte written since the last one, and a secure element signs that anchor with a key generated on its own die. A published record can therefore be checked by anyone, against public keys alone, with no part of the check resting on our word.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Checking one takes a single file and a Python interpreter:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">curl -O https:\/\/gitlab.nolle.engineering\/qes\/tools\/-\/raw\/main\/qes.py\ngit clone https:\/\/gitlab.nolle.engineering\/qes\/records.git\npython3 qes.py verify records\/qualification\/20260921T074905Z_null\/capture.pkt --pubkey 04b92e\u2026<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Exit status 0 means the chain holds, every signature verifies, the secure element\u2019s counter is consistent and the byte offsets match the file. <code>--tamper-test<\/code> flips a bit and shows where it is caught. Each record also carries a proof that its hash was committed to a public blockchain, so the date it existed by is checkable without trusting us.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What the signature covers.<\/strong> A recording starts and stops between anchors, so a prefix and a tail of each file sit outside the chain \u2014 30.6&nbsp;%, 6.9&nbsp;% and 13.7&nbsp;% of the three records published. The verifier prints the covered range and the analysis can be restricted to it; sealing a record end to end needs a firmware change we have not made.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Measured performance<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every figure below comes with the data behind it in the public dataset.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>what<\/th><th>measured<\/th><th>on<\/th><\/tr><\/thead><tbody><tr><td>Event timestamp resolution<\/td><td>6.7 ns quantisation step, hardware capture<\/td><td>150 MHz counter<\/td><\/tr><tr><td>Timestamp fidelity against an external schedule<\/td><td>1.9\u20132.4 ns RMS, unchanged under load<\/td><td>qualification campaign<\/td><\/tr><tr><td>Event accounting<\/td><td>exact \u2014 sent equals archived, event for event<\/td><td>2.4 M events per channel, 2 h 40 m<\/td><\/tr><tr><td>Clock stability<\/td><td>7\u00d710<sup>\u221210<\/sup> at 128 s; drift-dominated beyond<\/td><td>12 h continuous<\/td><\/tr><tr><td>Source count-rate stationarity<\/td><td>Fano 0.947\u20130.957 at 1 s; nothing above Poisson anywhere<\/td><td>3 h of real decay<\/td><\/tr><tr><td>Min-entropy per 8-bit symbol<\/td><td>7.92 (IID track), 7.03 conservative floor<\/td><td>3.0 M symbols, NIST SP 800-90B<\/td><\/tr><tr><td>Detection sensitivity<\/td><td>\u03b5 = 0.003 recovered at z = 17 in 16 min<\/td><td>signed positive control<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Detection sensitivity, in full<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">An instrument that reports no effect is only interesting if it would have reported one that was there. A known bias \u03b5 is injected into the timing of the events and the analysis is asked to recover it. Each interval becomes one bit, 1 if it is longer than the running median of the previous 64 on that channel; \u03b5\u0302 is the pooled proportion of ones minus one half.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>injected \u03b5<\/th><th>duration<\/th><th>bits<\/th><th>recovered \u03b5\u0302<\/th><th>\u03c3<\/th><th>z<\/th><\/tr><\/thead><tbody><tr><td>0.01<\/td><td>87 s<\/td><td>66 027<\/td><td>+0.00923<\/td><td>6.3\u00d710<sup>\u22124<\/sup><\/td><td>+14.5<\/td><\/tr><tr><td>0.003<\/td><td>16 min<\/td><td>797 319<\/td><td>+0.00298<\/td><td>1.7\u00d710<sup>\u22124<\/sup><\/td><td>+17.3<\/td><\/tr><tr><td>0 (null)<\/td><td>12 min<\/td><td>625 488<\/td><td>\u22120.00026<\/td><td>2.0\u00d710<sup>\u22124<\/sup><\/td><td>\u22121.3<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Recovered at 92 % and 99 % of nominal. \u03c3 is measured by permutation on each record rather than assumed \u2014 these bits are not independent, and the closed-form error bar overstates it threefold.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Resolving \u03b5 = 10<sup>\u22124<\/sup>, the smallest effect in the literature this instrument is built to test, needs about two days of continuous running at three standard errors and six at five, at the rate three modules give today.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The limits that go with those numbers.<\/strong> The control injects its bias at the capture input with the detector modules disconnected, which is the only way to know the injected size exactly \u2014 so it measures the instrument from the capture pin onward, and a source-in-the-loop qualification is still to come. The statistic cannot separate a change in event timing from a change in event rate, so rate structure at the 64-interval timescale would imitate a signal; the source\u2019s own rate has been measured against that and shows nothing, but a detector in the field faces interference and disturbance that a bench does not.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Explore it yourself<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The instrument, its records and the whole post-processing chain are public. There is one tool, one file, needing Python and nothing else for the checks and NumPy for the analysis.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>qes verify<\/code><\/strong> \u2014 is this record the instrument\u2019s, unaltered? Includes a self-test that flips a bit and shows you where it is caught, and where it is not<\/li>\n\n\n\n<li><strong><code>qes export<\/code><\/strong> \u2014 turn a record into an event table and a per-second table of clock quality and environment, with a provenance file naming the source record and the signed byte range<\/li>\n\n\n\n<li><strong><code>qes recompute<\/code><\/strong> \u2014 recover the published statistics from the raw bytes, measure the error bar by permutation, and sweep the rate confound across timescales<\/li>\n\n\n\n<li><strong><code>qes symbols<\/code><\/strong> \u2014 write the input for a NIST SP 800-90B entropy assessment, with the build recipe and a complete published run to check your numbers against<\/li>\n\n\n\n<li><strong><code>qes check<\/code><\/strong> \u2014 validate a record against the published record format, which is machine-readable and normative<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The dataset holds signed positive-control records with everything derived from them, three hours of real decay, the clock stability measurement, and two entropy assessments including one run deliberately against ourselves. Start anywhere:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/gitlab.nolle.engineering\/qes\/records\">Records and test vectors<\/a> \u2014 CC BY 4.0<\/li>\n\n\n\n<li><a href=\"https:\/\/gitlab.nolle.engineering\/qes\/tools\">Tool<\/a> \u2014 MIT, one file<\/li>\n\n\n\n<li><a href=\"https:\/\/nolle.engineering\/en\/qes\/record-format\/\">Record format<\/a> \u2014 field by field, with worked byte-level examples<\/li>\n\n\n\n<li><a href=\"https:\/\/nolle.engineering\/en\/.well-known\/qes-root.json\/\">Signing root<\/a> \u2014 the key that certifies which instruments are ours<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If something here does not reproduce, we would like to know.<\/p>","protected":false},"excerpt":{"rendered":"<p>Scope The Quantum Entropy Source (QES) generates, measures and publishes physical entropy from radioactive decay, a process whose timing is unpredictable in principle, not for lack of knowledge. The point is quantified entropy, not random-looking numbers: the system counts physical events, assesses their entropy offline against NIST\u2019s estimators, conditions the output with standard cryptography, and&#8230; <\/p>\n<div class=\"link-more\"><a href=\"https:\/\/nolle.engineering\/en\/qes\/\">Read More<\/a><\/div>","protected":false},"author":2,"featured_media":14276,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-14215","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Quantum Entropy Source - nolle.engineering<\/title>\n<meta name=\"description\" content=\"Quantum entropy source for cryptographic random-number generation. Built on shot-noise sampling; certified bit rate suitable for HSM applications.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nolle.engineering\/en\/qes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quantum Entropy Source - nolle.engineering\" \/>\n<meta property=\"og:description\" content=\"Quantum entropy source for cryptographic random-number generation. Built on shot-noise sampling; certified bit rate suitable for HSM applications.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nolle.engineering\/en\/qes\/\" \/>\n<meta property=\"og:site_name\" content=\"nolle.engineering\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-28T09:45:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/quantum_entropy_source_top_assembly-scaled-e1768937339837.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1156\" \/>\n\t<meta property=\"og:image:height\" content=\"1353\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nolle.engineering\/qes\/\",\"url\":\"https:\/\/nolle.engineering\/qes\/\",\"name\":\"Quantum Entropy Source - nolle.engineering\",\"isPartOf\":{\"@id\":\"https:\/\/nolle.engineering\/#website\"},\"datePublished\":\"2026-01-11T15:13:46+00:00\",\"dateModified\":\"2026-09-28T09:45:31+00:00\",\"description\":\"Quantum entropy source for cryptographic random-number generation. Built on shot-noise sampling; certified bit rate suitable for HSM applications.\",\"breadcrumb\":{\"@id\":\"https:\/\/nolle.engineering\/qes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nolle.engineering\/qes\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nolle.engineering\/qes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/nolle.engineering\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quantum Entropy Source\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/nolle.engineering\/#website\",\"url\":\"https:\/\/nolle.engineering\/\",\"name\":\"nolle.engineering\",\"description\":\"explore \/ design \/ make\",\"publisher\":{\"@id\":\"https:\/\/nolle.engineering\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/nolle.engineering\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/nolle.engineering\/#organization\",\"name\":\"nolle.engineering\",\"url\":\"https:\/\/nolle.engineering\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nolle.engineering\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/04\/ne-logo-white.png\",\"contentUrl\":\"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/04\/ne-logo-white.png\",\"width\":2311,\"height\":1480,\"caption\":\"nolle.engineering\"},\"image\":{\"@id\":\"https:\/\/nolle.engineering\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Quantum Entropy Source - nolle.engineering","description":"Quantum entropy source for cryptographic random-number generation. Built on shot-noise sampling; certified bit rate suitable for HSM applications.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nolle.engineering\/en\/qes\/","og_locale":"en_US","og_type":"article","og_title":"Quantum Entropy Source - nolle.engineering","og_description":"Quantum entropy source for cryptographic random-number generation. Built on shot-noise sampling; certified bit rate suitable for HSM applications.","og_url":"https:\/\/nolle.engineering\/en\/qes\/","og_site_name":"nolle.engineering","article_modified_time":"2026-09-28T09:45:31+00:00","og_image":[{"width":1156,"height":1353,"url":"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/01\/quantum_entropy_source_top_assembly-scaled-e1768937339837.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/nolle.engineering\/qes\/","url":"https:\/\/nolle.engineering\/qes\/","name":"Quantum Entropy Source - nolle.engineering","isPartOf":{"@id":"https:\/\/nolle.engineering\/#website"},"datePublished":"2026-01-11T15:13:46+00:00","dateModified":"2026-09-28T09:45:31+00:00","description":"Quantum entropy source for cryptographic random-number generation. Built on shot-noise sampling; certified bit rate suitable for HSM applications.","breadcrumb":{"@id":"https:\/\/nolle.engineering\/qes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nolle.engineering\/qes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nolle.engineering\/qes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/nolle.engineering\/"},{"@type":"ListItem","position":2,"name":"Quantum Entropy Source"}]},{"@type":"WebSite","@id":"https:\/\/nolle.engineering\/#website","url":"https:\/\/nolle.engineering\/","name":"nolle.engineering","description":"explore \/ design \/ make","publisher":{"@id":"https:\/\/nolle.engineering\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nolle.engineering\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nolle.engineering\/#organization","name":"nolle.engineering","url":"https:\/\/nolle.engineering\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nolle.engineering\/#\/schema\/logo\/image\/","url":"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/04\/ne-logo-white.png","contentUrl":"https:\/\/nolle.engineering\/wp-content\/uploads\/2026\/04\/ne-logo-white.png","width":2311,"height":1480,"caption":"nolle.engineering"},"image":{"@id":"https:\/\/nolle.engineering\/#\/schema\/logo\/image\/"}}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nolle.engineering\/en\/wp-json\/wp\/v2\/pages\/14215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nolle.engineering\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nolle.engineering\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nolle.engineering\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nolle.engineering\/en\/wp-json\/wp\/v2\/comments?post=14215"}],"version-history":[{"count":43,"href":"https:\/\/nolle.engineering\/en\/wp-json\/wp\/v2\/pages\/14215\/revisions"}],"predecessor-version":[{"id":16317,"href":"https:\/\/nolle.engineering\/en\/wp-json\/wp\/v2\/pages\/14215\/revisions\/16317"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nolle.engineering\/en\/wp-json\/wp\/v2\/media\/14276"}],"wp:attachment":[{"href":"https:\/\/nolle.engineering\/en\/wp-json\/wp\/v2\/media?parent=14215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}