AES – امنیت رمزگذاری پرس و جو؟

امنیت بهار یک روش مفید به نام Encryptors.queryableText است. توضیح آن این است:

تفاوت بین TextEncryptor قابل پرسشی و متن TextEncryptor استاندارد مربوط به بارگزاری اولیه (iv) دست زدن است. IV استفاده شده در یک TextEncryptor # query encrypt عملیات مشترک است، یا ثابت، و به طور تصادفی تولید نمی شود. این به این معنی همان متن رمزگذاری شده چندین بار همیشه یک نتیجه رمزگذاری مشابه را تولید می کند. این کمتر امن است، اما برای داده های رمزگذاری شده ضروری است که در برابر آنها سوالی باشد. یک نمونه از متن رمزگذاری شده پرس و جو می تواند یک apiKey OAuth باشد.

به نظر می رسد از AES / CBC / PKCS5Padding با ثابت تمام صفر IV استفاده شود. (توجه: در جاوا PKCS5Padding واقعا به معنای پاک کردن PKCS # 7 است.

هدف از این روش، استفاده از متن رمزنگاری به عنوان کلید (کلید در یک نقشه / index / etc "به معنی، نه" کلید رمزگذاری "به معنای)

سوالات من هستند:

  1. استفاده عملی از چنین طرح چیست؟ من سعی کردم از یک فکر کنم،
    1. این سیستم یک کلید مخفی دارد (به عنوان مثال، یک کلید اولیه متوالی که آن را نمی خواهد مهاجم را برای شمارش).
    2. این سیستم یک متن رمز را به یک کاربر ارسال می کند که آن را بعدا ارسال می کند اطلاعات پرس و جو مربوط به آن
    3. هنگامی که کاربر متن رمزنگاری را ارسال می کند، سیستم آن را رمزگشایی می کند، پایگاه داده را جستجو می کند و اطلاعات را به دست می گیرد.

برای سناریوی ذکر شده فوق، من می توانم از بسیاری از راه حل های بهتر مشکل:

  • اگر سیستم قبل از پرسیدن آن را رمزگشایی کند، چرا یک متن رمز برای همان متن ساده وجود دارد؟ فقط از رمزگذاری مناسب با تصادفی IV استفاده کنید.
  • اگر سیستم نه آن را رمزگشایی کند، چرا از یک شناسه به طور تصادفی تولید شده به اندازه کافی مبهم استفاده نکنید؟
  • یا بهتر است کنترل دسترسی مناسب زمانی داشته باشید
  • از سند مستندات بالا، چرا یک apiKey OAuth در وهله اول رمزگذاری می شود؟

پس دقیقا این روش خوب است؟


  1. پیامدهای امنیتی این "چیست" کمتر امن "(به عنوان مستندات آن را درخواست می کند) رمزگذاری اگر استفاده شده به عنوان طراحی شده است؟