امنیت و SSL

مبانی SSL/TLS

TLS چطور اتصال‌ها را امن می‌کند — محرمانگی، تمامیت داده، احراز هویت و هندشیکی که همه‌ی این‌ها را ممکن می‌سازد.

1. SSL/TLS چه مشکلی را حل می‌کند؟

بدون SSL/TLS ترافیک شبکه به صورت متن ساده منتقل می‌شود — هر کسی در مسیر بین کلاینت و سرور می‌تواند آن را بخواند، تغییر دهد یا جعل کند.

محرمانگی (Confidentiality)جلوگیری از این‌که دیگران بتوانند داده‌ی در حال انتقال را بخوانند
تمامیت داده (Integrity)جلوگیری از این‌که دیگران بتوانند داده را به‌طور مخفیانه تغییر دهند
احراز هویت (Authentication)اطمینان از این‌که واقعاً با سرور اصلی و معتبر صحبت می‌کنید
  • هر کسی روی یک وای‌فای مشترک، ISP، یا روتر آلوده می‌تواند ترافیک متنیِ بدون رمز را بخواند
  • رمزعبورها، کوکی‌ها و داده‌های شخصی بدون رمزگذاری در معرض دید هستند
  • مهاجم می‌تواند در حین انتقال، محتوا را بی‌سروصدا تغییر دهد (تزریق تبلیغ، بدافزار و غیره)
  • بدون اعتبارسنجی گواهی، سرورهای جعلی می‌توانند خودشان را به جای سرویس‌های واقعی جا بزنند

ورود با HTTP روی وای‌فای کافه، اطلاعات ورود (نام کاربری/رمز) را به‌صورت متن ساده می‌فرستد. HTTPS آن‌ها را رمزگذاری می‌کند — حتی اگر ترافیک ضبط شود، برای مهاجم رشته‌ای نامفهوم و غیرقابل خواندن است.

2. SSL در برابر TLS: اصطلاحات

SSL پروتکلی قدیمی و منسوخ است. TLS نسخه‌ی امن‌تر و جدیدتر آن است. در عمل هنوز می‌گویند «گواهی SSL»، اما پروتکلی که واقعاً استفاده می‌شود همیشه TLS است.

تاریخچه‌ی پروتکل
SSL 2.0 / 3.0—منسوخ و شکسته — استفاده نشود
TLS 1.0 / 1.1—Deprecated — در کلاینت‌های مدرن غیرفعال شده‌اند
TLS 1.2—به‌طور گسترده پشتیبانی می‌شود — همچنان در حال استفاده
TLS 1.3—استاندارد فعلی — سریع‌تر و امن‌تر
  • مردم می‌گویند «گواهی 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 نیست.

HTTPSHTTP روی TLS — وب‌سایت‌ها و REST APIها
SMTPS / IMAPSپروتکل‌های ایمیل روی TLS (پورت‌های 465 و 993)
FTPSFTP روی TLS — انتقال فایل رمزگذاری‌شده
پایگاه‌داده + TLSMySQL، PostgreSQL، MongoDB با TLS فعال
VPNOpenVPN و مشابه آن از TLS برای کانال کنترل استفاده می‌کنند
  • HTTPS متداول‌ترین و قابل‌مشاهده‌ترین کاربرد است — هر وب‌سایت مدرن باید از آن استفاده کند
  • مایکروسرویس‌های داخلی از طریق HTTPS یا gRPC امن‌شده با TLS با هم ارتباط دارند
  • TLS دوطرفه (mTLS) هم کلاینت و هم سرور را احراز هویت می‌کند — در سرویس‌مش‌ها (service meshes) رایج است

5. هندشیک TLS: مرحله به مرحله

قبل از ارسال هر داده‌ی کاربردی، کلاینت و سرور یک هندشیک را کامل می‌کنند تا الگوریتم‌ها را مذاکره، سرور را احراز هویت و کلیدهای متقارن مشترک را ایجاد کنند.

1

Client Hello

کلاینت نسخه‌های پشتیبانی‌شده‌ی TLS، مجموعه رمزها (cipher suites) و یک مقدار تصادفی را ارسال می‌کند.

2

Server Hello

سرور نسخه‌ی TLS و مجموعه رمز را انتخاب می‌کند، مقدار تصادفی خودش و گواهی X.509 را می‌فرستد.

3

اعتبارسنجی گواهی

کلاینت، اعتبار گواهی، تطابق دامنه و امضای CA را بررسی می‌کند. در صورت شکست، هشدار نمایش داده می‌شود.

4

مبادله‌ی کلید

ECDHE یا مشابه آن: هر دو طرف بدون ارسال مستقیم کلید، یک راز مشترک را محاسبه می‌کنند.

5

Finished

دو طرف صحت مشتق شدن کلیدها را تأیید می‌کنند. از این لحظه به بعد تمام داده‌ها با کلیدهای متقارن رمزگذاری می‌شود.

6

داده‌ی امن

درخواست‌ها و پاسخ‌های 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 لایه‌ی بنیادینی است که ارتباطات را در اینترنت و شبکه‌های داخلی امن می‌کند.

محرمانگیداده رمزگذاری می‌شود — در حین انتقال قابل خواندن نیست
تمامیت دادههرگونه دستکاری شناسایی و رد می‌شود
احراز هویتهویت سرور با گواهی X.509 و امضای CA تأیید می‌شود
  • سامانه‌های مدرن از TLS 1.2 / 1.3 استفاده می‌کنند — SSL قدیمی شکسته و غیرفعال است
  • رمزنگاری نامتقارن برای هویت در هندشیک و مبادله‌ی کلید
  • رمزنگاری متقارن (مثل AES-GCM) برای تمام داده‌های کاربردی حجیم
  • mTLS احراز هویت سمت کلاینت را برای سناریوهای سرویس به سرویس اضافه می‌کند