الگوریتم های نامتقارن توصیه شده برای JWT

من تأیید JWT را برای یک سرویس وب جدید اجرا میکنم و مطمئن نیستم که کدام الگوریتم نامتقارن را انتخاب کند. من در اطراف جستجو کرده ام و هیچ توصیه و یا روشنی را پیدا نکرده ام. با توجه به اسناد PyJWT: https://pyjwt.readthedocs.io/en/latest/algorithms.html چند الگوریتم متفاوت برای انتخاب وجود دارد.

من می خواهم از یک الگوریتم که امن (البته) ، سربار کم است و اثبات آینده است. کدام الگوریتم متناسب با لایحه است؟

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] من می دانم این اطلاعات زیادی است لطفا به من اطلاع دهید اگر سوالی دارید، به دنبال پیشنهادات / نظرات

زیرساخت کلید عمومی – آیا مبادله متقارن کلید از طریق رمزنگاری نامتقارن باید به صورت نامتقارن انجام شود؟

برای برقراری ارتباط در یک کانال عمومی، به نظر می رسد اغلب دو طرف اول ابتدا از رمزنگاری نامتقارن برای مبادله متقارن کلید استفاده می کنند. و سپس از کلید متقارن برای ارتباط بعدی استفاده کنید.

  • باب یک جفت کلید عمومی / خصوصی را تولید می کند
  • باب کلید عمومی خود را به یک سرور کلید ارسال می کند.
  • آلیس کلید عمومی Bob را از سرور کلید دانلود می کند.
  • آلیس یک کلید متقارن را انتخاب می کند با استفاده از کلید عمومی باب برای رمزگشایی کلید متقارن و ارسال آن به باب
  • باب رمزگشایی کلید تقریبی آلیس
  • باب و آلیس با کلید متقابل ارتباط برقرار
  • در مرحله 4، به نظر می رسد تنها آلیس می تواند کلید متقارن را انتخاب کنید. و باید آلیس آن را به تام فرستاد. از آنجا که اگر تام انتخاب و ارسال کلید متقارن به آلیس باشد، هر سپر میتواند آن را رمزگشایی کند.

    آیا این درست است؟