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

.net – یک روش امن برای استفاده از نشانه های پی اچ پی در یک برنامه C # چیست؟

به نظر می رسد مانند شما، همانطور که بسیاری از شما قبل از انجام آن، تلاش می کنید تا آن را انجام دهید، بنابراین فقط یک «مجاز» میتواند به API آنلاین شما (احتمالا یک سرویس وب) دسترسی پیدا کند. این، به نظر شما، غیرممکن است. شما می توانید بسیاری از مراحل را برای ایجاد یک کارمند غیر مجاز کارآمد (ایجاد اشتباه، رمزگذاری کردن نشانه ها به صورت محلی، مسدود کردن استفاده از پروکسی متوقف شده با استفاده از تایید گواهی، طرح های مختلف دیگر DRM و غیره) سخت تر کنید، اما در پایان روزی، اگر مشتریان کار را به شما ارائه می دهیم، آنها می توانند (و اگر هر دلیلی برای ناراحتی دارند، ) همه مواردی را که مشتری انجام می دهد کپی می کند تا سرور شما آن را قانع کند.

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

  1. آنها اعتماد زیادی به مشتری دارند. یک مثال ممکن است یک بازی آنلاین باشد که در آن مشتری به سرور می گوید که آیا کاربر برنده شده یا نه، به جای اینکه مشتری به سرور گفته شود چه کاربر انجام داده و سرور تصمیم بگیرد چه کسی برنده شود. هرگز به مشتری اعتماد نکنید.
  2. سرویس گران به نوعی از نظر هزینه (صرفه جویی در محاسبات، ذخیره سازی و هر چیز دیگری) هزینه دارد و می خواهند محدودیت درخواست های چندگانه را برای آن محدود کنند. رویکرد صحیح در اینجا احتیاج به احراز هویت کاربر است، نه مشتری، و یا کاربر را شارژ یا محدود کردن تعداد درخواستهایی که می توانند انجام دهند.
  3. آنها نمی خواهند مردم به طور اتوماتیک با سرویس ارتباط برقرار کنند، مثلا چون این یک بازی با بسیاری از رفتارهای تکراری است و آنها نمی خواهند که افراد برای رباتها نوشتن کنند. در آن صورت سخت است. تنها چیزی است که می توان در مقابل آن انجام داد و معمولا به نوعی بازنگری انسانی از تکرارها یا چیزی شبیه آن برای شناسایی تقلب ها می پردازد.
  4. آنها می خواهند فقط از کاربران خاص پشتیبانی کنند (مثلا آنها میخواهید با یک برنامه لینوکس آشنا شوید) و نگران هستند که اگر کسی برنامه خود را بسازد، آنها با درخواست پشتیبانی برای کدی که نوشتند بمباران نمی شوند. صادقانه می گویم، هیچ راهی خوب برای این کار وجود ندارد (به جز نام تجاری نام تجاری شما و استفاده از تهدید قانونی علیه کسی که تلاش می کند چیزی را به عنوان شما منتشر کند، این کار را متوقف نخواهد کرد؛ چیزی که "مشتری غیر رسمی YourService (TM) ")

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

احراز هویت Digest با SHA2

آیا DigestClient در حال اجرا است که از خانواده SHA2 الگوریتم های هش پشتیبانی می کند؟ پیاده سازی جاری DigestClient زمانی رخ خواهد داد که چالش الگوریتم چیزی جز "md5" یا "md5-sess" باشد. به DigestClient خط 1134 مراجعه کنید که در مورد چالش سرور شامل الگوریتم = "SHA-256" است.

افکار فعلی این است که خودم IAuthenticationModule -HDM5 و پیاده سازی را با AuthenticationManager ثبت کنید.

رمزگذاری – استفاده از پرونده ها از پرونده های رمزگذاری شده استفاده کنید

من برای امنیت سایبری تازه کار هستم، اما من در پروژه ای هستم که نیاز به استفاده از آن دارم و نمی دانم کجا شروع کنم. برنامه ای که من در حال کار بر روی Connects to jira برای بازیابی داده ها و تولید گزارش ها هستم. برای اتصال به جیرا می خواهم از یک نام کاربری و رمز عبور خاص استفاده کنم. من نمی توانم آنها را به عنوان رشته در کد من قرار دهد، زیرا هر کاربر اعتبار من را دریافت می کند. بنابراین، من درباره نوشتن یک فایل رمز شده فکر کردم.

این چیزی است که اگر میخواهید فایل من رمزگشایی شود، باید کلید رمزگشایی را در کد من ارائه دهم. و من فکر می کنم این کاملا امن نیست، زیرا هر کسی که به کلید دسترسی داشته باشد می تواند به راحتی فایل را رمزگشایی کند و بنابراین اعتبار من را دریافت می کند.

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

من نیز نگران این هستم که اگر من اعتبارنامه ها را خوانده و رمزگشایی کنم، هرکس می تواند از console.writeline استفاده کند و مدارک را دریافت کند.

من از برنامه C # استفاده می کنم

همانطور که گفتم من زیاد درباره امنیت سایبر نمی دانم، من فقط برای سال های قبل RSA نوشتم.

آیا راهی وجود دارد که می توانم اعتبارم را تأمین کنم؟

php – جمع آوری زباله و آسیب پذیری

شما باید حداقل 5 شهرت در پشته امنیت اطلاعات داشته باشید تا سوال مربوط به متا را بپرسید، اما شما ممکن است به طور خاص در مورد امنیت خود اطلاعات امنیتی پشته بپرسید.

لطفا سوال من را به متا منتقل کنید، متشکرم.

این ممکن است یک سوال بی اهمیت برای بسیاری باشد، اما متاسفانه نه برای من. بنابراین، اگر من از وانیل PHP (v 5.x) سبک رویه ای استفاده می کنم، آیا مجموعه های زباله وجود دارد؟ تا جایی که من GC را درک می کنم، مدیریت حافظه برای حذف شیء استفاده نشده است. این به من می گوید که با استفاده از روش رویه ای PHP (-> با کلاس ها و شیء کار نمی کند) GC غیر ضروری (یا بیشتر مانند: غیر موجود). من 2 سوال دارم:

  1. این فرض درست است
  2. از نظر امنیتی، آیا خطرناک است که یک برنامه کاربردی نوشته شده در PHP، بدون GC، یا بیشتر خطرناک باشد تا برنامه را در C # بگویم، با استفاده از کلاس ها، اشیاء (و بنابراین GC). آیا با داشتن GC آسیب پذیری ها را باز کرده یا کاملا مخالف، از آنها جلوگیری می کند؟

برای پاسخ ها متشکرم.