HOTP
HOTP (HMAC-आधारित वन-टाइम पासवर्ड, RFC 4226) TOTP का काउंटर-आधारित समकक्ष है। जहां TOTP घड़ी पर आगे बढ़ता है, वहीं HOTP एक साझा काउंटर पर आगे बढ़ता है जिसे टोकन और सर्वर दोनों प्रत्येक उपयोग किए गए कोड के साथ बढ़ाते हैं।
URI scheme:Google Authenticator Key URI Format, the
otpauth:// scheme every authenticator agrees on. Sibling spec:TOTP (RFC 6238), time-based variant that builds on HOTP.
यह क्या है
HOTP नामांकन QR otpauth:// स्कीम में एक URL है जिसमें प्रकार के रूप में hotp है। यह साझा HMAC सीक्रेट के साथ-साथ एक काउंटर मान ले जाता है जिसे दोनों पक्षों को सिंक में रखना होगा। प्रारूप:
otpauth://hotp/LABEL?secret=SECRET&issuer=ISSUER&counter=N&digits=N&algorithm=ALG- LABEL,
Issuer:Account, URL-एन्कोडेड। उदाहरण:YubiKey:alice@example.com। - secret, साझा HMAC कुंजी, Base32-एन्कोडेड (RFC 4648 §6: A-Z, 2-7)।
- counter, काउंटर का प्रारंभिक मान। आमतौर पर
0, लेकिन टोकन पुनः-नामांकित करते समय ज्ञात मान से पुनः शुरू किया जा सकता है। - issuer, प्रमाणक ऐप में दिखाया गया सेवा नाम।
- digits,
6(डिफ़ॉल्ट) या8। RFC 4226 §5.3 6 निर्दिष्ट करता है; 8 एक सामान्य विस्तार है। - algorithm, व्यवहार में
SHA1। RFC 4226 केवल SHA1 परिभाषित करता है; SHA256/512 वेरिएंट RFC 6238 एक्सटेंशन हैं।
HOTP बनाम TOTP, कब कौन सा उपयोग करें
| विशेषता | HOTP (RFC 4226) | TOTP (RFC 6238) |
|---|---|---|
| पर आगे बढ़ता है | काउंटर (प्रत्येक सफल उपयोग) | घड़ी (हर 30 सेकंड) |
| घड़ी सिंक की आवश्यकता | नहीं | हां, ~30 सेकंड ड्रिफ्ट के भीतर |
| ड्रिफ्ट पर रीसिंक | सर्वर अगले N काउंटर मान स्वीकार करता है | सर्वर ±1 विंडो स्वीकार करता है |
| सामान्य परिनियोजन | YubiKey, पुराने हार्डवेयर टोकन, ऑफलाइन बैंकिंग | सभी उपभोक्ता 2FA, Google, Microsoft, 1Password, Authy |
| काउंटर पुनः उपयोग | विनाशकारी, समय के साथ सीक्रेट लीक करता है | लागू नहीं |
| सीक्रेट लीक होने पर कमजोरी | सभी भविष्य के कोड अनुमानित | सभी पिछले + भविष्य के कोड अनुमानित |
कैनोनिकल टेस्ट वेक्टर
RFC 4226 परिशिष्ट D सीक्रेट 12345678901234567890 (20 बाइट्स, Base32 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ) के लिए 6-अंकीय आउटपुट के साथ संदर्भ HOTP मान प्रदान करता है:
| Counter | HOTP (6-digit) |
|---|---|
0 | 755224 |
1 | 287082 |
2 | 359152 |
3 | 969429 |
4 | 338314 |
5 | 254676 |
6 | 287922 |
7 | 162583 |
8 | 399871 |
9 | 520489 |
काउंटर 0 पर नामांकन के लिए न्यूनतम QR पेलोड:
otpauth://hotp/Example:test?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ&issuer=Example&counter=0लाइव Base32 सीक्रेट वैलिडेटर
TOTP पृष्ठ के समान वैलिडेटर, HOTP सीक्रेट समान Base32 वर्णमाला (RFC 4648 §6: A-Z, 2-7) उपयोग करते हैं। आपके ब्राउज़र में चलता है, कोई सर्वर राउंड-ट्रिप नहीं।
सामान्य समस्याएं
- काउंटर ड्रिफ्ट। यदि उपयोगकर्ता टोकन बटन दबाता है लेकिन सर्वर कोड दर्ज नहीं करता, तो टोकन काउंटर सर्वर काउंटर से आगे चला जाता है। सर्वर 'रीसिंक विंडो' से इसे संभालते हैं।
- काउंटर पुनः उपयोग विनाशकारी है। कभी भी एक ही काउंटर मान दो बार स्वीकार न करें। RFC 4226 §7.3 आदेश देता है कि सर्वर अंतिम-स्वीकृत काउंटर पर या उससे नीचे किसी भी कोड को अस्वीकार करे।
- बैकअप के दौरान काउंटर निर्यात। HOTP प्रविष्टियां निर्यात करने वाले प्रमाणक ऐप कभी-कभी सीक्रेट निर्यात करते हैं लेकिन वर्तमान काउंटर नहीं। नए डिवाइस में आयात करने से काउंटर 0 पर रीस्टार्ट होता है।
- Base32, Base64 नहीं। TOTP के समान नियम:
0,1,8,9, लोअरकेस अक्षरों,+, या/वाले सीक्रेट Base64 हैं और हर RFC-अनुपालन प्रमाणक द्वारा अस्वीकार किए जाएंगे। - व्यवहार में केवल SHA1। RFC 4226 SHA1 को HMAC फ़ंक्शन के रूप में परिभाषित करता है। SHA256/SHA512 RFC 6238 TOTP-युग के एक्सटेंशन हैं; अधिकांश HOTP हार्डवेयर टोकन इन्हें लागू नहीं करते।
- Digits पैरामीटर अक्सर नजरअंदाज। कई हार्डवेयर टोकन 6 अंकों पर फिक्स होते हैं और 8 मांगने पर चुपचाप ट्रंकेट करते हैं। QR कार्ड प्रिंट करने से पहले अपने लक्ष्य हार्डवेयर के विरुद्ध सत्यापित करें।
- HOTP और TOTP को एक ही QR में न मिलाएं। URI स्कीम मोड स्विच करने के लिए
TYPE(hotpvstotp) सेगमेंट का उपयोग करता है। एक सीक्रेट दोनों को पावर कर सकता है, लेकिन दोनों फ्लो सीक्रेट साझा करते हैं।
प्रमाणक संगतता
| ऐप / टोकन | HOTP | SHA256/512 | 8-अंक | नोट्स |
|---|---|---|---|---|
| YubiKey Authenticator (iOS/Android/desktop) | Yes | Yes | Yes | HOTP कैनोनिकल YubiKey OATH मोड है। पूर्ण RFC 4226 समर्थन। |
| Google Authenticator | Yes | नजरअंदाज (केवल SHA1) | नजरअंदाज (केवल 6) | डी-फैक्टो बेसलाइन। HOTP के लिए सुरक्षित लेकिन केवल 6-अंकीय SHA1 के साथ। |
| 1Password | Yes | Yes | Yes | पूर्ण RFC समर्थन। काउंटर प्रविष्टि के साथ संग्रहीत और निर्यात किया जाता है। |
| Bitwarden | Yes | Yes | Yes | पूर्ण RFC समर्थन। |
| Microsoft Authenticator | Yes | Yes | Yes | पूर्ण RFC समर्थन। |
| Authy | No | , | , | हाल के संस्करणों में HOTP हटाया। केवल TOTP। |
| Duo Mobile | No | , | , | अपना खुद का पुश फ्लो उपयोग करता है; केवल TOTP फॉलबैक। |
| OATH hardware tokens (Feitian, Token2, etc.) | Yes | Varies | Varies | कैनोनिकल हार्डवेयर HOTP बाजार; डेटाशीट के अनुसार हमेशा 6-अंकीय SHA1। |
यह भी देखें
- /hotp-qr-code/, लाइव काउंटर + Base32 वैलिडेशन के साथ HOTP जेनरेटर।
- /standards/totp/, समय-आधारित समकक्ष (RFC 6238)।
- /totp-2fa-qr-code/, TOTP जेनरेटर।
- /standards/, मानकों की सूचकांक पर वापस।