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

توفّر دالة AEAD الأساسية لبث الوسائط تشفيرًا مصادقًا لبث البيانات. يكون مفيدًا عندما تكون البيانات المطلوب تشفيرها كبيرة جدًا ولا يمكن معالجتها في خطوة واحدة. تشمل حالات الاستخدام الشائعة تشفير الملفات الكبيرة أو عمليات نقل بيانات المباشرة.

يتم التشفير في أقسام مرتبطة بموقعها الجغرافي ضمن ملف التشفير ولا يمكن إزالتها أو إعادة ترتيبها. لا يمكن إدراج أجزاء من نص مشفَّر في نص مشفَّر آخر. لتعديل نص مشفَّر حالي، يجب إعادة تشفير مصدر البيانات بالكامل.1

يكون فك التشفير سريعًا لأنّه يتم فك تشفير جزء من النص المشفَّر وتأكيد هويته في كل مرة. يمكن الحصول على نصوص عادية جزئية بدون معالجة النص المشفَّر بالكامل.

تستوفي عمليات تنفيذ AEAD للبث تعريف AEAD وهي آمنة بتقنية nOAE. وتتسم هذه الرسائل بالخصائص التالية:

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

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

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

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

ننصحك باستخدام AES128_GCM_HKDF_1MB لمعظم الاستخدامات. بشكل عام:

  • AES-GCM-HKDF
    • AES128_GCM_HKDF_1MB (أو AES256_GCM_HKDF_1MB) هو الخيار الأسرع. ويمكنه تشفير ملفَين بحجم 264 بايت كحد أقصى لكل منهما. يتم استخدام ‎1 ميغابايت تقريبًا من الذاكرة أثناء عملية التشفير وفك التشفير.
    • يستهلك AES128_GCM_HKDF_4KB ما يقرب من 4 كيلوبايت من الذاكرة، وهو خيار جيد إذا كان نظامك لا يتضمّن الكثير من الذاكرة.
  • AES-CTR HMAC
    • يُعدّ AES128_CTR_HMAC_SHA256_1MB (أو AES256_CTR_HMAC_SHA256_1MB) خيارًا أكثر تحفظًا.

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

توفّر عمليات تنفيذ AEAD للبث ما يلي:

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

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

راجِع المقالة أريد تشفير ملفات كبيرة أو ملفوظات تدفق بيانات.


  1. ويعود سبب هذا التقييد إلى استخدام مُشفّر AES-GCM. إنّ تشفير جزء مختلف من النص العادي في الموضع نفسه يعادل إعادة استخدام مبدّل البدء، ما ينتهك ضمانات الأمان لـ AES-GCM. وهناك سبب آخر وهو أنّ ذلك يمنع هجمات "الرجوع إلى الإصدار السابق"، حيث قد يحاول المهاجم استعادة إصدار سابق من الملف بدون رصده. 

  2. يمكن استخدام 32 مقطعًا، ويحتوي كل مقطع على segment_size - tag_size بايت من النص العادي. بالنسبة إلى الأجزاء التي تبلغ 1 ميغابايت، يبلغ إجمالي حجم النص العادي 232 * (220-16) ~= 251 بايت. 

  3. يصبح بروتوكول AEAD للبث غير آمن عند تكرار تركيبة مفتاح مشتق (128 بت) وبادئة عدد عشوائي (قيمة عشوائية مستقلة تبلغ 7 بايت). لدينا مقاومة للتصادم بسعة 184 بت، ما يعادل تقريبًا رسالتَين64 إذا أردنا أن يكون احتمال النجاح أقل من 2-32