مبانی SSL/TLS
TLS چطور اتصالها را امن میکند — محرمانگی، تمامیت داده، احراز هویت و هندشیکی که همهی اینها را ممکن میسازد.
1. SSL/TLS چه مشکلی را حل میکند؟
بدون SSL/TLS ترافیک شبکه به صورت متن ساده منتقل میشود — هر کسی در مسیر بین کلاینت و سرور میتواند آن را بخواند، تغییر دهد یا جعل کند.
- هر کسی روی یک وایفای مشترک، ISP، یا روتر آلوده میتواند ترافیک متنیِ بدون رمز را بخواند
- رمزعبورها، کوکیها و دادههای شخصی بدون رمزگذاری در معرض دید هستند
- مهاجم میتواند در حین انتقال، محتوا را بیسروصدا تغییر دهد (تزریق تبلیغ، بدافزار و غیره)
- بدون اعتبارسنجی گواهی، سرورهای جعلی میتوانند خودشان را به جای سرویسهای واقعی جا بزنند
ورود با HTTP روی وایفای کافه، اطلاعات ورود (نام کاربری/رمز) را بهصورت متن ساده میفرستد. HTTPS آنها را رمزگذاری میکند — حتی اگر ترافیک ضبط شود، برای مهاجم رشتهای نامفهوم و غیرقابل خواندن است.
2. SSL در برابر TLS: اصطلاحات
SSL پروتکلی قدیمی و منسوخ است. TLS نسخهی امنتر و جدیدتر آن است. در عمل هنوز میگویند «گواهی SSL»، اما پروتکلی که واقعاً استفاده میشود همیشه TLS است.
- مردم میگویند «گواهی SSL» — اصطلاح دقیقتر «گواهی TLS» یا «گواهی X.509» است
- مرورگرها و سرورهای مدرن فقط از TLS 1.2 و TLS 1.3 استفاده میکنند
- SSL 2.0 و SSL 3.0 از نظر رمزنگاری شکستهاند و همهجا غیرفعال شدهاند
3. ویژگیهای امنیتی اصلی
TLS برای هر اتصالی که از آن حفاظت میکند سه تضمین بنیادی ارائه میدهد.
رمزگذاری (Encryption)
داده با استفاده از کلیدهای رمزنگاری به متن رمزشده (ciphertext) تبدیل میشود. ترافیک شنودشده بدون داشتن کلیدهای نشست قابل خواندن نیست.
تمامیت داده (Integrity)
رمزنگاری مبتنی بر MAC یا AEAD (مثل AES-GCM) هرگونه تغییر در حین انتقال را تشخیص میدهد. در صورت دستکاری داده، اتصال فوراً قطع میشود.
احراز هویت (Authentication)
سرور یک گواهی X.509 ارائه میکند که توسط یک CA مورد اعتماد امضا شده است. کلاینت دامنه، بازهی اعتبار و امضای CA را بررسی میکند.
اگر بررسی گواهی با خطا مواجه شود — دامنه اشتباه، تاریخ انقضا گذشته، خودامضا (self-signed) یا CA نامعتبر — مرورگر هشدار امنیتی نشان میدهد و اتصال را مسدود میکند.
4. TLS کجا استفاده میشود؟
TLS در لایهی انتقال کار میکند، بنابراین هر پروتکل سطحبالای دیگری میتواند روی آن سوار شود — فقط HTTPS نیست.
- HTTPS متداولترین و قابلمشاهدهترین کاربرد است — هر وبسایت مدرن باید از آن استفاده کند
- مایکروسرویسهای داخلی از طریق HTTPS یا gRPC امنشده با TLS با هم ارتباط دارند
- TLS دوطرفه (mTLS) هم کلاینت و هم سرور را احراز هویت میکند — در سرویسمشها (service meshes) رایج است
5. هندشیک TLS: مرحله به مرحله
قبل از ارسال هر دادهی کاربردی، کلاینت و سرور یک هندشیک را کامل میکنند تا الگوریتمها را مذاکره، سرور را احراز هویت و کلیدهای متقارن مشترک را ایجاد کنند.
Client Hello
کلاینت نسخههای پشتیبانیشدهی TLS، مجموعه رمزها (cipher suites) و یک مقدار تصادفی را ارسال میکند.
Server Hello
سرور نسخهی TLS و مجموعه رمز را انتخاب میکند، مقدار تصادفی خودش و گواهی X.509 را میفرستد.
اعتبارسنجی گواهی
کلاینت، اعتبار گواهی، تطابق دامنه و امضای CA را بررسی میکند. در صورت شکست، هشدار نمایش داده میشود.
مبادلهی کلید
ECDHE یا مشابه آن: هر دو طرف بدون ارسال مستقیم کلید، یک راز مشترک را محاسبه میکنند.
Finished
دو طرف صحت مشتق شدن کلیدها را تأیید میکنند. از این لحظه به بعد تمام دادهها با کلیدهای متقارن رمزگذاری میشود.
دادهی امن
درخواستها و پاسخهای HTTP به صورت رمزگذاریشده و با حفاظت از تمامیت داده منتقل میشوند.
در TLS 1.3 هندشیک در یک رفتوبرگشت (1-RTT) بهجای دو رفتوبرگشت کامل میشود و تأخیر را بهطور محسوسی کاهش میدهد.
6. رمزنگاری متقارن در برابر نامتقارن
TLS در هندشیک از رمزنگاری نامتقارن و برای دادههای حجیم از رمزنگاری متقارن استفاده میکند. این دو مکمل هم هستند.
نامتقارن (RSA / ECDSA)
جفتکلید: کلید عمومی در گواهی، کلید خصوصی روی سرور. برای اثبات هویت و مبادلهی کلید استفاده میشود. کند است — برای خود داده از آن استفاده نمیشود.
متقارن (AES-GCM)
یک کلید مشترک واحد که طی هندشیک مشتق شده است. برای رمزگذاری و حفاظت از تمامیت تمام دادههای کاربردی استفاده میشود. سریع است — مناسب برای انتقال حجیم.
- رمزنگاری نامتقارن مشکل توزیع کلید را حل میکند — نیازی به اشتراکگذاری قبلی یک راز نیست
- بعد از هندشیک، فقط کلیدهای متقارن استفاده میشوند — RSA/ECDSA مستقیماً به دادهی شما دست نمیزنند
- پیشگویی رو به جلو (Forward Secrecy) با ECDHE باعث میشود حتی اگر کلید خصوصی بعداً افشا شود، نشستهای قدیمی قابل رمزگشایی نباشند
7. مثالهای دنیای واقعی
TLS تقریباً در هر جریان دادهی حساسی حضور دارد — از نشستهای مرورگر تا ارتباط سرویسهای داخلی.
بانکداری آنلاین
https://bank.example.com — رمزگذاری اطلاعات ورود و تراکنشها
وایفای عمومی
HTTPS جلوی سرقت نشست (session hijacking) در هاتاسپاتهای کافه را میگیرد
APIهای داخلی
مایکروسرویسها روی HTTPS / mTLS — محافظت در برابر تهدیدهای داخلی
- بدون TLS: رمزعبورها، توکنها و کوکیها برای هر کسی در همان شبکه قابل مشاهدهاند
- با mTLS: هر دو طرف گواهی ارائه میکنند — در معماریهای Zero-Trust و سرویسمش استفاده میشود
- مرورگرها صفحات HTTP را با برچسب «امن نیست (Not Secure)» نمایش میدهند — و عملاً استفاده از ترافیک متنی را دلسرد میکنند
جمعبندی
SSL/TLS لایهی بنیادینی است که ارتباطات را در اینترنت و شبکههای داخلی امن میکند.
- سامانههای مدرن از TLS 1.2 / 1.3 استفاده میکنند — SSL قدیمی شکسته و غیرفعال است
- رمزنگاری نامتقارن برای هویت در هندشیک و مبادلهی کلید
- رمزنگاری متقارن (مثل AES-GCM) برای تمام دادههای کاربردی حجیم
- mTLS احراز هویت سمت کلاینت را برای سناریوهای سرویس به سرویس اضافه میکند