امنیت لایه انتقال

برنامه‌نویسی امن

تلاش‌های تحقیقاتی در اوایل نسبت به امنیت در لایه انتقال شامل برنامه‌نویسی شبکه‌ای امن و رابط برنامه‌نویسی کاربردی بود. در سال ۱۹۹۳ به بررسی رویکرد داشتن یک لایه انتقال امن، به منظور تسهیل مقاوم‌سازی برنامه‌های کاربردی موجود در شبکه با اقدامات امنیتی پرداخته شد.

۳٫۰، ۲٫۰، 1.0 SSL

پروتکل SSL در اصل توسط Netscape توسعه داده شد. نسخه ۱٫۰ آن برای استفاده عمومی نبود. نسخه ۲٫۰ آن در سال ۱۹۹۵ منتشر شد که تعدادی نقص‌های امنیتی داشت و منجر به تولید نسخه ۳٫۰ شد. SSL 3.0 که در سال ۱۹۹۶ منتشر شد یک طراحی مجدد کامل از پروتکل‌های تولید شده بود.

TLS 1.0

این پروتکل در سال ۱۹۹۹ به عنوان ارتقا یافتهٔ نسخه SSL 3.0 تعریف شد. تفاوت چشمگیری بین این پروتکل و SSL 3.0 وجود ندارد و می‌توان گفت این پروتکل SSL 3.0 را کامل کرده‌است.

TLS 1.2

در سال ۲۰۰۸ تولید شد. مشخصات TLS 1.1 را دارد. تفاوتی که این پروتکل دارد این است که MD5-SHA-1 با SHA-256 جایگزین شده‌است.

برنامه‌های کاربردی

در طراحی برنامه‌های کاربردی، TLS معمولاً در بالای تمامی پروتکل‌های لایه انتقال پیاده‌سازی می‌شود و پروتکل‌های برنامه‌های کاربردی مانند HTTP, FTP, SMTP, NNTP, XMPP، را کپسوله می‌کند. با استفاده از پروتکل‌های انتقال داده گرام مانند UDP و پروتکل کنترل ازدحام داده(DCCP)استفاده می‌شود.

وب سایت‌ها

یک استفاده برجسته از TLS این است که برای امن کردن ترافیک بین وب سایت‌ها و مرورگرها استفاده می‌شود.

تبادل کلید

در پیاده‌سازی‌های نخستین لایهٔ سوکت‌های امن، به علّت محدودیت‌های اعمال شده بر روی صادرات تکنولوژی رمزنگاری از طرف دولت ایالات متحده، از کلیدهای متقارن با طول ۴۰ استفاده می‌شد. قبل از اینکه کلاینت و سرور به تبادل اطلاعات حفاظت شده توسط TLS بپردازند باید بر روی یک کلید رمزگذاری و یک روش رمزگذاری توافق کنندتا مبادلهٔ امنی داشته باشند.

متدهایی که برای مبادله کلید استفاده می‌شود:

تولید کلیدهای عمومی خصوصی باRSA, Diffie-Hellman, ephemeral Diffie-Hellman, ECDH, ephemeral Elliptic Curve Diffie-Hellman, anonymous Diffie-Hellman و PSK.

روش توافق کلید TLS_DH_anon سرور و کلاینت را احراز هویت نمی‌کند به همین دلیل به ندرت استفاده می‌شود.

SSL

لایه سوکت امن (SSL) توسط Netscape طراحی شد و نسخه ۳ آن به صورت استاندارد اینترنت درآمد. معماری SSL به صورت دولایه‌ای است که روی TCP قرار گرفته‌است. لایه اول بالای لایه حمل قرار گرفته‌است و لایه دوم در لایه کاربرد است. قسمتی از SSL که در لایه دوم قرار می‌گیرد مربوط به سرویس‌های مدیریتی است و شامل پروتکل دست دادن، پروتکل تغییر مشخصات رمزکننده و پروتکل هشدار است. SSL اجازه می‌دهد که بین کلاینت و سرور یک جلسه ایجاد شود و از آن طریق هر تعداد اتصال امن امکان‌پذیر باشد. از نظر تئوری بین یک کلاینت و یک سرور می‌تواند بیش از یک جلسه وجود داشته باشد و در عمل فقط یک جلسه به وجود می‌آید.

یک جلسه توسط پروتکل دست دادن ایجاد می‌شود و مجموعه‌ای از پارامترهای امنیتی را تعریف می‌کند که به صورت اشتراکی در اتصالات مربوط به آن جلسه استفاده می‌شوند. برای هر جلسه و هر اتصال به یک سری پارامترها نیاز است.

پروتکل تغییر مشخصات رمز در SSL

این پروتکل ساده‌ترین پروتکل مربوط به لایه دوم است که تنها یک بایت با مقدار یک دارد. هدف از این پیام یک بایتی تغییر اطلاعات رمزگذاری مربوط به ارتباط موجود است که در واقع وضعیت معلق را به وضعیت جاری کپی می‌کند.

پروتکل دست دادن در SSL

این عمل به منظور احرازاصالت دوطرف و توافق روی الگوریتم‌ها و کلیدهای رمزگذاری است و به لایه دوم مربوط است و قبل از هر انتقال داده بین دو طرف این پروتکل صورت می‌گیرد. این پروتکل پیچیده‌ترین پروتکل SSL است که یکسری پیام دارد که بین دوطرف ارتباط مبادله می‌شود. هر پیام شامل نوع پیام، طول پیام به بایت و محتوای پیام است. این پروتکل دارای ۴ مرحله است.

مرحله ۱: برقراری قابلیت‌های امنیتی

این مرحله به منظور آغاز یک اتصال منطقی برای معین کردن قابلیت‌های امنیتی مربوط به آن اتصال است.

مرحله ۲: احراز اصالت و تبادل کلید سرور

در این مرحله حداکثر ۴ پیام از طرف سرور به کلاینت ارسال می‌شود که ۳ تا از آن‌ها اختیاری است. پیام اول شامل گواهی سرور است. پیام دوم مربوط به تبادل کلید از طرف سرور است. پیام سوم در صورتی که سرور مخفی نباشد ممکن است از سرور به کلاینت ارسال می‌شود. پیام چهارم که حتماً باید ارسال شود پارامتری ندارد و بیان‌کننده پایان ارسال پیام مرحله دوم است.

مرحله ۳: احرازاصالت و تبادل کلید کلاینت

در این مرحله ۳ پیام از کلاینت به سرور ارسال می‌شودکه فقط یکی از آن‌ها اجباری است.

مرحله ۴: پایان

در این مرحله طرفین با ارسال مشخصات رمزکننده وضعیت جدید رمز خود را اطلاع می‌دهند و سپس با ارسال پیام پایانی، پروتکل دست دادن را پایان می‌دهند.

امنیت

برای بهره‌مندی از این پروتکل، سرویس‌دهنده و سرویس‌گیرنده با یکدیگر یک قرارداد تبادلی اطلاعات را مذاکره می‌کنند. در این مذاکرات، سرویس‌دهنده و سرویس‌گیرنده بر سر پارامترهای مختلفی که برای برقراری امنیت مورد نیاز است، به توافق می‌رسند.