هر ارتباطی در اینترنت به رمزگذاری داده براساس پروتکلهای TLS/SSL نیاز دارد. آنچه که این سطح از حفاظت را در اتصالات اینترنت فراهم میکند، مجموعه رمزگذاری (Cipher suites) است.
مجموعه رمزنگاری یا Cipher Suites یک مجموعه از الگوریتمهایی است که از طریق پروتکلهای TLS (Transport Layer Security) و SSL (Secure Socket Layer) ایمنسازی ارتباط بین کاربر و سرور را فراهم میکند.
البته مجموعه رمزنگاری تنها وظیفه ایجاد امنیت را برعهده ندارد، بلکه سازگاری و عملکرد اتصالات HTTPS را نیز فراهم میکند. در ادامه این مطلب از وبسایت آکادمی آموزش ssl، بیشتر درباره مجموعه رمزگذاری یا Cipher Suites توضیح داده و جزئیات بیشتری را درباره آن بررسی میکنیم.
Cipher Suites چیست؟
مجموعه رمزنگاری یا Cipher Suites شامل یک مجموعه از دستورالعملها و پروتکل ها است که امکان اتصال ایمن ارتباط بین کلاینت و سرور را از طریق TLS، فراهم میکند. به عبارت دیگر، این مجموعه رمزنگاری داده اطلاعاتی را درباره نحوه برقراری ارتباط ایمن بین کلاینت و سرور را با استفاده از FTPS، SMTP، پروتکل https و دیگر شبکهها ارائه میدهد. این اطلاعات به شکل الگوریتمها و پروتکلهایی است که به تعیین چگونگی ایمن سازی یک وبسرور ترافیک وب مشتری کمک میکند.
مجموعه Cipher Suites تعیین میکند که سرور باید از کدام الگوریتمها برای ایجاد اتصال ایمن استفاده کند. در زمان اتصال یک HTTPS، دو طرف یعنی سرور وب و کلاینت یک تعامل (handshake) با SSL دارند. روند این تعامل نسبتاً پیچیده است که طی آن سرور و کلاینت یک مجموعه رمزنگاری واحد را انتخاب میکنند.
چرا به مجموعه رمزنگاری نیاز است؟
تعامل بین SSL با سرور وب و کلاینت روندی پیچیده است زیرا از انواع توابع رمزنگاری برای ایجاد اتصال HTTPS استفاده میکند. در این فرآیند، از الگوریتمها و توابع (functions) زیر استفاده میشود:
– یک الگوریتم تبادل کلیدی (key exchange algorithm)، برای تعیین نحوه مبادله کلیدهای متقارن
– یک الگوریتم احراز هویت یا امضای دیجیتال (authentication or digital signature algorithm)، برای تعیین نحوه اجرای احراز هویت سرور و هویت کلاینت (در صورت نیاز)
– رمزگذاری انبوه (bulk encryption cipher) برای رمزگذاری دادهها
– یک تابع hash/MAC برای چگونگی بررسی یکپارچگی دادهها
این رمزها در بخشهای مختلف اتصال مورد نیاز هستند. از جمله این موارد میتوان به احراز هویت، تولید و مبادله کلیدی و یک چکسام (checksum) برای اطمینان از یکپارچگی اشاره کرد. درباره مجموعه رمز مورد استفاده، سرویس گیرنده و وبسرور درباره الگوریتمهای استفاده شده تصمیم میگیرند. از آنجایی که سرورها، سیستم عاملها و مرورگرها متنوع هستند، به مجموعه رمزنگاریها نیاز داریم. در واقع، Cipher Suitesها به تطبیق ترکیب همه این موارد کمک میکنند.
Cipher Suites چگونه کار میکند؟
در زمان دست دادن یک اتصال در اینترنت و تبادل اطلاعات بین سرویس گیرنده و سرور، مرورگر و سرور وب اولویتبندی مجموعه رمزهای پشتیبانی را برای سازگاری بیشتر مقایسه میکنند. در نهایت این روند، مجموعه رمز مورد استفاده تعیین میشود. انتخاب یک مجموعه رمز بیشتر به وبسرور بستگی دارد. معمولاً مجموعه مورد استفاده ترکیبی از موارد زیر خواهد بود:
– الگوریتم های تبادل کلیدی (key exchange algorithm) مانند RSA، DH، ECDH، DHE، ECDHE یا PSK
– الگوریتم احراز هویت/امضای دیجیتال مانند RSA، ECDSA یا DSA
– الگوریتمهای رمزگذاری انبوه، مانند AES، CHACHA20، Camellia یا ARIA
– الگوریتمهای کد احراز هویت پیام (Message Authentication Code algorithms) مانند SHA-256 و POLY1305
نمونه مجموعه رمز زیر را بررسی کنید.
در این مجموعه، رمز ECDHE تعیین میکند که در حین اتصال و دست دادن سرور و کلاینت، کلیدها از طریق منحنی Diffie Hellman تبادل میشوند. مجموعه ECDSA نیز الگوریتم احراز هویت است. مجموعه AES128-GCM الگوریتم رمزگذاری انبوه است که در آن AES حالت شمارنده Galois 128 بیتی را اجرا میکند. مجموعه SHA-256 الگوریتم hash است.
کاربرد مجموعه رمزنگاری Cipher Suites
به طور کلی، مجموعه رمزنگاری برای اطمینان از امنیت، سازگاری و عملکرد اتصال https اهمیت دارند. به عبارت دیگر، Cipher Suites تعیین میکنند که باید از کدام الگوریتمها برای ایجاد یک اتصال امن و قابل اطمینان استفاده کرد. همانطور که پیش از این گفتیم، وبسرور به طور مستقیم مسئول تعیین مجموعه رمز مورد استفاده است.
به همین دلیل است که فهرست اولویت بندی مجموعه رمزها در وبسرور اهمیت دارد. ادمینها باید تلاش کنند که فهرست رمزهای صحیح را برای وبسرور انتخاب کنند. این انتخاب به نوع کاربرانی که به سرور متصل شده و فناوری مورد استفاده، بستگی دارد.
همچنین کاربران باید از ایجاد اتصالات امن مطمئن شوند. فروشندگان مرورگر زمانی که هر نوع آسیب احتمالی را در مجموعه رمزها بیابند، یک لیست پشتیبانی برای بروزرسانی ارائه میدهند تا کاربران با نصب افزونههای جدید، احتمال مواجهه با مشکلات مرتبط با سازگاری را کاهش دهند.
مجموعه رمزهای پشتیبانی شده در TLS 1.2
با ارائه نسخه TLS 1.2، کلیه پروتکلهای نسخههای قبلی یعنی TLS 1.0 و TLS 1.1 به دلایل امنیتی منسوخ شدهاند. در حال حاضر، تنها پروتکل های TLS 1.2 و TLS 1.3 قابل استفاده هستند که در مقاله تفاوت tls1.2 با tls1.3 به ویژگی های هر دو پرداختهایم. نسخه TLS 1.2 از 37 مجموعه رمزنگاری Cipher Suites پشتیبانی میکند. از بین تمام مجموعههای قابل پشتیبانی، توصیه میشود که از مواردی استفاده کنید که الگوریتم Diffie-Hellman را دارند. بنابراین، مجموعه رمزنگاریهایی که استفاده از آنها توصیه میشود، شامل موارد زیر است:
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
مجموعه رمزهای ضعیف و منسوخ شده
زمانی که نسخه TLS 1.3 معرفی شد، روند بهبود امنیت پروتکل با تغییرات گسترده و مهمی مواجه شد. برای مثال، قبل از هر چیز مجموعه رمزهای قدیمی که ناامن محسوب میشدند، منسوخ شده و دیگر پشتیبانی نمیشوند. از جمله این مجموعه رمزهای قدیمی عبارت است از:
- RC4
- DSA
- MD5
- SHA-1
- منحنیهای ضعیف Weak Elliptic Curves
- تبادل کلیدی RSA (RSA Key Exchange)
- Static Diffie-Hellman (DH, ECDH)
- رمزهای بلوکی یا CBC (Block ciphers)
- رمزهای غیر AEAD (Non-AEAD ciphers)
پشتیبانی از مجموعه رمزهای TLS 1.3
یکی از ویژگیهای محسوس در نسخه TLS 1.3 آن است که مجموعه رمزهای استفاده شده در آن نسبت به نسخه TLS 1.2 بسیار کوتاهتر هستند. یعنی در این نسخه، مجموعه رمزها نوع گواهی (اعم از RSA یا ECDSA) و مکانیسم تبادل کلید (DHE یا ECDHE) را شامل نمیشوند. بنابراین، تعداد بخشهای لازم برای تعیین پارامترهای رمزگذاری، به دو پارامتر (از چهار پارامتر) کاهش یافته است. شکل زیر، مجموعه رمزهای استفاده شده در نسخه TLS 1.3 را نشان میدهد.
کلاینت با اطلاع از این مسئله که الگوریتم Ephemeral Diffie-Hellman برای فرآیند تبادل کلید یا key exchange استفاده میشوند، دست دادن را آغاز کرده و میتواند در پیام Client Hello بخش خود را ارسال کند. مزیت اصلی در این نسخه، کاهش روند دست دادن به یک رفت و برگشت است. مجموعه رمزهای پشتیبانی شده در نسخه TLS 1.3 به پنج نوع رمزگذاری کاهش یافته و شامل موارد زیر است:
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256
TLS_AES_128_CCM_8_SHA256
TLS_AES_128_CCM_SHA256
انتخاب Cipher Suites
به دلیل تفاوت در ساختار، مجموعه رمزهای قابل پشتیبانی در TLS 1.3 را نمیتوان در نسخههای قدیمیتر TLS استفاده کرد. ادمینهای سایت باید سرورهای وب را به گونهای پیکربندی کنند که با هر دو مجموعه رمزهای پشتیبانی شده در دو نسخه TLS 1.2 و TLS 1.3 سازگار باشند. از آنجایی که بسیاری شرکتها همچنان به نسخه TLS 1.2 متکی هستند، بهتر است تنها پشتیبانی TLS 1.3 را انتخاب نکنید. مرورگر موزیلا توصیه میکند که برای سرورهای وب با استفاده از پروتکل TLS از سه پیکربندی زیر برای مجموعه رمزگذاریها استفاده کنید.
- مدرن
این پیکربندی سطح بالایی از امنیت را فراهم کرده و برای کلاینتهایی که از TLS 1.3 استفاده میکنند مناسب است زیرا به سازگاری با نسخههای قبلی نیاز ندارد.
- متوسط
این پیکربندی نیز از امنیت بالایی برخوردار بوده و با هر کلاینت که طی 5 سال گذشته (یا بیشتر) منتشر شده، سازگاری دارد. در واقع این یک پیکربندی همه جانبه است که به سازگاری با کلاینتهای قدیمی مانند ویندوز XP یا نسخههای قدیمی OpenSSL نیازی ندارد.
- قدیمی
این در واقع راهحل نهایی برای سرویسهایی است که کلاینتهای بسیار قدیمی مانند اینترنت اکسپلورر 8 (ویندوز XP)، جاوا 6 یا OpenSSL 0.9.8 به آن دسترسی دارند.
جمعبندی نهایی
مجموعههای رمزنگاری یا Cipher Suites ترکیبی از رمزهای استفاده شده در زمان دست دادن (handshaking) پروتکل SSL/TSL است که برای تعیین تنظیمات امنیتی در اتصال HTTPS استفاده میشوند. برای اطمینان از امنیت، عملکرد و سازگاری ارتباطات در HTTPS، لازم است تا مجموعه رمزهای مناسب هم در وبسرور و هم در سرویس گیرنده انتخاب شوند. در این مطلب بیشتر درباره Cipher Suites توضیح داده و علاوهبر چگونگی عملکرد این مجموعههای رمزگذاری، دیدیم که چرا به این پروتکل برای امنیت بیشتر سایت نیاز داریم. همچنین دیدیم که کدام مجموعه رمزها برای هر یک از نسخههای TLS 1.2 و TLS 1.3 مناسب است.
سوالات متداول
1- Cipher Suites چه کاری انجام میدهد؟
Cipher Suites مجموعهای از الگوریتمهای رمزنگاری است. اجرای SSP کانال پروتکلهای TLS/SSL از الگوریتمهایی cipher suite برای ایجاد کلیدها و رمزگذاری اطلاعات استفاده میکند.
2- از Cipher Suites در کجا استفاده میشود؟
مجموعه رمز در اتصالات شبکه ایمن شده توسط SSL/TLS استفاده میشود. این بدان معنا است که پروتکلهای شبکه مانند HTTPS، FTPS، WebDAVS، AS2، POP3، IMAP و SMTP همگی از مجموعههای رمز استفاده میکنند.
3- بهترین Cipher Suites چیست؟
رمزهای مبتنی بر AES نسبت به رمزهای مبتنی بر 3DES، DES و RC4 ایمن تر هستند. رمزهای AES-GCM امن تر از رمزهای AES-CBC هستند.