شیوه ارائه - نیمسال اول 9596 - خانم مریم نوری - عنوان مهندسی نرم افزار امن
مهندسی نرم افزار امن
چکیده
در مهندسی نرم افزار روشی ارائه میشود تا نرم افزار تولید شده درست ، منظم و امن باشد.امنیت یکی از اساسی ترین اهداف تولید نرم افزار میباشد امروزه ارزیابی امنیت در پورتهای شبکه نیست بلکه دررفتار یه نرم افزار در محیط عملیاتی در قبال اطلاعات کاربران است در محیط امروزی حفظ هویت و اطلاعات کاربران از اهمیت بالایی برخردار است اگر نرم افزار تولید شده از درجه امنیت پایینی برخردار باشد ان نرم افزار کاربردی ندارد بسیاری از تولید کنندگان نرم افزار فقط به تست نفوذ بسنده میکند در صورتی ک ارزیابی امنیت عمیق تر از یه تست ساده نفوذ باید باشد امنیت نرم افزار به این معنا است که در مرحله توسعه نرم افزار کد امن یکپارچه ای جهت جلوگیری از اسیب پذیری ب کار رفته باشد تا نرم افزار در مراحل مختلف مثل تستها اسیب پذیری ،اسکن نرم افزار، را به درستی بگذراند.مهم ترین تفاوت که بین نرم افزارهای امن و نامن وجود دارد در ساختار فرایندها و شیوه مورده استفاده برای تعیین طرح و توسعه قرار دارد
کلمات کلیدی
امنیت ،مهندسی نرم افزار
مهندسی نرم افزار امن
مریم نوری
دانشجو کارشناسی رشته نرم افزار،دانشگاه فناوری های نوین قوچان
Noori_maryam1160@yahoo.co
چکیده
در مهندسی نرم افزار روشی ارائه میشود تا نرم افزار تولید شده درست ، منظم و امن باشد.امنیت یکی از اساسی ترین اهداف تولید نرم افزار میباشد امروزه ارزیابی امنیت در پورتهای شبکه نیست بلکه دررفتار یه نرم افزار در محیط عملیاتی در قبال اطلاعات کاربران است در محیط امروزی حفظ هویت و اطلاعات کاربران از اهمیت بالایی برخردار است اگر نرم افزار تولید شده از درجه امنیت پایینی برخردار باشد ان نرم افزار کاربردی ندارد بسیاری از تولید کنندگان نرم افزار فقط به تست نفوذ بسنده میکند در صورتی ک ارزیابی امنیت عمیق تر از یه تست ساده نفوذ باید باشد امنیت نرم افزار به این معنا است که در مرحله توسعه نرم افزار کد امن یکپارچه ای جهت جلوگیری از اسیب پذیری ب کار رفته باشد تا نرم افزار در مراحل مختلف مثل تستها اسیب پذیری ،اسکن نرم افزار، را به درستی بگذراند.مهم ترین تفاوت که بین نرم افزارهای امن و نامن وجود دارد در ساختار فرایندها و شیوه مورده استفاده برای تعیین طرح و توسعه قرار دارد
کلمات کلیدی
امنیت ،مهندسی نرم افزار
تعریف مهندسی نرم افزار
مهندسی نرم افزار یه روش درست و منظم برای تولید یک محصول نرم افزاری با کیفیت که قابل اطمینان و کم هزینه است که از این نرم افزار تولید شده به این روش بتوان برروی سیستم ها بکربرد
تعریف امنیت نرم افزار
امنیت نرم افزار به این معنا است که در مرحله توسعه نرم افزار کد امن یکپارچه ای جهت جلوگیری از اسیب پذیری ب کار رفته باشد تا نرم افزار در مراحل مختلف مثل تستها اسیب پذیری ،اسکن نرم افزار، را به درستی بگذراندامروزه بررسی امنیت تنها در پورتهای شبکه نیست بلکه کاوش در رفتار نرم افزار به عنوان بخش اصلی و بحران از یک سیستم بیشتر اهمیت دارد که ایا این نرم افزار تولید شده قابل اطمینان است یا خیر. مهم ترین تفاوت که بین نرم افزارهای امن و نامن وجود دارد در ساختار فرایندها و شیوه مورده استفاده برای تعیین طرح و توسعه قرار دارد
علل موثر بر کاهش امنیت نرم افزار
ü ارتباط ضعیف نرم افزار در اجرای موفق امیز سیستم های نرم افزاری
ü حجم نرم افزار و پیچیدگی آن مانع از اجرای آزمون جامع
ü فریبندگی و پیچیدگی روز افزون نرم افزارها
ü اتخاذ فرایندها و شیوه ها مورده استفاده در طراحی نرم افزار
ü محیط های عملیاتی
ü اتصال ب اینترنت
ü بروزرسانی ها
ü استفاده همزمان از چند نرم افزار مشابه
نرم افزاری که ب صورت امن تهیه شده باشد در تمام مراحل دارای ویژگی های زیر است:
ü اجرای قابل پیش بینی
یعنی نرم افزار در هنگام اجرا کاملا با انتظارات که از ان می رود مطابقت داشته باشد
ü امانت
ب حداقل رساندن اسیب پذیری نرم افزار تا حد ممکن و جلوگیری از تغییر اهداف
ü 3.مطابقت
نرم افزار تولید شده مطابق با استانداردها قابل اجرا و همجنین مناسب برای استفاده کاربر باشد
امنیت و چرخه حیات محصولات نرم افزاری
پایبندی نرم افزارها به یک مدل فرایند تولیدخاص، امنیت نرم- افزار را از نظر مصون بودن از آسیب پذیری های امنیتی ناخواسته تضمین نمی کند.
اگرچه احتمال ساخت نرم افزارهای امن با پیروی سازمانهای سازنده از قواعد مهندسی نرم افزار با تاکید بر طراحی خوب و کیفیت خوب شامل گذراندن محصول از پروسه های بازرسی ، مرور و استفاده از متدهای تست، استفاده مناسب از مفاهیم مدیریت ریسک، مدیریت پروژه و مدیریت نیروی انسانی بیشتر می شود.
امنیت محصولات نرم افزاری
اطمینان در نرم افزار (Software Assurance: SwA): اطمینان در نرم افزار به معنای عاری بودن محصول نرم افزاری از آسیب پذیری های تعمدی و یا اتفاقی است که در هر مرحله از چرخه حیات یک محصول نرم افزاری به آن تزریق شده باشد.
اطمینان از امنیت محصول نرم افزاری (Security Assurance): فرایندی (فعالیت ها، روش ها، یا روال ها) که طی آن نیازهای امنیتی یک محصول نرم افزاری تضمین و برآورده شود.
اطمینان از امنیت محصول نرم افزاری عموما شامل راهکارهایی برای هریک از فازهای چرخه حیات نرم افزار از مهندسی نیازها تا نگهداری می شود.
چرخه حیات توسعه امنیت محاسباتی قابل اطمینان مایکروسافت
(SDL)
Microsoft’s Trustworthy Computing Security Development Lifecycle
فرایندی است که شرکت مایکروسافت برای توسعه نرم افزارهایی که نیاز به پایداری در برابر حملات امنیتی دارند مورد پذیرش قرار داده است.
این فرایند مجموعه ای از فعالیت ها در سطوح امنیتی و راه حل ها را برای هریک از فازهای فرایند توسعه نرم افزاری مایکروسافت اضافه نموده است.
این فعالیت ها شامل مدل سازی تهدیدها (Threat Modeling) به منظور شناخت ریسک های امنیتی در خلال فاز طراحی (Design)، استفاده از ابزارهای تحلیلی برای اسکن کد و مرور کد در فاز پیاده سازی (Implementation) و تکنیک های تست محصول در فاز تست و کنترل می باشد.
سه روش مکمل برای بهبود امنیت در سیستم تولید نرم افزار
اجتناب از خطر:
سیستم ب گونه ای طراحی شود ک با خطر مواجه نشود
تشخیص و رفع خطر:
سیستم ب گونه ای طراحی شود که خطرات قبل از منجر شدن ب سانحه تشخیص و خنثی شود
محدود کردن خسارت:
سیستم به گونه ای طراحی شود که پیامدهای سانحه ب حداقل برسد
راهکارهای تولید نرم افزار امن
ساخت یک مورد تضمینی امن
SDLCگنجاندن موارد تضمین در
امنیت تضمین و تلاش در جهت پیروی از آن
نگهداری و بهره برداری از موارد تضمینش
ضوابط مشترک
قوانین و ائین نامه امنیتی،حفظ حریم شخصی کاربران
1.Noopur Davis.“Secure Software Development Life Cycle Processes” .Retrieved from: https://buildsecurityin.us-cert.gov/bsi/articles/knowledge/sdlc/326-BSI.html. Software Engineering Institute. 2006-07-05; Updated (2012).
2. The SANS Institute. “The Twenty most Critical Internet Security Vulnerabilities-The Expert Consensus” (2005).
3. Mills, E. “Secure Software? Experts Say it’s no longer a Pipe Dream” CNET News, April 20, (2009).
4. Redwine, S. T. & Davis, N. “Processes to Produce Secure Software. Improving Security Across the Software Development Lifecycle” (National Cyber security Partnership Taskforce Report), Appendix B. http://www.cyberpartnership.org/init-soft.html (2004).
5. Paulk, M., Curtis, B., Chrissis, M. B. & Weber, C. “Capability Maturity Model for Software (Version 1.1)” (CMU/SEI-93-TR-024, ADA263403). Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, (1993).
6. “The Software Development Life Cycle (SDLC)”. Retrieved from: http://www.stylusinc
.com/BI/ thought- leadership/it-outsourcing/the-software-development-life-cycle-sdlc/.
7.مقاله مهندسی نرم افزار امن :اقای علی خلج مدرس دانشگاه ازاد واحد کرج
8.جزوه مهندسی نرم افزار امن استاد کاویانی استاد دانشگاه شریعتی تهران
- ۹۵/۱۰/۱۰