إنّ النموذج الأولي للتشفير المصادَق مع البيانات المرتبطة (AEAD) هو النموذج الأساسي الأكثر شيوعًا لتشفير البيانات، وهو مناسب لمعظم الاحتياجات.
يحتوي AEAD على الخصائص التالية:
- السرية: لا شيء معروف عن النص العادي سوى طوله.
- الأصالة: من المستحيل تغيير النص العادي المشفر الذي يستند إلى النص المشفر بدون أن يتم اكتشافه.
- المتماثل: يتم تشفير النص العادي وفك تشفير النص المشفّر باستخدام المفتاح نفسه.
- الترتيب العشوائي: يكون التشفير عشوائيًا. رسالتان لهما نفس النص العادي ينتجان نصوصًا مشفرة مختلفة. لا يمكن للمهاجمين معرفة النص المُشفر الذي يتوافق مع نص عادي معين. إذا كنت تريد تجنُّب ذلك، استخدِم دالة تحديد AEAD بدلاً من ذلك.
البيانات المرتبطة
يمكن استخدام AEAD لربط النص المشفر ببيانات
محددة مرتبطة. لنفترض أن لديك قاعدة بيانات تحتوي على الحقلين user-id
وencrypted-medical-history
. في هذا السيناريو، يمكن استخدام user-id
كبيانات مرتبطة عند تشفير encrypted-medical-history
. وهذا يمنع المهاجم من نقل
السجلّ الطبي من مستخدم إلى آخر.
اختيار نوع المفتاح
على الرغم من أننا ننصح باستخدام AES128_GCM في معظم الاستخدامات، إلا أنّ هناك أنواع مفاتيح مختلفة للاحتياجات المختلفة (لأغراض الأمان 256 بت، يمكنك استبدال AES128 بمعيار AES256 أدناه). بوجه عام:
- يعد AES128_CTR_HMAC_SHA256 مع متجه تهيئة (IV) بحجم 16 بايت هو الوضع الأكثر تحفظًا مع حدود جيدة.
- وتُعدّ AES128_EAX أقل تحفظًا إلى حد ما وأسرع قليلاً من AES128_CTR_HMAC_SHA256.
- ويكون عادةً AES128_GCM هو الوضع الأسرع، ويتم فرض قيود أكثر صرامة على عدد الرسائل وحجم الرسالة. عند تجاوز هذه الحدود المفروضة على النص العادي وأطوال البيانات المرتبطة به (أدناه)، تفشل خوارزمية AES128_GCM وتؤدي إلى تسريب المادة الأساسية.
- تساوي سرعة AES128_GCM_SIV تقريبًا معيار AES128_GCM، مع حدود جيدة جدًا لعدد كبير من الرسائل، إلا أنّها أقلّ تثبيتًا إلى حد ما. لاستخدام هذا في Java، يجب تثبيت Conscrypt.
- يفرض XChaCha20Poly1305 حدًا أكبر بكثير على عدد الرسائل وحجم الرسالة مقارنةً بمعيار AES128_GCM، ولكن إذا تعذّر تنفيذه (من غير المرجّح جدًا)، سيؤدي ذلك أيضًا إلى تسريب المواد الأساسية. لا يتم تسريع الأجهزة، لذا يمكن أن تكون أبطأ من أوضاع معيار التشفير المتقدّم (AES) في الحالات التي يتوفّر فيها تسريع الأجهزة.
ضمانات الأمان
تقدم عمليات تنفيذ AEAD ما يلي:
- أمان CCA2.
- مدى قوة المصادقة 80 بت على الأقل.
- إمكانية تشفير 232 رسالة على الأقل بإجمالي 250 بايت. ليس هناك أي هجوم يتضمن ما يصل إلى 232 من النصوص العادية التي يتم اختيارها أو النصوص المشفَّرة التي تم اختيارها، احتمالية نجاحها أكبر من 2-32.
أمثلة لحالات الاستخدام
أرى أنني أريد تشفير البيانات وربط النص المشفر بسياقه.