
मशीन लर्निंग के लिए Metasploit।
ध्यान दें कि deep-pwning अपनी वर्तमान स्थिति में कहीं भी परिपक्वता या पूर्णता के करीब नहीं है। इसका उद्देश्य आपके द्वारा प्रयोग, विस्तार और विस्तार किया जाना है। तभी हम इसे वास्तव में सांख्यिकीय मशीन लर्निंग मॉडलों के लिए पेनेट्रेशन टेस्टिंग टूलकिट बनने में मदद कर सकते हैं।
शोधकर्ताओं ने पाया है कि मशीन लर्निंग मॉडल (क्लासिफायर, क्लस्टरर, रिग्रेसर आदि) को वस्तुनिष्ठ रूप से गलत निर्णय लेने के लिए मूर्ख बनाना आश्चर्यजनक रूप से आसान है। शोध के इस क्षेत्र को एडवरसैरियल मशीन लर्निंग कहा जाता है। यह दावा करना अतिशयोक्ति नहीं है कि कोई भी प्रेरित हमलावर, पर्याप्त जानकारी और समय दिए जाने पर, किसी भी मशीन लर्निंग सिस्टम को बायपास कर सकता है। हालाँकि, जब आर्किटेक्ट और इंजीनियर मशीन लर्निंग सिस्टम डिज़ाइन और बनाते हैं, तो इस मुद्दे को अक्सर अनदेखा कर दिया जाता है। जब इन प्रणालियों का उपयोग महत्वपूर्ण परिदृश्यों, जैसे चिकित्सा, परिवहन, वित्तीय या सुरक्षा-संबंधित क्षेत्रों में किया जाता है, तो परिणाम चिंताजनक होते हैं।
इसलिए, मशीन लर्निंग का उपयोग करने वाले अनुप्रयोगों की प्रभावशीलता का मूल्यांकन करते समय, सिस्टम की सटीकता और रिकॉल के साथ-साथ एक प्रतिकूल सेटिंग में उनकी लचीलापन को भी मापा जाना चाहिए।
यह टूल अगस्त 2016 में लास वेगास में DEF CON 24 में जारी किया गया था, Machine Duping 101: Pwning Deep Learning Systems शीर्षक वाली बात के दौरान।
यह फ्रेमवर्क Tensorflow के ऊपर बनाया गया है, और इस रिपॉजिटरी में शामिल कई उदाहरण Tensorflow GitHub रिपॉजिटरी से प्राप्त संशोधित Tensorflow उदाहरण हैं।
सभी शामिल उदाहरण और कोड गहरे तंत्रिका नेटवर्क को लागू करते हैं, लेकिन इनका उपयोग समान रूप से कार्यशील क्लासिफायर के लिए प्रतिकूल छवियां उत्पन्न करने के लिए किया जा सकता है जो गहरे तंत्रिका नेटवर्क के साथ लागू नहीं किए गए हैं। ऐसा मशीन लर्निंग में 'हस्तांतरणीयता' की घटना के कारण है, जिसे Papernot et al. ने इस पेपर में विशेषज्ञता से समझाया है। इसका मतलब है कि DNN मॉडल A से तैयार किए गए प्रतिकूल नमूने एक अलग संरचना वाले DNN मॉडल B को, साथ ही कुछ अन्य SVM मॉडल C को भी मूर्ख बना सकते हैं।
यह आंकड़ा उपर्युक्त पेपर (Papernot et al.) से लिया गया है, जो स्रोत मॉडल (प्रतिकूल नमूना उत्पन्न करने के लिए उपयोग किया जाता है) पर लक्ष्य मॉडल (जिस पर प्रतिकूल नमूने का परीक्षण किया जाता है) के लिए सफल प्रतिकूल गलत वर्गीकरण का प्रतिशत दिखाता है।
Deep-pwning को कोड पुनरावृत्ति को कम करने के लिए कई घटकों में मॉड्यूलरीकृत किया गया है। संभावित वर्गीकरण कार्यों की अत्यधिक भिन्न प्रकृति के कारण, कोड का वर्तमान संस्करण छवियों और वाक्यांशों (शब्द वैक्टर का उपयोग करके) को वर्गीकृत करने के लिए अनुकूलित है।
ये कोड मॉड्यूल हैं जो Deep-pwning के वर्तमान संस्करण को बनाते हैं:
ड्राइवर
ड्राइवर कोड का मुख्य निष्पादन बिंदु हैं। यहाँ आप विभिन्न मॉड्यूल और घटकों को एक साथ जोड़ सकते हैं, और जहाँ आप प्रतिकूल उत्पादन प्रक्रियाओं में अधिक अनुकूलन इंजेक्ट कर सकते हैं।
मॉडल
यहाँ वास्तविक मशीन लर्निंग मॉडल कार्यान्वयन स्थित हैं। उदाहरण के लिए, प्रदान की गई lenet5 मॉडल परिभाषा lenet5.py के भीतर model() फ़ंक्शन में स्थित है। यह नेटवर्क को इस प्रकार परिभाषित करता है:
-> इनपुट
-> कन्वोल्यूशनल लेयर 1
-> मैक्स पूलिंग लेयर 1
-> कन्वोल्यूशनल लेयर 2
-> मैक्स पूलिंग लेयर 2
-> ड्रॉपआउट लेयर
-> सॉफ्टमैक्स लेयर
-> आउटपुट
प्रतिकूल (advgen)
इस मॉड्यूल में वह कोड है जो मॉडलों के लिए प्रतिकूल आउटपुट उत्पन्न करता है। इनमें से प्रत्येक advgen क्लास में परिभाषित run() फ़ंक्शन एक input_dict लेता है, जिसमें Tensorflow में परिभाषित मशीन लर्निंग मॉडल के लिए कई पूर्वनिर्धारित टेंसर ऑपरेशन होते हैं। यदि जिस मॉडल के लिए आप प्रतिकूल नमूना उत्पन्न कर रहे हैं, वह ज्ञात है, तो इनपुट डिक्ट में चर उस मॉडल परिभाषा पर आधारित होने चाहिए। अन्यथा, यदि मॉडल अज्ञात है (ब्लैक बॉक्स जनरेशन), तो एक वैकल्पिक मॉडल का उपयोग/कार्यान्वयन किया जाना चाहिए, और उस मॉडल परिभाषा का उपयोग किया जाना चाहिए। पास किए जाने वाले चर हैं: इनपुट टेंसर प्लेसहोल्डर चर और लेबल (अक्सर -> इनपुट और -> लेबल के रूप में संदर्भित), मॉडल आउटपुट (अक्सर के रूप में संदर्भित), और वास्तविक परीक्षण डेटा और लेबल जिन पर प्रतिकूल छवियां आधारित होंगी।
ये एप्लिकेशन से संबंधित संसाधन निर्देशिकाएँ हैं:
चेकपॉइंट्स
Tensorflow आपको प्रशिक्षण फिर से शुरू करने के लिए आंशिक रूप से प्रशिक्षित मॉडल लोड करने, या मूल्यांकन या अन्य संचालन करने के लिए पूरी तरह से प्रशिक्षित मॉडल को एप्लिकेशन में लोड करने की अनुमति देता है। ये सभी सहेजे गए 'चेकपॉइंट' इस संसाधन निर्देशिका में संग्रहीत हैं।
डेटा
यह निर्देशिका सभी इनपुट डेटा को उस प्रारूप में संग्रहीत करती है जिसे ड्राइवर एप्लिकेशन लेता है।
आउटपुट
यह सभी एप्लिकेशन आउटपुट के लिए आउटपुट निर्देशिका है, जिसमें उत्पन्न प्रतिकूल छवियां शामिल हैं।
कृपया 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 driver में पूर्व-प्रशिक्षित word2vec मॉडल के लिए समर्थन जोड़ेंmodels में SVM और लॉजिस्टिक रिग्रेशन समर्थन जोड़ें (+ उदाहरण जो उनका उपयोग करते हैं)ध्यान दें कि dpwn को Tensorflow 0.8.0 की आवश्यकता है। Tensorflow 0.9.0 कुछ
(अद्भुत Requests रिपॉजिटरी से kennethreitz द्वारा उधार लिया गया)
AUTHORS.md में अपना नाम जोड़ना सुनिश्चित करें।बहुत सारे मशीन लर्निंग और सुरक्षा शोधकर्ताओं का इतना प्रभावशाली काम है जिसने प्रत्यक्ष या अप्रत्यक्ष रूप से इस परियोजना में योगदान दिया और इस फ्रेमवर्क को प्रेरित किया। यह उन संसाधनों की एक अनिर्णायक सूची है जिनका किसी न किसी रूप में उपयोग या संदर्भ किया गया था:
xy_y_convकॉन्फ़िग
एप्लिकेशन कॉन्फ़िगरेशन।
उपयोगिताएँ
विविध उपयोगिताएँ जो कहीं और फिट नहीं होतीं। इनमें डेटा पढ़ने, Tensorflow कतार इनपुट से निपटने आदि के लिए सहायक फ़ंक्शन शामिल हैं।