हिन्दी

टेक्स्ट और रोजमर्रा के टूल · पासवर्ड जेनरेटर

मोडुलो पूर्वाग्रह की व्याख्या: बिना किसी गड़बड़ी के सूची से एक यादृच्छिक शब्द चुनना

· यह काम किस प्रकार करता है

पासवर्डों अनियमितता क्रिप्टोग्राफी

एक पूँछ को अस्वीकार करने के बाद एक सम सेट के बगल में असमान क्रमांकित बाल्टियाँ उत्पन्न हुईं
मूल ToolAcre वेक्टर चित्रण

दिखाता है कि क्यों 'यादृच्छिक संख्या मोडुलो सूची की लंबाई' कुछ शब्दों को दूसरों के मुकाबले पसंद करती है जब सीमा समान रूप से विभाजित नहीं होती है, तिरछा कितना बड़ा है, और अस्वीकृति नमूनाकरण इसे कैसे हटा देता है।

एक उचित पासा और एक अनुचित शॉर्टकट - क्यों एक यादृच्छिक संख्या मॉड्यूल 7,776 लेना पासा पलटने के समान नहीं है

एक निष्पक्ष स्रोत अभी भी अनुचित चयन प्रक्रिया को बढ़ावा दे सकता है। यदि कोई प्रोग्राम एक पूर्णांक पढ़ता है और सूची की लंबाई से विभाजित करने के बाद तुरंत शेषफल ले लेता है, तो कुछ सूचकांक अधिक स्रोत मान प्राप्त करते हैं जब भी स्रोत सीमा उस लंबाई से बिल्कुल विभाज्य नहीं होती है। दोष कटौती चरण में है, जरूरी नहीं कि बाइट्स में हो। ToolAcre कोई भी EFF शब्द चुनने से पहले उस शॉर्टकट से बचता है।

भौतिक पासा तभी सहज तुलना प्रदान करता है जब संपूर्ण परिणाम समूह समान रूप से मैप करते हैं। ब्राउज़र कार्यान्वयन में एक अलग कच्ची सीमा होती है, इसलिए यह अनुरोधित सीमा के लिए स्वीकृति विंडो की गणना करता है। यह लेख यह दावा करने के बजाय उस शिप किए गए तंत्र पर चर्चा करता है कि ब्राउज़र बाइट्स वस्तुतः पाँच पासों को पुन: पेश करता है। दोनों सूचकांकों का चयन कर सकते हैं, लेकिन उनकी प्रक्रियाएं और ऑडिट साक्ष्य अलग-अलग हैं।

पूर्वाग्रह कहां से आता है - 32-बिट मान समान रूप से 7,776 बकेट में विभाजित नहीं होता है, इसलिए पहले कुछ शब्दों को एक अतिरिक्त मौका मिलता है

एक बाइट और 100 की सीमा के लिए, कच्ची कैटेगरी में 256 संभावित मान होते हैं। 100 के दो पूर्ण समूह, 56 मान छोड़कर फ़िट होते हैं। प्रत्येक बाइट मॉड्यूलो 100 को कम करने से सूचकांक शून्य से 55 तक तीन प्रीइमेज प्राप्त होते हैं, जबकि सूचकांक 56 से 99 तक केवल दो प्राप्त होते हैं। इनपुट बाइट्स एक समान हो सकते हैं, फिर भी चयनित बकेट वितरण नहीं है।

कार्यान्वयन टिप्पणी 7,776-प्रविष्टि सूची के लिए संबंधित परिमित-कैटेगरी समस्या भी प्राप्त करती है जब दो बाइट्स सीधे कम हो जाते हैं। वे आंकड़े स्रोत में नामित वास्तविक सीमाओं से आते हैं, अनुमानित हमले की दर से नहीं। महत्वपूर्ण समीक्षा प्रश्न यह है कि क्या बचे हुए मूल्यों का उपयोग किया जाता है, न कि क्या कुछ उत्पन्न वाक्यांशों में तिरछा छोटा दिखता है।

प्रभाव कितना बड़ा है - एक बड़ी यादृच्छिक सीमा के लिए छोटा, लेकिन गैर-शून्य, और क्रिप्टोग्राफ़िक कोड इसे स्वीकार करने से इनकार क्यों करता है

नियतात्मक परीक्षण असमान पूंछ को देखने योग्य बनाते हैं। बाउंड्स 3, 5, 7, 100 और 7,776 जानबूझकर अजीब हैं, जबकि पावर-ऑफ-टू बाउंड नो-रिजेक्शन केस को दर्शाता है। एक अन्य सांख्यिकीय नियंत्रण सही फ़ंक्शन और एक अनुभवहीन मॉड्यूलो सहायक के लिए समान Web Crypto स्रोत का उपयोग करता है, इसलिए परीक्षण एन्ट्रापी स्रोत को दोष देने के बजाय कटौती की रणनीति को अलग करता है।

ToolAcre उन वितरण जांचों को क्रैक-टाइम पूर्वानुमान में परिवर्तित नहीं करता है। पूर्वाग्रह एकरूपता को कम कर देता है, लेकिन उस कमी को किसी विशेष हमलावर की लागत में अनुवाद करने के लिए एक पूर्ण खतरे वाले मॉडल की आवश्यकता होती है। इंजीनियरिंग की आवश्यकता साफ-सुथरी है: प्रत्येक पात्र सूचकांक में स्वीकृत कच्चे मूल्यों की समान संख्या होनी चाहिए, और कोड उसे सटीक रूप से लागू कर सकता है।

कार्यान्वयन टिप्पणियों और नियतात्मक परीक्षणों में सत्यापित तिरछा उदाहरण

`secureRandomInt` उच्चतम वैध सूचकांक का प्रतिनिधित्व करने में सक्षम सबसे छोटी संपूर्ण बाइट गिनती ढूंढता है। यह बाइट रेंज की गणना करता है, बाउंड द्वारा विभाजन के बाद शेष को घटाता है, और परिणाम को `limit` कहता है। उस सीमा से नीचे के मान पूर्ण समूहों से संबंधित हैं; मॉड्यूलो ऑपरेशन को चलाने की अनुमति देने से पहले इसके ऊपर या उससे ऊपर के मानों को हटा दिया जाता है।

प्रत्येक अस्वीकृति के बाद एक नया ड्रा होता है। लूप की ऊंची निश्चित छत होती है इसलिए टूटा हुआ इंजेक्शन स्रोत टैब को हमेशा के लिए लटका नहीं सकता है; बार-बार सीमा से बाहर मान देने के बाद यह पक्षपातपूर्ण उत्तर देने के बजाय फेंक देता है। यह विफलता पथ शुद्धता का हिस्सा है: किसी संदिग्ध स्रोत को अस्वीकार करने से यह वादा बरकरार रहता है कि लौटाया गया सूचकांक समान स्वीकृति विंडो से आया है।

विकल्प - बिल्कुल पर्याप्त बिट्स बनाना और आउट-ऑफ़-रेंज मानों को छोड़ना, या लाइब्रेरी के एकसमान पूर्णांक फ़ंक्शन का उपयोग करना

अन्य समान-पूर्णांक डिज़ाइन संभव हैं, लेकिन वे इस पैकेज का व्यवहार नहीं हैं और इसलिए विनिमेय ToolAcre विकल्पों के रूप में प्रस्तुत नहीं किए जाते हैं। इंजन एक ऑडिटेड पथ को उजागर करता है। `secureRandomChoice` पुष्टि करता है कि इसका इनपुट एक गैर-रिक्त सरणी है और `secureRandomInt(items.length)` को सौंपता है, जिससे शब्द चयन बंधे हुए पूर्णांक अनुबंध का प्रत्यक्ष उपभोक्ता बन जाता है।

रैंडम-पासवर्ड जनरेटर वर्णों के लिए समान पथ का उपयोग करता है, फिर सुरक्षित बाउंडेड स्वैप द्वारा संचालित फिशर-येट्स शफ़ल को आमंत्रित करता है। यह यादृच्छिक तुलनित्र के साथ `sort` का उपयोग नहीं करता है। एक आदिम को कई विशेषताओं के नीचे रखने से एक स्रोत समीक्षा सुव्यवस्थित हो जाती है: एक बार समान कटौती को ठीक करें या परीक्षण करें, फिर उसके कॉलर्स का अनुसरण करें।

वैकल्पिक डिज़ाइन इस मॉड्यूल के बाहर हैं; शिप किया गया पथ अस्वीकृति नमूने का उपयोग करता है

बाउंड-100 रिग्रेशन परीक्षण 200 से 255 तक प्रत्येक टेल बाइट और फिर अंतिम 42 की आपूर्ति करता है। सही कोड 42 के सभी 56 अस्वीकृत बाइट्स और उत्तरों का उपभोग करता है। दूसरा केंद्रित केस 200 और 7 की आपूर्ति करता है; क्योंकि 200 मॉड्यूल 100 शून्य होगा, 7 लौटाने से साबित होता है कि पहला बाइट चुपचाप कम होने के बजाय अस्वीकार कर दिया गया था।

यह कार्यित उदाहरण डिज़ाइन द्वारा नियतात्मक है और इसमें कोई प्रमाणिकता नहीं है। प्रोडक्शन बाइट्स ब्राउज़र कॉल के लिए निजी रहते हैं और लॉग नहीं होते हैं। परीक्षण स्रोत केवल इंजेक्शन योग्य है इसलिए सीमा पर व्यवहार को मजबूर किया जा सकता है; सार्वजनिक पैकेज कोई उत्पादन आधारित मोड प्रदान नहीं करता है जो जेनरेट किए गए पासफ़्रेज़ को पुन: उत्पन्न कर सके।

कार्यान्वित उदाहरण: बाउंड 100 बाइट 200 को अस्वीकार करता है और निम्नलिखित 7 को स्वीकार करता है

फ़्लोटिंग-पॉइंट रैंडम रिडक्शन, लाइब्रेरी-विशिष्ट यूनिफ़ॉर्म APआई और असंबंधित शफ़लिंग एल्गोरिदम इस कार्यान्वयन से बाहर हैं। उनका मूल्यांकन करने के लिए उनके स्रोत और अनुबंधों की आवश्यकता होगी। ToolAcre का कोड पूर्णांक-आधारित और स्पष्ट रूप से परिबद्ध है, इसलिए विकल्पों का सर्वेक्षण जोड़ने से परीक्षण द्वारा वास्तव में सिद्ध किए गए संकीर्ण दावे धुंधले हो जाएंगे।

लेख यह भी निष्कर्ष नहीं निकालता है कि एक समान रूप से उत्पन्न पासवर्ड प्रत्येक नीति या डिवाइस के लिए उपयुक्त है। समान सूचकांक चयन एक तंत्र को संबोधित करता है। भंडारण, पुन: उपयोग, क्लिपबोर्ड हैंडलिंग, मैलवेयर और गंतव्य बाधाएँ अलग-अलग प्रश्न बने रहते हैं, भले ही प्रत्येक सूची तत्व के चयन का समान मौका हो।

टेकअवे - एक पासफ़्रेज़ जनरेटर को समान रूप से शब्दों का चयन करना चाहिए; पासवर्ड जेनरेटर यह कैसे करता है, इसके लिए टूल के तकनीकी नोट्स की जाँच करें

एक पासफ़्रेज़ जेनरेटर को शुरुआती प्रविष्टियों का पक्ष केवल इसलिए नहीं लेना चाहिए क्योंकि इसकी कच्ची सीमा शेष रह जाती है। ToolAcre Web Crypto से बाइट्स लेता है, अपूर्ण पूंछ को अस्वीकार करता है और पूर्ण समान आकार के समूहों के अंदर केवल मानों को कम करता है। परीक्षण अस्वीकृति और स्वीकृति दोनों सीमाओं को लागू करते हैं इसलिए दावा आउटपुट के दृश्य निरीक्षण पर आधारित नहीं है।

समान कोड की समीक्षा करते समय, चुनी गई बाइट चौड़ाई के लिए कच्ची सीमा की गणना करें, इसे अनुरोधित बाउंड से विभाजित करें और छोड़े गए शेष को देखें। यदि कोई भी पूँछ अस्वीकार नहीं की जाती है, तो एकरूपता का दूसरा प्रमाण माँगें। शब्द सूची सार्वजनिक हो सकती है और स्रोत क्रिप्टोग्राफ़िक हो सकता है जबकि लापरवाही से की गई कटौती अभी भी टालने योग्य तिरछापन लाती है।