आपका पासवर्ड लीक होने पर असल में क्या होता है

प्रकाशित लेखक David Carrero

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

पहला क़दम: कोई डेटाबेस उठा ले जाता है

शुरुआत में कुछ भी नाटकीय नहीं होता। किसी को एक SQL इंजेक्शन मिल जाता है, कोई खुला पड़ा बैकअप, कोई एडमिन पैनल जिसमें डिफ़ॉल्ट क्रेडेंशियल अब तक वैसे के वैसे हैं। और वह एक टेबल उठा ले जाता है।

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

2009 तीन करोड़ बीस लाख पासवर्ड, सादे टेक्स्ट में

दिसंबर 2009 में सोशल नेटवर्क के लिए विजेट बनाने वाली एक कंपनी RockYou पर SQL इंजेक्शन हुआ। क़रीब 3.2 करोड़ पासवर्ड उठा लिए गए, और तोड़ने के लिए कोई hash था ही नहीं: कंपनी उन्हें सादे टेक्स्ट में रखती थी।

RockYou के लिए यह तबाही थी और बाक़ी सबके लिए तोहफ़ा। पहली बार असली पासवर्डों का एक विशाल भंडार मौजूद था, ऐसे लोगों का लिखा हुआ जिन्हें पता ही नहीं था कि इन्हें कोई पढ़ेगा। कोई अध्ययन नहीं: चीज़ ख़ुद।

वह फ़ाइल rockyou.txt बन गई, जो आज भी वही रेफ़रेंस डिक्शनरी है जिससे हमले आज़माए जाते हैं। उसकी क़ीमत यह नहीं है कि उसमें आपका पासवर्ड है: उसकी क़ीमत यह है कि उसमें लोग पासवर्ड लिखते कैसे हैं यह दर्ज है। एक नाम और एक साल, शब्द और 123, आख़िर में !। RockYou ने 3.2 करोड़ राज़ नहीं लीक किए। उसने पैटर्न लीक किया। और पैटर्न की कोई एक्सपायरी नहीं होती।

दूसरा क़दम: जो टूट सकता है वह तोड़ा जाता है, बिना किसी जल्दी के

यहीं अंदाज़ा धोखा दे जाता है। जब कोई किसी सर्विस के लॉगिन पेज पर आपका पासवर्ड अंदाज़ने की कोशिश करता है, तो सर्विस उसे रोक देती है: तीन कोशिशें, एक CAPTCHA, एक ताला। सर्वर के ख़िलाफ़ अंदाज़ा लगाना धीमा भी है और शोर भी मचाता है।

लेकिन जो hash फ़ाइल पहले से आपकी अपनी डिस्क पर पड़ी है, उसके ख़िलाफ़ कोई सर्वर है ही नहीं। दूसरी तरफ़ कोई नहीं बैठा जो मना कर सके। सब कुछ लोकल में आज़माया जाता है, GPU के साथ, बिना कोशिशों की किसी सीमा के और दुनिया भर के वक़्त के साथ। अगर सर्विस ने hashing ख़राब की — तेज़ एल्गोरिद्म, बिना salt — तो सादे टेक्स्ट से फ़र्क़ सहूलियत का रह जाता है, सुरक्षा का नहीं।

और कोशिशें अंधाधुंध नहीं होतीं: पहले rockyou.txt, फिर उसी से निकाले गए नियम। a की जगह @ कर दो। आख़िर में एक साल जोड़ दो। आपको जो-जो तरकीब चालाकी लगी थी, वह दस साल से ज़्यादा पुरानी है और किसी कॉन्फ़िगरेशन फ़ाइल में लिखी रखी है।

इससे डंप का एक हिस्सा पढ़ने लायक़ पासवर्डों में बदल जाता है। बाक़ी — जो लंबा है, जो रैंडम है, जो किसी शब्दकोश में नहीं है — शोर ही बना रहता है। यही वह लकीर है जो चेकर खींचता है: वह आपको डाँटता नहीं, बस बताता है कि आप किस तरफ़ गिरते हैं।

तीसरा क़दम: मिलान होता है, और वहीं आपकी क़ीमत बनती है

अकेला पड़ा डंप ज़्यादा काम का नहीं। क़ीमती चीज़ है मिलाकर जोड़ना: अलग-अलग साइटों की दस लीक उठाओ, उन्हें ईमेल के हिसाब से मिलाओ और ईमेल:पासवर्ड की वे जोड़ियाँ रख लो जो पहले से साफ़ पढ़ी जा सकती हैं। नतीजे को combolist कहते हैं, और वह अब किसी की डेटाबेस नहीं रह जाती। वह लोगों की सूची होती है।

2013 इन्वेंटरी सामने आ जाती है

दिसंबर 2013 में Troy Hunt ने Have I Been Pwned शुरू किया: लीक में सामने आए ईमेलों का एक सार्वजनिक डेटाबेस, ताकि कोई भी पूछ सके कि वह उसमें है या नहीं। इसके पीछे की सोच सीधी है और असहज भी: अगर इन्वेंटरी हमलावरों के पास पहले से है, तो पीड़ितों से उसे छिपाकर किसी की हिफ़ाज़त नहीं होती। सालों बाद Pwned Passwords आया, जो यही काम पासवर्डों के साथ करता है और उन्हें भेजे बिना जाँचने देता है: hash का एक टुकड़ा भेजा जाता है और सर्वर उम्मीदवारों का एक गुच्छा लौटा देता है, यह जाने बिना कि उनमें आपका कौन-सा था।

2017 NIST प्रतीक माँगना छोड़कर सूचियाँ माँगने लगता है

जब NIST ने SP 800-63B प्रकाशित किया, तो उसने फ़ॉर्मों की क़रीब-क़रीब पूरी रूढ़िवादी परंपरा को कूड़े में फेंक दिया और उसकी जगह एक शर्त रख दी जिसकी उम्मीद कम लोगों को थी: पासवर्ड तय करते वक़्त सिस्टम को उसे ज्ञात रूप से समझौता किए जा चुके मूल्यों की सूची से मिलाना चाहिए और अगर वह उसमें मिले तो उसे ठुकरा देना चाहिए।

यह ब्योरे का नहीं, सिद्धांत का बदलाव है। सवाल अब यह नहीं है कि आपका पासवर्ड मज़बूत दिखता है या नहीं, बल्कि यह है कि वह पहले से प्रकाशित तो नहीं है। इसीलिए जनरेटर वही करता है जो अकेला समझदारी वाला काम है: उसे वहाँ से निकालना जहाँ वह कभी रहा ही नहीं।

2019 वह लीक जो ख़ुद ही दूसरी लीकों की खिचड़ी थी

जनवरी 2019 में एक पैकेज घूमा जो Collection #1 के नाम से मशहूर हुआ। Hunt ने उसका विश्लेषण किया और गिनकर बताया कि अंदर क्या था: क़रीब 77.3 करोड़ अलग-अलग ईमेल पते और क़रीब 2.1 करोड़ अलग-अलग पासवर्ड सादे टेक्स्ट में, हज़ारों स्रोतों से जोड़कर बनाए गए।

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

Credential stuffing: हमला आप पर होता ही नहीं

आप पर कोई हमला नहीं करता। यही हिस्सा गले उतरने में सबसे मुश्किल है।

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

यही credential stuffing है, और यह अंदाज़ा लगाना नहीं है। यह तसदीक़ करना है। पासवर्ड तो उनके पास पहले से है; वे सिर्फ़ इतना पता लगाते हैं कि आपने उसे और कहाँ- कहाँ रखा।

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

इस सबसे क्या निकलता है

  • लीक हुआ पासवर्ड बदल देना काफ़ी नहीं, अगर आपने उसे दोहराया था। ज़रूरी वह साइट नहीं है जो ख़बरों में आई। ज़रूरी बाक़ी हैं।
  • हर साइट का अपना पासवर्ड, और ऐसा कि भूल जाने पर आपको फ़र्क़ न पड़े। अगर आपको अपने सारे पासवर्ड याद हैं, तो या वे बहुत कम हैं या बहुत घटिया।
  • दूसरा फ़ैक्टर कड़ी तोड़ देता है। Credential stuffing ईमेल:पासवर्ड आज़माता है। अगर उतने से अंदर नहीं घुसा जा सकता, तो इन्वेंटरी की क़ीमत ख़त्म।

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


स्रोत: RockYou की लीक (दिसंबर 2009) और उसके बाद rockyou.txt का हमले की डिक्शनरी के तौर पर इस्तेमाल · Troy Hunt का Have I Been Pwned और Pwned Passwords · NIST SP 800-63B, समझौता किए जा चुके मूल्यों की सूचियों से पासवर्ड मिलाने के बारे में · Collection #1 (जनवरी 2019) पर Troy Hunt का विश्लेषण और उसके प्रकाशित आँकड़े · OWASP की credential stuffing की परिभाषा।

← ब्लॉग पर वापस