إنّ التشفير المصادَق عليه مع البيانات المرتبطة (AEAD) هو الأسلوب الأكثر شيوعًا لتشفير البيانات، وهو مناسب لمعظم الاحتياجات.
يتميّز التشفير المصادَق عليه مع البيانات المرتبطة (AEAD) بالخصائص التالية:
- Secrecy: لا يُعرف أي شيء عن النص العادي باستثناء طوله.
- المصداقية: من المستحيل تغيير النص العادي المشفّر الذي يستند إليه النص المشفر بدون أن يتم اكتشاف ذلك.
- التشفير المتماثل: يتم تشفير النص العادي وفك ترميز النص المشفر باستخدام المفتاح نفسه.
- التوزيع العشوائي: يتم تشفير البيانات بشكل عشوائي. وتؤدي رسالتان تتضمّنان النص العادي نفسه إلى إنشاء نصين مشفرَين مختلفَين. لا يمكن للمهاجمين معرفة النص المشفر الذي يتطابق مع نص عادي معيّن. إذا أردت تجنُّب ذلك، استخدِم التشفير المصادَق عليه مع البيانات المرتبطة (AEAD) الحتمي بدلاً منه.
البيانات المرتبطة
يمكن استخدام التشفير المصادَق عليه مع البيانات المرتبطة (AEAD) لـ ربط النص المشفر ببيانات مرتبطة معيّنة
بيانات. لنفترض أنّ لديك قاعدة بيانات تتضمّن الحقلَين user-id وencrypted-medical-history. في هذا السيناريو، يمكن استخدام user-id كبيانات مرتبطة عند تشفير encrypted-medical-history. يمنع ذلك المهاجم من نقل السجلّ الطبي من مستخدِم إلى آخر.
البيانات المرتبطة اختيارية. في حال تحديدها، لا تنجح عملية فك التشفير إلا إذا تم تمرير البيانات المرتبطة نفسها إلى كلٍّ من طلبَي التشفير وفك التشفير.
اختيار نوع المفتاح
ننصح باستخدام AES128_GCM لمعظم حالات الاستخدام، ولكن تتوفّر أنواع مفاتيح مختلفة لتلبية الاحتياجات المختلفة. يوفّر AES128 أمانًا بمستوى 128 بت، بينما يوفّر AES256 أمانًا بمستوى 256 بت.
في ما يلي قيود الأمان البارزة عند اختيار وضع معيّن:
- عدد الطلبات في الثانية (QPS): كم عدد الرسائل التي يتم تشفيرها باستخدام المفتاح نفسه؟
- حجم الرسالة: ما هو حجم الرسائل؟
أنواع المفاتيح المتوافقة:
- إنّ AES-CTR-HMAC (AES128_CTR_HMAC_SHA256 وAES256_CTR_HMAC_SHA256) مع متّجه تهيئة (IV) بطول 16 بايت هو الوضع الأكثر تحفّظًا مع حدود جيدة.
- المفتاح الملتزم.
- إنّ AES-EAX (AES128_EAX وAES256_EAX) أقل تحفّظًا وأسرع قليلاً من AES128_CTR_HMAC_SHA256.
- ليس المفتاح الملتزم MLGR.
- إنّ AES-GCM (AES128_GCM وAES256_GCM) هو عادةً الوضع الأسرع مع الحدود الأكثر صرامة على عدد الرسائل (232) وحجم الرسالة (~64 غيغابايت لكل رسالة). عند تجاوز هذه الحدود، يفشل AES-GCM بشكل كارثي من خلال تسريب النص العادي وجزء المصادقة من المفتاح الداخلي لـ AES-GCM.
- إنّ AES-GCM-SIV (AES128_GCM_SIV وAES256_GCM_SIV) سريع تقريبًا مثل AES-GCM.
وله الحدود نفسها التي يفرضها AES-GCM على عدد الرسائل وحجم الرسالة، ولكن عند تجاوز هذه الحدود، يفشل بطريقة أقل كارثية: قد يؤدي ذلك إلى تسريب حقيقة أنّ رسالتَين متساويتان فقط. ويجعل ذلك استخدامه أكثر أمانًا من AES-GCM، ولكنّه أقل استخدامًا على نطاق واسع في الممارسة العملية. لاستخدام
هذا في Java، عليك تثبيت Conscrypt.
- ليس المفتاح الملتزم ADGKLS.
- يفرض XChaCha20-Poly1305 (XCHACHA20_POLY1305) حدًا أكبر بكثير على عدد الرسائل وحجم الرسالة مقارنةً بـ AES-GCM، ولكن عند فشله (وهو أمر غير مرجّح)، يؤدي ذلك أيضًا إلى تسريب مادة المفتاح. لا يتم تسريع هذه الخوارزمية على مستوى الأجهزة، لذا قد تكون أبطأ من أوضاع AES في الحالات التي يتوفّر فيها تسريع الأجهزة.
- ليس المفتاح الملتزم LGR.
مزيد من المعلومات حول تنسيق النقل السلكي للنص المشفر الذي تم إنشاؤه باستخدام التشفير المصادَق عليه مع البيانات المرتبطة (AEAD)
الضمانات الأمنية
توفّر عمليات تنفيذ التشفير المصادَق عليه مع البيانات المرتبطة (AEAD) ما يلي:
- أمان CCA2
- قوة مصادقة لا تقل عن 80 بت
- إمكانية تشفير ما لا يقل عن 232 رسالة بإجمالي 250 بايت لا يوجد أي هجوم يتضمّن ما يصل إلى 232 نصًا عاديًا أو نصًا مشفرًا تم اختيارهما، ويكون احتمال نجاحه أكبر من 2-32.
أمثلة على حالات الاستخدام
يمكنك الاطّلاع على أريد تشفير البيانات وربط النص المشفر بسياقه.