DALC-CT: Dynamic Analysis of Low-Level Code Traces for Constant-Time Verification
تقدم هذه الورقة DALC-CT، وهي أداة مفتوحة المصدر تتحقق من خاصية الوقت الثابت للبرامج التشفيرية من خلال التحليل الديناميكي ومقارنة آثار التعليمات منخفضة المستوى عبر مدخلات مختلفة للكشف عن الثغرات الأمنية المتعلقة بالقنوات الجانبية للتوقيت.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل أنك تحاول تخمين كلمة مرور سرية لخزنة ما. في عالم مثالي، يجب أن يكون الوقت الذي تستغرقه الخزنة للتحقق من كلمة المرور الخاصة بك متطابقاً تماماً، سواء كتبت كلمة المرور الصحيحة، أو خاطئة، أو مجرد سلسلة عشوائية من الحروف.
ومع ذلك، في عالم برمجة الكمبيوتر الواقعي، لا تكون الأشياء دائماً مثالية. أحياناً، إذا كتبت كلمة مرور "قريبة" من الصحة، قد يتوقف الكمبيوتر عن التحقق في منتصف الطريق لأنه وجد خطأً في وقت مبكر. هذا الفرق الضئيل في الوقت — رب الله قد يكون بضعة مليون من أجزاء الثانية — يمكن أن يشكل تسريباً ضخماً. يمكن للسارق الذكي (المخترق) الاستماع إلى الوقت الذي يستغرقه الكمبيوتر للتحقق من كلمات مرور مختلفة، ومن خلال مراقبة المدة التي "يفكر" فيها الكمبيوتر، يمكنه بمر over time اكتشاف كلمة المرور السرية. وهذا ما يسمى هجوم القناة الجانبية عبر التوقيت (Timing Side-Channel Attack).
المشكلة: كيف نكتشف التسريبات؟
لفترة طويلة، حاول الخبراء إصلاح هذا الأمر بطريتين رئيسيتين، لكن كلتاهما به عيوب:
- طريقة ساعة الإيقاف (الاختبارات الإحصائية): تشبه وجود صديق يقف خارج الخزنة ومعه ساعة إيقاف، يحسب الوقت المستغرق للتحقق من 1,000 كلمة مرور مختلفة.
- العيب: هي عملية مليئة بالضجيج. إذا هبت الرياح، أو هبط طائر على ساعة الإيقاف، أو تعب الصديق، سيتغير التوقيت. من الصعب معرفة ما إذا كان فرق التوقيت ناتجاً عن كلمة المرور أم بسبب البيئة الفوضوية المحيطة.
- طريقة المخططات الهندسية (التحقق الرسمي): تشبه توظيف عالم رياضيات للنظر في المخططات الهندسية للخزنة قبل بنائها. يحاولون إثبات منطقي بأن الباب يجب أن يستغرق نفس الوقت لفتح.
- العيب: المخططات ليست هي المبنى الحقيقي. أحياناً، يقوم طاقم البناء (المترجم البرمجي/Compiler) بتغيير الأشياء أثناء البناء. قد يقول إثبات العالم الرياضي "إنه آمن"، لكن المبنى الفعلي قد يحتوي على مفصلة تزيق وتكشف السر.
الحل الجديد: DALC-CT (المحقق التعليمي)
قام مؤلفو هذه الورقة البحثية، Nges Brian Njungle وفريقه، ببناء أداة جديدة تسمى DALC-CT. بدلاً من استخدام ساعة إيقاف أو النظر في المخططات، قرروا النظر إلى الخطوات الفعلية التي يتخذها الكمبيوتر للقيام بالمهمة.
إليك كيف تعمل، باستخدام تشبيه بسيط:
التشبيه: وصفة الشيف
تخيل شيفاً (الكمبيوتر) يحاول خبز كعكة (معالجة البيانات).
- المكون السري: كلمة المرور السرية تشبه توابل خاصة يحتاج الشيف لإضافتها.
- الشيف السيئ (غير ثابت الوقت): إذا تذوق الشيف الخليط وأدرك أن التوابل مفقودة فوراً، فإنه يتوقف عن الخبز ويرمي الوعاء. إذا كانت التوابل موجودة، فإنه يستمر في الخبز لفترة طويلة. يمكن للمراقب معرفة ما إذا كانت التوابل موجودة بمجرد مراقبة المدة التي عمل فيها الشيف.
- الشيف الجيد (ثابت الوقت): يتبع الشيف الجيد قاعدة صارمة: "بغض النظر عما يحدث، سأقوم بالخلط والخبز والتزيين لمدة 10 دقائق بالضبط. حتى لو وجدت خطأ في الدقيقة الأولى، سأتظاهر بالاستمرار في العمل حتى الدقيقة العاشرة".
إن DALC-CT هو "المحقق التعليمي".
بدلاً من توقيت الشيف، يقوم DALC-CT بمراقبة يديه وعدّ كل حركة يقوم بها.
- يطلب من الشيف خبز الكعكة باستخدام المكون السري (أ).
- يعدّ كل حركة: تقطيع، خلط، تحريك، خبز، تزيين. (لنفترض أن ذلك 50 حركة).
- يطلب من الشيف خبز الكعكة باستخدام المكون السري (ب).
- يعدّ الحركات مرة أخرى.
الحكم:
- إذا قام الشيف بـ 50 حركة للمكون (أ) و 50 حركة للمكون (ب) (حتى لو اختلف نوع الحركات قليلاً، طالما أن إجمالي "خطوات الوصفة" هو نفسه)، فإن الشيف آمن.
- إذا قام الشيف بـ 50 حركة للمكون (أ) ولكن 30 حركة فقط للمكون (ب) (لأنه توقف مبكراً)، فإن DALC-CT يرفع فوراً راية حمراء: "هذا ليس ثابتاً في الوقت! لقد توقفت مبكراً!"
لماذا يعد هذا أفضل؟
- يتجاهل الضجيج: لا يهتم DALC-CT إذا كان المطبخ صاخباً، أو إذا كانت الرياح تهب، أو إذا كان الفرن حاراً. هو يهتم فقط بـ قائمة الخطوات التي اتخذها الكمبيوتر. إذا كانت قائمة الخطوات مختلفة، فإن السر يتسرب.
- يرى الشيء الحقيقي: هو لا ينظر إلى المخططات (الكود المصدري)؛ بل ينظر إلى عملية الطبخ الفعلية (لغة الآلة التي تعمل على الأجهزة). وهذا يكشف الأخطاء التي تحدث عند ترجمة الكود (Compilation).
- سريع وبسيط: يقوم بتجميع حركات الشيف في فئات (مثل "التقطيع"، "الخلط"، "الخبز"). لا يحتاج لمعرفة اسم كل سكين مستخدم، بل يحتاج فقط لمعرفة أن عدد عمليات التقطيع والخلط هو نفسه في كل مرة.
النتائج
اختبر الفريق أداة تخصصهم على أمثلة شهيرة من الكود السيئ (مثل برنامج فحص كلمات المرور الذي يتوقف مبكراً) والكود الجيد (الذي يشغل الحلقة كاملة في كل مرة).
- الكود السيئ: رأى DALC-CT فوراً أن "الوصفة" تتغير بناءً على المدخلات.
- الكود الجيد: أكد DALC-CT أن "الوصفة" كانت متطابقة في كل مرة.
الخلاية
DALC-CT هو طريقة جديدة وموثوقة للتأكد من أن برامجك لا تسرب الأسرار بالخطأ عبر استغراق أوقات مختلفة للقيام بأشياء مختلفة. إنه يشبه توظيف محقق يعد كل خطوة يتخذها الكمبيوتر، لضمان أنه بغض النظر عن البيانات السرية التي تتم معالجتها، فإن الكمبيوتر يتبع المسار نفسه تماماً، مما لا يترك أي أدلة يمكن للمخترقين تتبعها.
إنه يسد الفجوة بين "السلامة النظرية" و"السلامة في العالم الحقيقي"، مما يوفر للمطورين أداة خفيفة الوزن وموثوقة لتأمين الكود الخاص بهم ضد هجمات التوقيت.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.