مولّد رموز التحقق بخطوتين (TOTP)

اكتب المفتاح السري الذي أعطتك إياه الخدمة لتسجيل الدخول بخطوتين، فتحسب الصفحة الرمز الحالي لمرة واحدة داخل متصفحك، مع العد التنازلي والرموز السابقة والتالية، وHOTP لعدّاد.

مجانية تعمل داخل متصفحك آخر مراجعة: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة

تعمل هذه الأداة داخل متصفحك. ما تكتبه فيها لا يُرسل إلينا.

طريقة الاستخدام

  1. اكتب المفتاح السري من صفحة التحقق بخطوتين لدى الخدمة في الحقل، أو الصق نص otpauth:// الذي يحمله رمز QR الخاص بها. اضغط إظهار لتتأكد مما كتبت.
  2. اختر دالة التجزئة وعدد الأرقام والفترة التي تسمّيها الخدمة. وتستخدم كثير من الخدمات الإعدادات الافتراضية لصيغة Key URI: SHA-1 و6 أرقام و30 ثانية.
  3. للخدمة التي تعتمد على العدّاد، اختر حسب العدّاد (HOTP) واكتب العدّاد، ويتقدّم العدّاد بـالعدّاد + 1.
  4. اكتب الرمز الحالي قبل أن ينتهي الوقت المتبقي، وراجع السابق والتالي إن كانت ساعة جهازك متأخرة قليلاً.

كيف يُصنع الرمز

يأخذ HOTP (RFC 4226) المفتاح السري والعدّاد، ويحسب HMAC للعدّاد بدالة التجزئة المختارة، ثم يأخذ منه أربعة بايتات (الاقتطاع الديناميكي). والعدد الذي تعطيه هذه البايتات، بالباقي على 10 مرفوعة إلى عدد الأرقام، هو الرمز.

TOTP (RFC 6238) هو HOTP بعدّاد يُصنع من الوقت: وقت Unix بالثواني مقسوماً على الفترة ومقرّباً إلى الأسفل. ويبدأ رمز جديد مع كل فترة، لذلك يحتاج الطرفان إلى ساعة دقيقة.

TOTP = HOTP(key, floor(unix time / period));   HOTP = truncate(HMAC(key, counter)) mod 10^digits

المفاتيح وعناوين otpauth://

المفتاح السري نص بترميز Base32 (RFC 4648): الحروف من A إلى Z والأرقام من 2 إلى 7. تُتجاهل المسافات، ويمكن ترك الحشو. ويُرفض مفتاح فيه حرف خارج هذه المجموعة، أو مفتاح بطول مستحيل.

يحمل عنوان otpauth:// (صيغة Key URI من Google) النوع والتسمية والمفتاح، وكذلك الجهة المُصدِرة ودالة التجزئة والأرقام والفترة والعدّاد إن وُجدت. والإعدادات الناقصة تأخذ الافتراضيات: SHA1 و6 أرقام و30 ثانية وعدّاد 0.

كيف اختُبرت الصفحة

يُختبر الرمز بقيم الاختبار في RFC 4226 الملحق D (العدّادات من 0 إلى 9) وفي RFC 6238 الملحق B (ست مرات، لـ SHA-1 وSHA-256 وSHA-512 بثمانية أرقام). ويحسب المتصفح HMAC عبر SubtleCrypto.

مثال محلول: مفتاح الاختبار في RFC 6238

مفتاح الاختبار في RFC هو النص 12345678901234567890، وهو بترميز Base32 يساوي GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ. عند وقت Unix 59، وبفترة 30 ثانية، تعطي الخطوة 1 من TOTP الرمز ذا الثمانية أرقام 94287082 لـ SHA-1.

وبستة أرقام تعطي الخطوة نفسها الرمز 287082، وهو رمز RFC 4226 للعدّاد 1، أي الأرقام الستة الأخيرة من القيمة ذات الثمانية أرقام.

الأسئلة الشائعة

هل يُرسل المفتاح السري أو الرمز إلى خادم؟

لا. يُحسب الرمز في متصفحك، ولا تجري الصفحة أي طلب يحوي المفتاح السري أو الرمز. ولا يُحفظ شيء، وإعادة التحميل تنسى الاثنين.

هل ألصق المفتاح السري لحسابي الحقيقي هنا؟

فقط في صفحة تثق بها، وإذا لم يستطع أحد آخر رؤية شاشتك. وتطبيق المصادقة هو المكان المعتاد لحساب حقيقي، لأنه يحفظ المفتاح للاستخدام اليومي. أما هذه الصفحة فتناسب أدواتك الخاصة والرموز التي تحتاجها مرة واحدة.

لماذا يتغير الرمز كل 30 ثانية؟

يستخدم الرمز الزمني (TOTP) عدد الفترات منذ حقبة Unix، فيبدأ رمز جديد مع كل فترة. ويبيّن العد التنازلي المدة التي يبقى فيها الرمز الحالي.

لماذا لا يطابق رمزي تطبيق الخدمة؟

تحقّق من المفتاح (Base32 فقط)، ومن دالة التجزئة وعدد الأرقام والفترة التي تسمّيها الخدمة. ثم تحقق من ضبط ساعة جهازك، لأن الرمز الزمني يعتمد عليها. وتساعد الرموز السابقة والتالية على كشف فرق بسيط في الساعة.

أي دالة تجزئة أختار؟

اختر الدالة التي تذكرها الخدمة. وSHA-1 هي الافتراضية في HOTP في RFC 4226 وفي صيغة otpauth، ويسمح RFC 6238 بـSHA-256 وSHA-512 لـ TOTP أيضاً.

ما الفرق بين TOTP وHOTP؟

يستخدم TOTP الوقت، فيتغير الرمز مع كل فترة. ويستخدم HOTP عدّاداً يتقدّم مع كل استخدام، فيبقى الرمز ثابتاً حتى يتغير العدّاد.

ماذا يفعل نص otpauth://؟

يحمل إعدادات مفتاح التحقق بخطوتين بصيغة Key URI، وغالباً ما يكون داخل رمز QR. ولصقه هنا يملأ المفتاح السري ودالة التجزئة وعدد الأرقام والفترة والعدّاد.

المصادر

آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.

نستخدم ملفات تعريف ارتباط ضرورية لتشغيل الموقع. وبموافقتك، تستخدم Google أيضاً ملفات تعريف ارتباط للإعلانات، لعرض إعلانات مخصصة. وإذا رفضتها، فستظل ترى إعلانات، لكنها لن تكون مخصصة لك.