FlowingDev

पासवर्ड स्ट्रेंथ, समझाया गया: आपके सीक्रेट का सीक्रेट इंग्रीडिएंट है... गणित

जानें कि पासवर्ड स्ट्रेंथ को एन्ट्रॉपी का उपयोग करके कैसे मापा जाता है, जो इनफॉर्मेशन थ्योरी का एक कॉन्सेप्ट है जो अप्रत्याशितता को मापता है और क्रैकिंग समय का अनुमान लगाता है।

टूल आज़माएँ: पासवर्ड मजबूती

एक वाक्य में

पासवर्ड स्ट्रेंथ यह मापती है कि एक अटैकर को आपका सीक्रेट क्रैक करने के लिए कितना अंदाज़ा (या "एन्ट्रॉपी") लगाना होगा, और उस रॉ कम्प्यूटेशनल मेहनत को इंसान द्वारा समझे जा सकने वाले समय के अनुमान में बदल देती है।

यह क्या समस्या हल करता है

शुरुआत में, कंप्यूटर थे, और उनमें डेटा था, और सब बढ़िया था। लेकिन फिर दूसरे लोग उस डेटा को देखना चाहते थे, तो हमने पासवर्ड का आविष्कार किया। शुरू में, चीजें बहुत सरल थीं। root, admin, guest। यह सिक्योरिटी से ज़्यादा बेसिक एक्सेस कंट्रोल के बारे में था, जैसे एक फाइलिंग कैबिनेट जिस पर एक कमज़ोर सा ताला लगा हो।

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

पहले आया ब्रूट-फोर्स अटैक (brute-force attack): हर एक कॉम्बिनेशन को आज़माना। 'a', 'b', 'c', ... 'aa', 'ab', ... और इसी तरह। यह काम करता है, लेकिन यह बहुत धीमा है। तो अटैकर्स और होशियार हो गए। उन्हें एहसास हुआ कि इंसान आलसी और अनुमान लगाने योग्य होते हैं। इससे डिक्शनरी अटैक (dictionary attack) का जन्म हुआ: axfsvj आज़माने के बजाय, password, sunshine, या 123456 क्यों न आज़माया जाए? यह विनाशकारी रूप से प्रभावी था।

सिस्टम एडमिनिस्ट्रेटर्स ने नीतियों के साथ जवाबी कार्रवाई की: "आपके पासवर्ड में कम से कम 8 कैरेक्टर होने चाहिए और उसमें एक नंबर और एक अपरकेस लेटर होना चाहिए!" यूज़र्स, जो हमेशा नियमों का रचनात्मक रूप से पालन करते हैं, ने Password1, Password2, और सदाबहार क्लासिक P@$$w0rd1 के साथ जवाब दिया। कॉम्प्लेक्सिटी के नियमों ने सुरक्षा का एक झूठा एहसास पैदा कर दिया।

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

यह अंदर से कैसे काम करता है

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

### एन्ट्रॉपी: द मैजिक नंबर

पासवर्ड स्ट्रेंथ की माप की इकाई एन्ट्रॉपी (entropy) है, जिसे "बिट्स (bits)" में मापा जाता है। इनफॉर्मेशन थ्योरी में, एन्ट्रॉपी अनिश्चितता या रैंडमनेस का एक माप है। पासवर्ड के लिए, यह मापता है कि आपका पासवर्ड कितना अप्रत्याशित है।

इसका मूल फ़ॉर्मूला आश्चर्यजनक रूप से सरल है:

Entropy = log₂(Search Space)

"सर्च स्पेस (Search Space)" कुछ नियमों के तहत संभावित पासवर्ड की कुल संख्या है। एक सरल, रैंडमली जेनरेट किए गए पासवर्ड के लिए, सर्च स्पेस की गणना इस प्रकार की जाती है:

Search Space = N ^ L

जहाँ:

  • N कैरेक्टर सेट में संभावित कैरेक्टर्स की संख्या है (उन सिंबल्स का पूल जिनसे आप चुन सकते हैं)।
  • L पासवर्ड की लंबाई है।

आइए इसे मुख्य फ़ॉर्मूले में वापस रखें: Entropy = log₂(N ^ L), जो सरल होकर Entropy = L * log₂(N) बन जाता है।

कुछ सामान्य कैरेक्टर सेट आकार (N):

  • केवल नंबर (0-9): N = 10
  • लोअरकेस अंग्रेज़ी अक्षर (a-z): N = 26
  • मिक्स्ड-केस अंग्रेज़ी अक्षर (a-z, A-Z): N = 52
  • अल्फान्यूमेरिक + मिक्स्ड-केस (a-z, A-Z, 0-9): N = 62
  • पूर्ण ASCII कीबोर्ड सिंबल्स: N ≈ 95

तो, केवल लोअरकेस अक्षरों का उपयोग करने वाले 8-कैरेक्टर के पासवर्ड के लिए, एन्ट्रॉपी 8 * log₂(26) है, जो लगभग 8 * 4.7 = 37.6 बिट्स है।

"37.6 बिट्स" का वास्तव में क्या मतलब है? एन्ट्रॉपी का हर एक बिट सर्च स्पेस को दोगुना कर देता है। तो, 38 बिट्स एन्ट्रॉपी वाला पासवर्ड 37 बिट्स वाले पासवर्ड की तुलना में क्रैक करने में दोगुना कठिन होता है। यही एक्सपोनेंशियल ग्रोथ है जिसके कारण सिर्फ एक या दो रैंडम कैरेक्टर जोड़ने से स्ट्रेंथ नाटकीय रूप से बढ़ सकती है।

### एन्ट्रॉपी से क्रैक टाइम तक

बिट्स कंप्यूटर के लिए बहुत अच्छे हैं, लेकिन इंसान मिनटों, सालों और युगों में सोचते हैं। क्रैक टाइम का अनुमान लगाने के लिए, हमें एक और चीज़ की ज़रूरत है: अटैकर की अनुमान लगाने की गति।

यह बहुत परिवर्तनशील है। एक ऑनलाइन अटैक (एक लाइव लॉगिन फॉर्म के खिलाफ अनुमान लगाना) को प्रति सेकंड 10 अनुमानों तक धीमा किया जा सकता है। लेकिन एक अधिक यथार्थवादी परिदृश्य एक ऑफलाइन अटैक है, जहाँ अटैकर ने पासवर्ड हैश का एक डेटाबेस चुरा लिया है। आधुनिक GPUs के साथ, वे प्रति सेकंड अरबों या खरबों हैश परफॉर्म कर सकते हैं।

मान लें कि एक शक्तिशाली अटैकर प्रति सेकंड 10 बिलियन (10¹⁰) अनुमान लगा सकता है। एक पासवर्ड को खोजने की गारंटी के लिए आवश्यक अनुमानों की संख्या 2^Entropy है। औसतन, वे इसे आधे रास्ते में ढूंढ लेंगे, इसलिए हम समय का अनुमान लगा सकते हैं:

Crack Time = (2^Entropy / 2) / GuessesPerSecond

यहां बताया गया है कि चीजें कितनी तेजी से बढ़ती हैं:

एन्ट्रॉपी (बिट्स) कुल अनुमान औसत क्रैक टाइम @ 10¹⁰ H/s सुरक्षा स्तर
30 ~1 बिलियन < 0.1 सेकंड तुच्छ
40 ~1 ट्रिलियन ~1 मिनट बहुत कमज़ोर
50 ~1 क्वाड्रिलियन ~15 घंटे कमज़ोर
60 ~1 क्विंटिलियन ~1.8 साल ठीक-ठाक
70 ~1 सेक्स्टिलियन ~1,800 साल मज़बूत
80 ~1 सेप्टिलियन > ब्रह्मांड की आयु बहुत मज़बूत

यह तालिका दिखाती है कि क्यों कुछ अतिरिक्त बिट्स एन्ट्रॉपी भी एक बहुत बड़ा अंतर पैदा करती है।

### ब्रूट फोर्स से परे: पैटर्न की समस्या

सरल L * log₂(N) फ़ॉर्मूले में एक बहुत बड़ी खामी है: यह मानता है कि हर कैरेक्टर को पूरी तरह से रैंडम तरीके से चुना गया है। इंसान इस तरह काम नहीं करते। हम शब्दों, तारीखों और अनुमानित सब्स्टिटूशन का उपयोग करते हैं। P@$$w0rd1 9 ASCII कैरेक्टर्स का कोई रैंडम सीक्वेंस नहीं है।

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

  1. चंकिंग (Chunking): वे पासवर्ड को टुकड़ों (chunks) में तोड़ते हैं। Tr0ub4dor&3! बन जाता है Tr0ub4dor, &, 3, !।
  2. पैटर्न मैचिंग (Pattern Matching): वे प्रत्येक चंक का कई पैटर्न्स के विरुद्ध विश्लेषण करते हैं:
    • डिक्शनरी शब्द: क्या troubador एक अंग्रेज़ी डिक्शनरी में है? (हाँ)। क्या यह आम है? (हाँ)।
    • आम सब्स्टिटूशन: क्या Tr0ub4dor troubador जैसा दिखता है जिसमें o -> 0 और a -> 4 है? (हाँ)।
    • कीबोर्ड पैटर्न: क्या यह qwerty या asdfg जैसा कोई सीक्वेंस है?
    • तारीखें: क्या यह 1999 या 2024 जैसा दिखता है?
    • दोहराए गए कैरेक्टर्स: क्या यह aaaaaa जैसा कुछ है?
  3. कॉस्ट एनालिसिस (Cost Analysis): वे प्रत्येक चंक के लिए उसके पैटर्न के आधार पर एन्ट्रॉपी की गणना करते हैं। एक आम डिक्शनरी शब्द की एन्ट्रॉपी उसी लंबाई के रैंडम स्ट्रिंग की तुलना में बहुत कम होती है। password की एन्ट्रॉपी 8 * log₂(52) नहीं है; यह log₂(20000) के करीब है, क्योंकि यह आम पासवर्ड की सूची में से एक अनुमान है।
  4. समेशन (Summation): वे एक यथार्थवादी, युद्ध-परीक्षित स्ट्रेंथ अनुमान प्राप्त करने के लिए सबसे "सस्ते" चंक्स की एन्ट्रॉपी को जोड़ते हैं। यही कारण है कि correct-horse-battery-staple का स्कोर Tr0ub4dor&3 से बहुत अधिक होता है, भले ही बाद वाला "देखने में" अधिक कॉम्प्लेक्स लगता हो।

असल दुनिया की कहानियाँ

### कॉर्पोरेट पॉलिसी जो उलटी पड़ गई

एक मध्यम आकार की टेक फर्म ने एक सख्त नई पासवर्ड पॉलिसी लागू की: न्यूनतम 10 कैरेक्टर, एक अपरकेस, एक नंबर, एक सिंबल। लक्ष्य उच्च-एन्ट्रॉपी पासवर्ड को मजबूर करना था। उन्हें जो मिला वह था Summer2024!, Fall2024!, और Winter2025! जैसे पासवर्ड बनाने वाले यूज़र्स की एक फ़ौज। एक भोला-भाला स्ट्रेंथ मीटर इन्हें एक अच्छा स्कोर देगा। लेकिन जब एक अटैकर ने एक लो-लेवल अकाउंट से समझौता किया और पैटर्न सीख लिया, तो उन्हें कुछ भी ब्रूट-फोर्स करने की ज़रूरत नहीं पड़ी। उन्होंने बस हर सीज़न और साल के कॉम्बिनेशन को आज़माने के लिए एक स्क्रिप्ट लिखी, और जल्दी से दर्जनों अकाउंट्स तक पहुँच प्राप्त कर ली।

सबक: लागू की गई कॉम्प्लेक्सिटी अक्सर अनुमानित पैटर्न को जन्म देती है। एक अच्छे स्ट्रेंथ मीटर को इन आम योजनाओं का पता लगाना चाहिए और उन्हें दंडित करना चाहिए।

### XKCD का 'करेक्ट हॉर्स बैटरी स्टेपल' वाला ज्ञानोदय

वेबकॉमिक XKCD ने एक अब-प्रसिद्ध स्ट्रिप प्रकाशित की जिसमें पासवर्ड स्ट्रेंथ को दर्शाया गया है। इसने Tr0ub4dor&3, एक विशिष्ट "कॉम्प्लेक्स" पासवर्ड की तुलना correct horse battery staple से की, जो चार आम लेकिन रैंडम शब्दों का एक पासफ्रेज़ है। जबकि Tr0ub4dor&3 को एक इंसान के लिए याद रखना मुश्किल है, इसके सब्स्टिटूशन और पैटर्न का मिश्रण इसे एक गणना योग्य एन्ट्रॉपी देता है जिसे एक समर्पित क्रैकर दिनों में चबा सकता है। हालांकि, चार-शब्दों का पासफ्रेज़, एक इंसान के लिए याद रखना आसान है। 2048 आम शब्दों की एक डिक्शनरी मानकर, इसकी एन्ट्रॉपी log₂(2048^4) है, जो कि 4 * 11 = 44 बिट्स की सार्थक एन्ट्रॉपी है। इसे कैरेक्टर द्वारा ब्रूट-फोर्स करने के लिए, एक अटैकर को 28-कैरेक्टर की स्ट्रिंग का सामना करना पड़ता है, जो एक असंभव कार्य है।

सबक: लंबाई अक्सर सिंबल-आधारित कॉम्प्लेक्सिटी की तुलना में एक अधिक शक्तिशाली और यूज़र-फ्रेंडली बचाव है। पासफ्रेज़ आपके दोस्त हैं।

### वो 'रैंडम' पासवर्ड जो रैंडम नहीं था

एक डेवलपर को एक ऐसा सिस्टम बनाने का काम सौंपा गया था जो नए यूज़र्स के लिए सुरक्षित, रैंडम शुरुआती पासवर्ड जेनरेट करे। उन्होंने एक सरल स्क्रिप्ट में अपनी भाषा के डिफ़ॉल्ट random() फंक्शन का इस्तेमाल किया। पासवर्ड बहुत अच्छे लग रहे थे: j8sL2!kP। डेवलपर को यह एहसास नहीं था कि मानक random() फंक्शन एक स्यूडोरैंडम नंबर जेनरेटर (PRNG) था जिसे सिस्टम की घड़ी के समय के साथ सीड किया गया था। एक अटैकर, इनमें से सिर्फ एक पासवर्ड और उसका क्रिएशन टाइमस्टैम्प (उदाहरण के लिए, एक ईमेल से) प्राप्त करने के बाद, सीड का पता लगाने में सक्षम था। फिर वे उसी समय के आसपास बनाए गए हर यूज़र के लिए "रैंडम" पासवर्ड के पूरे सीक्वेंस को फिर से जेनरेट कर सकते थे।

सबक: रैंडमनेस का स्रोत बहुत मायने रखता है। सुरक्षा से संबंधित किसी भी चीज़ के लिए, हमेशा एक क्रिप्टोग्राफिक रूप से सिक्योर स्यूडोरैंडम नंबर जेनरेटर (CSPRNG) का उपयोग करें, जैसे ब्राउज़र में window.crypto.getRandomValues() या लिनक्स पर /dev/urandom।

आम गलतियाँ और जाल

  • कॉम्प्लेक्सिटी को स्ट्रेंथ के साथ भ्रमित करना। P@$$w0rd! कॉम्प्लेक्स दिखता है, लेकिन यह विश्व स्तर पर मान्यता प्राप्त एक खराब पासवर्ड है। four random words joined कॉन्सेप्ट में सरल है लेकिन व्यवहार में कहीं ज़्यादा मज़बूत है क्योंकि इसमें अनुमानित पैटर्न की कमी है और यह बहुत लंबा है।
  • 'हरी पट्टी' पर आँख बंद करके भरोसा करना। वेब पर कई स्ट्रेंथ मीटर खतरनाक रूप से भोले होते हैं। वे एक सरल लंबाई * कैरेक्टर_सेट गणना करते हैं और डिक्शनरी, पैटर्न, या पब्लिक ब्रीच डेटा की जाँच नहीं करते हैं। एक कमज़ोर मीटर से "मज़बूत" रेटिंग एक झूठ है।
  • ऑफलाइन अटैक वेक्टर को अनदेखा करना। अपने पासवर्ड की स्ट्रेंथ को उस लॉगिन फॉर्म के खिलाफ न मापें जो तीन प्रयासों के बाद आपको लॉक कर देता है। मान लें कि अटैकर के पास आपका हैश किया हुआ पासवर्ड है और वह अपने बेसमेंट में GPUs के एक रैक के साथ उस पर हमला कर रहा है। हमेशा सबसे खराब स्थिति के लिए डिज़ाइन करें।
  • पासवर्ड का पुन: उपयोग करना। सबसे शानदार, 128-बिट एन्ट्रॉपी वाला पासवर्ड उस पल बेकार हो जाता है जब वह किसी अन्य वेबसाइट के डेटा ब्रीच में उजागर हो जाता है। एक अटैकर इसे क्रैक नहीं करेगा; वे बस इसे एक सूची में देखेंगे और सीधे अंदर चले जाएँगे।
  • यह सोचना कि अगर रैंडम है तो छोटा भी चलेगा। सभी कीबोर्ड सिंबल्स का उपयोग करने वाला एक वास्तव में रैंडम 8-कैरेक्टर का पासवर्ड अच्छी एन्ट्रॉपी (~ 53 बिट्स) रखता है। लेकिन "अच्छा" अब वह नहीं रहा जो पहले हुआ करता था। कंप्यूटिंग की गिरती लागत को देखते हुए, इसे कुछ हफ्तों या महीनों में क्रैक किया जा सकता है। लंबाई एक बहुत अधिक आरामदायक सुरक्षा मार्जिन प्रदान करती है।

यह आपके रडार पर क्यों होना चाहिए

पासवर्ड स्ट्रेंथ को समझना सिर्फ सिक्योरिटी प्रोफेशनल्स के लिए नहीं है।

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

एक यूज़र के रूप में, यह ज्ञान आपको एक निष्क्रिय नियम-पालक से अपने डेटा के एक सक्रिय रक्षक में बदल देता है। यह आपको ऐसे सीक्रेट्स बनाने की अंतर्दृष्टि देता है जो आपके लिए यादगार और उनके लिए असंभव रूप से कठिन हों। यह आपके पूरे डिजिटल सुरक्षा आसन की सैद्धांतिक नींव है।

और गहराई में जाएं

  • NIST Special Publication 800-63B - यूएस नेशनल इंस्टीट्यूट ऑफ स्टैंडर्ड्स एंड टेक्नोलॉजी के डिजिटल पहचान पर आधिकारिक (और आश्चर्यजनक रूप से पठनीय) दिशानिर्देश, जिसमें पासवर्ड नीतियां शामिल हैं।
  • विकिपीडिया पर पासवर्ड स्ट्रेंथ - कॉन्सेप्ट्स, फ़ार्मुलों और इतिहास का एक व्यापक अवलोकन।
  • विकिपीडिया पर एन्ट्रॉपी (इनफॉर्मेशन थ्योरी) - इन सबके गणितीय आधारों में गहरी डुबकी लगाने के लिए।
  • XKCD 936: Password Strength - वह मूल कॉमिक जिसने कई लोगों के सुरक्षित, यादगार पासवर्ड बनाने के तरीके को बदल दिया।
  • zxcvbn-ts GitHub Repository - ड्रॉपबॉक्स के अग्रणी zxcvbn पासवर्ड स्ट्रेंथ एस्टिमेटर का आधुनिक टाइपस्क्रिप्ट कार्यान्वयन। इसके लॉजिक को पढ़ना वास्तविक दुनिया के सुरक्षा विश्लेषण में एक मास्टरक्लास है।

थ्योरी हो गई। अब हाथ आज़माइए — 100% आपके ब्राउज़र में।

टूल आज़माएँ: पासवर्ड मजबूती