كيف تعمل كلمة المرور لمرة واحدة (OTP)؟
في هذه المقالة، سوف نقدم طريقتين مختلفتين لكلمة المرور لمرة واحدة: البريد الإلكتروني/الهاتف + رمز التحقق والرمز الديناميكي.
مع تطور الإنترنت، بدأنا في استخدام مجموعة واسعة من الخدمات عبر الإنترنت لتلبية جميع احتياجاتنا تقريبًا. الخطوة الأولى في استخدام هذه الخدمات تكون غالبًا التسجيل وتسجيل الدخول. عندما يتعلق الأمر بالتسجيل وتسجيل الدخول، لا يزال استخدام هوية المستخدم وكلمة المرور مصطلحًا واسع الانتشار، حتى بعد مرور أكثر من ثلاثة عقود منذ أيام استخدام أجهزة الكمبيوتر المكتبية المستقلة التي لم تكن متصلة بالإنترنت.
في الماضي، ربما كنا بحاجة فقط لتذكر كلمة المرور لحساب البريد الإلكتروني الخاص بنا، لكن الآن نستخدم عشرات أو حتى مئات الخدمات عبر الإنترنت، ولا يمكننا استخدام نفس كلمة المرور لكل منها (إذا تم اختراق كلمة مرور حساب واحد، فستكون جميع الحسابات التي تستخدم نفس كلمة المرور في خطر). ونتيجة لذلك، أصبح تسجيل الدخول بدون كلمة مرور يحظى بشعبية متزايدة ويُعتبر النهج السائد تدريجياً.
هناك العديد من الطرق المختلفة لالمصادقة بدون كلمة مرور، بما في ذلك، على سبيل المثال لا الحصر، تسجيل الدخول باستخدام وسائل التواصل الاجتماعي، البريد الإلكتروني/الهاتف + رمز التحقق، واستخدام تطبيقات المصادقة بكلمات مرور ديناميكية. يمكن تصنيف الطريقتين الأخيرتين ككلمات مرور لمرة واحدة (OTPs).
ما هي كلمة المرور لمرة واحدة (OTP)؟
OTP هي سلسلة من الأحرف التي تُولَد تلقائيًا وتكون صالحة فقط لجلسة تسجيل دخول واحدة أو لفترة زمنية قصيرة. نظرًا لأن OTP يمكن استخدامها مرة واحدة فقط، فإنها يمكن أن تمنع خطر تسريب بيانات الاعتماد، مثل كلمة مرور مفقودة أو مسروقة.
نظريًا، يمكن أن تكون OTP سلسلة عشوائية من الأحرف بطول معين، تشمل الأحرف الكبيرة والصغيرة وحتى الرموز الخاصة. لكن لأجل تحسين تجربة المستخدم، تستخدم معظم الخدمات الأرقام فقط عند استخدام OTPs.
البريد الإلكتروني / الهاتف + رمز التحقق
تطلب العديد من المواقع التحقق من هويتك بإرسال رمز تحقق (أو كلمة مرور) إلى البريد الإلكتروني أو رقم الهاتف الذي سجلته.
تخيل أن جاك وجو يلعبان لعبة تخمين، حيث يفكر جاك في رقم بين 0 و999، ويعطي جو ثلاث فرص لتخمين الرقم في غضون دقيقة واحدة. وبصرف النظر عن معرفة نطاق الرقم، ليس لدى جو أي معلومات أخرى.
نعرف جميعًا أنه من المستحيل تقريبًا لجو تخمين الرقم بشكل صحيح في غضون دقيقة باستخدام ثلاث محاولات فقط.
يعمل البريد الإلكتروني/الهاتف + رمز التحقق على نفس المبدأ: يكون رمز التحقق صالحًا عامًة لفترة قصيرة جدًا، عادة لا تزيد عن 10 دقائق (يشبه جاك الذي يعطي جو "دقيقة واحدة" لتخمين الرقم). بالإضافة، يكون لواجهة برمجة التطبيقات أو طريقة التحقق من رمز التحقق عادة حد للوتيرة لمنع الهجمات العنيفة على كلمة المرور (مثل جاك الذي يعطي جو "ثلاث فرص" فقط).
للمهاجمين المحتملين، من المستحيل تقريبًا اختراق هذه الطريقة. غير أن النظام يخبر المستخدم برمز التحقق عبر قناة موثوقة (البريد الإلكتروني أو الهاتف)، مما يسمح للمستخدم بالتحقق منها مباشرة.
الرمز الديناميكي
الرمز الديناميكي، المعروف أيضًا باسم OTP المستند إلى الوقت (TOTP)، هو "ديناميكي" بمعنى أنه يتغير بمرور الوقت. بشكل عام، إذا استخدم تطبيق ويب TOTP، فسيكون متبعًا لـRFC6238 - TOTP: خوارزمية كلمة المرور لمرة واحدة المستندة إلى الوقت.
كلمة مرور لمرة واحدة المستندة إلى التجزئة
قبل تقديم TOTP، نحتاج إلى شرح موجز لـRFC4226 - HOTP: خوارزمية كلمة المرور لمرة واحدة المستندة إلى HMAC (HMAC هو خوارزمية التجزئة). تعمل خوارزمية HOTP كما يلي:
-
السر المشترك: يتطلب HOTP مفتاح سر مشترك K، وهو نفسه بين الخادم والعميل.
-
العداد: أساس HOTP هو عداد C، الذي يُزداد كل مرة تُولًد فيها كلمة مرور جديدة.
-
حساب HMAC:
-
استخدم HMAC-SHA-1 (أو دوال تجزئة أخرى) لحساب رمز المصادقة:
-
هنا، H هي قيمة تجزئة بطول 160 بت.
-
-
الاقتطاع: استخراج جزء من قيمة التجزئة H لتوليد OTP. افتراضًا نريد OTP بطول 6 أرقام، تتم العملية كما يلي:
- استخراج البايت الأخير من H كإزاحة اقتطاع O.
- استخراج 4 بايتات بدءًا من O، تحويلها إلى عدد T.
- أخذ الأرقام d الأخيرة من T، أي OTP = T mod 10^d.
باختصار، صيغة HOTP هي:
حيث d هو الطول المرغوب لكلمة المرور (عادة 6-8 أرقام).