php – اگر متن cypher، متن ساده و nonce شناخته شده باشد، می تواند کلید مخفی تعیین شود؟

من با استفاده از sodium_crypto_secretbox و sodium_crypto_secretbox_open توابع در PHP (در حال حاضر PHP 5.6، با استفاده از paragonie / sodium_compat )

متن cypher، متن غیر کجایی و رمزگشایی، آیا می توانند کلیدی را که برای رمزگذاری اطلاعات استفاده می شود تعیین کند؟

متن: رمزگذاری ورود کاربر (یک کوکی، ذخیره شده در دستگاه) و استفاده از آن به عنوان یک نشانه CSRF نشانه CSRF لزوما شامل nonce برای رمزگشایی در هنگام ارسال است. Token CSRF رمزگشایی شده و در ارسال فرم POST ها برای محافظت در برابر حملات CSRF تأیید شده است.

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

tls – آیا سرور nonce و client nonce در SSL برابر است؟

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

اگر آنها برابر نیستند، به نظر می رسد که سرور و مشتری باید دو بار مخزن استاد را محاسبه کند، یکی با مشتری nonce و دیگری با سرور nonce

محرمانه Master با در نظر گرفتن هر دو nonces از هر دو nonces شناخته شده است هر دو طرف، یک دلیل آن را به صورت محلی ایجاد شده و یکی دیگر به دلیل آن بود که توسط همکار دریافت کرد. برای جزئیات مراجعه کنید به TLS 1.2 بخش 8.1 محاسبه راز استاد:

   master_secret = PRF (pre_master_secret، "secret master")
                      ClientHello.random + ServerHello.random)
                      [0..47]؛

ClientHello.random و ServerHello.random همان چیزی است که nonces در سند به شما اشاره دارد.

احراز هویت – اگر ما فقط nonce سرور و نه سرور nonce استفاده کنیم، کدام یک از بردارها حمله می شود؟

همانطور که همه ما می دانیم، nonce برای جلوگیری از حمله مجدد مورد نیاز است. هرچند که من در مورد nonce خواندم، می بینم که مشتری همیشه از سرور و می خواهد امنیت بیشتری را بهبود ببخشد، همچنین میتواند مشتری خود را (cnonce) اضافه کند.

درست مثل این نمودار:

 توضیح تصویر را اینجا وارد کنید

این طرح یک سربار اضافی به سرور را اضافه می کند؛ و من سعی می کنم شکل بگیرد که بردارهای حمله ممکن خواهد شد، اگر ما فقط از nonce client استفاده کنیم و در سرور مطمئن باشیم که cnonces ها هرگز استفاده مجدد نمی شوند (برای اجتناب از ذخیره سازی تمام موجودات مورد استفاده، بدیهی است که ما فقط می توانیم از آن استفاده کنیم هر cnonce بعدی برای یک کلید API داده شده بزرگتر از قبلی است و فقط آخرین کلید برای کلید API داده شده را ذخیره می کند.

تا کنون موفق به پیدا کردن هر بردار جدیدی از حمله نیستم: با اطمینان از اینکه cnonces هرگز نمی تواند دوباره استفاده شود برای هر کلید API، حملات بازی را کاملا حذف می کنیم. آیا چیزی از دست رفته؟