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

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

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

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

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

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

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

    هش – رمزگذاری مبتنی بر رمز عبور جاوا اسکریپت نامتقارن

    من می خواهم یک برنامه وب را که به 2 کاربر امکان می دهد پیام های رمز شده را به یکدیگر ارسال کنم، می خواهم، و من می خواهم به حداکثر رساندن امنیت، بنابراین من می خواهم مقدار اعتماد را که من در ارائه دهنده ابر من قرار داده (هر دو پایگاه داده و سرور که در آن کد برنامه است).

    بنابراین، من تصمیم گرفتم سعی کنم یاد بگیرم که چگونه تمام طرف رمزگذاری / رمزگشایی را در جاوااسکریپت انجام دهم.

    اما من مقالات مختلف را خوانده ام از سال 2013، 2011 و 2017 به شدت توصیه می شود هیچ کس هیچ کدام از رمزنگاری مربوط به JS را کد نکنید.

    اگر فرض کنم که هشدار کارشناسان رمزنگاری درباره JS درست است، من این سؤالات را دارم:

    1. From به نظر من، Libsodium یک کتابخانه رمزنگاری بسیار محترم است، پس چرا آن یک نسخه جاوا اسکریپت را ارائه می دهد اگر JS ضعیف باشد؟ (و همچنین استنفورد، W3C و سیگنال است.)
    2. آیا امکان دارد برنامه ای مانند پیش بینی (رمزگذاری کامل از مشتری به سرویس گیرنده) را بدون نیاز به یادگیری برای کد کردن اندروید یا iOS توسعه دهم؟ (اگر نه، سپس چه رویکردی به هدف من نزدیک می شود؟ )

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

    (یعنی با استفاده از برنامه نمی تواند به محلی خاص ذخیره سازی برای یک دستگاه نیاز داشته باشد یا نیاز به آپلود فایل های کلید هایی که برای حفظ بیش از حد طولانی است؛ کاربران باید بتوانند فقط به سیستم وارد شوید با ارائه مدارک معتبر آنها را حفظ کرد.)

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