NaCl (برنامج)
NaCl ( مكتبة الشبكات والتشفير ، تُنطق "سولت") هيمكتبة برمجية عالية السرعة ومتاحة للجميع خاصة بالتشفير . [ 2 ]
ابتكر عالم الرياضيات والمبرمج دانيال ج. بيرنشتاين مكتبة NaCl ، وهو معروف بابتكاره لبرنامجي qmail و Curve25519 . ويضم الفريق الأساسي أيضًا تانيا لانج وبيتر شواب. [ 3 ] [ 4 ] كان الهدف الرئيسي من ابتكار NaCl، وفقًا لورقة الفريق البحثية المنشورة عام 2011، هو "تجنب أنواع مختلفة من الكوارث التشفيرية التي عانت منها مكتبات التشفير السابقة". وقد حقق الفريق ذلك من خلال تصميمات أكثر أمانًا تتجنب مشكلات مثل تسرب القنوات الجانبية وفقدان العشوائية، ومن خلال أداء عالٍ بما يكفي لضمان عدم تعطيل المستخدم لميزات الأمان، ومن خلال اختيار عناصر تشفيرية أساسية أفضل. صُممت واجهة برمجة التطبيقات (API) عالية المستوى "box" لتشجيع استخدام التشفير الموثق . [ 1 ]
الوظائف
التشفير بالمفتاح العام
crypto_boxالتشفير الموثق بالمفتاح العام . يتم تبادل المفاتيح عبر X25519؛ ويتم التشفير بواسطة Salsa20-Poly1305. [ 5 ]crypto_scalarmult، الضرب القياسي على X25519 . يمكن استخدام هذه الدالة لمنحنى ديفي-هيلمان الإهليلجي .crypto_signالتوقيعات باستخدام Ed25519 و SHA-512.
التشفير باستخدام المفتاح السري
crypto_secretbox، التشفير المصادق عليه بالمفتاح الخاص باستخدام Salsa20-Poly1305 .crypto_stream، التشفير باستخدام Salsa20 أو XSalsa20 أو AES .crypto_auth، المصادقة باستخدام HMAC-SHA-512-256 .crypto_onetimeauth، المصادقة برسالة واحدة باستخدام Poly1305 .
وظائف منخفضة المستوى
التطبيقات
كُتبت النسخة المرجعية بلغة C ، وغالبًا ما تتضمن إجراءات تجميع مضمنة . يُنفذ دعم C++ كغلاف برمجي. كان من المخطط إضافة غلاف برمجي بلغة Python ، [ 8 ] ولكنه غير مُدرج في أحدث إصدار (21/02/2011). تشير الصفحة الرئيسية، التي تم تحديثها آخر مرة في عام 2016، إلى أغلفة برمجية نموذجية. [ 2 ]
يحتوي تطبيق NaCl المرجعي على مجموعة متنوعة من روابط لغات البرمجة، مثل PHP [ 9 ] و Tcl. [ 10 ]
ليبصوديوم
Libsodium هو نسخة معدلة من NaCl المرجعي ، متوافقة مع واجهة برمجة التطبيقات (API)، وقد تم إنشاؤها عام 2013. وهو قابل للتثبيت والتجميع، أي يمكن تجميعه في مكتبة ديناميكية وتثبيته كحزمة برمجية بفضل إضافة ملفات البناء (لم يكن NaCl يحتوي على أي منها). كما أنه قابل للنقل والترجمة عبر الأنظمة المختلفة. [ 11 ]
بما أن مكتبة libsodium قابلة للربط الديناميكي، فإنها تُشكل أساسًا لعدد من الروابط في لغات مثل Squeak ، [ 12 ] و Pharo ، [ 13 ] و Perl 5، [ 14 ] وPython. [ 15 ] [ 16 ]
كما يقوم libsodium بتوسيع واجهة برمجة تطبيقات NaCl بخوارزميات جديدة (مثل BLAKE2 ، [ 17 ] ChaCha20-Poly1305 ، AEGIS) [ 18 ] وفئات جديدة من الوظائف (مثل الذاكرة الآمنة، وتوليد الأرقام العشوائية ، والتجزئة ذات المدخلات القصيرة، [ 19 ] وتجزئة كلمات المرور واشتقاق المفاتيح ).
كلوريد الصوديوم
في عام 2013، أصدر فريق NaCl وثلاثة آخرون برنامج TweetNaCl، وهو تطبيق مُختصر لوظائف NaCl الـ 25، يتناسب مع حجم 100 تغريدة (140 رمزًا لكل تغريدة). [ 20 ]
استُخدمت مكتبة TweetNaCl كأساس للعديد من الإصدارات ، بما في ذلك TweetNaCl.js [ 21 ] وTweetNaCl-Java [ 22 ] . كما أُعيدت كتابتها بلغة SPARK Ada الفرعية تحت اسم SPARKNaCl، والتي يصفها مؤلفوها بأنها "(على عكس TweetNaCl) سهلة القراءة نظرًا لكثرة التعليقات التوضيحية والعقود في الكود" [ 23 ] .
تطبيقات أخرى
- RustCrypto - مجموعة شائعة من مكتبات التشفير المكتوبة بلغة Rust النقية والتي تتضمن طبقة توافق NaCl.
- dryoc — مكتبة تشفير مكتوبة بلغة Rust خالصة، تُنفذ واجهة برمجة التطبيقات libsodium/NaCl مع دعم الذاكرة المحمية . [ 24 ]
- Monocypher - إعادة كتابة لبرنامج NaCl بلغة C. يهدف إلى أن يكون بنفس سرعة برنامج NaCl المرجعي وبحجم برنامج TweetNaCl. [ 25 ]
انظر أيضاً
مراجع
- 1 2 دانيال ج. بيرنشتاين؛ تانيا لانج؛ بيتر شواب. "الأثر الأمني لمكتبة تشفير جديدة" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 9 أغسطس 2017.
- 1 2 "NaCl: مكتبة الشبكات والتشفير" .
- ↑ "الصفحة الرئيسية لتانيا لانج" .
- ^ "الصفحة الرئيسية لبيتر شوابي" .
- ↑ بيرنشتاين، دانيال ج. (10 مارس 2009). التشفير في كلوريد الصوديوم (ملف PDF) . مؤرشف (ملف PDF) من الأصل في 25 مارس 2017. تم الاطلاع عليه في 8 فبراير 2016 .
- ↑ "التجزئة: crypto_hash" . 30-08-2010 . تم الاسترجاع في 14-11-2015 .
- ↑ "مقارنة السلاسل النصية: crypto_verify" . nacl.cr.yp.to. تم الاطلاع عليه بتاريخ 19 يناير 2024 .
- ↑ "NaCl Internals" .
- ↑ "إضافة NaCl PHP" . جيت هاب. 2019-06-14.
- ↑ "ويكي Tclers - NaCl لـ Tcl" .
- ↑ دينيس، فرانك (18 يناير 2024). "libsodium: مكتبة تشفير حديثة، محمولة، وسهلة الاستخدام" . GitHub .
- ↑ "مستودع SqueakSource 'Sodium'" . 6 أغسطس 2025.
- ↑ "مستودع سمول توك هاب" . 22 يناير 2018.
- ↑ "Crypt::NaCl::Sodium" .
- ↑ هيئة التشفير في بايثون (18 يناير 2024). "pyca/pynacl" . GitHub .
PyNaCl هو ربط بايثون بمكتبة libsodium، وهي نسخة معدلة من مكتبة الشبكات والتشفير.
- ↑ "روابط للغات أخرى" . libsodium .
- ↑ "التجزئة العامة" . 13-12-2017 . تم الاطلاع عليه بتاريخ 19-05-2018 .
- ↑ "إنشاءات AEAD" . libsodium .
- ↑ "التجزئة ذات المدخلات القصيرة" . libsodium .
- ^ دانييل ج. بيرنشتاين. برنارد فان جاستيل؛ ويسلي يانسن؛ تانيا لانج؛ بيتر شوابي؛ سجاك سميتسرز (2013). "تويت ناكل" .
- ↑ "TweetNaCl.js" .
- ^ "تويت ناكل-جافا" . جيثب .
- ↑ "SPARKNaCl" . GitHub .
- ↑ "لا تقم بإنشاء مكتبة تشفير خاصة بك (dryoc): مكتبة تشفير مكتوبة بلغة Rust خالصة، يصعب إساءة استخدامها" . GitHub .
- ↑ فايان، لوب (17 يناير 2024). "LoupVaillant/Monocypher" . جيت هاب .
روابط خارجية
- برامج متاحة للجميع
- برامج التشفير
- برنامج 2008
