حمله زمانبندی
مثال ها

زمان مورد نیاز برای اجرای الگوریتم توان رسانی دودویی که در به توان رسانی پیمانه‌ای به کار رفته، به طور خطی به تعداد یک های به کار رفته در کلید وابستگی دارد. در حالی که تعداد یک های بکار رفته، به تنهایی اطلاعات کافی‌ای برای راحت‌تر ساختن دستیابی به کلید به ما نمی‌دهد، اجرا های تکرار شده به‌وسیله همان کلید یکسان و ورودی های متفاوت میتوانند نمونه های خوبی برای تحلیل های مرتبط با همبستگی آماری از اطلاعات زمانی باشند که برای بازیابی کامل کلید حتی در هنگام مواجهه با یک مهاجم مجهول مؤثر خواهند بود. اندازه‌گیری زمان مشاهده شده معمولاً حاوی نویز هستند (از طریق تاخیر موجود در شبکه یا منبع، یا زمان دسترسی به حافظه مختلف و یا از طریق تکنیک های تشخیص و تصحیح خطا که برای خطاهای انتقال استفاده میشود). با این وجود، حملات زمانبندی در مقابل شماری از الگوریتم های رمزنگاری کاربردی می‌باشد، الگوریتم هایی مانند رمزنگاری الجمل، آراس‌ای  و الگوریتم امضای دیجیتال.
در سال ۲۰۰۳ میلادی بونه و برملی یک حمله زمانبندی بر اساس شبکه به یک وب سرور که از لایه سوکت‌های امن برخوردار بود را تدارک دیدند که اساس این حمله، آسیب پذیری های مختلفی است که آراس‌ای با بهینه سازی قضیه باقی مانده چینی دارد، میباشد. اندازه واقعی شبکه در آزمایش آن‌ها کوچک بود اما حمله‌ی آن‌ها تنها در چند ساعت موفق به دستیابی به کلید سری سرور شد. این اتفاق منجر شد تا در پیاده سازی لایه سوکت های امن، از تکنیک نابینایی استفاده شود. در اینجا، منظور از استفاده از نابینایی ، از بین بردن همبستگی بین کلید و زمان رمزگذاری است.
برخی از نسخه های یونیکس، از پیاده سازی نسبتاً پر هزینه‌ای برای توابع کتابخوانه crypt برخوردار میباشند تا یک رشته رمز ۱۱ حرفی را با استفاده از یک رمز ۸ حرفی تولید کنند. در سخت افزارهای قدیمی تر، این عملیات به طور محسوسی و عمداً زمان زیادی برای اجرا نیاز داشت، به طوری که برای انجام برخی عملیات ها به دو یا سه ثانیه زمان نیاز بود. برنامه مربوط به ورود به سیستم در نسخه های اولیه یونیکس‌ها تنها زمانی از توابع crypt استفاده میکردند که نام ورودی توسط سیستم شناخته میشد. که این روند، اطلاعاتی مربوط به معتبر بودن نام ورودی را از طریق زمانبندی فاش میکرد، حتی زمانی که رمز کاربری اشتباه وارد میشد این اتفاق می‌افتاد. در این شرایط، مهاجم میتوانست با بکار گیری این اطلاعات فاش شده و اعمال حمله‌ی جستجوی فراگیر، یک لیست از نام‌هایی که معتبر بودند تولید کند و در ادامه به وسیله ترکیب کردن این اسامی با مجموعه‌ای عظیم از کلمات عبور که بیشتر از بقیه استفاده شده بودند، تلاش برای دسترسی به سیستم کند. بدون داشتن هیچگونه اطلاعاتی مبنی بر معتبر بودن یا نبودن نام کاربری، زمان مورد نیاز برای اجرای چنین حمله‌ای بسیار افزایش خواهد یافت و عملاً آن را بلا استفاده میکند. در نسخه‌های بعدی یونیکس، مشکل نشتی چنین اطلاعاتی رفع شده و این کار با اجرای توابع crypt بر روی همه‌ی نام کاربری های ورودی، با صرف نظر از معتبر بودن یا نبودن نام ورودی، انجام میشود. [نیازمند منبع]
دو پروسه‌ی ایزوله و امن دیگر که بر روی یک سیستم به همراه حافظه نهان و یا حافظه مجازی اجرا میشوند میتوانند به وسیله بروز عمدی خطا در خطای صفحه و عدم دسترسی حافظه نهان در یک پروسه ارتباط برقرار کنند و سپس تغییرات حاصل را در زمان دسترسی را مورد مشاهده و بررسی قرار دهد. به همین صورت اگر یک برنامه مورد تائید باشد اما اگر caching و یا paging آن توسط منطق شاخه شاخه (منشعب ) تحت تاثیر واقع شده باشد، این امکان وجود دارد که یک اپلیکیشن دیگری بتواند مقادیر داده های را در مقایسه با شرایط شاخه تعین کند و این کار را به وسیله مشاهده و بررسی تغیرات در زمان دسترسی انجام میدهد. در نمونه‌های فراوانی، این روش اجازه بازیابی بیت های کلید رمزنگاری را میدهد.
در سال ۲۰۱۷ حمله های ملتداون و spectre تولید کنندگان پردازنده ( مانند Intel, AMD, ARM و IBM)را مجبور ساخت، تا پردازنده‌های خود را بازطراحی کنند. تا اوایل ۲۰۱۸ تقریباً تمام سیستم‌های کامپیوتری در دنیا توسط spectre تحت تاثیر واقع شده بودند، که این امر آن را قدرتمند ترین نمونه از حمله زمانبندی در طول تاریخ میسازد.
کدهای ویژوال بیسیک زیر نمایانگر یک مقایسه کننده معمول رشته هستند و روش کار آن ها به گونه‌ایست که به محض مشاهد تفاوت در رشته ها متوقف میشوند. بعنوان مثلاً برای مقایسه دو رشته ABCDE و ABxDE، بعد از سه باز طی کردن حلقه، تابع متوقف میشود.
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
برای مقایسه، کد زیر در زمان ثابت اجرا میشود و تمام کاراکتر ها بررسی میشوند و از عملیات بیتی استفاده میشود.
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