امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا
DESCRIPTION
Software Security & Secure Software Engineering. امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا. فهرست مطالب. مقدمه ای بر LBS. سیاست های ایمنی و تحلیل آن. امن کردن زبان های برنامه سازی. کامپایلر های خبره و تصدیق گر کد ها. روش های امن سازی انواع داده ای( Data Type ). - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/1.jpg)
امنیت مبتنی بر زبان های برنامه سازی
مهران علیدوست نیا
Software Security & Secure Software Engineering
![Page 2: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/2.jpg)
2
فهرست مطالب
LBSمقدمه ای بر سیاست های ایمنی و تحلیل
آنامن کردن زبان های برنامه سازی
کامپایلر های خبره و تصدیق گر کد ها Dataروش های امن سازی انواع داده ای)
Type)
![Page 3: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/3.jpg)
3
به دالیل زیر زبان های برنامه سازی یک ابزار قوی جهت تامین امنیت نرم افزار است:
طراحی زبان های برنامه سازی امن تر•جلوگیری از تولید برنامه های مخرب در •
زمان کامپایل و پیش از اجرابازنویسی کد های برنامه•بازرسی و بازبینی برنامه ها•
چرا زبان های برنامه سازی؟
![Page 4: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/4.jpg)
4
فقط کافی است تصور کنید که یک برنامه باداشته باشیم. خط کد 20.000.000
1000 مختلف دنیا بر نقطه 100از برنامه نویسروی آن کار کنند.
این کامپیوتر 100.000.000و در نهایت رویبرنامه اجرا شود و یا دست کم این تعداد کامپیوتر در
اجرای آن نقش داشته باشند در حالی که هر یک خط از برنامه می تواند تاثیرات
دلخواه داشته باشد! این ها همه در شرایطی است که حداقل امتیازات
مورد نیاز را در اختیار برنامه قرار می دهیم!
چرا زبان های برنامه سازی )ادامه(
اصالح کدها در تامین امنی:ت ت:ا چ:ه ح:د می
تواند مفید باشد؟!!
![Page 5: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/5.jpg)
5
دیدگاه های مختلف امنیت در سیستم های رایانه ای:
( سخت افزارHardware)(سیستم عامل و کرنلOS)( زبان های برنامه سازیPL)( نرم افزارSoftware)
چرا زبان های برنامه سازی )ادامه(
![Page 6: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/6.jpg)
6
الزمه برقراری امنیت در زبان های برنامه سازی اطمینان از اجرای یک سری قوانین
است.( ایجاد سیاست های ایمنیSafety Policy)هر سیستمی در ابتدا به یک سری قوانین نیاز داردقانون گذار و اجرا کننده قانون وظیفه قانون گذار وضع قوانین درست و وظیفه
مجری، اطمینان از اجرای کامل قوانین است
امنیت در سطح زبان های برنامه سازی
![Page 7: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/7.jpg)
7
جلوگیری از وقوع رخداد های بدسرویس های حیاتی سیستم غیر فعال شودنشت اطالعات محرمانهاطالعات مهم سیستمی آسیب ببینندسیستم برای شکستن کپی رایت استفاده شود... و
اهداف سیاست های ایمنی
![Page 8: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/8.jpg)
8
در این قسمت می بایست به این سواالت پاسخ دهیم:
یک سیاست ایمنی چگونه بیان می شود؟•کدام سیاست ها قابل تعریف هستند؟•چه چیزهایی اجرای سیاست های ایمنی را •
ضمانت می کند؟به چه چیزهایی می توان اعتماد کرد؟•اجبار به اعمال سیاست های ایمنی چگونه انجام •
می گیرد؟
Safetyسیاست های ایمنی )Policy)
![Page 9: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/9.jpg)
9
عملیات خواندن داده ها و سیاست ایمنی: •ارسال آن به طور هم زمان انجام نشود!
بیان سیاست های ایمنی در سطوح •مختلف
در سطح کد•void safesend(){if(disk_read) die();…}
یک سیاست ایمنی چگونه بیان می شود؟
![Page 10: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/10.jpg)
10
در سطح منطقی• states s. read(s) (forever(not(send)))(s)
در سطح آتوماتا •
یک سیاست ایمنی چگونه بیان می شود؟)ادامه(
S Xsend
sendreadread
![Page 11: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/11.jpg)
11
کدام سیاست ها قابل تعریف هستند؟
safety properties
Information Flow
liveness properties“bad thing never happens”
ارسال بعد از خواندن، قفل کردن درخواست مجدد، تخطی از محدودیت منابع
“good thing eventually happens” محرمانگی در برابر درستی در اجراآزاد کردن منابع در بند، اجرای درخواست ها
فقط سطو:ح دسترسی کافی نخواهد بود
![Page 12: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/12.jpg)
12
انواع رویکرد ها در اجرای سیاست های ایمنی (Enforcement)(آنالیز ایستاStatic Analysis قبل از اجرای :)
برنامه(آنالیز پویاDynamic Analysis در هنگام اجرای :)
برنامه(آنالیز پس از اجراpost-mortem Analysis)
دانستن در مورد شکاف ها بهتر از هیچی است!!!
چگونگی اجرای سیاست های ایمنی
![Page 13: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/13.jpg)
13
اجزایی از سیستم که شکست آنها باعث به خطر افتادن امنیت کل سیستم می شود:
TCB یک سیستم عامل شامل کرنل، سیستم محافظت از حافظه و مدیریت دیسک است.
یکی از چالش ها انتخاب سایزTCB با توجه به کاربرد موجود است.
Trusted Computing Base (TCB)
![Page 14: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/14.jpg)
14
TCBکوچک یا بزرگ؟
TCB بزرگ و پیچیده خطر وجود باگ ها در سیستم را افزایش داده و همچنین سیستم را
ممکن است با مشکالت امنیتی روبرو سازدTCB ساده و کوچک می تواند راحت تر تست و
چک شود و قابلیت اطمینان بیشتری را ایجاد می کند.
TCBاندازه
![Page 15: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/15.jpg)
15
به چه کد هایی می توان اعتماد کرد؟ قابلیت اعتماد یعنی اینکه تا چه اندازه می توان به
درستی کد ها اطمینان داشت. همواره حداقلی برای اعتماد به کد ها در نظر
گرفته می شود. اصل اعتماد: هر چه کمتر اعتماد کنیم امنیت
سیستم باالتر خواهد بود. راه حل کلیدی داشتن کامپایلر های امن با قابلیت
اعتماد باال میباشد.
قابلیت اعتماد
![Page 16: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/16.jpg)
16
Least Privileges هر قسمت برای اجرای درست عملیات خود می
بایست یکسری امتیازات جهت دسترسی به منابع و امکانات سیستم داشته باشد.
در بعد سیستم عامل این اختیارات به صورتدر اختیار کاربران قرار می گیرند.دانه درشت
در زبان های برنامه سازی مدرن این سطوح زبان مربوط، انواع داده ایامنیتی با توجه به
مدلسازی و اجرا می شوند.
امتیازات حداقلی
![Page 17: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/17.jpg)
17
پیش از اجرا: شامل آنالیز کد، رد کردن کد وبازنویسی
( در حال اجرا: بازرسی، الگ، ایستhaltو تغییر )( پس از اجرا: باز گرداندن به عقبroll back ،)
( restoreبازرسی، بازیابی کردن )
بهترین زمان برای اعمال سیاست ها؟
![Page 18: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/18.jpg)
18
مقادیر پیاده سازی شده توسط برنامه، به طور مرeبوط به آن زبان بستگی دارد.DTمستقیم به
ADT انواع داده ای که فقط به وسیله یک سری :واسط های خاص مورد دسترسی قرار می گیرند.
انواع داده ای می توانند از داده های ذخیره شده(.Private Dataداخلی خود محافظت نمایند )
Type Safety
![Page 19: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/19.jpg)
19
امنیت انواع داده ای به سه طریق قابل اجرا خواهند بود:در زمان اجرا( در زمان کامپایلML)( به طور تلفیقیJAVA)
Type Safety
![Page 20: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/20.jpg)
20
In-line Referenced Monitor (IRM)Typed Assembly Language (TAL)Proof-carrying Code (PCC)Certifying compilation
آنالیز ایمنی
![Page 21: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/21.jpg)
21
مشاهده اجرای یک برنامه و ایست برنامه در صورت نقض سیاست های ایمنی
مثال :حفاظت از حافظهکنترل سطح دسترسیدیوار آتش... و
Referenced Monitor
![Page 22: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/22.jpg)
22
سیستم عامل نمی تواند RMنکته مهم اینجاست که همه وقایع سیستم را مورد ارزیابی و بازرسی قرار
دهد!نیاز به یک مفسر برای اجرای دینامیک داردکارایی را به نوبه خود کاهش می دهد بیشتر مکانیزم های موجود جهت اجرای سیاست
استفاده می کنند.RMهای ایمنی از در نهایت مونیتور ها در دستورات ادغام می
گردند.
Referenced Monitor
![Page 23: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/23.jpg)
23
Referenced Monitor
Extension
EMBase system
Reference monitorEM
Extension
Base system
InterpreterExtension
Base system
EM
Program instrumentation
![Page 24: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/24.jpg)
24
RM را ببیند و در نتیجه نمی گذشته فقط می تواند ها را نیز اجرا نماید.liveness policyتواند
برای مثال محاسبه اینکه چه موقعی سیستم باید( قرار گیرد.haltبه طور دقیق در حالت ایست )
در این موقع بحثSoftware Fault Isolation (SFI) مطرح می گردد.
فضای کامپوننت های نرم افزاری را در هماننگه می دارد در این شرایط آدرس سخت افزاری
برنامه ها می توانند از کد های نا امن بدون ایجاد سربار حفاظت از حافظه استفاده کنند.
Inlined Reference Monitor
![Page 25: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/25.jpg)
25
:ایده- ادغام یک سری سیاست های ایمنی دلخواه در کد
های نا مطمئن در زمان اجرا:نتایج حاصله
اجرا سربار- کاهش - سیاست های ایمنی می توانند متناسب با
برنامه های کاربردی و حتی متناسب با خصوصیاتکاربران خاص اعمال شوند. )با توجه به اینکه در
سطح کرنل و یا سیستم عامل عمومی و کلی تعریف میشدند(
Inlined Reference Monitor
![Page 26: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/26.jpg)
26
ایمنی حافظه نداشتن مشکالتی از قبیل کد های خود اصالح گر
(self-modifying Codes ) ( نداشتن مشکالت پرش های غیر منطقیWild
Jumps )-Typeجاوا به عنوان یک زبان برنامه نویسی
Safe های به حافظه اشاره گر برنامه ها نمی توانند از
را جعل کنند. فیلد ها و متد های خصوصی هر شی فقط
توسط همان شی مورد دسترسی قرار می گیرند.
-Typeزبان های برنامه سازی Safe
![Page 27: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/27.jpg)
27
بر 1998سابقه استفاده از آن به سال می گردد.
دو ایده در ایجادTAL: در خالص شدن ا:ز شر کامپایلر ها یا مفسر ها
پروسه اعمال سیاست های ایمنی فراهم کردن( نوع داده کلیGeneric Data Type )
برای کد کردن انواع داده های سیستمی سطح باال
بیت اینتل قابل 32در عمل بر روی پردازند های استفاده می باشد.
TAL
![Page 28: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/28.jpg)
28
Review on JVM
![Page 29: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/29.jpg)
29
Type-Based Protection (JVM)
Java Source
javac
JVM bytecodes
JVM verifier System Interface
Binary
JIT compiler
SystemBinary
JVMInterpreter
Trusted Computing Base
![Page 30: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/30.jpg)
30
Ideal
Your favoritelanguage
Low-Level IL)SSA(
optimizer
machine code
verifier System Interface
SystemBinary“Kernel”
TAL در عمل بسیار شبیه JVM عمل می کندCLRو حتی
![Page 31: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/31.jpg)
31
Proof-Carrying Code (PCC)
Your favoritelanguage
Low-Level IL
optimizer
machine code
verifier SecurityPolicy
SystemBinary
trusted computing base
پیدا کردنProof ها سخت است
اماverify کردن آنها راحت است!
![Page 32: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/32.jpg)
32
Certifying Compiler
Source
Certifying Compiler
VC Generator
VC
Native Code
Annotations
Proof
VC
Axioms & Rules
Proof Generator
Axioms & Rules
Proof Checker
VC Generator
Code Producer Code Consumer
![Page 33: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/33.jpg)
33
کامپایلر هایی که به طور اتوماتیکPCC را تولید می کنند
VC در معماری قبل :Verification Condition ایمنی کد را پیش بینی می نماید.
VC Generator شرایط تصدیق یک کد را تولید می :کند.
Proof تصدیق هایی که امنیت هر کد را تضمین :می نماید.
بیت اینتل قابل 32در عمل بر روی پردازند های استفاده می باشد.
Certifying Compilers
![Page 34: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/34.jpg)
34
PCCمزایای
Type-specialized PCC Foundational PCC
- Relies on VCgen- First-order logic- Built-in understanding of systems- Large (~23000 LOC in Cedilla Systems)
- No VCgen- Higher-order logic- Allows novel type system or safety arguments- Minimal proof checker(2700 LOC)
![Page 35: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/35.jpg)
35
رویکرد سخت افزاریهدف: باال بردن سرعت
پردازشایده: افزایش سرعت
با یک سری Proofعملیات طراحی سخت افزاری
اعمال سیاست های گانه با 4ایمنی در چرخه
استفاده از پیاده سازی HDLروی سخت افزار
نتیجه: باال رفتن سرعت Proof
رویکرد های دیگر
![Page 36: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/36.jpg)
36
زبان های مکملهدف: تضمین یک سری
شروط پیش از اجرای هر بالک از کد ها
ایده: باال بردن قابلیت های ایمنی در اجرای
کدها و تضمین شروط SFI
تعریف یک سری دستورات مکمل جهت باال
بردن انعطاف برنامه نویسی با رویکرد امنیتی
رویکرد های دیگر
![Page 37: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/37.jpg)
37
Java Modeling Language
است که متد های اعمال رفتارگرایک زبان رابط ها را در کد های برنامه قبل و یا بعد از شرط شده
توصیف می کند. و سیاست requiresمتدهای پیش شرط با عبارت
ها بیان می گردند. ensuresهای ایمنی در قالب
JMLزبان مدلسازی جاوا
![Page 38: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/38.jpg)
38
یک مثال ساده
class Stack{ private int L=0;int b[]=new int [20];
public void push (int x){b[L++]=x;
}public int pop)(
{ int y=0;
y=b[--L]; return y;
}//}end of class
public class Implement{public static void main(String args[]){
Stack st=new Stack;)(st.push(2);st.push(3);
int n=st.pop;)(System.out.println(n);
.…//}end of main//}end of class
class Stack {private int L=0;Int b[]=new int [20];/*@ normal behavior
@ requires L>0;
@ ensures (\result) >= 2
| |
@ (\result) <= 18
@*/
public void push (int x){
b[L++]=x;}public int pop (){
int y=0;y=b[--L];return y;
}}//end of class
![Page 39: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/39.jpg)
39
کامپایلر هایی که وظیفه تولید کد ها تحت شبکهرا دارند.
ایده: اجرای کد های امن در بستر شبکهابزار مورد استفادهامنیت برای تولید کننده و مصرف کننده :راه حلTrusted Compilers
کامپایلر شبکه
ProducerTrusted
Compiler Consumer
![Page 41: امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا](https://reader036.vdocument.in/reader036/viewer/2022082215/56815ee7550346895dcd92b3/html5/thumbnails/41.jpg)
41
[1] B. Schneider, D. Kozen, G. Morrisett, and A. C. Myers, Language-based security for malicious mobile code. In Department of Defense Sponsored Information Security Research: New Methods for Protecting against Cyber Threats, pages 477-494.Wiley, 2007.[2] M.Warnier, Language Based Security for Java and JML, PhD thesis, Radboud University Nijmegen, 2006.[3] D.Kozen. Language-based security, Proc. Conf. Mathematical Foundations of Computer Science (MFCS'99), volume 1672 of Lecture Notes in Computer Science, pages 284-298. Springer-Verlag, September 1999.[4] M. Bartoletti, Static analysis for Java security. Master Thesis, 2001.[5] M. Bartoletti, G. Costa, P. Degano, G. L. Ferrari, F. Martinelli and R. Zunino, Securing Java with local policies, In Workshop on Formal Techniques for Java-like Programs, 2008.[6] K. Marriott, P. J. Stuckey, and M. Sulzmann, Resource usage verification, In Proc, First Asian Programming Languages Symposium, 2003.[7] D. Grossman, Overview of Language-Based Security, 2008.[8] E. Love, Y. Jiny, Y. Makris, Proof-Carrying Hardware Intellectual Property: A Pathway to Trusted Module Acquisition, IEEE Transactions on Information Forensics and Security - Part 1 Volume 7 Issue 1, February 2012.
منابع