لماذا يمكن أن يكون القليل من الملح مفيدًا لكلمات المرور الخاصة بك (ولكن ليس الفلفل!)

ملاحظة موجزة - تتناول هذه المقالة نظرية كيفية اختراق كلمات المرور المجزأة. يعد فهم كيفية تنفيذ مجرمي الإنترنت للهجمات أمرًا في غاية الأهمية لفهم كيفية تأمين الأنظمة ضد هذه الأنواع من الهجمات.

ولكن من المحتمل أن تكون محاولة اختراق نظام لا تملكه غير قانونية في نطاق سلطتك القضائية (بالإضافة إلى اختراق أنظمتك الخاصة [وغالبًا ما تنتهك] أي ضمان لهذا المنتج).

تفترض هذه المقالة مستوى معينًا من المعرفة بوظائف التجزئة وتقنيات تكسير كلمات المرور الأساسية - إذا كنت لا تفهم هذه الموضوعات ، فراجع هذه المقالات.

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

انتظر ، اعتقدت أن وظائف التجزئة كانت في اتجاه واحد! كيف يمكنك كسر وظائف التجزئة؟

لسوء الحظ ، فإن وظائف التجزئة التي تُستخدم لتجزئة كلمات المرور ليست دائمًا آمنة مثل وظائف التجزئة المعتمدة بشكل عام. على سبيل المثال ، تُعرف وظيفة التجزئة المستخدمة لأجهزة Windows القديمة باسم LM Hash ، وهي ضعيفة جدًا بحيث يمكن كسرها في بضع ثوانٍ.

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

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

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

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

في النهاية ، ستنتج مجموعتان مختلفتان من البيانات نفس قيمة التجزئة.

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

إذا كانت كلمة المرور غير آمنة (لنفترض أن شخصًا ما يستخدم كلمة مرور مكونة من 5 أحرف) ، فيمكن اختراقها بسهولة نسبيًا. على سبيل المثال ، لا يمكن استخدام كلمة مرور مكونة من 5 أحرف صغيرة إلا لإنشاء 11881.376 كلمة مرور مختلفة (26 ^ 5).

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

ومع ذلك ، مع زيادة طول كلمات المرور ، تحتاج إلى مساحة التخزين (وبالتالي تكلفة التخزين) لكل كلمة مرور ممكنة وتزداد التجزئة المقابلة بشكل كبير.

على سبيل المثال ، إذا كانت كلمة المرور التي تحاول كسرها تتكون من 8 أحرف طويلة ولكنها تستخدم أرقامًا (10 أرقام) وأحرفًا صغيرة (26) وأحرفًا كبيرة (26) وبعض الأحرف الخاصة (10) ، فإن عدد كلمات المرور المحتملة ينتقل إلى 722،204،136،308،736 - وهي مساحة تخزين كبيرة ، عندما تدرك أن كل منها مجزأ بوظيفة تجزئة مثل SHA-256.

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

تحقق من هذه المقالة للحصول على برنامج تعليمي حول إنشاء طاولات قوس قزح الخاصة بك.

ما زلت مهتمًا. كيف تعمل طاولات قوس قزح؟

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

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

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

وبالتالي من أجل حساب الجدول ، يمكنك استخدام إحدى التجزئة ، h1 ، في وظيفة الاختزال ، R () ، لإنشاء نص عادي p1.

R (h1) = p1.

ثم تستخدم وظيفة التجزئة H () مع p1 لإنشاء تجزئة جديدة.

H (p1) = h2.

باستخدام مثالنا من قبل:

إذا كانت مجموعة النص العادي هي [abcdefghijklmnopqrstuvwxyz] {5} (نحن نبحث عن جدول قوس قزح لجميع كلمات المرور المكونة من أحرف صغيرة بطول 5) ونستخدم MD5 (خوارزمية التجزئة):

قد تكون التجزئة هي ab56b4d92b40713acc5af89985d4b786 (h1). الآن ، نطبق وظيفة الاختزال ، والتي يمكن أن تكون بسيطة بأخذ آخر 5 أحرف في التجزئة.

R (ab56b4d92b40713acc5af89985d4b786) = cafdb

ح (كافدب) = 81a516edabf924cd0f727d329e855b1f

لماذا يطلق عليهم جداول قوس قزح؟

يستخدم كل عمود وظيفة تخفيض مختلفة. لذلك إذا تم تلوين كل عمود ، فسيكون قوس قزح طويلًا للغاية.  

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

عظيم ، كيف تصنع سلسلة؟

من أجل إنشاء سلسلة ، فأنت تستخدم وظيفة الاختزال ووظيفة التجزئة (كلاهما في اتجاه واحد) لإنشاء "سلسلة" من التجزئة والنص الصريح. ستستمر كل من هذه "السلاسل" لخطوات k ، وعندما تنتهي السلسلة ، ستخزن فقط أول نص عادي وآخر تجزئة في السلسلة.

لذلك ، تبدو سلسلة العينة كما يلي:

p1 -> h1 = H (p1) -> R1 (h1) = p2 -> H (p2) = h2 -> R2 (h2) = p3 -> H (p3) = h3

تختلف كل وظيفة تخفيض (يتم تمثيلها بواسطة R1 ، R2 ، R3 ، إلخ.) جدول عينة من السلاسل (كل صف عبارة عن سلسلة بطول 5) يبدو كما يلي. لاحظ أنه يتم ملؤها ببيانات مزيفة فقط لإعطائك مثالاً - وظيفة التجزئة ليست وظيفة تجزئة قد تجدها تستخدم لتجزئة كلمات المرور.

يتم تحديد وظائف الاختزال ، R1 و R2 على النحو التالي - يأخذ R1 أول 3 أرقام من التجزئة ، بينما يأخذ R2 آخر حرفين من التجزئة:

p1 -> h1 = H (p1) -> R1 (h1) = p2 -> H (p2) = h2 -> R2 (h2) = p3 -> H (p3) = h3

2 -—> abdu2934 -—> 293 -—> 83kdnif8 -—> if -—> ike83jd3

15 -—> dks2ne94 -—> 294 -—> ld932nd9 -—> ld -—> ldie938d

20 -—> ld93md8d -—> 938 -—> lxked93k -—> lx -—> 93mdkg8d

في جدول قوس قزح ، يتم حفظ نقطة البداية الأولى ونقطة النهاية فقط للحفظ على التخزين ، مثل هذا:

نقطة نهاية نقطة البداية (نص عادي) ، بعد خطوات k خلال السلسلة (التجزئة)

p1 -> h1k

p2 -> h2k

p3-> h3k

ثم عندما يكون لديك علامة تجزئة (h) حيث لا تعرف النص العادي (؟) ، ستقارنها بالسلاسل.

  1. أولاً ، سوف تتحقق مما إذا كانت التجزئة موجودة في قائمة التجزئة النهائية (h1k ، h2k ، إلخ). إذا كان الأمر كذلك ، يمكنك الانتقال إلى الخطوة 3.
  2. إذا لم يكن الأمر كذلك ، فيمكنك تقليل التجزئة إلى نص عادي مختلف (R1) ثم تجزئة ذلك النص العادي (باستخدام وظيفة التجزئة ووظيفة الاختزال التالية أعلاه) ومقارنتها بقائمة التجزئة النهائية (h1k ، h2k ، h3k ، إلخ). عندما تتطابق مع إحدى التجزئة النهائية ، فمن المحتمل أن تحتوي هذه السلسلة على التجزئة الأصلية.
  3. من أجل العثور على التجزئة الأصلية في السلسلة ، خذ نصًا عاديًا لبداية السلسلة (لذا إذا تطابق h1k ، ابدأ بـ p1) وقم بتطبيق وظائف التجزئة والاختزال للتحرك على طول السلسلة حتى تصل إلى التجزئة المعروفة والنص العادي المقابل لها. بهذه الطريقة ، يمكنك التنقل خلال التجزئات في السلسلة دون جعلها تشغل مساحة تخزين على جهازك.

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

كيف تدافع عن هذه الأنواع من الهجمات؟

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

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

يتم تضمين التمليح الآن في معظم أنواع التجزئة الرئيسية كخيار. بينما لا يستخدم Windows حاليًا التمليح ، يمكنه تشفير التجزئة المخزنة إذا كنت تستخدم أداة "SYSKEY".

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

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

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

يجب أن يكون Pepper مختلفًا لكل تطبيق يتم استخدامه له ، ويجب أن يكون طويلًا بما يكفي ليكون آمنًا. يوصى المعهد الوطني للمعايير والتكنولوجيا بما لا يقل عن 112 بت.

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

للحصول على مقالة أطول حول مشاكل الفلفل ، تحقق من هذا الموضوع.

أخيرًا ، استخدم كلمات مرور قوية (12 حرفًا على الأقل) ومعقدة ، وقم بتنفيذ سياسات كلمات مرور قوية عبر جميع الأنظمة. يمكن أن يشمل ذلك إجبار المستخدمين على إنشاء كلمات مرور قوية ، واختبار قوتهم بانتظام ، واستخدام مديري كلمات المرور على مستوى المؤسسة ، وفرض استخدام 2FA ، وما إلى ذلك.

مرتبك بشأن ما الذي يجعل كلمة المرور قوية؟

يبدو من السهل حقًا أن تتعرض للاختراق. هل يجب علي القلق؟

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

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

قرصنة سعيدة!

قراءة إضافية:

مزيد من التفاصيل حول سلاسل التجزئة

شرح آخر لجداول قوس قزح

قائمة طاولات قوس قزح على الإنترنت