سلام.
در معرض خطر قرار گرفتن یک سیستم می تونه عواقب زیادی در پی داشته باشه و امنیت فرد یا افرادی (حقیقی / حقوقی) رو به مخاطره بندازه. چنین خطراتی میتونه منجر به نابودی یک محصول، از دست رفتن اعتماد مشتری و همچنین سرمایه های مادی و معنوی صاحبان اون محصول بشه.
برای ایجاد یک محیط ایمن باید امنیت فیزیکی، امنیت نرم افزار، سیستم عامل و تجهیزات شبکه و در نهایت امنیت سیاست ها و رویه های جاری در توسعه نرم افزار مد نظر قرار داده بشه. ما نمی تونیم در حالیکه سرورهای ما در دسترس کلیه کارمندان شرکت هستش، ادعا کنیم که سیستم نرم افزاری ایمنی داریم. همچنین، نمی تونیم سرورها رو پشت درهای بسته قرار بدیم، اما رخنه های امنیتی موجود در اونها هنگام دسترسی از راه دور رو نادیده بگیریم.
حفظ ایمنی نرم افزار، گستره وسیعی از تکنولوژی ها، روش ها، نگرش ها و ... رو در بر می گیره، اما بطور کلی، برای حفظ امنیت یک سیستم، باید چند قاعده اصلی رو همواره مد نظر قرار داد:
- مهاجم تقریبا همواره بر (مدافع) برتری داره، چرا که ما بعنوان مدافعین باید از تمامی نقاط محافظت کنیم، اما مهاجم دنبال ضعیف ترین نقطه در سیستم هستش تا بتونه به اون نفوذ کنه. به همین دلیل، ایمنی رو می تونیم زنجیره ای از حلقه ها تصور کنیم که توان این زنجیره به میزان توان ضعیفترین حلقه هستش: هرگاه حلقه ای باز بشه، کل زنجیره از هم گسسته خواهد شد.
- مدافع فقط می تونه در برابر حملات شناخته شده دفاع کنه، اما مهاجم می تونه همواره بدنبال رخنه های ناشناخته در سیستم باشه.
- مداقع همواره باید به هوش باشه، اما مهاجم بر اساس تمایل خودش میتونه یک سیستم رو مورد حمله قرار بده.
- مداقع باید بر اساس قوانین از سیستم دفاع کنه، اما مهاجم میتونه کلیه قوانین رو نادیده بگیره.
امروز و در این گفتگو، در خدمت آقای مهدی عسگری هستیم تا در مورد این گستره وسیع با یکدیگر گفتگو کنیم و با اصول و قواعد ایمنی در توسعه نرم افزار، آشنا بشیم.
آقای عسگری، ضمن عرض سلام و خسته نباشید، پس از معرفی اجمالی خودتون، لطفا "ایمنی" رو بعنوان یک واژه عام تعریف کنید و بفرمایید چرا باید اونو به چشم یک فرهنگ با آداب و سلوک خودش دید؟