التخطي إلى المحتوى الرئيسي

ادارة كلمات سر المستخدمين

 

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

باختصار، لا يجب أن تقوم بتخزين أية كلمات سر في أي مكان في موقعك، ما سوف تختزنه في جدول المستخدمين هو قيمة الهاش، مضافا إليها ما يتعارف عليه بالملح salt، وهي قيمة عشوائية تدمج بكلمة السر قبل التشفير، قيم الهاش وخوارزمياتها تختلف، في حال تخزين كلمات السر، أنصحك باستخدام خوارزمية بطيئة مثل bcrypt مع عمل سياسة لقبول كلمات السر بحيث لا تقل عن 8 حروف ولا تزيد عن 100 حرف.

لكن ماهو الهاش؟

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

طيب ماذا يفعل الهاكر عند حصوله على الهاش؟

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

وهنا يأتي دور الملح!

ربما ستجد في كل جداول الرينبو هاش مقابل لكلمة سر مثل sunscreen وستجد هاشات مقابلة أيضا لكل تنويعاتها، تذكر أن جداول الهاش تحوي ملايين كلمات السر المختلفة التي تم حسابها مسبقا، الجداول المتوسطة منها قد تحوي 64 مليون قيمة..لكن، ماذا لو انك قبل حساب قيمة الهاش للباسوورد، قمت باضافة الملح إليه؟..يعني بدلا من hash('sunscreen') تقوم بحساب قيمة hash('sunscreene334eda896de')؟

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

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

طيب لماذا يجب ألا يقل طول الباسوورد عن 8 حروف؟ ولماذا أختار خوارزمية بطيئة؟

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

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



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

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

إذا كان الأمر كذلك، لما أنصح بحد أقصى لطول كلمة السر؟

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

الآن، عليك أن تبحث عن الطريقة العملية لهذه النظرية وكيفية تطبيقها في لغة البرمجة الخاصة بك واطار العمل الذي تعمل به. بالتوفيق.

تعليقات

المشاركات الشائعة من هذه المدونة

جافاسكريبت JavaScript - الحلقة الثانية

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

جدران النار - خطوط الدفاع

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

هجمات التصيّد - الهندسة الاجتماعية

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