دستدهی TLS: چگونه رمزنگاری نامتقارن و متقارن برای امنسازی ترافیک وب ترکیب میشوند
دستدهی (Handshake) پروتکل امنیت لایه انتقال (TLS) با استفاده از رمزنگاری نامتقارن سنگین، یک کلید متقارن سریع را به صورت امن مبادله میکند. این فرآیند در عرض میلیثانیه یک نشست رمزگذاری شده ایجاد میکند که ضمن حفظ سرعت بالای شبکه، دادهها را از رهگیری محافظت میکند.
به قلم کامران صادقی
این خبر را به اشتراک بگذارید
- مهندسان پروتکل
- طرفدار محرمانگی پیشرو سختگیرانه و منسوخ کردن مجموعههای رمز آسیبپذیر قدیمی.
- حامیان عملکرد وب
- اولویتبندی کاهش تأخیر رمزنگاری از طریق دستدهیهای تک رفت و برگشت و ۰-RTT.
- مدیران امنیت سازمانی
- برای دیدپذیری شبکه ارزش قائل هستند و اغلب به جعبههای میانی (middleboxes) متکی هستند که توسط محرمانگی پیشرو سختگیرانه پیچیده میشوند.
دیدگاههایی که این گزارش پوشش نداده
- تولیدکنندگان سختافزار قدیمی
- اپراتورهای مراجع صدور گواهی (Certificate Authority)
چرا مهم است
دستدهی TLS مکانیزم پنهانی است که تجارت الکترونیک، بانکداری آنلاین و ارتباطات خصوصی را ممکن میسازد. درک این موضوع که چگونه این فرآیند رمزنگاری نامتقارن سنگین را با رمزهای متقارن سریع متعادل میکند، نشان میدهد که چرا ترافیک وب مدرن بدون قربانی کردن سرعت بارگذاری صفحات، امن باقی میماند.
هنگامی که یک مرورگر درخواست یک صفحه وب امن را میدهد، در عرض ۳۰۰ میلیثانیه پس از باز شدن اتصال TCP، یک مذاکره رمزنگاری تعیین میکند که آیا ترافیک از رهگیری در امان خواهد بود یا خیر. این فرآیند، یعنی دستدهی (Handshake) امنیت لایه انتقال (TLS)، امنیت رمزنگاری نامتقارن را با سرعت رمزنگاری متقارن ترکیب میکند تا یک نشست امن برقرار شود. Cloudflare اشاره میکند که «دستدهی TLS هر زمان که کاربر از طریق HTTPS به وبسایتی میرود و مرورگر برای اولین بار شروع به پرسوجو از سرور مبدأ وبسایت میکند، رخ میدهد.»[4]
چالش اصلی مهندسی ارتباطات امن، توزیع کلید است: هر دو طرف برای رمزگذاری دادهها به یک راز مشترک نیاز دارند، اما باید بر سر آن راز در شبکهای که فعالانه تحت نظارت است، توافق کنند. رمزنگاری نامتقارن، که از یک کلید عمومی برای رمزگذاری و یک کلید خصوصی برای رمزگشایی استفاده میکند، مشکل توزیع را حل میکند اما یک جریمه عملکردی شدید به همراه دارد. انجمن اینترنت (The Internet Society) اشاره میکند که «یک کلید نامتقارن ۲۰۴۸ بیتی تقریباً معادل یک کلید متقارن ۱۱۲ بیتی» از نظر قدرت رمزنگاری است، که محاسبات نامتقارن را تا هزار برابر از نظر محاسباتی فشردهتر میکند.[3]
برای جلوگیری از فلج شدن سرعت شبکه، دستدهی TLS از رمزنگاری نامتقارن سنگین صرفاً برای احراز هویت اولیه و تبادل کلید استفاده میکند. هنگامی که یک کانال امن برقرار شد، پروتکل برای انتقال واقعی دادههای انبوه به رمزنگاری متقارن – معمولاً استاندارد رمزگذاری پیشرفته (AES) با استفاده از کلیدهای ۱۲۸ بیتی یا ۲۵۶ بیتی – تغییر وضعیت میدهد.[3][6]
دستدهی بلافاصله پس از برقراری اتصال زیربنایی TCP آغاز میشود. کلاینت با ارسال پیام «سلام کلاینت» (Client Hello) توالی را شروع میکند. این بسته شامل بالاترین نسخه TLS پشتیبانی شده توسط کلاینت، فهرستی از مجموعههای رمز قابل قبول، و یک مقدار تصادفی ۳۲ بایتی تولید شده که به عنوان تصادفی کلاینت (client random) شناخته میشود، است.[1][4]
سرور با پیام «سلام سرور» (Server Hello) پاسخ میدهد و قویترین مجموعه رمز مورد حمایت متقابل را انتخاب میکند. همچنین تصادفی سرور ۳۲ بایتی خود و گواهی دیجیتال X.۵۰۹ خود را ارسال میکند. کلاینت این گواهی را در برابر مخزن محلی مراجع صدور گواهی (Certificate Authorities) مورد اعتماد خود تأیید میکند، مالکیت قانونی سرور بر دامنه درخواستی را تأیید کرده و از رهگیری حمله مرد میانی جلوگیری میکند.[4]
با تأیید هویت سرور، دو طرف باید راز مشترک را تولید کنند. در دستدهیهای قدیمیتر مبتنی بر RSA، کلاینت یک رشته تصادفی از بایتها به نام راز پیشا-مستر (premaster secret) تولید میکند، آن را با کلید عمومی سرور رمزگذاری کرده و ارسال میکند. از آنجایی که فقط سرور کلید خصوصی مربوطه را در اختیار دارد، تنها سرور میتواند راز پیشا-مستر را رمزگشایی کند.[4]
از آنجایی که فقط سرور کلید خصوصی مربوطه را در اختیار دارد، تنها سرور میتواند راز پیشا-مستر را رمزگشایی کند.
پیادهسازیهای مدرن TLS به شدت تبادل کلید دیفی-هلمن زودگذر (ECDHE) را به RSA ترجیح میدهند. به جای اینکه کلاینت یک راز رمزگذاری شده ارسال کند، هم کلاینت و هم سرور پارامترهای ریاضیاتی را مبادله میکنند که به آنها اجازه میدهد به طور مستقل یک راز پیشا-مستر منطبق را محاسبه کنند. این روش محرمانگی پیشرو (forward secrecy) را فراهم میکند: از آنجایی که کلیدهای نشست مستقیماً از کلید خصوصی استاتیک سرور استخراج نمیشوند، مهاجمی که ترافیک رمزگذاری شده را ضبط میکند و بعداً کلید خصوصی را به سرقت میبرد، همچنان نمیتواند دادههای تاریخی را رمزگشایی کند.[3][4]
هنگامی که هر دو طرف راز پیشا-مستر را در اختیار دارند، از یک تابع شبه تصادفی (PRF) برای ترکیب آن با تصادفی کلاینت ۳۲ بایتی و تصادفی سرور ۳۲ بایتی استفاده میکنند. طبق مشخصات RFC ۵۲۴۶ کارگروه مهندسی اینترنت، این عملیات ورودیها را به یک راز مستر ۴۸ بایتی گسترش میدهد.[1]
سپس راز مستر ۴۸ بایتی دوباره از طریق PRF تغذیه میشود تا کلیدهای نهایی نشست متقارن تولید شوند. این کلیدها شامل کلید رمزگذاری نوشتن کلاینت، کلید رمزگذاری نوشتن سرور و کلیدهای کد احراز هویت پیام (MAC) هستند که برای تأیید یکپارچگی دادهها استفاده میشوند. هم کلاینت و هم سرور یک پیام نهایی «تمام شد» (Finished) ارسال میکنند که با کلیدهای نشست تازه تولید شده رمزگذاری شده است. اگر هر دو طرف با موفقیت پیامهای «تمام شد» را رمزگشایی و MAC آنها را تأیید کنند، دستدهی کامل میشود.[1][4]
پس از دستدهی، پروتکل رکورد TLS انتقال دادههای برنامه را بر عهده میگیرد. لایه رکورد دادهها را به بلوکهای قابل مدیریت ۲^۱۴ بایتی یا کمتر تکهتکه میکند. هر تکه فشرده شده، با استفاده از کلیدهای نشست متقارن رمزگذاری شده و با یک MAC که شامل یک شماره توالی است، ضمیمه میشود. این شماره توالی تضمین میکند که هر پیام گمشده، اضافی یا تکراری بلافاصله توسط طرف گیرنده شناسایی شود.[1]
این پروتکل دستخوش نوسازی تهاجمی شده است تا آسیبپذیریهای قدیمی را حذف کند. MDN Web Docs گزارش میدهد که «همه مرورگرهای اصلی در اوایل سال ۲۰۲۰ شروع به حذف پشتیبانی از TLS ۱.۰ و ۱.۱ کردند»، به طوری که مرورگرهایی مانند فایرفاکس از نسخه ۷۴ به بعد خطای سخت «اتصال امن ناموفق» (Secure Connection Failed) را برمیگردانند.[2]
استقرار TLS ۱.۳ این نوسازی را با حذف کامل پشتیبانی از تبادل کلید RSA و کاهش شدید تعداد مجموعههای رمز پشتیبانی شده، تسریع میکند. با فرض روش تبادل کلید ترجیحی سرور، TLS ۱.۳ مذاکره رمزنگاری را به یک رفت و برگشت کاهش میدهد. برای بازدیدکنندگان بازگشتی، حالت ۰-RTT (زمان رفت و برگشت صفر) را معرفی میکند که به کلاینت اجازه میدهد دادههای رمزگذاری شده برنامه را در همان اولین پیام خود ارسال کند.[4]
اتکای پروتکل به مراجع صدور گواهی شخص ثالث (Certificate Authorities) همچنان آسیبپذیری ساختاری اصلی آن است. اگر یک CA مورد اعتماد به خطر بیفتد یا مجبور شود، مهاجمان میتوانند گواهیهای جعلی صادر کنند که فاز احراز هویت دستدهی را به طور کامل دور میزنند. تا زمانی که مدلهای احراز هویت مبتنی بر DNS به پذیرش گسترده دست یابند، قطعیت ریاضیاتی دستدهی TLS همچنان به امنیت عملیاتی سازمانهایی که گواهیها را صادر میکنند، وابسته خواهد بود.[3][5][7]
بررسی عمیق دیدگاهها
مهندسان پروتکل
طرفدار محرمانگی پیشرو سختگیرانه و منسوخ کردن مجموعههای رمز آسیبپذیر قدیمی.
مهندسانی که استاندارد TLS را طراحی میکنند، استدلال میکنند که پشتیبانی از رمزنگاری قدیمی یک آسیبپذیری ساختاری است. آنها اشاره میکنند که الگوریتمهای قدیمیتر، مانند تبادل کلید RSA یا هشینگ SHA-۱، اتصالات را در برابر حملات تنزل (downgrade attacks) آسیبپذیر میسازند، جایی که مهاجمان مخرب نشست را مجبور به استفاده از وضعیت رمزگذاری ضعیفتر میکنند. با اجرای سختگیرانه TLS ۱.۳ و دیفی-هلمن زودگذر، آنها محرمانگی پیشرو را تضمین میکنند و اطمینان میدهند که حتی اگر کلید خصوصی سرور در آینده به خطر بیفتد، ترافیک گذشته برای همیشه رمزگذاری شده باقی میماند.
حامیان عملکرد وب
اولویتبندی کاهش تأخیر رمزنگاری از طریق دستدهیهای تک رفت و برگشت و ۰-RTT.
حامیان عملکرد تأکید میکنند که امنیت نباید به قیمت تأخیر تمام شود و خاطرنشان میکنند که هر میلیثانیه اضافه شده به دستدهی، تجربه کاربر نهایی را کاهش میدهد. آنها از TLS ۱.۳ حمایت میکنند زیرا مذاکره رمزنگاری را از دو رفت و برگشت به یک رفت و برگشت کاهش میدهد، با فرض روش تبادل کلید ترجیحی سرور. برای بازدیدکنندگان بازگشتی، آنها به شدت ویژگی ۰-RTT (زمان رفت و برگشت صفر) را ترویج میکنند که به کلاینت اجازه میدهد دادههای رمزگذاری شده برنامه را در همان اولین پیام خود ارسال کند.
مدیران امنیت سازمانی
برای دیدپذیری شبکه ارزش قائل هستند و اغلب به جعبههای میانی متکی هستند که توسط محرمانگی پیشرو سختگیرانه پیچیده میشوند.
تیمهای امنیتی شرکتی استدلال میکنند که رمزگذاری کامل سرتاسری نقاط کور خطرناکی را در شبکههای خود ایجاد میکند. آنها از نظر تاریخی به کلیدهای استاتیک RSA متکی بودند تا ترافیک داخلی را برای بدافزار یا خروج دادهها با استفاده از جعبههای میانی شبکه رمزگشایی و بازرسی کنند. از آنجایی که TLS مدرن محرمانگی پیشرو سختگیرانه را اعمال میکند، این مدیران اکنون مجبورند معماریهای پروکسی پیچیده و پرمصرفی را برای حفظ دیدپذیری ترافیک عبوری از مرزهای خود مستقر کنند.
نکات کلیدی
- دستدهی TLS از رمزنگاری نامتقارن کُند برای توافق امن بر سر یک کلید متقارن سریع استفاده میکند.
- کلاینت و سرور اعداد تصادفی ۳۲ بایتی و یک راز پیشا-مستر (premaster secret) را مبادله میکنند تا یک راز مستر (master secret) ۴۸ بایتی تولید شود.
- پیادهسازیهای مدرن TLS از دیفی-هلمن زودگذر (ephemeral Diffie-Hellman) برای تضمین محرمانگی پیشرو (forward secrecy) استفاده میکنند و ترافیک گذشته را از لو رفتن کلید در آینده محافظت میکنند.
- TLS ۱.۳ دستدهی را به یک رفت و برگشت (round trip) کاهش میدهد و حالت ۰-RTT را برای بازدیدکنندگان بازگشتی معرفی میکند.
- پس از تکمیل دستدهی، پروتکل رکورد TLS دادههای برنامه را تکهتکه، رمزگذاری و احراز هویت میکند.
منابع
[1]IETFمهندسان پروتکلRFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2
مطالعه در IETF →
[2]MDN Web Docsحامیان عملکرد وبTransport Layer Security (TLS) - Glossary
مطالعه در MDN Web Docs →
[3]Internet Societyمهندسان پروتکلWhat is TLS & How Does it Work?
مطالعه در Internet Society →
[4]Cloudflareحامیان عملکرد وبWhat Happens in a TLS Handshake? | SSL Handshake
مطالعه در Cloudflare →
[5]IBMمدیران امنیت سازمانیHow TLS provides identification, authentication, confidentiality, and integrity
مطالعه در IBM →
[6]F5حامیان عملکرد وبWhat is SSL/TLS Encryption?
مطالعه در F5 →
[7]تیم سردبیری کوهستانمدیران امنیت سازمانیتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
نظرات
هر زاویه. هر روز.
دریافت راهنماها اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.



