Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cdf — أداة اختبار تشويش تفاضلي آلي للبرامج التشفيرية تكتشف أخطاء التنفيذ، وإخفاقات الامتثال، وتسربات القنوات الجانبية من خلال اختبار ذكي ومتوازي عبر لغات ومنصات متعددة. | Kitploit
أدوات/GitHubGitHub/kudelskisecurity/cdf
تحليل الثغرات الأمنيةالاختبار العشوائيالتشفيرتحليل الملفات الثنائية
GitHubkudelskisecurity/cdf

cdf

أداة اختبار تشويش تفاضلي آلي للبرامج التشفيرية تكتشف أخطاء التنفيذ، وإخفاقات الامتثال، وتسربات القنوات الجانبية من خلال اختبار ذكي ومتوازي عبر لغات ومنصات متعددة.

عرض المستودع
17123منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CDF – التمييز التفاضلي للتشفير

CDF هي أداة لاختبار صحة وأمان البرامج التشفيرية بشكل تلقائي. يمكن لـ CDF اكتشاف أخطاء التنفيذ، وعدم الامتثال للمعايير، وتسريبات القنوات الجانبية، وغير ذلك.

يطبق CDF مزيجًا من اختبارات الوحدة مع "التمييز التفاضلي"، وهو نهج يقارن سلوك التطبيقات المختلفة لنفس البدائيات عند تغذيتها بحالات الحافة والقيم التي تزيد من تغطية الكود.

على عكس أدوات التمييز وأدوات الاختبار ذات الأغراض العامة، يتميز CDF بأنه:

  • ذكي: يعرف CDF نوع الخوارزمية التي يختبرها ويتكيف مع الدوال المختبرة

  • سريع: يختبر CDF فقط ما يجب اختباره ويوازي اختباراته قدر الإمكان

  • متعدد الاستخدامات: ليس CDF محددًا بأي لغة أو واجهة برمجة تطبيقات، بل يدعم أي برامج أو نصوص قابلة للتنفيذ

  • محمول: سيعمل CDF على أي منصة Unix أو Windows، حيث أنه مكتوب بلغة Go دون أي تبعية خاصة بالمنصة

الغرض من CDF هو توفير أداة اختبار أكثر كفاءة للمطورين وباحثي الأمان، بحيث تكون أكثر فعالية من نواقل الاختبار وأرخص من التدقيق اليدوي أو التحقق الرسمي.

تم تقديم CDF لأول مرة في Black Hat USA 2017. يمكنك الاطلاع على الشرائح لعرضنا التقديمي، والتي تحتوي على معلومات عامة حول الأساس المنطقي وراء تصميم CDF.

المتطلبات

CDF مشفر بلغة Go، وقد تم تطوير الإصدار الحالي باستخدام Go 1.8. ليس له أي تبعيات خارج المكتبة القياسية لـ Go.

ومع ذلك، نقدم برامج أمثلة ليتم اختبارها باستخدام CDF، وهي مكتوبة بلغات C وPython وC++ وJava وGo وتتطلب مكتبات تشفير محددة لتشغيلها. المكتبات المطلوبة حاليًا هي:

  • CryptoPP
  • OpenSSL
  • BouncyCastle
  • PyCrypto
  • Cryptography.io

البناء

make سيبني الملف الثنائي cdf.

مجموعة من البرامج المثالية متاحة تحت example: make examples-all سيبني جميع الأمثلة، بينما make examples-go سيبني فقط أمثلة Go.

make test سيشغل اختبارات الوحدة (لـ CDF).

الاستخدام

للمبتدئين، قد ترغب في عرض معلومات الاستخدام عن طريق تشغيل cdf -h.

يمكنك بعد ذلك تجربة مثال مثل واجهة rsaenc ضد أمثلة RSA OAEP في Go و CryptoPP. باعتبار CryptoPP مرجعنا، يمكنك اختبار تطبيق Go عن طريق القيام بما يلي:

root@kitploit:~
cdf rsaenc /examples/oaep_rsa2048_go /examples/oaep_rsa2048_cryptopp

سيقوم هذا الأمر بتنفيذ اختبارات متنوعة خاصة بواجهة rsaenc.

في هذا المثال، يجب أن يشتكي CDF من الحد الأقصى لحجم الأس العام الذي يدعمه تطبيق Go: إذا راجعنا الكود الخاص به يمكننا أن نرى أن الأس العام يُخزَّن كعدد صحيح عادي، بينما في CryptoPP (ومعظم التطبيقات الأخرى) يتم تخزينه كعدد صحيح كبير. هذا مع ذلك حسب التصميم ومن المحتمل ألا يتغير.

يتم تعريف المعاملات في config.json. معظم المعاملات واضحة بذاتها. قد ترغب في تعيين مفاتيح خاصة أخرى لواجهات rsaenc و ecdsa (يتم اختبار هذه الواجهات بمفاتيح ثابتة، على الرغم من تغيير بعض معاملات المفاتيح، مثل الأسس، في بعض الاختبارات).

يسمح لك معامل seed بتغيير البذرة المستخدمة في مولدات الأرقام العشوائية الزائفة لـ CDF. (ومع ذلك، قد يستخدم البرنامج المختبر بعض PRNG المزروع بطريقة أخرى، مثل أمثلة OAEP). يسمح لك معامل concurrency بتعيين عدد goroutines المتزامنة التي يجب أن يطلقها CDF عند تفرع البرامج. لاحظ أنه من الأفضل إبقاء هذا الرقم أقل من العدد الحقيقي للأنوية. معامل verboseLog، إذا تم ضبطه على true، سيكتب جميع مدخلات ومخرجات البرامج، حتى للاختبارات الناجحة، إلى ملف سجل log.txt.

الواجهات

من أجل اختبار برنامجك باستخدام CDF، يجب عليك إنشاء برنامج يقرأ المدخلات ويكتب المخرجات وفقًا لواجهات CDF، ويقوم داخليًا باستدعاء البرنامج المختبر. واجهات CDF هي تجريدات لوظيفة تشفيرية، من أجل السماح بالاختبار الصندوق الأسود للتطبيقات العشوائية.

على سبيل المثال، إذا كنت قد نفذت مخطط توقيع ECDSA، فيجب أن يفي برنامجك بواجهة ecdsa وبالتالي يأخذ كمدخلات 4 أو 5 وسيطات، على التوالي لتوقيع رسالة أو التحقق من توقيع. هذه الوسيطات هي إحداثي X العام، وإحداثي Y العام، والعدد الصحيح الكبير D الخاص، والرسالة التي تريد توقيعها، ثم يجب أن يخرج فقط الأعداد الصحيحة الكبيرة R و S كل منها في سطر جديد. أو، للتحقق من رسالة، يجب أن يقبل X, Y، و R, S، والرسالة ثم يجب أن يخرج فقط True أو False. مواصفات الواجهات مفصلة أدناه.

ستساعدك أمثلةنا لتنفيذ الواجهات في إنشاء واجهاتك الخاصة.

يُترك معالجة الأخطاء للبرنامج المختبر، ومع ذلك للحصول على أخطاء ذات معنى في CDF من الأفضل الخروج عند الفشل، وإرجاع رمز خطأ، وطباعة رسالة خطأ.

يمكن كتابة برنامج الواجهة بأي لغة، كل ما يحتاجه هو أن يكون ملفًا قابلًا للتنفيذ متوافقًا مع واجهة CDF. عادة ما يُكتب برنامج الواجهة بنفس لغة البرنامج المختبر، لكن هذا ليس إلزاميًا (قد يكون غلافًا بلغة أخرى، على سبيل المثال لبرامج Java).

يدعم CDF حاليًا الواجهات التالية، حيث يتم تشفير المعاملات كسلاسل ASCII سداسية عشرية، ما لم يُذكر خلاف ذلك:

dsa

تختبر واجهة dsa تطبيقات خوارزمية التوقيع الرقمي (DSA). يجب أن تدعم عمليات التوقيع والتحقق:

العمليةالمدخلاتالمخرجات
التوقيعp q g y x mr s
التحققp q g y r s mقيمة الحقيقة

هنا p, q, g هي معاملات DSA، y هو مفتاح عام، x هو مفتاح خاص، m هي رسالة، r و s يشكلان التوقيع، ويجب إرجاعهما مفصولين بسطر جديد. قيمة الحقيقة، إما "true" أو "false"، ممثلة كسلسلة نصية.

تدعم واجهة dsa اختبارًا اختياريًا: يسمح -h بتجاوز عملية التجزئة وتوفير قيمة التجزئة مباشرة ليتم توقيعها. هذا يسمح لـ CDF بإجراء المزيد من الاختبارات، مثل التحقق من الفيضانات أو اقتطاع التجزئة.

ecdsa

تختبر واجهة ecdsa تطبيقات خوارزمية التوقيع الرقمي للمنحنى البيضاوي (ECDSA). يجب أن تدعم عمليات التوقيع والتحقق:

العمليةالمدخلاتالمخرجات
التوقيعx y d mr s
التحققx y r s mقيمة الحقيقة

هنا x و y هما إحداثيات مفتاح عام لـ ECDSA، d هو مفتاح خاص، m هي رسالة، و r و s يشكلان التوقيع، ويجب إرجاعهما مفصولين بسطر جديد. قيمة الحقيقة، إما "true" أو "false"، ممثلة بسلسلة نصية.

يخدم العلم -h نفس الغرض كما في dsa.

يرجى ملاحظة أن تصميمنا الحالي يفترض منحنى ثابتًا، معرفًا في البرنامج المختبر.

للحصول على نتائج قابلة للتكرار مع هذه الاختبارات والاستفادة من جميع قدرات اكتشاف CDF، يجب عليك إما تزويد مولد الأرقام العشوائية ببذرة ثابتة أو استخدام متغير ECDSA حتمي، وإلا فلن يتمكن CDF من اكتشاف مشاكل مثل مشكلات العلامات المتطابقة تلقائيًا.

enc

تختبر واجهة enc عمليات التشفير وفك التشفير المتناظر، عادةً عند إجرائها باستخدام تشفير كتلي (يمكن اختبار تشفير التدفق باستخدام واجهة prf). يجب أن تدعم التشفير وفك التشفير:

العمليةالمدخلاتالمخرجات
التشفيرk mc
فك التشفيرk cr

هنا k هو مفتاح، m هي رسالة، c هو نص مشفر، و r هو نص واضح مستعاد.

prf

تختبر واجهة prf التجزئة المفتاحية (دوال شبه عشوائية، MACs)، بالإضافة إلى تشفير التدفق:

العمليةالمدخلاتالمخرجات
الحسابk mh

هنا k هو مفتاح، m هي رسالة (أو nonce في حالة تشفير التدفق)، و h هي نتيجة حساب PRF. تفترض واجهتنا حجم مفتاح ثابت وأطوال مدخلات متغيرة. إذا كان سيتم تحديد مفتاح معين، فمن مسؤولية البرنامج المختبر تجاهل إدخال المفتاح أو قد تكون واجهة xof خيارًا أفضل.

rsaenc

يختبر rsaenc تشفير RSA وفك تشفيره، كل من OAEP (PKCS 2.1) و PKCS 1.5:

العمليةالمدخلاتالمخرجات
التشفيرn e mc
فك التشفيرp q e d cr

هنا n هو معامل، e هو أس عام (للتوافق مع بعض المكتبات، e مطلوب أيضًا لفك التشفير)، m هي رسالة، p و q هما عاملا n (بحيث p > q، لأن المكتبات تتطلب ذلك عادةً)، d هو أس خاص، و r هو نص واضح مستعاد.

xof

تختبر واجهة xof دوال التجزئة، دوال الإخراج القابلة للتمديد (XOFs)، مولدات البت العشوائية الحتمية (DRBGs):

العمليةالمدخلاتالمخرجات
الحسابmh

هنا m هي الرسالة و h هي النتيجة.

المؤلفون

CDF مبني على أفكار أولية من JP Aumasson، تم الكشف عنها لأول مرة في WarCon 2016، وقد كتب معظم الكود Yolan Romailler.

الملكية الفكرية

CDF محمي بحقوق الطبع والنشر (c) 2016-2017 Nagravision SA، جميع الحقوق محفوظة.

تم إصدار CDF تحت رخصة GPLv3.

تنزيل الأداة