رمزنگاری RSA

BirHosting rsa index
توسط

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

RSA مخفف Rivest-Shamir-Adleman، نام خانوادگی سازندگان آن است. قبل از رمزگذاری کلید عمومی، چنانچه از قبل فرصتی چهت مبادله ایمن کلیدها وجود نداشت، برقراری ارتباط ایمن یک چالش بود. اگر فرصتی برای به اشتراک گذاشتن کلید پیش از موعد وجود نداشت، یا یک کانال امن که بتوان از طریق آن کلیدها را توزیع نمود، هیچ راهی جهت برقراری ارتباط بدون تهدید دشمنان قادر به رهگیری و دسترسی به محتوای پیام وجود نداشت.

BirHosting rsa

مهمترین ویژگی رمزنگاری نامتقارن این است که برای مثال یک فایل جهت رمزگشایی مجدد وجود ندارد، بلکه دو کلید وجود دارد. در رمزنگاری RSA، یک کلید عمومی وجود دارد که آزادانه در دسترس تمامی نود ها می باشد، و یک کلید خصوصی که ترجیحاً باید فقط برای یک شخص قابل تشخیص و شناخته شود. رمزگذاری اصلی با کلید عمومی RSA انجام می شود. با این حال، کلید خصوصی RSA جهت رمزگشایی مورد نیاز است. اگر کلید گم شود، رمزنگاری در واقع نمی تواند شکسته شود.

اساس سیستم رمزنگاری RSA تابع دریچه ای trapdoor function است که از ریاضیات شناخته شده است. این بیان می کند که یک تابع تنها در صورتی می تواند معکوس شود که اطلاعات اضافی معرفی شود. اگر این اطلاعات ارائه نشود، متغیرهای زیادی وجود دارد، به این معنی که یک راه حل را نمی توان در یک چارچوب زمانی واقعی محاسبه کرد. در مورد سیستم رمزنگاری RSA، کلید خصوصی RSA حاوی این اطلاعات اضافی است.

تحت رمزگذاری RSA، پیام‌ها با کدی به نام کلید عمومی رمزگذاری می‌شوند که می‌توان آن را به صورت آزاد به اشتراک گذاشت. با توجه به برخی ویژگی‌های ریاضی متمایز الگوریتم RSA، هنگامی که یک پیام با کلید عمومی رمزگذاری شد، تنها می‌توان آن را توسط کلید دیگری به نام کلید خصوصی رمزگشایی کرد. هر کاربر RSA دارای یک جفت کلید متشکل از کلیدهای عمومی و خصوصی است. همانطور که از نام آن پیداست، کلید خصوصی باید مخفی بماند.

کلیدهای RSA چگونه استفاده می شوند؟

یک سیستم رمزنگاری RSA می تواند جهت تبدیل داده ها، متن یا حتی یک تصویر به همراه یک الگوریتم غیرقابل تشخیص استفاده شود. بدون کلید خصوصی RSA، فایل مربوطه غیرقابل خواندن باقی می ماند و نه با چشم غیر مسلح رمزگشایی می شود و نه توسط برنامه رمزگشایی می شود. داده های اساسی ابتدا به اعداد طبیعی تبدیل می شوند و سپس با استفاده از کلید عمومی RSA رمزگذاری می شوند. کلید عمومی و خصوصی RSA از یک جفت اعداد تشکیل شده است که در هر مورد یکی از دو عدد یکسان است. این عدد ماژول RSA نامیده می شود.

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

به طور معمول، طول کلید چیزی است که دشواری محاسبات را نشان می دهد. در حال حاضر استاندارد کلیدهای RSA 2048 بیتی است که از ۱۰۲۴ بیت که تا همین چند سال پیش مجاز بود افزایش یافته است. برخی از سازمان ها از کلیدهای ۳۰۷۲ بیتی و ۴۰۹۶ بیتی استفاده می نمایند، اما با افزایش اندازه کلیدهای RSA، میزان امنیت ارائه شده توسط آنها متناسب با میزان توان محاسباتی مورد نیاز جهت استفاده از آنها نیست.

محل استفاده RSA:

رمزگذاری RSA اغلب در ترکیب با سایر طرح های رمزگذاری یا برای امضاهای دیجیتالی استفاده می شود که می تواند صحت و یکپارچگی یک پیام را ثابت نماید. معمولاً جهت رمزگذاری کل پیام‌ها یا فایل‌ها استفاده نمی‌شود، چراکه نسبت به رمزگذاری با کلید متقارن کارایی کمتر و منابع سنگین‌تری دارد.

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

بدون دسترسی به کلید متقارن، فایل اصلی را نمی توان رمزگشایی نمود. از این روش می توان برای ایمن نگه داشتن پیام ها و فایل ها، بدون صرف زمان زیاد یا مصرف بیش از حد منابع محاسباتی استفاده کرد.

رمزگذاری RSA را می توان در تعدادی از سیستم های مختلف استفاده نمود. می توان آن را در OpenSSL، wolfCrypt، cryptlib و تعدادی دیگر از کتابخانه های رمزنگاری پیاده سازی کرد.

به عنوان یکی از اولین طرح های رمزگذاری کلید عمومی که به طور گسترده مورد استفاده قرار گرفت، RSA پایه بسیاری از ارتباطات ایمن ما را پایه گذاری نمود. به طور سنتی در TLS استفاده می شد و همچنین الگوریتم اصلی مورد استفاده در رمزگذاری PGP بود. RSA هنوز در طیف وسیعی از مرورگرهای وب، ایمیل، VPN ها، چت و سایر کانال های ارتباطی دیده می شود.

RSA همچنین اغلب برای ایجاد ارتباطات ایمن بین مشتریان VPN و سرورهای VPN استفاده می شود. تحت پروتکل هایی مانند OpenVPN، دست دادن TLS می تواند از الگوریتم RSA برای تبادل کلیدها و ایجاد یک کانال امن استفاده کند.

BirHosting rsa2

سیستم های رمزگذاری RSA برای چه مواردی استفاده می شوند؟

رمزگذاری RSA در بسیاری از زمینه‌های زندگی دیجیتالی روزمره استفاده می‌شود. به عنوان مثال، پروتکل ارتباطی HTTPS (پروتکل انتقال ابرمتن امن) یا گواهی‌های SSL در اکثر موارد با رمزگذاری RSA ایمن می‌شوند. یک سیستم رمزنگاری RSA برای رمزگذاری ایمیل ها، پیام رسان های دیجیتال، داده های تصویری یا هارد دیسک نیز مناسب است. از آنجایی که رمزگشایی حتی در بالاترین توان محاسباتی بدون کلید RSA ضروری زمان زیادی می برد، این روش نسبتاً ایمن در نظر گرفته می شود.

در بسیاری از موارد، یک سیستم رمزنگاری RSA با روش‌های دیگر رمزگذاری ترکیب می‌شود تا اطمینان حاصل شود که محتوا یا داده‌ها نمی‌توانند بدون مجوز باز یا خوانده شوند. حتی اگر وب سایت خود را به SSL تبدیل کنید، در بیشتر موارد از ترکیبی از رمزگذاری های مختلف استفاده می شود.

 

مشکل RSA چیست؟

خوب، جدا از این واقعیت که مقیاس ضعیفی دارد، پاشنه آشیل برای RSA این است که برای تعیین اعداد اول (p و q) به مولدهای اعداد تصادفی متکی است.

یک مولد اعداد تصادفی (RNG) در واقع فقط یک دستگاه یا برنامه است که دنباله ای از اعداد را تولید می نماید که با احتمالی بیشتر از شما به صورت تصادفی قابل پیش بینی نیستند. از این رو نام.

از دیدگاه RSA، اعداد تصادفی یا RNG ها دو مشکل بزرگ دارند:

آنها صد در صد تصادفی نیستند
تقریباً همه از همان ها استفاده می کنند
برای تمامی مقاصد، دو راه جهت تولید اعداد تصادفی وجود دارد. اولی از شما می‌خواهد که یک رویداد یا پدیده طبیعی را که انتظار می‌رود تصادفی باشد، ترسیم نمایید. در واقع یک روش نسبتاً جدید تولید کلید بیولوژیکی در دانشگاه ایالتی پن آزمایش شده است که حرکت سلول‌های زنده را در برابر شبکه‌ای که روی آن قرار گرفته است ترسیم می نماید و سپس از آن برای تولید یک کلید رمزنگاری استفاده می‌کند. Cloudflare کاری مشابه با لامپ های گدازه ای در لابی خود انجام می دهد.

صادقانه بگویم، راه اول به نوعی جذاب است. روش دوم تولید اعداد شبه تصادفی نامیده می شود و متکی بر الگوریتم های محاسباتی است. به‌خاطر رمزگذاری RSA، ما این تولید کننده‌ های اعداد شبه تصادفی امن رمزنگاری‌ شده را (CSPRNG) می‌نامیم که توالی‌ های طولانی از نتایج تصادفی را تولید می‌کنند که در واقع کاملاً بر اساس یک مقدار کوتاه‌تر به نام دانه seed تعیین می‌شوند.

این عدم تنوع دانه ها به اولین مسئله ای که RSA دارد برمی گردد: اعداد اولی که تولید می شوند واقعاً تصادفی نیستند.


پست های توصیه شده