هر آنچه که در خصوص امنیت لایه نقل و انتقال (TLS) باید بدانید!

امنیت لایه نقل و انتقال یا همان TLS[1] یکی از پروتکلهای امنیتی است که نخستینبار توسط گروه مهندسی اینترنت (IETF[2]) پیشنهاد و اولین نسخه آن در سال 1999 میلادی ارائه شد. هدف اصلی از طراحی این پروتکل، حفظ حریم خصوصی کاربران و امنیت دادههای تبادلی از طریق ارتباطات مجازی است. وظیفه اصلی TLS رمزنگاری ارتباطات بین برنامههای کاربردی وب (مثل مرورگرها) و سرورها است. از TLS همچنین برای رمزنگاری ارتباطات برقرار شده از طریق ایمیل، پیامرسانها و VOIP نیز استفاده میشود.
در این مطلب از فراست، به بررسی نقش TLS در امنیت برنامههای کاربردی وب می پردازیم.
چه ارتباطی بین پروتکل TLS با پروتکلهای SSL و HTTPS وجود دارد؟
SSL[3] یکی از پروتکلهای استاندارد جهت برقراری ارتباط امن و رمزنگاری شده بین سرویسدهنده[4] و سرویس گیرنده[5] است. این پروتکل به مرور زمان توسط شرکت Netscape[6] توسعه یافت و در نهایت، نسخه تکمیل شده آن تحت عنوان TLS ارایه شد. TLS در مقایسه با SSL از امنیت و کارایی بیشتری برخوردار بوده و از الگوریتم رمزنگاری قویتری هم استفاده میکند. نسخه 1.0 پروتکل TLS در واقع همان نسخه 3.1 پروتکل SSL است. به همین خاطر از اصطلاحات TLS و SSL ممکن است به جای یکدیگر استفاده شود.
پروتکل امن انتقال ابرمتن یا HTTPS[7] نسخه امنیتی پروتکل HTTP بوده و در وبسایتهایی که توسط TLS رمزنگاری شدهاند مورد استفاده قرار میگیرد. بنابراین تمام اطلاعات محرمانهای که بین سرویسدهنده و سرویسگیرنده مبادله میشوند، رمزنگاری شده و فقط توسط افرادی قابل مشاهده خواهند بود که کلید رمزگشایی آن را در اختیار داشته باشند. در غیر این صورت حتی اگر شخصی به این اطلاعات نیز دسترسی یابد امکان مشاهده و سوءاستفاده از محتوای آنها را نخواهد داشت.
چرا کسب و کارها باید از پروتکل TLS استفاده کنند؟
استفاده از HTTPS در وبسایتهایی که با TLS رمزنگاری شدهاند یک استاندارد جهانی بوده و به محافظت از برنامههای کاربردی وب در برابر مخاطره نقض دادهها و سایر حملات سایبری کمک میکند. برای مثال مرورگر گوگل کروم از مشاهده وبسایتهایی که نماد قفل HTTPS ندارند، جلوگیری کرده و کاربران هم در استفاده از آنها محتاطتر خواهند بود.
پروتکل TLS در چه مواردی کاربرد دارد؟
کاربردهای پروتکل TLS شامل رمزنگاری، احراز هویت و تأیید اعتبار است. TLS دادههای در حال انتقال بین سرویسدهنده و سرویسگیرنده را رمزنگاری نموده و هویت مبادلهکننده اطلاعات را تضمین میکند. در نهایت این پروتکل تأیید میکند که دادهها جعلی یا دستکاری نشده باشند.
نحوه عملکرد TLS چگونه است؟
هر وبسایت یا برنامهای که از TLS استفاده میکند باید دارای گواهینامه TLS (که به عنوان «گواهینامه SSL» نیز شناخته میشود) در سرور اصلیاش باشد. این گواهینامه توسط مسئول صدور گواهینامه به هر شخص یا کسب و کار دارای دامنه[8] اینترنتی داده می شود که حاوی اطلاعاتی در مورد مالک دامنه، به همراه کلید عمومی سرور است. این اطلاعات و کلید عمومی، جهت تأیید هویت سرور از اهمیت بالایی برخوردار هستند. اتصال TLS شامل فرایند انتقال اطلاعات اولیه و ایجاد یک ارتباط امن جهت مبادله اطلاعات میباشد. این فرایند که اصطلاحاً “TLS Handshake” نام دارد بین دستگاه کاربر و سرور وب آغاز شده و شامل مراحل زیر است:
- در گام اول، یکی از نسخههای TLS (1.0، 1.1 و 1.3) تعیین شده و در دسترس کاربر و سرور قرار میگیرد.
- در این مرحله، TLS Handshake یک مجموعه رمز را برای هر نشست (Session) ارتباطی ایجاد میکند. این مجموعه شامل الگوریتمهایی است که تعیین میکنند چه کلیدهای رمزنگاری مشترکی برای آن نشست خاص استفاده شود. TLS به لطف فناوری معروف به رمزنگاری کلید عمومی[9] میتواند کلیدهای نشست را بر روی یک کانال رمزنگاری نشده تنظیم کند.
- TLS Handshake همچنین مسئولیت احراز هویت که معمولاً شامل اثبات هویت سرور به کاربر است را بر عهده داشته و این کار را با استفاده از کلیدهای عمومی انجام میدهد. با این حال فقط فرستنده اصلی میتواند داده ها را با کلید خصوصیاش رمزنگاری کند. لازم به ذکر است که کلید عمومی سرور، بخشی از گواهی TLS میباشد.
- ایجاد کلیدهای نشست برای رمزنگاری پیامهای مبادله شده بین کلاینت و سرور پس از اتمام فرایند TLS handshake
دادهها پس از رمزنگاری و احراز هویت، با یک کد اصالتسنجی پیام یا کد احراز هویت پیام (MAC[10]) امضا میشوند. بنابراین گیرنده می تواند از اعتبار و صحت دادهها اطمینان حاصل کند. فرض کنید فروشنده بر روی یک جعبه دارو، فویل کشیده است. در این صورت مصرفکننده از عدم دستکاری داروهایش توسط سایرین اطمینان خواهد یافت.
TLS چگونه بر عملکرد برنامه کاربردی وب تأثیر میگذارد؟
اگرچه آخرین نسخههای TLS تأثیر چندانی بر نحوه عملکرد برنامه های کاربردی تحت وب ندارند ولی از طرف دیگر فرایند راهاندازی اتصال TLS نسبتاً پیچیده بوده و نیازمند صرف زمان زیاد برای بارگذاری و همچنین قدرت محاسباتی بالا میباشد. برای مثال کلاینت و سرور باید پیش و پس از انتقال دادهها چندینبار با یکدیگر ارتباط برقرار کنند. این عملیات به زمان بسیار زیادی نیاز داشته و بخشی از حافظه کلاینت و سرور را نیز درگیر خود می کند در صورتی که از این زمان میتوان برای بارگذاری برنامههای کاربردی وب استفاده کرد.
با این حال، فناوریهایی مثل TLS False Start وجود دارند که تأخیرهای احتمالی ایجاد شده توسط TLS handshake را کاهش میدهند. TLS False Start پیش از شروع اتصال TLS Handshake مجوز انتقال داده را به سرویسدهنده و سرویسگیرنده میدهد. این فناوری همچنین به مشتریان و سرورهایی که در گذشته با یکدیگر ارتباط برقرار نمودهاند مجوز استفاده از TLS Handshake کوتاه شده را میدهد. از این رو دیگر نیازی به گذراندن تمام مراحل TLS Handshake توسط کلاینت و سرور وجود ندارد.
چنین فناوریهایی TLS را به یک پروتکل سریع که تأثیر چندانی بر روی زمان بارگذاری ندارد، تبدیل کردهاند. بر اساس استانداردهای امروزی، هزینه های محاسباتی مربوط به TLS بسیار ناچیز است. نسخه TLS 1.3 که در سال 2018 میلادی منتشر شد در مقایسه با نسخههای قبلی آن از سرعت بسیار بالاتری برخوردار است. در این نسخه، فرایند TLS Handshake فقط به یک ارتباط رفت و برگشتی (یا لوپ) نیاز داشته و این روند را چند میلی ثانیه کوتاهتر میکند. همچنین اگر کاربری در گذشته به یک وبسایت متصل شده باشد مقدار رفت و برگشت TLS Handshake صفر بوده و سرعت نیز افزایش زیادی خواهد یافت.
نحوه پیادهسازی TLS در یک وب سایت
شرکت Cloudflare به منظور ارتقای سطح امنیت وب سایت ها گواهی رایگان TLS/SSL را به همه افراد متقاضی ارایه میدهد. اگر کاربری مایل به استفاده از خدمات این شرکت نباشد باید به منظور دریافت گواهی SSL از سایر شرکت های صدور گواهینامه هزینهای را پرداخت نموده و پس از خرید، آن را بر روی سرور اصلی خود نصب کند.
[1] Transport Layer Security
[2] Internet Engineering Task Force
[3] Secure Socket Layer
[4] Server
[5] Client
[6] یک شرکت خدمات رایانه ای آمریکایی است که در زمینه ارائه مجموعه نرمافزارهای اینترنتی، مرورگر وب، پورتالهای وب و خدمات اینترنتی فعالیت میکند (ویکیپدیا).
[7] Hyper Text Transform Protocol
[8] نامی که یک وبسایت از طریق آن قابل دستیابی است.
[9] در رمزنگاری با استفاده از رمزنگاری نامتقارن (که به آن کلید عمومی هم گفته می شود)، دو کلید خصوصی و عمومی وجود دارد. کلید عمومی، در دسترس هر شخصی میتواند باشد. نحوه عملکرد این روش بدین صورت است که دادهها با استفاده از کلید خصوصی رمزنگاری شده و کاربری که کلید عمومی را در اختیار داشته باشد قادر به رمزگشایی آنها خواهد بود.
[10]Message Authentication Code: اطلاعاتی که برای سنجش اصالت یک پیام مورد استفاده قرار میگیرد.
منبع: cloudflare