
dtls-fuzzer هو مختبر حالة البروتوكول لتطبيقات خادم DTLS.
dtls-fuzzer هي أداة Java تقوم بتنفيذ اختبارات الحالة البروتوكولية (protocol state fuzzing) لخوادم DTLS . بشكل أكثر تحديدًا، فهي تدعم الوظائف التالية:
يستخدم dtls-fuzzer [TLS-Attacker][tlsattacker] لإنشاء/تحليل رسائل DTLS وكذلك للحفاظ على الحالة.
لتحقيق ذلك، تم توسيع TLS-Attacker لدعم DTLS.
يعتمد dtls-fuzzer على [الإصدار 3.0b][tlsattackerver] من TLS-Attacker، وهو إصدار يطبق تحسين DTLS.
تحتوي القطعة الأثرية على:
المجلدات الأكثر أهمية في الدليل الجذر لـ dtls-fuzzer هي:
يحتوي 'experiments/results' على النتائج التجريبية، وهي المخرجات الرئيسية للعمل. على وجه الخصوص:
يتم تسمية مجلدات المخرجات بناءً على تكوين التجربة، أي:
كمثال، يشير اسم المجلد 'jsse-12_rsa_cert_none_rwalk_incl' إلى تجربة على تطبيق JSSE 12 لـ DTLS، باستخدام مجموعة حروف تشمل مدخلات لإجراء مصافحات RSA، ومصادقة شهادة العميل معطلة، وخوارزمية الاختبار هي المشي العشوائي وعمليات إعادة الإرسال مضمنة.
يحتوي مجلد المخرجات على:
يمكن للمقيّم التحقق (على سبيل المثال) من أن النتائج التجريبية في 'included' تتوافق مع تلك المعروضة في الجدول 4، أو أن التكوينات التي تم اختبارها في الجدول 2 تظهر أيضًا في 'all_ciphers'. لاحظ أن النماذج التي تظهر في الورقة البحثية كانت نتيجة تقليم / تشذيب كبير، بينما النماذج التي تظهر في مجلدات المخرجات غير معدلة.
لغرض تقييم dtls-fuzzer من الضروري تنفيذ الخطوات التالية:
يتبع هذا القسم الخاص بالتقييم دليل حول استخدام dtls-fuzzer يقدم حالات الاستخدام الرئيسية له.
تم اختبار dtls-fuzzer على توزيعات Ubuntu 18.04 و Debian 9 من Linux. يجب أن يعمل على أي توزيعة Linux حديثة. لم يتم اختبار الدعم للمنصات الأخرى. يفترض هذا الدليل استخدام توزيعة قائمة على Debian (والتي تحتوي على 'apt-get').
يلزم وجود جهاز افتراضي (VM) Java 8 JDK (Java Development Kit). الإصدار المستخدم لتشغيل التجارب هو 1.8.0_222، على الرغم من أن الإصدارات الأحدث من Java 8 يجب أن تعمل أيضًا. لاحظ أن الأداة لا تُبنى على Java 9 أو أحدث. نعتمد أيضًا على maven (أداة 'mvn') لإدارة التبعيات / النشر.
نوصي باستخدام جهاز قوي بما فيه الكفاية، وإلا قد تصبح معلمات التوقيت الحساسة مثل وقت انتظار الاستجابة منخفضة جدًا، مما يسبب مخرجات مختلفة عن تلك التي تم الحصول عليها في الورقة البحثية. والأسوأ من ذلك، يمكن أن تتسبب في فشل تجارب التعلم. تم تشغيل التجارب الأصلية على خادم متعدد النوى، ومع ذلك، نتوقع (على الرغم من أننا لم نختبر بدقة) أن التعلم يجب أن يكون ممكنًا على جهاز مكتبي بمعالج i7. التعلم ممكن أيضًا على الأنظمة الأضعف إذا تم ضبط معلمات التوقيت وفقًا لذلك. أخيرًا، تتطلب تصور نماذج .dot عن طريق تصديرها إلى .pdf تثبيت [مكتبة graphviz][graphviz]. من المفترض أن تكون أداة 'dot' التي توفرها graphviz موجودة في PATH النظام.
باختصار، المتطلبات الأساسية الموصى بها هي:
يتطلب dtls-fuzzer Java 8 JDK (Java Development Kit). إذا لم يكن Java مثبتًا، نقوم بتثبيت تطبيق OpenJDK (عبر 'apt-get' على Ubuntu)، ويمكننا تخطي بقية هذا القسم الفرعي.
> sudo apt-get install openjdk-8-jdk
إذا كان إصدار java مثبتًا، يمكننا التحقق من الإصدار عن طريق تشغيل:
> java -version
يجب أن يبدأ رمز الإصدار بـ 1.8 (مثل 1.8.0_242)، ويجب أن يكون الجهاز الافتراضي "Server VM" (مما يشير إلى أن JDK الكامل مثبت، وليس فقط بيئة التشغيل). إذا كان الأمر كذلك، فقد انتهينا من Java. إذا لم يكن كذلك، يمكننا التحقق مما إذا كان Java 8 JDK مثبتًا على منصتنا ولكن غير محدد حاليًا، عن طريق سرد أجهزة Java الافتراضية المثبتة عبر:
> update-java-alternatives --list
إذا ظهر Java 8 JDK، يمكننا استخدام نفس الأمر لتكوين Java 8 JDK ليكون تطبيق Java الافتراضي.
> sudo update-java-alternatives --set java-1.8.0-openjdk-amd64
خلاف ذلك، نحتاج إلى إجراء التثبيت الكامل كما هو موضح في البداية. لسوء الحظ، لا ينجح 'update-java-alternatives' أحيانًا، كما تشير رسائل "error". إذا نشأت مثل هذه الحالة، يمكننا استخدام 'update-alternatives' لتكوين أي جهاز Java افتراضي يتم تحديده بواسطة 'java' (المفسر) و 'javac' (المترجم) بشكل تفاعلي.
> sudo update-alternatives --config java
> sudo update-alternatives --config javac
مع ضبط Java 8، ننتقل إلى تثبيت التبعيات الأخرى، maven، graphviz بالإضافة إلى بعض تبعيات SUT الشائعة. ثم نستنسخ مستودع dtls-fuzzer إلى مجلد من اختيارنا، مع التحقق من فرع القطعة الأثرية. للإنهاء، نجعل هذا المجلد هو الدليل الحالي لدينا.