هجوم التوقيت
أمثلة

يعتمد وقت التنفيذ لخوارزمية المربعات والضرب المستخدمة في الأسية المعيارية خطيًا على عدد البتات '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 = result
End 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 result
End Function