امنیت تقریباً هر اتصال اینترنتی به رمزگذاری SSL/TLS بستگی دارد. آنچه سطح حفاظت را برای این اتصالات تعیین می کند، انتخاب Cipher Suite است. بنابراین، Cipher Suites چیست؟
cipher suite چیست؟
cipher suite، مجموعه ای از دستورالعمل ها هستند که اتصالات شبکه ایمن را از طریق TLS فعال می کنند، که اغلب هنوز به عنوان SSL شناخته میشود. پشت صحنه، این مجموعه های رمزگذاری مجموعه ای از الگوریتم ها و پروتکل های مورد نیاز برای ایمن سازی ارتباطات بین کلاینت ها و سرور ها را ارائه می دهند.
برای شروع یک اتصال HTTPS، دو طرف – وب سرور و مشتری – یک فرآیند SSL handshake انجام می دهند که فرآیندی نسبتاً پیچیده است که طی آن دو طرف بر روی یک cipher suite متقابل توافق می کنند. سپس cipher suite برای مذاکره در مورد یک اتصال HTTPS ایمن استفاده می شود.
چرا cipher suite مورد نیاز است؟
همانطور که قبلاً گفتیم، SSL یک فرآیند پیچیده است، زیرا از انواع توابع رمزنگاری برای دستیابی به اتصال HTTPS استفاده می کند. در این حین، کلاینت و وب سرور از موارد زیر استفاده خواهند کرد:
- یک الگوریتم تبادل کلید: برای تعیین نحوه مبادله کلید های متقارن
- یک الگوریتم احراز هویت یا امضای دیجیتال: که نحوه اجرای احراز هویت سرور و احراز هویت مشتری (در صورت نیاز) را دیکته میکند.
- یک رمز رمزگذاری انبوه: که برای رمزگذاری داده ها استفاده می شود
- یک تابع hash/MAC: که تعیین می کند چگونه بررسی یکپارچگی داده ها انجام شود
این رمز ها در نقاط مختلف اتصال برای انجام احراز هویت، تولید و تبادل کلید و یک بررسی جمعبندی برای اطمینان از یکپارچگی مورد نیاز هستند. برای تعیین اینکه از کدام الگوریتم های خاصی استفاده شود، سرویسگیرنده و وب سرور با تصمیمگیری متقابل در مورد cipher suite مورد استفاده شروع میکنند.
به دلیل تنوع سرور ها، سیستم عامل ها و مرورگر ها، cipher suite مورد نیاز است. باید راهی برای تطبیق همه این ترکیبها وجود داشته باشد، بنابراین cipher suite برای اطمینان از سازگاری مفید است.
چگونه کار می کند؟
در حین دست دادن یک اتصال، زمانی که سرویس گیرنده و سرور اطلاعات را مبادله می کنند، وب سرور و مرورگر لیست های اولویت بندی شده خود را از cipher suite پشتیبانی شده مقایسه می کنند، بررسی می کنند که آیا آن ها سازگار هستند و تعیین می کنند که از کدام cipher suite استفاده شود.
تصمیم در مورد اینکه کدام cipher suite استفاده خواهد شد به وب سرور بستگی دارد. cipher suite توافق شده ترکیبی از موارد زیر است:
- الگوریتم های تبادل کلید: مانند RSA ،DH ،ECDH ،DHE ،ECDHE، یا PSK
- الگوریتم احراز هویت/امضای دیجیتال: مانند RSA ،ECDSA، یا DSA
- الگوریتم های رمزگذاری انبوه: مانند AES ،CHACHA20 ،Camellia یا ARIA
- الگوریتم های کد احراز هویت پیام: مانند SHA-256 و POLY1305
چرا cipher suite مهم است؟
cipher suite برای اطمینان از امنیت، سازگاری و عملکرد اتصالات HTTPS مهم هستند. درست مانند دستور العمل ها که مواد لازم را برای تهیه دستور العمل عالی توصیف می کنند، مجموعه های رمزگذاری دیکته می کنند که از کدام الگوریتم ها برای ایجاد یک اتصال ایمن و قابل اعتماد استفاده شود.
همانطور که قبلا ذکر کردیم، این وب سرور است که در نهایت تعیین می کند که کدام cipher suite استفاده خواهد شد. بنابراین، فهرست اولویت بندی شده cipher suite در وب سرور بسیار مهم است. انتخاب رمز های صحیح برای فهرست شدن در هر وب سرور یک تمرین حیاتی برای هر مدیر است و تا حد زیادی با توجه به نوع کاربرانی که به سرور متصل می شوند و فناوری استفاده می کنند تعیین می شود.
کاربران همچنین مسئول اطمینان از اتصالات امن هستند. از آنجایی که مرورگر پس از کشف آسیب پذیری، لیست مجموعه رمز های پشتیبانی شده خود را به روزرسانی می کنند، کاربران باید آخرین پچ مرورگر را نصب کنند تا در صورت منسوخ شدن cipher suite های ضعیف در سمت سرور، احتمال مواجهه با مشکلات سازگاری را کاهش دهند.
cipher suite های پشتیبانی شده در TLS 1.2
قبل از بحث در مورد تعداد cipher suite های مختلف، به یاد داشته باشید که همه پروتکل های TLS قبل از TLS 1.2 (یعنی TLS 1.0 و TLS 1.1) به دلایل امنیتی مختلف منسوخ شده اند. در حال حاضر، تنها پروتکل های TLS قابل قبول TLS 1.2 و TLS 1.3 هستند.
با شروع TLS 1.2، این پروتکل از 37 cipher suite مختلف پشتیبانی می کند و اگر این عدد بزرگ به نظر می رسد، فقط تصور کنید که TLS 1.2 تقریباً یک دهه است که در طول آن سیستم های مختلف ظاهر شده است. اضافه کنید که هر cipher suite از چهار الگوریتم مختلف تشکیل شده است و در نهایت با حداکثر 40 ترکیب رمزنگاری مختلف مواجه خواهید شد.
از همه cipher suites پشتیبانی شده در TLS 1.2، توصیه می شود از مواردی با الگوریتم زودگذر Diffie-Hellman استفاده کنیم. بنابراین، cipher suites توصیه شده به موارد زیر است:
- 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 Key Exchange
- Static Diffie-Hellman (DH, ECDH)
- Block ciphers (CBC)
- Non-AEAD ciphers
cipher suites پشتیبانی شده در TLS 1.3
علاوه بر این، cipher suite در TLS 1.3 اکنون بسیار کوتاه تر از TLS 1.2 هستند. cipher suite، نوع گواهی – RSA یا ECDSA – و مکانیسم تبادل کلید – DHE یا ECDHE را فهرست نمی کنند. بنابراین، تعداد مذاکرات مورد نیاز برای تعیین پارامتر های رمزگذاری از چهار به دو کاهش یافته است. cipher suite در TLS 1.3 به شکل زیر هستند:
کلاینت با علم به اینکه الگوریتم Ephemeral Diffie-Hellman برای فرآیند تبادل کلید استفاده می شود، handshake را آغاز می کند و می تواند بخش خود را از سهم کلید در طول پیام Client Hello ارسال کند. مزیت آن این است که handshake TLS 1.3 به یک رفت و برگشت کوتاه می شود، جایی که سرور با تمام اطلاعات مورد نیاز برای دو طرف پاسخ می دهد تا کلید را استخراج کند و برقراری ارتباط امن را آغاز کند.
cipher suites پشتیبانی شده در 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 suite
cipher suites در TLS 1.3 با نسخه های قدیمی تر TLS قابل همکاری نیستند، زیرا ساختار آن ها متفاوت است. این بدان معناست که مدیران سایت باید وب سرور های خود را به گونه ای پیکربندی کنند که امکان سازگاری با هر دو نسخه cipher suites پشتیبانی شده، TLS 1.2 و TLS 1.3 را فراهم کنند. انتخاب پشتیبانی از تنها TLS 1.3 راه حل عاقلانه ای نیست، زیرا بسیاری از شرکت ها همچنان به TLS 1.2 متکی هستند.
موزیلا سه پیکربندی مختلف cipher suite را برای وب سرور ها با استفاده از پروتکل TLS توصیه می کند.
- مدرن: این پیکربندی برای کلاینت های مدرنی است که از TLS 1.3 پشتیبانی می کنند. پیکربندی مدرن سطح بسیار بالایی از امنیت را فراهم می کند.
- متوسط: این پیکربندی توصیه شده برای یک سرور همه منظوره است که نیازی به سازگاری با کلاینت های قدیمی، مانند ویندوز XP یا نسخه های قدیمی OpenSSL ندارد. این بسیار امن است و تقریباً با هر کلاینت منتشر شده در پنج (یا بیشتر) سال گذشته سازگار است.
- قدیمی: سرویس هایی که مشتریان یا کتابخانه های بسیار قدیمی به آنها دسترسی دارند، مانند اینترنت اکسپلورر 8 (ویندوز XP)، جاوا 6 یا OpenSSL 0.9.8 و باید به عنوان آخرین راه حل استفاده شوند.
نتیجه
cipher suites ترکیبی از رمز های مورد استفاده در هنگام SSL/TLS handshake برای تعیین تنظیمات امنیتی یک اتصال HTTPS هستند. انتخاب و نگهداریcipher suite مناسب، هم در وب سرور و هم در کلاینت، برای اطمینان از امنیت، عملکرد و سازگاری ارتباطات HTTPS شما مهم است.
نگهداری cipher suite های پشتیبانی شده یک عملکرد مهم مدیریت چرخه عمر گواهی است تا اطمینان حاصل شود که گواهی های شما با بهترین شیوه های صنعت به روز هستند. مشاهده کامل همه گواهینامه ها و اتصالات در چشم انداز فناوری اطلاعات شما اولین گام حیاتی است که به دنبال آن نظارت مستمر، تمدید خودکار و تدارک دیده می شود.