
वास्तविक दुनिया के समझौता किए गए पासवर्ड से उत्पन्न बड़े hashcat नियमसेट
परियोजना रखरखाव चेतावनी: यह परियोजना पूर्ण मानी गई है। भविष्य में इस परियोजना में कोई पुल रिक्वेस्ट या परिवर्तन नहीं किए जाएंगे, जब तक कि वे वास्तविक बग न हों या इन नियमों को हैशकैट के नए संस्करणों के साथ काम करने के लिए माइग्रेशन न हों।
Pantagrule, hashcat पासवर्ड क्रैकर के लिए बनाए गए नियमों की एक श्रृंखला है, जो वास्तविक दुनिया के बड़े पैमाने पर पासवर्ड समझौता डेटा से उत्पन्न हुई है। हालांकि Pantagrule नियम फ़ाइलें बड़ी हो सकती हैं, लेकिन नियम ट्यूनेबल हैं और कई मौजूदा नियम सेटों से बेहतर प्रदर्शन करते हैं।
Pantagrule को स्वचालित नियम निर्माण के लिए PACK के Levenshtein Reverse Path एल्गोरिदम (Kacherginsky, 2013) का उपयोग करके उत्पन्न किया गया था। PACK के आउटपुट को तब आधार नियम सेट बनाने के लिए PACK द्वारा नियम उत्पन्न करने की संख्या के आधार पर क्रमबद्ध किया गया। यह प्रक्रिया 2014 में पासवर्ड क्रैकिंग प्रतियोगिताओं के लिए _NSAKEY द्वारा उत्पन्न नियमों के समान है (_NSAKEY, 2014), हालांकि Pantagrule को काफी बड़े पासवर्ड सेट पर उत्पन्न किया गया था। Pantagrule के संस्करण 2 को सार्वजनिक रूप से उपलब्ध hashes.org "founds" कोर्पस पर विकसित किया गया था, जो एक सर्वश्रेष्ठ-इन-क्लास सार्वजनिक शब्दसूची है। यह मूल संस्करण की तुलना में अधिक पारदर्शी परिणाम देता है, जिसमें 842,643,513 अद्वितीय पासवर्ड वाले एक स्वामित्व कोर्पस का उपयोग किया गया था।
जब इतने बड़े नियम सेट PACK के माध्यम से डाले जाते हैं, तो लाखों नियम उत्पन्न होते हैं। हालाँकि, चूंकि उत्पन्न अधिकांश नियम केवल कुछ ही बार दिखाई देते हैं, अधिकांश उपयोगी नियम वे होते हैं जो एल्गोरिदम द्वारा सबसे अधिक बार उत्पन्न होते हैं। इस भंडार में मौजूदा कोर्पस के माध्यम से पुनरावृति करते हुए PACK द्वारा उत्पन्न नियमों का एक उपसमूह शामिल है।
वास्तविक दुनिया के डेटा के विरुद्ध नियमों का दूसरा-पास अनुकूलन उत्पन्न करने के लिए, शीर्ष दस लाख उत्पन्न नियमों को rockyou शब्दसूची का उपयोग करके Pwned Passwords NTLM सूची के विरुद्ध चलाया गया। किसी भी नियम ने जो एक पासवर्ड क्रैक किया, उसे अपनी सूची में जोड़ा गया और खराब प्रदर्शन करने वाले नियमों को हटा दिया गया।
चार अनुकूलन प्रकार बनाए गए:
popular.rule: pantagrule.1m को HIBP सेट के शीर्ष 25,000,000 पासवर्डों के विरुद्ध चलाया गया।random.rule: pantagrule.1m को HIBP सेट से बेतरतीब ढंग से चयनित 25,000,000 पासवर्डों के विरुद्ध चलाया गया।hybrid.rule: सबसे सफल popular और random नियमों के संयोजन की एक क्रमबद्ध सूची, फिर आधा काट दिया गया, ताकि एक हल्का, "संतुलित" नियम सेट बनाया जा सके जो एक बड़े नमूना सेट पर काम करता है।one.rule: OneRuleToRuleThemAll का एक संस्करण जिसमें शीर्ष प्रदर्शन करने वाले hybrid नियम जोड़े जाते हैं, और सूची को dive नियम सेट के आकार तक छोटा कर दिया जाता है। दिलचस्प बात यह है कि OneRuleToRuleThemAll और Pantagrule नियमों के बीच केवल कुछ हज़ार नियमों का ओवरलैप है, जो दोनों रणनीतियों को पूरक बनाता है। Pantagrule का one इस आकार की अन्य ज्ञात सूचियों की तुलना में बेहतर प्रदर्शन करता है, और यह अनुशंसा की जाती है कि आप बड़े वेरिएंट में से किसी एक का प्रयास करने से पहले इस नियम सेट से शुरुआत करें।इन बड़े नियम सेटों की सफलता के बाद, royce वेरिएंट के विपरीत एक प्रयास किया गया, जिसमें मूल Pantagrule पद्धति का उपयोग किया गया था लेकिन डेटा के दोनों सेट अलग-अलग थे। Pantagrule अब नियम निर्माण के लिए अपने शब्दसूची आधार के रूप में सार्वजनिक hashes.org "founds" सूची का उपयोग करता है, और फिर Have I Been Pwned की V6 NTLM सूची के विरुद्ध एक अनुकूलन पास किया गया। उपयोग किए गए डेटा की पूरी तरह से सार्वजनिक प्रकृति को देखते हुए, यह कच्चे पुनरुत्पादन डेटा के प्रकाशन की अनुमति देता है, जिसमें pantagrule.v2.1m.rule शामिल है, जो इस पद्धति द्वारा उत्पन्न शीर्ष दस लाख नियम हैं। V5 और V6 के लिए डेटा शीर्ष 25 मिलियन पासवर्डों के लिए समान है।
इस संस्करण के लिए, one उत्पन्न करने का तरीका बदल गया है। one उत्पन्न करने के लिए, पूरी 1 मिलियन सूची को OneRuleToRuleThemAll.rule में जोड़ा गया और फिर पूरे सेट को Pwned V6 पर कैलिब्रेट किया गया, न कि केवल नियम जोड़कर और छोटा करके।
नियमों के नामकरण परंपराएं अब pantagrule.${corpus}.${trainingversion}.${extension} स्वरूप में बदल गई हैं। इससे यह समझना आसान हो जाता है कि नियम किसके लिए अनुकूलित किया गया था। उदाहरण के लिए, pantagrule.hashorg.v6.random के लिए, हमने random पद्धति का उपयोग किया जिसमें नियम निर्माण के आधार के रूप में hashes.org का उपयोग किया गया, जो Pwned Passwords V6 पर अनुकूलित किया गया।
मूल नियमों को rockyou.txt को आधार के रूप में उपयोग करते हुए Pwned Passwords NTLM v5 सेट के साथ-साथ स्वामित्व शब्दसूची का उपयोग करके प्रशिक्षित किया गया था। चूंकि "प्रशिक्षण डेटा" और सत्यापन डेटा समान हैं, इसलिए यह समझ में आता है कि वे V5 डेटासेट के लिए अनुकूलित हों।
royce वेरिएंटहैशकैट योगदानकर्ता Royce Williams के अनुरोध पर, शीर्ष दस लाख नियमों के अनुकूलन hashes.org founds list के साथ भी चलाए गए। यह HIBP कोर्पस के अपेक्षाकृत गंदे होने के कारण है, और hashes.org फाउंड्स सूची के वास्तविक दुनिया के क्रैकिंग के लिए अधिक व्यावहारिक नियम सेट देने की संभावना है। इन्हें royce वेरिएंट के रूप में जोड़ा गया है। royce अनुकूलन में कुल मिलाकर थोड़े कम नियम प्रतीत होते हैं, और random.royce मूल random की तुलना में पासवर्डों की लंबी पूंछ पर काफी अधिक प्रभावी है। कुछ वेरिएंट पर मौजूदा नियमों पर प्रदर्शन में वृद्धि नहीं हुई, लेकिन यह देखते हुए कि मूल Pantagrule के प्रशिक्षण और सत्यापन डेटा दोनों Pwned Passwords डेटासेट से हैं, यह आश्चर्यजनक नहीं लगता। Pantagrule royce वेरिएंट rules/royce फ़ोल्डर में मौजूद हैं।
Pantagrule रणनीति की अन्य नियम सेटों के मुकाबले सफलता का परीक्षण करने के लिए, हम प्रत्येक नियम सेट के साथ "लंबी पूंछ" को क्रैक करने में नियम प्रभावशीलता को समझने के लिए Pwned Passwords V5 के शीर्ष 25 मिलियन पासवर्डों और Pwned Passwords V5 के शीर्ष 100 मिलियन पासवर्डों पर सत्यापन डेटा चलाएंगे। विहित rockyou.txt हमारा शब्दकोश और हमारा आधार होगा।
मूल वेरिएंट निर्माण hashcat v5.1.0 चलाने वाले 8x 1070Ti रिग पर किया गया था। royce Pantagrule वेरिएंट hashcat git build v5.1.0-1774-gf96594ef चलाने वाले 4x Radeon VII रिग पर बनाए गए थे। hashorg.v6 वेरिएंट एकल NVIDIA Tesla M4, एकल 1070Ti, और hashcat v6.1.0 पर (बहुत धीरे-धीरे) बनाए और मान्य किए गए थे।
बहुत सामान्य पासवर्डों के विरुद्ध नियम प्रदर्शन को नोट करने के लिए, 0-25M को अपने स्वयं के कॉलम में विभाजित किया गया है। RPP कॉलम 100M डेटासेट पर नियम प्रति प्रतिशत है। इसकी गणना सूत्र rpp = Math.round(num_rules / (0_100m_percent - 6.450)) का उपयोग करके की जाती है। यह संख्या जितनी अधिक होगी, प्रति प्रतिशत क्रैक किए गए उतने ही अधिक नियम चलाए जाते हैं। यह नियम सेटों में घटते प्रतिफल को महसूस करने में मदद करता है और धीमी हैश पर नियम चलाने की बढ़ी हुई लागत का अंदाजा देता है।