استفاده از کلید خصوصی 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 بروید؟

مرد در وسط – شناسایی میزبان از راه دور در شبکه های مختلف متفاوت است

هنگامی که من ssh به سرور – اجازه دهید آن را xxxx نامگذاری کنیم – بیش از یک شبکه، شبکه A، پیامی دریافت می کنم که شناسایی میزبان راه دور تغییر کرده است.

اگر از یکی از دو شبکه دیگر استفاده کنم، آنها را شبکه B و شبکه C برای اتصال به xxxx، من پیام دریافت نمی کنم.

یعنی برای همان آدرس IP xxxx، اولین شبکه به شناسایی میزبان دیگری از راه دور باز می گردد.

بنابراین نظریه ی من این است که از آنجا که شبکه B و شبکه C موافقند، شبکه A باید کلید اشتباهی را به من بدهد.

شبکه A نتایج مشابهی را از طریق Wi-Fi یا اترنت می دهد. شبکه B من Wi-Fi من است و شبکه C یک Wi-Fi hotspot موبایل است.

مسیریاب شبکه A را راه اندازی مجدد کردم، اما شناسایی میزبان مختلف از راه دور همچنان ادامه دارد.

آیا این نشان دهنده حمله MITM است؟ آیا چیز دیگری وجود دارد؟ مراحل بعدی چیست؟

و روشن است که مشکل فقط به روز رسانی نیست. اگر من شناخته شده__ هاوس را عوض کنم تا کلیدی را که شبکه A انتظار می رود، کار کند، اما شبکه B و C کار نمی کند و برعکس. یعنی، آنها در حال حاضر منتظر کلید های مختلف هستند.