العربية
  • بدون كلمة مرور
  • كلمة مرور لمرة واحدة
  • OTP
  • TOTP
  • HOTP

كيف تعمل كلمة المرور لمرة واحدة (OTP)؟

في هذه المقالة، سوف نقدم طريقتين مختلفتين لكلمة المرور لمرة واحدة: البريد الإلكتروني/الهاتف + رمز التحقق والرمز الديناميكي.

Darcy Ye
Darcy Ye
Developer

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

في الماضي، ربما كنا بحاجة فقط لتذكر كلمة المرور لحساب البريد الإلكتروني الخاص بنا، لكن الآن نستخدم عشرات أو حتى مئات الخدمات عبر الإنترنت، ولا يمكننا استخدام نفس كلمة المرور لكل منها (إذا تم اختراق كلمة مرور حساب واحد، فستكون جميع الحسابات التي تستخدم نفس كلمة المرور في خطر). ونتيجة لذلك، أصبح تسجيل الدخول بدون كلمة مرور يحظى بشعبية متزايدة ويُعتبر النهج السائد تدريجياً.

هناك العديد من الطرق المختلفة لالمصادقة بدون كلمة مرور، بما في ذلك، على سبيل المثال لا الحصر، تسجيل الدخول باستخدام وسائل التواصل الاجتماعي، البريد الإلكتروني/الهاتف + رمز التحقق، واستخدام تطبيقات المصادقة بكلمات مرور ديناميكية. يمكن تصنيف الطريقتين الأخيرتين ككلمات مرور لمرة واحدة (OTPs).

ما هي كلمة المرور لمرة واحدة (OTP)؟

OTP هي سلسلة من الأحرف التي تُولَد تلقائيًا وتكون صالحة فقط لجلسة تسجيل دخول واحدة أو لفترة زمنية قصيرة. نظرًا لأن OTP يمكن استخدامها مرة واحدة فقط، فإنها يمكن أن تمنع خطر تسريب بيانات الاعتماد، مثل كلمة مرور مفقودة أو مسروقة.

نظريًا، يمكن أن تكون OTP سلسلة عشوائية من الأحرف بطول معين، تشمل الأحرف الكبيرة والصغيرة وحتى الرموز الخاصة. لكن لأجل تحسين تجربة المستخدم، تستخدم معظم الخدمات الأرقام فقط عند استخدام OTPs.

البريد الإلكتروني / الهاتف + رمز التحقق

تطلب العديد من المواقع التحقق من هويتك بإرسال رمز تحقق (أو كلمة مرور) إلى البريد الإلكتروني أو رقم الهاتف الذي سجلته.

تخيل أن جاك وجو يلعبان لعبة تخمين، حيث يفكر جاك في رقم بين 0 و999، ويعطي جو ثلاث فرص لتخمين الرقم في غضون دقيقة واحدة. وبصرف النظر عن معرفة نطاق الرقم، ليس لدى جو أي معلومات أخرى.

نعرف جميعًا أنه من المستحيل تقريبًا لجو تخمين الرقم بشكل صحيح في غضون دقيقة باستخدام ثلاث محاولات فقط.

يعمل البريد الإلكتروني/الهاتف + رمز التحقق على نفس المبدأ: يكون رمز التحقق صالحًا عامًة لفترة قصيرة جدًا، عادة لا تزيد عن 10 دقائق (يشبه جاك الذي يعطي جو "دقيقة واحدة" لتخمين الرقم). بالإضافة، يكون لواجهة برمجة التطبيقات أو طريقة التحقق من رمز التحقق عادة حد للوتيرة لمنع الهجمات العنيفة على كلمة المرور (مثل جاك الذي يعطي جو "ثلاث فرص" فقط).

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

الرمز الديناميكي

الرمز الديناميكي، المعروف أيضًا باسم OTP المستند إلى الوقت (TOTP)، هو "ديناميكي" بمعنى أنه يتغير بمرور الوقت. بشكل عام، إذا استخدم تطبيق ويب TOTP، فسيكون متبعًا لـRFC6238 - TOTP: خوارزمية كلمة المرور لمرة واحدة المستندة إلى الوقت.

كلمة مرور لمرة واحدة المستندة إلى التجزئة

قبل تقديم TOTP، نحتاج إلى شرح موجز لـRFC4226 - HOTP: خوارزمية كلمة المرور لمرة واحدة المستندة إلى HMAC (HMAC هو خوارزمية التجزئة). تعمل خوارزمية HOTP كما يلي:

  1. السر المشترك: يتطلب HOTP مفتاح سر مشترك K، وهو نفسه بين الخادم والعميل.

  2. العداد: أساس HOTP هو عداد C، الذي يُزداد كل مرة تُولًد فيها كلمة مرور جديدة.

  3. حساب HMAC:

    • استخدم HMAC-SHA-1 (أو دوال تجزئة أخرى) لحساب رمز المصادقة:

      hmac الحساب
    • هنا، H هي قيمة تجزئة بطول 160 بت.

  4. الاقتطاع: استخراج جزء من قيمة التجزئة H لتوليد OTP. افتراضًا نريد OTP بطول 6 أرقام، تتم العملية كما يلي:

    • استخراج البايت الأخير من H كإزاحة اقتطاع O.
    • استخراج 4 بايتات بدءًا من O، تحويلها إلى عدد T.
    • أخذ الأرقام d الأخيرة من T، أي OTP = T mod 10^d.

باختصار، صيغة HOTP هي:

حساب كلمة المرور المستندة إلى التجزئة

حيث d هو الطول المرغوب لكلمة المرور (عادة 6-8 أرقام).

كلمة مرور لمرة واحدة المستندة إلى الوقت

TOTP هو امتداد لـHOTP، حيث يتم استبدال العداد بخطوة زمنية. يستخدم الوقت الحالي لتوليد رمز تحقق ديناميكي، لذلك ستنتهي صلاحية OTP تلقائيًا بمرور الوقت. يعمل المبدأ كما يلي:

  1. خطوة زمنية: يستخدم TOTP الوقت الحالي T بدلاً من عداد HOTP C. تكون خطوة الزمن ثابتة بفترة معينة (عادةً 30 ثانية).

    • على سبيل المثال، بافتراض أن خطوة الزمن هي 30 ثانية، وأن الطابع الزمني الحالي للنظام هو T. يتم حساب عداد خطوة الزمن لـTOTP كالتالي: T' = T / time_step
    • حيث تكون T' هي عداد خطوة الزمن، بوحدات 30 ثانية.
  2. توليد OTP: استبدال T' في خوارزمية HOTP لتوليد OTP:

    توليد totp
  3. التحديث الديناميكي: بما أن TOTP يعتمد على خطوة الزمن، فإن OTP يتغير بمرور الوقت، لذا يمكن للخادم التحقق من صلاحيته طالما كانت OTP ضمن نافذة زمنية صالحة.

باختصار، صيغة TOTP هي:

حساب totp

بناءً على تجربتنا في استخدام تطبيقات المصادقة، يمكننا مزامنة القيمة السرية بين الجهاز والخادم بمسح رمز QR أو النسخ والصق مباشرة، ثم نحتاج إلى إدخال الرمز الديناميكي الحالي مرة لضمان أن تكون القيمة السرية متطابقة.

في الأيام الأولى من استخدام الأجهزة المحمولة، قد نجد أن الوقت على الأجهزة المختلفة لم يكن هو نفسه، وكان علينا ضبط الوقت يدويًا على الأجهزة بشكل دوري. في السنوات الأخيرة، تستخدم معظم الأجهزة خدمة الوقت الشبكي (NTP) بانتظام لمزامنة وتحديث الوقت على الجهاز. حتى لو لم تكن ساعة الجهاز دقيقة تمامًا، فإن التحديثات المتكررة يمكن أن تضمن أن يكون الوقت متسقًا بشكلٍ معقول عبر الأجهزة المختلفة. استنادًا إلى هذا الافتراض، يمكن استخدام الرمز الديناميكي حتى وإن كان الجهاز غير متصل، بينما سيكون من الصعب تلقي رمز تحقق في حالة عدم الاتصال.

الملاحظات الختامية

في هذه المقالة، قمنا بتقديم طريقتين مختلفتين لكلمة المرور لمرة واحدة: البريد الإلكتروني/الهاتف + رمز التحقق والرمز الديناميكي.

يعتمد البريد الإلكتروني/الهاتف + رمز التحقق على بنية الاتصالات الأساسية وخدمات بريد إلكتروني أو رسائل نصية (SMS) تابعة لجهات خارجية؛ بينما لا يعتمد الرمز الديناميكي على خدمات خارجية أو مرافق اتصالات، ويمكن استخدامه دون الاتصال.

يدعم Logto، كخدمة إدارة هوية ووصول (IAM) شائعة وقوية ومرنة للغاية، كلا من طرق OTP، مما يتيح للمستخدمين اختيار الحل المناسب الذي يلائم احتياجاتهم من منظور الأعمال.