TLS یا Transport Layer Security داده های ارسال شده از طریق اینترنت رو رمزگذاری میکنه تا اطمینان پیدا کنه که هکرها قادر به دیدن یا شنیدن این اطلاعات نیستن. مخصوصاً اطلاعات شخصی و حساس که شامل گذرواژه‌ها، شماره کارت‌های اعتباری و مکاتبات شخصی میشه.

به نظرتون این پروتکل دقیقاً چطوری کار میکنه و اصلاً دلیل اهمیتش چیه؟ آیا با پروتکل SSL تفاوتی داره؟

TLS چیست؟

TLS یا امنیت لایه انتقال ، یه پروتکل رمزنگاری است که امنیت نهایی داده های ارسال شده از طریق برنامه‌های اینترنتی رو فراهم میکنه. این برنامه بیشتر از روی آیکون قفلی که کنار بعضی از نشست‌های ایمن شده تو مرورگر ظاهر میشه یا استفاده‌ اون تو بعضی از مرورگرهای وب ایمن شده، برای کاربران آشناست. البته میشه از این پروتکل برای سایر برنامه‌های کاربردی مثل ایمیل، ویدئو یا VOIP، انتقال پرونده و غیره هم استفاده کرد.

TLS از لایه های سوکت ایمن یا SSL که در ابتدا توسط شرکت ارتباطات Netscape در سال ۱۹۹۴ برای تامین امنیت نشست‌های وب توسعه یافته بود، ساخته شد. SSL 1.0 هرگز به صورت عمومی متشر نشد در حالی که SSL 2.0 سریعاً توسط SSL 3.0 که TLS با توجه به اون ارائه شده، جایگزین شد.

TLS برای اولین بار در سال ۱۹۹۹ به عنوان یه پروتکل مستقل از برنامه ها بر پایه SSL 3.0 معرفی شد. البته TLS به کاربر اجازه میده تا هر جایی که لازم شد از TLS 1.0 به SSL 3.0 داون گرید بشه یعنی عقبگرد کنه و در حال حاضر اکثر مرورگرها از Transport Layer Security پشتیبانی میکنن.

لازمه که بگم TLS داده رو روی سیستم نهایی ایمن نمیکنه بلکه بهتون اطمینان میده که تحویل داده شما از طریق اینترنت هک یا استراق سمع نخواهد شد و تو اصل محتوا تغییری پیش نمیاد!

SSL چیست؟

همونطوری که در بالا براتون گفتم SSL مخفف عبارت Secure Socket Layer است که در سال ۱۹۹۴ توسط شرکت ارتباطی Netscape اختراع شد تا ارتباطات اینترنتی از طریق شبکه جهانی وب فراهم بشه! SSL 3.0 آخرین نسخه این پروتکل است که به طور گسترده تو سرورها مورد استفاده قرار میگیره و همه مرورگرها هم اون رو پشتیبانی میکنن. پروتکل SSL بهتون امکان میده تا داده های خصوصی رو به صورت آنلاین منتقل کنین. وقتی این گواهینامه روی سرور شما نصب شده باشه یه قفل سبزی رو با HTTPS نشون میده و امکان اتصال مطمئن از یه سرور وب به مرورگر وب رو فراهم میکنه.

چرا امنیت لایه انتقال اهمیت داره؟

خب تا این‌جای کار که متوجه شدین این پروتکل چیه بهتره بریم سراغ این که خب اصلاً چرا استفاده ازش اهمیت داره و انقد همه‌جا اسمش هست! این پروتکل از این جهت مهمه که میتونه وب اپلیکشین‌ها رو از حملاتی مثل نفوذ داده یا Data Breach و حملات DDoS در امان نگهداره. در حال حاضر HTTPS هایی که با TLS ایمن شدن یکی از استانداردهای خیلی رایج برای سایت ها به شمار میان مثلاً مرورگر کروم نسبت به سایت هایی که HTTPS ندارن حساسه و هر روز داره به تعداد کاربران اینترنت حساس به سایت هایی که آیکون قفل مربوط به HTTPS رو ارائه نمیدن، اضافه میشه.

پس توصیه من به شما اینه که روی استفاده اجباری کلیه مشتری‌ها و سرویس ها از TLS و ترجیحاً نسخه TLS 1.2 تاکید بشه. برای امنیت کامل لازمه که از این پروتکل به همراه یه X.509 که به عنوان PKI هم شناخته میشه و برای عموم قابل اعتماده و DNSSEC استفاده بشه.

نحوه عملکرد TLS به چه صورته؟

خب بریم سراغ نحوه عملکرد این پروتکل امنیتی و ببینیم که اصلاً چطوری میخواد از داده‌های شما در مقابل هکرها محافظت کنه!

نحوه عملکرد پروتکل

SSL و TLS یه ارتباط امن دوطرفه و تونل مانندی بین دوتا نقطه‌ای که در حال انتقال اطلاعات هستند برقرار میکنه و اغلب اوقات برای انتقال اطلاعات از بستر HTTP استفاده میشه ولی وقتی این ارتباط توسط SSL/TLS امن بشه، پروتکل انتقال اطلاعات HHTPS میشه، می‌خواین بیشتر براتون توضیح بدم؟ پس همراهی کنین:

TLS میتونه بالای یه پروتکل امنیتی انتقال مانند TCP استفاده بشه و سه تا قسمت اصلی هم داره:

  • رمزگذاری: داده هایی که از اشخاص ثالث منتقل میشن رو پنهان میکنه.
  • احراز هویت: تضمین میکنه که دو طرف انتقال، اطلاعات رو به کی ارسال میکنن!
  • سندیت: تایید میکنه که داده ها جعلی یا تحریف شده نیست.

اتصال TLS با استفاده از یه ترتیبی که ما بهش میگیم TLS Handshake شروع میشه. TLS Handshake یه پروسه برای پنهان کردن داده ها و کلیدهای هر بخش از ارتباطات اینترنتیه. پروسه Cypher Suite شامل گروهی از الگوریتم‌هاییه که جزئیاتی مثل مشخصات و داده‌های به اشتراک گذاشته شده که شبیه کلیدها شدن، رو در مراحل مختلفی مشخص میکنن.

TLS به لطف وجود تکنولوژی رمزنگاری کلید عمومی Public Key Cryptography میتونه مشخصات این کلیدها رو روی یه کانال رمزدار نشده تنظیم کنه.

همچنین با Handshake احراز هویت هم کنترل میشه که معمولاً تایید هویت سرور برای مشتری است. این پروسه توسط کلیدهای عمومی Public Key انجام میشه که تو قسمت‌ بعدی به طور مفصل براتون توضیح میدم.

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

وقتی که داده رمزدار و تایید هویت شده ما با یه کد MAC امضا میشه، گیرنده میتونه با تایید این کد، از درستی و پرفکت بودن داده مطمئن بشه. این عمل دقیقاً مثل بسته بندی داروهاست یعنی مصرف کننده میتونه از دست نخوردگی داروها، قبل از مصرف، مطمئن بشه.

چه تفاوتی بین TLS و SSL وجود داره؟

اول از همه باید بگم که TLS نتیجه تکامل و توسعه پروتکل SSL است که به وسیله Netscape طراحی شده. در واقع نسخه TLS 1.0 به عنوان نسخه SSL 3.1 شروع به توسعه کرد ولی قبل از این که به بازار عرضه بشه اسمش تغییر یافت تا نشون بده که دیگه به اون شرکت وابسته نیست.

پس بدونین که تنها تفاوت این دوتا مورد تو همین یه مورده!

HTTPS یکی از کاربردهای رمزنگاری TLS در پروتکل HTTP است که توسط همه وبسایت ها و یه سری از سرورهای وب، مورد استفاده قرار میگیره و بنابراین باید بگم که هر سایتی که از HTTPS و گواهینامه SSL استفاده میکنه صد در صد پروتکل TLS رو هم درون خودش داره!

تفاوت TLS و SSL از نظر رمزنگاری

تا این جای کار متوجه شدین که این دوتا پروتکل برای محافظت از ارتباطات میان برنامه های وب و وب سرورها استفاده میشن. همچنین خیلی از پروتکل‌های مبتنی بر TCP مثل ایمیل، پیام‎های فوری و بقیه موارد از TLS و SSL برای برقراری امنیت ارتباطشون استفاده میکنن.

برای نشون دادن این که دارن از پروتکل امنیتی استفاده میکنن یه حرف s به آخر اون‌ها اضافه میشه مثل: HTTPS, SMTPS, SIPS.

تو بیشتر موارد پیاده سازی TSL و SSL بر اساس کتابخونه OpenSSL صورت میگیره. ارائه این پروتکل ها برای کاربران در قالب تهیه گواهی SSL از طریق شرکت‌های معتبر تو این زمینه انجام میشه.

رمزنگاری

برای اینکه بتونین تفاوت TLS و SSL رو بهتر درک کنین باید با مفاهیم اساسی درباره انواع و روش‌های رمز نگاری آشنا بشین. درسته که در پروتکل TLS یا SSL از روش رمزنگاری نامتقارن استفاده میکنیم ولی تفاوت اصلی بین این دوتا پروتکل میزان پیچیدگی کدینگ اون‌هاست.

در کل رمز نگاری به فرآیندی گفته میشه که در اون یه پیام قابل خوندن مثل متن ساده، رمز گذاری و غیر قابل خوندن میشه و دیگه هیچ کسی به جز طرفین تایید شده نمیتونن اون رو بخونن. هدف اصلی این کار اینه که فرستنده مطئن بشه که فقط گیرنده مورد نظرش میتونه رمز پیام رو باز کنه و اون رو بخونه. در غیر این صورت شما هر داده‌ای رو که ارسال کنین امن نیست و هر کسی میتونه اون رو بخونه یا تغییرش بده و در واقع توسط هکرها مورد استفاده قرار بگیره!!

پس رمزنگاری برای اطلاعات محرمانه خیلی ضروریه چون این طوری از حمله هکرها و افراد دیگه در امان میمونه.

رمز نگاری متقارن

رمز نگاری متقارن فرآیندیه که در اون همون کلید برای رمزگذاری و رمزگشایی داده ها استفاده میشه. اگه مثلاً بخوایم بگیم اطلاعات قراره از ۱ به ۲ ارسال بشه، ۱ از یه کلید مشترک برای رمزگذاری داده ها استفاده میکنه و ۲ داده ها رو با همون کلید رمزگشایی میکنه!

البته این نوع رمزنگاری یه مشکل خیلی بزرگی هم داره و اون اینه که هر دو طرف مبادله باید یه کلید مشترک داشته باشن! مثلاً اگه کلیدتون لو بره یه هکر میتونه خیلی راحت اطلاعات شما رو هک کنه! تازه شما نمیتونین  فرستنده پیام رو تایید کنین، که خب اعتبار اون رو به خطر میندازه، معایب دیگه این نوع رمزنگاری عبارتند از:

  • کلید با استفاده از یه کانالی که قبلاً تاسیس شده توزیع میشه.
  • کلیدهای مختلف برای ارتباطات مختلفوجود داره و مدیریت اون کلیدها سخته.

و مزایای اون شامل موارد زیره:

  • امنیت
  • استفاده سریع و کم از منابع
  • عملیات ساده

رمز نگاری نامتقارن

رمزنگاری نامتقارن یا رمزنگاری عمومی که تو پاراگراف‌های بالا اسمش رو بردیم، همون مدلیه که تو پروتکل TLS و SSL برای انتقال اطلاعات ازش استفاده میکنن، این مدل از جفت کلید Key Pairs اصلی استفاده میکنه که شامل یه کلید عمومی Public Key و یه کلید خصوصی Private Key است.

تو این فرآیند داده های رمزنگاری شده، فقط با استفاده از یکی از کلیدهای جفت باز میشن. در واقع کلید عمومی میتونه با هرکسی به اشتراک گذاشته بشه ولی چیزی که مهمه کلید خصوصیه که فقط توسط صاحب و گیرنده اصلی اون داده یا اطلاعات شناخته میشه.

مزای این کلید عبارتند از:

  • توزیع آسان کلید
  • اعتبار سنجی
  • امنیت

و معایب اون شامل موارد زیر میشه:

  • کندتر از رمزنگاری متقارنه
  • به منابع بیشتری نیاز داره

TLS چطوری روی عملکرد وب اپلیکیشن تاثیر میذاره؟

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

خبر خوب اینه که ما یه سری تکنولوژی مثل Lag از طرف TLS Handshake داریم که باعث کاهش تاخیر میشن. یکی از اون‌ها TLS False Start است که به مشتری و سرور اجازه میده تا اطلاعاتی رو قبل از تکمیل شدن پروسه TLS Handshake تبادل کنن. تکنولوژی دیگه‌ای که باعث سریع شدن TLS میشه، TLS Session Resumption نام داره که به سرور و مشتری‌هایی که از قبل ارتباط داشتن اجازه میده تا از Handshake خلاصه شده‌ای استفاده کنن.

همین پیشرفت‌ها به TLS کمک کرده تا به یه پروتکل سریع تبدیل بشه و حتی تاثیر قابل توجه‌ای روی زمان بارگذاری داده ها نداشته باشه. درست مثل محاسبات کامپیوتری که وابسته به TLS است خود TLS هم تقریباً در مقایسه با استانداردهای امروزی هزینه خیلی ناچیزی داره. مثلاً زمانی که گوگل همه پلتفرم جیمیل خودش رو تو سال ۲۰۱۰ به HTTPS تغییر داد، دیگه نیازی نداشت تا از سخت افزارهای اضافه برای محاسبات کامپیوتری استفاده کنه.

بخاطر وجود رمزنگاری‌های TLS، زمان اضافی بارگذاری سرورهای گوگل تقریباً میشه گفت کمتر از یک درصد بود.

پس در نتیجه …

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

برای استفاده از این پروتکل امن میتونین گواهی TLS رو خریداری کنین و از اون در سرورهای شرکتتون استفاده کنین.