8 संख्याओं को 3 वर्णों से जोड़ने पर आवृत्तियाँ बदलती हैं

मान लें कि 0 से 7 तक हर पूर्णांक की संभावना बराबर है। 3 से भाग देने का शेषफल वर्ण का सूचकांक बनता है। शेषफल 0 और 1 तीन-तीन बार, और 2 दो बार आता है। मूल संख्याएँ समान संभावित हों, तब भी यहाँ शेषफलों की संभावनाएँ समान नहीं हैं। यही मॉड्यूलो बायस है।

0 % 3 = 0    1 % 3 = 1    2 % 3 = 2
3 % 3 = 0    4 % 3 = 1    5 % 3 = 2
6 % 3 = 0    7 % 3 = 1
// counts: [3, 3, 2]

अंतिम दो संख्याएँ हटाने पर आवृत्तियाँ बराबर होती हैं

6 और 7 को अस्वीकार करके नई संख्या लें। स्वीकार की गई 0 से 5 की संख्याओं में हर शेषफल दो बार आता है। मूल संख्याओं की समान संभावना की धारणा पर यह स्वीकार की गई सीमा का पक्षपात हटाता है। अस्वीकृत संख्या का दोबारा उपयोग नहीं होता।

0 से 7 की संख्याओं के शेषफलों की गिनती 3, 3, 2 है; 6 और 7 हटाने के बाद गिनती 2, 2, 2 है।
छोटे उदाहरण की गणना से बनाया गया हमारा आवृत्ति आरेख। बाएँ 0 से 7 तक सभी संख्याएँ हैं; दाएँ केवल 0 से 5 स्वीकार हैं। यह ब्राउज़र की रैंडम संख्याओं का मापा गया वितरण नहीं है।

Moyoutil का randomInt, crypto.getRandomValues से Uint32Array(1) भरता है। सीमा निकालने के लिए 2^32 को विकल्पों की संख्या से भाग देते हैं, नीचे की ओर पूर्णांक करते हैं और फिर विकल्पों की संख्या से गुणा करते हैं। सीमा के बराबर या उससे अधिक मान अस्वीकार कर नई संख्या ली जाती है। तीन विकल्पों के लिए सीमा 4294967295 है; केवल अधिकतम मान अस्वीकार होता है।

Math.floor(4294967296 / 3) * 3
// 4294967295
// accept: 0 through 4294967294
// reject: 4294967295

W3C Web Cryptography: getRandomValues

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

वर्ण प्रकार शामिल करना हर स्थान के स्वतंत्र चयन से अलग है

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

लंबाई 4 से 128 तक पूर्णांक होनी चाहिए और कम से कम एक वर्ण प्रकार चुना होना चाहिए। भिन्नात्मक लंबाई, सीमा से बाहर लंबाई या सभी प्रकार अचयनित होने पर त्रुटि आती है। चार वर्ण स्वीकार होना चार को सुरक्षित न्यूनतम नहीं बनाता। NIST SP 800-63B-4 अपने दायरे के सत्यापकों से एकल-कारक पासवर्ड के लिए कम से कम 15 वर्ण और बहु-कारक प्रमाणीकरण के भाग के रूप में पासवर्ड के लिए आठ वर्ण माँगता है। ये हर वेबसाइट के सार्वभौमिक इनपुट नियम नहीं हैं।

NIST SP 800-63B-4: पासवर्ड सत्यापक की आवश्यकताएँ

निर्माण के बाद स्क्रीन को सहेजने और साफ़ करने के बीच अंतर करें।

  1. आपके द्वारा उपयोग की जाने वाली सेवा के लिए स्वीकार्य लंबाई और चरित्र शर्तों की जाँच करें। मोयूटिल की डिफ़ॉल्ट लंबाई 20 है, और आप लंबाई और प्रकार को समायोजित कर सकते हैं।
  2. वर्तमान सेटिंग से नया पासवर्ड बनाएँ। सेटिंग बदलने पर पुराना परिणाम मिटता है और कॉपी करना बंद हो जाता है। फिर से बनाने का बटन दबाएँ।
  3. प्रत्येक साइट के लिए अलग-अलग पासवर्ड का उपयोग करें और उन्हें पासवर्ड मैनेजर में रखें। यह टूल पासवर्ड वॉल्ट या सेवा लॉगिन कार्यक्षमता प्रदान नहीं करता है।
  4. स्क्रीन परिणाम साफ़ करने से स्क्रीन खाली हो जाती है, लेकिन कॉपी की गई क्लिपबोर्ड सामग्री नहीं हटती। क्लिपबोर्ड और साझा किए गए डिवाइस की स्थिति अलग से जांचें।

NIST SP 800-63B-4: पासवर्ड मैनेजर और अलग-अलग पासवर्ड

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

अक्सर पूछे जाने वाले प्रश्न

क्या सभी विशेष वर्ण चुनना सुरक्षा के लिए आवश्यक है?

केवल वर्ण प्रकार सुरक्षा तय नहीं करते। सेवा की आवश्यकताएँ, पर्याप्त लंबाई, हर सेवा के लिए अलग पासवर्ड और सुरक्षित भंडारण साथ में देखें।

क्या यह आलेख ब्राउज़र यादृच्छिक संख्या गुणवत्ता की पुष्टि करता है?

नहीं। हमने छोटी सीमा की सभी संख्याएँ गिनीं और प्रोजेक्ट फ़ंक्शन की अस्वीकृति सीमा दोहराई। ब्राउज़र की एन्ट्रापी या पासवर्ड अनुमान लगाने का समय नहीं मापा।