- मूलभूत इनपुट फरक: HOTP हे एका दिशेने वाढणाऱ्या काउंटर C (monotonically increasing counter) वरून हॅशची गणना करते, तर TOTP काउंटर C ची जागा इपॉक टाइम स्टेप T (CurrentUnixTime / 30) ने घेते.
- थेट वारसा (Direct Inheritance): TOTP हे गणितीयदृष्ट्या HOTP चेच एक विशेष रूप आहे:
TOTP(K, Time) = HOTP(K, T). दोन्ही अल्गोरिदम अगदी समान डायनॅमिक ट्रंकेशन (Dynamic Truncation) फंक्शन वापरतात. - आर्किटेक्चरल निर्णय घटक: HOTP हे स्टेटफुल (Stateful) आहे (सर्व्हरला प्रत्येक प्रमाणीकरणावर काउंटर डिस्कवर लॉक करून जतन करावा लागतो). TOTP हे स्टेटलेस (Stateless) आहे, ज्यामुळे आधुनिक क्लाउड मायक्रोसर्व्हिसेसना कोणत्याही केंद्रीकृत डेटाबेस राइट ऑपरेशन्सशिवाय वितरित लोड-बॅलन्स्ड क्लस्टर्सवर टोकन्स सत्यापित करण्याची मुभा मिळते.
ऐतिहासिक पार्श्वभूमी: प्रोप्रायटरी हार्डवेअर टोकन्सपासून मुक्त वेब मानकांपर्यंत
२००० च्या दशकाच्या सुरुवातीस, कॉर्पोरेट द्वि-घटक प्रमाणीकरणावर RSA SecurID सारख्या प्रोप्रायटरी की फॉब्सचे (Key Fobs) वर्चस्व होते. या बंदिस्त, महागड्या उपकरणांमध्ये अंतर्गत क्वार्ट्झ क्रिस्टल्स असत जे प्रोप्रायटरी एंटरप्राइझ सर्व्हर्सशी सिंक्रोनाइझ केलेले असायचे. जर एखाद्या संस्थेला हजारो कर्मचाऱ्यांना मल्टी-फॅक्टर सुरक्षा पुरवायची असेल, तर हार्डवेअर खरेदी आणि प्रोप्रायटरी परवान्यांचा खर्च प्रचंड असायचा.
प्रमाणीकरणाला प्रोप्रायटरी व्हेंडर्सच्या मक्तेदारीतून मुक्त करण्यासाठी, उद्योग जगतातील आघाडीच्या नेत्यांनी OATH (Initiative for Open Authentication) कन्सोर्टियमची स्थापना केली. कोणत्याही सॉफ्टवेअर इंजिनिअरला सहज तपासणी, अंमलबजावणी आणि ऑडिट करता येतील अशी मुक्त, रॉयल्टी-मुक्त IETF मानके विकसित करणे हा यामागचा उद्देश होता:
HMAC-Based One-Time Password Algorithm. फिजिकल पुश बटणे असलेल्या कमी-शक्तीच्या मायक्रोकंट्रोलर्ससाठी खास डिझाइन केलेले. बटण दाबल्यावर अंतर्गत काउंटर वाढतो आणि एलसीडी स्क्रीनवर ६-अंकी टोकन झळकते.
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) २० बाइट्सचे रूपांतर ६ अंकांमध्ये कसे करते:
HMAC-SHA1 डायजेस्टमध्ये १६० बिट्स (२० बाइट्स) असतात. एकसमान ६ दशांश अंक काढण्यासाठी RFC 4226 च्या विभाग ५.३ मध्ये परिभाषित केलेल्या निश्चित (deterministic) आणि कोलिजन-प्रतिरोधक निवड यंत्रणेची आवश्यकता असते:
समजा सिक्रेट की ASCII "12345678901234567890" आहे आणि काउंटर C = 0 आहे. हेक्साडेसिमलमध्ये प्राप्त होणारा HMAC-SHA1 डायजेस्ट असा आहे:
१. शेवटचा बाइट 0x71 आहे. 0x71 & 0x0F = 0x01, म्हणून Offset = 1.
२. बाइट १ ते ४ हे आहेत: 93 cf 18 50. MSB शून्य केल्यावर 0x13cf1850 मिळतो, जो दशांश पद्धतीत 332,339,280 च्या समान आहे.
३. 332339280 mod 1000000 = 339280. परिणामी मिळणारा ६-अंकी OTP आहे 339280!
TOTP (RFC 6238) चा विकास: टाइम-स्टेपची किमया
HOTP मध्ये क्लायंटवरील काउंटर सर्व्हरशी सिंक्रोनाइझ ठेवणे आवश्यक होते. सॉफ्टवेअर उपकरणांवर, कीस्ट्रोक्स किंवा बटण दाब मोजताना मानवी चुका होण्याची शक्यता नेहमीच असायची.
RFC 6238 ने काउंटर C ची जागा थेट Unix इपॉक घड्याळातून घेतलेल्या डिस्क्रीट टाइम स्टेप T ने घेतली:
- CurrentUnixTime: १९७०-०१-०१ ००:००:०० UTC पासून उलटून गेलेले सेकंद.
- T0: इपॉक इनिशियलायझेशन संदर्भ (सर्व आधुनिक प्रणालींमध्ये डीफॉल्ट ० असतो).
- X (Time Step Window): मानक शिफारस केलेला कालावधी ३० सेकंद आहे.
- फ्लोअर फंक्शन ⌊ ⌋: ३० सेकंदांच्या विंडोमधील कोणत्याही टाइमस्टॅम्पसाठी, T स्थिर राहतो. उदाहरणार्थ, इपॉक सेकंद 1728211200 आणि 1728211229 दरम्यान, T चे मूल्य अगदी समान ६४-बिट इंटिजर येते.
बायनरी सिरियलायझेशन: एकदा T ची गणना झाल्यावर, तो ८-बाइट बिग-एंडियन बायनरी बाइट बफरमध्ये भरला जातो (मेमरी स्ट्रक्चरमध्ये HOTP च्या काउंटर C शी पूर्णपणे जुळणारा). परिणामी, हे एकत्रित सूत्र असे सुलभ होते:
TOTP(K, Time) = HOTP(K, T)
या गणितीय सौंदर्यामुळेच ऑथेंटिकेटर अॅप्स कोणत्याही पर्सिस्टंट स्टेट सिंक्रोनायझेशनची गरज न भासता दर ३० सेकंदांनी टोकन्स आपोआप रीफ्रेश करतात.
HS[31] & 0x0F) वरून घेतला जातो; SHA-512 (६४-बाइट डायजेस्ट) मध्ये, ऑफसेट बाइट ६३ (HS[63] & 0x0F) वरून घेतला जातो. तथापि, जुन्या मोबाइल क्लायंट सुसंगततेमुळे ९९.९% व्यावसायिक वेबसाइट्सवर (Google, Microsoft, GitHub, AWS) SHA-1 हेच सर्वमान्य मानक राहिले आहे.
सविस्तर तुलनात्मक तक्ता (HOTP विरुद्ध TOTP)
| तुलनेचा घटक | HOTP (RFC 4226) | TOTP (RFC 6238) |
|---|---|---|
| इनपुट व्हेरिएबल | इव्हेंट काउंटर C (एका दिशेने वाढणारा) | टाइम स्टेप T (३०-सेकंदांची Unix इपॉक विंडो) |
| टोकन आयुष्य | अमर्याद (पुढील लॉगिनद्वारे वापरले जाईपर्यंत वैध) | अचूक ३० सेकंद (आपोआप अवैध ठरते) |
| सर्व्हर आर्किटेक्चर | स्टेटफुल (प्रत्येक लॉगिनला अॅटोमिक डेटाबेस राइट आवश्यक) | स्टेटलेस (स्वतंत्र NTP पडताळणी) |
| रिप्ले हल्ल्यांचा धोका | मध्यम (चोरी झालेले टोकन वापरले जाईपर्यंत वैध राहते) | नगण्य (केवळ चालू विंडोच्या उर्वरित सेकंदांपुरते मर्यादित) |
| मुख्य त्रुटी मोड | काउंटर डीसिंक्रोनायझेशन (चुकून बटण दाबले जाणे) | क्लॉक ड्रिफ्ट (क्लायंट फोनच्या वेळेतील तफावत) |
| समर्थित क्रिप्टोग्राफिक हॅश | केवळ HMAC-SHA-1 | HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-512 |
| उद्योग जगतातील वापर | जुने बँकिंग फॉब्स, विशेष भौतिक सुरक्षा गेट्स | आधुनिक वेब ऑथेंटिकेटर्सपैकी ९९.९% |
डीसिंक्रोनायझेशन विरुद्ध टाइम ड्रिफ्ट: तांत्रिक उपाय
वितरित प्रोडक्शन वातावरणात क्लायंट आणि सर्व्हरच्या वेळेत तफावत पडणे अपरिहार्य असते. प्रणालीची विश्वासार्हता टिकवून ठेवण्यासाठी क्रिप्टोग्राफर्सनी विशेष भरपाई खिडक्या (compensation windows) तयार केल्या आहेत:
जर एखाद्या वापरकर्त्याने टोकन कोड सबमिट न करता टोकनचे बटण ५ वेळा दाबले, तर क्लायंटचा काउंटर C+5 वर पोहोचतो तर सर्व्हर C वरच राहतो.
RFC 4226 नुसार, प्रमाणीकरणाच्या वेळी सर्व्हर [C+1, C+s] (सामान्यत: s=20) च्या लूक-अहेड विंडोची गणना करतो. जुळवणी आढळल्यास, सर्व्हर पुढे जाऊन काउंटर C ताबडतोब सिंक्रोनाइझ करतो.
नेटवर्कमधील विलंब किंवा क्लायंट उपकरणाच्या क्लॉक ड्रिफ्टमुळे (उदा. फोनचे घड्याळ १० सेकंद मागे असणे), टोकन्स लगतच्या टाइम स्टेप्समध्ये पोहोचू शकतात.
प्रोडक्शन सर्व्हर्स ३-विंडो अॅरेचे मूल्यांकन करतात: [T-1, T, T+1], ज्यामुळे स्वीकृती विंडो प्रभावीपणे ९० सेकंदांपर्यंत वाढते.
जेव्हा सर्व्हर वापरकर्त्याने सबमिट केलेला कोड गणनेनुसार बरोबर आहे की नाही हे तपासतात, तेव्हा साधे स्ट्रिंग समानता चेक (उदा. userOtp === serverOtp) पहिल्या न जुळणाऱ्या अक्षरावर तपासणी थांबवतात. नेटवर्क रिस्पॉन्सच्या सूक्ष्म वेळेचे मोजमाप करून हल्लेखोर एकेक करून अंक शोधू शकतात. साइड-चॅनेल टायमिंग विश्लेषण हाणून पाडण्यासाठी एंटरप्राइझ बॅकएंड्स कॉन्स्टंट-टाइम समानता पडताळणी लागू करतात (उदा. Node.js मध्ये crypto.timingSafeEqual).
आधुनिक इंटरनेटवर TOTP का विजयी ठरले?
संपूर्ण वेबवर HOTP वर TOTP चा निर्णायक विजय हा तीन मुख्य आर्किटेक्चरल फायद्यांमुळे शक्य झाला:
वितरित मल्टी-रिजन मायक्रोसर्व्हिसेसमध्ये, NTP-सिंक्रोनाइझ घड्याळ असलेले कोणतेही सर्व्हर इन्स्टन्स केंद्रीकृत डेटाबेस रेकॉर्ड क्वेरी किंवा लॉक न करता TOTP टोकन्स पडताळू शकते.
स्मार्टफोन्स सेल्युलर टॉवर्स आणि GPS द्वारे त्यांचे सिस्टम घड्याळ सतत कॅलिब्रेट करतात, ज्यामुळे कोणत्याही प्रत्यक्ष हार्डवेअर देखभालीशिवाय क्लॉक ड्रिफ्ट नष्ट होतो.
HOTP टोकन्स वापरले जाईपर्यंत अमर्याद काळासाठी वैध राहतात. TOTP टोकन्स ३० सेकंदात कालबाह्य होतात, ज्यामुळे असुरक्षित लॉग्स आणि पॅकेट कॅप्चर धोके आपोआप निष्प्रभ होतात.
2FA-Tool मध्ये रिअल-टाइम TOTP गणना अनुभवा
HMAC-SHA1 डायनॅमिक ट्रंकेशनद्वारे तुमची Base32 सिक्रेट स्ट्रिंग डायनॅमिक ६-अंकी कोडमध्ये कशी रूपांतरित होते ते पहा. तुमच्या ब्राउझरमध्ये १००% ऑफलाइन.
📚 संबंधित सुरक्षा मार्गदर्शक
ऑफलाइन QR कोड आणि क्लाउड सिंक वापरून स्मार्टफोन्समध्ये 2FA खाती कशी हस्तांतरित करावीत.
अनुपालन नियम, पुनर्प्राप्ती कोड सेव्ह करणे, SSH की समन्वय आणि आपत्कालीन कार्यप्रवाह.
Google, Microsoft, Steam, Binance, Apple आणि Discord वर प्रवेश कसा पुनर्प्राप्त करावा.