पासवर्ड जेनरेटर
87 अक्षरों में से चुना जा रहा है
आपके ब्राउज़र में बना · न कभी भेजा गया, न सहेजा गया
मज़बूत पासवर्ड वही है जो लंबा हो और रैंडम निकाला गया हो। पूरे 87 अक्षरों के समूह से बीस अक्षर लगभग 129 बिट एन्ट्रॉपी देते हैं; आठ अक्षर जिनमें एक @ बदला हुआ हो और आख़िर में विस्मयादिबोधक लगा हो, ठीक वही पैटर्न हैं जिन्हें क्रैकिंग सॉफ़्टवेयर सबसे पहले आज़माता है। उसी ड्रॉ से पाँच शब्दों का पासफ़्रेज़, PIN, या hex, Base32, Base58, Base62 और UUID में टोकन भी बनता है।
पासवर्ड कैसे बनाएँ
मीटर के नीचे दिखने वाली संख्या बिट में एन्ट्रॉपी है, और वह जेनरेटर को नापती है, उस स्ट्रिंग को नहीं जो निकली। यह फ़र्क़ मायने रखता है: इस टूल को पता है कि पासवर्ड एक ज्ञात आकार के समूह से एकसमान रूप से रैंडम चुना गया है, इसलिए log2(समूह^लंबाई) बिल्कुल सही है। किसी इंसान के बनाए पासवर्ड को देखने वाला चेकर सिर्फ़ अंदाज़ा लगा सकता है, और «Bharat@2024» को वह नंबर दे देगा जिसका वह हक़दार नहीं। अनुमानित क्रैकिंग समय दस अरब अनुमान प्रति सेकंड वाले ऑफ़लाइन हमले को मानकर चलता है — यानी एक आधुनिक GPU के सामने ख़राब तरीक़े से हैश किया डेटाबेस — और यह जानबूझकर निराशावादी है।
अक्षरों के समूह ही एक फ़ॉर्म से कई काम करवाते हैं, और PIN मोड उसी बात को खुलकर कहता है: सिर्फ़ अंक, तीन से बारह तक, और शुरुआत के शून्य बरक़रार। आख़िरी बात जितनी छोटी लगती है उससे ज़्यादा मायने रखती है, क्योंकि जो जेनरेटर चुपचाप शुरुआती शून्य हटा देता है वह चार अंकों वाले PIN की दसवीं हिस्से संभावनाएँ ही ख़त्म कर देता है। इंसानों के चुने PIN बुरी तरह एक ही जगह जमा होते हैं — 1234, 1111, 0000 और 19 से शुरू होने वाले जन्म-वर्ष असली PIN का चौंकाने वाला हिस्सा घेर लेते हैं — इसलिए दो क्लिक ख़र्च करके एक निकाल लेना ठीक रहता है। वैसे भी PIN बनावट से ही कमज़ोर होता है: चार अंक यानी दस हज़ार संभावनाएँ, जो वहाँ ठीक है जहाँ कोशिशें सीमित हों और वहाँ बेकार जहाँ हमलावर खुलकर अंदाज़े लगा सके।
दूसरे सिरे पर, जिस राज़ को सिर्फ़ मशीन पढ़ती है वह जितना लंबा और भद्दा चाहे उतना हो सकता है। API की या सेशन टोकन के लिए आम लक्ष्य 128 बिट है, जिसे पूरे समूह से बीस अक्षर थोड़ी बचत के साथ पार कर लेते हैं। अगर मान को URL या शेल से बिना एस्केप किए गुज़रना है तो सिर्फ़ अक्षर और अंक रखिए; रास्ते में दिक़्क़त चिह्नों वाला हिस्सा ही करता है। नाम वाली वर्णमालाएँ यही काम साफ़-साफ़ करती हैं: hex में हर अक्षर चार बिट, base32 में पाँच, base58 और base62 में छह से ज़रा कम, और वर्शन 4 UUID में तय 122। बत्तीस hex अक्षर वही 128-बिट लक्ष्य है, उस रूप में लिखा हुआ जिस रूप में ज़्यादातर API उसे लेना चाहती हैं, और base58 तब चुनिए जब मान किसी इंसान को बोलकर बताना हो, क्योंकि उसमें 0, O, I और l होते ही नहीं।
शब्द वही गणित एक स्तर ऊपर हैं, और यह मोड उन गिने-चुने पासवर्ड के लिए है जो आप चिपकाने के बजाय हाथ से टाइप करते हैं। हर शब्द का मान सूची के आकार का log2 है: यह पेज चार अक्षर या उससे लंबे लगभग 48,500 अंग्रेज़ी शब्दों में से निकालता है, यानी हर शब्द 15.5 बिट, इसलिए पाँच शब्द क़रीब 78 बिट और छह 93। सूची अंग्रेज़ी में है, और यह जानबूझकर है: एन्ट्रॉपी ड्रॉ की विशेषता है, इस बात की नहीं कि आप शब्द पहचानते हैं या नहीं — पाँच शब्द आपको वही 78 बिट देंगे, समझ आएँ या न आएँ। शब्द वाला मोड जो एक चीज़ ख़रीदता है वह है याद रह जाना, और अगर आप वाक्यांश बोल ही नहीं सकते तो वही चीज़ हाथ से निकल जाती है; ऐसे में बीस रैंडम अक्षर लीजिए और उन्हें पासवर्ड मैनेजर में रख दीजिए। Diceware ने यह विचार 7,776 शब्दों की सूची और असली पासों पर खड़ा किया था, 12.9 बिट प्रति शब्द; यहाँ वही प्रक्रिया है, पासों की जगह crypto.getRandomValues के साथ। जोड़ने वाला चिह्न और बड़े अक्षर कुछ नहीं जोड़ते, क्योंकि हमलावर वे दोनों पहले से मान लेता है। आख़िर की संख्या अपवाद है और मीटर उसे गिनता है: वह 10 से 99 के बीच से रैंडम निकाली जाती है, यानी सचमुच log2(90) — क़रीब 6.5 बिट।
लंबाई लगभग हमेशा सस्ता उपाय है। समूह को 62 अक्षरों से 87 तक ले जाने पर प्रति अक्षर आधा बिट मिलता है, जबकि चार अक्षर और जोड़ने पर लगभग चौबीस। यही वजह है कि NIST का मौजूदा मार्गदर्शन न्यूनतम लंबाई बढ़ाता है और बनावट के नियम हटाता है, न कि उल्टा।
लोग इसे किस काम में लेते हैं
- किसी डेटा लीक में आ चुका पासवर्ड बदलना
- सिर्फ़ अंक चुनकर चार या छह अंकों का PIN निकालना
- उस इकलौते पासवर्ड के लिए पाँच शब्दों का पासफ़्रेज़ बनाना जो हाथ से टाइप होता है
- 32 अक्षरों की hex API की या ऐसा base58 टोकन बनाना जो कोई बोलकर बता सके
- नए खाते के लिए पासवर्ड मैनेजर में प्रविष्टि भरना
- ऐसी साइट की शर्त पूरी करना जो चिह्न और बड़ा अक्षर माँगती है
सवाल
दोनों में से कुछ नहीं। इसे आपका ब्राउज़र crypto.getRandomValues से बनाता है, जो ऑपरेटिंग सिस्टम का अपना क्रिप्टोग्राफ़िक जेनरेटर है, और वह अगले ड्रॉ तक बस एक वेरिएबल में रहता है। न डिस्क पर लिखा जाता है, न कुकी में, न लोकल स्टोरेज में — और इंटरनेट बंद कर देने पर भी टूल चलता रहता है।
सोलह अक्षर उचित न्यूनतम है और बीस आरामदेह। तीस के आसपास के बाद आप उस बिंदु से आगे निकल जाते हैं जहाँ लंबाई सबसे कमज़ोर कड़ी होती है।
मदद करते हैं, पर उतना नहीं जितना लोग समझते हैं। चार अक्षर लंबाई बढ़ाने से ज़्यादा एन्ट्रॉपी मिलती है, बनिस्बत चिह्नों का पूरा समूह जोड़ने के। जहाँ साइट माँगे, वहाँ इस्तेमाल कीजिए।
नहीं। बनाए हुए पासवर्ड का पूरा मतलब ही यह है कि वह एक ही खाते का हो, ताकि एक साइट का लीक दूसरी न खोल सके। पासवर्ड मैनेजर इसी के लिए है।
हाँ, और यह अक्षरों जितना ही शब्दों पर भी लागू होता है। «रैंडम» चुनते हुए लोग वही आकृतियाँ दोहराते हैं: शुरू में बड़ा अक्षर, आख़िर में अंक, और आपस में जुड़े थोड़े-से शब्द। क्रैकिंग टूल ठीक इन्हीं आदतों पर बने हैं।
नहीं, अंग्रेज़ी में — और एन्ट्रॉपी बिल्कुल वही रहती है: पाँच शब्द क़रीब 78 बिट हैं, चाहे आप उन्हें पहचानें या न पहचानें। जो चीज़ छूट जाती है वह शब्द-मोड की इकलौती ख़ूबी है, यानी याद रह जाना। अगर वाक्यांश ज़बान पर न चढ़े, तो बीस रैंडम अक्षर लीजिए और पासवर्ड मैनेजर में रख दीजिए।
बराबर एन्ट्रॉपी पर, दोनों एक जैसे: गणित फ़र्क़ नहीं करता। शब्दों का फ़ायदा यह है कि वे याद रह जाते हैं, और यह सिर्फ़ उन दो-तीन पासवर्ड के लिए मायने रखता है जो आप हाथ से टाइप करते हैं।
चार व्यावहारिक न्यूनतम है, पाँच आरामदेह, और मास्टर पासवर्ड या डिस्क कुंजी के लिए छह। इस सूची का हर शब्द 15.5 बिट लाता है, इसलिए पाँच क़रीब 78 हैं।
हाँ। लंबाई चार या छह कीजिए और 0-9 के सिवा सब हटा दीजिए। शुरुआत के शून्य बचे रहते हैं, इसलिए 0042 भी संभव नतीजा है।
जहाँ सिस्टम दे, वहाँ चार के बजाय छह: इससे ज़रूरी अनुमानों की संख्या सौ गुना हो जाती है, और आपको बस दो बटन ज़्यादा दबाने पड़ते हैं।
क्योंकि यही सोच सबकी है। जन्म-वर्ष, दोहराए हुए अंक और 1234 असली PIN के आँकड़ों पर छाए रहते हैं।
हाँ। कम से कम 128 बिट का लक्ष्य रखिए, जिसे पूरे समूह से बीस अक्षर पार कर लेते हैं। अगर मान को URL या शेल से गुज़रना है तो चिह्न हटा दीजिए।
Base32 या base58। दोनों उन जोड़ियों को छोड़ देते हैं जो ग़लत पढ़ी जाती हैं; base58 इसी वजह से 0, O, I और l हटा देता है।
वर्शन 4 UUID में 122 रैंडम बिट होते हैं, इसलिए गणित के हिसाब से हाँ। व्यवहार में UUID लॉग में, छपाई में और URL में पहुँच जाते हैं क्योंकि हर सिस्टम उन्हें पहचानकर्ता मानता है — इसलिए ख़ास इसी काम के लिए बना टोकन ज़्यादा सुरक्षित आदत है।
log2(समूह ^ लंबाई): इन सेटिंग्स से बन सकने वाले बराबर-संभावना वाले पासवर्ड की गिनती। 60 बिट काम चलाऊ न्यूनतम है; 80 ऑफ़लाइन हमले को व्यावहारिक पहुँच से बाहर कर देता है।
क्योंकि कई फ़ॉन्ट में इन्हें अलग पहचानना मुश्किल है। यह इन पाँच से ज़्यादा हटाता है: l, o, I, O, 0 और 1, और वे चिह्न भी जो ग़लत टाइप हो जाते हैं या कॉपी में खो जाते हैं — ()[]{};:,.<> — कुल अठारह, जिससे पूरा समूह 87 से 69 पर और सोलह अक्षर का पासवर्ड 103 बिट से 98 पर आ जाता है। जिस पासवर्ड को बोलकर बताना हो या काग़ज़ से टाइप करना हो उसके लिए इसे चालू रखिए, और जो पासवर्ड मैनेजर में रहेगा उसके लिए बंद।
आम तौर पर लंबाई की सीमा होती है या कोई चिह्न मना होता है। उसे छोटा कीजिए या चिह्नों वाला समूह हटा दीजिए — अपने सोचे हुए पासवर्ड पर मत लौटिए।