امنیت در معماری نرم افزار
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
?