چکیده

معماری عامل هاي متحرک بر بسیاري از ﳏدودیتهاي معماري سرویس دهنده سرویس گﲑنده فائق آمده است. مزایای ایـن معمـاری را بطـور خلاصـه مـی تـوان کارایی بالا، ﳏاسبات سیار , هزینه پایﲔ, استفاده مـوثر از نـای بانـد پـایﲔ شبکه, ارائه پوشیدگی بالا و ارائه ساختاری مناسب در جهت کاربردهـای توزیـع شدگی دانست . اما عامل های متحرک تفاوت اساسی بـا اعقـاب خـود دارنـد و آن ﳘانا ﲢرک آ ا است که خود به خود حساسیت مسائل امنیتی عامل هـا ی متحـرک را افزایش می دهد, به طوریکه در چنﲔ سیستم هایی ﳏافظت عاملـهای متحـرک بسـیار مهم بوده و در ساﳍاي اخﲑ مورد توجه ﳏققان قرار گرفته است. در این مقاله با بررسی خطرات امنیتی عامـل متحـرک در برابـر بسﱰبدسرشـت وبررسـی یـک تکنیـک حفاظتی, طرحی ﲠینه جهت ﳏافظت کد, داده وداده های ﲨع آوری شـده توسـط عامـل متحرک ارائه وارزیابی امنیتی آن بررسی شده است.

آلید واژه- عامل متحرک, بسﱰعامل, مالک عامل, حالـت,, داده کپسـوله شـده, پیشنهاد
١- مقدمه

امروزه رشد و ارتقاء روزافزون معماریهای نرم افزاری , سیستم هـای خـادم و ﳐدوم را جایگزین سیستم های متمرکز قدﳝی ﳕوده است. در این نوع سیستم ها یـک عملیات در شبکه به دو ﲞش اصلی تقسیم می شود, یکی درخواست سـرویس گﲑنـده از یک ماشﲔ راه دور و دیگری پاسخ ماشﲔ سرویس دهنده به آن درخواست. لیکن اﳒـام این عملیات مستلزم توافق بر سر یک پروتکل ﳐابراتی خواهد بود. بـراین اسـاس تکامل سیسستم های توزیع شده از ابتدا تا حال را مـی تـوان معمـاری انتقـال پیام, معماری فراخوانی از راه دور, معمـاری ارزشـیابی از راه دور, ﳘینطـور اشیای توزیع شده مانند DCOM و CORBA وغﲑه نام برد . لیکن دراین سیستمها پیدایش مسائلی ﳘچون عدم توانایی پاسخ به کاربردهای توزیـع شـده کـلان, افـت کیفیت ارتباط شبکه و مسائلی از این قسـم منجـر بـه پیـدایش نسـل دیگـری از معماری نرم افزار به نام عامل های متحرک شده است. با استفاده از عامل هـای متحرک , پویایی خاصی به سیستم های توزیع شده داده خواهد شد . عاملهای متحرک ضمن پاسخ به ﳏدودیتهای معماری نرم افزاری خادم و ﳐدومی , به طور کاملا واقعی در طـــول شـــبکه حرکـــت کـــرده و تقاضـــای ورودی را از طریـــق اجـــرای سرویسها پاسخ می دهند.

٢- مکانیزمی برای ﳏافظت عامل متحرک دربرابربسﱰبدسرشت

در اینجا سیستمی توسط vigna پیشنهاد می شود که هرگونـه رفتـار بـد بسـﱰها نسبت به عاملهای متحرک رابااستفاده از ردگﲑی رمزنگاری شده تشخیص می دهـد.

]١٠[این روش یعنی ردگﲑی رمزنگاری شده به مالک عامل اجازه می دهد که هرگونـه مداخله اﳒام شده را اثبات ﳕاید. پروتکل پیشنهادشـده فـرض مـی کندکـه ﲤـامی قسمتهای درگﲑدر سیستم عامل متحرک, مالک عامل ومیزبا ا هستندکه هریـک دارای یک کلیدعمومی ویک کلیدسری بوده و می توانند برای رمزنگاری وامضای دﳚیتـالی ازآ ااستفاده ﳕایند. بنابراین در این پروتکل یک زیربنـای کلیـدعمومی حـاکم است که ارتباط هر بسﱰ را باکلیدعمومی متناظرش گارانتی می کنـد. مـافرض مـی کنیم که درهرﳊظه, هر بسﱰ می تواندکلیدعمومی راازبسـﱰ دیگـر بازیـابی کـرده وصحت آن راتایید ﳕاید. برای سادگی بیان, فرایند رمزنگاری پیـام m باکلیـد عمومی بسﱰx توسط ENCx (m) مشخص می شود.علاوه براین, از توابع درهم یـک طرفـه, ﲟنظور تولیدرمزنگاری اﳝن در ﳕایش پیامها, استفاده خواهدشد . مقداردرهم توسط تابع نرم افزاری H برای پیام ,m توسط H(m) مشخص می شود . یک عامـل در حـال حرکت, توسط کدC و حالت S i ساخته می شودکه در نقطه مشخص , i توسط اجرای کـد, مشخص شده است. حالت شـامل, سـاختارداده سراسـری, پشـته فراخـوانی وﴰارنـده برنامهمی باشد . نکته مـورد توجـه اینکـه در بعضـی از زما ـا, بـرای مثـال, زمانیکه عامل هنـوزاجرای خـود راشـروع نکـرده باشـد, بایسـتی حـالتی(( Si وجودنداشته باشد . عامل چندجهشی, عاملی است که ﲟنظوراﳒام یک وظیفه ﳐصـوص از مالک شروع کرده وسپس از بسﱰی به بسﱰ دیگر جهـش مـی کنـد , ایتـا زمانیکـه وظیفه اش را به اﳒام رسانید, تنها نتایج بسمت مالک برمی گردد. . بسﱰی کـه ﲢت عنوانttS در پیام وجوددارد, گﲑنده ﲤامی پیامهـای رسـیدی اسـت کـه توسـط پروتکل تولید می شود. این بسﱰ زمانی مورد استفاده قرارمـی گﲑدکـه ارتبـاط بسﱰمالک یعنیS0 پس از اینکه پیام m0 راﳘراه با عامل متحرک ارسال کـرد, قطـع شود. یازمانیکه نیازبه ﲞش سوم مطمئنی باشد کـه پیامهـای رسـید را ﲨـع آوری کند, آنگاه از این بسﱰ استفاده می شود. بنابراین دوبسﱰttS وS0 می توانند هر
دویک بسﱰ باشندیا دوبسﱰگﲑنده پیام متفاوت باشند. جهش اول عامل, مالکS0 می
خواهد کد C را بر روی بسﱰ S1 اجراکند.بنابراین, مالک S0 پیام m0 رابه ﲰت ۱
S ارسال می کند :
S i ) مشخصه بسﱰi ام می باشد)
(١) S0 m0→ S1 : S0 , ENCS1(C,S0) , SIGS0(H( C),H(S0), S1 , ttS ,ts0,is0)
در اینجا پیام شامل سه ﲞش است. اولﲔ ﲞش, فرستنده پیـام اسـت. دومـﲔ ﲞـش رمزنگاری کد C با کلید عمومی بسﱰS1 می باشد وﲞش سوم پیـام شـامل امضـاکردن مقداردرهم کد و مشخصه بسﱰ اول و یک ﲞش سوم مطمئنtrusted third party بـه نـام ttS و ﳘینطورمقدار زمانی ts0 است که یک برچسب زمانی را برای تازگی پیـام عرضـه مـی کند و ایتا مقدار is0 که به عنوان یک مشخصه منحصربفرد برای ﳏافظـت از ﲪلـه ها ارائه می شود. به دلیل اینکه کد با استفاده از کلیدعمومی بسﱰ S1 ﳏافظـت می شود, بنابراین تنها توسط بسﱰ S1 قابل دسـﱰس اسـت. زمانیکـه بسـﱰS1 پیـام رادریافــت مــی کنــد, بــرای دســتیابی بــه کــد موجــود در ﲞــش دوم پیــام, آن رابااستفاده ازکلیدسری خود ازحالت رمزخارج می سازد , سپس از مشخصه مالـک S0 درقسمت اول پیام, جهت بازیابی کلیدعمومی متناظربا مالک استفاده مـی کنـد. این کلید ﲟنظورازحالت رمزدرآوردن ﲞش سوم پیـام اسـتفاده مـی شـود. بسـﱰ S1 مقدار H(C) را ﳏاسبه کرده ونتیجه رابامقـداردرهم موجـود در ﲞـش سـوم پیـام مقایسه می کند اگردومقداریکسان بودند , S1 اطمینان پیدامی کندکه پیام توسـط S0 فرستاده شده است وکدتغیﲑپیدانکرده است. ازآﳒاییکه ﲞـش سـوم پیـام شـامل بسﱰS1 است, بنابراین S1 می توانداطمینان دهد که پیام برای خودش درنظرگرفتـه شده است.

S1 به عنوان اولﲔ بسﱰ, یک رسید از دریافت پیام به بسﱰttS می فرسـتدکه ایـن پیام براین دلالت داردکه بسﱰ S1 یک عامل متحرک از فرستنده دریافـت کـرده و برای ttS تاییدوتصدیق می کندکه پیامهای دریافت شده توسط بسﱰ S1 ساﱂ هسـتند. پس اولﲔ ﲞش این پیام شامل مشخصه فرستنده یعنیS1 پیام است وﲞش بعـدی, شـامل بسﱰی که عامل متحرک از آن دریافت شده ﳘراه با ﲤامی فیلد سوم پیـام دریافـت
شده قبلی یعنی m0 که این ﳎموعه با کلید سری بسﱰS1 امضا می شود:

(٢) S1 m1→ ttS : S 1 , SIGS1(S 0 , SIGS0(H ( C),H(S0), S 1 ,ttS,ts0,is0))

سپس بسﱰS1 عامل متحرک رااجرا می کندتااینکه عامل نیازمند مهاجرت بسمت بسـﱰ دیگری شود . درانتها S1 اجرای عامل را متوقف کرده ویک پیام حـاوی امضـاکردن نام بسﱰی که مسﲑجهش بعدی عامل را نشان خواهدداد یعنی S2 و یک مقدار درهـم از حالت پایانی , S 1 یک مقدار درهم از ردگﲑی اجرایی و مشخصه اﳓصـاری مالـک با کلید سری بسﱰ, S1 بسمت بسﱰ ttS می فرستد :