TLS و کانالهای امن
امنیت لایه انتقال (TLS) پروتکلی است که بیشتر ارتباطات اینترنتی را ایمن میکند و با ترکیب تبادل کلید احراز هویت شده و رمزنگاری احراز هویت شده، یک کانال محرمانه و با محافظت یکپارچگی بین دو نقطه پایانی ایجاد میکند.
Definition
یک پروتکل کانال امن مانند TLS، بین دو طرف، نشستی را برقرار میکند که محرمانگی، یکپارچگی و احراز هویت تمام دادههای مبادله شده را تضمین میکند، با انجام یک تبادل کلید احراز هویت شده و سپس رمزنگاری احراز هویت شده ترافیک.
Scope
این موضوع پروتکلهای کانال امن را پوشش میدهد، با TLS به عنوان مثال اصلی: دستدهی (handshake) که سرور (و به صورت اختیاری کلاینت) را احراز هویت میکند و کلیدهای نشست را برقرار میسازد، لایه رکورد (record layer) که رمزنگاری احراز هویت شده را فراهم میکند، محرمانگی پیشرو (forward secrecy) و محافظت در برابر تنزل (downgrade protection)، و درسهایی از حملات تاریخی. این موضوع به چگونگی مونتاژ بلوکهای سازنده رمزنگاری در یک پروتکل مستقر میپردازد. زیرساخت گواهی (PKI) و اصول اولیه فردی، که در موضوعات مرتبط دیگر بررسی میشوند، از این بحث مستثنی هستند.
Core questions
- چگونه دستدهی TLS سرور را احراز هویت میکند و بر روی کلیدهای نشست توافق میکند؟
- چگونه لایه رکورد هر پیام را با رمزنگاری احراز هویت شده محافظت میکند؟
- چگونه محرمانگی پیشرو (forward secrecy) به دست میآید و چرا برای ترافیک ضبط شده اهمیت دارد؟
- چگونه از حملات تنزل (downgrade) و مذاکره مجدد (renegotiation) جلوگیری میشود؟
- حملات تاریخی (BEAST, POODLE, Heartbleed) چه درسهایی در مورد طراحی پروتکل و پیادهسازی به ما آموختند؟
Key concepts
- دستدهی TLS
- لایه رکورد
- رمزنگاری احراز هویت شده (AEAD)
- تبادل کلید زودگذر (ECDHE)
- محرمانگی پیشرو
- احراز هویت سرور و کلاینت
- حملات تنزل و مذاکره مجدد
- از سرگیری نشست
- مذاکره مجموعه رمز
Key theories
- پروتکل دستدهی به علاوه رکورد
- TLS یک دستدهی تبادل کلید احراز هویت شده — که هویت را از طریق گواهیها تأیید میکند و کلیدهای نشست را استخراج میکند — را از یک لایه رکورد که دادههای برنامه را با آن کلیدها رمزنگاری و احراز هویت میکند، جدا میکند و به طور تمیز احراز هویت، توافق کلید و محافظت انبوه را ترکیب میکند.
- محرمانگی پیشرو و محافظت در برابر تنزل
- TLS 1.3 دیفی-هلمن زودگذر (منحنی بیضوی) را برای محرمانگی پیشرو اجباری میکند و رونوشت دستدهی را به برنامه کلید متصل میکند تا یک مهاجم فعال نتواند بدون شناسایی، تنزل به پارامترهای ضعیفتر را تحمیل کند.
Mechanisms
در TLS 1.3، کلاینت سهمهای تبادل کلید و پارامترهای پشتیبانی شده خود را ارسال میکند؛ سرور با سهم دیفی-هلمن زودگذر (ephemeral Diffie-Hellman)، گواهی و امضایی بر روی رونوشت دستدهی پاسخ میدهد، و هر دو کلیدهای نشست را از طریق یک تابع اشتقاق کلید (HKDF) استخراج میکنند. سپس لایه رکورد تمام دادهها را با یک رمز AEAD (مانند AES-GCM یا ChaCha20-Poly1305) محافظت میکند. رونوشت برای جلوگیری از دستکاری یا تنزل احراز هویت میشود، و دستدهی در یک رفت و برگشت کامل میشود، با از سرگیری اختیاری بدون رفت و برگشت (zero-round-trip resumption).
Clinical relevance
TLS اکثریت قریب به اتفاق ترافیک اینترنت را ایمن میکند: HTTPS برای وب، انتقال ایمیل امن، APIها، VPNها و پیامرسانی همگی از طریق آن انجام میشوند. صحت آن مستقیماً تعیین میکند که آیا گذرواژهها، پرداختها و دادههای شخصی از مهاجمان شبکه محافظت میشوند یا خیر. مهاجرت از SSL/TLS اولیه معیوب به TLS 1.3 — و تحلیلی که همراه آن بود — الگویی برای تکامل پروتکل تحت فشار دنیای واقعی است.
Evidence & guidelines
TLS 1.3 در RFC 8446 استاندارد شده و توصیه میشود؛ SSL 3.0، TLS 1.0 و TLS 1.1 منسوخ شدهاند (RFC 8996). NIST SP 800-52 راهنمایی پیکربندی را ارائه میدهد. TLS 1.3 با تحلیل رسمی گستردهای توسعه یافت و ضعفهای قدیمی (تبادل کلید RSA ایستا، حالت CBC، مذاکره مجدد) را که حملات قبلی مانند BEAST، POODLE و نقص پیادهسازی Heartbleed را ممکن میساختند، حذف کرد.
History
نتاسکیپ SSL را در سالهای 1994-1995 ایجاد کرد؛ SSL 3.0 توسط IETF به عنوان TLS 1.0 (1999) بازطراحی شد و از طریق TLS 1.2 (2008) بهبود یافت. یک دهه حملات — BEAST، CRIME، POODLE، باگ پیادهسازی Heartbleed، Logjam و FREAK — ضعفها را در حالتهای قدیمی و مدیریت تنزل آشکار کرد. TLS 1.3 (RFC 8446, 2018) یک بازطراحی عمده با محرمانگی پیشرو اجباری، دستدهی سریعتر و تحلیل امنیتی رسمی بود.
Key figures
- Eric Rescorla
- Hugo Krawczyk
- Kenny Paterson
- Taher ElGamal
Related topics
Seminal works
- rfc8446
- stallings2017
- katz2020
Frequently asked questions
- تفاوت بین SSL و TLS چیست؟
- TLS جانشین SSL است. SSL (نسخههای 2.0 و 3.0) منسوخ و ناامن است؛ 'SSL' به عنوان یک اصطلاح عامیانه باقی مانده است، اما تمام اتصالات وب امن فعلی از TLS استفاده میکنند، که TLS 1.3 نسخه مدرن آن است.
- آیا TLS من را از یک وبسایت مخرب محافظت میکند؟
- TLS فقط تضمین میکند که شما یک کانال محرمانه و احراز هویت شده به سروری که در گواهی نامگذاری شده است، دارید — این تأیید میکند که شما با آن دامنه صحبت میکنید، نه اینکه آن دامنه قابل اعتماد است. یک سایت فیشینگ میتواند یک گواهی معتبر برای دامنه خود (مشابه) ارائه دهد، بنابراین TLS صداقت سایت را تضمین نمیکند.