امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا

Preview:

DESCRIPTION

Software Security & Secure Software Engineering. امنیت مبتنی بر زبان های برنامه سازی مهران علیدوست نیا. فهرست مطالب. مقدمه ای بر LBS. سیاست های ایمنی و تحلیل آن. امن کردن زبان های برنامه سازی. کامپایلر های خبره و تصدیق گر کد ها. روش های امن سازی انواع داده ای( Data Type ). - PowerPoint PPT Presentation

Citation preview

امنیت مبتنی بر زبان های برنامه سازی

مهران علیدوست نیا

Software Security & Secure Software Engineering

2

فهرست مطالب

LBSمقدمه ای بر سیاست های ایمنی و تحلیل

آنامن کردن زبان های برنامه سازی

کامپایلر های خبره و تصدیق گر کد ها Dataروش های امن سازی انواع داده ای)

Type)

3

به دالیل زیر زبان های برنامه سازی یک ابزار قوی جهت تامین امنیت نرم افزار است:

طراحی زبان های برنامه سازی امن تر•جلوگیری از تولید برنامه های مخرب در •

زمان کامپایل و پیش از اجرابازنویسی کد های برنامه•بازرسی و بازبینی برنامه ها•

چرا زبان های برنامه سازی؟

4

فقط کافی است تصور کنید که یک برنامه باداشته باشیم. خط کد 20.000.000

1000 مختلف دنیا بر نقطه 100از برنامه نویسروی آن کار کنند.

این کامپیوتر 100.000.000و در نهایت رویبرنامه اجرا شود و یا دست کم این تعداد کامپیوتر در

اجرای آن نقش داشته باشند در حالی که هر یک خط از برنامه می تواند تاثیرات

دلخواه داشته باشد! این ها همه در شرایطی است که حداقل امتیازات

مورد نیاز را در اختیار برنامه قرار می دهیم!

چرا زبان های برنامه سازی )ادامه(

اصالح کدها در تامین امنی:ت ت:ا چ:ه ح:د می

تواند مفید باشد؟!!

5

دیدگاه های مختلف امنیت در سیستم های رایانه ای:

( سخت افزارHardware)(سیستم عامل و کرنلOS)( زبان های برنامه سازیPL)( نرم افزارSoftware)

چرا زبان های برنامه سازی )ادامه(

6

الزمه برقراری امنیت در زبان های برنامه سازی اطمینان از اجرای یک سری قوانین

است.( ایجاد سیاست های ایمنیSafety Policy)هر سیستمی در ابتدا به یک سری قوانین نیاز داردقانون گذار و اجرا کننده قانون وظیفه قانون گذار وضع قوانین درست و وظیفه

مجری، اطمینان از اجرای کامل قوانین است

امنیت در سطح زبان های برنامه سازی

7

جلوگیری از وقوع رخداد های بدسرویس های حیاتی سیستم غیر فعال شودنشت اطالعات محرمانهاطالعات مهم سیستمی آسیب ببینندسیستم برای شکستن کپی رایت استفاده شود... و

اهداف سیاست های ایمنی

8

در این قسمت می بایست به این سواالت پاسخ دهیم:

یک سیاست ایمنی چگونه بیان می شود؟•کدام سیاست ها قابل تعریف هستند؟•چه چیزهایی اجرای سیاست های ایمنی را •

ضمانت می کند؟به چه چیزهایی می توان اعتماد کرد؟•اجبار به اعمال سیاست های ایمنی چگونه انجام •

می گیرد؟

Safetyسیاست های ایمنی )Policy)

9

عملیات خواندن داده ها و سیاست ایمنی: •ارسال آن به طور هم زمان انجام نشود!

بیان سیاست های ایمنی در سطوح •مختلف

در سطح کد•void safesend(){if(disk_read) die();…}

یک سیاست ایمنی چگونه بیان می شود؟

10

در سطح منطقی• states s. read(s) (forever(not(send)))(s)

در سطح آتوماتا •

یک سیاست ایمنی چگونه بیان می شود؟)ادامه(

S Xsend

sendreadread

11

کدام سیاست ها قابل تعریف هستند؟

safety properties

Information Flow

liveness properties“bad thing never happens”

ارسال بعد از خواندن، قفل کردن درخواست مجدد، تخطی از محدودیت منابع

“good thing eventually happens” محرمانگی در برابر درستی در اجراآزاد کردن منابع در بند، اجرای درخواست ها

فقط سطو:ح دسترسی کافی نخواهد بود

12

انواع رویکرد ها در اجرای سیاست های ایمنی (Enforcement)(آنالیز ایستاStatic Analysis قبل از اجرای :)

برنامه(آنالیز پویاDynamic Analysis در هنگام اجرای :)

برنامه(آنالیز پس از اجراpost-mortem Analysis)

دانستن در مورد شکاف ها بهتر از هیچی است!!!

چگونگی اجرای سیاست های ایمنی

13

اجزایی از سیستم که شکست آنها باعث به خطر افتادن امنیت کل سیستم می شود:

TCB یک سیستم عامل شامل کرنل، سیستم محافظت از حافظه و مدیریت دیسک است.

یکی از چالش ها انتخاب سایزTCB با توجه به کاربرد موجود است.

Trusted Computing Base (TCB)

14

TCBکوچک یا بزرگ؟

TCB بزرگ و پیچیده خطر وجود باگ ها در سیستم را افزایش داده و همچنین سیستم را

ممکن است با مشکالت امنیتی روبرو سازدTCB ساده و کوچک می تواند راحت تر تست و

چک شود و قابلیت اطمینان بیشتری را ایجاد می کند.

TCBاندازه

15

به چه کد هایی می توان اعتماد کرد؟ قابلیت اعتماد یعنی اینکه تا چه اندازه می توان به

درستی کد ها اطمینان داشت. همواره حداقلی برای اعتماد به کد ها در نظر

گرفته می شود. اصل اعتماد: هر چه کمتر اعتماد کنیم امنیت

سیستم باالتر خواهد بود. راه حل کلیدی داشتن کامپایلر های امن با قابلیت

اعتماد باال میباشد.

قابلیت اعتماد

16

Least Privileges هر قسمت برای اجرای درست عملیات خود می

بایست یکسری امتیازات جهت دسترسی به منابع و امکانات سیستم داشته باشد.

در بعد سیستم عامل این اختیارات به صورتدر اختیار کاربران قرار می گیرند.دانه درشت

در زبان های برنامه سازی مدرن این سطوح زبان مربوط، انواع داده ایامنیتی با توجه به

مدلسازی و اجرا می شوند.

امتیازات حداقلی

17

پیش از اجرا: شامل آنالیز کد، رد کردن کد وبازنویسی

( در حال اجرا: بازرسی، الگ، ایستhaltو تغییر )( پس از اجرا: باز گرداندن به عقبroll back ،)

( restoreبازرسی، بازیابی کردن )

بهترین زمان برای اعمال سیاست ها؟

18

مقادیر پیاده سازی شده توسط برنامه، به طور مرeبوط به آن زبان بستگی دارد.DTمستقیم به

ADT انواع داده ای که فقط به وسیله یک سری :واسط های خاص مورد دسترسی قرار می گیرند.

انواع داده ای می توانند از داده های ذخیره شده(.Private Dataداخلی خود محافظت نمایند )

Type Safety

19

امنیت انواع داده ای به سه طریق قابل اجرا خواهند بود:در زمان اجرا( در زمان کامپایلML)( به طور تلفیقیJAVA)

Type Safety

20

In-line Referenced Monitor (IRM)Typed Assembly Language (TAL)Proof-carrying Code (PCC)Certifying compilation

آنالیز ایمنی

21

مشاهده اجرای یک برنامه و ایست برنامه در صورت نقض سیاست های ایمنی

مثال :حفاظت از حافظهکنترل سطح دسترسیدیوار آتش... و

Referenced Monitor

22

سیستم عامل نمی تواند RMنکته مهم اینجاست که همه وقایع سیستم را مورد ارزیابی و بازرسی قرار

دهد!نیاز به یک مفسر برای اجرای دینامیک داردکارایی را به نوبه خود کاهش می دهد بیشتر مکانیزم های موجود جهت اجرای سیاست

استفاده می کنند.RMهای ایمنی از در نهایت مونیتور ها در دستورات ادغام می

گردند.

Referenced Monitor

23

Referenced Monitor

Extension

EMBase system

Reference monitorEM

Extension

Base system

InterpreterExtension

Base system

EM

Program instrumentation

24

RM را ببیند و در نتیجه نمی گذشته فقط می تواند ها را نیز اجرا نماید.liveness policyتواند

برای مثال محاسبه اینکه چه موقعی سیستم باید( قرار گیرد.haltبه طور دقیق در حالت ایست )

در این موقع بحثSoftware Fault Isolation (SFI) مطرح می گردد.

فضای کامپوننت های نرم افزاری را در هماننگه می دارد در این شرایط آدرس سخت افزاری

برنامه ها می توانند از کد های نا امن بدون ایجاد سربار حفاظت از حافظه استفاده کنند.

Inlined Reference Monitor

25

:ایده- ادغام یک سری سیاست های ایمنی دلخواه در کد

های نا مطمئن در زمان اجرا:نتایج حاصله

اجرا سربار- کاهش - سیاست های ایمنی می توانند متناسب با

برنامه های کاربردی و حتی متناسب با خصوصیاتکاربران خاص اعمال شوند. )با توجه به اینکه در

سطح کرنل و یا سیستم عامل عمومی و کلی تعریف میشدند(

Inlined Reference Monitor

26

ایمنی حافظه نداشتن مشکالتی از قبیل کد های خود اصالح گر

(self-modifying Codes ) ( نداشتن مشکالت پرش های غیر منطقیWild

Jumps )-Typeجاوا به عنوان یک زبان برنامه نویسی

Safe های به حافظه اشاره گر برنامه ها نمی توانند از

را جعل کنند. فیلد ها و متد های خصوصی هر شی فقط

توسط همان شی مورد دسترسی قرار می گیرند.

-Typeزبان های برنامه سازی Safe

27

بر 1998سابقه استفاده از آن به سال می گردد.

دو ایده در ایجادTAL: در خالص شدن ا:ز شر کامپایلر ها یا مفسر ها

پروسه اعمال سیاست های ایمنی فراهم کردن( نوع داده کلیGeneric Data Type )

برای کد کردن انواع داده های سیستمی سطح باال

بیت اینتل قابل 32در عمل بر روی پردازند های استفاده می باشد.

TAL

28

Review on JVM

29

Type-Based Protection (JVM)

Java Source

javac

JVM bytecodes

JVM verifier System Interface

Binary

JIT compiler

SystemBinary

JVMInterpreter

Trusted Computing Base

30

Ideal

Your favoritelanguage

Low-Level IL)SSA(

optimizer

machine code

verifier System Interface

SystemBinary“Kernel”

TAL در عمل بسیار شبیه JVM عمل می کندCLRو حتی

31

Proof-Carrying Code (PCC)

Your favoritelanguage

Low-Level IL

optimizer

machine code

verifier SecurityPolicy

SystemBinary

trusted computing base

پیدا کردنProof ها سخت است

اماverify کردن آنها راحت است!

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

33

کامپایلر هایی که به طور اتوماتیکPCC را تولید می کنند

VC در معماری قبل :Verification Condition ایمنی کد را پیش بینی می نماید.

VC Generator شرایط تصدیق یک کد را تولید می :کند.

Proof تصدیق هایی که امنیت هر کد را تضمین :می نماید.

بیت اینتل قابل 32در عمل بر روی پردازند های استفاده می باشد.

Certifying Compilers

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)

35

رویکرد سخت افزاریهدف: باال بردن سرعت

پردازشایده: افزایش سرعت

با یک سری Proofعملیات طراحی سخت افزاری

اعمال سیاست های گانه با 4ایمنی در چرخه

استفاده از پیاده سازی HDLروی سخت افزار

نتیجه: باال رفتن سرعت Proof

رویکرد های دیگر

36

زبان های مکملهدف: تضمین یک سری

شروط پیش از اجرای هر بالک از کد ها

ایده: باال بردن قابلیت های ایمنی در اجرای

کدها و تضمین شروط SFI

تعریف یک سری دستورات مکمل جهت باال

بردن انعطاف برنامه نویسی با رویکرد امنیتی

رویکرد های دیگر

37

Java Modeling Language

است که متد های اعمال رفتارگرایک زبان رابط ها را در کد های برنامه قبل و یا بعد از شرط شده

توصیف می کند. و سیاست requiresمتدهای پیش شرط با عبارت

ها بیان می گردند. ensuresهای ایمنی در قالب

JMLزبان مدلسازی جاوا

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

39

کامپایلر هایی که وظیفه تولید کد ها تحت شبکهرا دارند.

ایده: اجرای کد های امن در بستر شبکهابزار مورد استفادهامنیت برای تولید کننده و مصرف کننده :راه حلTrusted Compilers

کامپایلر شبکه

ProducerTrusted

Compiler Consumer

40

پرسش و پاسخ

mehran.alidoost.nia@gmail.com

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.

منابع

Recommended