التشفير المصدق عليه مع البيانات المرتبطة (AEAD)

إنّ عنصر Authenticated Encryption with Associated Data (AEAD) الأساسي هو العنصر الأساسي الأكثر شيوعًا لتشفير البيانات، وهو مناسب لمعظم الاحتياجات.

تتضمّن AEAD الخصائص التالية:

  • Secrecy: لا يُعرف أي شيء عن النص العادي باستثناء طوله.
  • المصداقية: يستحيل تغيير النص العادي المشفّر الذي يستند إليه النص المشفّر بدون أن يتم اكتشاف ذلك.
  • التشفير المتماثل: يتم تشفير النص العادي وفك تشفير النص المشفّر باستخدام المفتاح نفسه.
  • العشوائية: يتم تشفير البيانات بشكل عشوائي. تؤدي رسالتان تتضمّنان النص العادي نفسه إلى إنشاء نصَّين مشفَّرَين مختلفَين. لا يمكن للمهاجمين معرفة النص المشفّر الذي يتوافق مع نص عادي معيّن. إذا أردت تجنُّب ذلك، استخدِم AEAD الحتمية بدلاً من ذلك.

البيانات المرتبطة

يمكن استخدام AEAD لربط النص المشفّر ببيانات مرتبطة معيّنة. لنفترض أنّ لديك قاعدة بيانات تتضمّن الحقلَين user-id وencrypted-medical-history. في هذا السيناريو، يمكن استخدام user-id كبيانات مرتبطة عند تشفير encrypted-medical-history. يمنع ذلك المهاجم من نقل السجلّ الطبي من مستخدم إلى آخر.

البيانات المرتبطة اختيارية. في حال تحديد البيانات المرتبطة، لن ينجح فك التشفير إلا إذا تم تمرير البيانات المرتبطة نفسها إلى كل من طلبات التشفير وفك التشفير.

اختيار نوع المفتاح

مع أنّنا ننصح باستخدام AES128_GCM لمعظم الاستخدامات، تتوفّر أنواع مختلفة من المفاتيح لتلبية الاحتياجات المختلفة. يوفّر AES128 أمانًا بمقدار 128 بت، بينما يوفّر AES256 أمانًا بمقدار 256 بت.

في ما يلي قيدان مهمّان متعلّقان بالأمان عند اختيار وضع:

  1. QPS: كم عدد الرسائل التي يتم تشفيرها باستخدام المفتاح نفسه؟
  2. حجم الرسالة: ما هو حجم الرسائل؟

أنواع المفاتيح المتوافقة:

  • إنّ وضع AES-CTR-HMAC (AES128_CTR_HMAC_SHA256 وAES256_CTR_HMAC_SHA256) مع متّجه تهيئة (IV) يبلغ 16 بايت هو الوضع الأكثر أمانًا مع حدود جيدة.
  • تكون خوارزمية AES-EAX (AES128_EAX وAES256_EAX) أقل تحفظًا وأسرع قليلاً من AES128_CTR_HMAC_SHA256.
  • عادةً ما يكون وضع AES-GCM (AES128_GCM وAES256_GCM) هو الأسرع مع فرض قيود صارمة على عدد الرسائل وحجمها. عند تجاوز هذه الحدود المسموح بها لطول النص العادي والبيانات المرتبطة به (الموضّحة أدناه)، يتعذّر على معيار التشفير المتقدّم AES-GCM العمل بشكل كامل، ما يؤدي إلى تسريب النص العادي وجزء المصادقة من المفتاح الداخلي لمعيار التشفير المتقدّم AES-GCM.
    • لا تتسم خوارزمية AES-GCM بالقوة [ABN] ولا بالالتزام بالمفتاح [GLR]. من الممكن إنشاء نص مشفّر يمكن فك تشفيره باستخدام مفتاحين مختلفين. ويمكن أن يؤدي ذلك إلى هجمات عملية [DGRW]. راجِع نموذج التهديد بعناية إذا اختار الخصم المفتاح.
  • إنّ AES-GCM-SIV (AES128_GCM_SIV وAES256_GCM_SIV) أسرع من AES-GCM. ويفرض هذا الوضع القيود نفسها التي يفرضها AES-GCM على عدد الرسائل وحجمها، ولكن عند تجاوز هذه القيود، يحدث الخطأ بطريقة أقل كارثية، إذ قد يتم الكشف فقط عن أنّ رسالتَين متساويتان. وهذا يجعل استخدامه أكثر أمانًا من AES-GCM، ولكنّه أقل استخدامًا في الواقع. لاستخدام هذه الميزة في Java، عليك تثبيت Conscrypt.
  • يفرض XChaCha20-Poly1305 (XCHACHA20_POLY1305) حدًا أقصى أكبر بكثير على عدد الرسائل وحجمها مقارنةً بـ AES-GCM، ولكن في حال حدوث خطأ (وهو أمر غير محتمل)، يؤدي ذلك أيضًا إلى تسريب مواد المفتاح. ولا يتم تسريعها باستخدام الأجهزة، لذا قد تكون أبطأ من أوضاع AES في الحالات التي يتوفّر فيها تسريع الأجهزة.

يمكنك الاطّلاع على مزيد من المعلومات حول تنسيق النقل لنص AEAD المشفّر.

ضمانات الأمان

تقدّم عمليات تنفيذ AEAD ما يلي:

  • أمان CCA2
  • قوة مصادقة تبلغ 80 بت على الأقل
  • القدرة على تشفير 232 رسالة على الأقل بإجمالي 250 بايت لا يوجد هجوم باستخدام ما يصل إلى 232 نصوص عادية أو نصوص مشفّرة مختارة تزيد احتمالية نجاحه عن 2-32.

أمثلة على حالات الاستخدام

أريد تشفير البيانات وربط النص المشفّر بسياقه.