
حصاد الإنتروبيا مفتوح المصدر من مصادر أجهزة غير تقليدية. SDK بلغة Rust و Python.
سير عمل واحد لأبحاث الإنتروبيا والتحقق والاستخدام التشفيري.
بواسطة Amenti Labs
# تثبيت
cargo install openentropy-cli
# اكتشاف مصادر الإنتروبيا على جهازك
openentropy scan
# قياس أداء جميع المصادر السريعة
openentropy bench
# إخراج 64 بايت عشوائي بصيغة سداسية عشرية
openentropy stream --format hex --bytes 64
# لوحة تحكم تفاعلية في الوضع الطرفي
openentropy monitor
يستخدم النظام افتراضيًا المصادر السريعة فقط (أقل من 2 ثانية). استخدم
--allلتضمين المصادر الأبطأ (DNS، TCP، GPU، BLE). يمكن أيضًا استخدام الوسيطallللتوافق.
معظم مصادر OpenEntropy تأتي من الجهاز المضيف نفسه. كما تدعم OpenEntropy الأجهزة الخارجية عند توصيلها واكتشافها:
qcicada. يمكن لـ OpenEntropy قراءة المخرجات الكمومية للجهاز وقياس أدائها وتحليلها وتسجيلها أو مقارنتها مع المصادر المحلية. تتوافق أوضاع الإخراج الخاصة بالجهاز مع raw وsha256 وsamples، ويستخدم OpenEntropy الآن مساعد التشغيل المستمر الجديد من مكتبة qcicada 0.2.2، الذي يتجاهل البيانات المخزنة مؤقتًا مرة واحدة عند بدء الوضع المستمر بدلاً من إرجاع أول قراءة من بايتات قديمة في قائمة الانتظار. راجع دليل QCicada.pip install openentropy
from openentropy import EntropyPool, detect_available_sources
sources = detect_available_sources()
print(f"{len(sources)} مصادر إنتروبيا متاحة")
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
مهندسو الأمان يستخدمون OpenEntropy للتحقق من جودة الإنتروبيا وتغذية المولدات العشوائية الآمنة تشفيريًا (CSPRNGs):
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. لا يمكن لأي فشل في مصدر واحد أن يخرق التجمع.
التكييف اختياري وقابل للتخصيص. استخدم --conditioning في CLI أو ?conditioning= في واجهة HTTP API:
| الوضع | العلم | الوصف |
|---|---|---|
| SHA-256 (افتراضي) | --conditioning sha256 | تكييف SHA-256. مخرجات بجودة تشفيرية. |
| Von Neumann | --conditioning vonneumann | إزالة التحيز فقط — يزيل التحيز مع الحفاظ على هيكل الإشارة الخام قدر الإمكان. |
| خام | --conditioning raw | بدون معالجة. بايتات المصدر بدون تبييض — يحافظ على إشارة ضوضاء الأجهزة الفعلية للبحث. |
الوضع الخام هو ما يجعل OpenEntropy مفيدًا للبحث. معظم واجهات HWRNG API تقوم بعمليات ما بعد معالجة DRBG تجعل كل مصدر يبدو كبايتات عشوائية متناسقة، مما يدمر المعلومات التي يحتاجها الباحثون. المخرجات الخام تحافظ على هيكل الضوضاء لكل مصدر: التحيز، الارتباط الذاتي، الخصائص الطيفية، والارتباطات بين المصادر. راجع التكييف للتفاصيل.
| المستند | الوصف |
|---|---|
| كتالوج المصادر | كتالوج المصادر مع شروحات فيزيائية وملاحظات عن المنصات |
| مرجع CLI | مرجع كامل للأوامر والأمثلة |
| التكييف | أوضاع التكييف: خام مقابل VonNeumann مقابل SHA-256 |
| منهجية تحليل التجارب | تجارب 200-بت على نمط PEAR، بوابة المعايرة، والمراجع |
| نموذج القياس عن بعد | نموذج تجريبي لسياق القياس عن بعد v1 ونقاط التكامل |
| مرجع Rust API | واجهة Rust الأساسية |
| الهندسة المعمارية | هيكل الحزمة وقرارات التصميم |
| SDK بايثون | روابط PyO3 ومرجع API بايثون |
| أمثلة | أمثلة برمجية بلغة Rust و Python |
| استكشاف الأخطاء وإصلاحها | المشكلات الشائعة والحلول |
| الأمان | نموذج التهديد والإبلاغ المسؤول |
تم إثراء خارطة الطريق لتحليل الإحصاءات الموسع وقائمة المنهجيات من خلال:
نحن نقدر العمل مفتوح المصدر الذي ساعد في تشكيل سطح التحليل المقارن بين QRNG و PRNG هذا.
يسجل سجل المصادر الحالي 13 فئة مبنية على الآليات؛ التوفر الفعلي يختلف حسب المنصة:
| الفئة | العدد |
|---|---|
| حراري | 4 |
| توقيت | 7 |
| جدولة | 6 |
| إدخال/إخراج | 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 + إنتروبيا + sha256
openentropy analyze --profile deep # 100K + تحليل جنائي + ارتباط متبادل + تجارب
openentropy record clock_jitter --duration 30s
openentropy sessions sessions/<id> --profile deep
openentropy compare sessions/<id-a> sessions/<id-b> --profile deep
في sessions، يتم تطبيق الإعدادات المسبقة للملف الشخصي فقط عند تقديم مسار جلسة محدد. 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();
// تحليل إحصائي لكل مصدر
let analysis = full_analysis(&source, &data);
println!("Shannon entropy: {:.4} bits/byte", analysis.shannon_entropy);
// مقارنة تفاضلية بين تدفقين
let other = pool.get_source_raw_bytes(&source, 5000).unwrap();
let diff = compare("stream_a", &data, "stream_b", &other);
// تحليل تجارب نمط PEAR
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);
مساحة عمل Cargo تحتوي على 6 حزم:
| الحزمة | الوصف |
|---|---|
openentropy-core | المكتبة الأساسية — المصادر، التجمع، التكييف |
openentropy-cli | ثنائي CLI مع لوحة تحكم TUI |
openentropy-server | خادم HTTP إنتروبيا بإطار Axum |
openentropy-tests | بطارية اختبار مستوحاة من NIST SP 800-22 |
openentropy-python | روابط بايثون عبر PyO3/maturin |
openentropy-wasm | حزمة إنتروبيا WebAssembly/المتصفح |
flowchart TD
Sources[مصادر 63] --> Raw[عينات خام]
Raw --> Pool[تجمع الإنتروبيا: دمج XOR]
Pool --> Modes{وضع التكييف}
Modes -->|افتراضي| Sha[sha256]
Modes --> Vn[vonneumann]
Modes -->|تمرير| RawMode[خام]
Sha --> Output[أسطح الإخراج]
Vn --> Output
RawMode --> Output
Output --> Rust[Rust API]
Output --> CLI[CLI و TUI]
Output --> Http[خادم HTTP]
Output --> Pipe[أنبوب مسمى]
Output --> Py[Python SDK]| المنصة | المصادر | ملاحظات |
|---|---|---|
| MacBook (سلسلة M) | 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