وضع SIV: تشفير AEAD مقاوم لسوء استخدام nonce
استكشف وضع Synthetic IV (SIV)، وكيف يحمي من إعادة استخدام nonce الكارثية
وضع SIV: تشفير AEAD مقاوم لسوء استخدام nonce درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
إعادة استخدام nonce: فشل كارثي
تتطلب شفرات AEAD المعتمدة على وضع CTR، مثل AES-GCM، استخدام nonce فريد لكل عملية تشفير. وإذا أُعيد استخدام nonce نفسه مع المفتاح نفسه، فيمكن لمهاجم يراقب نصين مشفرين أن يجري XOR بينهما لاستعادة XOR للنصين الصريحين، مما يكسر السرية فورًا.
إعادة استخدام nonce في GCM تكشف مفتاح المصادقة
إعادة استخدام nonce في AES-GCM أكثر كارثية حتى من إعادة استخدامه في وضع CTR العادي. فعندما تُشفَّر رسالتان باستخدام nonce والمفتاح نفسيهما، يستطيع المهاجم استعادة مفتاح مصادقة GHASH H بالكامل. ومع معرفة H، يستطيع المهاجم تزوير رسائل موثقة عشوائية.
تقديم وضع Synthetic IV
صُمم وضع Synthetic IV (SIV)، المعرَّف في RFC 5297، للقضاء على ثغرات إعادة استخدام nonce. فبدلًا من اشتراط nonce عشوائي أو قائم على عداد، يشتق SIV قيمة IV اصطناعيًا من النص الصريح نفسه باستخدام دالة شبه عشوائية، مما يجعله حتميًا ومقاومًا لسوء استخدام nonce.
آلية اشتقاق nonce في SIV
في SIV، تُحسب قيمة nonce، التي تُسمى IV الاصطناعية، بالصيغة SIV = PRF(key, plaintext, associated_data). ثم تُستخدم قيمة IV هذه بوصفها العداد لتشفير وضع CTR. وبما أن IV مشتقة من النص الصريح، فإن تشفير النص الصريح نفسه ينتج دائمًا النص المشفر نفسه.
نتيجة إعادة استخدام nonce في SIV
إذا أُعيد استخدام nonce في SIV بسبب تشفير النص الصريح نفسه مرتين، فلن يعرف المراقب سوى أنه أُرسلت رسالتان متطابقتان. ويظل محتوى النص الصريح نفسه مخفيًا. ويمثل ذلك تحسنًا كبيرًا مقارنةً بـ AEAD القائم على CTR، حيث تكشف إعادة استخدام nonce عن XOR للنص الصريح.
بنية AES-SIV
يستخدم AES-SIV (RFC 5297) الدالة S2V، وهي PRF متسلسلة تعتمد على AES-CMAC، لإنشاء IV اصطناعي، ثم يجري التشفير باستخدام AES-CTR المزوّد بمفتاح فرعي ثانٍ. ويتطلب ذلك مفتاحَي AES، مما يجعل إدارة المفاتيح أكثر تعقيدًا قليلًا من أوضاع AEAD ذات المفتاح الواحد.
AES-GCM-SIV: بديل حديث
يُعد AES-GCM-SIV (RFC 8452) نمط AEAD أكثر كفاءة ومقاومًا لإساءة استخدام nonce، وقد صُمم للجمع بين أداء GCM وأمان شبيه بـ SIV. ويشتق مفاتيح فرعية خاصة بكل رسالة من nonce، ويستخدم مُصدِّق Polyval، محققًا أداءً أفضل من AES-SIV مع الحفاظ على مقاومة إساءة استخدام nonce.
كلفة الأداء الناتجة عن المرورين
يتطلب SIV المرور على البيانات مرتين: مرة لحساب IV الاصطناعي، ومرة لإجراء التشفير. ويؤدي ذلك تقريبًا إلى مضاعفة الكلفة الحسابية مقارنةً بأوضاع AEAD ذات المرور الواحد مثل AES-GCM. ويجب أخذ هذه الكلفة الإضافية في الاعتبار في التطبيقات الحساسة لزمن الاستجابة أو ذات معدل النقل المرتفع.
متى يُفضَّل SIV على GCM
يُفضَّل SIV عندما يكون إنشاء nonce غير موثوق، أو عندما تكون حالة التطبيق عديمة الحالة ولا تستطيع الحفاظ على عدّاد nonce، أو عندما يكون التشفير الحتمي مطلوبًا. ومن الأمثلة على ذلك تشفير حقول قواعد البيانات عندما يجب أن تنتج القيمة نفسها النص المشفر نفسه دائمًا لأغراض الفهرسة.
الخدمات عديمة الحالة والتشفير الحتمي
تُعد الخدمات المصغرة عديمة الحالة، التي لا تستطيع تنسيق حالة nonce عبر النسخ المتماثلة، مرشحةً مثالية لنمط SIV. فبدلًا من المخاطرة بإعادة استخدام nonce عن طريق عدّاد عام، يوفر SIV الأمان تلقائيًا. ويستخدم تغليف المفاتيح (RFC 3394) أيضًا مبادئ SIV لتشفير المفاتيح حتميًا.
SIV عمليًا
يتوفر AES-SIV في مكتبات التشفير الرئيسية، بما فيها libsodium (باسم crypto_aead_aes256gcm_siv في الإصدارات الحديثة) وGoogle Tink. ويدعم BoringSSL ومكتبة Go القياسية AES-GCM-SIV. وعندما تكون إدارة nonce صعبة، تكون هذه الخيارات الافتراضية أكثر أمانًا من AES-GCM القياسي.
التحقق من إساءة استخدام nonce في SIV
ماذا يحدث عند استخدام المفتاح نفسه لتشفير النص الصريح نفسه مرتين باستخدام AES-SIV؟
مراجعة الدرس: SIV لأمان nonce
يلغي نمط SIV الكوارث الناتجة عن إعادة استخدام nonce، وذلك باشتقاق IV من النص الصريح نفسه. ولا تكشف إعادة استخدام nonce إلا أن رسائل متطابقة أُرسلت، وليس محتواها. ويوفر AES-GCM-SIV (RFC 8452) مقاومة فعالة لإساءة استخدام nonce في التطبيقات الحديثة التي تحتاج إلى تشفير عديم الحالة أو حتمي.
الأسئلة الشائعة
هل درس «وضع SIV: تشفير AEAD مقاوم لسوء استخدام nonce» مجاني؟
نعم — نص درس «وضع SIV: تشفير AEAD مقاوم لسوء استخدام nonce» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
ماذا ستتعلم في «وضع SIV: تشفير AEAD مقاوم لسوء استخدام nonce»؟
استكشف وضع Synthetic IV (SIV)، وكيف يحمي من إعادة استخدام nonce الكارثية تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟
لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «وضع SIV: تشفير AEAD مقاوم لسوء استخدام nonce»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟
نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا يتفوق Encrypt-Then-MAC على MAC-Then-Encrypt؟
- وضع SIV: تشفير AEAD مقاوم لسوء استخدام nonce
- AEGIS: تشفير موثّق عالي السرعة
- اختيار AEAD لأنظمة الإنتاج