هجوم التوقيت

في علم التشفير ، يُعدّ هجوم التوقيت هجومًا جانبيًا يحاول فيه المهاجم اختراق نظام التشفير من خلال تحليل الوقت المستغرق لتنفيذ خوارزميات التشفير. تستغرق كل عملية منطقية في الحاسوب وقتًا للتنفيذ، وقد يختلف هذا الوقت باختلاف المدخلات؛ ومن خلال قياسات دقيقة لوقت كل عملية، قد يتمكن المهاجم من تتبع المدخلات.
يمكن تسريب المعلومات من النظام عبر قياس الوقت المستغرق للاستجابة لاستعلامات معينة. وتعتمد مدى استفادة المهاجم من هذه المعلومات على متغيرات عديدة، مثل تصميم نظام التشفير، ووحدة المعالجة المركزية التي تشغل النظام، والخوارزميات المستخدمة، وتفاصيل التنفيذ المختلفة، وإجراءات مكافحة هجمات التوقيت، ودقة قياسات التوقيت. أي خوارزمية تعتمد على تباين التوقيت تبعًا للبيانات تكون عرضة لهجمات التوقيت. ويصعب إزالة هذه التبعيات الزمنية نظرًا لإمكانية حدوث تباين في وقت التنفيذ على أي مستوى.
غالباً ما يتم تجاهل قابلية الاختراق لهجمات التوقيت في مرحلة التصميم، ويمكن إدخالها دون قصد مع تحسينات المُصرّف . تشمل التدابير المضادة إخفاء البيانات واستخدام الدوال ذات الوقت الثابت .
تحديات الوقت الثابت
يمكن تنفيذ العديد من خوارزميات التشفير (أو إخفاؤها بواسطة وسيط) بطريقة تقلل أو تزيل معلومات التوقيت المرتبطة بالبيانات، وهو ما يُعرف بخوارزمية الوقت الثابت . يمكن الاطلاع على مثال بسيط لـ " تنفيذ آمن زمنيًا" هنا. [ 1 ] تخيل تنفيذًا حيث يعود كل استدعاء لروتين فرعي بعد انقضاء الوقت T بالضبط، حيث T هو أقصى وقت يستغرقه تنفيذ هذا الروتين على كل مدخلات مصرح بها. لن يُسرب هذا التنفيذ الافتراضي أي معلومات حول البيانات المُقدمة لهذا الاستدعاء (في الواقع، لا مفر من اختلافات التوقيت غير المرتبطة بالبيانات). يتمثل عيب هذا النهج في أن الوقت المُستخدم لجميع عمليات التنفيذ يصبح وقت أسوأ حالة أداء للدالة. [ 2 ] يبدو أنه ينبغي تطبيق إخفاء المعلومات لتجنب التعرض لهجمات التوقيت.
قد ينشأ اعتماد التوقيت على البيانات من أحد الأسباب التالية: [ 3 ]
- قد يؤدي الوصول إلى الذاكرة غير المحلية إلى تخزين البيانات مؤقتًا بواسطة وحدة المعالجة المركزية. وسيُظهر البرنامج الذي يعمل على وحدة معالجة مركزية مزودة بذاكرة تخزين مؤقتة للبيانات اختلافات في التوقيت تعتمد على البيانات نتيجةً لعمليات البحث في الذاكرة المؤقتة.
- القفزات الشرطية . تحاول وحدات المعالجة المركزية الحديثة تنفيذ القفزات الشرطية السابقة بشكل تخميني. يؤدي التخمين الخاطئ (وهو أمر شائع مع البيانات السرية العشوائية) إلى تأخير كبير ملحوظ حيث تحاول وحدة المعالجة المركزية التراجع. يتطلب هذا كتابة كود برمجي خالٍ من التفرعات .
- بعض العمليات الحسابية "المعقدة"، وذلك بحسب مكونات وحدة المعالجة المركزية الفعلية:
- تستغرق عملية القسمة الصحيحة عادةً وقتًا غير ثابت. يستخدم المعالج حلقة برمجية دقيقة تستخدم مسارًا مختلفًا عندما يكون المقسوم عليه أو المقسوم صغيرًا.
- تقوم وحدات المعالجة المركزية التي لا تحتوي على مُبدِّل أسطواني بتنفيذ عمليات الإزاحة والدوران في حلقة تكرارية، موضعًا واحدًا في كل مرة. ونتيجة لذلك، يجب ألا يكون مقدار الإزاحة سرًا.
- تقوم وحدات المعالجة المركزية القديمة بإجراء عمليات الضرب بطريقة مشابهة للقسمة.
أمثلة
يعتمد زمن تنفيذ خوارزمية التربيع والضرب المستخدمة في الأسس المعيارية خطيًا على عدد البتات التي قيمتها '1' في المفتاح. ورغم أن عدد البتات '1' وحده لا يكفي لتحديد المفتاح بسهولة، إلا أنه يمكن استخدام عمليات تنفيذ متكررة بنفس المفتاح ومدخلات مختلفة لإجراء تحليل ارتباط إحصائي لمعلومات التوقيت، ما يسمح باستعادة المفتاح بالكامل، حتى من قِبل مهاجم غير نشط. غالبًا ما تتضمن قياسات التوقيت المُرصَدة تشويشًا (من مصادر مثل زمن استجابة الشبكة، أو اختلافات الوصول إلى محرك الأقراص من وصول لآخر، وتقنيات تصحيح الأخطاء المستخدمة للتعافي من أخطاء الإرسال). ومع ذلك، تُعد هجمات التوقيت عملية ضد عدد من خوارزميات التشفير، بما في ذلك RSA و ElGamal وخوارزمية التوقيع الرقمي .
في عام ٢٠٠٣، قدّم بونيه وبروملي عرضًا عمليًا لهجوم زمني قائم على الشبكة على خوادم الويب المُفعّلة بتقنية SSL ، استنادًا إلى ثغرة أمنية مختلفة تتعلق باستخدام خوارزمية RSA مع تحسينات نظرية الباقي الصينية . كانت المسافة الفعلية للشبكة صغيرة في تجاربهم، لكن الهجوم نجح في استعادة المفتاح الخاص للخادم في غضون ساعات. أدى هذا العرض إلى انتشار واسع النطاق لتقنيات إخفاء البيانات في تطبيقات SSL. في هذا السياق، يهدف إخفاء البيانات إلى إزالة الارتباط بين المفتاح ووقت التشفير. [ ٤ ] [ ٥ ]
تستخدم بعض إصدارات يونكس تطبيقًا مكلفًا نسبيًا لدالة التشفير في مكتبة التشفير لتحويل كلمة مرور مكونة من 8 أحرف إلى سلسلة نصية مكونة من 11 حرفًا. في الأجهزة القديمة، كانت هذه العملية الحسابية تستغرق وقتًا طويلاً بشكل متعمد وقابل للقياس، يصل إلى ثانيتين أو ثلاث في بعض الحالات. في الإصدارات الأولى من يونكس، كان برنامج تسجيل الدخول يُنفذ دالة التشفير فقط عندما يتعرف النظام على اسم المستخدم. أدى ذلك إلى تسريب معلومات حول صحة اسم المستخدم من خلال التوقيت، حتى عندما تكون كلمة المرور خاطئة. يمكن للمهاجم استغلال هذه التسريبات عن طريق استخدام أسلوب التجربة والخطأ لإنشاء قائمة بأسماء المستخدمين المعروفة بصحتها، ثم محاولة الوصول إلى النظام من خلال دمج هذه الأسماء فقط مع مجموعة كبيرة من كلمات المرور المعروفة بكثرة استخدامها. بدون أي معلومات حول صحة أسماء المستخدمين، سيزداد الوقت اللازم لتنفيذ هذا الأسلوب بشكل كبير، مما يجعله عديم الفائدة. قامت الإصدارات اللاحقة من يونكس بإصلاح هذا التسريب من خلال تنفيذ دالة التشفير دائمًا، بغض النظر عن صحة اسم المستخدم.
يمكن لعمليتين معزولتين بشكل آمن، تعملان على نظام واحد باستخدام ذاكرة تخزين مؤقتة أو ذاكرة افتراضية، أن تتواصلا عن طريق إحداث أخطاء في الصفحات أو فقدان البيانات في ذاكرة التخزين المؤقتة في إحداهما، ثم مراقبة التغيرات الناتجة في أوقات الوصول من الأخرى. وبالمثل، إذا كان تطبيق ما موثوقًا به، ولكن تأثرت عملية الترحيل/التخزين المؤقت فيه بمنطق التفرع، فقد يكون من الممكن لتطبيق ثانٍ تحديد قيم البيانات مقارنةً بحالة التفرع من خلال مراقبة تغيرات وقت الوصول؛ وفي حالات نادرة، قد يسمح ذلك باستعادة بتات مفتاح التشفير. [ 6 ] [ 7 ]
تعتمد هجمات ميلتداون وسبكتر عام 2017، التي أجبرت مصنعي وحدات المعالجة المركزية (بما في ذلك إنتل، وإيه إم دي، وآرم، وآي بي إم) على إعادة تصميم وحدات المعالجة المركزية الخاصة بهم، على هجمات التوقيت. [ 8 ] وبحلول أوائل عام 2018، تأثرت جميع أنظمة الكمبيوتر تقريبًا في العالم بثغرة سبكتر. [ 9 ] [ 10 ] [ 11 ]
في عام 2018، كانت العديد من خوادم الإنترنت لا تزال عرضة لاختلافات طفيفة من هجوم التوقيت الأصلي على RSA، وذلك بعد عقدين من اكتشاف الثغرة الأمنية الأصلية. [ 12 ]
خوارزميات مقارنة السلاسل
يوضح كود C التالي مقارنة سلاسل نصية غير آمنة نموذجية، حيث يتوقف الاختبار بمجرد عدم تطابق أحد الأحرف. على سبيل المثال، عند المقارنة، "ABCDE"سيعود "ABxDE"الكود بعد ثلاث دورات تكرارية.
#include <stddef.h>دالة مقارنة السلاسل غير الآمنة ( مؤشر ثابت a ، مؤشر ثابت b ، طول السلسلة ) { مؤشر ثابت ca = a ، مؤشر ثابت cb = b ؛ من أجل ( حجم السلسلة i = 0 ؛ i < الطول ؛ i ++ ) إذا ( ca [ i ] != cb [ i ] ) أرجع خطأ ؛ أرجع صحيح ؛ }بالمقارنة، يعمل الإصدار التالي في وقت ثابت عن طريق اختبار جميع الأحرف واستخدام عملية بتية لتجميع النتيجة:
#include <stddef.h>دالة منطقية ` constant_time_string_compare` تأخذ ثلاثة متغيرات من نوع ` void` : ` a` و` b` ، وتخزن النتيجة في متغير منطقي ` result` . تقوم الدالة بمقارنة السلاسل النصية في وقت ثابت ، ثم تتحقق من أن ` ca` و` cb` متطابقتان . بعد ذلك ، تُرجع الدالة ` result` .في عالم دوال مكتبة لغة C، تُشابه الدالة الأولى الدالة memcmp()، بينما تُشابه الدالة الثانية دالتي NetBSD و consttime_memequal()OpenBSD [ 13 ] . أما في الأنظمة الأخرى، فيمكن استخدام دالة المقارنة من مكتبات التشفير مثل OpenSSL و libsodium .timingsafe_bcmp()timingsafe_memcmp
ملحوظات
تُصبح هجمات التوقيت أسهل في التنفيذ إذا كان المهاجم على دراية بتفاصيل تنفيذ الجهاز، وبالأخص بنظام التشفير المستخدم. ولأن أمن التشفير لا ينبغي أن يعتمد على غموض أيٍّ منهما (انظر الأمن من خلال الغموض ، وتحديدًا مبدأ شانون ومبدأ كيركوفس )، فلا ينبغي أن تعتمد مقاومة هجمات التوقيت على ذلك أيضًا. على الأقل، يمكن شراء نموذج أولي وهندسته عكسيًا. قد تكون هجمات التوقيت وهجمات القنوات الجانبية الأخرى مفيدة أيضًا في تحديد خوارزمية التشفير المستخدمة في بعض الأجهزة، أو ربما هندستها عكسيًا.
انظر أيضاً
مراجع
- ↑ "timingsafe_bcmp" . تم الاطلاع عليه بتاريخ 11 نوفمبر 2024 .
- ↑ "دليل المبتدئين في التشفير ذي الوقت الثابت" . تم الاطلاع عليه بتاريخ 9 مايو 2021 .
- ↑ "التشفير ذو الوقت الثابت" . BearSSL . تم الاطلاع عليه بتاريخ 10 يناير 2017 .
- ↑ ديفيد بروملي ودان بونيه. هجمات التوقيت عن بُعد عملية. ندوة يو إس إي إن آي إكس للأمن، أغسطس 2003.
- ↑ كوخر، بول سي. (1996). "هجمات التوقيت على تطبيقات ديفي-هيلمان، وRSA، وDSS، وأنظمة أخرى" . في كوبليتز، نيل (محرر). التطورات في علم التشفير - CRYPTO '96 . سلسلة محاضرات في علوم الحاسوب. المجلد 1109. برلين، هايدلبرغ: سبرينغر. الصفحات 104-113 . doi : 10.1007/3-540-68697-5_9 . ISBN 978-3-540-68697-2.
- ↑ انظر بيرسيفال، كولين، البحث عن مخبأ مفقود للمتعة والربح ، 2005.
- ↑ بيرنشتاين، دانيال جيه، هجمات التوقيت على AES ، 2005.
- ↑ هورن، جان (3 يناير 2018). "قراءة الذاكرة المميزة باستخدام قناة جانبية" . googleprojectzero.blogspot.com.
- ↑ "الأسئلة الشائعة حول أنظمة Spectre" . ثغرة Meltdown و Spectre .
- ↑ "ثغرات أمنية تُعرّض جميع الهواتف وأجهزة الكمبيوتر تقريبًا للخطر" . رويترز . 4 يناير 2018.
- ↑ "التأثير المحتمل على المعالجات في عائلة POWER" . مدونة IBM PSIRT . 14 مايو 2019.
- ↑ كاريو، هوبرت. "هجوم مارفن" . people.redhat.com . تم الاطلاع عليه بتاريخ 19 ديسمبر 2023 .
- ↑ "Consttime_memequal" .
للمزيد من القراءة
- ليبتون، ريتشارد ؛ نوتون، جيفري ف. (مارس 1993). "الخصوم الموقّتون للتجزئة". Algorithmica . 9 (3): 239-252 . doi : 10.1007/BF01190898 . S2CID 19163221 .
- ريباراز، أوسكار؛ بالاش، جوزيب؛ فيرباويد، إنغريد (مارس 2017). "يا رجل، هل برنامجي يعمل بزمن ثابت؟" (ملف PDF) . مؤتمر ومعرض التصميم والأتمتة والاختبار في أوروبا (DATE)، 2017. الصفحات 1697-1702 . doi : 10.23919/DATE.2017.7927267 . ISBN 978-3-9815370-8-6. S2CID 35428223 . يصف هذا البرنامج برنامج dudect ، وهو برنامج بسيط يقوم بقياس وقت تنفيذ جزء من التعليمات البرمجية على بيانات مختلفة.
- هجمات القنوات الجانبية
