
अपरंपरागत हार्डवेयर स्रोतों से ओपन-सोर्स एंट्रॉपी हार्वेस्टिंग। Rust + Python SDK.
एन्ट्रॉपी अनुसंधान, सत्यापन और क्रिप्टोग्राफिक तैनाती के लिए एक कार्यप्रवाह।
Amenti Labs द्वारा
# Install
cargo install openentropy-cli
# Discover entropy sources on your machine
openentropy scan
# Benchmark all fast sources
openentropy bench
# Output 64 random hex bytes
openentropy stream --format hex --bytes 64
# Live TUI dashboard
openentropy monitor
डिफ़ॉल्ट रूप से, केवल तेज़ स्रोत (<2s) का उपयोग किया जाता है। धीमे स्रोतों (DNS, TCP, GPU, BLE) को शामिल करने के लिए
--allपास करें। संगतता के लिए स्थितीय उपनामallभी स्वीकार किया जाता है।
अधिकांश OpenEntropy स्रोत होस्ट मशीन से ही आते हैं। OpenEntropy बाहरी हार्डवेयर उपकरणों का भी समर्थन करता है जब वे संलग्न और खोजने योग्य हों:
qcicada स्रोत के रूप में उजागर। OpenEntropy डिवाइस के क्वांटम आउटपुट को पढ़ सकता है और ऑन-होस्ट स्रोतों के साथ बेंचमार्क, विश्लेषण, रिकॉर्ड या तुलना कर सकता है। डिवाइस के अपने आउटपुट मोड raw, sha256, और samples पर मैप होते हैं, और OpenEntropy अब qcicada 0.2.2 से QCicada के फ्रेश-स्टार्ट कंटीन्यूअस-मोड हेल्पर का उपयोग करता है, इसलिए यह कंटीन्यूअस मोड में प्रवेश करने के बाद एक बार पहले से बफ़र किए गए डिवाइस इनपुट को त्याग देता है, बजाय पुराने क्यू किए गए बाइट्स से पहली रीड परोसने के। QCicada मैनुअल देखें।pip install openentropy
from openentropy import EntropyPool, detect_available_sources
sources = detect_available_sources()
print(f"{len(sources)} entropy sources available")
pool = EntropyPool.auto()
source = sources[0]["name"]
data = pool.get_source_bytes(source, 256, conditioning="sha256")
स्रोत से निर्माण (नेटिव एक्सटेंशन):
git clone https://github.com/amenti-labs/openentropy.git && cd openentropy
pip install maturin
maturin develop
सुरक्षा इंजीनियर एन्ट्रॉपी गुणवत्ता को मान्य करने और CSPRNGs को बीज करने के लिए OpenEntropy का उपयोग करते हैं:
openentropy analyze --profile security --output audit.md
शोधकर्ता कच्चे शोर विशेषताओं का अध्ययन करने के लिए OpenEntropy का उपयोग करते हैं:
openentropy analyze --profile deep --output analysis.json
सुरक्षा इंजीनियर CSPRNGs को बीज करते हैं, कुंजियाँ उत्पन्न करते हैं, और स्वतंत्र हार्डवेयर एन्ट्रॉपी के साथ /dev/urandom को पूरक करते हैं। SHA-256 वातानुकूलित आउटपुट (--conditioning sha256, डिफ़ॉल्ट) क्रिप्टोग्राफिक गुणवत्ता वाले यादृच्छिक बाइट्स उत्पन्न करता है। security प्रोफ़ाइल एक झंडे में NIST परीक्षण बैटरी, मिन-एन्ट्रॉपी ब्रेकडाउन और SHA-256 कंडीशनिंग को सक्षम करती है।
शोधकर्ता हार्डवेयर उप-प्रणालियों की कच्ची शोर विशेषताओं का अध्ययन करते हैं। प्रत्येक स्रोत से वास्तविक शोर संकेत को संरक्षित करने वाले अनव्हाइटेड, अनकंडीशनड बाइट्स प्राप्त करने के लिए --conditioning raw पास करें। deep प्रोफ़ाइल 100K नमूने, क्रॉस-सहसंबंध और PEAR-शैली परीक्षण विश्लेषण को सक्षम करती है।
कच्चा मोड सक्षम करता है:
अधिकांश यादृच्छिक संख्या जनरेटर छद्म-यादृच्छिक हैं — एक बार बीजित नियतात्मक एल्गोरिदम। OpenEntropy आपके हार्डवेयर से वास्तविक भौतिक शोर लगातार एकत्र करता है:
पूल स्वतंत्र स्ट्रीम को XOR-संयोजित करता है। कोई एकल स्रोत विफलता पूल से समझौता नहीं कर सकती।
कंडीशनिंग वैकल्पिक और कॉन्फ़िगरेबल है। CLI पर --conditioning या HTTP API पर ?conditioning= का उपयोग करें:
| मोड | फ़्लैग | विवरण |
|---|---|---|
| SHA-256 (डिफ़ॉल्ट) | --conditioning sha256 | SHA-256 कंडीशनिंग। क्रिप्टोग्राफिक गुणवत्ता आउटपुट। |
| वॉन न्यूमैन | --conditioning vonneumann | केवल डीबायसिंग — पूर्वाग्रह हटाता है जबकि कच्ची संकेत संरचना को अधिक संरक्षित करता है। |
| कच्चा | --conditioning raw | कोई प्रसंस्करण नहीं। शून्य व्हाइटनिंग के साथ स्रोत बाइट्स — अनुसंधान के लिए वास्तविक हार्डवेयर शोर संकेत को संरक्षित करता है। |
कच्चा मोड ही OpenEntropy को अनुसंधान के लिए उपयोगी बनाता है। अधिकांश HWRNG API DRBG पोस्ट-प्रोसेसिंग चलाते हैं जो प्रत्येक स्रोत को एकसमान यादृच्छिक बाइट्स जैसा दिखता है, जो शोधकर्ताओं को आवश्यक जानकारी को नष्ट कर देता है। कच्चा आउटपुट प्रति-स्रोत शोर संरचना को संरक्षित करता है: पूर्वाग्रह, ऑटोसहसंबंध, वर्णक्रमीय विशेषताएं और क्रॉस-स्रोत सहसंबंध। विवरण के लिए कंडीशनिंग देखें।
| डॉक्युमेंट | विवरण |
|---|---|
| स्रोत कैटलॉग | भौतिकी स्पष्टीकरण और प्लेटफ़ॉर्म नोट्स के साथ स्रोत कैटलॉग |
| CLI संदर्भ | पूर्ण कमांड संदर्भ और उदाहरण |
| कंडीशनिंग | कच्चा बनाम वॉन न्यूमैन बनाम SHA-256 कंडीशनिंग मोड |
| परीक्षण विश्लेषण पद्धति | PEAR-शैली 200-बिट परीक्षण, कैलिब्रेशन गेट और संदर्भ |
| टेलीमेट्री मॉडल | प्रायोगिक telemetry_v1 संदर्भ मॉडल और एकीकरण बिंदु |
| Rust API संदर्भ | कोर Rust API सतह |
| आर्किटेक्चर | क्रेट संरचना और डिज़ाइन निर्णय |
| Python SDK | PyO3 बाइंडिंग और Python API संदर्भ |
| उदाहरण | Rust और Python कोड उदाहरण |
| समस्या निवारण | सामान्य समस्याएँ और समाधान |
| सुरक्षा | खतरा मॉडल और जिम्मेदार प्रकटीकरण |
विस्तारित सांख्यिकीय विश्लेषण रोडमैप और विधि सूची को इसके द्वारा सूचित किया गया था:
हम ओपन-सोर्स कार्य की सराहना करते हैं जिसने इस तुलनात्मक QRNG/PRNG विश्लेषण सतह को आकार देने में मदद की।
वर्तमान स्रोत रजिस्ट्री 13 तंत्र-आधारित श्रेणियों में फैली हुई है; वास्तविक उपलब्धता प्लेटफ़ॉर्म के अनुसार भिन्न होती है:
| श्रेणी | गणना |
|---|---|
| थर्मल | 4 |
| समय | 7 |
| शेड्यूलिंग | 6 |
| IO | 6 |
| IPC | 4 |
| माइक्रोआर्किटेक्चर | 16 |
| GPU | 3 |
| नेटवर्क | 3 |
| सिस्टम | 6 |
| सिग्नल | 3 |
| सेंसर | 4 |
| क्वांटम | 1 |
पूर्ण प्रति-स्रोत विवरण, प्लेटफ़ॉर्म उपलब्धता और भौतिकी नोट्स के लिए, स्रोत कैटलॉग देखें।
वर्तमान में समर्थित बाहरी हार्डवेयर:
qcicada — Crypta Labs QCicada USB QRNG (मैनुअल)पूर्ण कमांड संदर्भ और उदाहरणों के लिए, CLI संदर्भ देखें।
सबसे अधिक उपयोग किए जाने वाले कार्यप्रवाह:
openentropy scan
openentropy bench
openentropy stream --format hex --bytes 64
openentropy analyze --profile security # NIST battery + entropy + sha256
openentropy analyze --profile deep # 100K + forensic + cross-corr + trials
openentropy record clock_jitter --duration 30s
openentropy sessions sessions/<id> --profile deep
openentropy compare sessions/<id-a> sessions/<id-b> --profile deep
सेशन पर, प्रोफ़ाइल प्रीसेट केवल तभी लागू होते हैं जब कोई विशिष्ट सत्र पथ प्रदान किया जाता है। बिना पथ के openentropy sessions हमेशा सूची मोड में रहता है।
PEAR-शैली परीक्षण पद्धति संदर्भ (200-बिट परीक्षण, टर्मिनल Z, भारित Stouffer संरचना, कैलिब्रेशन गेटिंग) परीक्षण विश्लेषण पद्धति में प्रलेखित हैं।
[dependencies]
openentropy-core = "0.12"
use openentropy_core::{ConditioningMode, EntropyPool, detect_available_sources};
let sources = detect_available_sources();
println!("{} sources available", sources.len());
let pool = EntropyPool::auto();
let source = pool.source_names()[0].clone();
let bytes = pool
.get_source_bytes(&source, 256, ConditioningMode::Sha256)
.unwrap();
let health = pool.health_report();
प्रोग्रामेटिक रूप से एन्ट्रॉपी डेटा का विश्लेषण और तुलना करें:
use openentropy_core::{full_analysis, compare, trial_analysis};
let data = pool.get_source_raw_bytes(&source, 5000).unwrap();
// Per-source statistical analysis
let analysis = full_analysis(&source, &data);
println!("Shannon entropy: {:.4} bits/byte", analysis.shannon_entropy);
// Differential comparison of two streams
let other = pool.get_source_raw_bytes(&source, 5000).unwrap();
let diff = compare("stream_a", &data, "stream_b", &other);
// PEAR-style trial analysis
let trials = trial_analysis(&data, &Default::default());
println!("Terminal Z: {:.4}, p = {:.4}", trials.terminal_z, trials.terminal_p_value);
कैओस सिद्धांत विश्लेषण (वास्तविक यादृच्छिकता को नियतात्मक अराजकता से अलग करें):
use openentropy_core::chaos::chaos_analysis;
let result = chaos_analysis(&data);
println!("Hurst H={:.4}, Lyapunov λ={:.4}, D₂={:.4}",
result.hurst.hurst_exponent,
result.lyapunov.lyapunov_exponent,
result.correlation_dimension.dimension);
6 क्रेट्स के साथ Cargo वर्कस्पेस:
| क्रेट | विवरण |
|---|---|
openentropy-core | कोर लाइब्रेरी — स्रोत, पूल, कंडीशनिंग |
openentropy-cli | TUI डैशबोर्ड के साथ CLI बाइनरी |
openentropy-server | Axum HTTP एन्ट्रॉपी सर्वर |
openentropy-tests | NIST SP 800-22 प्रेरित परीक्षण बैटरी |
openentropy-python | PyO3/maturin के माध्यम से Python बाइंडिंग |
openentropy-wasm | WebAssembly/ब्राउज़र एन्ट्रॉपी क्रेट |
flowchart TD
Sources[Sources 63] --> Raw[raw samples]
Raw --> Pool[Entropy Pool XOR combine]
Pool --> Modes{Conditioning mode}
Modes -->|default| Sha[sha256]
Modes --> Vn[vonneumann]
Modes -->|passthrough| RawMode[raw]
Sha --> Output[Output surfaces]
Vn --> Output
RawMode --> Output
Output --> Rust[Rust API]
Output --> CLI[CLI and TUI]
Output --> Http[HTTP Server]
Output --> Pipe[Named Pipe]
Output --> Py[Python SDK]| प्लेटफ़ॉर्म | स्रोत | नोट्स |
|---|---|---|
| MacBook (M-series) | 63/63 | पूर्ण सूट — WiFi, BLE, कैमरा, माइक |
| Mac Mini / Studio / Pro | 50–55 | कुछ मॉडलों पर कोई अंतर्निहित कैमरा, माइक नहीं |
| Intel Mac | ~20 | कुछ सिलिकॉन/माइक्रोआर्क स्रोत ARM-विशिष्ट हैं |
| Linux | 12–15 | समय, नेटवर्क, डिस्क, प्रक्रिया स्रोत + NVMe पासथ्रू |
लाइब्रेरी रनटाइम पर उपलब्ध हार्डवेयर का पता लगाती है और केवल काम करने वाले स्रोतों को सक्रिय करती है।
Rust 1.85+ और macOS या Linux की आवश्यकता है।
git clone https://github.com/amenti-labs/openentropy.git
cd openentropy
cargo build --release --workspace --exclude openentropy-python
cargo test --workspace --exclude openentropy-python
cargo install --path crates/openentropy-cli
pip install maturin
maturin develop --release
python3 -c "from openentropy import EntropyPool; print(EntropyPool.auto().get_random_bytes(16).hex())"
CONTRIBUTING.md देखें। विचार:
MIT — कॉपीराइट © 2026 Amenti Labs