راهنمای جامع تولید رمز یکبار مصرف (TOTP)
احراز هویت دو مرحلهای (2FA) یکی از مهمترین لایههای امنیتی برای محافظت از حسابهای آنلاین است. ابزار تولید رمز یکبار مصرف WebsiteBesaz به شما اجازه میدهد کدهای ۶ رقمی واقعی TOTP را مستقیماً از QR Code تولید کنید. این ابزار در شرایطی که به اپلیکیشن Google Authenticator دسترسی ندارید، میتواند نجاتبخش باشد.
TOTP چیست و چگونه کار میکند؟
TOTP (Time-based One-Time Password) یک استاندارد صنعتی است که در RFC 6238 تعریف شده است. این الگوریتم از دو عنصر اصلی استفاده میکند:
- کلید مخفی (Secret Key): یک رشته Base32 که بین سرور و کلاینت به اشتراک گذاشته میشود
- زمان فعلی: Unix timestamp تقسیم شده بر یک بازه زمانی (معمولاً ۳۰ ثانیه)
فرمول ساده TOTP به این صورت است: TOTP = HMAC-SHA1(Secret, TimeStep) mod 10^Digits
این یعنی با داشتن کلید مخفی و زمان فعلی، میتوان کد ۶ رقمی را محاسبه کرد. این دقیقاً همان کاری است که اپلیکیشنهای Authenticator انجام میدهند.
الگوریتم تولید کد در جزئیات
فرآیند تولید یک کد TOTP شامل مراحل زیر است:
۱. محاسبه Time Step TimeStep = floor(UnixTimestamp / Period)
به عنوان مثال، اگر زمان فعلی 1700000000 و دوره ۳۰ ثانیه باشد:
TimeStep = floor(1700000000 / 30) = 56666666
۲. تبدیل Time Step به ۸ بایت
عدد TimeStep به یک آرایه ۸ بایتی تبدیل میشود (Big-endian).
۳. محاسبه HMAC-SHA1 HMAC = HMAC-SHA1(SecretKey, TimeStepBytes)
۴. Dynamic Truncation
از ۲۰ بایت نتیجه HMAC، ۴ بایت خاص انتخاب و به عدد ۳۲ بیتی تبدیل میشود.
۵. اعمال Modulo OTP = TruncatedValue mod 10^6
مقایسه TOTP با سایر روشهای احراز هویت
| ویژگی | TOTP | SMS OTP | Email OTP | Hardware Token |
|---|---|---|---|---|
| امنیت | ✅ بالا | ⚠️ متوسط | ⚠️ متوسط | ✅ بسیار بالا |
| سرعت | ✅ آنی | ⚠️ ۱۰-۳۰ ثانیه | ⚠️ ۳۰-۶۰ ثانیه | ✅ آنی |
| هزینه | ✅ رایگان | ❌ هزینه پیامک | ✅ رایگان | ❌ گران |
| آفلاین | ✅ بله | ❌ خیر | ❌ خیر | ✅ بله |
| قابلیت هک شدن | ⚠️ کم | ❌ SIM Swap | ⚠️ Phishing | ✅ تقریباً غیرممکن |
همانطور که میبینید، TOTP تعادل بسیار خوبی بین امنیت، سرعت و هزینه ارائه میدهد. به همین دلیل است که اکثر سرویسهای معتبر مانند GitHub، Google، AWS و سایتهای حرفهای از آن استفاده میکنند.
چه زمانی به TOTP Generator نیاز دارید؟
این ابزار در شرایط خاصی بسیار مفید است:
۱. از دست دادن دسترسی به گوشی
اگر گوشی خود را گم کردهاید یا باتری آن تمام شده، میتوانید با استفاده از QR Code ذخیره شده (که هنگام فعالسازی 2FA دریافت کردهاید)، کدهای معتبر تولید کنید.
۲. تست سیستمهای توسعهیافته
توسعهدهندگانی که سیستم احراز هویت دو مرحلهای پیادهسازی کردهاند، برای تست نیاز به تولید کدهای معتبر دارند.
۳. مهاجرت بین برنامهها
هنگام مهاجرت از Google Authenticator به برنامههایی مانند Authy یا Bitwarden، میتوانید با استخراج کلید مخفی و استفاده از این ابزار، صحت انتقال را بررسی کنید.
۴. آموزش و یادگیری
برای درک عمیقتر نحوه کار TOTP، میتوانید کدهای تولید شده توسط این ابزار را با Google Authenticator مقایسه کنید.
انواع الگوریتمهای HMAC در TOTP
استاندارد TOTP از سه الگوریتم HMAC پشتیبانی میکند:
SHA-1 (پیشفرض)
- استفاده شده در ۹۵٪ سرویسها
- طول خروجی: ۱۶۰ بیت
- سریع و کارآمد
SHA-256
- امنتر از SHA-1
- طول خروجی: ۲۵۶ بیت
- استفاده در سرویسهای مالی
SHA-512
- قویترین الگوریتم
- طول خروجی: ۵۱۲ بیت
- استفاده محدود
ابزار ما بهصورت خودکار الگوریتم را از QR Code تشخیص میدهد و کد را با همان الگوریتم تولید میکند.
نگرانیهای امنیتی و راهحلها
نگرانی ۱: آیا کلید مخفی دزدیده میشود؟
پاسخ: خیر. این ابزار تمام پردازشها را در مرورگر شما انجام میدهد. میتوانید پس از بارگذاری صفحه، اینترنت را قطع کنید و ابزار همچنان کار میکند. این اثبات میکند که هیچ دادهای به سرور ارسال نمیشود.
نگرانی ۲: آیا کدها قابل پیشبینی هستند؟
پاسخ: خیر. کدها بر اساس زمان فعلی تولید میشوند و بدون دانستن کلید مخفی، پیشبینی آنها غیرممکن است.
نگرانی ۳: اگر کسی به کلید مخفی دسترسی پیدا کند چه؟
پاسخ: در این صورت میتواند کدهای معتبر تولید کند. به همین دلیل باید کلیدهای مخفی را در مکانهای امن (مانند Password Manager) نگهداری کنید.
پیادهسازی TOTP در پروژههای برنامهنویسی
اگر شما یک توسعهدهنده هستید و میخواهید TOTP را در پروژه خود پیادهسازی کنید، این کتابخانهها را بررسی کنید:
Node.js:
const { authenticator } = require('otplib');
const secret = authenticator.generateSecret();
const token = authenticator.generate(secret);
const isValid = authenticator.verify({ token, secret });
Python:
import pyotp
secret = pyotp.random_base32()
totp = pyotp.TOTP(secret)
token = totp.now()
PHP:
use OTPHP\TOTP;
$totp = TOTP::create();
$secret = $totp->getSecret();
$token = $totp->now();
برای پیادهسازی کامل با UI مناسب، میتوانید از خدمات طراحی سایت WebsiteBesaz استفاده کنید.
مقایسه با سایر ابزارهای آنلاین بسیاری از ابزارهای آنلاین مشابه وجود دارند، اما اکثر آنها مشکلات امنیتی جدی دارند: ویژگی
ابزار WebsiteBesaz
ابزارهای آنلاین دیگر پردازش محلی
✅ ۱۰۰٪
❌ ارسال به سرور پشتیبانی از دوربین
✅
⚠️ محدود کد متنباز
✅
❌ بسته کار آفلاین
✅
❌ تایمر بصری
✅
⚠️ پایه نکات مهم برای استفاده ایمن ۱. فقط در شرایط اضطراری استفاده کنید این ابزار برای استفاده روزمره طراحی نشده است. فقط زمانی که به اپلیکیشن رسمی دسترسی ندارید از آن استفاده کنید. ۲. از HTTPS استفاده کنید مطمئن شوید صفحه را از طریق HTTPS باز کردهاید تا از دستکاری در کد جلوگیری شود. ۳. کلید را ذخیره نکنید پس از استفاده، صفحه را ببندید. کلید مخفی در حافظه مرورگر باقی نماند. ۴. در دستگاههای عمومی استفاده نکنید از این ابزار در کامپیوترهای عمومی یا شبکههای نامعتبر استفاده نکنید. یکپارچهسازی با سایر ابزارهای WebsiteBesaz ابزار TOTP Generator با سایر ابزارهای ما بهخوبی کار میکند:
استخراج کلید مخفی
: ابتدا کلید مخفی را از QR Code استخراج کنید
ساخت QR Code
: برای تست، میتوانید QR Code اختصاصی خود را بسازید
خواندن QR Code
: محتوای هر نوع QR Code را بخوانید
آینده احراز هویت: Passkey و FIDO2 اگرچه TOTP هنوز استاندارد اصلی است، اما فناوریهای جدیدی مانند Passkey و FIDO2 در حال جایگزینی آن هستند. این فناوریها از بیومتریک (اثر انگشت، تشخیص چهره) استفاده میکنند و امنیت بیشتری دارند. اما تا زمانی که TOTP بهطور گسترده استفاده میشود، ابزارهایی مانند TOTP Generator ضروری باقی میمانند. نتیجهگیری ابزار تولید رمز یکبار مصرف WebsiteBesaz یک راهحل سریع، امن و حرفهای برای تولید کدهای TOTP واقعی است. با پردازش کاملاً محلی، میتوانید با خیال راحت از آن برای حسابهای حساس خود استفاده کنید. این ابزار برای شرایط اضطراری (از دست دادن دسترسی به گوشی)، تست سیستمهای توسعهیافته و یادگیری نحوه کار TOTP بسیار مفید است. با این حال، برای استفاده روزمره، توصیه میشود از اپلیکیشنهای رسمی مانند Google Authenticator، Authy یا Bitwarden استفاده کنید. اگر در حال طراحی سایت هستید و میخواهید سیستم احراز هویت دو مرحلهای را برای کاربران خود پیادهسازی کنید، تیم WebsiteBesaz میتواند این کار را با بالاترین استانداردهای امنیتی برای شما انجام دهد. با ما تماس بگیرید تا درباره گزینههای موجود صحبت کنیم.