दो-चरणीय प्रमाणीकरण खाता
दो-चरणीय सत्यापन चालू करने के लिए एक सीक्रेट और उसका QR कोड बनाएँ, वह TOTP या HOTP कोड देखें जो Google Authenticator, Microsoft Authenticator या Authy दिखाएगा, और जाँचें कि कोई कोड मान्य है या नहीं। कोड आपके ब्राउज़र में ही गणना किए जाते हैं और सीक्रेट लिंक में साझा नहीं होता।
कोड

कोड देखने के लिए एक मान्य सीक्रेट दर्ज करें।

ऐप के लिए QR कोड
कोड सत्यापित करें

कोड को वैसे ही जाँचें जैसे सर्वर करेगा: मौजूदा कोड और उससे पहले या बाद के अधिकतम 2 चरण स्वीकार किए जाते हैं, ताकि आगे-पीछे चल रही घड़ियों को सहन किया जा सके।

यह कैसे काम करता है

TOTP (Time-based One-Time Password, RFC 6238) वह एल्गोरिदम है जो Google Authenticator, Microsoft Authenticator, Authy या 1Password के छह अंकों वाले कोड के पीछे है। सेवा और आपका फ़ोन एक सीक्रेट साझा करते हैं; हर 30 सेकंड में दोनों सीक्रेट और चरणों में बँटे मौजूदा समय का HMAC निकालते हैं, परिणाम को छह अंकों तक छोटा करते हैं और उसकी तुलना करते हैं। चूँकि जब तक आप कोड टाइप नहीं करते तब तक कोई उसे भेजता नहीं, इसलिए यह फ़ोन के कनेक्शन के बिना भी काम करता है।

HOTP (RFC 4226) मूल एल्गोरिदम है: समय की जगह यह एक काउंटर का उपयोग करता है जो हर बार कोड माँगे जाने पर बढ़ता है। TOTP वही HOTP है जिसमें काउंटर की जगह 1970 से बीती अवधियों की संख्या होती है। सीक्रेट Base32 में लिखा जाता है और एक otpauth:// URI के भीतर जाता है, जो दो-चरणीय सत्यापन चालू करते समय QR कोड के रूप में दिखाया जाता है।

यह टूल ब्राउज़र के क्रिप्टोग्राफ़िक जनरेटर से सीक्रेट बनाता है, मौजूदा, पिछला और अगला कोड निकालता है, URI और उसका QR तैयार करता है, मौजूदा URI पढ़ता है और किसी कोड को उसी घड़ी सहनशीलता के साथ सत्यापित करता है जो सर्वर उपयोग करते हैं। सीक्रेट कभी आपके ब्राउज़र से बाहर नहीं जाता और न ही साझा करने वाले लिंक में शामिल होता है।

उदाहरण

GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ · SHA1 · 8 · T = 59 s94287082RFC 6238 का परीक्षण वेक्टर। सीक्रेट ASCII टेक्स्ट 12345678901234567890 है, जिसे Base32 में एन्कोड किया गया है; Unix युग के 59वें सेकंड पर चरण 1 होता है और आठ अंकों का कोड ठीक यही होना चाहिए।
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ · SHA1 · 8 · T = 1111111109 s07081804RFC 6238 का एक और वेक्टर, यह जाँचने के लिए उपयोगी कि आपका इम्प्लीमेंटेशन आगे के शून्य नहीं खोता: कोड निश्चित अंकों वाली संख्या है, पूर्णांक नहीं।
HOTP · GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ · contador 0755224RFC 4226 का छह अंकों वाला पहला वेक्टर। काउंटर 1 होने पर कोड 287082 हो जाता है।
otpauth://totp/Ejemplo:ana%40example.com?secret=JBSWY3DPEHPK3PXP&issuer=EjemploTOTP · SHA1 · 6 · 30 sKey URI फ़ॉर्मेट, जिसे Google Authenticator ने परिभाषित किया और बाकी ऐप्स ने अपनाया। यदि algorithm, digits और period न हों तो SHA1, 6 और 30 माने जाते हैं, इसलिए अधिकांश QR में केवल सीक्रेट और जारीकर्ता होते हैं।

उपयोग के मामले

  • अपने एप्लिकेशन में 2FA सक्रियण का परीक्षण करना: सीक्रेट बनाना, फ़ोन से QR स्कैन करना और जाँचना कि सर्वर वही कोड स्वीकार करता है जो ऐप दिखाता है।
  • यह डिबग करना कि सर्वर मान्य कोड क्यों अस्वीकार करता है: पिछले या अगले चरण से उनका मेल खाना घड़ी के अंतर को उजागर करता है।
  • TOTP या HOTP के अपने इम्प्लीमेंटेशन को RFC 6238 और 4226 के परीक्षण वेक्टरों के विरुद्ध सत्यापित करना।
  • किसी दूसरे ऐप से निर्यात किए गए otpauth:// URI को पढ़कर देखना कि खाता कौन-सा एल्गोरिदम, कितने अंक और कौन-सी अवधि उपयोग करता है।
  • ऐसा परीक्षण खाता किसी दूसरे ऐप या पासवर्ड मैनेजर में जोड़ना जिसका सीक्रेट आपके पास पहले से Base32 में है।

अक्सर पूछे जाने वाले प्रश्न

सर्वर वह कोड क्यों अस्वीकार करता है जिसे ऐप मान्य दिखाता है?

लगभग हमेशा कारण घड़ी होती है। TOTP इस पर निर्भर है कि फ़ोन और सर्वर समय पर सहमत हों: 30 सेकंड के अंतर पर ही वे अलग-अलग चरण निकालने लगते हैं। इसलिए सर्वर हर दिशा में एक या दो चरण स्वीकार करते हैं। यदि कोड पिछले या अगले चरण से मेल खाता है, तो सर्वर का समय NTP से सिंक करें और फ़ोन पर स्वचालित समय चालू करें।

क्या किसी असली खाते का सीक्रेट यहाँ बनाना सुरक्षित है?

सीक्रेट crypto.getRandomValues से बनाया जाता है और आपके ब्राउज़र से बाहर नहीं जाता, लेकिन प्रोडक्शन में इसे वही सर्वर बनाए और संग्रहीत करे जो कोड सत्यापित करेगा। यह टूल परीक्षण और डिबगिंग के लिए है। किसी भी असली सीक्रेट को पासवर्ड की तरह मानें: जिसके पास यह होगा वह हमेशा के लिए आपके कोड बना सकता है।

क्या SHA-256, 8 अंक या 60 सेकंड का उपयोग करना उचित है?

सैद्धांतिक रूप से ये अधिक मज़बूत हैं, लेकिन कई ऐप्स, जिनमें Google Authenticator के कुछ संस्करण भी शामिल हैं, इन पैरामीटर को अनदेखा करते हैं और हमेशा हर 30 सेकंड में 6 अंकों के साथ SHA-1 निकालते हैं, जिससे उपयोगकर्ता को ऐसे कोड दिखते हैं जिन्हें सर्वर अस्वीकार कर देता है। HMAC के रूप में SHA-1 अब भी सुरक्षित है। संगतता के लिए लगभग सभी सेवाएँ डिफ़ॉल्ट मानों का उपयोग करती हैं।

सीक्रेट कितना लंबा होना चाहिए?

RFC 4226 में कम से कम 128 बिट अनिवार्य हैं और 160 बिट की सिफ़ारिश है, जो Base32 में 32 अक्षर होते हैं। कई सेवाएँ 80 बिट (16 अक्षर) का उपयोग करती हैं और ऐप्स उन्हें भी स्वीकार करते हैं। यह टूल 160 बिट बनाता है।

क्या TOTP फ़िशिंग से बचाता है?

पूरी तरह नहीं। यह SMS से कहीं बेहतर है, जिसे इंटरसेप्ट किया जा सकता है या SIM स्वैप से चुराया जा सकता है, लेकिन एक नकली साइट आपसे कोड माँगकर उन्हीं 30 सेकंड के भीतर असली साइट पर उसका उपयोग कर सकती है। FIDO2 सुरक्षा कुंजियाँ और पासकी डोमेन से बँधी होती हैं और इस हमले का सामना कर सकती हैं।

अगर मेरा फ़ोन खो जाए तो क्या होगा?

सीक्रेट के बिना कोड निकालने का कोई तरीका नहीं है। इसलिए सेवाएँ 2FA चालू करते समय रिकवरी कोड देती हैं: उन्हें फ़ोन के बाहर सुरक्षित रखें। कुछ ऐप्स खातों का एन्क्रिप्टेड बैकअप क्लाउड में लेने या उन्हें किसी दूसरे डिवाइस पर ले जाने के लिए QR के रूप में निर्यात करने की सुविधा देते हैं।