يُعدّ التشفير المصادَق عليه مع البيانات المرتبطة (AEAD) هو الأكثر شيوعًا لتشفير البيانات وهو مناسب لمعظم الاحتياجات.
تتضمّن AEAD السمات التالية:
- Secrecy: لا يتم الكشف عن أي معلومات عن النص العادي، باستثناء طوله.
- الموثوقية: من المستحيل تغيير النص العادي المشفّر الذي يستند إليه النص المشفّر بدون أن يتم رصد ذلك.
- التشفير المتماثل: يتم تشفير النص العادي وفك تشفير النص المشفّر باستخدام المفتاح نفسه.
- التوزيع العشوائي: يتم التشفير بشكل عشوائي. رسالتان لهما نفس النص العادي تنتجان نصوصًا مشفرة مختلفة. لا يمكن للمهاجمين معرفة النص المشفّر الذي يتوافق مع نص عادي معيّن. إذا أردت تجنُّب ذلك، استخدِم Deterministic AEAD بدلاً من ذلك.
البيانات المرتبطة
يمكن استخدام AEAD لربط النص المشفّر ببيانات مرتبطة
محدّدة. لنفترض أنّ لديك قاعدة بيانات تتضمّن الحقلَين user-id وencrypted-medical-history. في هذا السيناريو، يمكن استخدام user-id كبيانات مرتبطة عند تشفير encrypted-medical-history. يمنع هذا المهاجم من نقل السجل الطبي من مستخدم إلى آخر.
البيانات المرتبطة اختيارية. في حال تحديد هذه البيانات، لن تنجح عملية فك التشفير إلا إذا تم تمرير البيانات المرتبطة نفسها إلى كل من طلبات التشفير وفك التشفير.
اختيار نوع المفتاح
على الرغم من أنّنا ننصح باستخدام AES128_GCM لمعظم الاستخدامات، هناك أنواع مختلفة من المفاتيح لتلبية الاحتياجات المختلفة. يوفّر معيار AES128 مستوى أمان 128 بت، بينما يوفّر معيار AES256 مستوى أمان 256 بت.
في ما يلي قيود الأمان البارزة التي يجب مراعاتها عند اختيار وضع:
- الأسئلة الشائعة: كم عدد الرسائل التي يتم تشفيرها باستخدام المفتاح نفسه؟
- حجم الرسالة: ما هو حجم الرسائل؟
أنواع المفاتيح المتوافقة:
- يُعدّ AES-CTR-HMAC (AES128_CTR_HMAC_SHA256 وAES256_CTR_HMAC_SHA256) مع متجه تهيئة (IV) بحجم 16 بايت هو الوضع الأكثر تحفّظًا مع حدود جيدة.
- Key-committing.
- يُعدّ 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)
[RFC8452] مقاومًا لإساءة الاستخدام العرضية
للرقم المستخدم لمرة واحدة، كما أنّه يتميز بأداء مماثل تقريبًا لأداء AES-GCM. إنّ الحدود القصوى لعدد الرسائل وحجمها في AES-GCM-SIV مع متجهات الإعداد العشوائية أعلى بكثير من حدود AES-GCM. عند تجاوز هذه الحدود،
يكون فشل AES-GCM-SIV أقل كارثية: فهو يسرّب فقط أنّ
رسالتين متساويتان.
يُعدّ AES-GCM-SIV أكثر أمانًا في الاستخدام، ولكنه أقل استخدامًا من الناحية العملية.
- حدود الأرقام العشوائية المستخدمة لمرة واحدة:
- 232 رسالة، حيث يبلغ حجم كل نص عادي 8 غيبي بايت كحد أقصى
- 248 رسالة، حيث يبلغ حجم كل نص عادي 32 ميغابايت كحد أقصى
- 264 رسالة، حيث يبلغ الحد الأقصى لكل نص عادي 128 كيلوبايت
- لاستخدامها في Java، عليك تثبيت Conscrypt.
- لا يتم استخدام مفتاح الالتزام ADGKLS.
- حدود الأرقام العشوائية المستخدمة لمرة واحدة:
- يوفّر XChaCha20-Poly1305 (XCHACHA20_POLY1305) حدًا أقصى أكبر بكثير لعدد الرسائل وحجمها مقارنةً بـ AES-GCM، ولكن في حال فشله (وهو أمر غير محتمل)، فإنه يسرّب أيضًا مواد المفاتيح. لا يتم تسريع الأجهزة، لذا يمكن أن يكون أبطأ من أوضاع AES في الحالات التي يتوفّر فيها تسريع الأجهزة.
- LGR غير ملتزم بالمفتاح
مزيد من المعلومات حول تنسيق النقل للنص المشفَّر باستخدام AEAD
ضمانات الأمان
توفّر عمليات تنفيذ AEAD ما يلي:
- أمان CCA2
- قوة مصادقة لا تقل عن 80 بت
- القدرة على تشفير ما لا يقل عن 232 رسالة بإجمالي 250 بايت. لا يمكن لأي هجوم باستخدام ما يصل إلى 232 من النصوص العادية المحدّدة أو النصوص المشفّرة المحدّدة أن يحقّق احتمال نجاح أكبر من 2-32.
أمثلة على حالات الاستخدام
لنفترض أنّني أريد تشفير البيانات وربط النص المشفّر بسياقه.