
نسخة مبسطة من هجوم التشفير القائم على مفارقة عيد الميلاد: Sweet32 (CVE-2016-2183)
هذا عرض توضيحي لهجوم Sweet32 (CVE-2016-2183): https://sweet32.info/
الهجوم مثال على هجوم عيد الميلاد (birthday attack) الذي يستغل خوارزميات التشفير ذات أحجام الكتل الصغيرة (64-bit) في وضع CBC، مثل 3DES وBlowfish. يتطلب الهجوم توليد عدد كبير من الكتل المشفرة بنص واضح معروف. بعد التوليد، يمكن تحديد الكتل المشفرة المتطابقة واستخدامها لتحديد قيمة النص الواضح للكتل ذات النص الواضح غير المعروف.
يستخدم هذا التنفيذ 3DES (Triple DES) كخوارزمية التشفير الخاصة به، والتي لها حجم كتلة 64-bit (8 بايت) — وهو نفس حجم الكتلة الذي يجعل 3DES في العالم الحقيقي عرضة لهجوم Sweet32.
عندما يتصادم كتلتان من النص المشفر (c_i = c_j)، يمكننا استعادة النص الواضح غير المعروف باستخدام:
p_i = p_j ⊕ c_{i-1} ⊕ c_{j-1}
حيث:
p_i هو النص الواضح غير المعروف (مثل: كوكي سرية)p_j هو نص واضح معروف (مثل: ترويسات HTTP)c_{i-1} و c_{j-1} هما كتلتا النص المشفر السابقتانيعمل هذا لأنه في وضع CBC، يعني التصادم أن المدخلات إلى تشفير الكتل كانت متساوية، مما يسمح باستعادة XOR دون معرفة مفتاح التشفير.
شغّل العرض التوضيحي مع تصادم مضمون:
# Step 1: Generate encrypted packet with secret cookie
python generate_rigged_packets.py rigged_demo.bin
# Step 2: Execute the attack to recover the cookie
python sweet32.py --block-size 8 rigged_demo.bin
سيعرض الهجوم قيمة الكوكي السرية (SECRET COOKIE)، ثم يستعيدها باستخدام النص المشفر فقط!
generate_rigged_packets.pyينشئ حزمة تحتوي على تصادم مضمون لأغراض العرض التوضيحي. يتم صياغة قيمة الكوكي بحيث تتصادم مع كتلة نص واضح معروفة.
sweet32.pyنفّذ هجوم Sweet32 (birthday attack) لاستعادة الكوكي.
يستغل هجوم Sweet32 مفارقة عيد الميلاد. بالنسبة لتشفير كتل بحجم 64-bit:
هذا يجعل 3DES (وتشفيرات الكتل الأخرى ذات 64-bit) عرضة للخطر في جلسات HTTPS طويلة الأمد.
لهجوم Sweet32 الفعلي على 3DES (كتل 64-bit):
| حجم الكتلة | حجم الكتلة | عدد الحزم | البيانات المطلوبة | عدد الكتل |
|---|---|---|---|---|
| 8 بايت | 64 بت | ~785GB | ~785GB | ~2^32 كتلة |
يتطلب الهجوم الفعلي تشفير ~785GB من البيانات تحت نفس المفتاح، ولهذا السبب يؤثر بشكل أساسي على اتصالات HTTPS طويلة الأمد.