امنیت داده و شبکه

مدرس: دکتر کامبیز میزانیان پیش‌نیاز: –
ترم: تابستان ۱۴۰۴ محل برگزاری: کلاس مجازی
زمان ارائه: یک‌شنبه و سه‌شنبه ۱۷:۰۰ تا ۱۸:۳۰ مشاهده: دریافت لایسنس

معرفی درس

امنیت داده و شبکه؛ از شناخت آسیب‌پذیری‌ها تا طراحی سیستم‌های امن

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

درس امنیت داده و شبکه با هدف آشنایی با مفاهیم بنیادی امنیت و بررسی روش‌های متداول حمله و دفاع در سامانه‌های رایانه‌ای طراحی شده است. در این درس، با مدل‌های کنترل دسترسی و سیاست‌های امنیتی آشنا می‌شوید و سپس موضوعاتی مانند آسیب‌پذیری‌های نرم‌افزارهای تحت وب، امنیت ارتباطات شبکه، سازوکارهای رمزنگاری، تهدیدهای امنیت سیستم و ملاحظات امنیتی سکوهای موبایل را بررسی می‌کنید.

این درس تنها به معرفی تهدیدها محدود نمی‌شود؛ بلکه به راهکارهای پیشگیری، شناسایی و کاهش خطر نیز می‌پردازد. آشنایی با ابزارهایی مانند دیواره آتش، سامانه‌های تشخیص نفوذ، شبکه خصوصی مجازی، تحلیل ایستا و پویای نرم‌افزار و روش فازینگ، دید گسترده‌تری درباره شیوه‌های ارزیابی و تقویت امنیت سامانه‌ها فراهم می‌کند.

در پایان این درس چه توانایی‌هایی کسب می‌کنید؟

  • شناخت مفاهیم پایه امنیت اطلاعات، سیاست‌های امنیتی و مدل‌های کنترل دسترسی، از جمله DAC، MAC و RBAC
  • درک آسیب‌پذیری‌های رایج در برنامه‌های تحت وب، از جمله تزریق SQL، حملات XSS و CSRF، و آشنایی با سازوکارهای مقابله با آن‌ها
  • شناخت اصول رمزنگاری متقارن و نامتقارن، توابع درهم‌ساز و کدهای احراز صحت پیام
  • درک سازوکارهای حفاظت از اطلاعات در ارتباطات وب و آشنایی با HTTPS، SSL و سیاست‌های امنیتی مرورگر
  • شناخت تهدیدهای امنیتی در پروتکل‌های شبکه و آشنایی با ابزارهای دفاعی مانند دیواره آتش، VPN و سامانه‌های تشخیص نفوذ
  • آشنایی با حملات منع سرویس و شناخت رویکردهای دفاعی برای حفظ دسترس‌پذیری خدمات
  • درک برخی آسیب‌پذیری‌های سطح سیستم و آشنایی با روش‌های کاهش خطر، از جمله ایزوله‌سازی، مجازی‌سازی و جعبه شنی
  • آشنایی با روش‌های ارزیابی امنیت نرم‌افزار، از جمله تحلیل ایستا، تحلیل پویا و فازینگ
  • شناخت تهدیدها و ملاحظات امنیتی در سکوهای موبایل، به‌ویژه Android و iOS

این درس برای دانشجویان و دانش‌آموختگان علوم کامپیوتر و مهندسی کامپیوتر و همچنین برنامه‌نویسان، توسعه‌دهندگان وب و متخصصان شبکه مناسب است که می‌خواهند درک عمیق‌تری از آسیب‌پذیری‌های نرم‌افزاری و شبکه‌ای و روش‌های دفاع در برابر آن‌ها به دست آورند. مطالب درس می‌تواند به بهبود نگاه امنیتی در طراحی و توسعه نرم‌افزار، ارزیابی سامانه‌ها و ادامه یادگیری در حوزه‌هایی مانند امنیت نرم‌افزار و امنیت شبکه کمک کند.

پیش‌نیاز

آشنایی مقدماتی با برنامه‌نویسی، مفاهیم پایه سیستم‌عامل و شبکه‌های رایانه‌ای برای بهره‌گیری بهتر از این درس توصیه می‌شود. تجربه کار با برنامه‌های تحت وب یا آشنایی با مفاهیم پروتکل‌های شبکه نیز می‌تواند در درک مثال‌ها و آسیب‌پذیری‌های مطرح‌شده مفید باشد.

ریز مواد

  • مفاهیم و تعاریف اولیه
    • خط مشی امنیتی و مدل‌های کنترل دسترسی
    • کانال‌های پنهان، کنترل جریان اطلاعات
    • مدل‌های اختیاری (DAC) و مدلهای اجباری (MAC)
    • مدل‌های نقش-مبنا (RBAC)
  • مدل امنیتی وب
    • امنیت نرم‌افزارهای کاربردی تحت وب (sql, XSS, CSRF)
    • مدیریت نشست های تحت وب (Cookies)
    • مفاهیم رمزنگاری متقارن و نامتقارن
    • کدهای احراز صحت پیام و توابع درهمساز
    • امنیت اطلاعات وب در حین تبادل (Https/SSL)
    • مکانیزم‌های دفاعی سمت مرورگر (SOP, CSP, CORS)
  • امنیت شبکه
    • تهدیدات امنیتی در پروتکل های شبکه (etc, routing, BGP, DNS, TCP)
    • ابزارهای دفاعی در شبکه (etc, IDS, VPN, Firewall)
    • حملات منع سرویس و راهکارهای دفاعی
    • محاسبات با اعتماد (Trusted Computing) و SGX
  • امنیت سیستم
    • نحوه‌ی اجرای نرم‌افزارها و تعاملات آن‌ها با سیستم و نقاط ضعف
    • حملات و روش‌های دفاعی (control hijacking)
    • مدیریت امن کدهای قدیمی در حال استفاده (جعبه شنی، مجازی سازی، ایزوله سازی در لایه های مختلف)
    • روش‌های موجود برای توسعه امن کد (تحلیل ایستا، تحلیل پویا)
    • روش‌های نقض امنیت و Fuzzing
  • امنیت موبایل
    • امنیت سکوهای موبایل (iOS, Android)
    • تهدیدات در حوزه موبایل

ارزیابی

  • تمرین‌ و پروژه: ۶ نمره
  • آزمون‌ پایانی: ۱۴ نمره

منابع

  1. Matt Bishop. Computer Security. Addison-Wesley, 2017.
  2. John Erickson. The Art of Exploitation 2nd Edition, No Starch Press, 2008.
  3. Robert C. Seacord. Secure Coding in C and C++. 2nd Edition, Pearson Education, 2005.
  4. A. Sotirov. Bypassing Browser Memory Protections. 2008.
  5. T. Garfinkel. Traps and Pitfalls: Practical Problems in System Call Interposition Based Security Tools. NDSS, 2003.
  6. Adam Barth, Collin Jackson, and John C. Mitchell. Securing Browser Frame Communication. Usenix, 2008.
  7. Adam Barth, Collin Jackson, Charles Reis, and the Google Chrome Team. The Security Architecture of the Chromium Browser. 2008.
  8. Bortz et al. Origin Cookies: Session Integrity for Web Applications. 2011.
  9. Enck, Ongtang, and McDaniel. Understanding Android Security. 2009.
  10. Allan Tomlinson. Introduction to the TPM: Smart Cards, Tokens, Security and Applications. 2008.
  11. Andrew Baumann, Marcus Peinado, and Galen Hunt. Shielding Applications from an Untrusted Cloud with Haven. OSDI 2014.