डेवलपर सुरक्षा

पासवर्ड जेनरेटर

किससे बनाएँ
मज़बूती बहुत मज़बूत
129 बिट एन्ट्रॉपी · अनुमान लगाने में लगभग 977,802,379,118 युग
शामिल कीजिए

87 अक्षरों में से चुना जा रहा है

आपके ब्राउज़र में बना · न कभी भेजा गया, न सहेजा गया

लोकल · crypto.getRandomValues · कभी भेजा नहीं जाता

मज़बूत पासवर्ड वही है जो लंबा हो और रैंडम निकाला गया हो। पूरे 87 अक्षरों के समूह से बीस अक्षर लगभग 129 बिट एन्ट्रॉपी देते हैं; आठ अक्षर जिनमें एक @ बदला हुआ हो और आख़िर में विस्मयादिबोधक लगा हो, ठीक वही पैटर्न हैं जिन्हें क्रैकिंग सॉफ़्टवेयर सबसे पहले आज़माता है। उसी ड्रॉ से पाँच शब्दों का पासफ़्रेज़, PIN, या hex, Base32, Base58, Base62 और UUID में टोकन भी बनता है।

पासवर्ड कैसे बनाएँ

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

मीटर के नीचे दिखने वाली संख्या बिट में एन्ट्रॉपी है, और वह जेनरेटर को नापती है, उस स्ट्रिंग को नहीं जो निकली। यह फ़र्क़ मायने रखता है: इस टूल को पता है कि पासवर्ड एक ज्ञात आकार के समूह से एकसमान रूप से रैंडम चुना गया है, इसलिए 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 से बनाता है, जो ऑपरेटिंग सिस्टम का अपना क्रिप्टोग्राफ़िक जेनरेटर है, और वह अगले ड्रॉ तक बस एक वेरिएबल में रहता है। न डिस्क पर लिखा जाता है, न कुकी में, न लोकल स्टोरेज में — और इंटरनेट बंद कर देने पर भी टूल चलता रहता है।

NIST SP 800-63B rev 4, डिजिटल पहचान दिशानिर्देशMDN, Crypto.getRandomValues()
क्या यह टूल काम आया?
सिर्फ़ आंतरिक संकेत · इससे पता चलता है कि कौन-सा टूल दोबारा बनाने लायक़ है