# पासवर्ड और पासफ़्रेज़ — मज़बूत और रैंडम, आपके ब्राउज़र में बना

यहीं बनता है, आपके अपने ब्राउज़र से, और कहीं नहीं भेजा जाता। कुछ भी सेव नहीं होता और कोई हिस्ट्री नहीं रहती।

> एक मज़बूत रैंडम पासवर्ड बनाइए, या पेज के साथ आने वाली 7,776 शब्दों की सूची से डाइसवेयर पासफ़्रेज़ बनाइए। ब्राउज़र के अपने क्रिप्टोग्राफ़िक जनरेटर से निकलता है, कहीं नहीं जाता और कहीं सेव नहीं होता। मुफ़्त, बिना साइन-अप।

यह पेज एक इंटरैक्टिव टूल है जो पूरी तरह आपके ब्राउज़र में चलता है, https://abox.tools/hi/password-generator/ पर — आप इसे जो भी देते हैं, वह कहीं अपलोड नहीं होता। आगे वह सब कुछ है जो यह पेज इस टूल के बारे में शब्दों में कहता है; इसे इस्तेमाल करने के लिए यह पता खोलें।

## यह टूल पासवर्ड और पासफ़्रेज़ **कभी अपलोड नहीं करता**। यहाँ कोई सर्वर है ही नहीं।

हर कैरेक्टर `crypto.getRandomValues` से आता है, यानी ब्राउज़र के अपने क्रिप्टोग्राफ़िक जनरेटर से, और हर शब्द इसी फ़ोल्डर में रखी `src/wordlist.js` से। `src/` में कहीं भी न `fetch` है, न `XMLHttpRequest`, न `sendBeacon`, इसलिए यहाँ बना पासवर्ड हम तक या किसी और तक पहुँचे, ऐसा कोई रास्ता ही नहीं है। सेव भी कुछ नहीं होता, यानी इस पेज को दोबारा लोड करते ही वे सारे पासवर्ड मिट जाते हैं जो इसने आपको दिखाए थे।

- ✗ कोई अपलोड नहीं
- ✗ कोई अकाउंट नहीं
- ✗ कुछ सेव नहीं
- ✓ ऑफ़लाइन चलता है
- ✓ ओपन सोर्स

## बिना किसी वेबसाइट को दिखाए मज़बूत पासवर्ड कैसे बनाएँ

1. **पहले तय कीजिए, पासवर्ड या पासफ़्रेज़।** पासवर्ड रैंडम कैरेक्टरों की एक लड़ी है। रखने में छोटा, टाइप करने में झंझट, और उन सैकड़ों अकाउंट के लिए बिलकुल सही जिन्हें आपका पासवर्ड मैनेजर खुद भर देता है। पासफ़्रेज़ एक सूची से रैंडम निकाले गए शब्द हैं। वह लंबा होता है, पर याद रहता है और बोला जा सकता है, और यही उन गिने-चुने राज़ों के लिए चाहिए जो आपको खुद याद से टाइप करने पड़ते हैं, जैसे पासवर्ड मैनेजर का अपना पासवर्ड, लैपटॉप का पासवर्ड, फ़ोन का रिकवरी कोड।
2. **लंबाई तय कीजिए, या शब्दों की संख्या।** असल सेटिंग यही है, बाकी ज़्यादातर नहीं। जो चीज़ बचाने लायक है उसके लिए बीस कैरेक्टर, या छह शब्द, एक समझदार न्यूनतम है। जिस अकाउंट से बाकी सारे रीसेट हो सकते हों, उसके लिए इससे ऊपर जाइए। नीचे का आँकड़ा स्लाइडर खींचते ही बदलता है, इसलिए हर अतिरिक्त कैरेक्टर से क्या मिलता है, वह आप वहीं देख लेंगे।
3. **वे नियम चालू कीजिए जिन पर फ़ॉर्म अड़ेगा।** “हर तरह से कम से कम एक”, आखिर में एक अंक, उस छोटी सूची में से एक चिह्न जिसे हर साइट लेती है। इनमें से कोई भी किसी चीज़ को मज़बूत नहीं करता, और पहला तो उसे ज़रा-सा कमज़ोर कर देता है, जिसे यह पेज पहले ही घटा चुका है। पर छह पासवर्ड लगातार बनाए बिना किसी साइन-अप फ़ॉर्म से निकलने का तरीका यही है।
4. **संख्या पढ़िए, रंग नहीं।** बिट उन्हीं सेटिंग्स से गिने जाते हैं जिनसे वह स्ट्रिंग बनी है, यानी कैरेक्टर सेट कितना बड़ा था और कितनी बार चुनाव हुआ, और बस इतना ही। यह असली माप है, साइन-अप पेज के उस मीटर जैसा नहीं जो सामने पड़े कैरेक्टरों को नंबर देने के अलावा कुछ नहीं कर सकता, और जिसके पास यह जानने का कोई ज़रिया नहीं कि उन्हें आपने चुना था या किसी जनरेटर ने।
5. **जाने से पहले कॉपी कीजिए और कहीं रख दीजिए।** यहाँ कोई हिस्ट्री नहीं है और दोबारा माँगने का कोई तरीका नहीं। पेज दोबारा लोड होते ही वह मिट जाता है। पहले पासवर्ड मैनेजर में चिपकाइए और उसके बाद साइन-अप फ़ॉर्म में, ताकि जिसे उसे याद रखना है उसके पास वह पहले पहुँच जाए।
6. **ज़रूरत हो तो एक साथ कई बनाइए।** सबसे नीचे वाला स्लाइडर एक बार में सौ तक बनाता है और उन्हें सादी टेक्स्ट फ़ाइल में सहेज देता है, जिसे यही पेज उसी चीज़ से लिखता है जो पहले से आपकी स्क्रीन पर है। नए अकाउंट बनाने या शुरुआती पासवर्ड बाँटने में काम आता है, और जैसे ही वे किसी बेहतर जगह पहुँच जाएँ, फ़ाइल मिटा देना ठीक रहता है। डिस्क पर पड़ी पासवर्डों से भरी फ़ाइल आखिर पासवर्डों से भरी फ़ाइल ही है।

## बॉक्स में और भी टूल

- [JSON फ़ॉर्मैटर](https://abox.tools/hi/json-formatter/): JSON, XML, HTML, CSS और YAML, सजाए हुए या बदले हुए। कुछ भी किसी और के सर्वर में चिपकाया नहीं जाता।
- [YAML से JSON कन्वर्टर](https://abox.tools/hi/yaml-to-json/): दोनों दिशाएँ, और हर दिशा की कीमत भी बताई जाती है। इनमें से कुछ भी किसी और के सर्वर में पेस्ट नहीं होता।
- [XML फ़ॉर्मैटर](https://abox.tools/hi/xml-formatter/): पढ़ने के लिए सजाया गया XML या भेजने के लिए दबाकर सपाट किया गया XML, और दोनों तरफ़ JSON में बदला हुआ। इनमें से कुछ भी किसी और के सर्वर में पेस्ट नहीं होता।
- [टेक्स्ट डिफ़](https://abox.tools/hi/text-diff/): दो टेक्स्ट भीतर, हर फ़र्क निशान लगाकर बाहर, पंक्ति-दर-पंक्ति और शब्द-दर-शब्द। कुछ भी किसी और के सर्वर में चिपकाया नहीं जाता।

## सवाल

### क्या पासवर्ड कहीं भेजे जाते हैं या सेव होते हैं?

दोनों में से कुछ नहीं। वे आपके ब्राउज़र में, आपके अपने डिवाइस पर बनते हैं, और इस टूल में नेटवर्क वाला कोई फ़ीचर है ही नहीं। यह न कभी कुछ मँगाता है, न कभी कुछ भेजता है। स्टोरेज में भी कुछ नहीं लिखा जाता, न localStorage, न कुकी, न हिस्ट्री। पेज दोबारा लोड कीजिए और जो पासवर्ड इसने दिखाए थे वे स्क्रीन से भी और इसकी अपनी मेमोरी से भी चले जाते हैं। पेज की `Content-Security-Policy` में वह हर पता लिखा है जिससे यह बात कर सकता है, और उनमें से कोई हमारा नहीं, इसलिए कुछ भेजना चाहे भी तो कहीं पहुँचेगा नहीं।

### रैंडमनेस कहाँ से आती है?

`crypto.getRandomValues` से, यानी उस जनरेटर से जो ब्राउज़र क्रिप्टोग्राफ़ी के लिए देते हैं और जिसे आपके ऑपरेटिंग सिस्टम का अपना एन्ट्रॉपी पूल बीज देता रहता है। ब्राउज़र TLS की चाबियाँ भी इसी स्रोत से निकालता है। इस टूल में `Math.random` कहीं इस्तेमाल नहीं होता, और यह फ़र्क बाल की खाल निकालना नहीं है। `Math.random` एक तेज़ गणितीय जनरेटर है जिसकी पूरी अंदरूनी स्थिति लगातार आए कुछ आउटपुट से दोबारा बनाई जा सकती है, इसलिए उस पर बना पासवर्ड जनरेटर ऐसे पासवर्ड देता है जो रैंडम दिखते हैं और जिन्हें उनमें से एक देख लेने वाला कोई भी गिन सकता है।

### क्या ब्राउज़र में बना पासवर्ड कंप्यूटर पर इंस्टॉल किसी प्रोग्राम जितना ही अच्छा है?

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

### पासवर्ड लूँ या पासफ़्रेज़?

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

### पासवर्ड कितना लंबा होना चाहिए?

पूरे कैरेक्टर सेट के साथ बीस कैरेक्टर लगभग 130 बिट होते हैं, यानी उस जगह से काफ़ी आगे जहाँ लंबाई चिंता की बात रह जाती है। सोलह भी ठीक है। बारह उस हर चीज़ के लिए न्यूनतम है जिसका खोना खलेगा, और वह न्यूनतम है, लक्ष्य नहीं। उससे नीचे आप इस भरोसे पर हैं कि साइट ने उसे ठीक से रखा होगा, और पिछले बीस साल की लीक की खबरें यह दाँव लगाने से मना करती हैं। लंबाई इस पेज की हर दूसरी सेटिंग पर भारी पड़ती है। एक कैरेक्टर बढ़ाना उस हर नियम से ज़्यादा काम करता है कि कौन-से कैरेक्टर आने ही चाहिए।

### पासफ़्रेज़ में कितने शब्द होने चाहिए?

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

### “बिट” क्या है, और यह पेज उन्हें गिनता क्यों है?

एक बिट यानी दोगुना हो जाना। साठ बिट का मतलब है कि इस पेज के सामने 2^60 बराबर संभावना वाले नतीजे थे, इसलिए जो पूरी तरह जानता हो कि यह कैसे काम करता है, उसे भी उतने ही आज़माने पड़ेंगे। यह उस स्ट्रिंग का नहीं, उस *तरीके* का गुण है। पेज इसे ठीक-ठीक बता सकता है क्योंकि चुनाव उसी ने किया था और उसे पता है कि कितनी बार किया। साइन-अप फ़ॉर्म की उस रंगीन पट्टी से फ़र्क यही है, जो कैरेक्टर पढ़कर अंदाज़ा लगाती है। उस पट्टी पर `correct horse battery staple` का नंबर खराब आता है जबकि वह असल में 44 बिट है, और `P@ssw0rd!` का नंबर अच्छा आता है जबकि वह असल में करीब-करीब बेकार है।

### “एक चिह्न ज़रूरी है” वाला नियम पासवर्ड को कमज़ोर क्यों करता है?

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

### यह कौन-सी शब्द सूची है, और क्या हमलावर के इसे डाउनलोड कर सकने से फ़र्क पड़ता है?

यह Electronic Frontier Foundation की डाइसवेयर सूचियाँ हैं, बिना बदलाव के साथ भेजी गईं: लंबी में 7,776 शब्द और छोटी में 1,296। वे ठीक इसी काम के लिए बनाई गई थीं, इसलिए उनमें कुछ भी आपत्तिजनक नहीं है, समान सुनाई देने वाले शब्द नहीं हैं, ऐसे जोड़े नहीं हैं जो मिलकर तीसरा शब्द बन जाएँ, और छोटी सूची में कोई शब्द किसी दूसरे शब्द की शुरुआत नहीं है। और नहीं, सूची सार्वजनिक होने से फ़र्क नहीं पड़ता। यहाँ जो मज़बूती बताई गई है वह पहले ही मान लेती है कि हमलावर के पास सूची है, वह इस पेज का सोर्स पढ़ रहा है, और आपकी हर सेटिंग जानता है। उसे बस यह नहीं पता कि हर बार 7,776 में से कौन-सा शब्द निकला। यही मान्यता उस संख्या को भरोसेमंद बनाती है।

### क्या पासफ़्रेज़ डिक्शनरी अटैक को न्योता नहीं है?

इस तरह चुने गए शब्दों के साथ नहीं। डिक्शनरी अटैक उन वाक्यों पर चलता है जो *लोग* खुद सोचते हैं, क्योंकि लोग ऐसे शब्द चुनते हैं जो आपस में जँचते हों, ऐसे क्रम में जिसका मतलब बनता हो, और उन्हीं कुछ हज़ार शब्दों में से जो वे रोज़ बोलते हैं। यह पेज हर शब्द एक तय सूची से अलग-अलग और बराबर संभावना के साथ निकालता है, इस बात की परवाह किए बिना कि नतीजा पढ़ने में कैसा लगेगा, इसीलिए वह अक्सर अटपटा ही लगता है। जो हमलावर सूची भी जानता हो और शब्दों की संख्या भी, उसके सामने फिर भी 7,776 की उतनी घात रहती है।

### पेज छोड़ने के बाद क्या पासवर्ड वापस मिल सकता है?

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

### क्लिपबोर्ड पर कॉपी करना सुरक्षित है?

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

### क्या एक ही पासवर्ड एक से ज़्यादा जगह इस्तेमाल कर सकते हैं?

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

### क्या यह मुफ़्त है, और क्या अकाउंट चाहिए?

यह मुफ़्त है, कोई अकाउंट नहीं, कोई साइन-इन नहीं, कोई ट्रायल नहीं, और कितने भी बनाइए, कोई सीमा नहीं। साइट पर विज्ञापन हैं और उन्हीं से इसका खर्च चलता है। विज्ञापनों को इस पेज के बनाए हुए के बारे में कुछ भी नहीं दिया जाता, न उसकी लंबाई, न उसकी मज़बूती।

### क्या यह ऑफ़लाइन काम करता है?

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

## प्राइवेसी का यह दावा कैसे जाँचा जा सकता है

- **पासवर्ड वहीं बनता है जहाँ आप यह पढ़ रहे हैं।** इसी पेज में, इसी पेज के ज़रिए, उस रैंडमनेस से जो आपका अपना ऑपरेटिंग सिस्टम ब्राउज़र को देता है। इसे बनाने के लिए कुछ मँगाया नहीं जाता, और बन जाने के बाद कहीं कुछ बताया नहीं जाता। `Content-Security-Policy` में वह हर पता लिखा है जिससे यह पेज बात कर सकता है, और उनमें से एक भी हमारा नहीं है। यहाँ ऐसी कोई जगह ही नहीं जहाँ बना हुआ पासवर्ड जमा हो सके, और अगर होती भी तो कोड में उसे वहाँ भेजने वाली कोई लाइन नहीं है।
- **यहाँ कुछ भी कहीं से कुछ नहीं मँगाता।** `src/` में कहीं भी न `fetch` है, न `XMLHttpRequest`, न `sendBeacon`। शब्द सूची डाउनलोड नहीं होती, वह `src/wordlist.js` है, बाकी पेज के साथ इसी ऑरिजिन से आती है, और आप उसे खोलकर पढ़ सकते हैं।
- **रैंडमनेस ब्राउज़र की है, और सही किस्म की है।** `crypto.getRandomValues` वही जनरेटर है जो ब्राउज़र चाबियों और टोकन के लिए देते हैं, और जिसे ऑपरेटिंग सिस्टम बीज देता रहता है। `Math.random` इस फ़ोल्डर में कहीं नहीं है, और होता तो वह असली खामी होती, क्योंकि उसकी अंदरूनी स्थिति मुट्ठी भर आउटपुट से दोबारा निकाली जा सकती है। इसका मतलब है कि जिसने उसका एक पासवर्ड देख लिया, वह उसके आगे बनने वाले सारे पासवर्ड गिन सकता है।
- **कुछ सेव नहीं होता, इसलिए मिटाने को कोई हिस्ट्री ही नहीं।** न localStorage, न sessionStorage, न कुकी, न URL में कोई पैरामीटर, और न ही ऐसा कोई `<input>` जिसे याद रखने की पेशकश ब्राउज़र करे। स्क्रीन पर जो है वह इस पेज की मेमोरी में सिर्फ़ एक ऐरे में है, और टैब बंद कर देना ही पूरी सफ़ाई है। यहाँ जो बनता है उसकी कॉपी सिर्फ़ वही है जो आप साथ ले जाते हैं।
- **गूगल क्या लोड करता है, और उसे क्या नहीं मिलता।** विज्ञापन और माप वाली स्क्रिप्ट गूगल की हैं, और दान वाला बटन Buy Me a Coffee का। इनमें से किसी को भी इस पेज के बनाए हुए का एक कैरेक्टर नहीं मिलता, न उसकी लंबाई, न उसकी मज़बूती, न यह कि किन सेटिंग्स से बना। जो भी लाइन कोई कैरेक्टर या शब्द निकालती है, वह इसी ऑरिजिन से आती है और रिपॉज़िटरी में मौजूद है।
- **यह ऑफ़लाइन चलता है।** नेटवर्क काट दीजिए, टूल वैसा का वैसा रहता है, क्योंकि इसमें नेटवर्क वाला कदम कभी था ही नहीं। यही सबसे आसान सबूत है। जो जनरेटर अपनी रैंडमनेस सर्वर से मँगाता हो, वह तार निकालते ही रुक जाएगा।

**खुद जाँच लीजिए।** ऊपर लिखी किसी भी बात को भरोसे पर मानने की ज़रूरत नहीं। यह पेज रिपॉज़िटरी के टेम्पलेट और कॉन्फ़िग से बनता है, एक ऐसी बिल्ड स्क्रिप्ट के ज़रिए जिसे आप पढ़ भी सकते हैं और खुद चला भी सकते हैं। उसका नतीजा `dist` ब्रांच पर कमिट रहता है, यानी जो सर्व हो रहा है और सोर्स से बिल्ड करने पर जो बनता है, दोनों का फ़र्क आप खुद देख सकते हैं: https://github.com/A-Box-of-Tools/website

सबसे पहले पढ़ने लायक फ़ाइलें ये हैं — Content-Security-Policy के लिए `config/site.toml`, `src/random.js` उन चालीस लाइनों के लिए जो इस पेज और इसके बनाए हर पासवर्ड के बीच खड़ी हैं। उनका इनपुट एक ही है, और वह ब्राउज़र का अपना जनरेटर है। `src/generate.js` यह देखने के लिए कि सेटिंग्स कैसे एक स्ट्रिंग बनती हैं, और `src/strength.js` उस संख्या के पीछे के गणित के लिए, जो अंदाज़ा लगाने के बजाय गिनता है।
