فناوری اطلاعاتوب

TLSv1.3 + 0-RTT

پروتکل TLSv1.3

این نسخه از TLS که برای تامین امنیت در پروتکل هایی مانند HTTPS، FTPS، SMTP و غیره استفاده می شود، در آگوست ۲۰۱۸ و تحت RFC8446 عرضه شده است. امروزه استفاده از این پروتکل بخصوص در سایت ها به دلایل زیر بسیار ضروری شده:

  • گوگل به سایت های https توجه بیشتری نشان می دهد.
  • برای استفاده از پروتکل HTTP/2 حتما باید از HTTPS استفاده کرد.
  • برای استفاده از Brotli حتما باید از HTTPS استفاده کرد.
  • استفاده از https باعث بهبود بخشیدن کارائی، امنیت و اعتماد می شود.

مزایای استفاده از TLS 1.3

بالاخره بعد از نزدیک به ۱۰ سال، یک بروزرسانی در پروتکل TLS انجام شد که ۲ پیشرفت قابل ملاحظه در زمینه کارائی و امنیت نسبت به نسخه قبلی تر یعنی ۱.۲ در آن دیده می شود.

عملکرد سریعتر

در نسخه قبلی تعداد round trip در یک TLS handshake دارای ۲ مرحله بود که در این نسخه به یک مرحله کاهش پیدا کرده است. اگر چه ممکن است خیلی به چشم نیاید ولی بطور کلی چندین میلی سکند از بار کاری سایت کم می کند. همچنین نسخه ۱.۳ یک ویژگی دیگر با نام zero-RTT نیز معرفی کرده است که بسیار برای بازدید کنندگانی که بعد از مدت کوتاهی دوباره به سایت شما برگشته اند و در واقع از همان session قبلی استفاده می کنند، عالی است زیرا بدلیل اینکه قابل اعتماد فرض شده اند دیگر مراحل round trip حذف می شود.

همچنین داخل شبکه های مدرن موبایل، در گوشی های تلفن به صورت معمول بیش از ۱۰۰ms تاخیر به هر درخواست اضافه می شود که در این نسخه از TLS به میزان زیادی از این تاخیرها کاسته می شود.

امنیت پیشرفته

با اینکه نسخه ۱.۲ کاملا امن است اما گاهی اوقات پیاده سازی آن نیاز به مهارت زیادی دارد و در صورت پیکربندی اشتباه، درب ها برای حملات سایبری باز خواهند بود. در نسخه ۱.۳ برای حفاظت بهتر، چندین ویژگی که منسوخ شده اند و به عنوان آسیب پذیری شناخته می شوند حذف شده اند، که شامل موارد زیر می باشند:

۳DES – AES-CBC – Arbitrary Diffie Hellman groups – Export ciphers – DES – MD5 – RC4 – RSA key transport – SHA-1

TLS 1.3 + Zero RTT

ویژگی 0RTT برای اولین بار در این نسخه از TLS استفاده شده است که با کمتر کردن یک مرحله ای round trip باعث بالاتر رفتن سرعت سایت می شود.

اساسا بازدیدکنندگان یک سایت در دو دسته مختلف زیر قرار می گیرند:

۱ – بازدیدکنندگانی که برای بار اول وارد سایت می شوند یا بعد از مدتی طولانی اقدام به باز کردن سایت می کنند.

۲ – بازدیدکنندگانی که بعد از مدت کوتاهی اقدام به باز کردن سایت می کنند و در نتیجه از همان session قدیمی خود استفاده می کنند.

برای کسانی که از دسته اول وارد سایت می شوند، نسخه ۱.۳ پروتکل TLS باعث بهبود عملکرد نسبت به نسخه ۱.۲ خواهد شد زیرا مراحل handshake را از ۲ مرحله به ۱ مرحله کاهش می دهد. با این حال برای کسانی که از دسته دوم وارد سایت شده اند هیچ تفاوتی بین دو نسخه ۱.۳ و ۱.۲ وجود ندارد و هر دو دارای یک مرحله Round Trip هستند، مگراینکه در نسخه ۱.۳ از ویژگی 0RTT استفاده شود.

با استفاده از zero-RTT هیچگونه handshake ی برای session هایی که برقرار هستند وجود نخواهد داشت و کاربر دیتای اولیه خود را که early data نامیده می شود به همراه (Pre shared key (PSK به عنوان مرحله ای از handshake مبادله می کند و سرور نیز دیتای درخواست شده را در پاسخ ارسال می کند. بنابراین هیچگونه round trip لازم نیست.

عکس 172

با وجود مزیت هایی که قابلیت zero-RTT برای ما ایجاد می کند یک مشکل امنیتی بزرگ نیز در بعضی از برنامه ها دارد و آن نیز حملاتی از نوع reply attack است. در نتیجه زمانی که TLS نسخه ۱.۳ را فعال می کنید اگر تصمیم به استفاده از قابلیت zero-RTT را ندارید که هیچ، وگرنه اگر تصمیم به فعال کردن آن دارید حتما می بایست anti-reply defence را در برنامه های مورد نظر بدرستی پیاده سازی کنید یعنی در لایه application می بایست تشخیص داده شود که درخواست وارده attack است یا نه. زیرا به این دلیل که مرحله round trip در zero-RTT حذف شده است، دیگر کلید PSK که در ابتدای ایجاد session بوجود آمده است، تغییر نمی کند و همیشه از همان استفاده می گردد. 

فعال کردن zero-RTT در HAProxy

بصورت پیش فرض با فعال کردن TLS 1.3 در HAProxy قابلیت zero-RTT فعال نمی شود و باید عبارت  allow-0rtt به خط bind یا server اضافه شود.

bind *:443  allow-0rtt ssl crt /etc/haproxy/certs/example.com/example.pem alpn h2,http/1.1

بعد از فعال کردن این قابلیت اطلاعات با هدر early data ارسال می شود.

فعال کردن zero-RTT در Apache

تاکنون (سال ۲۰۱۹) شما تنها می توانید TLS 1.3  را در آپاچی فعال کنید، اما قادر به استفاده از zero-RTT نیستید.

فعال کردن zero-RTT در Nginx

خط زیر را در قسمت configuration وارد می کنیم:

ssl_early_data on;

خط زیر را نیز در قسمت proxy directives وارد می کنیم:

proxy_set_header Early-Data $ssl_early_data;

نمایش بیشتر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا