م/عبدالجبار حسين الظفري
ماهي خوارزميات القوة الغاشمة (Brute Force Algorithms)
ماهو الهجوم الاعمي و كيف تكون في امان منه ؟
هجوم القوة العمياء (Brute force attack)
في علم التعمية، هجوم القوة العمياء (بالإنجليزية: Brute-force attack) هو نوع من الهجوم الذي يعتمد على النص المشفر فقط، وتتم فيه محاولة تجربة كل المفاتيح المحتملة لفك النص المشفر، ويفترض هذا النوع من الهجوم أن الهاكر على علم بخوارزمية التشفير وكذلك بمجال مفتاح الشيفرة (أي جميع المفاتيح المحتملة).
استخدام هذا النوع من الهجوم كان صعباً سابقاً لكن في وجود الحاسوب يصبح الأمر أكثر سهولة.
ما هو Brute force attack ؟
يسمى هجوم القوة الغاشمة أو العمياء– هو محاولة لكسر كلمة مرور أو اسم مستخدم أو العثور على صفحة ويب مخفية ، أو العثور على المفتاح المستخدم لتشفير رسالة ، باستخدام نهج التجربة والخطأ والأمل ، في النهاية ، عن طريق التخمين بشكل صحيح. هذه طريقة هجوم قديمة ، لكنها لا تزال فعالة وشائعة لدى المتسللين.
اعتمادًا على طول كلمة المرور وتعقيدها ، قد يستغرق كسرها في أي مكان من بضع ثوانٍ إلى سنوات عديدة. في الواقع ، تشير IBM إلى أن بعض المتسللين يستهدفون الأنظمة نفسها يوميًا لعدة أشهر وأحيانًا سنوات.
يمكن أن يستغرق تخمين كلمة مرور لمستخدم معين أو موقع معين وقتًا طويلاً ، لذا قام المتسللون بتطوير أدوات للقيام بالمهمة بشكل أسرع.
القواميس هي الأداة الأساسية. يعمل بعض المتسللين من خلال قواميس عديدة و بلغات مختلفةو بأحرف وأرقام خاصة أو يستخدمون قواميس خاصة للكلمات .
في هجوم قياسي ، يختار أحد المتطفلين هدفًا ويقوم بتشغيل كلمات المرور المحتملة ضد اسم المستخدم هذا. وتعرف بـ هجمات القاموس.
هجوم القوة الغاشمة او العمياء يبحث عن كلمات المرور التي تم تسريبها على الانترنت و يستخدم ملايين من الاسماء للمستخدمين حتى يصل الى نتيحة معينة .
التحصين ضد هذا الهجوم:
لتفادي هذا النوع من الهجوم، ينبغي أن يكون عدد المفاتيح المحتملة كبيراً جداً
سنتناول بعض المفاهيم حول الخوارزميات في علوم الحاسوب
حول الخوارزمايت
في علوم الحاسب، الخوارزمية بشكل مبسط هي طريقة موضحة خطوة بخطوة لحل مشكلة ما. من الممكن أن تُصمم الخوارزميات لعمل حسابات محددة، معالجة بيانات، أو تنفيذ مهمات بشكل آلي.
تعريف Wikipedia للخوارزميات:
الخوارزمية هي طريقة فعالة من الممكن التعبير عنها في مقدار مُحدد من المساحة والوقت وفي أسلوب واضح لحساب دالة ما. بدايةً من حالة ومدخلات ابتدائيان (من المحتمل أن لا يكون للمدخلات قيمة في بادئ الأمر)، تصف الأوامر الحسابات من حيث متى يتم تنفيذها، متى تمر بعدد محدود من الحالات المتتالية، وتصدير مخرجات والتوقف عند الحالة النهائية للبيانات. ليس من الضروري أن تكون الانتقالات بين الحالات وبعضها معروفة ومحددة؛ بعض الخوارزميات، المعروفة بالخوارزميات العشوائية (Randomized Algorithms)، تتعامل مع مدخلات عشوائية.
هنالك متطلبات محددة يجب أن تخضع لها الخوارزميات:
الوضوح: يجب أن تكون كل خطوة من خطوات الخوارزمية موصوفة بوضوح.
امكانية الحساب بفعالية: كل من خطوات الخوارزمية يجب أن يكون من الممكن حسابها باستخدام الكمبيوتر
المحدودية: من الضروري أن يكون البرنامج محدود بنقطة نهاية مححدة ينتهي فيها بنجاح من العمل.
بعض الأنواع الشائعة للخوارزمايت تتضمن:
خوارزميات الترتيب (Sorting Algorithms).
خوارزميات البحث (Searching Algoritms).
خوارزميات الضغط (Compression Algorithms).
فئات الخوازميات أيضًا تتضمن:
Graph
Dynamic Programming
Sorting
Searching
Strings
Math
Computational Geometry
Optimization
Miscellaneous
وبالرغم من أنها ليست نوع من أنواع الخوارزميات، هياكل البيانات (Data Structures) في كثير من الأحيان يتم ضمها إلي الفئات السابقة.
الكفاءة (Efficiency)
الشائع في تقييم الخوارزميات هو تقييمها تبعًا لكفاءتها وكمية الموارد الحسابية التي تستهلكها لإتمام المهمة المطلوبة.
كذلك من الطرق الشائعة لتقييم الخوارزمية النظر لمدى التعقيد الحسابي للوقت الذي تستغرقه الخوارزمية (Time Complexity). وهذا يوضح كيف يزداد الوقت المستغرق من قبل الخوارزمية مع زيادة حجم البيانات المدخلة. وتبعًا لأنه في هذه الأيام تضطر الخوارزميات للتعامل مع حجم كبير من المدخلات، فإنه من الضروري للخوارزميات التي لدينا أن تتميز بسرعة كبيرة في عملها.
خوارزميات الترتيب (Sorting Algorithms)
خوارزميات الترتيب تأتي بالعديد من الأنواع والطوابع المختلفة اعتمادًا على احتياجك الشخصي.
بعض من خوارزميات الترتيب المشهورة والشائع استخدامها:
Quicksort
من غير الممكن أن ينتهي نقاش حول خوارزميات الترتيب دون ذكر خوارزمية Quick Sort.
يمكنك التعرف على الفكرة الأساسية للخوارزمية من هنا: Quick Sort
Mergesort
هي خوارزمية مشهورة تعتمد فكرتها على طريقة دمج مصفوفتين مرتبتين (two sorted arrays) لإنتاج مصفوفة واحدة مرتبة هي الأخرى. يمكنك معرفة المزيد عن الخوارزمية من هنا: Mergesort
المناهج الخاصة بfreeCodeCamp تحرص بشدة على صناعة وتصميم الخوارزميات. وذلك يكمن في أن تعلم الخوارزمايت هو طريق جيد جدًا للتدريب على المهارات البرمجية الأساسية للمبرمج. عادة ما يهتم المحاورون في مقابلات العمل للقبول في وظائف تطوير البرمجيات (Software Development) باختبار المتقدمين للوظيفة في مهاراتهم في الخوارزميات.
شرح خوارزميات القوة الغاشمة (Brute Force Algorithms)
خوارزميات القوة الغاشمة (Brute Force Algorithms) لها معنى مطابق تمامًا لذاك اللذي يوحي به اسمها، طريقة مباشرة لحل المشاكل لا تعتمد سوى على القوة الحسابية وتجربة كل الحلول الممكنة بدلًا من الاعتماد على أساليب أخرى متقدمة لتحسين كفاءة عمل الخوارزمية.
على سبيل المثال، تخيل ان معك قفل ذو رقم سري مكون من 4 خانات، لكل خانة احتمالية أن يكون الرقم بها أي من الأرقام في الفترة من 0 إلى 9.
تخيل أيضًا أنك نسيت الرقم السري لهذا القفل، ومع ذلك أنت لا تريد أن تشتري قفل آخر بدلًا من هذا المغلق.
وبما أنك لا تتذكر أي من قيم الخانات الأربع المكونة للرقم السري، فأنت مضطر لأن تستخدم أسلوب القوة الغاشمة لتتمكن من فتحه.
وهنا ستبدأ بإرجاع الأرقام في كل الخانات إلى الـ0 وتجربة كل القيم الممكنة واحدة تلو الأخرى: 0001، 0002، 0003، إلى آخر القيم الممكنة أو إلى أن يفتح القفل.
في أسوأ الحالات، سيأخذ منك الأمر 104 من المحاولات، أو بطريقة أخرى أنه سيأخذ 10,000 محاولة لإيجاد الرقم السري الخاص بك.
من الأمثلة الكلاسيكية في علوم الكومبيوتر هي مشكلة البائع المتجول (Traveling Salesman Problem) أو اختصارًا (TSP).
فلنفترض أن بائعًا في حاجة لأن يزور 10 مدن في نطاق دولة واحدة. كيف يمكن تحديد الترتيب الذي يجب عليه أن يزور به هذه المدن بحيث أن تكون المسافة التي سيسافرها أو سيقطعها بين المدن هي أقل ما يمكن؟
حل القوة الغاشمة (Brute Force Solution) يقوم ببساطة بحساب المسافة الكلية لكل طريق ممكن بين هذه المدن لاختيار الطريق الأقصر في نهاية الأمر. وهذا في الحقيقة ليس حلًا فعالًا لأنه من الممكن أن نستبعد الكثير من الطرق المحتملة باستخدام خوارزميات أكثر احترافية.
القيمة الحسابية للوقت (Time Complexity) المستغرق لخوارزمية القوة الغاشمة (Brute Force Algorithm) يقدر بـO(nm)، والذي يكتب في بعض الأحيان بهذه الطريقة O(n*m). لذلك، إذا أردنا البحث عن (string) مكون من عدد "n" من الحروف/الرموز في آخر مكون من "m" من الحروف/الرموز باستخدام القوة الغاشمة، سيستغرق ذلك محاولات تقدر ب n * m محاولة.
المزيد من المعلومات حول الخوارزمايت
في علوم الحاسب، الخوارزمية بشكل مبسط هي طريقة موضحة خطوة بخطوة لحل مشكلة ما. من الممكن أن تُصمم الخوارزميات لعمل حسابات محددة، معالجة بيانات، أو تنفيذ مهمات بشكل آلي.
وهذا هو تعريف Wikipedia للخوارزميات:
الخوارزمية هي طريقة فعالة من الممكن التعبير عنها في مقدار مُحدد من المساحة والوقت وفي أسلوب واضح لحساب دالة ما. بدايةً من حالة ومدخلات ابتدائيان (من المحتمل أن لا يكون للمدخلات قيمة في بادئ الأمر)، تصف الأوامر الحسابات من حيث متى يتم تنفيذها، متى تمر بعدد محدود من الحالات المتتالية، وتصدير مخرجات والتوقف عند الحالة النهائية للبيانات. ليس من الضروري أن تكون الانتقالات بين الحالات وبعضها معروفة ومحددة؛ بعض الخوارزميات، المعروفة بالخوارزميات العشوائية (Randomized Algorithms)، تتعامل مع مدخلات عشوائية.
هنالك متطلبات محددة يجب أن تخضع لها الخوارزميات:
الوضوح: يجب أن تكون كل خطوة من خطوات الخوارزمية موصوفة بوضوح.
امكانية الحساب بفعالية: كل من خطوات الخوارزمية يجب أن يكون من الممكن حسابها باستخدام الكمبيوتر
المحدودية: من الضروري أن يكون البرنامج محدود بنقطة نهاية مححدة ينتهي فيها بنجاح من العمل.
بعض الأنواع الشائعة للخوارزمايت تتضمن:
خوارزميات الترتيب (Sorting Algorithms).
خوارزميات البحث (Searching Algoritms).
خوارزميات الضغط (Compression Algorithms).
فئات الخوازميات أيضًا تتضمن:
Graph
Dynamic Programming
Sorting
Searching
Strings
Math
Computational Geometry
Optimization
Miscellaneous
وبالرغم من أنها ليست نوع من أنواع الخوارزميات، هياكل البيانات (Data Structures) في كثير من الأحيان يتم ضمها إلي الفئات السابقة.
الكفاءة (Efficiency)
الشائع في تقييم الخوارزميات هو تقييمها تبعًا لكفاءتها وكمية الموارد الحسابية التي تستهلكها لإتمام المهمة المطلوبة.
كذلك من الطرق الشائعة لتقييم الخوارزمية النظر لمدى التعقيد الحسابي للوقت الذي تستغرقه الخوارزمية (Time Complexity). وهذا يوضح كيف يزداد الوقت المستغرق من قبل الخوارزمية مع زيادة حجم البيانات المدخلة. وتبعًا لأنه في هذه الأيام تضطر الخوارزميات للتعامل مع حجم كبير من المدخلات، فإنه من الضروري للخوارزميات التي لدينا أن تتميز بسرعة كبيرة في عملها.
خوارزميات الترتيب (Sorting Algorithms)
خوارزميات الترتيب تأتي بالعديد من الأنواع والطوابع المختلفة اعتمادًا على احتياجك الشخصي.
بعض من خوارزميات الترتيب المشهورة والشائع استخدامها:
Quicksort
من غير الممكن أن ينتهي نقاش حول خوارزميات الترتيب دون ذكر خوارزمية Quick Sort. يمكنك التعرف على الفكرة الأساسية للخوارزمية من هنا: Quick Sort
Mergesort
هي خوارزمية مشهورة تعتمد فكرتها على طريقة دمج مصفوفتين مرتبتين (two sorted arrays) لإنتاج مصفوفة واحدة مرتبة هي الأخرى. يمكنك معرفة المزيد عن الخوارزمية من هنا: Mergesort
المناهج الخاصة بfreeCodeCamp تحرص بشدة على صناعة وتصميم الخوارزميات. وذلك يكمن في أن تعلم الخوارزمايت هو طريق جيد جدًا للتدريب على المهارات البرمجية الأساسية للمبرمج. عادة ما يهتم المحاورون في مقابلات العمل للقبول في وظائف تطوير البرمجيات (Software Development) باختبار المتقدمين للوظيفة في مهاراتهم في الخوارزميات.
ماهو الهجوم الاعمي و كيف تكون في امان منه ؟
يشير مصطلح الـ Brute-Force Attack الى عمليات الهجوم بطريقة ( التخمين ) التي يتم الاعتماد عليها لمحاولة استحصال معلومات معينة كإسم المستخدم وكلمة السر أو الرقم التعريفي الشخصي PIN عن طريقة تخمين مجموعه من الاحتمالات المتوقعة أو إيجاد صفحات أو روابط مواقع الويب مخفية وكذلك إيجاد المفتاح لفك شفرات الرسائل والبيانات. في عملية الهجوم بوساطة الـ Brute-Force ن.
ماهو الهجوم الاعمي (Brute-Force Attack) و كيف تكون في امان منه ؟
بعض الحقائق عن الـ Brute-Force Attack
انواع الـ Brute-Force Attack
هجوم القاموس (Dictionary Attack )
هذا النوع من الهجوم يتم عن طريق المرور علي كل الكلمات التي في القاموس. وي
الهجوم العكسي (Reverse Brute Force Attacks )
هذا النوع من الهجوم يتم عندما يمتلك المخترق كلمة المرور الخاصة بك لكن لايملك اسم المستخدم الخاص بك. تستخدم نفس طريقة الهجوم التخميني العادية .
يمكن اجراء هجوم الـ Brute-Force علي كل من اسم المستخدم وكلمة المرور لكن هذا يحتاج وقت اطول لمعرفتهم او اختراقهم.
اعادة استخدام الاعتماد (Credential Recycling )
في هذا النوع من الهجوم يقوم المخترق بالاستفادة او باستخدام كلمة مرور مخترقة مسبقا. فاذا كان لشخص كلمة مرور حساب اليوتيوب الخاص بك يمكنه من خلاها الدخول علي صفحة الفيس بوك و التويتر باستخدلم نفس الاعتماد الـ Credential.
لذا من الافضل استخدام كلمة مرور مختلفة لكل حساب تملكه.
كتب لشرح الخوارزميات باستخدام لغة JavaScript:
Data Structures in JavaScript
كتاب مجاني يغطي شرحًا لهياكل البيانات باستخدام لغة JavaScript .
GitBook
Learning JavaScript Data Structures and Algorithms - Second Edition
يغطي الكتاب البرمجة كائنية التوجه (Object Oriented Programming) وبعض المبادئ المهمة مثل خوارزميات الترتيب(Sorting Algorithms)، خوارزميات البحث(Searching Algorithms)، وبعض الخوارزميات وهياكل البيانات المشهورة والمتقدمة مثل: quicksort, mergesort, binary search trees and prototypal inheritence.
Amazon
ISBN-13: 978-1785285493
Data Structures and Algorithms with JavaScript: Bringing classic computing approaches to the Web
يغطي الكتاب شرحًا لمجموعة من المفاهيم المهمة والتي تخص الخوارزميات وهياكل البيانات والتي تتضمن: Recursion, Sorting and Searching Algorithms, Linked Lists, and Binary Search Trees.
Amazon
ISBN-13: 978-1449364939
مراجع
https://www.imperva.com/learn/application-security/brute-force-attack/
https://www.varonis.com/blog/brute-force-attack/
https://www.kaspersky.com/resource-center/definitions/brute-force-attack