HOTP
HOTP (HMAC-based One-Time Password, 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 হার্ডওয়্যার টোকন এগুলি বাস্তবায়ন করে না।
- ডিজিট প্যারামিটার প্রায়ই উপেক্ষিত। অনেক হার্ডওয়্যার টোকন 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/, স্ট্যান্ডার্ড ইন্ডেক্সে ফিরে যান।