موضوع مقاله: حمله زمانبندی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # حمله زمانبندی | مقدمه: در رمزنگاری، حمله زمانبندی یا حملات زمانی یک نوع حمله کانال جانبی میباشد که در آن مهاجم در تلاش است تا با تحلیل زمان اجرای الگوریتم های رمز نگاری، یک سیستم رمزنگاری بسازد.در هر کامپیوتر هر عمل منطقی نیاز به زمان برای اجرا شدن دارد و این زمان میتواند بر اساس ورودی متفاوت باشد. | ## بخش 1: حمله زمانبندی | با اندازه‌گیری دقیق زمان هر عملیات، مهاجم میتواند به صورت معکوس عمل کرده و به ورودی دسترسی پیدا کند. اطلاعات یک سیستم میتواند به وسیله اندازه گیری زمان مورد نیاز برای پاسخ به درخواست‌ها فاش شود. طراحی سیستم رمزنگاری، پردازنده‌ای که سیستم را اجرا می‌کند، الگوریتم‌های مورد استفاده، جزئیات پیاده‌سازی، اقدامات متقابل حمله زمان‌بندی، میزان دقت اندازه‌گیری زمان از این موارد بشمار میروند. پیشگیری از حمله‌های زمانبندی شامل طراحی توابع با زمان ثابت و بررسی و آزمایش دقیق کد اجرایی نهایی میباشد. مفهوم حمله زمانبندی نمونه‌ی یک حمله است که در آن ویژگی‌های رفتاری وابسته به داده در پیاده سازی یک الگوریتم را به جای خواص ریاضیاتی الگوریتم، به کار میگیرد. اکثر الگوریتم‌های رمزنگاری میتوانند به گونه‌ای پیاده‌سازی شوند که در آن، وابستگی زمانی داده کاهش داده و یا حذف شود. بعنوان مثال پیاده سازی‌ای را در نظر بگیرید که در آن هر زیربرنامه‌ای در زمان x ثانیه پاسخ خواهد داد، که x بیشترین زمان ممکن برای پاسخ دادن به هر ورودی مجاز برای آن زیربرنامه میباشد. در اینگونه پیاده‌سازی زمانبندی الگوریتم، هیچ گونه اطلاعاتی در مورد داده‌های فراهم شده را فاش نمی‌سازد. نکته منفی این پیاده‌سازی این است که پیچیدگی زمانی اجرای همه‌ی دستورها در بدترین حالت قرار میگیرد که باعث کاهش کارایی توابع خواهد شد. حملات زمانی در نمونه‌های زیادی کاربردی هستند: حملات زمانی میتواند بر روی هر الگوریتمی که وابستگی زمانی داده دارد، اعمال شود. نرم‌افزازی که برروی پردازنده همراه با یک حافظه cache اجرا می‌شود، گوناگونی وابستگی زمانی داده را به عنوان نتیجه بررسی کَش توسط مموری نشان میدهد. برخی از عملیات‌ها، مانند عمل ضرب، با توجه به ورودی آن‌ها ممکن است زمان اجرای مختلفی داشته باشند. | ## بخش 2: حمله زمانبندی | حذف کردن وابستگی زمانی در الگوریتم هایی که از عملیات های سطح پایین که زمان اجرای گوناگونی دارند، کار دشواری خواهد بود. دستیابی به اسرار سیستم رمزنگاری از طریق اطلاعات زمانی میتواند به طور چشمگیری آسان‌تر از تحلیل رمز متن اصلی و متن رمز شده معادل باشد. در برخی موارد، اطلاعات زمانی با تحلیل رمز درآمیخته می‌شود تا میزان اطلاعات فاش شده را افزایش دهد. مثال ها زمان مورد نیاز برای اجرای الگوریتم توان رسانی دودویی که در به توان رسانی پیمانه‌ای به کار رفته، به طور خطی به تعداد یک های به کار رفته در کلید وابستگی دارد. در حالی که تعداد یک های بکار رفته، به تنهایی اطلاعات کافی‌ای برای راحت‌تر ساختن دستیابی به کلید به ما نمی‌دهد، اجرا های تکرار شده به‌وسیله همان کلید یکسان و ورودی های متفاوت میتوانند نمونه های خوبی برای تحلیل های مرتبط با همبستگی آماری از اطلاعات زمانی باشند که برای بازیابی کامل کلید حتی در هنگام مواجهه با یک مهاجم مجهول مؤثر خواهند بود. اندازه‌گیری زمان مشاهده شده معمولاً حاوی نویز هستند (از طریق تاخیر موجود در شبکه یا منبع، یا زمان دسترسی به حافظه مختلف و یا از طریق تکنیک های تشخیص و تصحیح خطا که برای خطاهای انتقال استفاده میشود). با این وجود، حملات زمانبندی در مقابل شماری از الگوریتم های رمزنگاری کاربردی می‌باشد، الگوریتم هایی مانند رمزنگاری الجمل، آراس‌ای و الگوریتم امضای دیجیتال. در سال ۲۰۰۳ میلادی بونه و برملی یک حمله زمانبندی بر اساس شبکه به یک وب سرور که از لایه سوکت‌های امن برخوردار بود را تدارک دیدند که اساس این حمله، آسیب پذیری های مختلفی است که آراس‌ای با بهینه سازی قضیه باقی مانده چینی دارد، میباشد. اندازه واقعی شبکه در آزمایش آن‌ها کوچک بود اما حمله‌ی آن‌ها تنها در چند ساعت موفق به دستیابی به کلید سری سرور شد. این اتفاق منجر شد تا در پیاده سازی لایه سوکت های امن، از تکنیک نابینایی استفاده شود. در اینجا، منظور از استفاده از نابینایی ، از بین بردن همبستگی بین کلید و زمان رمزگذاری است. برخی از نسخه های یونیکس، از پیاده سازی نسبتاً پر هزینه‌ای برای توابع کتابخوانه crypt برخوردار میباشند تا یک رشته رمز ۱۱ حرفی را با استفاده از یک رمز ۸ حرفی تولید کنند. | ## بخش 3: حمله زمانبندی | در سخت افزارهای قدیمی تر، این عملیات به طور محسوسی و عمداً زمان زیادی برای اجرا نیاز داشت، به طوری که برای انجام برخی عملیات ها به دو یا سه ثانیه زمان نیاز بود. برنامه مربوط به ورود به سیستم در نسخه های اولیه یونیکس‌ها تنها زمانی از توابع crypt استفاده میکردند که نام ورودی توسط سیستم شناخته میشد. که این روند، اطلاعاتی مربوط به معتبر بودن نام ورودی را از طریق زمانبندی فاش میکرد، حتی زمانی که رمز کاربری اشتباه وارد میشد این اتفاق می‌افتاد. در این شرایط، مهاجم میتوانست با بکار گیری این اطلاعات فاش شده و اعمال حمله‌ی جستجوی فراگیر، یک لیست از نام‌هایی که معتبر بودند تولید کند و در ادامه به وسیله ترکیب کردن این اسامی با مجموعه‌ای عظیم از کلمات عبور که بیشتر از بقیه استفاده شده بودند، تلاش برای دسترسی به سیستم کند. بدون داشتن هیچگونه اطلاعاتی مبنی بر معتبر بودن یا نبودن نام کاربری، زمان مورد نیاز برای اجرای چنین حمله‌ای بسیار افزایش خواهد یافت و عملاً آن را بلا استفاده میکند. در نسخه‌های بعدی یونیکس، مشکل نشتی چنین اطلاعاتی رفع شده و این کار با اجرای توابع crypt بر روی همه‌ی نام کاربری های ورودی، با صرف نظر از معتبر بودن یا نبودن نام ورودی، انجام میشود. دو پروسه‌ی ایزوله و امن دیگر که بر روی یک سیستم به همراه حافظه نهان و یا حافظه مجازی اجرا میشوند میتوانند به وسیله بروز عمدی خطا در خطای صفحه و عدم دسترسی حافظه نهان در یک پروسه ارتباط برقرار کنند و سپس تغییرات حاصل را در زمان دسترسی را مورد مشاهده و بررسی قرار دهد. به همین صورت اگر یک برنامه مورد تائید باشد اما اگر caching و یا paging آن توسط منطق شاخه شاخه (منشعب ) تحت تاثیر واقع شده باشد، این امکان وجود دارد که یک اپلیکیشن دیگری بتواند مقادیر داده های را در مقایسه با شرایط شاخه تعین کند و این کار را به وسیله مشاهده و بررسی تغیرات در زمان دسترسی انجام میدهد. تا اوایل ۲۰۱۸ تقریباً تمام سیستم‌های کامپیوتری در دنیا توسط spectre تحت تاثیر واقع شده بودند، که این امر آن را قدرتمند ترین نمونه از حمله زمانبندی در طول تاریخ میسازد. کدهای ویژوال بیسیک زیر نمایانگر یک مقایسه کننده معمول رشته هستند و روش کار آن ها به گونه‌ایست که به محض مشاهد تفاوت در رشته ها متوقف میشوند. از آن‌جایی که امنیت رمزنگاری هیچ‌گاه نباید به میزان مبهم بودن چیزی وابسته باشد (امنیت را از طریق گمنامی، به طور خاص، اصل ماکسیم شانون و اصل کرکوفس)، میزان مقاومت در برابر حمله زمانبندی هم نباید به این موضوع بستگی داشته باشد. حملات رمزنگاری و دیگر حملات کانال جانبی، میتوانند برای تشخیص و احتمالاً مهندسی معکوس یک الگوریتم رمزنگاری در برخی دستگاه‌ها استفاده شوند. | ## جمع‌بندی | CRYPTO 1996: 104–113 ( پرونده پی دی اف دیوید بروملی و دن بونه: حملات از راه دور از راه دور عملی هستند.