सुरक्षा मार्गदर्शिका
वेब क्रिप्टो और रिजेक्शन सैंपलिंग के साथ क्लाइंट-साइड पासवर्ड जनरेशन
एक तकनीकी श्वेतपत्र जो PwdGen के ब्राउज़र-साइड पासवर्ड जनरेशन मॉडल, एंट्रॉपी सीमाओं, रिजेक्शन सैंपलिंग और गोपनीयता सीमाओं की व्याख्या करता है।
सारांश
PwdGen एक क्लाइंट-साइड संदर्भ जनरेशन विधि का उपयोग करता है: ब्राउज़र या रनटाइम Web Crypto यादृच्छिक बाइट्स प्रदान करता है, रिजेक्शन सैंपलिंग उन बाइट्स को निष्पक्ष बाउंडेड इंडेक्स में मैप करता है, और Fisher-Yates शफल अंतिम पासवर्ड में आवश्यक कैरेक्टर क्लासेस को वितरित करता है। यह विधि जानबूझकर छोटी, ऑडिट करने योग्य और वेब ऐप, API एडेप्टर, CLI और तैयार pwdgen-core पैकेज में पुन: प्रस्तुत करने योग्य है।
यह दस्तावेज़ इंजीनियरिंग मॉडल का वर्णन करता है। यह एक नए क्रिप्टोग्राफिक प्रिमिटिव, एक औपचारिक मानक या स्वतंत्र तृतीय-पक्ष ऑडिट का दावा नहीं है।
यादृच्छिकता स्रोत
जनरेटर crypto.getRandomValues() के माध्यम से क्रिप्टोग्राफिक रूप से मजबूत यादृच्छिक मानों का अनुरोध करता है। Web Crypto कार्यान्वयन से अपेक्षा की जाती है कि वे होस्ट वातावरण द्वारा प्रदान की गई उच्च-गुणवत्ता वाली एंट्रॉपी के साथ सीडेड क्रिप्टोग्राफिक रूप से सुरक्षित स्यूडो-रैंडम नंबर जनरेटर का उपयोग करें। व्यवहार में, ब्राउज़र इस जिम्मेदारी को ऑपरेटिंग-सिस्टम सुविधाओं और प्लेटफ़ॉर्म क्रिप्टोग्राफिक प्रदाताओं को सौंपते हैं।
PwdGen यह दावा नहीं करता है कि प्रत्येक पासवर्ड-जनरेशन कॉल सीधे हार्डवेयर शोर स्रोत का नमूना लेता है। अधिक सुरक्षित और सटीक कथन यह है कि ब्राउज़र Web Crypto API के माध्यम से CSPRNG आउटपुट प्रदान करता है, और PwdGen गैर-क्रिप्टोग्राफिक स्यूडो-रैंडम इंटरफेस से बचता है।
Math.random() क्यों नहीं
Math.random() सुरक्षा-संवेदनशील उपयोग के लिए निर्दिष्ट नहीं है। यह सिमुलेशन, दृश्य प्रभाव और सामान्य यादृच्छिक UI व्यवहार के लिए उपयुक्त है, लेकिन यह पासवर्ड, रीसेट कोड, साइनिंग कुंजी या अन्य क्रेडेंशियल्स के लिए अपेक्षित गारंटी प्रदान नहीं करता है।
PwdGen असुरक्षित स्यूडो-रैंडम फॉलबैक को विफलता स्थिति मानता है। यदि Web Crypto उपलब्ध नहीं है, तो जनरेटर को चुपचाप कमजोर क्रेडेंशियल उत्पन्न करने के बजाय संगतता त्रुटि दिखानी चाहिए।
रिजेक्शन सैंपलिंग
यादृच्छिक बाइट्स और पूर्णांक आमतौर पर दो की शक्ति वाली सीमा से लिए जाते हैं। पासवर्ड वर्णमाला का आकार शायद ही कभी उस सीमा को बिल्कुल विभाजित करता है। सीधा मॉड्यूलो ऑपरेशन कुछ वर्णों को दूसरों की तुलना में थोड़ा अधिक संभावित बना सकता है।
PwdGen रिजेक्शन सैंपलिंग का उपयोग करता है:
- 32-बिट अहस्ताक्षरित पूर्णांक निकालें।
- वर्णमाला आकार का सबसे बड़ा गुणज ज्ञात करें जो 32-बिट सीमा के अंदर फिट बैठता है।
- उस सीमा से ऊपर के मानों को अस्वीकार करें।
- केवल शेष पूर्ण सीमा पर मॉड्यूलो लागू करें।
यह मापने योग्य मॉड्यूलो पूर्वाग्रह पेश किए बिना बाउंडेड कैरेक्टर चयन को एकसमान रखता है।
कैरेक्टर कवरेज और एंट्रॉपी
कॉन्फ़िगर की गई पासवर्ड नीतियों के लिए, जनरेटर पहले प्रत्येक सक्षम वर्ग से एक कैरेक्टर चुनता है, शेष को संयुक्त वर्णमाला से भरता है, और फिर परिणाम को शफल करता है। यह गंतव्य पासवर्ड नियमों को संतुष्ट करने में मदद करता है बिना किसी पूर्वानुमानित वर्ग को पूर्वानुमानित स्थिति में रखे।
सैद्धांतिक एंट्रॉपी अनुमान है:
bits = length × log2(uniqueAlphabetSize)
यह मान कॉन्फ़िगर की गई वर्णमाला से समान रूप से यादृच्छिक विकल्पों के लिए एक ऊपरी सीमा है। यह पासवर्ड पुन: उपयोग, उपयोगकर्ता-संपादित आउटपुट, समझौता किए गए उपकरणों, लीक हुए पासवर्ड या गंतव्य सेवा द्वारा कमजोर भंडारण के लिए जिम्मेदार नहीं है।
गोपनीयता सीमा
ब्राउज़र टूल में, उत्पन्न मान पेज मेमोरी और दृश्य परिणाम फ़ील्ड में तब तक रहते हैं जब तक उपयोगकर्ता उन्हें कॉपी या निर्यात नहीं करता। स्थानीय जनरेटर उत्पन्न पासवर्ड को PwdGen सर्वर पर नहीं भेजते, उन्हें URL में नहीं डालते, या उन्हें एनालिटिक्स इवेंट में नहीं लिखते।
यह सीमा दुर्भावनापूर्ण ब्राउज़र एक्सटेंशन, क्लिपबोर्ड मैनेजर, ऑपरेटिंग-सिस्टम समझौता, स्क्रीन कैप्चर, फ़िशिंग पेज या उपयोगकर्ता द्वारा उत्पन्न पासवर्ड को असुरक्षित गंतव्य में पेस्ट करने से रक्षा नहीं करती है।
पुन: प्रस्तुत करने योग्य कार्यान्वयन
सार्वजनिक pwdgen-cli पैकेज और तैयार pwdgen-core पैकेज जनरेशन मॉडल को वेब पेज के बाहर निरीक्षण योग्य रखने के लिए मौजूद हैं। यूनिट परीक्षण कैरेक्टर-क्लास समावेशन, बहिष्कृत वर्ण, अमान्य कॉन्फ़िगरेशन, एंट्रॉपी फ़ॉर्मूले और असुरक्षित स्यूडो-रैंडम फॉलबैक कोड पथों की अनुपस्थिति को कवर करते हैं।
लक्ष्य PwdGen को एक निजी मानक बनाना नहीं है। लक्ष्य कार्यान्वयन को इतना छोटा बनाना है कि डेवलपर्स इसे पढ़, परीक्षण और बदल सकें जब उनके वातावरण को एक अलग विश्वास सीमा की आवश्यकता हो।