
rscrypto v0.9.0
تشفير Rust بدون أي تبعيات مطلوبة: دوال التجزئة، والمجاميع الاختبارية، وMACs، وKDFs، وتجزئة كلمات المرور، وAEADs، والتوقيعات، وRSA، وتبادل المفاتيح، وML-KEM، وML-DSA. مرجع Rust محمول مع خلفيات SIMD وASM.
rscrypto
rscrypto هي مكتبة Rust من البدائيات التشفيرية، ودوال التجزئة، وتجزئة كلمات المرور، والمجاميع الاختبارية.
نموذج ميزات واحد يتحكم بها جميعًا.
Rust المحمول هو التنفيذ المرجعي.
خلفيات SIMD والتجميع تجعلها أسرع على الأهداف المدعومة.
لا تعتمد إصدارات الإنتاج على C، أو FFI، أو OpenSSL، أو مكتبات النظام.
توفر rscrypto البدائيات فقط.
وهي ليست حزمة TLS، ولا مجموعة أدوات PKI، ولا مخزن مفاتيح، ولا تنفيذ بروتوكول.
التثبيت
تحتاج rscrypto إلى Rust 1.100.
حتى يصبح Rust 1.100 مستقرًا، استخدم إصدار 1.100 التجريبي أو nightly أحدث.
تحتاج إصدارات POWER وIBM Z وRISC-V المعجّلة إلى مترجم nightly؛
تدعم إصدارات portable-only الحد الأدنى المعلن لإصدار Rust (MSRV).
راجع سلسلة الأدوات.
بناء no_std أدنى مع SHA-2 فقط:
[dependencies]
rscrypto = { version = "0.11", default-features = false, features = ["sha2"] }
جميع البدائيات، مع عشوائية نظام التشغيل:
[dependencies]
rscrypto = { version = "0.11", features = ["full", "getrandom"] }
الميزة الافتراضية هي std.
اضبط default-features = false لإزالتها.
فعّل getrandom فقط لواجهات API التي تحصل على الأملاح، أو المفاتيح، أو الأرقام العشوائية المستخدمة مرة واحدة (nonces)،
أو عشوائية توليد مفاتيح RSA من نظام التشغيل.
يشرح دليل الميزات كيفية اختيار الميزات.
يعرّف Cargo.toml مخطط الميزات الدقيق.
البدء السريع
use rscrypto::Sha256;
let one_shot = Sha256::digest(b"hello world");
let mut hasher = Sha256::new();
hasher.update(b"hello ");
hasher.update(b"world");
assert_eq!(hasher.finalize(), one_shot);
تدعم أنواع التجزئة الاستخدام لمرة واحدة والاستخدام المتدفق.
يحتوي examples/README.md على أمثلة قابلة للتشغيل لـ AEAD، والتوقيعات، وRSA، وP-256 وP-384 ECDH،
وX25519، وML-KEM، وتجزئة كلمات المرور، واستكشاف الخلفيات.
البدائيات والميزات
| العائلة | البدائيات | الميزة |
|---|---|---|
| المجاميع الاختبارية | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums أو ميزة فرعية |
| دوال التجزئة التشفيرية | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes أو ميزة فرعية |
| دوال التجزئة السريعة | XXH3-64/128, RapidHash V3-64 | fast-hashes أو ميزة فرعية |
| MACs وKDFs | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs، أو kdfs، أو ميزة فرعية |
| تجزئة كلمات المرور | Argon2d/i/id, scrypt, سجلات كلمات مرور PHC محدودة | password-hashing أو ميزة فرعية |
| التوقيعات وRSA | ECDSA P-256/P-384, Ed25519, ML-DSA-44/65/87, SLH-DSA (جميع مجموعات FIPS 205 الـ12، pure وHashSLH-DSA)، توقيع RSA، والتحقق، والتشفير، وتوليد المفاتيح | signatures أو ميزة فرعية |
| تبادل المفاتيح وKEMs | P-256 ECDH, P-384 ECDH, X25519, ML-KEM-512/768/1024 | key-exchange أو ميزة فرعية |
| AEADs | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead أو ميزة فرعية |
تستورد مفاتيح التوقيع وKEM وتصدّر DER القياسي (PKCS #8 وSubjectPublicKeyInfo) لـ ECDSA، وEd25519، وRSA، وML-DSA، وML-KEM، وSLH-DSA.
يوجد ملخص قبول WebSocket فقط من أجل التوافق مع البروتوكول.
يحتاج إلى ميزة websocket-sha1.
لا تُمكّنه أي ميزة شاملة، بما في ذلك full.
راجع docs.rs للأنواع والطرق الدقيقة. توضح ملاحظات توافق API أنواع المخرجات، وبذور التجميع، وأسماء الطرق المحتفظ بها. يشرح دليل المرونة التشفيرية الافتراضات الأمنية، وحدود الترحيل، والأدلة التي يجب مراجعتها عند اختيار تشفير أقوى.
المنصات والتوزيع
يعرّف تنفيذ Rust المحمول المخرجات الصحيحة، بايتًا بايتًا.
يجب أن تعطي كل خلفية معجّلة المخرجات نفسها.
في وقت الترجمة، يحدد الهدف الخلفيات المتاحة.
مع std، تكتشف rscrypto أيضًا ميزات المعالج في وقت التشغيل وتختار خلفية.
إذا لم تتوفر خلفية معجّلة، يعمل التنفيذ المحمول.
يسرد دليل المنصات الأهداف المدعومة.
كما يشرح التوزيع، ودعم no_std، وحدود portable-only.
الضمانات
لا يوجد ادعاء أمني إلا ما دامت أدلته ناجحة. الأدلة المفقودة أو القديمة تُلغي الادعاء؛ ولا تُضعف بوابة أبدًا.
- الصحة: متجهات NIST، وRFC، والمصدر الأصلي، وWycheproof، وتنفيذات مستقلة، واختبارات الخصائص، والاختبارات السلبية، وMiri.
- الاختبار التلقائي (Fuzzing): تشغّل أهداف الاختبار التلقائي كود الإنتاج عبر البدائيات، والمحللات، وآلات الحالة، وحدود السمات. تُعاد المدخلات المُصغّرة كاختبارات. ويشغّلها مسار منفصل مع أدوات التعقيم (sanitizers).
- الخلفيات: تقارن الاختبارات التفاضلية كل خلفية معجّلة مع Rust المحمول. وتغطي الأطوال، والمحاذاة، والأجزاء المتبقية، وانتقالات الحالة، والتوزيع، والرجوع الاحتياطي على الأهداف الأصلية.
- الزمن الثابت: يسرد
ct.tomlالعمليات الدقيقة الخاضعة للاختبار. تجمع الأدلة بين فحص الملفات الثنائية المرتبطة المحسّنة، وإثباتات BINSEC للنوى ثابتة الشكل، واختبارات توقيت DudeCT للعمليات من طرف إلى طرف. - الأسرار: الأنواع التي تملك أسرارًا تخفي محتوياتها في مخرجات
Debugوتمسح تخزينها المُهيأ عند الإسقاط. تختلف قواعد النسخ حسب النوع؛ على سبيل المثال، تدعم حالة BLAKE2 وBLAKE3 المُفتّحةClone. يسرد جرد ملكية الأسرار كل نوع. - الإخفاقات: لا تخبر إخفاقات التحقق عن سبب فشلها. يمسح فتح AEAD الفاشل النص الصريح غير الموثّق.
ينطبق ادعاء الزمن الثابت فقط على الهدف، والميزات، والمترجم، والملف التعريفي، والعملية التي تغطيها أدلته. الكود المصدري الذي يبدو بلا تفرعات ليس دليلًا.
للتفاصيل، راجع أدلة الاختبار، ونموذج الزمن الثابت، ودورة حياة الأسرار، ونموذج التهديد.
لم تخضع rscrypto لتدقيق أمني من طرف ثالث.
لا يستطيع المشروع دفع تكلفته الآن، والأدلة الآلية لا تحل محله.
لا تدّعي rscrypto أنها مدققة، أو معتمدة FIPS 140-3، أو مُثبتة رسميًا،
أو ثابتة الزمن كحزمة كاملة.
أبلغ عن ثغرة مشتبه بها عبر الإبلاغ الخاص عن الثغرات في GitHub.
اتبع عملية SECURITY.md.
لا تفتح مشكلة عامة.
الأداء
قاس تشغيل المعيار #37092266645 مصدر v0.10.0
على ثماني منصات في 2026-10-03.
تحتوي كل منصة على 346 مقارنة متماثلة لدوال التجزئة، والمجاميع الاختبارية، وMACs، وXOFs، وscrypt.
تقسم كل مقارنة الزمن الوسيط لأسرع حزمة خارجية على الزمن الوسيط لـ rscrypto.
تعني نسبة أعلى من 1.00x أن rscrypto أسرع.
| المنصة | أسرع | ضمن 3% | أبطأ | النسبة الوسيطة |
|---|---|---|---|---|
Intel Linux (c8i) | 211 | 88 | 47 | 1.09x |
AMD Linux (c8a) | 256 | 81 | 9 | 1.13x |
Intel Windows (c8i) | 186 | 105 | 55 | 1.05x |
AMD Windows (c8a) | 262 | 68 | 16 | 1.09x |
Graviton5 Linux (c9g) | 147 | 121 | 78 | 1.01x |
| POWER10 Linux | 206 | 122 | 18 | 1.07x |
| IBM Z Linux | 301 | 19 | 26 | 2.77x |
| RISC-V Linux | 197 | 79 | 70 | 1.05x |