هل رمز TOTP على الحاسوب نفسه عامل ثانٍ حقًا؟
مولّد الرموز على حاسوب VPN عامل حيازة يقع داخل حدود الاختراق نفسها. تتبّع البذرة والجلسة أولًا.
سجّل الدخول إلى عميل VPN يطلب كلمة مرور ثم رمزًا من ستة أرقام، فتبدو المطالبتان حاجزين مستقلين. وبحسب نوع العامل هما كذلك: كلمة المرور شيء تعرفه، والرمز شيء تحوزه. وبحسب ما يكشفه حاسوب واحد مخترق، قد تنهار المطالبتان إلى حدّ واحد، لأن ما تحوزه ملف على الجهاز الذي تكتب فيه. والفجوة بين هذين العدّين هي موضوع هذا الشرح.
تتبّع تسجيل دخول واحد من حقل كلمة المرور إلى صندوق الرمز
راقب التسلسل لا التسميات. يرسل العميل كلمة المرور، فيرد الخادم بأن دليلًا ثانيًا مطلوب، فيفتح العميل حقلًا لستة أو ثمانية أرقام. وخلف ذلك الحقل يعمل تطبيق مولّد يحمل سرًّا مشتركًا وساعة. يحسب قيمة من السر وخطوة الزمن الحالية، ويعيد الخادم حساب القيمة نفسها من نسخته من السر.
يحمل الطرفان المادة المفتاحية نفسها. وهذا التناظر هو ما يغيب عن الناس حين يصفون الرمز بأنه سر: يستطيع المزوّد توليد رموزك أيضًا، ولهذا تساوي البذرة أكثر من أي ناتج منفرد. والرمز الذي يتسرّب قيمة تُستخدم مرة واحدة؛ أما البذرة التي أنتجته فهي اعتماد دائم يظل يولّد قيمًا صالحة إلى أن تُستبدل.
التنشيط هو النصف الآخر من المسار. المولّد الذي يُفتح برمز مرور للجهاز أو بمطالبة حيوية أو بحاوية مشفّرة يقدّم دليل حيازة إضافة إلى شيء آخر. أما الذي يعمل بلا تشفير ويُفتح بجلسة نظام التشغيل فيقدّم الملف وحده. ويمكن للتطبيق نفسه أن يوفّر الترتيبين حسب طريقة التسجيل، فقرار النشر يقع في تلك الخطوة لا في صفحة تسويق التطبيق.
حدّد ما يثبته الرمز فعلًا
لغة المعايير واضحة هنا على نحو غير معتاد، وتستحق القراءة المباشرة. ودليل NIST لأدوات المصادقة يدرج مولّدات OTP البرمجية ضمن أدوات المصادقة، ويميّز OTP أحادي العامل من OTP متعدد العوامل بعامل تنشيط، وينص على أن مصادقة OTP ليست مقاومة للتصيّد. وكل بند من هذه البنود الثلاثة يغيّر ما يمكنك ادّعاؤه بشأن المطالبة.
كونها غير مقاومة للتصيّد هو الحدّ الأكثر حِدّة. فالرمز المكتوب في حقل يمكن كتابته في حقل شخص آخر، في الوقت الحقيقي، من قبل شخص أُقنع بذلك. والنافذة قصيرة، ما يقلّل عدد المحاولات المفيدة لكنه لا يُغلق الأسلوب. وإذا كان شرطك يشمل مقاومة ذلك، فإن OTP هو الأساس الخاطئ مهما كان مكان تشغيل المولّد.
أحادي العامل مقابل متعدد العوامل هو التمييز الثاني. الرمز الذي يظهر بلا خطوة تنشيط يثبت حيازة ملف ولا شيء غيره، والملف بقوة الحساب الذي يستطيع قراءته فقط. أضف عامل تنشيط تتحسّن الحجة، مع أنها لا تزال تصف الدليل المقدَّم عند الدخول لا عزل الجهاز الذي يولّده.
انظر ما يستطيع حاسوب مخترق الوصول إليه
المهاجم الذي ينفّذ تعليمات برمجية على محطة العمل ليس محدودًا بقراءة الحقل الذي تكتب فيه. والجلسة التي تُنشأ بعد دخول ناجح تكون عادة رمزًا أو كوكي، ويمكن استخدام الرمز من جهاز آخر دون أي رمز إطلاقًا. وإذا كانت هذه هي القدرة التي تدافع ضدها، فإن إضافة مطالبة ثانية عند الدخول تغيّر عدد خطوات الهجوم لا النتيجة.
| Arrangement | What it adds at login | What it leaves inside the laptop boundary |
|---|---|---|
| Password plus TOTP app on the same machine | A possession proof the password alone does not supply | The seed, the unlock step and the authenticated session |
| TOTP app on a separate phone | Seed storage outside the workstation | Session cookies, the typed password and any prompt that can be proxied |
| Hardware key with a signed challenge | A per-login signature bound to the origin | Whatever the browser and the workstation are already trusted to do |
اقرأ العمود الثالث على أنه العمود الصادق. فكل ترتيب أعلاه يترك شيئًا داخل حدود ثقة محطة العمل، لأن محطة العمل هي مكان استخدام الجلسة. وما يتغيّر هو هل يسافر السر طويل الأمد مع تلك الحدود أم يبقى خارجها، وهل يُربط الدليل بأصل محدّد حتى لا تستطيع صفحة مشابهة تمريره.
تفصيلان أصغر ينتميان إلى الصورة نفسها. يبقى الرمز صالحًا طوال نافذة قبوله، وهي غالبًا ثلاثون ثانية إضافة إلى هامش لانحراف الساعة، فيمكن إعادة استخدام قيمة ملتقطة داخل تلك النافذة إلا إذا رفض المدقّق إعادة الاستخدام. كما أن تثبيت مولّد جديد لا ينهي الجلسات التي صادقت سابقًا، فتبقى جلسة قديمة أطول عمرًا من تغيير الاعتماد الذي كان يُفترض أن يحاصر الحادث.
انقل المولّد فقط حيث يساعد الفصل
وضع مولّد الرموز على هاتف تحسين حقيقي لفشل واحد بعينه: لم يعد الحاسوب المسروق يحمل الدليلين معًا. لكنه لا يفعل شيئًا لاختطاف جلسة على الحاسوب، ولا لمستخدم يكتب رمزًا في صفحة تصيّد، ولا لرموز الاسترداد التي طُبعت مرة وصُوّرت في تطبيق ملاحظات.
لذا اكتب الشرط قبل اختيار الأداة. إن كان الهدف دليلًا إضافيًا ضد كلمة مرور مسرّبة فقل ذلك بوضوح، وتطبيق الجهاز نفسه يوفّره أصلًا. وإن كان الهدف الصمود أمام اختراق محطة عمل VPN فسمِّ قدرة المهاجم تلك واختر ترتيبًا مُقيَّمًا لها، مع ذكر شرط التصيّد منفصلًا بدل افتراضه.
ثم عالج النصف التشغيلي، وهو الذي يحدّد هل ينجو أي من ذلك من حادث. فقدان الجهاز يحتاج مسار استبدال موثّقًا، وتدوير الاعتماد يحتاج إبطال الجلسات النشطة، ومادة التسجيل تحتاج الحماية نفسها التي تحتاجها البذرة، لأن نسخة تسجيل غير محمية تمنح المهاجم الرموز المستقبلية نفسها بطريق أقصر. وتعداد هذه البنود الأربعة أنفع من الجدال حول هل رموز الجهاز نفسه جيدة أم بلا قيمة.