- मौलिक इनपुट अंतर: HOTP एक मोनोटोनिक रूप से बढ़ते काउंटर C से हैश की गणना करता है, जबकि TOTP C को एक युग समय चरण T (CurrentUnixTime / 30) से बदल देता है।
- प्रत्यक्ष विरासत: TOTP गणितीय रूप से HOTP का ही एक विशेष रूप है:
TOTP(K, Time) = HOTP(K, T)। दोनों एल्गोरिदम बिल्कुल समान डायनामिक ट्रंकेशन फ़ंक्शन का उपयोग करते हैं। - वास्तुशिल्प निर्णायक कारक: HOTP स्टेटफुल (stateful) है (सर्वरों को प्रत्येक सत्यापन पर डिस्क पर काउंटरों को लॉक और सुरक्षित करना पड़ता है)। TOTP स्टेटलेस (stateless) है, जो आधुनिक क्लाउड माइक्रोसर्विसेज को केंद्रीकृत डेटाबेस राइट संचालन के बिना वितरित लोड-बैलेंस्ड क्लस्टर्स में टोकन सत्यापित करने की अनुमति देता है।
ऐतिहासिक जड़ें: मालिकाना हार्डवेयर टोकन से ओपन वेब मानकों तक
2000 के दशक की शुरुआत में, कॉर्पोरेट टू-फैक्टर प्रमाणीकरण पर RSA SecurID जैसे मालिकाना की-फ़ॉब्स (key fobs) का दबदबा था। इन बंद, महंगे उपकरणों में आंतरिक क्वार्ट्ज क्रिस्टल होते थे जो मालिकाना एंटरप्राइज़ सर्वरों के साथ सिंक्रनाइज़ होते थे। यदि कोई संगठन हजारों कर्मचारियों को मल्टी-फैक्टर सुरक्षा प्रदान करना चाहता था, तो हार्डवेयर खरीद और मालिकाना लाइसेंस की लागत अत्यधिक थी।
प्रमाणीकरण को मालिकाना विक्रेताओं से मुक्त करने के लिए, उद्योग के नेताओं द्वारा OATH (Initiative for Open Authentication) कंसोर्टियम का गठन किया गया ताकि खुले, रॉयल्टी-मुक्त IETF मानक प्रदान किए जा सकें जिनका कोई भी सॉफ्टवेयर इंजीनियर स्वतंत्र रूप से निरीक्षण, कार्यान्वयन और ऑडिट कर सके:
HMAC-Based One-Time Password Algorithm। भौतिक पुश बटन वाले कम-शक्ति वाले माइक्रोकंट्रोलर्स के लिए तैयार किया गया। बटन दबाने पर आंतरिक काउंटर बढ़ता है और LCD स्क्रीन पर 6-अंकीय टोकन प्रिंट होता है।
Time-Based One-Time Password Algorithm। जैसे ही स्मार्टफ़ोन अपनाने में वृद्धि हुई, इसे डिज़ाइन किया गया। सेलुलर NTP नेटवर्क समय सिंक्रोनाइज़ेशन का लाभ उठाकर, TOTP ने भौतिक बटन स्थिति के बेमेल होने को पूरी तरह से समाप्त कर दिया।
HOTP (RFC 4226) आर्किटेक्चर एवं डायनामिक ट्रंकेशन बाइट यांत्रिकी
HOTP की मूल गणितीय परिभाषा संक्षिप्त और सुरुचिपूर्ण है:
पैरामीटर विवरण:
K: साझा सममित गुप्त कुंजी (आमतौर पर एक Base32 डिकोडेड 160-बिट / 20-बाइट बाइनरी अनुक्रम)।C: 8-बाइट (64-बिट) बिग-एंडियन पूर्णांक काउंटर।HMAC-SHA-1: 20-बाइट (160-बिट) क्रिप्टोग्राफ़िक डाइजेस्ट उत्पन्न करने वाला कीड-हैश मैसेज ऑथेंटिकेशन कोड।
🔍 डायनामिक ट्रंकेशन (DT) कैसे 20 बाइट्स को 6 अंकों में बदलता है:
एक HMAC-SHA1 डाइजेस्ट में 160 बिट्स (20 बाइट्स) होते हैं। 6 समान दशमलव अंक निकालने के लिए RFC 4226 के अनुभाग 5.3 में परिभाषित एक नियतात्मक (deterministic), टकराव-प्रतिरोधी चयन तंत्र की आवश्यकता होती है:
मान लीजिए गुप्त कुंजी ASCII "12345678901234567890" है और काउंटर C = 0 है। हेक्साडेसिमल में परिणामी HMAC-SHA1 डाइजेस्ट है:
1. अंतिम बाइट 0x71 है। 0x71 & 0x0F = 0x01, इसलिए Offset = 1।
2. बाइट्स 1 से 4 हैं: 93 cf 18 50। MSB को शून्य करने पर 0x13cf1850 प्राप्त होता है, जो दशमलव में 332,339,280 के बराबर है।
3. 332339280 mod 1000000 = 339280। परिणामी 6-अंकीय OTP 339280 है!
TOTP (RFC 6238) विकास: टाइम-स्टेप का जादू
HOTP के लिए क्लाइंट पर काउंटर को सर्वर के साथ सिंक रखना आवश्यक था। सॉफ़्टवेयर उपकरणों पर, कीस्ट्रोक्स या बटन दबाने की गिनती लगातार मानवीय त्रुटि पेश करती है।
RFC 6238 ने काउंटर C को सीधे Unix युग घड़ी से प्राप्त एक असतत (discrete) समय कदम T से बदल दिया:
- CurrentUnixTime: 1970-01-01 00:00:00 UTC से बीते हुए सेकंड।
- T0: युग आरंभीकरण संदर्भ (सभी आधुनिक परिनियोजनों में डिफ़ॉल्ट 0)।
- X (टाइम स्टेप विंडो): 30 सेकंड की मानक अनुशंसित अवधि।
- फ्लोर फंक्शन ⌊ ⌋: 30-सेकंड की विंडो के भीतर किसी भी टाइमस्टैम्प के लिए, T अपरिवर्तित रहता है। उदाहरण के लिए, युग सेकंड 1728211200 और 1728211229 के बीच, T बिल्कुल समान 64-बिट पूर्णांक का मूल्यांकन करता है।
बाइनरी सीरियलाइजेशन: एक बार T की गणना हो जाने के बाद, इसे 8-बाइट बिग-एंडियन बाइनरी बाइट बफ़र में पैक किया जाता है (HOTP में काउंटर C की मेमोरी संरचना के समान)। फलस्वरूप, एकीकृत सूत्र सरल हो जाता है:
TOTP(K, Time) = HOTP(K, T)
यह गणितीय लालित्य बताता है कि ऑथेंटिकेटर ऐप्स लगातार स्थिति सिंक्रोनाइज़ेशन की आवश्यकता के बिना हर 30 सेकंड में समकालिक रूप से टोकन क्यों बदलते हैं।
HS[31] & 0x0F) से लिया जाता है; SHA-512 (64-बाइट डाइजेस्ट) में, ऑफ़सेट बाइट 63 (HS[63] & 0x0F) से लिया जाता है। हालाँकि, 99.9% वाणिज्यिक वेबसाइटों (Google, Microsoft, GitHub, AWS) में, लीगेसी मोबाइल क्लाइंट संगतता के कारण SHA-1 सर्वव्यापी डिफ़ॉल्ट बना हुआ है।
व्यापक तुलनात्मक मैट्रिक्स (HOTP बनाम TOTP)
| आयाम | HOTP (RFC 4226) | TOTP (RFC 6238) |
|---|---|---|
| इनपुट चर | इवेंट काउंटर C (मोनोटोनिक रूप से बढ़ता हुआ) | टाइम स्टेप T (30-सेकंड Unix युग विंडो) |
| टोकन जीवनकाल | अनिश्चित (अगले लॉगिन द्वारा उपभोग होने तक वैध) | कड़ाई से 30 सेकंड (स्वचालित रूप से अमान्य) |
| सर्वर आर्किटेक्चर | स्टेटफुल (प्रति लॉगिन परमाणु डेटाबेस राइट संचालन की आवश्यकता) | स्टेटलेस (स्वतंत्र NTP सत्यापन) |
| रीप्ले हमला जोखिम | मध्यम (इंटरसेप्ट किया गया टोकन उपयोग किए जाने तक वैध रहता है) | न्यूनतम (वर्तमान विंडो में शेष सेकंड तक सीमित) |
| प्राथमिक विफलता मोड | काउंटर डिसिंक्रोनाइज़ेशन (आकस्मिक बटन प्रेस) | क्लॉक ड्रिफ्ट (क्लाइंट फोन समय में विचलन) |
| समर्थित क्रिप्टोग्राफ़िक हैश | विशेष रूप से HMAC-SHA-1 | HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-512 |
| उद्योग में अपनाना | लीगेसी बैंकिंग फ़ॉब्स, विशिष्ट भौतिक गेट्स | आधुनिक वेब ऑथेंटिकेटर्स का 99.9% |
डिसिंक्रोनाइज़ेशन बनाम क्लॉक ड्रिफ्ट: तकनीकी समाधान
वितरित उत्पादन परिवेशों में, क्लाइंट और सर्वर अनिवार्य रूप से ड्रिफ्ट करते हैं। क्रिप्टोग्राफरों ने विश्वसनीयता बनाए रखने के लिए स्पष्ट क्षतिपूर्ति विंडो डिज़ाइन की हैं:
यदि कोई उपयोगकर्ता सबमिट किए बिना अपने टोकन बटन को 5 बार क्लिक करता है, तो क्लाइंट काउंटर C+5 तक पहुंच जाता है जबकि सर्वर C पर रहता है।
RFC 4226 निर्दिष्ट करता है कि प्रमाणीकरण पर, सर्वर [C+1, C+s] (आमतौर पर s=20) तक फैली एक लुक-अहेड विंडो की गणना करता है। यदि कोई मेल मिलता है, तो सर्वर आगे छलांग लगाता है और काउंटर C को तुरंत सिंक्रनाइज़ करता है।
नेटवर्क विलंबता या क्लाइंट डिवाइस क्लॉक ड्रिफ्ट (उदा. 10 सेकंड पीछे चलने वाली फ़ोन घड़ी) के कारण, टोकन आसन्न समय चरणों में आ सकते हैं।
उत्पादन सर्वर 3-विंडो सरणी का मूल्यांकन करते हैं: [T-1, T, T+1], जो प्रभावी रूप से स्वीकृति विंडो को 90 सेकंड तक बढ़ा देता है।
जब सर्वर सत्यापित करते हैं कि उपयोगकर्ता द्वारा प्रस्तुत कोड परिकलित कोड से मेल खाता है या नहीं, तो साधारण स्ट्रिंग समानता जांच (जैसे userOtp === serverOtp) पहले बेमेल वर्ण पर समाप्त हो जाती है। सूक्ष्म नेटवर्क राउंड-ट्रिप प्रतिक्रिया समय को मापने वाला हमलावर पुनरावृत्ति से अंकों का पुनर्निर्माण कर सकता है। एंटरप्राइज़ बैकएंड साइड-चैनल टाइमिंग विश्लेषण को विफल करने के लिए कॉन्स्टेंट-टाइम समानता तुलना (उदा. Node.js में crypto.timingSafeEqual) लागू करते हैं।
TOTP ने आधुनिक इंटरनेट पर क्यों जीत हासिल की
वेब पर HOTP पर TOTP की निर्णायक जीत तीन वास्तुशिल्प अनिवार्यताओं से प्रेरित थी:
वितरित बहु-क्षेत्रीय माइक्रोसर्विसेज में, NTP-सिंक्रनाइज़ घड़ी वाला कोई भी सर्वर इंस्टेंस केंद्रीकृत डेटाबेस रिकॉर्ड को क्वेरी या लॉक किए बिना TOTP टोकन सत्यापित कर सकता है।
स्मार्टफ़ोन सेलुलर बेस स्टेशनों और GPS के माध्यम से अपनी सिस्टम घड़ियों को लगातार कैलिब्रेट करते हैं, जिससे भौतिक हार्डवेयर रखरखाव की आवश्यकता के बिना क्लॉक ड्रिफ्ट समाप्त हो जाता है।
HOTP टोकन उपयोग किए जाने तक अनिश्चित काल के लिए वैध रहते हैं। TOTP टोकन 30 सेकंड के भीतर समाप्त हो जाते हैं, जिससे समझौता किए गए लॉग और पैसिव पैकेट कैप्चर स्वचालित रूप से निष्प्रभावी हो जाते हैं।
2FA-Tool में रीयल-टाइम TOTP गणना का अनुभव करें
देखें कि कैसे आपकी Base32 गुप्त स्ट्रिंग HMAC-SHA1 डायनामिक ट्रंकेशन के माध्यम से गतिशील 6-अंकीय कोड में बदलती है। आपके ब्राउज़र में 100% ऑफ़लाइन।
📚 संबंधित सुरक्षा गाइड
ऑफ़लाइन QR कोड और क्लाउड सिंक का उपयोग करके स्मार्टफ़ोन पर 2FA खातों को कैसे स्थानांतरित करें।
अनुपालन नियम, रिकवरी कोड सहेजना, SSH कुंजी सहभागिता, और बचाव वर्कफ़्लो।
Google, Microsoft, Steam, Binance, Apple और Discord पर पहुंच कैसे पुनर्प्राप्त करें।