IDS: Intrusion Detection System

intrusion detection system concepts and techniques

IDS: Intrusion Detection System

intrusion detection system concepts and techniques

ارتباط Composition در جاوا

Composition راه حلی است برای طراحی و یا پیاده‌سازی ارتباط has-a (دارد یک) .Composition و Inheritance هر دو از تکنیک های طراحی هستند.از inheritance برای پیاده‌سازی رابطه is-a استفاده می‌شود .ارتباط hast-a برای از اطمینان از قابلیت استفاده مجدد در برنام های ما مورد استفاده قرار می گیرد.در Composition ما از متغیری (instance variable) استفاده می‌کنیم که به دیگر اشیاء ارجاع می شود. ارتباط Composition دو شی زمانی ممکن می‌شود که یک شی شامل اشیاء دیگر باشد و آن شی کاملاً وابسته به شی دیگر باشد به نحوی که آن شی شامل شده بدون شی پدر قابلیت موجود بودن نداشته باشد
نکات کلیدی:
  • Composition بخشی از ارتباط را نمایش می‌دهد
  • هر دو موجودیت در Composition به یکدیگری مرتبط هستند
  • Composition بین دو موجودیت زمانی ایجاد می‌شود که یک شی شامل اشیاء دیگر باشد و آن شی دیگر بدون شی اصلی موجودیت خارجی نداشته باشد.برای مثال یک دانشگاه لیستی از دانشکده ها دارد و حالا دانشکده و لیست دانشکده ها بخشی از این دانشگاه هستند و اگر دانشگاه از بین برود به تبع آن دانشکده ها هم از بین خواهد رفت
  • Composition بر ارث بری در پیاده‌سازی ارجهیت دارد
  • اگر دانشگاه حذف شود سپس همه دانشکده های وابسته برای آن دانشگاه نیز باید حذف شود.
اجازه بدهید با یک مثال از دانشگاه و دانشکده های آن مفهوم Composition را بیشتر درک کنیم
کلاسی تحت نام دانشکده College ایجاد می‌کنیم که شامل متغیر هایی است مثال نام و آدرس .همچنین کلاسی تحت نام دانشگاه University ایجاد می‌کنیم که شامل یک یک ارجاع به لیستی از دانشکده هاست.دانشگاه می‌تواند یک یا چند دانشکده داشته باشد .همچنین اگر دانشگاه برای همیشه بسته شود سپس همه دانشکده های موجود در آن دانشگاه نیز بسته خواند شد زیرا دانشکده بدون دانشگاه موجودیت نخواهد داشت.ارتباط بین دانشگاه و دانشکده یک ارتباط Composition خواهد بود

package compositionexample;
import  java.io.*;
import  java.util.*

/**
 *
 * @author mahdi
 */
 class College {
    public String name;
    public String address;
    public College(String name, String address)
    {
        this.name=name;
        this.address=address;
    }
}
class University
{
    private  final List<College> colleges;
    public University(List<College> colleges)
    {
        this.colleges=colleges;
    }
    public List<College> getTotalCollegesInUniversity()
    {
        return colleges;
    }
}
public class CompositionExample {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        College c1=new College("computer", "main block");
        College c2=new College("chimical", "Second Block");
        College c3=new College("history", "Third block");
        List<College> college = new ArrayList<College>();   
        college.add(c1);   
        college.add(c2);   
        college.add(c3);   
        University university = new University(college);   
        List<College> colleges = university.getTotalCollegesInUniversity();   
        for (College cg : colleges) {   
            System.out.println("Name : " + cg.name   
                               + " and "  
                               + " Address : " + cg.address);   
    }
    }
    
}

مفهوم Covariant return type در جاوا

همانطور که می‌دانیم در overriding  نوع بازگشتی از متد زیر کلاس subclass(متدی که در زیر کلاس override شده است) باید مشابه با نوع بازگشت داده شده از متد کلاس پدر باشد(superclass).البته در نسخه های ۵ به بعد جاوا این رویه تغییر پیدا کرده و ویژگی Covariant return type معرفی شد.با استفاده از این ویژگی override نمودن هر متدی  بوسیله تغییر در مقدار بازگشتی آن امکان‌پذیر است.اگر مقداری که توسط متدی که در زیر کلاس override شده یک subtype از مقدار بازگشت داده شده توسط متدی باشد که آن را در زیر کلاس override کرده‌ایم یعنی دقیقاً مشابه آن نباشد آنگاه می‌گوییم که از covariant return type استفاد کرده ایم.به زبان ساده‌تر اگر نوع داده ای که توسط متد override شده در زیر کلاس بازگردانده می‌شود یک زیر کلاس از نوع بازگشت داده شده توسط متدی باشد که آن را override کرده‌ایم آنگاه این ویژگی معروف به  covariant return type است.
برای استفاده از این ویژگی در جاوا سه قانون مهم وجود دارد
1- اگر نوع بازگشتی متد کلاس پدر object باشد آنگاه نوع بازگشتی متد فرزند باید مشابه و یا یکی از انواع string,stringuffer,number,integer باشد و نمی‌تواند از انواع داده اصلی باشد primitive type
2-نوع بازگشتی متد زیر کلاس نمی‌تواند نوع والد باشد.برای مثال اگر مقدار بازگشتی متد کلاس پدر string باشد آنگاه مقدار بازگشتی متد زیر کلاس نمی‌تواند object باشد.
3-ویژگی covariant return type  تنها برای اشیاء صادق است نه انواع داده primitive


package covariantReturnType;
public class A
{
 public Object m1()
 {
   System.out.println("Hello, this is a superclass");
    return null;
  }
}
public class B extends A
{
 @Override
  public String m1()
  {
     System.out.println("Hello, this is the subclass");
      return null;
  }
 }
public class AB
{
  public static void main(String[] args)
  {
     B b = new B();
      b.m1();
     A a = new B();
      a.m1();
   }
 }

یکی از کاربرد های این ویژگی  کوتاه نمودن کد نویسی در upcasting و downcasting است

دسته بندی ترافیک شبکه با استفاده از خوشه بندی فازی برای امنیت شبکه

در این بخش به معرفی مقاله" Classification of Network Traffic Using Fuzzy Clustering for Network Security" در خصوص دسته بندی ترافیک شبکه با استفاده از خوشه بندی فازی برای امنیت شبکه  می پردازیم.

مقدمه :
با توجه به اینکه استفاده از شبکه های کامپیوتری به امری عادی در اجتماع تبدیل شده است نیاز است که توجه ویژه ای به حملات مخرب و نفوذ معطوف گردد.این نیازمندی ها موجب پیدا شدن تکنیک های قابل اعتماد و قوی برای محافظت از شبکه ها می گردد.سیستم تشخیص نفوذ یک ابزار مدیریت شبکه را برای تشخیص رفتار های نرمال از غیر نرمال در بسته های ترافیکی شبکه فراهم می نماید.سیستم تشخیص نفوذ این توانایی را دارد که نفوذ های شبکه شامل حملات مخرب ، دسترسی های غیر مجاز و دیگر رفتار های ناهنجار را شناسایی نماید.با توجه به حجم بالایی از ترافیک  که در حال حاضر در شبکه ها وجود دارد بکارگیری تجزیه و تحلیل داده های بزرگ Big Data راهکار های امید بخشی را برای تشخیص نفوذ گر ها فراهم می کند.اغلب سیستم های تشخیص نفوذ از تکنیک های تشخیص الگوی غیر نظارت شده(unsupervised) و یا نظارت شده(supervised) برای ساخت دسته بندی کننده های متا (meta-classifiers) که  برای تشخیص مورد بهره بردرای قرار می گیرد استفاده می کنند.این متدلوژها شامل مدل های آماری(statistical models) ، راهکار های سیستم ایمنی(immune system) ، تایید پروتکل (protocol verification)،بررسی فایل ، شبکه های عصبی ، لیست سفید whitelisting، تطبیق عبارت (expression matching) ،زبان های اختصاصی (dedicated languages)،تجزیه و تحلیل گذار حالت(state transition analysis)، الگوریتم ژنتیک و ...[1, 2].عملکرد این تکنیک ها تنها در محیط های خوب تعریف شده (well-defined) رضایت بخش است.آنها توانایی شناسایی حملات پیچیده و یا ناشناخته را ندارند و همینطور قدرت سازگار شدن بامحیط های داینامیک مثل شبکه های موبایل را نیز ندارند . [3].خوشه بندی فازی نشان داده است که نسبت به خوشه بندی های سنتی مزیت های بیشتری دارد و بر محدودیت های دیگر روشها در محیط های داینامیک و حملات ناشناخته غلبه می نماید.[4] صرف نظر از کارایی عالی روش خوشه بندی فازی اغلب متد های فعلی از برخی از محدودیت ها رنج می برند.Jiang [5] برای استفاده از یک الگوریتم خوشه بندی فازی c-means تلاش نمود ، اما سیستم تولید شده دارای مقدار پایین تشخیص موفق بین  75-85 درصد بود و دیگر تلاش ها نیز از نرخ بالای FP رنج می بردند [6, 7, 8].در این تحقیق از خوشه بندی فازی c-means برای دسته بندی بسته های TCP به نرمال و یا نفوذ استفاده می شود.خوشه ها بوسیله آنالیز مجموعه داده های خیلی بزرگ از بسته های TCP ایجاد می شوند.تست های اولیه حاکی از این است که روش پیشنهادی یک تشخیص عالی برای بسته های مخرب فراهم می کند بدون اینکه نرخ fp بالایی داشته باشد.
خوشه بندی فازی c-means:
بر خلاف خوشه بندی ها  سنتی خوشه بندی فازی c-means اجازه می دهد که یک آیتم داده به چندین خوشه متعلق باشد.مقدار تعلق یک آیتم به خوشه مانند یک مجموعه فازی نمایش داده می شود.FCM(fuzzy c-means clustering) توسط  Dunn [10] توسعه داده شده و بوسیله Bezdek [11, 12] بازنگری شده است.
امنیت شبکه با استفاده از خوشه بندی فازی:
امنیت شبکه با استفاده از خوشه بندی فازی سه فاز دارد که در شکل نشان داده شده است.در فاز اول و دوم سیستم دسته بندی ساخته می شود و در سومین فاز سیستم تشخیص نفوذ واقعی پیاده سازی می شود .فازهای مورد نظر به شرح ذیل می باشند
1-انتخاب زیر مجموعه ویژگی(Feature subset selection) :

از تکنیک های کاهش ابعاد(dimension reduction) برای کاهش تعداد ویژگی های بسته TCP که برای دسته بندی یک بسته در خوشه بندی فازی مورد نیاز است استفاده می شود.

2-خوشه بندی فازی :

خوشه بندی فازی برای تعیین نمودن centroid تعداد n خوشه اعمال می گردد.ان دسته از خوشه هایی که عمدتا بوسیله بسته های مخرب پر می شوند برچسب می شوند.

3-دسته بندی بسته های TCP ورودی:

.به محض اینکه بسته ای وارد شد،میزان درجه عضویت آن در هر خوشه مشخص شده و آنهایی که دارای ارتباط قوی با خوشه هایی که به عنوان مخرب شناسایی شده اند می باشند برچم زده می شوند.

شکل : مراحل استفاده از خوشه بندی فازی در امنیت سیستم
دانلود مقاله :