
مشروع Wycheproof يختبر مكتبات التشفير ضد الهجمات المعروفة.
مشروع Wycheproof هو مستودع مُدار من المجتمع لمتجهات الاختبار التي يمكن لمطوّري مكتبات التشفير استخدامها للاختبار ضد الهجمات المعروفة، وتناقضات المواصفات، ومختلف أخطاء التنفيذ الأخرى.
تُحفظ متجهات الاختبار كبيانات JSON لمتجهات الاختبار، مع ملفات مخطط JSON مصاحبة توثّق بنية بيانات متجهات الاختبار.
قد تجد أنه من المفيد فحص كيفية قيام مشاريع أخرى مثل pyca/cryptography التي قامت بدمج متجهات اختبار Wycheproof.
يحتوي مشروع Wycheproof على متجهات اختبار لأشهر خوارزميات التشفير، بما في ذلك
تكتشف متجهات الاختبار ما إذا كانت المكتبة عرضة للعديد من الهجمات، بما في ذلك
نرحب بالمساهمات ببيانات متجهات اختبار جديدة وبخوارزميات جديدة.
إذا كنت ترغب في المساهمة، فيرجى قراءة CONTRIBUTING وإرسال طلبات السحب إلينا. يمكنك أيضاً الإبلاغ عن الأخطاء أو طلب اختبارات جديدة عبر مشكلات GitHub.
نحن في عملية إحياء تطوير وصيانة مشروع Wycheproof كمشروع C2SP مع تركيز متجدد على بيانات متجهات الاختبار. أولوياتنا المباشرة هي:
سُمي مشروع Wycheproof على اسم جبل Wycheproof، أصغر جبل في العالم. كان الدافع الرئيسي للمشروع وقت إنشائه هو امتلاك هدف قابل للتحقيق. كلما كان الجبل أصغر، زادت احتمالية القدرة على تسلقه.
تُستخدم متجهات اختبار Wycheproof بشكلٍ ما من قبل عدد من مشاريع ومكتبات التشفير المهمة. وهي دون ترتيب معين تشمل:
إذا كان مشروعك يستخدم متجهات اختبار من Wycheproof، فلا تتردد في فتح PR لإضافته إلى القائمة أعلاه!
انظر إلى doc/bugs.md للاطلاع على بعض الأخطاء التاريخية البارزة التي تم اكتشافها باستخدام منصات اختبار Wycheproof، أو بيانات متجهات الاختبار.
testvectors/؟قمنا مؤخراً بدمج الدليلين testvectors/ و testvectors_v1/ في
دليل واحد موحّد مع نهج واحد متسق للمخططات.
يمكن للمستخدمين الذين يحتاجون بيانات متجهات الاختبار الأصلية ("v0") استنساخ هذا المستودع من
الوسم wycheproof-v0-vectors، لكن يُشجَّعون على التفكير في التحديث
لاستخدام testvectors_v1/ للاستفادة من التحديثات المستقبلية. إذا كانت هناك ميزات/تغطية اختبار
من testvectors/ مفقودة في testvectors_v1/، أو كانت هناك مشكلة أخرى
تمنع تحديثك، فيرجى فتح مشكلة تصف احتياجاتك.
في وقت كتابة هذا، تفتقر ملفات testvectors_v1 التالية إلى المخططات:
testvectors_v1/aes_ff1_base*_test.jsontestvectors_v1/aes_ff1_radix*_test.jsontestvectors_v1/ecdsa_secp256k1_sha256_bitcoin_test.jsontestvectors_v1/pbes2_hmacsha*_aes_*_test.jsontestvectors_v1/pbkdf2_hmacsha*_test.jsontestvectors_v1/rsa_pss_*_sha*_mgf*_params_test.jsontestvectors_v1/rsa_pss_misc_params_test.jsonستكون المساهمة بمخططات للمتجهات المذكورة أعلاه موضع ترحيب كبير.
تتوفر بعض الوثائق القديمة لـ الملفات، التنسيقات والأنواع، لكنها ليست بالضرورة متزامنة مع الحالة الحالية لمتجهات الاختبار.
بشكل عام، يُفضَّل الرجوع إلى ملفات المخطط لأنها مُختبَرة في CI لضمان تطابق محتويات ملفات متجهات الاختبار مع مخططها المُعلَن.
تاريخياً، تضمن Wycheproof أيضاً منصات اختبار (مثلاً لتطبيقات تشفير Java
وJavascript) اختبرت مجموعة متنوعة من الهجمات
مباشرة ضد التطبيقات. منذ الانتقال إلى دعم المجتمع،
تمت إزالة هذه المنصات (لكنها لا تزال موجودة في سجل git
للأطراف المهتمة في cd27d64). تركيزنا الحالي ينصب على
متجهات الاختبار المستقلة عن التنفيذ.
اختبار مكتبات التشفير الخارجية مباشرةً يعني أن العيوب لا تُكتشف إلا بعد أن يتم إيداعها في المستودع، وربما إصدارها، من قِبل المشاريع التي تحت الاختبار. بدلاً من ذلك، نشجع المشاريع المستهلكة على اختبار أكوادها بانتظام باستخدام متجهات اختبار Wycheproof كجزء من عملية التطوير الخاصة بها. يساعد هذا النهج في اكتشاف العيوب قبل أن تتحول إلى ثغرات (CVEs)، ويعني أن الميزات الجديدة تُختبر فوراً، ويساعد على توزيع عبء الصيانة. وهذا يسمح للقائمين على Wycheproof بالتركيز على متجهات الاختبار بدلاً من تتبع التطوير في المشاريع المستهلكة العديدة مع الحفاظ في الوقت نفسه على عدد متزايد باستمرار من منصات الاختبار الخاصة بلغات ومشاريع محددة.
قد يجد المهتمون بمنصات الاختبار أن العمل المستمر الذي يقوم به Daniel Bleichenbacher في Rooterberg مثيراً للاهتمام.
حقوق الطبع والنشر 2016-2026 لمؤلفي Wycheproof، متاح بموجب رخصة Apache 2.0.
تم إنشاء مشروع Wycheproof في الأصل وصيانته بواسطة: