هجمات Padding Oracle بالتفصيل
تتبّعوا هجوم CBC padding oracle، وافهموا لماذا تكون حتى oracles أخطاء فك التشفير الطفيفة كارثية.
هجمات Padding Oracle بالتفصيل درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
بنية فك التشفير في نمط CBC
في نمط CBC (تسلسل كتل الشيفرة)، يتضمن فك تشفير كل كتلة فك تشفير كتلة النص المشفر باستخدام شيفرة الكتل، ثم إجراء XOR بين الناتج وكتلة النص المشفر السابقة. وتقدم عملية XOR هذه خاصية خطيرة: إذ يستطيع المهاجم، بتعديل البتات في كتلة من النص المشفر، التأثير بطريقة يمكن التنبؤ بها في بتات محددة من النص الصريح المفكوك للكتلة التالية. وتتيح هذه الخاصية هجوم أوراكل الحشو.
شرح حشو PKCS#7
تتطلب شيفرات الكتل إدخالًا مقسمًا إلى كتل ثابتة الحجم. يملأ حشو PKCS#7 الكتلة الأخيرة؛ فإذا لزم 3 بايتات من الحشو، تُضاف ثلاثة بايتات، قيمة كل منها 0x03. وإذا كانت الكتلة ممتلئة أصلًا، تُضاف كتلة حشو كاملة تكون جميع بايتاتها البالغ عددها 16 وقيمة كل منها 0x10. أثناء فك التشفير، يجري التحقق من اتساق بايتات الحشو، بحيث تكون قيمة جميع N بايتات هي N، ثم تُزال. وإذا كان الحشو غير صالح، فينبغي أن يفشل فك التشفير.
الأوراكل: استغلال التحقق من الحشو
أوراكل الحشو هو أي نظام يكشف ما إذا كان النص المشفر بعد فك تشفيره يحتوي على حشو PKCS#7 صالح. وقد يكون الأوراكل رسالة خطأ صريحة، مثل حشو غير صالح، أو رمز حالة HTTP مختلفًا، مثل 500 مقابل 403، أو نص استجابة خطأ مختلفًا، أو حتى فرقًا في التوقيت، إذ يكون فك تشفير الحشو الصالح أسرع قليلًا. ولا يحتاج المهاجم إلى معرفة المفتاح؛ بل يحتاج فقط إلى هذه الإشارة الثنائية: الحشو صالح أم غير صالح.
استعادة النص الصريح بايتًا بعد بايت
يستهدف المهاجم كتلة محددة من النص المشفر. ولاستعادة البايت الأخير من النص الصريح، يبدّل البايت الأخير من كتلة النص المشفر السابقة ويرسل النص المشفر المعدّل إلى الأوراكل. ثم يكرر المحاولة باستخدام 256 قيمة محتملة حتى يبلغ الأوراكل عن حشو صالح. عند القيمة التي تنتج حشوًا صالحًا (0x01)، تصبح قيمة فك التشفير الوسيطة معلومة، إذ إن إجراء XOR بينها وبين البايت المعدّل ينتج 0x01. ثم يكشف إجراء XOR بينها وبين بايت النص المشفر الأصلي قيمة بايت النص الصريح.
استعادة كتلة كاملة
بعد استعادة البايت الأخير، يُستهدف البايت ما قبل الأخير. تكون قيمة فك التشفير الوسيطة للبايت الأخير معلومة بالفعل، ولذلك يمكن إجبارها على أن تصبح 0x02. بعد ذلك، تُجرَّب 256 قيمة للبايت ما قبل الأخير حتى يصبح الحشو 0x02 0x02 صالحًا. وتتكرر هذه العملية لكل بايت، مما يؤدي إلى استعادة كتلة كاملة من 16 بايتًا باستخدام 256 * 16 = 4,096 استعلامًا إلى الأوراكل في المتوسط لكل كتلة. ومع وجود أوراكل سريع، يمكن إكمال ذلك خلال ثوانٍ.
استعادة الرسالة كاملة
تتكرر العملية لكل كتلة من كتل النص المشفر، باستثناء IV التي لا يمكن استعادتها من دون الكتلة السابقة. ويتطلب نص مشفر حجمه 128 بايت، أي 8 كتل AES، نحو 32,000 استعلام إلى oracle في المتوسط لفك تشفيره بالكامل. وبالنسبة إلى خادم ويب يعالج مئات الطلبات في الثانية، يستغرق ذلك دقائق. ويستعيد المهاجم النص الصريح كاملًا من دون أن يعرف مفتاح التشفير قط.
الاستغلالات الواقعية: POODLE
استغل POODLE (Padding Oracle On Downgraded Legacy Encryption) التحقق من حشو CBC في SSL 3.0. فقد استخدم SSL 3.0 مخطط حشو غير متوافق مع PKCS#7، لكن الهجوم كيّف مفهوم oracle. وكان بإمكان مهاجم يستطيع حقن محتوى في جلسة SSL 3.0 وإجبار العملاء على الرجوع إلى SSL 3.0 استعادة ملفات تعريف ارتباط الجلسة باستخدام تقنية oracle الحشو. وأدى POODLE إلى إهمال SSL 3.0.
Lucky Thirteen وBEAST
استغل Lucky Thirteen في عام 2013 قناة جانبية للتوقيت في مخطط MAC-then-Encrypt الخاص بـ CBC في TLS. إذ اختلف زمن التحقق من MAC ببضع نانوثوانٍ استنادًا إلى صلاحية الحشو، مما أنشأ oracle للتوقيت. أما BEAST في عام 2011 فاستغل IV القابل للتنبؤ في وضع CBC ضمن TLS 1.0 لتنفيذ هجوم بالنص الصريح المختار ضد ملفات تعريف ارتباط الجلسة. وقد أظهر الهجومان أن تنفيذ وضع CBC في TLS بشكل صحيح صعب للغاية من الناحية الأساسية.
الدفاع: استخدم AEAD بدلًا من CBC
يتمثل الدفاع الحاسم ضد هجمات oracle الحشو في استخدام أوضاع AEAD (التشفير الموثق مع البيانات المرتبطة) بدلًا من CBC. إذ تتحقق أوضاع AEAD مثل AES-256-GCM وChaCha20-Poly1305 من المصادقة قبل إجراء أي فك تشفير أو تحقق من الحشو. فإذا كانت علامة المصادقة غير صالحة، فلا يحدث فك تشفير، ولا تتسرب أي معلومات عن الحشو. ويفرض TLS 1.3 استخدام AEAD ويزيل CBC بالكامل.
الدفاع: Encrypt-then-MAC
إذا لم يتوفر AEAD، فإن تركيب Encrypt-then-MAC يضيف MAC على النص المشفر، وليس على النص الصريح. ويُتحقق من MAC قبل فك التشفير أو فحص الحشو. فإذا فشل MAC، تُجهض العملية فورًا من دون كشف أي معلومات عن الحشو. ويجب تنفيذ ذلك بزمن ثابت لمنع oracles التوقيت. ولا يكشف فشل التحقق من MAC أي شيء عن احتمال صلاحية الحشو.
اكتشاف ثغرات oracle الحشو
لاختبار ثغرات oracle الحشو: شفّر رسالة معلومة، ثم أرسل نصًا مشفرًا معدّلًا إلى التطبيق وراقب الاستجابة. فإذا نتج عن الحشو الصالح وغير الصالح استجابات مختلفة يمكن ملاحظتها، مثل رسالة الخطأ أو رمز الحالة أو زمن الاستجابة، فهذا يعني وجود oracle للحشو. وتختبر أدوات آلية مثل padbuster وPadBuster وجود oracles الحشو في تطبيقات الويب تحديدًا، وذلك بتعديل النصوص المشفرة منهجيًا وتحليل الاستجابات.
آلية oracle الحشو
ما الذي يتطلبه هجوم oracle الحشو من النظام المستهدف لفك النص المشفر دون المفتاح؟
مراجعة هجوم oracle الحشو
مراجعة oracle الحشو: تتيح خاصية XOR في فك تشفير CBC التحكم في بايتات النص الصريح، ويكشف التحقق من حشو PKCS#7 عن oracle ثنائي، ويكرر المهاجم قيم البايتات ويراقب الاستجابات الصالحة وغير الصالحة لاستعادة النص الصريح بايتًا بعد بايت، وتشمل الاستغلالات الواقعية POODLE وLucky Thirteen وBEAST، أما الدفاع فيتمثل في الانتقال إلى AEAD (GCM وChaCha20-Poly1305) الذي يتحقق من المصادقة قبل فك التشفير.
الأسئلة الشائعة
هل درس «هجمات Padding Oracle بالتفصيل» مجاني؟
نعم — نص درس «هجمات Padding Oracle بالتفصيل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
ماذا ستتعلم في «هجمات Padding Oracle بالتفصيل»؟
تتبّعوا هجوم CBC padding oracle، وافهموا لماذا تكون حتى oracles أخطاء فك التشفير الطفيفة كارثية. تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟
لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «هجمات Padding Oracle بالتفصيل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟
نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- هجمات Padding Oracle بالتفصيل
- هجمات إعادة الإرسال وثغرات إعادة استخدام Nonce
- هجمات التوقيت في الشيفرة على مستوى التطبيق
- أبرز أنماط إساءة استخدام التشفير