برنامه کاربردی مورد نیاز:
یک برنامه اطلاعات را از سرویس وب پایین می آورد و نیاز به رمزگذاری و حفظ این داده ها به صورت محلی به دیسک است. فقط این برنامه باید قادر به رمزگشایی اطلاعات ذخیره شده در محلی باشد. این برنامه به عنوان یک سرویس ویندوز نصب شده است و هیچ ارتباط مستقیمی با کاربران ندارد.
فرآیند رمزگذاری:
- برنامه نصب شده است و کلید های RSA را با استفاده از
System.Security.Cryptography.RSACryptoServiceProvider
- کلید RSA به یک کانتینر اصلی با نام ظرف مشخص شده توسط برنامه ادامه می یابد
- در زمان بعد، برنامه کلید های RSA را با استفاده از
RSACryptoServiceProvider
بازیابی می کند و از 32 بایت اول پارامتر D استفاده می کند کلیدAesCryptoServiceProvider
برای رمزگذاری اطلاعات روی دیسک استفاده می شود. AES IV به طور تصادفی توسطAesCryptoServiceProvider
برای هر رویداد رمزگذاری تولید شده است. - AES IV که در مرحله 3 استفاده شده است به عنوان متن ciphertext اضافه شده است، همانطور که در اینجا ذکر شده است و چند مکان دیگر که این عمل عادی است.
فرآیند رمزگشایی:
-
AES IV از 16 بایت اولیه متن ciphertext بدست می آید. باقی مانده از متن cipher به مرحله 2 ارسال می شود.
-
این برنامه کلید های RSA را با استفاده از
RSACryptoServiceProvider
بازیابی می کند و از 32 بایت اول پارامتر D به عنوان کلیدAesCryptoServiceProvider
برای رمزگشایی داده ها از دیسک استفاده می شود.
کانت اصلی به این صورت استفاده می شود، عمدتا به این دلیل که روش ها برای ذخیره کلید های نامتقارن به راحتی همانطور که در صفحه کانتینر اصلی مشخص شده است ارائه می شوند. هدف این است که به صورت دوره ای برنامه را تولید کلید های RSA جدید و جایگزینی آنچه که در کانتینر کلیدی ذخیره شده است؛ در نتیجه چرخاندن کلید AES مورد استفاده برای رمزگذاری / رمزگشایی. من می توانم برخی از نمونه های کد را ارائه دهم اما در حال حاضر می خواهم پرسش های اساسی را از اینجا دریافت کنم. [1965،9002] سوالات:
- روش فوق بهتر یا بدتر از برنامه با استفاده از کلاس ProtectedData موجود در دات نت است که ساده می شود مدیریت کلید؟
- آیا برای استفاده از RSA برای رمزگذاری یک کلید متقارن رمزنگاری / رمزگشایی وجود دارد؟ کجا کلید های متقارن کد گذاری شده را ذخیره کنید؟ این لایه اضافه شده غیر ضروری است اگر کلید خصوصی RSA در ابتدای کابین کلیدی نا امن باشد.
- چگونه
System.Security.Cryptography.CspParameters
را هنگام انتقال بهتنظیم کنید. RSACryptoServiceProvider
به منظور محدود کردن دسترسی خصوصی به کلید خصوصی RSA فقط به این برنامه؟ - تمام ایده را از بین ببرید و با جایگزین کردن راه حل XYZ بروید؟