امنیت در معماری نرم افزار

Download Report

Transcript امنیت در معماری نرم افزار

Software Security & Secure Software Engineering
‫امنیت در معماری نرم افزار‬
‫اصغر توکلی‬
‫فهرست مطالب‬
‫• تعریف معماری نرم افزار‬
‫• جایگاه امنیت در معماری نرم افزار‬
‫• مراحل مدل سازی تهدید ها‬
‫• الگوهای امن در معماری نرم افزار‬
‫‪2‬‬
‫معماری نرم افزار‬
‫‪ ‬معماری نرم افزار‬
‫‪‬ساختاری از سیستم که شامل‬
‫مولفه های سیستم ‪،‬‬
‫ویژگی های قابل مشاهده آنها در‬
‫سطح سیستم و‬
‫روابط بین آنها می باشد‬
‫‪ ‬به معماری نرم افزار طراحی سطح باال‬
‫)‪ (top-level design‬نیز می گویند‬
‫‪Architecture‬‬
‫‪component‬‬
‫‪component‬‬
‫‪relations‬‬
‫‪component‬‬
‫‪3‬‬
‫معماری نرم افزار‬
‫‪ ‬ذینفعان )‪(stakeholders‬‬
‫‪‬افراد و گروه هایی که در ساخته شدن یک نرم افزار سهم دارند‬
‫‪‬هر کدام از ذینفعان مایلند که معماری نرم افزار نگرانی ها و دغدغه های آنها را‬
‫بیشتر پوشش دهد‬
‫‪‬معماری نرم افزار ابزاری برای ارتباط بین ذینفعان است‬
‫‪4‬‬
‫خریدار‬
‫تیم پشتیبانی‬
‫کاربر‬
‫بازاریابی‬
‫کارایی ‪،‬‬
‫امنیت‬
‫تحویل به‬
‫موقع‪ ،‬عدم‬
‫تغییر پذیری‬
‫هزینه کم ‪،‬‬
‫رقابت با نمونه‬
‫های موجود‬
‫تغییرپذیری‬
‫تیم توسعه دهنده‬
‫نرم افزار‬
‫هزینه کم ‪،‬‬
‫استفاده از‬
‫برنامه نویسان‬
‫موجود‬
‫معمار‬
‫‪5‬‬
‫معماری نرم افزار‬
‫‪Architecture Business Cycle ‬‬
‫‪‬معماری نرم افزار نتیجه یک سری تاثیرات فنی ‪ ،‬اقتصادی و محیطی بر برنامه‬
‫است‬
‫‪‬معماری نرم افزار خود بر روی تمامی این موارد تاثیر می گذارد‬
‫‪‬در آینده این تاثیرات خود به معماری های آتی منتقل می شود‬
‫‪6‬‬
‫معماری نرم افزار‬
‫‪ ‬محیط فنی‬
‫‪ ‬شامل تکنیک های مهندس ی نرم افزار شایع و فراگیر در محیط فعلی که معمار در‬
‫آن حضور دارد‬
‫‪ ‬تجربه معمار‬
‫‪ ‬تجربیات موفق آمیز در آینده تکرار می شود‬
‫‪ ‬تجربیات ناموفق با احتمال کمتری در آینده تکرار خواهد شد‬
‫‪7‬‬
‫‪Architecture Business Cycle‬‬
‫معماری‬
‫سیستم‬
‫تیم توسعه‬
‫دهنده‬
‫ذینفعان‬
‫تجربه معمار‬
‫محیط فنی‬
‫معمار‬
‫‪8‬‬
‫معماری نرم افزار‬
‫‪Pipe & Filter‬‬
‫‪Pipe & Filter ‬‬
‫‪‬دریافت ورودی در نقاط پردازش ی )‪ (filters‬از خروجی قسمت قبل‬
‫‪‬ارسال داده های بین نقاط پردازش ی توسط کانال ها )‪(pipes‬‬
‫‪‬نقاط پردازش ی مستقل‬
‫‪‬نگهداری و استفاده مجدد‬
‫‪Data‬‬
‫‪Sink‬‬
‫‪pipe‬‬
‫‪Filter‬‬
‫‪pipe‬‬
‫‪Filter‬‬
‫‪pipe‬‬
‫‪Source‬‬
‫‪Date‬‬
‫‪9‬‬
‫معماری نرم افزار‬
Pipe & Filter
Inputs
Unix ‫ خط لوله در‬- ‫ مثال‬
cat A.txt B.txt | sort | gzip | mail
Processes
A.txt
cat
B.txt
10
sort
gzip
mail
‫امنیت در معماری نرم افزار‬
‫ جایگاه امنیت در معماری نرم افزار‬
Security
Architecture
component
component
relations
component
11
‫امنیت در معماری نرم افزار‬
‫‪ ‬مدل سازی تهدید‬
‫‪‬فرآیندی برای کمک به مدل کردن امنیت برنامه‬
‫‪‬استخراج نقص ها و آسیب های بالقوه موجود در برنامه قبل از سرمایه گذاری‬
‫بر روی آنها‬
‫‪12‬‬
‫مراحل مدل سازی تهدید ها‬
‫‪ ‬چرخه فرآیند مدل سازی تهدید‬
‫‪‬اضافه کردن جزئیات بیشتر با پیش‬
‫رفتن در حلقه ساخت برنامه‬
‫‪‬تشخیص منابع کلیدی‬
‫‪‬بررس ی و تصحیح مجدد‬
‫‪ .1‬تعیین اهداف‬
‫امنیتی‬
‫‪ .2‬ساخت‬
‫نمای اولیه‬
‫برنامه‬
‫‪ .5‬تعیین‬
‫آسیب ها‬
‫‪ .3‬شرح بیشتر‬
‫جزئیات‬
‫‪ .4‬مدل سازی‬
‫تهدیدها‬
‫‪13‬‬
‫مراحل مدل سازی تهدید ها‬
‫‪ ‬مرحله اول‬
‫‪‬تعیین کردن اهداف امنیتی‬
‫‪ ‬مشخص کردن زمینه ها و باید ها و نبایدهای وابسته به ‪:‬‬
‫‪ : Confidentiality ‬جلوگیری از دسترس ی های غیر مجاز‬
‫‪ : Integrity ‬جلوگیری از تغییر غیر مجاز داده ها‬
‫‪ : Availability ‬فراهم کردن سرویس ها حتی در حضور حمله‬
‫‪14‬‬
‫مراحل مدل سازی تهدید ها‬
‫‪ ‬مرحله دوم‬
‫‪‬ساخت نمایی اولیه از برنامه‬
‫‪‬مشخص کردن کارکردها و ویژگی های برنامه به صورت کلی‬
‫‪ ‬توجه به تکراری بودن فرآیند مدل سازی تهدیدها‬
‫‪ ‬عدم توقف در انجام هر مرحله‬
‫‪ ‬تعیین هر چه بیشتر جزئیات در صورت ممکن و در سریعترین زمان‬
‫‪15‬‬
‫مراحل مدل سازی تهدید ها‬
‫‪ ‬مرحله سوم‬
‫‪‬تجزیه قسمت های برنامه‬
‫‪‬مشخص کردن موارد زیر برای تشخیص بیشتر نقاط آسیب پذیر ‪:‬‬
‫‪‬تعیین مرزهای تغییر سطح اطمینان‬
‫‪‬تعیین جریان های داده‬
‫‪‬تعیین نقاط ورود و خروج داده‬
‫‪16‬‬
User / Web server
boundry
Login request
AuthenticateUser()
Web
server
User
Login response
Login
process
Authentication
SQL query
result
&
results
Web server / Database
boundry
Database
17
‫مراحل مدل سازی تهدید ها‬
‫‪ ‬مرحله چهارم‬
‫‪‬تعیین تهدیدها‬
‫‪‬مشخص کردن تهدیدها و حمله های محتمل در برنامه‬
‫‪‬استفاده از افراد متخصص در زمینه امنیت برای لیست کردن تهدیدها‬
‫‪ ‬شروع با تهدیدها و حمله های شناخته شده‬
‫‪ ‬تعیین مواردی که قابل اعمال در برنامه هستند‬
‫‪18‬‬
‫مراحل مدل سازی تهدید ها‬
‫‪ ‬مرحله چهارم‬
‫‪‬تعیین تهدیدها‬
‫‪Misuse / Abuse Case ‬‬
‫‪ Use case ‬در ‪ UML‬برای مدل کردن کارکردهای برنامه و آنچه که برنامه بایستی‬
‫انجام دهد استفاده می شود‬
‫‪ Misuse / Abuse Case ‬برای مدل کردن مواردی که نمی خواهیم در برنامه اتفاق‬
‫بیفتد استفاده می شود‬
‫‪19‬‬
‫مراحل مدل سازی تهدید ها‬
‫‪ ‬مرحله چهارم‬
‫‪‬تعیین تهدیدها‬
‫‪Misuse / Abuse Case ‬‬
‫‪ Use case ‬شامل مواردی که کاربر و برنامه انجام می دهند‬
‫‪ Misuse / Abuse Case ‬شامل اموری است که حمله کننده )‪ (attacker‬مایل‬
‫به انجام آن است‬
‫‪ ‬ارتباط بین دو دسته از امور باال نشان دهنده تاثیرات ناش ی از عمل حمله کننده با‬
‫کارکردهای برنامه است‬
‫‪20‬‬
Username &
password
|
User
authentication
|
Threatens
Brute force
attack
|
Show error
massages
|
Lock after N
failed attempts
|
Mitigates
Mitigates
Mitigates
Mitigates
Password
complexity
21
Harwest
user accounts
|
Dictionary
attack
‫مراحل مدل سازی تهدید ها‬
‫‪ ‬مرحله چهارم‬
‫‪‬تعیین تهدیدها‬
‫‪Threat / Attack Tree ‬‬
‫‪ ‬تشخیص موارد بیشتری از تهدیدهای قابل اعمال به برنامه‬
‫‪ ‬تعیین موارد ترکیبی از تهدیدها که خطر جدیدی را ممکن است به برنامه تحمیل کنند‬
‫‪22‬‬
‫مراحل مدل سازی تهدید ها‬
‫‪ ‬مرحله چهارم‬
‫‪‬تعیین تهدیدها‬
‫‪ ‬ساخت ‪Threat / Attack Tree‬‬
‫‪ ‬قرار دادن خود به جای حمله کننده‬
‫‪ ‬تعیین موارد مورد نیاز برای انجام یک حمله‬
‫‪ ‬ساخت ریشه درخت مبتنی بر حمله مورد نظر و راهها و مراحل انجام حلمه در زیر گره ها‬
‫‪23‬‬
‫مراحل مدل سازی تهدید ها‬
Threat #1
Obtaining authentication
credentials over network
And
1.1
Clear text credentials
sent over the network
1.2
Attacker uses network
monitoring tools
1.2.1
Attacker recognize
credential data
24
‫مراحل مدل سازی تهدید ها‬
‫‪ ‬مرحله پنجم‬
‫‪‬تعیین آسیب های برنامه‬
‫‪ ‬مرور برنامه برای تعیین صریح آسیب پذیری ها‬
‫‪ ‬استفاده از تهدیدهای لیست شده در مراحل قبلی برای شناخت هر چه بیشتر آسیب‬
‫پذیری های برنامه‬
‫‪25‬‬
‫مراحل مدل سازی تهدید ها‬
Authentication
Threats
Brute force
attack
Solutions
Delaying
to
login process
vulnerabi- after every N
try
lities
26
Dictionary
attack
Network
monitoring
tools
Use
password
complexity
rules
Use
encrypted
network
links
‫الگوهای امن در معماری نرم افزار‬
‫‪ ‬الگوهای طراحی امن‬
‫‪‬الگوهای طراحی راه حل هایی برای مسائل پرتکرار در مهندس ی نرم افزار هستند‬
‫‪ ‬الگوهای طراحی امن قالب هایی برای توصیف راه حل های عمومی در مسائل امنیتی‬
‫هستند‬
‫‪ ‬تجزیه مولفه ها با رعایت ویژگی اعتماد )‪(distrustful decomposition‬‬
‫‪ ‬جدا کردن مولفه ها با توجه به حق دسترس ی )‪(privilege separation‬‬
‫‪27‬‬
‫الگوهای امن در معماری نرم افزار‬
‫‪ ‬الگوهای امن در سطح معماری‬
‫‪ ‬تجزیه اجزای بی اعتماد از یکدیگر )‪(distrustful decomposition‬‬
‫‪ ‬قرار دادن اعمال مجزا در برنامه هایی با عدم رابطه اعتماد با یکدیگر‬
‫‪ ‬کم کردن زمینه های حمله در برنامه های منفرد‬
‫‪ ‬کم کردن داده های در معرض حمله در صورت رخداد مخاطره در یکی از برنامه های‬
‫مجزا شده از لحاظ اعتماد‬
‫‪28‬‬
‫الگوهای امن در معماری نرم افزار‬
Qmial
Server
Functional
area
( Pipe &
Filter)
Remote
mail server
From local
Process A
Process A
Process B
Process B
Remote
mail server
29
To local
‫الگوهای امن در معماری نرم افزار‬
‫‪ ‬الگوهای امن در سطح معماری‬
‫‪ ‬جدا کردن مولفه ها با توجه به حق دسترس ی )‪(privilege separation‬‬
‫‪ ‬تالش برای کم کردن قسمتی از کد که با حق دسترس ی سطح باال اجرا می شود‬
‫‪ ‬قابلیت استفاده از این الگو در صورتی که برنامه شامل عملکردهای متفاوتی باشد که‬
‫بدون حق دسترس ی سطح باال اجرا شوند‬
‫‪30‬‬
‫الگوهای امن در معماری نرم افزار‬
Process
A
System service
Process
B
Privileged
Process
Process
C
Kernel
Attack surface
31
‫منابع‬
 L. Bass, P. Clements, R. Kazman, Software Architecture in
Practic, Addsion-Weisly, 2nd edition, 2003
 C. Dougherty, K. Sayer, R. Seacord, D. Svoboda, Secure
Design Patterns, Software Engineering Institute, 2009
 C. Goertzel, K. Mercedes, Software Security Assurance: A
State-of-the-Art Report , Information Assurance Technology
Analysis Center (IATAC) of the DTIC, 2011
 M. Howard, Lessons Learned from Five Years of Building
Secure Software, Microsoft Developer Network , 2011
 J.D. Meier, A. Mackman, B. Wastell, How To Create a Threat
Model for a Web Application at Design Time, Microsoft
Developer Network (MSDN), 2010
32
Thanks
And
?