بخشی از مقاله
بررسی پروتکل های امنیتی تبادل داده در فضای مجازی
چکیده
با توجه به گسترش روز افزون وب در زندگی بشر و تبادل داده ها از این طریق مبحث امنیت داده ها از اهمیت خاصی برخوردار خواهد شد. استفاده از الگوریتم های رمز نگاری به عنوان روشی پایه جهت امنیت داده ها مطرح می شود. اما مسئله مهم استفاده به جا و صحیح از آنها می باشد. لذا در اینجاست که پروتکل های امنیتی پدیدار می شوند. در این مقاله با بررسی این پروتکلها و بررسی نقاط ضعف و قوت هر کدام، به این نتیجه می رسیم که استفاده از یک پروتکل به تنهایی ممکن است نیاز امنیتی ما را برآورده نکند. لذا می بایستی جهت برقراری امنیت داده های بیشتر از چندین پروتکل با هم استفاده کنیم.
واژگان کلیدی: پروتکل SSL، پروتکل IPSec، الگوریتم رمز نگاری یکطرفه، الگوریتم رمز نگاری دوطرفه متقارن، الگوریتم رمز نگاری دوطرفه نامتقارن، پروتکل ESP
-1 مقدمه
تبادل داده ها و اطلاعات یکی از نیازهای اساسی بشر می باشد.. امروزه جهت برقراری ارتباط و تبادل داده و اطلاعات از وب و فضای مجازی استفاده می کند. این انقال و تبادل اطلاعات در عین حالیکه دقت و سرعت پردازش را به طور قابل ملاحظه ای بالا برده است، در معرض خطرات و تهدیداتی نیز قرار دارد. این انتقال داده ها باید در یک بستر امن صورت گیرد تا به اعتماد استفاده کنندگان خدشه ای وارد نشود. خطرات امنیتی زیادی از قبیل سرقت و یا تغییر محتوای پیامها می تواند تبادل اطلاعات را خدشه دار کند. فرض کنید در زمینه یک خرید و فروش کالا از طریق وب ممکن است خریدار و فروشنده یکدیگر را نشناسند، لذا می بایستی مکانیزم هایی تدارک دید تا اعتماد به این گونه معاملات که همان تجارت الکترونیکی است به وجود آید. این اطمینان تنها از طریق تضمین امنیت و اعتبار تبادل الکترونیک داده ها صورت می گیرد (اخوانی فرد، .(1392
یکی از مهمترین مباحثی که در انتقال داده ها و اطلاعات مد نظر می باشد، بحث اثبات صحت سند و امنیت است. اثبات هویت طرفین و صحت سند، تامین امنیت و محرمانه نگه داشتن اطلاعات و اسناد با روش های سنتی، بسیار ساده می باشد و دستکاری اسناد قابل پیگیری می باشد. لذا می بایستی روش هایی را در نظر گرفت تا بتوان این حس اعتماد که در روش های سنتی وجود دارد را در دنیای مجازی نیز تامین کرد.
-2 دسته بندی کلی حملات امنیتی در انتقال داده ها
در تبادل داده ها از فرستنده تا گیرنده ممکن است حملاتی صورت گیرد که موجب ناامنی گردد. حملاتی که در زمینه انتقال داده ها ممکن است رخ دهد در چهار دسته کلی قرار دارند که عبارتند از: Floyd,2007)، اسفندیاری (1393
· قطع ارتباط: این حمله در مورد در دسترس بودن سیستم انجام می گیرد و سیستم را غیرقابل دسترس و استفاده می کند و مبادله داده را مختل می کند. داده از سیستم مبدا ارسال می شود ولی هرگز به مقصد نمی رسد.
· استراق سمع: گاهی فرستنده می خواهد محتوای پیام را به صورت محرمانه ارسال کند یعنی کسی از محتوای پیام با خبر نشود. در این حمله پیام توسط سیستم ها یا افراد غیر مجاز خوانده می شود و از محتوای آن با خبر می شوند.
· دستکاری داده ها: در این نوع حمله فرستنده داده ای را به سمت گیرنده می فرستد. در وسط راه ارسال، یک سیستم احراز هویت نشده دسترسی غیرمجاز به داده ارسالی پیدا می کند. آن را تغییر داده و برای گیرنده می فرستد. در اینجا داده ارسال شده و دریافت شده یکسان نیستند.
· جعل هویت: در این نوع حمله یک سیستم خود را به جای سیتم دیگری معرفی می کند و مبادرت به ارسال پیام می کند و دریافت کننده متوجه این موضوع نمی شود.
-3 خدمات امنیتی
در راستای رسیدن به یک امنیت مناسب خدمات امنیتی باید قابلیت های زیر را داشته باشند: (wikipedia,2013,Torabi,2010)
· محرمانگی: به اطلاعات محرمانه باید فقط افراد، دستگاه و پردازش های تعیین هویت شده دسترسی داشته باشند.
· احراز هویت: فرستنده و گیرنده باید هویت خود را اثبات کنند.
· بررسی مجوز: هنگام دریافت درخواست کاربر، باید مجوز دسترسی وی برای آن عملیات خاص بررسی شود.
· صحت: اطلاعات بدون احراز هویت و دسترسی، نباید تغییر داده شوند.
· عدم انکار: هنگام دریافت، ارسال اطلاعات یا سرویس، فرد انجام دهنده یا گیرنده نتواند آن را انکار کند.
· قابلیت دسترسی: در هنگام نیاز اطلاعات برای احراز هویت شدگان در دسترس باشند.
در هر حمله ای که صورت می گیرد یک یا چند مورد از این قابلیت ها زیر سوال می رود. لذا خدمات امنیتی می بایستی به نحوی باشد که این قابلیت ها را دارا باشد. شایان ذکر است که امنیت در مقابل کارایی می باشد. یعنی هرچه که تعداد این قابلیت ها بیشتر باشد کارایی سیستم پایینتر می آید. لذا می بایستی با توجه به حساسیت سیستم این قابلیت ها را در نظر گرفت.
-4 پروتکل های امنیتی
با توجه به اینکه داده ها در بستر وب انتقال پیدا می کنند و وب از معماری TCP/IP استفاده می کند، این معماری در تمامی لایه ها حفره های امنیتی متعددی وجود دارد لذا می بایستی در این لایه ها پروتکل هایی را تعریف کنیم تا بتوانیم امنیت را در تبادل داده ها در این بستر به وجود آوریم. قابل ذکر است که تمامی این پروتکل ها از الگوریتم های رمز نگاری که در (اسفندیاری، (1393 بیان شده است استفاده می کنند. در (اسفندیاری، (1393 روش استفاده از الگوریتم های رمز نگاری جهت امن سازی انتقال داده ها بیان شده است. اما استفاده به تنهایی از آنها امنیت کامل را مهیا نمی سازد و می بایستی تدابیر دیگری نیز اندیشید که در ادامه به آنها می پردازیم.
1-4 پروتکل PGP
این پروتکل سه قابلیت محرمانگی، صحت پیام و هویت فرستنده را تایید می نماید. روش ارسال و دریافت پیام در این پروتکل عبارتند از: ارسال کننده از اصل پیام یک Hash می گیرد. حاصل Hash را با استفاده از کلید خصوصی خود رمز کرده و حاصل را به اصل پیام اضافه می کند. پیام به همراه Hash رمز شده را با استفاده از الگوریتم رمز نگاری دوطرفه متقارن رمز می کند. کلید الگوریتم را با استفاده از کلید عمومی دریافت کننده رمز می کند و به پیام رمز شده اضافه میکند و ارسال می کند. دریافت کننده کلید را با استفاده از کلید خصوصی خود بدست می آورد. با استفاده از کلید بدست آورده، اصل پیام به همراه Hash کد شده را بدست می آورد. Hash اصلی را با استفاده از کلید عمومی ارسال کننده بدست می آورد. از متن اصلی یک Hash از پیام می گیرد و بعد با Hash دریافت شده مقایسه می کند.((Pfleeger,2006قابلیت های امنیتی که در این پروتکل وجود دارد را بررسی می کنیم.
· هویت فرستنده: اگر Hash با استفاده از کلید عمومی ارسال کننده باز نشود مشخص می شود که این پیام توسط شخص دیگری ارسال شده است.
· صحت پیام: اگر در مقایسه نهایی دو Hash دریافت شده و بدست آمده با یکدیگر برابر نبودند مشخص می شود که پیام در میان راه دستکاری شده است.
· محرمانگی: با توجه به اینکه اصل پیام به همراه Hash کد شده توسط الگوریتم رمز نگاری دو طرفه متقارن کد شده و کلید این رمزنگاری توسط کلید عمومی دریافت کننده کد شده است لذا می توان مطمئن بود که فقط دریافت کننده می تواند به کلید دسترسی داشته باشد زیرا فقط او کلید خصوصی خود را دارد. لذا فقط دریافت کننده می تواند از محتویات پیام با خبر شود.
در شکل 1 نحوه عملکرد PGP بیان شده است. اما این پروتکل تنها در لایه کاربرد شبکه کاربرد دارد و حفره های امنیتی لایه های پایین تر را پوشش نمی دهد. یکی از ایرادات موجود در این پروتکل وجود دارد عدم اعتماد به کلید ها می باشد. زیرا کلید عمومی ها را می توان به صورت های مختلف بدست آورد.]کتاب امنیت درس مباحث ویژه[ یا کسی کلید عمومی خود را ارسال می کند یا از روی سرور بر میدارد و یا اینکه همراه پیام ارسال می شود. PGP هیچ ضمانتی را در مورد صحت و دستکاری نشدن کلید عمومی ها نمی دهد و کاربر می بایستی مراقب این موضوع باشد. همچنین نحوه انتخاب الگوریتم ها و تابع Hash بین دو طرف در این پروتکل صحبت نشده است. لذا می بایستی به نحوی این الگوریتم ها بین طرفین مبادله شود که بسیار خطرناک است و همه چیز در این پروتکل وابسته به همین الگوریتم ها و کلید ها می باشد. در صورت لو رفتن این موارد قابلیت های امنیتی این پروتکل به زیر سوال می رود. لذا استفاده این پروتکل به تنهایی نمی تواند مفید باشد
شکل :1 نحوه عملکرد پروتکل PGP
-2-4 پروتکل SSL
این پروتکل محصور به یک لایه خاص نیست. بلکه در بین لایه کاربرد و انتقال قرار دارد. در شکل 2 محل قرار گرفتن آن را بیان می کند. در این پروتکل قابلیت های امنیت محرمانگی، تایید هویت و صحت داده ها را به ارمغان می آورد.
شکل :2 محل قرار گرفتن پروتکل SSL
روش کار این پروتکل به صورت زیر می باشد : (Mitchell,1998) مراحل برقراری ارتباط امن در این پروتکل به صورت زیر می باشد:
1. :Handshake تایید هویت طرفین ارتباط با استفاده از گواهی دیجیتال و تبادل کلید مشترک
2. تولید کلید: استفاده از کلید مشترک محرمانه برای تولید کلیدهای مورد نیاز
3. تبادل داده: شکستن داده به تعدادی رکورد و ارسال رکوردها
4. بستن ارتباط: تبادل پیام هایی برای بستن ارتباط به صورت امن
حال به تشریح مراحل بالا می پردازیم: (Rescorla,2001)در مرحله اول کلاینت لیست الگوریتم هایی که پشتیبانی می کند را به همراه یک کد nonce به سرور ارسال می کند. سرور پس از اینکه این پیام کلاینت را دریافت کرد گواهی خود، الگوریتم انتخابی و کد nonce خود را برای کلاینت ارسال می کند. کلاینت با دریافت این گواهی کلید عمومی سرور را با استفاده از کلید عمومی مراکز صدور مجوز1دریافت می کند. و کلید مشترک را ایجاد و به وسیله کلید عمومی سرور رمز کرده و ارسال می کند. نکته قابل توجه در این است که در پروتکل SSL اعتماد به کلید عمومی بدین وسیله به وجود می آید. این کلید فقط توسط سرور قابل خواندن است زیرا فقط او کلید خصوصی خود را دارد. همچنین برای اینکه مهاجم نتواند حمله replay را بر روی سیستم ما بزند، کد nonce را به پیام ها اضافه می کند. طرفین ارتباط این کد ها را ذخیره می کنند و اگر دوباره پیامی آمد که کد nonce تکراری داشت آنوقت متوجه می شود که کسی در وسط قرار دارد و حمله replay را اجرا می کند. درضمن این کد nonce به صورت تصادفی تولید می شود و قابل پیشبینی نیست. همچنین اگر سرور بخواهد هویت کلاینت برایش مشخص شود می تواند از کلاینت درخواست گواهی کند تا هویت کلاینت برایش مشخص شود.