هجوم التوقيت

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

أمثلة

يعتمد وقت التنفيذ لخوارزمية المربعات والضرب المستخدمة في الأسية المعيارية خطيًا على عدد البتات '1' في المفتاح. على الرغم من أن عدد البتات "1" وحدها لا يكاد يكون معلومات كافية لجعل العثور على المفتاح أمرًا سهلاً ، حيث يمكن استخدام عمليات التنفيذ المتكررة باستخدام نفس المفتاح ومدخلات مختلفة لإجراء تحليل الارتباط الإحصائي لمعلومات التوقيت لاستعادة المفتاح تمامًا ، حتى من خلال المهاجم الغير نشط. غالبًا ما تتضمن قياسات التوقيت الملاحظة ضوضاء (من مصادر مثل اختفاء الشبكة ، أو اختلافات الوصول إلى محرك الأقراص من الوصول إلى المصادر، وتقنيات تصحيح الأخطاء المستخدمة في الاسترداد من أخطاء الإرسال). ومع ذلك ، تعتبر هجمات التوقيت عملية ضد عدد من خوارزميات التشفير ، بما في ذلك RSA و ElGamal وخوارزمية التوقيع الرقمي . 
في عام 2003 ، أظهر Boneh و Brumley هجومًا عمليًا قائمًا على الشبكة على خوادم الويب التي تدعم SSL ، استنادًا إلى ثغرة أمنية مختلفة تتعلق باستخدام RSA مع تحسينات في نظرية "النظرية الباقية الصينية" . كانت المسافة الفعلية للشبكة صغيرة في تجاربها ، لكن الهجوم نجح في استعادة مفتاح الخادم الخاص في غضون ساعات. أدى هذا العرض التوضيحي إلى نشر واستخدام تقنيات التعمية/التشفير على نطاق واسع في تطبيقات SSL. في هذا السياق ، تهدف عمليات التشفير/التعمية إلى إزالة الارتباطات بين المفتاح ووقت التشفير. 
بعض إصدارات يونكس تستخدم عمليات تنفيذ مكلفة نسبياً ، على سبيل المثال عند استخدام دوال التجزئة (مثل دالة crypt ) لكلمات مرور مكونة من 8 أحرف إلى 11 حرفاً. وعلى الأجهزة القديمة ، استغرق هذا الحساب وقتًا طويلاً ومتعمدًا: يصل إلى ثانيتين أو ثلاث ثوانٍ في بعض الحالات. قام برنامج تسجيل الدخول في الإصدارات القديمة من Unix بتنفيذ وظيفة ودالة crypt فقط عندما تم التعرف على اسم تسجيل الدخول من قبل النظام. هذا يُعتبر بمثابة "تسرب المعلومات" خلال توقيت معين يدور حول صحة اسم تسجيل الدخول. حتى عندما كانت كلمة المرور غير صحيحة كان تسرب المعلومات المسبق موجود أيضاً كقيمة توقيتية. يمكن للمهاجم استغلال مثل هذه التسريبات من خلال تطبيق هجوم "القوة الغاشمة/العمياء" أولاً لإنتاج قائمة بأسماء تسجيل الدخول المعروفة بأنها صالحة ، ثم محاولة الوصول عن طريق الجمع بين هذه الأسماء فقط مع مجموعة كبيرة من كلمات المرور المعروفة بالاستخدام المتكرر. بدون أي معلومات حول صحة أسماء تسجيل الدخول ، فإن الوقت اللازم لتنفيذ مثل هذا النهج سيزيد بأوامر مهمة من الحجم الثقيل ، مما يجعله عديم الفائدة بشكل فعال. قامت الإصدارات الأحدث من Unix بإصلاح هذا التسرب من خلال تنفيذ وظيفة التشفير دائمًا ، بغض النظر عن صلاحية اسم تسجيل الدخول.   
يمكن إجراء عمليتين منفصلتين بشكل آمن يتم تشغيلهما على نظام واحد مع ذاكرة التخزين المؤقت أو الذاكرة الظاهرية عن طريق التسبب المتعمد في أخطاء الصفحة و / أو تفويت ذاكرة التخزين المؤقت في عملية واحدة ، ثم مراقبة التغييرات الناتجة في أوقات الوصول من جهة أخرى. وبالمثل ، إذا كان أحد التطبيقات موثوقًا به ، ولكن تخزين الصفحات في عمليات التخزين المؤقت متأثرة بمنطق التفريع ، فقد يكون من الممكن للتطبيق الثاني تحديد قيم البيانات مقارنة بحالة الفرع من خلال مراقبة تغييرات وقت الوصول ؛ وفي الأمثلة القصوى ، يمكن أن يسمح هذا باسترداد البتات الخاصة بمفتاح التشفير.   
تعتمد هجمات Meltdown و Specter لعام 2017 التي أجبرت مصنعي وحدة المعالجة المركزية (بما في ذلك Intel و AMD و ARM و IBM) على إعادة تصميم وحدات المعالجة المركزية الخاصة بهم على هجمات التوقيت.    اعتبارًا من أوائل عام 2018 ، تُأثر هجمات Specter تقريبًا بكل نظام كمبيوتر في العالم ، مما يجعلها أقوى مثال على توقيت الهجوم وعلى مدار التاريخ.    

توضح التعليمات البرمجية التالية  لـ Visual Basic مقارنة سلسلة غير آمنة نموذجية والتي تتوقف عن الاختبار بمجرد عدم تطابق حرف. على سبيل المثال ، عند مقارنة "ABCDE" بـ "ABxDE" ، فإن الدالة ستعود بالتوقف بعد تكرار 3 دورات: 
Function InsecureCompare(StrA As String, StrB As String, length As Integer) As Boolean
 Dim result As Boolean
 For i = 1 To length
 If Mid(StrA, i, 1) <> Mid(StrB, i, 1) Then Exit For
 Next
 result = (i > length)
 InsecureCompare = resultEnd Function
 بالمقارنة ، يتم تشغيل الإصدار التالي في وقت ثابت عن طريق اختبار جميع الأحرف واستخدام عمليات bitwise للاختبار دون القفزات الشرطية: 
Function SecureCompare(StrA As String, StrB As String, length As Integer) As Boolean
 Dim result As Boolean
 For i = 1 To length
 result = result Or (Asc(Mid(StrA, i, 1)) Xor Asc(Mid(StrB, i, 1)))
 Next
 SecureCompare = Not resultEnd Function

ملاحظات

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