RSA از جایگزینی و زدن استفاده می کند؟

من برخی از جستجوهای RSA را انجام داده ام و به نظر می رسد که از آن استفاده می شود که به جای زدن، اما نه جایگزینی.

RSA یک الگوریتم ریاضی است. هیچکدام از این اصطلاحات برای آن قابل اجرا نیستند.

به طور کلی، اصطلاحات "تغییر" و "جایگزینی" به طور کلی فقط برای تکنیکهای بسیار ساده و پیشرو الکترونیکی رمزنگاری – رمزهای Vigenère، transposition ستونها و غیره قابل استفاده هستند. آنها به طور خاص به رمزنگاری مدرن مربوط نیستند.

استفاده از کلید خصوصی RSA به عنوان کلید AES برای رمزگذاری

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

فرآیند رمزگذاری:

  1. برنامه نصب شده است و کلید های RSA را با استفاده از System.Security.Cryptography.RSACryptoServiceProvider
  2. کلید RSA به یک کانتینر اصلی با نام ظرف مشخص شده توسط برنامه ادامه می یابد
  3. در زمان بعد، برنامه کلید های RSA را با استفاده از RSACryptoServiceProvider بازیابی می کند و از 32 بایت اول پارامتر D استفاده می کند کلید AesCryptoServiceProvider برای رمزگذاری اطلاعات روی دیسک استفاده می شود. AES IV به طور تصادفی توسط AesCryptoServiceProvider برای هر رویداد رمزگذاری تولید شده است.
  4. AES IV که در مرحله 3 استفاده شده است به عنوان متن ciphertext اضافه شده است، همانطور که در اینجا ذکر شده است و چند مکان دیگر که این عمل عادی است.

فرآیند رمزگشایی:

  1. AES IV از 16 بایت اولیه متن ciphertext بدست می آید. باقی مانده از متن cipher به مرحله 2 ارسال می شود.

  2. این برنامه کلید های RSA را با استفاده از RSACryptoServiceProvider بازیابی می کند و از 32 بایت اول پارامتر D به عنوان کلید AesCryptoServiceProvider برای رمزگشایی داده ها از دیسک استفاده می شود.

کانت اصلی به این صورت استفاده می شود، عمدتا به این دلیل که روش ها برای ذخیره کلید های نامتقارن به راحتی همانطور که در صفحه کانتینر اصلی مشخص شده است ارائه می شوند. هدف این است که به صورت دوره ای برنامه را تولید کلید های RSA جدید و جایگزینی آنچه که در کانتینر کلیدی ذخیره شده است؛ در نتیجه چرخاندن کلید AES مورد استفاده برای رمزگذاری / رمزگشایی. من می توانم برخی از نمونه های کد را ارائه دهم اما در حال حاضر می خواهم پرسش های اساسی را از اینجا دریافت کنم. [1965،9002] سوالات:

  1. روش فوق بهتر یا بدتر از برنامه با استفاده از کلاس ProtectedData موجود در دات نت است که ساده می شود مدیریت کلید؟
  2. آیا برای استفاده از RSA برای رمزگذاری یک کلید متقارن رمزنگاری / رمزگشایی وجود دارد؟ کجا کلید های متقارن کد گذاری شده را ذخیره کنید؟ این لایه اضافه شده غیر ضروری است اگر کلید خصوصی RSA در ابتدای کابین کلیدی نا امن باشد.
  3. چگونه System.Security.Cryptography.CspParameters را هنگام انتقال به تنظیم کنید. RSACryptoServiceProvider به منظور محدود کردن دسترسی خصوصی به کلید خصوصی RSA فقط به این برنامه؟
  4. تمام ایده را از بین ببرید و با جایگزین کردن راه حل XYZ بروید؟

rsa – نحوه رسیدگی به پایان دادن به پایان دادن به رمزگذاری

من بر روی یک برنامه کار می کنم که هدف آن آپلود کردن داده های کاربر است، آن را ذخیره، انجام برخی از پردازش در آن داده ها و ارائه آن به کاربر در هنگام خواسته.
ما می خواهیم از پایان دادن به پایان دادن به مدل رمزگذاری که در آن سیستم هیچ راهی برای رمزگشایی داده ها کاربر آپلود نیست. من قبل از این با امنیت برخورد نکرده بودم و در معماری ارائه شده چند سوال / نگرانی داشتم که می خواهم با همه شما به اشتراک بگذارم.

  • هنگامی که یک کاربر ثبت نام می کند ما یک کلید خصوصی برای او ایجاد می کنیم، کلید خصوصی کلید master key اینجا است.
  • هنگامی که یک کاربر اطلاعاتی را اضافه می کند، ما آن را با استفاده از کلید جلسه رمزگذاری می کنیم. تنها واحد پردازش داده (DPU) سیستم ما باید قادر به رمزگشایی این داده ها باشد. از آنجا که اندازه داده ها ممکن است بزرگتر از RSA-3072 باشد، داده ها ابتدا با استفاده از AES-256 رمزگذاری می شوند و سپس با کلید session session RSA رمزگذاری می شوند.
  • داده های بارگذاری شده به DPU می رسد، آن را رمزگشایی می کند، پردازش می کند و رمزگذاری می کند. [19659003] هنگامی که کاربر میخواهد دسترسی به این اطلاعات داشته باشد، کلید اصلی را با کلید جلسه رمزگذاری می کنیم و برای رمزگشایی داده ها آن را به DPU ارسال می کنیم. رمزگشایی ارسالی DPU تمام داده های درخواست شده را جمع آوری می کند، یک کلید داده جدید تولید می کند، پاسخ را با استفاده از این کلید داده رمزگذاری می کند، رمزنگاری کلید داده با کلید عمومی عمومی جلسه مشتری و جمع آوری هر دو رمزگذاری شده کلید و پاسخ و بازگرداندن آن
  • برنامه مشتری با کلید مشتری رمزگشایی می کند جلسه خصوصی کلید و پاسخ با کلید داده رمزگشایی شده است.

نگرانی های من این است:

  • این مدل نظری است که در حال حاضر، آیا این امکان دارد؟
  • چه کسی این کلید ها (کلید های جلسه، کلید های داده) را ایجاد می کند، آیا توسعه دهندگان (جاوا و پایتون) این کلید ها را تولید می کنند و در کجا ما آنها را ذخیره می کنیم؟ آیا یک کتابخانه ای وجود دارد که ما بتوانیم زندگی را برای ما آسان کنیم؟ باز هم، ما نمی خواهیم که سیستم ما قادر به دسترسی به داده های کاربر بدون کلید اصلی کاربر است که در دستگاه خود است.
    ما در استفاده از AWS Cognito برای احراز هویت و مجوز برنامه ریزی می کنیم و تا آنجا که من می دانم که هیچ کلید جلسه ای را ارائه نمی دهد، بنابراین چگونه می توانیم به آنچه که ذکر شد، دست یابیم؟
  • ارسال رمز خصوصی از طریق سیم برای رمزگشایی داده ها، آیا این ایده خوب است؟ 19659007] من می دانم این اطلاعات زیادی است لطفا به من اطلاع دهید اگر سوالی دارید، به دنبال پیشنهادات / نظرات

چرا حمله حمله مرد در 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] در هگزادسیمال (و امیدوارم با چیزی که می بینید … یا نه مطابقت داشته باشد)

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