چرا حمله حمله مرد در RSA اتفاق نمی افتد؟

من متوجه شدم که چگونه RSA کار می کند (جفت کلید خصوصی / عمومی را ایجاد می کند، کلید عمومی را به هر کسی که می خواهید با آن صحبت کنید، رمزگذاری کنید با رمزگذاری عمومی، رمزگشایی با خصوصی)، اما نقص در این چیست؟

Let's می گوید A می خواهد پیامی به B ارسال کند A یک جفت کلید عمومی و خصوصی خود را تولید می کند و کلید عمومی را بر روی یک شبکه به B می فرستد، درست است؟ چه چیزی را متوقف کنید C در حال آمدن و گرفتن این کلید عمومی، تولید خود کلید عمومی، و سپس ارسال خود کلید عمومی به B؟ سپس، هنگامی که B کلید عمومی خود را به A ارسال می کند، C می تواند این را بگیرد، آن را ذخیره کند، و کلید عمومی خود را به A ارسال کند.

حالا وقتی A یک پیام رمزگذاری شده را با استفاده از آنچه که می فهمد کلید عمومی B است (اما در واقع C است)، C این پیام را رمزگشایی کرده، آن را رمزگشایی کرده و دوباره آن را با استفاده از کلید عمومی عمومی B رمزگذاری می کند.

آیا این کار را می کند؟ اگر نه، چرا؟ آیا فقط استفاده از یک شبکه امن برای ارسال کلید عمومی است؟

rsa – چرا کلید میزبان gitlab SSH مطابقت ندارد؟

من سعی کردم از طریق SSH به gitlab دانشگاه هایم بروم. همانطور که انتظار می رفت، من هشدار دادم که میزبان شناخته نشده است. بنابراین، من سعی کردم کلید میزبان SSH را در صفحه "پیکربندی کنونی" در کتابچه راهنمای کاربر پیدا کنم. با این حال، متوجه شدم که کلید با کلیدی که SSH من را در اولین اتصال نشان می دهد مطابقت ندارد.

برای نشان دادن این، در اینجا شما می توانید صفحه مربوطه را برای gitlab.com پیدا کنید. اثر انگشت SHA256 گفته می شود

2fdd0c7dfa7d9381f847266c800eafc96f5866fe859c4f1cf87da885c82e333a

با استفاده از اسکریپت که من در این پست کاربر ارشد پیدا شده است به من گفته که SHA256 برای میزبان SSH است.

ROQFvPThGrW4RuWLoL9tq9I9zJ42fK4XywyRtbOz / EQ

که است که

44e405bcf4e11ab5b846e58ba0bf6dabd23dcc9e367cae17cb0c91b5b3b3fc44 [19659004] در هگزادسیمال (و امیدوارم با چیزی که می بینید … یا نه مطابقت داشته باشد)

سوالات من: آیا این ها با هم برابر نیستند؟ آیا چیزی از دست دادم؟

مدیریت کلید – چگونه برای ذخیره کلید RSA در نرم افزار؟

من در یک نرم افزار غیر حرفه ای کار می کنم که نیاز به تولید و ذخیره کلید های RSA (عمومی و خصوصی) دارد.

من دو تا از اینها را دارم:

  1. من فکر می کنم که دستگاه کاربر باید توسط کاربر خود من و سپس کلیدهای امن (که به نظر نمی رسد که خوب است)
  2. کلید RSA در نرم افزار من امن، اما من هیچ نظری ندارم که شیوه های خوب / خوب هستند

در البته تمایل دارند به راه حل شماره 2 بروید. با این حال، نمی دانم چگونه با خیال راحت بتوانم کلید خصوصی / عمومی را ذخیره کنم. آیا آنها برخی از شیوه های خوب هستند، اگر بله، آنها چه هستند؟
آیا آنها را در فایل ذخیره می کنم؟

ویرایش با توجه به نظرات:

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

بررسی اولویت اعداد برای استفاده در RSA

RSA برای استفاده از اعداد اول تضمین شده است. در حقیقت، اگر اعداد اولیه نبودند، عملیات کلیدی RSA به سادگی کار نخواهد کرد (با احتمال بسیار زیاد). با این حال، ابزار خط فرمان OpenSSL توانایی بررسی اولیت یک عدد را با استفاده از تست Primality بودن میلر-رابین، الگوریتم تست استاندارد برای بررسی اولویت های بزرگ برای استفاده در رمزنگاری دارد.

 OpenSSL> first-generates-bits 256
315016830147073940139675761214468273143
OpenSSL> prime 315016830147073940139675761214468273143
ECFE08DCA281B26A5EDDE8DF7D2A33F7 نخست است
OpenSSL> 1000000000000 اول
9184E72A000 اصل نیست

حمله به RSA بدون اطلاع از هر کلید

همه حملات به RSA به نظر می رسد نیاز به دانش حداقل متن رمز و کلید عمومی

با این حال هرگز شواهدی از حمله وجود دارد که به سادگی با استفاده از تعداد زیادی از متن رمزنگاری برای محاسبه عمومی / خصوصی کلید، و اگر چنین است توصیه می شود راه حل برای کاهش این؟