← أحدث الأبحاث
💻 computer science

Protecting Cryptographic Libraries against Side-Channel and Code-Reuse Attacks

تحلل هذه الورقة الثغرات الأمنية للمكتبات التشفيرية الشائعة ضد هجمات القنوات الجانبية وفساد الذاكرة، مع تقييم دفاعاتها الحالية واقتراح تحسينات لعمليات تطويرها.

المؤلفون الأصليون: Rodothea Myrsini Tsoupidi, Elena Troubitsyna, Panos Papadimitratos

نُشر 2026-05-21
📖 5 دقيقة قراءة🧠 قراءة متعمّقة

المؤلفون الأصليون: Rodothea Myrsini Tsoupidi, Elena Troubitsyna, Panos Papadimitratos

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

تخيل المكتبات التشفيرية كأنها الخزائن عالية التقنية للإنترنت. إنها الأدوات البرمجية التي تحمي كلمات مرورك، وتُشفر رسائلك، وتتحقق من هويتك. وبدونها، سيكون عالمنا الرقمي مفتوحاً على مصراعيه. ومع ذلك، تجادل هذه الورقة البحثية بأنه حتى أفضل الخزائن بها نقاط ضعف، وأن الأشخاص الذين يبنونها (المطورين) والأدوات التي يستخدمونها لبنائها (المترجمات/Compilers) لا يبذلون دائماً ما يكفي من الجهد لحمايتها.

إليك تفصيل للنقاط الرئيسية للورقة باستخدام تشبيهات بسيطة.

1. نوعا اللصوص

تحدد الورقة طريقتين رئيسيتين يحاول من خلالهما المهاجمون اختراق هذه الخزائن الرقمية:

  • "لص ساعة الإيقاف" (هجمات القنوات الجانبية):
    تخيل لصاً لا يحاول كسر القفل، بل يقف خارج الخزانة ويستمع. يلاحظ أنه عندما يحاول الحارس تجربة مفتاح معين، يستغرق باب الخزانة وقتاً أطول قليلاً ليُغلق تماماً مقارنة بما يستغرقه عند تجربة مفتاح خاطئ. ومن خلال توقيت هذه الفروقات الضئيلة، يمكن للص اللص معرفة الرمز السري دون أن يلمس القفل أبداً.

    • نقطة الورقة: غالباً ما تحتوي الأكواد التشفيرية على خطوات "تعتمد على السر". إذا كان الكود يستغرق أوقاتاً مختلفة للعمل بناءً على كلمة سر سرية، فيمكن للمخترق استخدام ساعة إيقاف لسرقة تلك الكلمة.
  • "مختطف النسخ واللصق" (هجمات إعادة استخدام الكود):
    تخيل مكتبة كُتبت كتبها بلغة فوضوية وغير آمنة. يجد اللص ثغرة في الأرضية (خطأ في الذاكرة) ويلقي قنبلة تكسر ألواح الأرضية. بمجرد انكسار الأرضية، لا يحتاج اللص لبناء سلاح جديد؛ بل يقوم فقط بالتقاط مطرقة، ومنشار، وسلم كانت موجودة بالفعل في غرفة التخزين بالمكتبة. يقوم بـ "حياكة" هذه الأدوات الموجودة مسبقاً لتسلق الخارج والسيطرة على المبنى.

    • نقطة الورقة: تُكتب العديد من المكتبات بلغات مثل C أو C++ التي تسمح بأخطاء الذاكرة. يستخدم المخترقون هذه الأخطاء للسيطرة على تدفق البرنامج، مستخدمين قطعاً صغيرة وغير ضارة من الكود الموجود بالفعل داخل المكتبة لشن هجوم ضخم.

2. الحالة الراهنة للخزانة

نظر المؤلفون في 11 مكتبة تشفيرية شهيرة (مثل OpenSSL، المستخدمة في ملايين المواقع الإلكترونية) لمعرفة مدى جودة حمايتها.

  • مشكلة "ساعة الإيقاف": يعرف معظم المطورين هجمات التوقيت ويحاولون إصلاحها عبر كتابة كود يستغرق نفس القدر من الوقت للعمل بغض النظر عن المدخلات. ومع ذلك، وجدت الورقة أن مكتبتين فقط من أصل 11 مكتبة تقومان فعلياً باختبار منتجهما النهائي للتأكد من أن خدعة "ساعة الإيقاف" لا تعمل. الأمر يشبه طباخاً يتذوق الحساء قبل تقديمه، لكنه ينسى التحقق مما إذا كان الملح قد ذاب حقاً.
  • مشكلة "النسخ واللصق": يستخدم المطورون أدوات سلامة قياسية (مثل "كاناري الذاكرة/stack canaries"، وهي تشبه أسلاك الأفخاخ) لمنع أخطاء الذاكرة. ورغم أنها تساعد، إلا أنها ليست مثالية. وجدت الورقة أن معظم المكتبات لا تستخدم أقوى إعدادات السلامة المتاحة، مما يتركها عرضة لعمليات الاختطاف المتطورة.

3. المخطط المعيب (مشكلة المترجم/Compiler)

هذا هو جوهر حجة الورقة. يكتب المطورون الكود (المخطط)، ولكن المترجم (Compiler) هو الآلة التي تترجم ذلك المخطط إلى لغة الآلة الفعلية التي تعمل.

  • الصراع: صُممت المترجمات لجعل الكود سريعاً وفعالاً. إنها تشبه محرراً متحمسًا جداً يريد قص أي "حشو" لجعل القصة أقصر.
  • الخطأ: في بعض الأحيان، يكون "الحشو" الذي يقصه المترجم هو في الواقع إجراء أمني. على سبيل المثال، قد يكتب المطور كوداً إضافياً لضمان أن العملية تستغرق نفس القدر من الوقت (لإيقاف "لص ساعة الإيقاف"). المترجم، ظناً منه أن هذا الكود الإضافي هو هدر عديم الفائدة، يقوم بحذفه. النتيجة؟ يعود الكود سريعاً مرة أخرى، لكن الثغرة الأمنية تعود أيضاً.

4. أدوات جديدة للمهمة (الترجمة الآمنة)

تقترح الورقة أننا بحاجة إلى نوع جديد من "المحررين" أو المترجمات التي تفهم الأمن بقدر فهمها للسرعة. لقد اختبروا أربع أدوات تجريبية مختلفة:

  1. "الحارس" (SecComp): تتيح هذه الأداة للمطورين تحديد أجزاء معينة من الكود كـ "لا تلمس". فهي تجبر المترجم على الإبقاء على إجراءات السلامة في مكانها. العيب: ليست مجانية الاستخدام بعد.
  2. "المُخلخل" (Multicompiler/MCR): تأخذ هذه الأداة الكود وتعيد ترتيب الأثاث في كل مرة تبني فيها البرنامج. الأمر يشبه نقل المطرقة والمنشار إلى غرف مختلفة كل يوم. إذا اقتحم لص ما، فلن يجد الأدوات التي يحتاجها لأن التصميم تغير. العيب: تبطئ البرنامج بشكل كبير إذا استُخدمت لإيقاف "لص ساعة الإيقاف".
  3. "المهندس المعماري" (SecDivCon): تبني هذه الأداة الكود مع دمج قواعد السلامة منذ البداية، مما يضمن أن المنتج النهائي سريع وآمن في آن واحد. العيب: تستغرق وقتاً طويلاً جداً للبناء وتعمل جيداً فقط للمهام الصغيرة والمحددة.
  4. "المُسلسل" (PCFL): تقوم هذه الأداة تلقائياً بإعادة كتابة الكود الفوضوي إلى خط مستقيم ومتوقع يستحيل توقيته. العيب: لا توقف هجمات "مختطف النسخ واللصق".

5. الحكم النهائي

تخلص الورقة إلى أننا عالقون حالياً في فجوة بين السرعة والأمان.

  • المطورون يحاولون كتابة كود آمن يدوياً، لكنهم غالباً ما يخطئون.
  • المترجمات تركز بشدة على السرعة وتحذف ميزات الأمان عن غير قصد.
  • الأدوات الحالية إما بطيئة جداً، أو معقدة للغاية، أو لا تغطي جميع أنواع الهجمات.

الحل: تدعو الورقة إلى جهد ثلاثي الأبعاد:

  1. يجب على صُناع المترجمات منح المطورين مزيداً من السيطرة بحيث يمكنهم القول: "لا تحذف ميزة الأمان هذه، حتى لو بدت بطيئة".
  2. يجب على صُناع المترجمات الآمنة بناء أدوات تتعامل مع هجمات التوقيت والاختطاف في وقت واحد، وليس أحدهما فقط.
  3. يجب على مطوري المكتبات التوقف عن الاعتماد على الأمل والبدال في استخدام أدوات الترجمة الجديدة والأكثر أماناً لضمان أن خزائنهم مغلقة حقاً.

باختصار: لدينا المخططات لخزائن آمنة، لكن الآلات التي تبنيها تتسرع في اختصار الخطوات. نحن بحاجة لتعليم الآلات أن تعطي الأولوية للسلامة بقدر اهتمامها بالسرعة.

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →