مقایسه انواع کلیدهای RSA در SSL

در ابتدا اگر به طور خلاصه و ساده بخواهیم عنوان کنیم 2048 بیت RSA روش رمزنگاری نامتقارن است این روش برای تصدیق اعتبار و اطمینان از اینکه تنها گیرنده مشخص شده امکان رمزگشایی از اطلاعات دریافتی را دارد ابداع شده. در این روش برای رمزنگاری Asymmetric Encryption از 2 کلید عمومی و خصوصی استفاده می شود. اغلب طول کلید ها برای کلید رمزنگاری عمومی/خصوصی 2048 بیتی است. 
رمزنگاری نامتقارن یا RSA دارای کلیدهایی با سایز های بزرگ است و هر چه این عدد بزرگتر باشد بهتر است مثلا 2048 و 4096 و به دلیل بزرگ بودن اعداد و پیچیدگی بیشتر کندتر عمل می کند باز به همین دلیل است که تنها در مرحله اولیه از آن استفاده می شود و ایجاد کلید خصوصی از این عدد کار کند و مشکلی است. هنگامی که اتصال برقرار شد، ارتباط سریعی برقرار می شود که رمزنگاری متقارن نسبتا سریع می باشد و از کلیدهای کوچکتری با سایز 128 و 256 استفاده می کند. به طور کلی، SSL از چندین الگوریتم رمز گذاری در مراحل مختلف استفاده می نماید. 

کلید RSA :

RSA الگوریتمی است که به وسیله کامپیوتر های مدرن برای رمزگذاری و رمزگشایی پیام ها استفاده می شود. این یک الگوریتم رمزنگاری نامتقارن است. نامتقارن بدان معنی است که دو کلید مختلف وجود دارد. به RSA رمزنگاری کلید عمومی نیز گفته می شود، زیرا یکی از کلیدها را می توان به هر شخصی داد و کلید دیگر باید خصوصی نگه داشته شود. کلید RSA با تعداد 2048 بیت به منظور تایید هویت یا امضا استفاده می شود و تضمین می کند که تنها یک دریافت کنندۀ در نظر گرفته شده، می تواند به اطلاعات ارسالی یا رمزگذاری شده دسترسی داشته باشد. این کلید تشکیل شده است از دو قطعه، یکی کلید عمومی و دیگری کلید خصوصی، که در واقع این دو کلید به یکدیگر وابسته هستند.


2048 بیت درباره کلید جفت شده RSA است :

کلیدهای RSA شامل یک عدد صحیح بزرگ و یک کلید 2048 بیتی است، این کلید عدد صحیحی بزرگتر از 2 به توان 2047 و کوچکتر از 2 به توان 2048 می باشد.

256 بیت درباره SSL است :

در SSL، کلید سرور تنها به منظور انتقال یک کلید 256 بیتی تصادفی استفاده می شود. به طور کلی مشتری کلید 256 بیتی تصادفی را تولید می کند و آن را با کلید عمومی RSA سروری که در گواهی سروری و یک کلید 2048 بیتی است، رمزگذاری می کند و نتیجه را به سرور ارسال می نماید. سرور از کلید خصوصی RSA به منظور معکوس عمل کردن عملیات استفاده می کند. بنابراین کلید 256 بیتی انتخاب شده توسط مشتری بدست می آید. پس از آن، مشتری و سرور از کلید 256 بیتی به منظور انجام رمزنگاری متقارن و بررسی های نهایی استفاده می کند و دیگر از کلید RSA برای برقراری اتصال استفاده نخواهد شد. 
 

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

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


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

  • اکثر توسعه دهندگان آنلاین مثل GitHub, Stripe, nmp و Mozilla از کلید های 2048 بیتی برای گواهینامه های امنیتی EV خود در زمان نگارش این مقاله استفاده می کنند.
  • GnuPG اعتقاد دارد که کلید های 4096 بیتی غیر ضروری هستند.
  • اما SSL Labs برای اعطای امتیاز 100% به شما، از شما می خواهد که کلید 4096 بیتی داشته باشید.


انتخاب سایز کلید RSA

حتما در جریان هستید که با داشتن یک کلید 4096 بیتی:

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

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

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

انتخاب سایز کلید RSA

مقایسه میزان مصرف 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
انتخاب سایز کلید RSA

مشاهده این آمار کاملا گویای این است که میزان مصرف CPU در مقایسه یک کلید 2048 بیتی با یک کلید 4096 بیتی کاملا محسوس است.
به یاد داشته باشید که این ارتباط اولیه خیلی کوتاه است، بعد از به توافق رسیدن مرورگر و سرور در خصوص ارتباط کلید، از یک الگوریتم متقارن مثل AES بهره خواهند برد.


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

شما می توانید یک مقایسه عملی را با تعریف دو کلید 2048 و 4096 بیتی بر روی یک سرور انجام دهید و نتایج را همانطور که ما در مرورگر Chrome بررسی کرده ایم مشاهده کنید:

انتخاب سایز کلید RSA

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

  • میانگین زمان Handshake برای کلید 2048 بیتی 50 میلی ثانیه
  • میانگین زمان Handshake برای کلید 4096 بیتی 76 میلی ثانیه
انتخاب سایز کلید RSA

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

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

نگرانی در خصوص سازگاری کلیدهای 4096 بیتی
باید نظر داشته باشید که سرویس هایی مثل Amazon CloudFront فقط از کلید های 2048 بیتی پشتیبانی می کنند. همچنین Cisco IOS XE در نسخه های قدیمی تر از 2.4 و Cisco IOS قبل از 15.1(1)T از کلید های 4096 بیتی پشتیبانی نمی کنند.


خلاصه:

به نظر ما – میزبانی زاگریو – همانطور که در ابتدا توضیح داده شد انتخاب شما قطعا باید حداقل یک کلید 2048 بیتی باشد. گسترش دهندگان OpenSSL, Microsoft و تمامی مرورگر ها اکیدا توصیه می کنند که حداقل از کلید 2048 بیتی استفاده کنید.
آیا می خواهید کماکان از یک کلید 4096 بیتی استفاده کنید؟ این آمار را در نظر داشته باشید:

  • یک کلید 4096 بیتی به نسبت یک کلید 2048 بیتی قدرت امنیت شما را تا حد منطقی ای افزایش می دهد.
  • میزان مصرف CPU شما در زمان ارتباط اولیه توسط یک کلید 4096 بیتی به شدت افزایش پیدا خواهد کرد.
  • مرورگر ها در اثر تبادل یک کلید با سایز بیشتر کمی بیشتر زمان خواهند برد و سایت شما کمی کندتر خواهد شد.