TLS (Transport Layer Security) یک پروتکل امنیتی پرکاربرد است که برای تضمین حریم خصوصی و امنیت دادهها در ارتباطات اینترنتی طراحی شده است. یکی از مهمترین کاربردهای TLS، رمزنگاری ارتباط بین برنامههای وب و سرورها است؛ به عنوان مثال زمانی که یک مرورگر وب، یک وبسایت را بارگذاری میکند. علاوه بر وب، پروتکل TLS میتواند برای رمزنگاری ایمیل، پیامرسانی و تماسهای اینترنتی (VoIP) نیز مورد استفاده قرار گیرد. در این مقاله تمرکز ما بر نقش TLS در امنیت برنامههای وب خواهد بود.
پروتکل TLS توسط سازمان بینالمللی IETF (Internet Engineering Task Force) پیشنهاد شد و اولین نسخه آن در سال ۱۹۹۹ منتشر گردید. جدیدترین نسخه این پروتکل، TLS 1.3 است که در سال ۲۰۱۸ ارائه شد.
آنچه در ادامه میخوانید:
چرا کسبوکارها و وبسایتها باید از پروتکل TLS استفاده کنند؟
پیامهای هشدار (Alert Messages)
احراز اصالت پیام (Message Authentication)
مجموعه الگوریتمها (Cipher Suites)
تاثیر TLS بر عملکرد برنامههای وب
نقش TLS در جلوگیری از حمله MITM
رمزنگاری TLS میتواند به محافظت از وبسایتها و برنامههای وب در برابر نشت دادهها و حملات سایبری کمک کند. امروزه استفاده از HTTPS مبتنی بر TLS، یک استاندارد ضروری برای وبسایتهاست. مرورگر Google Chrome به تدریج وبسایتهای بدون HTTPS را محدود کرده و مرورگرهای دیگر نیز همین مسیر را دنبال کردهاند. کاربران اینترنت روزبهروز نسبت به سایتهایی که نماد قفل HTTPS ندارند، بیاعتمادتر میشوند.
پروتکل TLS سه وظیفه اصلی دارد: رمزنگاری (Encryption)، احراز هویت (Authentication) و یکپارچگی (Integrity).

برای اینکه یک وبسایت یا برنامه بتواند از TLS استفاده کند، باید یک گواهی TLS (یا همان SSL Certificate) روی سرور اصلی نصب شود. این گواهی توسط یک مرجع صدور گواهی (CA) صادر میشود و شامل اطلاعات مهمی از جمله مالکیت دامنه و کلید عمومی سرور است. این اطلاعات برای تأیید هویت سرور و امنیت ارتباط ضروری هستند.
یک اتصال TLS از طریق فرآیندی به نام TLS Handshake آغاز میشود. زمانی که کاربر وارد یک وبسایت میشود، این فرآیند بین مرورگر (کلاینت) و سرور آغاز میگردد. در طول TLS Handshake، اقدامات زیر انجام میشود:
Cipher Suite مجموعهای از الگوریتمهاست که مشخص میکند چه کلیدها و روشهای رمزنگاری برای ارتباط استفاده شوند. TLS از رمزنگاری کلید عمومی (Public Key Cryptography) برای ایجاد کلیدهای نشست روی یک کانال رمزنگارینشده استفاده میکند. احراز هویت معمولاً با اثبات هویت سرور به کلاینت انجام میشود. این کار از طریق کلید عمومی صورت میگیرد. کلید عمومی در گواهی TLS سرور قرار دارد.
پس از رمزنگاری و احراز هویت، دادهها با کد احراز پیام (MAC) امضا میشوند. گیرنده میتواند MAC را بررسی کند تا مطمئن شود دادهها تغییر نکردهاند؛ مشابه پلمب ایمنی روی دارو که نشان میدهد بستهبندی دستکاری نشده است.
Handshake فرآیندی است که طی آن مرورگر، گواهی SSL یا TLS سرور را بررسی میکند. این فرآیند شامل احراز هویت دو طرف اتصال و سپس تبادل کلیدهای رمزنگاری است.
پیامهای هشدار روشی هستند که پروتکلهای SSL و TLS از طریق آن خطاها و مشکلات را اطلاع میدهند:
هر دو پروتکل SSL و TLS از کدهای احراز پیام (MAC: Message Authentication Code) برای تأیید اصالت و یکپارچگی پیامها استفاده میکنند.
Cipher Suite مجموعهای از الگوریتمهاست که برای رمزنگاری دادهها بین مرورگر و سرور استفاده میشوند. این مجموعه معمولاً شامل موارد زیر است:
درTLS، بسیاری از الگوریتمهای موجود در SSL ارتقا داده شده یا جایگزین شدند تا نگرانیهای امنیتی موجود در نسخههای قبلی برطرف شوند.
پروتکل TLS (Transport Layer Security) در واقع تکاملیافته پروتکل رمزنگاری قبلی به نام SSL (Secure Sockets Layer) است که توسط شرکت Netscape توسعه یافت. نسخه 1.0 از TLS در حقیقت بهعنوان SSL 3.1 شروع به توسعه کرد، اما پیش از انتشار، نام آن تغییر یافت تا نشان دهد دیگر به Netscape وابسته نیست. به همین دلیل، امروزه بسیاری افراد همچنان از دو اصطلاح TLS و SSL بهصورت جایگزین یکدیگر استفاده میکنند.
SSL (Secure Sockets Layer) یک پروتکل ارتباطی یا مجموعهای از قوانین است که یک اتصال امن بین دو دستگاه یا برنامه در شبکه ایجاد میکند. هدف اصلی SSL، ایجاد اعتماد (Trust) و احراز هویت (Authentication) پیش از تبادل اطلاعات یا اعتبارنامهها در اینترنت است. مرورگرها و برنامهها از SSL برای ایجاد کانال ارتباطی رمزنگاریشده استفاده میکردند. با این حال، SSL یک فناوری قدیمی است که دارای نقصهای امنیتی شناختهشده میباشد. پروتکل TLS نسخه ارتقا یافته SSL است که آسیبپذیریهای SSL را برطرف کرده و با روشهای احراز هویت کارآمدتر، همچنان ارتباطات رمزنگاریشده را پشتیبانی میکند.
توسعه SSL توسط Taher Elgamal آغاز شد و نسخه SSL 2.0 در سال ۱۹۹۵ منتشر گردید. هدف اصلی آن، ایمنسازی ارتباطات در وب جهانی (World Wide Web) بود. پس از چندین نسخه در سال ۱۹۹۹، Tim Dierks و Christopher Allen نسخه TLS 1.0 را بهعنوان جانشین SSL 3.0 معرفی کردند.
هم TLS و هم SSL پروتکلهای ارتباطی امن هستند که امکان رمزنگاری و احراز هویت را فراهم میکنند. هر دو از گواهی دیجیتال (Digital Certificate) استفاده میکنند که فرآیند Handshake را تسهیل کرده و ارتباط رمزنگاریشده را بین مرورگر و سرور برقرار میسازد.
نسخههای جدید TLS تقریباً هیچ تأثیر محسوسی بر عملکرد و سرعت بارگذاری برنامههای وب ندارند. از آنجا که فرآیند برقراری یک اتصال TLS پیچیده است، مقداری زمان بارگذاری (Load Time) و توان محاسباتی صرف میشود. در این فرآیند، کلاینت (مرورگر یا دستگاه کاربر) و سرور وب باید چندین بار تبادل داده داشته باشند تا اتصال ایمن برقرار شود. این تبادلات چند میلیثانیه به زمان بارگذاری اضافه میکنند و همچنین کمی از حافظه سرور و کلاینت را مصرف میکنند. با این حال، فناوریهایی وجود دارند که این تأخیر احتمالی ناشی از TLS Handshake را کاهش میدهند:
این بهبودها باعث شدهاند که TLS به یک پروتکل بسیار سریع تبدیل شود که تأثیر محسوسی بر زمان بارگذاری وبسایتها ندارد. از نظر هزینه محاسباتی نیز، امروزه این هزینهها بسیار ناچیز و قابل چشمپوشی هستند.
نسخه TLS 1.3 که در سال ۲۰۱۸ معرفی شد، حتی TLS را سریعتر کرده است. در این نسخه، فرآیند TLS Handshake تنها به یک مرحله رفت و برگشت نیاز دارد (به جای دو مرحله در نسخههای قبلی) و این باعث صرفهجویی در چند میلیثانیه میشود. همچنین، زمانی که کاربر قبلاً به یک وبسایت متصل شده باشد، TLS 1.3 میتواند با صفر مرحله رفت و برگشت (Zero-RTT) ارتباط را برقرار کند و سرعت را بیشتر افزایش دهد. در حالی که پروتکل TLS (Transport Layer Security) سازمانها را در برابر طیف گستردهای از تهدیدات سایبری و حوادث امنیتی محافظت میکند، یکی از مهمترین کاربردهای آن جلوگیری از حمله مرد میانی (Man-in-the-Middle Attack) است.
حمله مرد میانی یا MITM یکی از روشهای متداول هک و نفوذ در امنیت شبکه است که در آن مهاجم خود را بین دو طرف ارتباط (مثلاً مرورگر کاربر و وبسرور) قرار میدهد. در این حالت، کاربر تصور میکند بهطور مستقیم به سرور متصل است، در حالی که تمام اطلاعات ابتدا توسط مهاجم شنود و سپس به سرور منتقل میشود. این روش به مهاجم اجازه میدهد تا:
TLS با استفاده از مکانیزم رمزنگاری (Encryption)، احراز هویت (Authentication) و تضمین یکپارچگی دادهها (Data Integrity) از وقوع چنین حملاتی جلوگیری میکند.
فرض کنید کاربری در حال وارد کردن اطلاعات کارت بانکی خود در یک وبسایت فروشگاهی است. اگر سایت از HTTPS مبتنی بر TLS استفاده نکند، مهاجم میتواند با شنود شبکه (Sniffing) اطلاعات کارت را بهراحتی سرقت کند. اما زمانی که ارتباط از طریق TLS برقرار شده باشد، حتی در صورت رهگیری دادهها، محتوای انتقالی کاملاً رمزنگاری شده و غیرقابل استفاده برای مهاجم خواهد بود.
HTTPS (Hypertext Transfer Protocol Secure) در واقع نسخه ایمن پروتکل HTTP است که از پروتکلهای رمزنگاری TLS یا SSL برای محافظت از ارتباطات اینترنتی استفاده میکند. به زبان ساده، TLS پایه امنیتی HTTPS است؛ یعنی هر وبسایتی که از HTTPS استفاده میکند، در حقیقت در حال بهرهگیری از TLS برای رمزنگاری دادهها است.
زمانی که مرورگر کاربر قصد اتصال به یک وبسایت را دارد، ابتدا گواهی SSL/TLS آن وبسایت بررسی میشود. این گواهی نشان میدهد که سرور از استانداردهای امنیتی معتبر پیروی کرده و هویت آن توسط یک مرجع صدور گواهی (CA) تأیید شده است. اگر گواهی معتبر باشد، مرورگر ارتباط امنی را برقرار میکند.
پروتکلهای SSL و TLS نقش بسیار مهمی در ایجاد امنیت در فضای اینترنت دارند. SSL بهعنوان نسل اول این فناوری توانست زمینهساز ارتباطات ایمن در وب شود، اما به دلیل وجود ضعفهای امنیتی به مرور زمان کنار گذاشته شد. در مقابل، TLS بهعنوان نسخه بهبود یافته و جانشین SSL معرفی شد و امروزه استاندارد اصلی در رمزنگاری دادهها، احراز هویت سرورها و حفاظت از کاربران محسوب میشود.
TLS و HTTPS نیز مکمل یکدیگر هستند؛ TLS بهعنوان پروتکل رمزنگاری وظیفه اصلی در تأمین امنیت ارتباط را بر عهده دارد و HTTPS تنها نسخه ایمنشدهی HTTP است که از TLS استفاده میکند. بنابراین، وقتی میگوییم یک وبسایت HTTPS دارد، منظور این است که از TLS برای محافظت از دادهها و کاربران خود بهره میبرد

SSL نسخه قدیمیتر پروتکلهای امنیتی وب است که به دلیل مشکلات امنیتی کنار گذاشته شده. TLS نسخه بهبود یافته و امنتر SSL است که امروزه استاندارد اصلی برای رمزنگاری و امنیت وبسایتها محسوب میشود.
خیر. تمامی نسخههای SSL منسوخ شدهاند و استفاده از آنها توصیه نمیشود. امروزه وبسایتها از TLS 1.2 یا TLS 1.3 برای ایجاد ارتباط ایمن استفاده میکنند.
بله. گرچه اصطلاح SSL Certificate رایجتر است، اما در حقیقت این گواهیها از TLS برای رمزنگاری استفاده میکنند. اصطلاح SSL تنها به دلیل عادت کاربران و سابقه تاریخی همچنان استفاده میشود.
خیر. HTTPS تنها زمانی ایمن است که بر پایه پروتکل TLS/SSL اجرا شود. بدون TLS ،HTTPS وجود ندارد و سایت تنها از HTTP ناامن استفاده خواهد کرد.
استفاده از TLS و فعالسازی HTTPS نه تنها امنیت وبسایت و اعتماد کاربران را افزایش میدهد، بلکه یکی از فاکتورهای رتبهبندی گوگل است. وبسایتهایی که HTTPS ندارند، در مرورگرها ناامن نمایش داده میشوند و در نتایج جستجو جایگاه ضعیفتری خواهند داشت.
TLS 1.3 سریعتر و ایمنتر از نسخههای قبلی است. این نسخه تعداد مراحل Handshake را کاهش داده و الگوریتمهای رمزنگاری قدیمی و ناامن را حذف کرده است.