بهترین سایز کلید RSA برای گواهینامه امنیتی SSL

درصورتیکه می‌خواهید یک گواهینامه امنیتی ایجاد کنید، یکی از سوالاتی که برای شما ایجاد می‌شود اندازه سایز کلید RSA است.
شاید یک عنوان دیگر این مقاله می‌توانست این باشد که چرا سایز کلید ۴۰۹۶ را استفاده نکنیم؟

بهترین سایز کلید RSA چیست؟

  • OpenSSL به صورت پیش‌فرض از کلید ۲۰۴۸ بیتی استفاده می‌کند.
  • سیستم عامل ویندوز از شما می‌خواهد که دقیقا انتخاب کنید سایز مورد نظر شما چیست؟
  • اگر می‌خواهید یک گواهینامه امنیتی با آدرس سبز رنگ EV داشته باشید باید حتما سایز کلید حداقل ۲۰۴۸ باشد.

به چه دلیل لازم است در خصوص کلیدهای ۴۰۹۶ اطلاعات بیشتری داشته باشید؟

  • اکثر توسعه‌دهندگان آنلاین مثل GitHub, Stripe, nmp و Mozilla از کلیدهای ۲۰۴۸ بیتی برای گواهینامه‌های امنیتی EV خود در زمان نگارش این مقاله استفاده می‌کنند.
  • GnuPG اعتقاد دارد که کلیدهای ۴۰۹۶ بیتی غیرضروری هستند.
  • اما SSL Labs برای اعطای امتیاز ۱۰۰% به شما، از شما می‌خواهد که کلید ۴۰۹۶ بیتی داشته باشید.

measuring-ssl-rsa-keys-1

حتما در جریان هستید که با داشتن یک کلید ۴۰۹۶ بیتی:

  • قدرت کدگذاری شما افزایش می یابد.
  • ارتباط اولیه (Handshake) گواهینامه امنیتی شما به ازای هر ارتباط کندتر خواهد بود.
  • میزان مصرف CPU در زمان Handshake بیشتر خواهد بود.

اما ممکن است از تاثیرات دقیق هر یک از موارد فوق بی‌اطلاع باشید، هم اکنون با شما این موارد را بررسی می کنیم.

محاسبه قدرت کدگذاری

بر خلاف الگوریتم‌های متقارن، الگوریتم غیرمتقارن RSA (متاسفانه) با افزایش یک بیت اضافه امنیت شما را دو برابر نمی‌کند.
کلیدهای RSA توسط موسسه ملی استاندارد و تکنولوژی محاسبه شده‌اند به این صورت که یک کلید ۲۰۴۸ بیتی RSA معدل با یک کلید ۱۱۲ بیتی متقارن هم‌تراز است.
به این صورت که امکان هک کردن یک کلید با شرایط فوق به میزان ۲ به توان ۱۱۲ از نظر تئوری امکان‌پذیر است.
تصویر زیر یک نمونه محاسباتی قدرت کدگذاری کلید ها را به شما نشان می‌دهد:

measuring-ssl-rsa-keys-2

مقایسه میزان مصرف CPU

یک کلید بزرگتر به معنای زمان بیشتر از نظر ارتباط اولیه با وب‌سایت شما از نظر کاربران است. در سیستم عامل‌های Mac و Linux با دستور ساده openssl speed rsa می‌توانید محاسبات زیر را بررسی کنید:

sign verify sign/s verify/s
rsa 512 bits 0.000210s 0.000014s 4772.1 69667.5
rsa 1024 bits 0.000727s 0.000035s 1375.3 28508.9
rsa 2048 bits 0.003778s 0.000092s 264.7 10899.5
rsa 4096 bits 0.022637s 0.000305s 44.2 3275.4

 

measuring-ssl-rsa-keys-3

مشاهده این آمار کاملا گویای این است که میزان مصرف CPU در مقایسه یک کلید ۲۰۴۸ بیتی با یک کلید ۴۰۹۶ بیتی کاملا محسوس است.
به یاد داشته باشید که این ارتباط اولیه خیلی کوتاه است، بعد از به توافق رسیدن مرورگر و سرور در خصوص ارتباط کلید، از یک الگوریتم متقارن مثل AES بهره خواهند برد.


مقایسه ارتباط اولیه مرورگرها:

شما می‌توانید یک مقایسه عملی را با تعریف دو کلید ۲۰۴۸ و ۴۰۹۶ بیتی بر روی یک سرور انجام دهید و نتایج را همان‌طور که ما در مرورگر Chrome بررسی کرده‌ایم مشاهده کنید:

measuring-ssl-rsa-keys-4

ما ۵ تست با هر دو سایز کلید انجام دادیم و هر بار مرورگر را باز و بسته کردیم تا کلید حذف شود و نتیجه این‌که:

  • میانگین زمان Handshake برای کلید ۲۰۴۸ بیتی ۵۰ میلی ثانیه
  • میانگین زمان Handshake برای کلید ۴۰۹۶ بیتی ۷۶ میلی ثانیه

measuring-ssl-rsa-keys-5

میزان زمان اضافه شده در کلید ۴۰۹۶ بیتی قطعا محسوس است با این حال این ارتباط کماکان سریع است.

گوگل انتظار دارد که صفحات شما در کمتر از ۱۰۰ میلی ثانیه محاسبه شوند، آمازون معتقد است هر ۱۰۰ میلی ثانیه اضافه‌تر باعث کاهش فروش خواهد شد! اگر سایت شما بر مبنای HTTPS باشد هیچ یک از محتوای شما نمایش داده نخواهند شد مگراینکه این Handshake انجام شده باشد.
اما این‌که ۲۵ میلی ثانیه – ۲۵ هزارم یک ثانیه برای شما تاثیرگذار است یا خیر کاملا به وب‌سایت شما بستگی دارد. بسیاری از وب‌سایت‌ها – همچنین وب‌سایت زاگریو – بهینه‌سازی‌های بسیاری را قبل از در نظر گرفتن این میزان زمان نیاز دارد به همین دلیل این موضوع باعث مشکل برای ما نمی‌شود.
این تست را ما بعدا بر روی یک موبایل ضعیف تر از نظر پردازشی انجام خواهیم داد.

نگرانی در خصوص سازگاری کلیدهای ۴۰۹۶ بیتی

باید نظر داشته باشید که سرویس‌هایی مثل Amazon CloudFront فقط از کلید های ۲۰۴۸ بیتی پشتیبانی می‌کنند. همچنین Cisco IOS XE در نسخه‌های قدیمی تر از ۲٫۴ و Cisco IOS قبل از ۱۵٫۱(۱)T از کلید های ۴۰۹۶ بیتی پشتیبانی نمی‌کنند.


خلاصه:

به نظر ما – میزبانی زاگریو – همانطور که در ابتدا توضیح داده شد انتخاب شما قطعا باید حداقل یک کلید ۲۰۴۸ بیتی باشد. گسترش دهندگان OpenSSL, Microsoft و تمامی مرورگرها اکیدا توصیه می‌کنند که حداقل از کلید ۲۰۴۸ بیتی استفاده کنید.
آیا می‌خواهید کماکان از یک کلید ۴۰۹۶ بیتی استفاده کنید؟ این آمار را در نظر داشته باشید:

  • یک کلید ۴۰۹۶ بیتی به نسبت یک کلید ۲۰۴۸ بیتی قدرت امنیت شما را تا حد منطقی افزایش می‌دهد.
  • میزان مصرف CPU شما در زمان ارتباط اولیه توسط یک کلید ۴۰۹۶ بیتی به شدت افزایش پیدا خواهد کرد.
  • مرورگرها در اثر تبادل یک کلید با سایز بیشتر کمی بیشتر زمان خواهند برد و سایت شما کمی کندتر خواهد شد.