सभी लेख

Argon2: यह एल्गोरिदम पासवर्ड हैशिंग प्रतियोगिता क्यों जीता

भारत में UPI, आधार से जुड़े लॉगिन और बड़े स्केल के फिनटेक ऐप्स का मतलब है कि किसी एक डेटाबेस लीक से करोड़ों अकाउंट्स प्रभावित हो सकते हैं। इस स्केल पर पासवर्ड हैशिंग एल्गोरिदम की पसंद का असर बहुत बड़ा है: अगर हैश कमजोर हो (जैसे नमक के बिना MD5), तो लाखों पासवर्ड घंटों में क्रैक हो सकते हैं। Argon2, जिसने 2015 का Password Hashing Competition जीता था, को ठीक इसी वजह से OWASP प्राथमिकता देता है — यह जानबूझकर धीमा और मेमोरी-भूखा है।

मेमोरी क्यों समय जितनी ही ज़रूरी है

Bcrypt और PBKDF2 सिर्फ़ कंप्यूटेशन को धीमा करते हैं। Argon2 हर एक कोशिश के लिए एक तय मात्रा में RAM रिज़र्व करने पर मजबूर करता है — इसे memory-hard फ़ंक्शन कहा जाता है। क्लाउड पर किराए की GPU फ़ार्म सस्ते में लाखों साधारण कैलकुलेशन पैरेलल कर सकती है, लेकिन एक साथ बहुत सारी मेमोरी तक एक्सेस पैरेलल करना कहीं ज़्यादा महँगा है — मेमोरी, कोर के उलट, हर कार्ड पर सीमित होती है।

तीन वैरिएंट: d, i, id

  • Argon2d — मेमोरी एक्सेस पासवर्ड पर निर्भर करता है, जिससे GPU से अधिकतम बचाव मिलता है, पर साइड-चैनल अटैक का सैद्धांतिक ख़तरा रहता है।
  • Argon2i — मेमोरी एक्सेस पासवर्ड-निरपेक्ष है, जिससे साइड-चैनल बचाव होता है, थोड़ी कम GPU-रेज़िस्टेंस के साथ।
  • Argon2id — गणना के अलग-अलग चरणों में दोनों तरीक़े मिलाता है। RFC 9106 इसे डिफ़ॉल्ट सुझाता है, और PHP का PASSWORD_ARGON2ID भी यही इस्तेमाल करता है।

तीन स्वतंत्र पैरामीटर

Bcrypt के एक ही "cost factor" के उलट, Argon2 मेमोरी, इटरेशन और पैरेललिज़्म को अलग-अलग सेट करने देता है। यह व्यावहारिक रूप से उपयोगी है: सीमित मेमोरी वाला सर्वरलेस फ़ंक्शन इटरेशन बढ़ाकर भरपाई कर सकता है, जबकि ज़्यादा RAM वाला डेडिकेटेड ऑथ सर्वर उल्टा कर सकता है।

यह किस काम आता है

  • MD5 या साधारण SHA-256 की जगह नए ऑथेंटिकेशन सिस्टम के लिए मॉडर्न एल्गोरिदम चुनना।
  • यह समझना कि Argon2 किराए के GPU या क्रिप्टो-माइनिंग हार्डवेयर पर क्रैक करना ख़ासतौर पर महँगा क्यों बनाता है।
  • सिक्योरिटी रिव्यू के हिस्से के तौर पर bcrypt या PBKDF2 से माइग्रेशन की योजना बनाना।

पैरेललिज़्म का जाल

पैरेललिज़्म मुफ़्त फ़ायदे जैसा लगता है — ज़्यादा थ्रेड्स, मल्टी-कोर सर्वर पर तेज़ हैशिंग। लेकिन वैसा ही मल्टी-कोर हार्डवेयर रखने वाले हमलावर को भी हर कोशिश पर वही स्पीड-अप मिलता है। पैरेललिज़्म को सर्वर के असल कोर की संख्या जितना रखना सुरक्षित है; "एहतियात के तौर पर" ज़्यादा रखना हमलावर को बराबर छूट देना है।

टूल आज़माएँ