2FA-Tool Logo
2FA-Tool.com ब्राउझरमध्ये सुरक्षित क्लायंट-साइड 2FA कोड जनरेटर
⏱️ क्रिप्टोग्राफी आणि RFC प्रोटोकॉल्स ✓ IETF मानके विश्लेषण

TOTP विरुद्ध HOTP विश्लेषण: मुख्य फरक, सुरक्षा आणि कार्यप्रणाली

लाखो डेव्हलपर्स आणि सुरक्षा अभियंते दररोज बदलणारे ६-अंकी पडताळणी कोड पाहतात, परंतु स्क्रीनच्या मागे कार्यरत असलेल्या मोहक गणितीय यंत्रणेबद्दल फार कमी जणांना माहिती असते. २००५ मधील RFC 4226 (HOTP) इव्हेंट-आधारित काऊंटर्सपासून ते २०११ मधील RFC 6238 (TOTP) डिस्क्रीट टाइम स्टेप्सपर्यंत, हा मार्गदर्शक बाइट-स्तरीय डायनॅमिक ट्रंकेशन (Dynamic Truncation) अल्गोरिदम, काउंटर डीसिंक्रोनायझेशन भेद्यता, क्लॉक ड्रिफ्ट टॉलरन्स आणि TOTP ने आधुनिक वेबवर आपले वर्चस्व का प्रस्थापित केले याचे सखोल विश्लेषण करतो.

2FA
2FA-Tool सुरक्षा अभियांत्रिकी टीम
ऑक्टोबर २०२६ रोजी अद्यतनित
अंदाजे वाचन वेळ: १४ मिनिटे (२,६००+ शब्द)
RFC 6238 RFC 4226 Dynamic Truncation
💡 क्रिप्टोग्राफिक निष्कर्ष (TL;DR)
  • मूलभूत इनपुट फरक: 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) आहे, ज्यामुळे आधुनिक क्लाउड मायक्रोसर्व्हिसेसना कोणत्याही केंद्रीकृत डेटाबेस राइट ऑपरेशन्सशिवाय वितरित लोड-बॅलन्स्ड क्लस्टर्सवर टोकन्स सत्यापित करण्याची मुभा मिळते.
01

ऐतिहासिक पार्श्वभूमी: प्रोप्रायटरी हार्डवेअर टोकन्सपासून मुक्त वेब मानकांपर्यंत

२००० च्या दशकाच्या सुरुवातीस, कॉर्पोरेट द्वि-घटक प्रमाणीकरणावर RSA SecurID सारख्या प्रोप्रायटरी की फॉब्सचे (Key Fobs) वर्चस्व होते. या बंदिस्त, महागड्या उपकरणांमध्ये अंतर्गत क्वार्ट्झ क्रिस्टल्स असत जे प्रोप्रायटरी एंटरप्राइझ सर्व्हर्सशी सिंक्रोनाइझ केलेले असायचे. जर एखाद्या संस्थेला हजारो कर्मचाऱ्यांना मल्टी-फॅक्टर सुरक्षा पुरवायची असेल, तर हार्डवेअर खरेदी आणि प्रोप्रायटरी परवान्यांचा खर्च प्रचंड असायचा.

प्रमाणीकरणाला प्रोप्रायटरी व्हेंडर्सच्या मक्तेदारीतून मुक्त करण्यासाठी, उद्योग जगतातील आघाडीच्या नेत्यांनी OATH (Initiative for Open Authentication) कन्सोर्टियमची स्थापना केली. कोणत्याही सॉफ्टवेअर इंजिनिअरला सहज तपासणी, अंमलबजावणी आणि ऑडिट करता येतील अशी मुक्त, रॉयल्टी-मुक्त IETF मानके विकसित करणे हा यामागचा उद्देश होता:

📜 2005: RFC 4226 (HOTP)

HMAC-Based One-Time Password Algorithm. फिजिकल पुश बटणे असलेल्या कमी-शक्तीच्या मायक्रोकंट्रोलर्ससाठी खास डिझाइन केलेले. बटण दाबल्यावर अंतर्गत काउंटर वाढतो आणि एलसीडी स्क्रीनवर ६-अंकी टोकन झळकते.

📜 2011: RFC 6238 (TOTP)

Time-Based One-Time Password Algorithm. स्मार्टफोनचा प्रसार वाढल्यानंतर विकसित केले गेले. सेल्युलर NTP नेटवर्क टाइम सिंक्रोनायझेशनचा वापर करून, TOTP ने फिजिकल बटण स्टेट जुळवणीच्या सर्व समस्या मुळापासून नष्ट केल्या.

02

HOTP (RFC 4226) आर्किटेक्चर आणि डायनॅमिक ट्रंकेशन बाइट मेकॅनिक्स

HOTP ची मुख्य गणितीय व्याख्या अतिशय संक्षिप्त आणि अचूक आहे:

HOTP(K, C) = Truncate(HMAC-SHA-1(K, C)) mod 10DigitCount

घटकांचे सविस्तर स्पष्टीकरण:

  • K: सामायिक सिमेट्रिक सिक्रेट की (सामान्यत: Base32 डीकोड केलेला 160-बिट / 20-बाइट बायनरी सिक्वेन्स).
  • C: 8-बाइट (64-बिट) बिग-एंडियन इंटिजर काउंटर.
  • HMAC-SHA-1: कीड-हॅश मेसेज ऑथेंटिकेशन कोड जो 20-बाइट (160-बिट) क्रिप्टोग्राफिक डायजेस्ट तयार करतो.

🔍 डायनॅमिक ट्रंकेशन (DT) २० बाइट्सचे रूपांतर ६ अंकांमध्ये कसे करते:

HMAC-SHA1 डायजेस्टमध्ये १६० बिट्स (२० बाइट्स) असतात. एकसमान ६ दशांश अंक काढण्यासाठी RFC 4226 च्या विभाग ५.३ मध्ये परिभाषित केलेल्या निश्चित (deterministic) आणि कोलिजन-प्रतिरोधक निवड यंत्रणेची आवश्यकता असते:

// पायरी 1: डायनॅमिक ऑफसेट काढा
Offset = HS[19] & 0x0F
२०-बाइट डायजेस्टचा शेवटचा बाइट (इंडेक्स १९) घ्या. 0x0F सह मास्किंग केल्याने खालचे ४ बिट्स वेगळे होतात, ज्यामुळे ० ते १५ (0x0 ते 0xF) दरम्यानचा एक इंटिजर मिळतो. यामुळे त्यानंतरचे ४ बाइट्स काढताना २०-बाइट बफरची मर्यादा कधीही ओलांडली जात नाही (कारण १५ + ४ = १९).
// पायरी 2: मास्किंगसह सलग ४ बाइट्स मिळवा
P = ( (HS[Offset] & 0x7F) << 24 ) | ( (HS[Offset+1] & 0xFF) << 16 ) | ( (HS[Offset+2] & 0xFF) << 8 ) | ( HS[Offset+3] & 0xFF )
ऑफसेटपासून सुरू होणारे ४ बाइट्स मिळवा. विविध सीपीयू आर्किटेक्चरवर साईन-इंटिजर ओव्हरफ्लो टाळण्यासाठी 0x7F मास्क सर्वात महत्त्वाचा बिट शून्य (0) करतो (यामुळे ३१-बिट पॉझिटिव्ह इंटिजर सुनिश्चित होतो).
// पायरी 3: अंतिम अंकासाठी मॉड्युलो गणित
OTP = P mod 106 = P mod 1000000
मॉड्युलो १,०००,००० लागू केल्याने शेवटचे ६ दशांश अंक वेगळे होतात आणि आवश्यक असल्यास सुरुवातीला शून्य (०) जोडले जातात (उदा. ७४८ हे "०००७४८" बनते).
🧪 RFC 4226 परिशिष्ट D मधील प्रत्यक्ष चाचणी उदाहरण:

समजा सिक्रेट की ASCII "12345678901234567890" आहे आणि काउंटर C = 0 आहे. हेक्साडेसिमलमध्ये प्राप्त होणारा HMAC-SHA1 डायजेस्ट असा आहे:

cc 93 cf 18 50 8d 94 93 4c 64 b6 6d 8b fb 87 fb 23 cb 4b 71

१. शेवटचा बाइट 0x71 आहे. 0x71 & 0x0F = 0x01, म्हणून Offset = 1.
२. बाइट १ ते ४ हे आहेत: 93 cf 18 50. MSB शून्य केल्यावर 0x13cf1850 मिळतो, जो दशांश पद्धतीत 332,339,280 च्या समान आहे.
३. 332339280 mod 1000000 = 339280. परिणामी मिळणारा ६-अंकी OTP आहे 339280!

03

TOTP (RFC 6238) चा विकास: टाइम-स्टेपची किमया

HOTP मध्ये क्लायंटवरील काउंटर सर्व्हरशी सिंक्रोनाइझ ठेवणे आवश्यक होते. सॉफ्टवेअर उपकरणांवर, कीस्ट्रोक्स किंवा बटण दाब मोजताना मानवी चुका होण्याची शक्यता नेहमीच असायची.

RFC 6238 ने काउंटर C ची जागा थेट Unix इपॉक घड्याळातून घेतलेल्या डिस्क्रीट टाइम स्टेप T ने घेतली:

T = ⌊ (CurrentUnixTime - T0) / X ⌋
  • CurrentUnixTime: १९७०-०१-०१ ००:००:०० UTC पासून उलटून गेलेले सेकंद.
  • T0: इपॉक इनिशियलायझेशन संदर्भ (सर्व आधुनिक प्रणालींमध्ये डीफॉल्ट ० असतो).
  • X (Time Step Window): मानक शिफारस केलेला कालावधी ३० सेकंद आहे.
  • फ्लोअर फंक्शन ⌊ ⌋: ३० सेकंदांच्या विंडोमधील कोणत्याही टाइमस्टॅम्पसाठी, T स्थिर राहतो. उदाहरणार्थ, इपॉक सेकंद 1728211200 आणि 1728211229 दरम्यान, T चे मूल्य अगदी समान ६४-बिट इंटिजर येते.

बायनरी सिरियलायझेशन: एकदा T ची गणना झाल्यावर, तो ८-बाइट बिग-एंडियन बायनरी बाइट बफरमध्ये भरला जातो (मेमरी स्ट्रक्चरमध्ये HOTP च्या काउंटर C शी पूर्णपणे जुळणारा). परिणामी, हे एकत्रित सूत्र असे सुलभ होते:
TOTP(K, Time) = HOTP(K, T) या गणितीय सौंदर्यामुळेच ऑथेंटिकेटर अ‍ॅप्स कोणत्याही पर्सिस्टंट स्टेट सिंक्रोनायझेशनची गरज न भासता दर ३० सेकंदांनी टोकन्स आपोआप रीफ्रेश करतात.

SHA-256 आणि SHA-512 साठी RFC 6238 समर्थन: RFC 4226 मध्ये केवळ HMAC-SHA-1 स्पष्टपणे परिभाषित केले होते, परंतु RFC 6238 ने HMAC-SHA-256 आणि HMAC-SHA-512 साठी समर्थन विस्तारित केले. SHA-256 (३२-बाइट डायजेस्ट) मध्ये, ऑफसेट बाइट ३१ (HS[31] & 0x0F) वरून घेतला जातो; SHA-512 (६४-बाइट डायजेस्ट) मध्ये, ऑफसेट बाइट ६३ (HS[63] & 0x0F) वरून घेतला जातो. तथापि, जुन्या मोबाइल क्लायंट सुसंगततेमुळे ९९.९% व्यावसायिक वेबसाइट्सवर (Google, Microsoft, GitHub, AWS) SHA-1 हेच सर्वमान्य मानक राहिले आहे.
04

सविस्तर तुलनात्मक तक्ता (HOTP विरुद्ध TOTP)

तुलनेचा घटक HOTP (RFC 4226) TOTP (RFC 6238)
इनपुट व्हेरिएबल इव्हेंट काउंटर C (एका दिशेने वाढणारा) टाइम स्टेप T (३०-सेकंदांची Unix इपॉक विंडो)
टोकन आयुष्य अमर्याद (पुढील लॉगिनद्वारे वापरले जाईपर्यंत वैध) अचूक ३० सेकंद (आपोआप अवैध ठरते)
सर्व्हर आर्किटेक्चर स्टेटफुल (प्रत्येक लॉगिनला अ‍ॅटोमिक डेटाबेस राइट आवश्यक) स्टेटलेस (स्वतंत्र NTP पडताळणी)
रिप्ले हल्ल्यांचा धोका मध्यम (चोरी झालेले टोकन वापरले जाईपर्यंत वैध राहते) नगण्य (केवळ चालू विंडोच्या उर्वरित सेकंदांपुरते मर्यादित)
मुख्य त्रुटी मोड काउंटर डीसिंक्रोनायझेशन (चुकून बटण दाबले जाणे) क्लॉक ड्रिफ्ट (क्लायंट फोनच्या वेळेतील तफावत)
समर्थित क्रिप्टोग्राफिक हॅश केवळ HMAC-SHA-1 HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-512
उद्योग जगतातील वापर जुने बँकिंग फॉब्स, विशेष भौतिक सुरक्षा गेट्स आधुनिक वेब ऑथेंटिकेटर्सपैकी ९९.९%
05

डीसिंक्रोनायझेशन विरुद्ध टाइम ड्रिफ्ट: तांत्रिक उपाय

वितरित प्रोडक्शन वातावरणात क्लायंट आणि सर्व्हरच्या वेळेत तफावत पडणे अपरिहार्य असते. प्रणालीची विश्वासार्हता टिकवून ठेवण्यासाठी क्रिप्टोग्राफर्सनी विशेष भरपाई खिडक्या (compensation windows) तयार केल्या आहेत:

⚙️ HOTP उपाय: लूक-अहेड पडताळणी विंडो (s)

जर एखाद्या वापरकर्त्याने टोकन कोड सबमिट न करता टोकनचे बटण ५ वेळा दाबले, तर क्लायंटचा काउंटर C+5 वर पोहोचतो तर सर्व्हर C वरच राहतो.
RFC 4226 नुसार, प्रमाणीकरणाच्या वेळी सर्व्हर [C+1, C+s] (सामान्यत: s=20) च्या लूक-अहेड विंडोची गणना करतो. जुळवणी आढळल्यास, सर्व्हर पुढे जाऊन काउंटर C ताबडतोब सिंक्रोनाइझ करतो.

⏱️ TOTP उपाय: टाइम स्क्यू टॉलरन्स (±1 विंडो)

नेटवर्कमधील विलंब किंवा क्लायंट उपकरणाच्या क्लॉक ड्रिफ्टमुळे (उदा. फोनचे घड्याळ १० सेकंद मागे असणे), टोकन्स लगतच्या टाइम स्टेप्समध्ये पोहोचू शकतात.
प्रोडक्शन सर्व्हर्स ३-विंडो अ‍ॅरेचे मूल्यांकन करतात: [T-1, T, T+1], ज्यामुळे स्वीकृती विंडो प्रभावीपणे ९० सेकंदांपर्यंत वाढते.

अत्यावश्यक अँटी-रिप्ले नियम: ९० सेकंदांच्या स्क्यू विंडोमध्ये रिप्ले हल्ले रोखण्यासाठी, सर्व्हर्सनी वापरलेली टोकन्स ९० सेकंदांसाठी मेमरीमध्ये (उदा. Redis) कॅश करून लॉक केली पाहिजेत आणि डुप्लिकेट सबमिशन नाकारले पाहिजेत.
🛡️ कॉन्स्टंट-टाइम स्ट्रिंग कम्पेरिझन (टायमिंग अटॅक संरक्षण):

जेव्हा सर्व्हर वापरकर्त्याने सबमिट केलेला कोड गणनेनुसार बरोबर आहे की नाही हे तपासतात, तेव्हा साधे स्ट्रिंग समानता चेक (उदा. userOtp === serverOtp) पहिल्या न जुळणाऱ्या अक्षरावर तपासणी थांबवतात. नेटवर्क रिस्पॉन्सच्या सूक्ष्म वेळेचे मोजमाप करून हल्लेखोर एकेक करून अंक शोधू शकतात. साइड-चॅनेल टायमिंग विश्लेषण हाणून पाडण्यासाठी एंटरप्राइझ बॅकएंड्स कॉन्स्टंट-टाइम समानता पडताळणी लागू करतात (उदा. Node.js मध्ये crypto.timingSafeEqual).

06

आधुनिक इंटरनेटवर TOTP का विजयी ठरले?

संपूर्ण वेबवर HOTP वर TOTP चा निर्णायक विजय हा तीन मुख्य आर्किटेक्चरल फायद्यांमुळे शक्य झाला:

☁️ स्टेटलेस क्लाउड स्केलेबिलिटी

वितरित मल्टी-रिजन मायक्रोसर्व्हिसेसमध्ये, NTP-सिंक्रोनाइझ घड्याळ असलेले कोणतेही सर्व्हर इन्स्टन्स केंद्रीकृत डेटाबेस रेकॉर्ड क्वेरी किंवा लॉक न करता TOTP टोकन्स पडताळू शकते.

📱 मोबाइल इकोसिस्टमची सुसंगतता

स्मार्टफोन्स सेल्युलर टॉवर्स आणि GPS द्वारे त्यांचे सिस्टम घड्याळ सतत कॅलिब्रेट करतात, ज्यामुळे कोणत्याही प्रत्यक्ष हार्डवेअर देखभालीशिवाय क्लॉक ड्रिफ्ट नष्ट होतो.

🛡️ मर्यादित ३०-सेकंद अटॅक विंडो

HOTP टोकन्स वापरले जाईपर्यंत अमर्याद काळासाठी वैध राहतात. TOTP टोकन्स ३० सेकंदात कालबाह्य होतात, ज्यामुळे असुरक्षित लॉग्स आणि पॅकेट कॅप्चर धोके आपोआप निष्प्रभ होतात.

🧮 प्युअर क्लायंट-साइड RFC 6238 इंजिन

2FA-Tool मध्ये रिअल-टाइम TOTP गणना अनुभवा

HMAC-SHA1 डायनॅमिक ट्रंकेशनद्वारे तुमची Base32 सिक्रेट स्ट्रिंग डायनॅमिक ६-अंकी कोडमध्ये कशी रूपांतरित होते ते पहा. तुमच्या ब्राउझरमध्ये १००% ऑफलाइन.

ऑनलाइन जनरेटर उघडा