رمزهای عبور تصادفی از حروف، ارقام و نمادها با crypto.getRandomValues.
مبدل کد TOTP/HOTP
خود ابزار به زبان انگلیسی است؛ این صفحه آن را به زبان شما توضیح میدهد.
از مبدل کد TOTP/HOTP استفاده کنید
کارکرد
رمزهای یکبار مصرف مبتنی بر زمان (TOTP) یا مبتنی بر شمارنده (HOTP) را برای یک رمز مخفی Base32 محاسبه کنید، همانطور که اپلیکیشنهای احراز هویت انجام میدهند، و بررسی کنید که آیا یک کد مطابقت دارد یا خیر. برای آزمایش پیکربندی دو عاملی (2FA) خودتان مفید است.
این کاملاً در مرورگر شما اجرا میشود: هیچیک از اطلاعاتی که وارد میکنید بارگذاری نمیشود.
چگونه از مبدل کد TOTP/HOTP استفاده کنیم
- رمز را وارد کنید. رمز Base32 حساب آزمایشی خود را در «کلید مخفی (Base32)» جایگذاری کنید، یا برای یک رمز ۳۲ کاراکتری جدید روی «تصادفی» کلیک کنید.
- تنظیمات اپلیکیشن خود را هماهنگ کنید. نوع کد (TOTP مبتنی بر زمان یا HOTP مبتنی بر شمارنده)، الگوریتم و تعداد ارقام را انتخاب کنید. بیشتر اپلیکیشنهای احراز هویت از TOTP، HMAC-SHA-1 و ۶ رقم استفاده میکنند.
- کد را نمایش دهید. برای TOTP دکمهٔ «شروع TOTP» را فشار دهید: کد همراه با شمارش معکوس ظاهر میشود و هر ثانیه مجدداً محاسبه میشود. برای HOTP شمارنده را تنظیم کرده و دکمهٔ «نمایش کد HOTP» را فشار دهید؛ دکمهٔ «بعدی» شمارنده را به شمارندهٔ بعدی منتقل میکند.
- یک کد را بررسی کنید. کدی را از اپلیکیشن یا سرور خود در بخش «تأیید کد» وارد کنید و دکمه «تأیید» را فشار دهید. نتیجه نشان میدهد که آیا کد مطابقت دارد و برای کدام گام زمانی یا شمارنده است.
- ایست و پاکسازی. وقتی کارتان تمام شد، دکمهٔ Stop را فشار دهید؛ آخرین کد روی صفحه میماند. خودتان میدان مخفی را خالی کنید.
مثال
رمز تست RFC 6238
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ412568این کلید آزمایشی منتشرشده RFC 6238 با مقدار 12345678901234567890 در Base32 است. صفحه کد ششرقمی فعلی آن و تعداد ثانیهها تا کد بعدی را نشان میدهد؛ همین کد را یک اپلیکیشن احراز هویت برای این رمز مخفی نمایش میدهد؛ پس از تغییر به HOTP با شمارندهٔ ۰، عدد 755224 را نشان میدهد که اولین مقدار آزمایشی RFC 4226 است.
آنچه بررسی میکند
| سیگنال | معنای آن |
|---|---|
| کد | HMAC گام زمانی (TOTP) یا شمارنده (HOTP)، به ۶ یا ۸ رقم مطابق RFC 4226 و RFC 6238 کاهش یافته است. این تنها زمانی با یک برنامه مطابقت دارد که نوع، الگوریتم و ارقام یکسان باشند. |
| تازه میشود در Ns · گام زمانی N | ثانیههای باقیمانده در پنجرهٔ ۳۰ ثانیهای فعلی و شمارهٔ گام، که از ساعت دستگاه شما گرفته شده است. ساعتی که تنظیم نباشد، کد قبلی یا بعدی را نشان میدهد. |
| کانتور N · دکمهٔ بعدی | در حالت HOTP، کد متعلق به آن شمارنده است. هر کد فقط یکبار استفاده میشود؛ سپس سرورها منتظر شمارنده بعدی هستند. |
| نه Base32: ... | رمز شامل کاراکترهایی خارج از محدودهٔ A تا Z و 2 تا 7 است، مانند 0، 1، 8 یا 9. فاصلهها، خط تیره و علامت = نادیده گرفته میشوند و حروف کوچک پذیرفته میشوند. |
| راز فقط N بیت است. | راز کوتاهتر از ۱۲۸ بیت (۲۶ کاراکتر Base32) است که RFC 4226 درخواست میکند. کدها همچنان نمایش داده میشوند، اما چنین رازی آسانتر حدس زده میشود. |
| اعتبار دارد: مطابقت میدهد ... | Verify کد مربوط به گام زمانی فعلی یا شمارنده HOTP را در میدان پیدا کرد. |
| اعتبار دارد برای مرحله قبلی یا بعدی | این کد مربوط به یک گام ۳۰ ثانیهای قبل یا بعد از اکنون است (به رنگ نارنجی نشان داده شده). معمولاً بین دو دستگاه اختلاف زمانی اندکی وجود دارد. |
| مطابقت یافت نشد | نه گامهای زمانی بررسیشده و نه شمارندهها مناسب نیستند. رمز، ساعت، الگوریتم و تعداد رقمها را بررسی کنید. |
نمونههای بیشتر
کلید آزمایش RFC 4226، HOTP
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQبا نوع کد HOTP، HMAC-SHA-1، ششرقمی و شمارندهٔ ۰، کد 755224 است؛ Next مقدار 287082 را برای شمارندهٔ 1، مقادیر آزمون منتشرشده در RFC 4226 ارائه میدهد.
یک کد را یک شمارنده جلوتر تأیید کنید
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQدر حالت HOTP با شمارنده ۰، وارد کردن 287082 در Verify a code چنین نتیجهای میدهد: معتبر برای شمارنده ۱، ۱ جلوتر از فیلد شمارنده.
یک رمز Base32 نیست
0189خطا با پیام Not Base32: «0»، «1»، «8»، «9»، زیرا Base32 فقط از حروف A تا Z و اعداد 2 تا 7 استفاده میکند.
سوالات متداول
دقیقاً چه چیزی را محاسبه میکند؟
کدهای TOTP بر اساس زمان فعلی در فواصل ۳۰ ثانیهای (RFC 6238) یا کدهای HOTP برای شمارندهای که شما تنظیم میکنید (RFC 4226)، با HMAC-SHA-1، SHA-256 یا SHA-512 و ۶ یا ۸ رقم؛ اکثر اپلیکیشنهای احراز هویت از SHA-1 و ۶ رقم استفاده میکنند. بررسی کد با استفاده از بازه زمانی فعلی به همراه یک بازه زمانی قبل و بعد و یا شمارنده HOTP به همراه ۹ شمارش بعدی انجام میشود و در صورتی که رمز مخفی شامل کاراکترهایی خارج از محدوده A-Z و 2-7 باشد، با ارسال پیام رد میشود.
آیا کد TOTP از من در برابر فیشینگ محافظت میکند؟
نه کاملاً. کیتهای فیشینگ adversary-in-the-middle کد را همانطور که تایپ میکنید به سایت واقعی ارسال میکنند، بنابراین همراه با رمز عبور ضبط میشود؛ گذرواژههای یکبار مصرف و کلیدهای امنیتی FIDO2 در برابر این روش مقاومت میکنند زیرا به دامنهٔ واقعی متصل هستند.
آیا رمز به جایی ارسال یا ذخیره شده است؟
خیر. کدها با استفاده از Web Crypto API در مرورگر شما محاسبه میشوند و رمز هرگز بارگذاری یا ذخیره نمیشود. TOTP به ساعت دستگاه شما وابسته است، بنابراین ساعتی که دقیق نباشد کدهای متفاوتی تولید میکند.
چگونه میتوانم کدها را با RFCها مطابقت دهم؟
از کلید تست 12345678901234567890 در Base32 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ استفاده کنید. در حالت HOTP، شمارنده 0 مقدار 755224 و شمارنده 1 مقدار 287082 را میدهد (RFC 4226). RFC 6238 عدد 94287082 را برای ۸ رقم در ۵۹ ثانیه پس از ۱ ژانویهٔ ۱۹۷۰ به وقت جهانی (UTC) فهرست میکند؛ حالت TOTP همیشه از زمان فعلی استفاده میکند.
تفاوت بین TOTP و HOTP چیست؟
HOTP (RFC 4226) تعداد استفادهها را میشمارد: هر کد به یک شمارنده تعلق دارد که یک واحد افزایش مییابد. TOTP (RFC 6238) همان HOTP است با شمارندهای که بر اساس گام زمانی ۳۰ ثانیهای فعلی تنظیم شده است، بنابراین کد با هر تیک ساعت تغییر میکند.
چرا اپلیکیشن من کد متفاوتی را نشان میدهد؟
ابتدا ساعتها را بررسی کنید، چون ۳۰ ثانیه اختلاف میتواند کد را تغییر دهد. سپس مخفینگاری را از نظر وجود خطاهای تایپی بررسی کنید و ببینید که آیا حساب از SHA-256، SHA-512، هشت رقم یا یک شمارنده بهجای زمان استفاده میکند، و همین گزینهها را اینجا تنظیم کنید.
آیا باید اینجا یک رمز عبور دوم واقعی را الصاق کنم؟
از آن اجتناب کنید. رمز در مرورگر شما باقی میماند، اما هر کسی که آن را ببیند یا کپی کند میتواند کدهای شما را تولید کند تا زمانی که احراز هویت دو مرحلهای آن حساب را ریست کنید. برای انتقال احراز هویت دو مرحلهای به تلفن جدید، از گزینه انتقال یا ریست حساب استفاده کنید.