خب، بذارین خیلی راحت و خودمونی این موضوع رو باز کنم: امروزه اکثر شرکتها و سازمانا دیگه دارن سیستمهاشونو میبرن روی Cloud یا همون فضای ابری. این کار باعث میشه همهچیز مقیاسپذیر و قابل دسترستر بشه و دیگه لازم نباشه همه سختافزار و سرورات دست خودت باشه. ولی نقطه ضعفش اینه که چون دادهها تو بستر خیلی بزرگ و باز جابهجا میشن، بیشتر هم در معرض حملات سایبری قرار میگیرن.
تا چندوقت پیش، سیستمهای جلوگیری از نفوذ (یا Intrusion Detection Systems که به اختصار IDS گفته میشه) بیشتر بر اساس Signature یا Rule بودن، یعنی مثلاً یه لیست از تهدیدهای قبلی داشتن و اگر همون اتفاقا تکرار میشد، خب سیستم تشخیصش میداد. اما الان دیگه ماجرا سختتر شده، چون نوع حملات خیلی پیچیدهتر و چندلایه شده. واسه همین این مدلهای قدیمی دیگه جوابگو نیستن.
اینجا بود که پای Machine Learning یا همون یادگیری ماشین وسط اومد. یادگیری ماشین یعنی سیستم خودش با دادههایی که بهش میدیم، یاد میگیره تشخیص بده که چه چیزی حمله است و چه چیزی نیست، مخصوصاً برای حملههایی که تا حالا دیده نشده بودن!
تو این تحقیق اومدن به این فکر کردن که آیا استفاده کردن از چند تا مدل یادگیری ماشین در کنار هم (که بهش میگن “Ensemble” یا تجمیع مدلها) بهتر جواب میده یا فقط باید از یکیشون استفاده کرد؟ مثلاً فرض کن به جای اینکه فقط به یه مدل مثل Random Forest یا SVM اتکا کنن، ترکیبی از چند مدل مختلف رو کنار هم بذارن و ازشون بخوان با هم تصمیم بگیرن.
مدلهایی که بررسی شده بودن اینا بودن: Random Forest (یه مدل که با درخت تصادفی تصمیم میگیره)، Decision Tree، Gradient Boosting و XGBoost (که دوتاشون از خانواده بوستینگ هستن و دنبال پیدا کردن نقاط ضعف مدلهای قبلیان)، Naive Bayes (که کلی سادهسازی داره)، SVM (یا Support Vector Machine که بر اساس بردارهای جداکننده تصمیم میگیره)، و Logistic Regression (یک مدل ریاضی برای پیشبینی احتمالها).
توی این تحقیق از روشهایی مثل Voting Hard و Stacking برای ترکیب نتیجه مدلها استفاده کردن. Voting Hard یعنی هر مدل رأی میده و هر گزینه بیشترین رأی رو بیاره برنده میشه؛ ولی Stacking یه مرحله هوشمندانهتر داره و از یک مدل بالادستی استفاده میکنه تا خروجی مدلهای قبلی رو دوباره بررسی کنه و تصمیم بگیره.
برای آزمایش هم از دیتاست معروف NSL-KDD استفاده کردن. این دیتاست یکی از دیتاستهای مرجع برای بررسی سیستمهای تشخیص حمله توی فضای ابری و شبکه است. اطلاعات زیادی از حملات مختلف توش جمع شده.
نتیجه؟ جالب بود! مدلهایی که به صورت تکی کار میکنن، واقعاً خوب بودن. ولی وقتی چندتا مدل با هم ترکیب شدن و Ensembling انجام شد – مخصوصاً با Stacking و Voting Hard – دقتشون تا نزدیک ۱۰۰٪ رفت بالا! تازه فقط دقت نبود؛ شاخصهایی مثل Precision (دقت در تشخیص حملات واقعی)، Recall (انگشتی بودن مدل تو کشف همه حملات)، و F1-Score (که یه مدل مخلوط از دوتای قبلیه) هم همه به شدت بهتر شدن.
جالبتر اینکه حتی اگه ویژگیهای کمتری از دادهها رو وارد مدل میکردن (مثلاً به جای همه عوامل، فقط چندتا عامل مهم رو انتخاب میکردن که بهش میگن Feature Selection)، باز هم مدلهای Ensemble خیلی خوب جواب میدادن. روش انتخاب ویژگیها هم با Random Forest و Gain Information (یعنی اطلاعاتی که هر ویژگی به مدل اضافه میکنه) و انتخاب دستی بوده.
در کل، این تحقیق نشون داد که هم مدلهای یادگیری ماشین تکی و هم ترکیبی میتونن سیستمهای تشخیص حمله توی فضای ابری رو فوقالعاده کنن. بسته به شرایط و نوع تهدید و قدرت کامپیوتری، آدمها میتونن تصمیم بگیرن مدل سادهتر یا ترکیبیتر رو استفاده کنن. پس اگه خودت یا شرکتت هنوز به فکر امنیت Cloud نیستین، وقتشه جدی بگیرین؛ چون حملات سایبری روزبهروز هوشمندتر میشن!
منبع: +