نظرنا في الجزء الثاني إلى مشكلة توثيق الويب وغطينا المشكلتين التوأمين للتصيد الإلكتروني واستهداف قاعدة بيانات كلمات المرور. وسأغطي في هذا الجزء بعض التقنيات التي طُوّرت لمواجهة هذه الإشكاليات.

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

التوثيق بعاملين وكلمات المرور لمرة واحدة

تسمى التقنية الأكثر انتشارًا لتحسين أمن كلمات المرور كلمات المرور لمرة واحدة أو التوثيق بعاملين (كما أصحبت تسمى حديثًا). وتعود كلمات المرور لمرة واحدة فعليًا إلى ما قبل الاستخدام واسع الانتشار للاتصالات المشفرة أو حتى الويب إلى الزمن الذي كان يقوم فيه الناس بتسجيل الدخول إلى الخوادم باستخدام بروتوكول تلنت. وكان من المعروف جيدًا بالطبع أن تل‌نت كان غير آمن وأن أي شخص كان يتشارك الشبكة معك باستطاعته أن يلتقط كلمة مرورك من السلك1 ومن ثم يسجل الدخول باستخدامه [ملاحظة فنية: يسمى هذا هجمة معادة Replay attack.] كانت إحدى طرق الإصلاح الجزئي لهذه الهجمة من خلال إضافة سر آخر إلى كلمة مرور المستخدم على أن تكون متغيرة كل مرة تسجل فيها الدخول وليست ساكنة (من هنا سميت كلمة مرور "لمرة واحدة").

جاءت أنظمة كلمات المرور لمرة واحدة بأشكال متنوعة لكن الأكثر شيوعًا بينها كانت عبارة عن قطعة بحجم مفتاح السيارة الإلكتروني تقريبًا مع شاشة LCD كالتي في الصورة:

وتنشئ تلك القطعة رمزًا عدديًا شبه عشوائي كل ٣٠ ثانية أو ما يقارب ذلك، وعندما تريد تسجيل الدخول في الخادم ستقوم بتقديم كل من كلمة المرور والرمز الحالي. وبتلك الطريقة، حتى وإن حصل المهاجم على الرمز، فسيبقى غير قادر على تسجيل الدخول إلى حسابك لأكثر من مدة وجيزة2 ما لم يقم أيضًا بسرقة القطعة التي تخصك. وإذا بدا كل هذا مألوفًا، فالسبب أن هذا شبيه بأنظمة كلمات المرور لمرة واحدة الحديثة مثل موثق غوغل Google Authenticator، ولكن بدلاً من القطعة الحسية على شكل جهاز، تميل هذه الأنظمة إلى استخدام تطبيق على هاتفك وتجعلك تسجل الدخول إلى موقع ويب بدلاً من استخدام تل‌نت. ويعود سبب تسمية هذا "توثيق بعاملين" إلى أن التوثيق يتطلب قيمة تعرفها (كلمة المرور) وشيء آخر لديك (الجهاز). وتستخدم بعض الأنظمة الأخرى رمزًا يُرسل عبر خدمة الرسائل القصيرة لكن الفكرة الأساسية تظل نفسها.

لا تقدم أنظمة كلمات المرور لمرة واحدة أمنًا مثاليًا، لكنها بالتأكيد تحسن إلى حد كبير أمن النظام المعتمد على كلمة مرور فقط من ناحيتين:

  • إنها تضمن سرًّا قويًا لا يعاد استخدامه. فحتى إن أعدت استخدام كلمات المرور وكانت كلمة مرورك على الموقع (أ) مستهدفه، سيبقى المهاجم غير قادر على معرفة الرمز الصحيح للموقع (ب).3
  • إنها تحد من أثر التصيد الإلكتروني. فإذا نجح مهاجم بخدعك فسيحصل على الرمز الحالي للموقع وسيتمكن من تسجيل الدخول إلى حسابك لكنه لن يتمكن من تسجيل الدخول في المستقبل لأن معرفة الرمز الحالي لا تتيح لك النبؤ برمز مستقبلي. وصحيح أن هذا ليس بالأمر الرائع، لكنه أفضل من لا شيء.

 

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

اتفاقية المفتاح الموثق لكلمة المرور PAKE

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

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

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

الطريقة التي توثق من خلالها معظم المواقع الإلكترونية هي من خلال عرض صفحة الويب عليك مع وجود خانة يمكنك أن تدخل فيها كلمة مرورك، كما هو مبين في الصورة أدناه:

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

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

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

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

توثيق المفتاح العام

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

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

القادم: فيدو FIDO / توثيق الويب WebAuthn

كان الوضع على هذا الحال لحوالي عشرين عامًا: كان توثيق المفتاح العام رائعًا من الناحية النظرية، لكنه كان غير قابل للاستخدام على الويب من الناحية العملية. كان الجميع يستخدمون كلمات المرور، وبعضهم كان يستخدمها مع توثيق بعاملين والبعض الآخر من دون التوثيق بعاملين، ولم يكن أحد سعيدًا في نهاية المطاف. وكانت هناك القليل من المساعي لمحاولة إصلاح الأمور لكن لم يثبت أي شيء على أرض الواقع. ولكن خلال السنوات القليلة الماضية طُوّرت تقنية جديدة تسمى توثيق الويب WebAuthn. ويعتبر توثيق الويب نوعًا من توثيق مفتاح عام لكنه مدمج في الويب بطريقة جديدة تبدو وأنها أكثر قابلية بكثير للطرح من أجل الاستخدام مما جاء من قبل. سأغطي توثيق الويب في المنشور القادم.

 


 

1 ما أعنيه بكلمة "سلك" هو السلك حرفياً، لكن مثل تلك الهجمات اللاقطة سائدة في الشبكات اللاسلكية مثل تلك يحميها نظام الوصول المحمي للشبكات اللاسلكية الطراز الثاني.

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

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

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