
Metasploit للتعلم الآلي.
لاحظ أن deep-pwning في حالته الحالية ليس قريباً من النضج أو الاكتمال. إنه مصمم للتجربة، والتوسع، والتمديد من قبلك. عندها فقط يمكننا مساعدته ليصبح حقاً مجموعة أدوات اختبار الاختراق لنماذج التعلم الآلي الإحصائية.
وجد الباحثون أنه من السهل بشكل مدهش خداع نموذج تعلم آلي (مصنف، مجمع، منحدر، إلخ) لاتخاذ قرارات خاطئة بشكل موضوعي. يُسمى هذا المجال من البحث التعلم الآلي العدائي. ليس من المبالغة الادعاء بأن أي مهاجم مدفوع يمكنه تجاوز أي نظام تعلم آلي، بالنظر إلى المعلومات والوقت الكافيين. ومع ذلك، غالباً ما يتم تجاهل هذه المشكلة عندما يصمم ويبني المهندسون المعماريون والمهندسون أنظمة التعلم الآلي. العواقب مقلقة عندما تُستخدم هذه الأنظمة في سيناريوهات حرجة، مثل المجالات الطبية، والنقل، والمالية، أو المتعلقة بالأمن.
لذا، عند تقييم فعالية التطبيقات التي تستخدم التعلم الآلي، يجب قياس مرونتها في بيئة عدائية جنباً إلى جنب مع دقة النظام واستدعائه.
تم إصدار هذه الأداة في DEF CON 24 في لاس فيغاس، أغسطس 2016، خلال محاضرة بعنوان Machine Duping 101: Pwning Deep Learning Systems.
تم بناء هذا الإطار على Tensorflow، والعديد من الأمثلة المضمنة في هذا المستودع هي أمثلة Tensorflow معدلة تم الحصول عليها من مستودع Tensorflow على GitHub.
جميع الأمثلة والكود المضمنة تنفذ شبكات عصبية عميقة، ولكن يمكن استخدامها لتوليد صور عدائية لمصنفات مشابهة المهام لا تُنفذ باستخدام شبكات عصبية عميقة. هذا بسبب ظاهرة "قابلية النقل" في التعلم الآلي، والتي شرحها Papernot وآخرون بخبرة في هذه الورقة. هذا يعني أن العينات العدائية المصنعة بنموذج شبكة عصبية عميقة أ قد تكون قادرة على خداع نموذج شبكة عصبية عميقة آخر مختلف الهيكل ب، بالإضافة إلى نموذج SVM آخر .
هذا الشكل المأخوذ من الورقة المذكورة أعلاه (Papernot وآخرون) يوضح النسبة المئوية للتصنيف الخاطئ العدائي الناجح لنموذج مصدر (المستخدم لتوليد العينة العدائية) على نموذج هدف (يتم اختبار العينة العدائية عليه).
Deep-pwning مقسم إلى عدة مكونات لتقليل تكرار الكود. نظراً للطبيعة المختلفة جوهرياً لمهام التصنيف المحتملة، فإن التكرار الحالي للكود مُحسّن لتصنيف الصور و العبارات (باستخدام متجهات الكلمات).
هذه هي وحدات الكود التي تشكل التكرار الحالي لـ Deep-pwning:
برامج التشغيل (Drivers)
برامج التشغيل هي نقطة التنفيذ الرئيسية للكود. هنا يمكنك ربط الوحدات والمكونات المختلفة معاً، وحيث يمكنك حقن المزيد من التخصيصات في عمليات التوليد العدائي.
النماذج (Models)
هذا هو المكان الذي توجد فيه تطبيقات نموذج التعلم الآلي الفعلية. على سبيل المثال، تعريف النموذج المقدم lenet5 موجود في دالة model() داخل lenet5.py. يعرّف الشبكة على النحو التالي:
-> Input
-> Convolutional Layer 1
-> Max Pooling Layer 1
-> Convolutional Layer 2
-> Max Pooling Layer 2
-> Dropout Layer
-> Softmax Layer
-> Output
العدائي (advgen)
تحتوي هذه الوحدة على الكود الذي يولد المخرجات العدائية للنماذج. تأخذ دالة run() المعرفة في كل من فئات advgen هذه input_dict، الذي يحتوي على عدة عمليات توتر محددة مسبقاً لنموذج التعلم الآلي المعرفة في Tensorflow. إذا كان النموذج الذي تولد له العينة العدائية معروفاً، يجب أن تستند المتغيرات في input_dict إلى تعريف ذلك النموذج. وإلا، إذا كان النموذج غير معروف (توليد الصندوق الأسود)، فيجب استخدام/تنفيذ نموذج بديل، ويجب استخدام تعريف ذلك النموذج. المتغيرات التي يجب تمريرها هي متغيرات مكان التوتر للإدخال والتسميات (غالباً ما يشار إليها بـ x -> الإدخال و y_ -> التسميات)، ومخرج النموذج (غالباً ما يشار إليه بـ y_conv)، وبيانات الاختبار الفعلية والتسميات التي ستستند إليها الصور العدائية.
التكوين (Config)
تكوينات التطبيق.
الأدوات المساعدة (Utils)
أدوات مساعدة متنوعة لا تنتمي إلى أي مكان آخر. تتضمن دوال مساعدة لقراءة البيانات، والتعامل مع مدخلات قائمة انتظار Tensorflow، إلخ.
هذه هي أدلة الموارد ذات الصلة بالتطبيق:
نقاط التفتيش (Checkpoints)
يتيح لك Tensorflow تحميل نموذج مدرب جزئياً لاستئناف التدريب، أو تحميل نموذج مدرب بالكامل في التطبيق للتقييم أو تنفيذ عمليات أخرى. يتم تخزين جميع 'نقاط التفتيش' المحفوظة هذه في دليل الموارد هذا.
البيانات (Data)
يخزن هذا الدليل جميع بيانات الإدخال بأي تنسيق يقبله تطبيق برنامج التشغيل.
المخرجات (Output)
هذا هو دليل المخرجات لجميع مخرجات التطبيق، بما في ذلك الصور العدائية التي يتم توليدها.
يرجى اتباع الإرشادات لتثبيت tensorflow الموجودة هنا https://www.tensorflow.org/versions/r0.8/get_started/os_setup.html والتي ستسمح لك باختيار الملف الثنائي tensorflow لتثبيته.
$ pip install -r requirements.txt
لاستعادة من نقطة تفتيش مدربة مسبقاً. (التكوين في config/mnist.conf)
$ cd dpwn
$ python mnist_driver.py --restore_checkpoint
للتدريب من الصفر. (لاحظ أن أي نقطة تفتيش سابقة موجودة في المجلد المحدد في التكوين سيتم استبدالها)
$ cd dpwn
$ python mnist_driver.py
defense إلى المشروع لأمثلة لبعض الدفاعات المقترحة في الأدبياتsentiment drivermodels (+ مثال يستخدمها)لاحظ أن dpwn يتطلب Tensorflow 0.8.0. Tensorflow 0.9.0 يقدم بعض
(مقتبس من مستودع Requests الرائع بواسطة kennethreitz)
AUTHORS.md.هناك الكثير من الأعمال المذهلة من العديد من باحثي التعلم الآلي والأمن التي ساهمت بشكل مباشر أو غير مباشر في هذا المشروع، وألهمت هذا الإطار. هذه قائمة غير حصرية للموارد التي تم استخدامها أو الإشارة إليها بطريقة أو بأخرى: