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