أدخل سرًّا صالحًا لعرض الرمز.
تحقّق من الرمز كما يفعل الخادم: يُقبل الرمز الحالي وما يصل إلى 2 خطوات قبله أو بعده لتحمّل انحراف الساعات.
كيف يعمل
TOTP (Time-based One-Time Password، RFC 6238) هي الخوارزمية التي تقف وراء الرموز المكوّنة من ستة أرقام في Google Authenticator أو Microsoft Authenticator أو Authy أو 1Password. تتشارك الخدمة وهاتفك سرًّا؛ وكل 30 ثانية يحسب الطرفان HMAC للسرّ مع الوقت الحالي مقسّمًا إلى خطوات، ويقتطعان النتيجة إلى ستة أرقام ويقارنانها. ولأن أحدًا لا يرسل الرمز حتى تكتبه أنت، فهو يعمل حتى لو لم يكن الهاتف متصلًا بالشبكة.
HOTP (RFC 4226) هي الخوارزمية الأساسية: بدلًا من الوقت تستخدم عدّادًا يتقدّم في كل مرة يُطلب فيها رمز. وTOTP هي HOTP مع استبدال العدّاد بعدد المدد المنقضية منذ عام 1970. يُكتب السرّ بترميز Base32 ويُنقل داخل URI من نوع otpauth:// يُعرض كرمز QR عند تفعيل التحقق بخطوتين.
تولّد الأداة الأسرار باستخدام المولّد التشفيري في المتصفح، وتحسب الرمز الحالي والسابق والتالي، وتنشئ URI ورمز QR الخاص به، وتقرأ URI موجودًا، وتتحقق من الرمز بنفس هامش تسامح الساعة الذي تستخدمه الخوادم. لا يغادر السرّ متصفحك أبدًا ولا يُضمَّن في رابط المشاركة.
أمثلة
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ · SHA1 · 8 · T = 59 s94287082متجه اختبار من RFC 6238. السرّ هو نص ASCII 12345678901234567890 مرمّزًا بـ Base32؛ عند الثانية 59 من حقبة Unix تكون الخطوة 1، ويجب أن يكون الرمز المكوّن من ثمانية أرقام هذا بالضبط.GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ · SHA1 · 8 · T = 1111111109 s07081804متجه آخر من RFC 6238، مفيد للتحقق من أن تطبيقك البرمجي لا يُسقط الأصفار البادئة: الرمز رقم بعدد ثابت من الخانات، وليس عددًا صحيحًا.HOTP · GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ · contador 0755224أول متجه من RFC 4226 بستة أرقام. عندما يكون العدّاد 1 يصبح الرمز 287082.otpauth://totp/Ejemplo:ana%40example.com?secret=JBSWY3DPEHPK3PXP&issuer=EjemploTOTP · SHA1 · 6 · 30 sتنسيق Key URI الذي عرّفه Google Authenticator واعتمدته بقية التطبيقات. إذا غابت algorithm وdigits وperiod تُفترض القيم SHA1 و6 و30، لذا تحمل معظم رموز QR السرّ والجهة المُصدِرة فقط.حالات الاستخدام
- اختبار تفعيل 2FA في تطبيقك: إنشاء سرّ، ومسح رمز QR بالهاتف، والتأكد من أن الخادم يقبل الرمز نفسه الذي يعرضه التطبيق.
- تشخيص سبب رفض الخادم لرموز صالحة: تطابقها مع الخطوة السابقة أو التالية يكشف انحراف الساعة.
- التحقق من تطبيقك البرمجي الخاص لـ TOTP أو HOTP مقابل متجهات الاختبار في RFC 6238 و4226.
- قراءة URI من نوع otpauth:// مُصدَّر من تطبيق آخر لمعرفة الخوارزمية وعدد الأرقام والمدة التي يستخدمها الحساب.
- إضافة حساب اختباري تملك سرّه بترميز Base32 إلى تطبيق ثانٍ أو إلى مدير كلمات مرور.
الأسئلة الشائعة
لماذا يرفض الخادم رمزًا يعرضه التطبيق على أنه صالح؟
السبب هو الساعة في أغلب الأحيان. يعتمد TOTP على اتفاق الهاتف والخادم على الوقت: فبفارق 30 ثانية فقط يحسبان خطوات مختلفة. لهذا تقبل الخوادم خطوة أو خطوتين في كل اتجاه. إذا طابق الرمز الخطوة السابقة أو التالية، فزامن وقت الخادم عبر NTP وفعّل الوقت التلقائي في الهاتف.
هل من الآمن إنشاء سرّ حساب حقيقي هنا؟
يُنشأ السرّ باستخدام crypto.getRandomValues ولا يغادر متصفحك، لكن في بيئة الإنتاج يجب أن يُنشئه ويخزّنه الخادم الذي سيتحقق من الرموز. هذه الأداة مخصّصة للاختبار وتصحيح الأخطاء. تعامل مع أي سرّ حقيقي كما تتعامل مع كلمة المرور: من يملكه يستطيع توليد رموزك إلى الأبد.
هل يُستحسن استخدام SHA-256 أو 8 أرقام أو 60 ثانية؟
نظريًا هي أقوى، لكن عدة تطبيقات، منها إصدارات من Google Authenticator، تتجاهل هذه المعاملات وتحسب دائمًا SHA-1 بستة أرقام كل 30 ثانية، فيرى المستخدم رموزًا يرفضها الخادم. لا يزال SHA-1 آمنًا عند استخدامه في HMAC. ولأجل التوافق تستخدم جميع الخدمات تقريبًا القيم الافتراضية.
ما الطول المناسب للسرّ؟
تشترط RFC 4226 ما لا يقل عن 128 بت وتوصي بـ 160 بت، أي 32 حرفًا في Base32. تستخدم خدمات كثيرة 80 بت (16 حرفًا) وتقبلها التطبيقات مع ذلك. تولّد هذه الأداة 160 بت.
هل يحمي TOTP من التصيّد الاحتيالي؟
ليس تمامًا. فهو أفضل بكثير من SMS الذي يمكن اعتراضه أو سرقته عبر تبديل شريحة SIM، لكن موقعًا مزيفًا يمكنه أن يطلب منك الرمز ويستخدمه في الموقع الحقيقي خلال الثلاثين ثانية نفسها. أما مفاتيح الأمان FIDO2 ومفاتيح المرور (passkeys) فهي مرتبطة بالنطاق وتقاوم هذا الهجوم.
ماذا يحدث إذا فقدت هاتفي؟
من دون السرّ لا توجد طريقة لحساب الرموز. لهذا تمنح الخدمات رموز استرداد عند تفعيل 2FA: احفظها خارج الهاتف. تتيح بعض التطبيقات نسخ الحسابات احتياطيًا مشفّرةً في السحابة أو تصديرها كرمز QR لنقلها إلى جهاز آخر.