پیاده سازی های لایه سوکت امن (مقاله ترجمه شده)

چکیدهیک لایه سوکت امن (SSL)، یک پروتکل است که توسط Netscape برای انتقال اسناد خصوصی به صورت ایمن بر روی اینترنت توسعه یافته است. SSL را می توان به طور موثر برای محافظت از داده ها در انتقال مورد استفاده قرار داد. پروتکل SSL در بین پروتکل لایه کاربرد (به عنوان مثال، HTTPS ها (انتقال بیش از حد متن پروتکل امن)) و پروتکل لایه حمل و نقل می آید. واسط های نرم افزار HTTP با SSL تقریبا در همان روشی قرار می گیرد که با TCP در غیاب امنیت است. تا آنجا به TCP مربوط می شود، SSL فقط یک پروتکل نرم افزار با استفاده از خدمات آن است. SSL از دو زیر پروتکل، پروتکل دست دهی و پروتکل رکورد تشکیل شده است. قدرت SSL و از این رو عملکرد ارائه شده توسط ارتباط امن با انتخاب مجموعه رمز تعیین می شود. مجموعه رمز به خودی خود به چهار اجزا رسیده است و آنها روشی برای تبادل کلید، احراز هویت، رمزنگاری و روشی برای محاسبه مخلوط هضم پیام هستند. روش های مختلف برای همه آنچه در روش بالا گفته شده است در دسترس است و ما نیاز به انتخاب یک مجموعه رمزنگاری داریم که کاملا با عملکرد ، محدودیت سرعت و حافظه مورد نیاز ما مطابقت خواهد کرد. موارد ساخته شده مختلف در کتابخانه ها برای توسعه دهندگان به منظور استفاده وجود دارد. این مقاله مقایسه و شرح مختصری در مورد پیاده سازی SSL معمولا بیشتر استفاده شده مانند OpenSSL ها، CyaSSL و MatrixSSL را فراهم می کند. مقدمهاینترنت از TCP / IP برای انتقال داده ها استفاده می کند و پروتکل TCP / IP یک مکانیزم امنیتی / حفاظت ذاتی ندارد. بنابراین داده ها در انتقال ممکن است توسط حملات فعال مانند جعل پیام و تغییر پیام [1] تحت تاثیر قرار گیرند. به منظور حفاظت از داده ها در انتقال، Netscape مفهوم پروتکل SSL را در سال 1994 معرفی کرد و بعد از آن شرکت های دیگر مانند مایکروسافت شروع به توسعه پروتکل های امنیتی خود نمودند. سپس نیروی ضربت مهندسی اینترنت (IETF) در تعریف یک استاندارد برای یک پروتکل رمزنگاری-لایه مداخله نمود. با ورودی از فروشندگان متعدد، IETF لایه حمل و نقل استاندارد را ایجاد نمود. نسخه های قبلی از SSL SSL 2.0 و: SSL 3.0.Transport لایه امنیتی (TLS) پروتکل مبتنی بر SSL 3.0 و TLS 1.0 همان SSL TLS 3.1.Eventhough است و پروتکل SSL کمی در اجرای آنها متفاوت است، توسعه دهنده نرم افزار و کاربر نمی تواند هر گونه تفاوت را [2] تشخیص دهد.هر شبکه ای است که نیاز به انتقال داده ها بر روی یک شبکه نا امن مانند اینترنت دارد می تواند از این پروتکل SSL برای اطمینان از امنیت استفاده نماید. امروزه SSL به طور گسترده ای در معاملات بانکداری آنلاین (که در آن ما نیاز به حفاظت از اعتبار کاربر ارزشمند مانند رمز عبور، شماره PIN و غیره داریم)، مقاصد نظامی، سیستم های جاسازی شده و غیره استفاده می شود که ارتباطات امن بین کلاینت و سرور را فراهم می کند. در اینجا، مشتری مرورگر و سرور ما، سرور وب است که با ما در حال برقراری ارتباط [3] است. یک ارتباط در صورتی امن نامیده می شود که محرمانه بودن، احراز هویت و تمامیت پیام را تضمین نماید [4]. محرمانه مورد استفاده قرار گیرد تا اطمینان حاصل شود که تنها افراد مجاز در حال خواندن پیام هستند. توسط ویژگی یکپارچگی، این معنی را دارد که پیام در انتقال تغییر نمی کند. احراز هویت با استفاده از گواهینامه های دیجیتال به دست می آید و از آن استفاده شده است تا اطمینان حاصل شود که ما در حال برقراری ارتباط با کاربران واقعی هستیم و نه هر مزاحمی. در این مقاله شرح مفصلی از پروتکل SSL داده شده است. شروع با ساختار SSL، جایگاه آن در معماری شبکه، تهدیدات امنیتی در SSL و بخش بعدی از این مقاله، پیاده سازی مختلف های SSL مانند MatrixSSL، OpenSSL، و CysSSL و مطالعه تطبیقی آنها را پوشش می دهد.ساختار SSLSSL در بین لایه کاربرد HTTP و TCP می آید. شکل 1 موقعیت SSL در معماری شبکه را نشان می دهد. SSL نیاز به چند تغییر برای پروتکل های بالا و پایین آن دارد [5]. واسطه های نرم افزار HTTP با SSL تقریبا در همان روشی عمل می کنند که TCP در فقدان امنیت عمل می کنند. تا آنجا به عنوان TCP مربوط می شود، SSL فقط یکی دیگر از نرم افزار است که از خدمات آن استفاده می کند. SSL از دو زیر پروتکل تشکیل شده است، پروتکل دست دهی و پروتکل رکورد.درخواست های رمزقبل از ارسال داده ها، فرستنده و گیرنده باید به یک نتیجه گیری در مورد اجزای مجموعه رمز انتخاب شده برسد [7]. چهار جزء از مجموعه رمزنگاری، الگوریتم تبادل کلید هستند؛ روش احراز هویت، روش های رمزنگاری و الگوریتم برای محاسبه پیام هضم هش. الگوریتم تبادل کلیدی مشخص می کند که چگونه همتایان بر یک کلید متقارن مشترک که می تواند برای به رمز در آوردن پیام پس از handshaking مورد استفاده قرار گیرد به توافق می رسند. دو الگوریتم تبادل کلید مشترک DHE (الگوریتم Diffie-HellmanKeyExchange) و RSA (Rivest، Shamir-Adelman). الگوریتم احراز هویت نشان می دهد که چگونه مشتری و سرور، هویت های خود را به یکدیگر ثابت می کنند. گزینه های احراز هویت عبارتند از: RSA (Rivest، Shamir و Adelman)، DSA (الگوریتم امضای دیجیتال)، منحنی بیضوی DSA، کلید از قبل مشترک (PSH) و ناشناس (زمانی که هیچ مکانیزم احراز هویت استفاده می شود). s\s، جزء رمزگذاری نشان می دهد که کدام الگوریتم متقارن می تواند برای به رمز در آوردن داده ها قبل از انتقال مورد استفاده قرار گیرد. .RC4 (4 RivestCipher)، DES (استاندارد رمزگذاری داده ها)، 3DES (DES سه گانه)، AES (استاندارد رمزگذاری پیشرفته) هستند که معمولا استفاده می شوند. الگوریتم RC4 سریعترین و کوچکترین الگوریتم رمزنگاری است، و بنابراین برای پردازنده های جاسازی شده ایده آل است. و در نهایت اجزای مخلوط هضم مورد استفاده قرار می گیرند تا اطمینان حاصل شود که گیرنده آنچه را فرستنده منتقل نموده دریافت می کند، یعنی پیام در انتقال تغییر نمی یابد. SHA-1، الگوریتم کنترلی اغلب مورد استفاده برای تایید یکپارچگی داده های رد و بدل شده است.تهدید به SSL پروتکلپروتکل SSL مستعد در ابتلا به برخی از حملات یا تهدیدات امنیتی است. حمله عقبگرد ، نسخه های عقبگرد حمله، تبادل الگوریتم عقبگرد حمله و رها کردن تغییر تنظیمات رمز حمله محبوب تر هستند. بخش بعدی، شرح مختصری از چنین حملات ها و اقدامات ضد احتمالی است.مجموعه رمز حمله عقبگرداین نوع حمله اغلب در پروتکل SSL 2.0 ارز اتفاق می افتد که در آن مهاجم با پیام سلام مشتری برخورد می کند و لیست سوئیت رمزنگاری را که در یک متن ذخیره می شود تغییر می دهد. هنگامی که سوئیت های رمز تغییر یابند، در حال حاضر مهاجم می تواند در واقع کاربر را وادار به استفاده از رمزگذاری صادر شده ضعیف نماید، حتی اگر هر دوی سرور و مشتریان الگوریتم درجه قوی تر را ترجیح دهند و از آن پشتیبانی نمایند. ما می توانیم این مشکل را با استفاده از نسخه بالاتر از SSL (SSL 3.0) و از جمله مقادیر هش برای همه پیام ها در طول پروتکل SSL دست دهی و تصدیق آن را در پیام به پایان رسیده با تایید ارزش هش و پیام کاهش دهیم. قرار نیست هر دو سرور و مشتری داده های کاربردی را تا زمانی که پیام به پایان رسیده از هر دو طرف تایید شود قبول نمایند [7].کتابخانه های رایج SSLمحبوب ترین اجرا از TSL پروتکل (حمل و نقل امنیت لایه) CyaSSL، OpenSSL و MatrixSSL می باشند. MatrixSSL به خودی خود در دو نسخه آزاد و تجاری می آید. شرح مختصری از هر یک در زیر آورده شده است.OpenSSLOpenSSL بر اساس کتابخانه SSLeay که بسیار عالی توسط Eric A. Young و Tim J. Hudon توسعه یافته است می باشد. ویژگی اصلی پروژه OpenSSL اینست که دارای کامل امکانات و ابزار منبع باز برای اجرای لایه سوکت پروتکل ایمن Secure Socket Layer (SSL v2/v3) و امنیت لایه حمل و نقل (TLS V1) پروتکل های [10] می باشد. آخرین نسخه از OpenSSL OpenSSL 1.0.1c تحت مجوز Apache-style است، و از این رو توسعه دهندگان به طور رایگان آن را دریافت و منوط به برخی شرایط مجوز ساده از آن برای مقاصد تجاری و غیر تجاری استفاده می کنند.CyaSSLCyaSSL یک کتابخانه SSL تعبیه شده است که سبک وزن است و در ANSI C [11] نوشته می شود. هدف آن، جاسازی و عمدتا محیط های سیستم عامل زمان واقعی (RTOS) است، به دلیل اندازه کوچک، سرعت آن، و مجموعه ای از ویژگی ها. CyaSSL از استانداردهای صنعت درسطح فعلی TLS 1.2 و DTLS (دادهای حمل و نقل امنیت لایه) پشتیبانی می کند. تا حدود 20 برابر کوچکتر از OpenSSL است و رمزهای مترقی مانند HC-128، RABBIT، و NTRU را ارائه می دهد. پشتیبانی کامل از مشتری و سرور را ارائه می دهد. پشتیبانی OCSP و CRL نیز در CyaSSL وجود دارد. اندازه آن در محدوده مورد نیاز حافظه 30 100kB. است. الزامات حافظه آن 3-36kB.The است. اولین کاربر عمده CyaSSL / yaSSL، MySQL است، محبوب ترین پایگاه داده متن باز در جهان. CyaSSL در حال حاضر برای Win32/64، لینوکس، سیستم عامل مک ایکس، سولاریس، FreeBSD و NetBSD، عامل ها، لینوکس تعبیه شده، Haiku، Open WRT، آی فون، آندروید، رشته مهندسی نینتندو گیمکیوب و از طریق حمایت DevKitPro، QNX، VxWorks، Monta ویستا، ThreadX، انواع TRON، از OpenCL، و سیستم عامل Micrium'sMicroC / II FreeRTOS، فری اسکیل Freescale MQX، و Nucleus در دسترس است.مقایسه کتابخانه های SSL / TLSکتابخانه SSL به طور معمول استفاده شده در الزامات حافظه، ویژگی های امنیتی ارائه شده، هزینه و مشکل در پیاده سازی و غیره به طور قابل توجهی متفاوت است. در این بخش یک مطالعه مقایسه ای از آنها ارائه شده است.پشتیبانی از پروتکلچندین نسخه از پروتکل TLS مانند SSL 2.0، SSL 3.0 TLS1.0 وجود دارد، اما عملکرد ارائه شده توسط هر یک از آنها به طور قابل ملاحظه ای متفاوت است. به عنوان مثال SSL 2.0 یک پروتکل توصیه شده، در برابر حملات آسیب پذیر است. در مقایسه با SSL 2.0، SSL 3.0 و TLS1.0 عملکرد بهتری ارائه می دهد و هر گونه آسیب پذیری های عمده شناخته شده را ندارد. TLS 1.2 آخرین نسخه منتشر شده است که عرضه کننده ویژگی های جدید است. دادهای TLS (DTLS) یک اصلاح از TLS 1.1 برای یک لایه حمل و نقل بسته گرا است؛ در اینجا ما نیاز به در نظر گرفتن افت بسته ها و مرتب سازی مجدد بسته ها داریم. مقایسه کتابخانه های SSL بر اساس پروتکل هایی که آنها پشتیبانی می کنند، در "جدول شماره 2" داده شده است.این مقاله در سال 2013 در مجله بین المللی علوم کامپیوتر و فناوری مهندسی، توسط گروه علوم و مهندسی کامپیوتر منتشر شده و در سایت ای ترجمه جهت دانلود ارائه شده است. در صورت نیاز به دانلود رایگان اصل مقاله انگلیسی و ترجمه آن می توانید به پست دانلود ترجمه مقاله پیاده سازی های لایه سوکت امن در سایت ای ترجمه مراجعه نمایید.