كل ما تريد معرفته حول إعادة تعيين كلمات المرور بأمان. الجزء 2

توثيق ذو عاملين



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



تعتبر "المعرفة" أحد عوامل المصادقة ؛ هناك عاملان شائعان آخران هما ما لديك ، مثل الجهاز المادي ، ومن أنت ، مثل بصمات الأصابع أو شبكية العين.







في معظم الحالات ، لا يكون إجراء تحديد بيولوجي ممكنًا ، خاصة عندما نتحدث عن أمان تطبيقات الويب ، لذلك تستخدم المصادقة الثنائية (2FA) عادةً السمة الثانية - "ما لديك". أحد الاختلافات الشائعة في هذا العامل الثاني هو رمز مادي مثل RSA SecurID :





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



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





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





بعد تحديد عنوان البريد الإلكتروني للحساب ، تحدد Google أنه تم تمكين المصادقة الثنائية (2FA) ويمكننا إعادة تعيين الحساب باستخدام التحقق ، والذي يتم إرساله عبر الرسائل القصيرة إلى الهاتف المحمول لصاحب الحساب:





الآن نحن بحاجة إلى تحديد بداية عملية إعادة التعيين:





ينتج عن هذا الإجراء إرسال بريد إلكتروني إلى العنوان المسجل:





يحتوي هذا البريد الإلكتروني على عنوان URL لإعادة التعيين:





عند الوصول إلى عنوان URL لإعادة التعيين ، يتم إرسال رسالة نصية ويطلب منه الموقع الإلكتروني إدخال:





هذه هي الرسالة القصيرة:





بعد إدخاله في المتصفح ، نعود إلى منطقة إعادة تعيين كلمة المرور الكلاسيكية:





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



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





ومع ذلك، يمكن لهذا الجهاز استقبال الرسائل القصيرة و استقبال رسائل البريد الإلكتروني إعادة تعيين كلمة المرور:





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



نعم ، توفر ميزة 2FA من Google بالتأكيد حماية إضافية ، ولكنها ليست مضمونة ، وهي بالتأكيد لا تعتمد على قناتين مستقلتين تمامًا.



إعادة التعيين حسب اسم المستخدم مقابل إعادة التعيين عن طريق البريد الإلكتروني



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



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



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



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



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



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



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



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



تحديد من بدأ عملية إعادة التعيين



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



هذا مثال من وظيفة إعادة الضبط التي أقوم بتضمينها حاليًا في ASafaWeb:



صورة


ينقل رابط "اكتشف المزيد" المستخدم إلى ip-adress.com ، مما يوفر معلومات مثل موقع وتنظيم الشخص الذي يطلب إعادة الضبط:



صورة


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



تغيير الإخطار عن طريق البريد الإلكتروني



هذا المنشور مشبع بموضوع واحد - التواصل ؛ التواصل قدر الإمكان مع صاحب الحساب حول ما يحدث في كل مرحلة من مراحل العملية ، دون الكشف عن أي شيء يمكن استخدامه بقصد ضار. وينطبق الشيء نفسه عندما يتم تغيير كلمة المرور بالفعل - أبلغ المالك بذلك!



هناك نوعان من أسباب تغيير كلمة المرور:



  1. قم بتغيير كلمة المرور بعد تسجيل الدخول لأن المستخدم يريد كلمة مرور جديدة
  2. إعادة تعيين كلمة المرور دون تسجيل الدخول لأن المستخدم نسيها


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



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



أوه ، وفي حالة عدم وضوحها بعد - لا تنشر كلمة مرورك الجديدة! قد يضحك هذا بعض الشيء ، لكن هذا يحدث :





السجلات والسجلات والسجلات وبعض السجلات الأخرى



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



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



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



تفويض المسؤولية لفناني الأداء الآخرين



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



هناك العديد من البائعين الخارجيين اليوم الذين يسعدون التخلص من الألم وتجريده كله في خدمة واحدة مُدارة. تتضمن هذه الخدمات OpenID و OAuth وحتى Facebook. بعض الناسلا يوجد حد للاعتقاد بأن هذا النموذج (لقد نجح OpenID بالفعل في Stack Overflow) ، إلا أن آخرين يرونه حرفياً كابوسًا .



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



التفريغ الكيدية



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



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



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



الحلقة الأضعف



من وجهة نظر حماية حساب واحد ، كل ما هو مكتوب أعلاه رائع ، ولكن عليك دائمًا أن تتذكر النظام البيئي المحيط بالحساب الذي تحميه. دعني أعطيك مثالاً:



يتم استضافة ASafaWeb بواسطة خدمة مذهلة تقدمها AppHarbor. تكون عملية إعادة تعيين حساب الاستضافة كما يلي:



المرحلة الأولى:





المرحلة الثانية:





المرحلة 3:





المرحلة 4:





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



النقطة المهمة هي أنه يجب النظر إلى متانة تنفيذ الحماية بشكل شامل: تحتاج إلى محاكاة التهديدات لكل نقطة دخول للنظام ، حتى لو كانت عملية سطحية ، على سبيل المثال ، الدخول إلى نظام AppHarbor. يجب أن يعطيني هذا فكرة جيدة عن مقدار الجهد الذي أحتاجه في عملية إعادة تعيين كلمة مرور ASafaWeb.



ضع كل شيء معا



يحتوي هذا المنشور على الكثير من المعلومات ، لذلك أريد تركيزها في مخطط مرئي بسيط:





تذكر أن تقوم بتسجيل أكبر قدر ممكن من التفاصيل لكل عنصر من هذه العناصر. هذا كل شيء ، الأمر بسيط!



النتيجة



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



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



لذلك ، كن حذرًا مع وظائف إعادة الضبط الخاصة بك ، وقم بمحاكاة التهديدات في نقاط مختلفة ، وعند تصميم وظيفة ، لا تخلع القبعة السوداء ، لأن هناك احتمال كبير أن يرتديها شخص آخر!






إعلان



تقدم VDSina خوادم غير مكلفة للإيجار مع الدفع اليومي ، كل خادم متصل بقناة إنترنت 500 ميغابت ومحمي من هجمات DDoS مجانًا!






All Articles