حمله لغزش کیست؟ توضیح بده.
حمله لغزش حالتی از تحلیل رمز است که برای مقابله با این ایده عمومی که حتی رمزهای ضعیف می توانند از طریق افزایش تعداد دورها بسیار قوی شوند و با یک حمله تفاضلی مقابله کنند، طراحی شد. حمله لغزش طوری عمل می‌کند که تعداد دورها را در یک رمز، نامرتبط کند. به جای نگاه کردن به جنبه ‌های تصافی کردن داده ‌های رمز بلوکی ، حمله لغزش فهرست کلیدها را تحلیل می‌کند و نواقص آن را کشف کرده تا رمز را بشکند. رایج‌ترین مورد، کلیدهایی است که به صورت چرخه ای تکرار می‌شوند.اولین بار این حمله توسط دیوید واگنر و الکس بیریوکو توصیف شد. در ابتدا بروس اسچنیر اصطلاح حمله لغزش را به آن‌ها پیشنهاد داد و آن‌ها این اصطلاح را در مقاله ای که در سال ۱۹۹۹ چاپ کردند و در آن به توصیف حمله پرداختند، به کار بردند.تنها نیازمندی این حمله برای کار بر روی یک رمز این است که بتواند به چندین دور مرتبط به یک تابع f شکسته شود. این مسئله احتمالاً به این معناست که دارای یک فهرست چرخه ای برای کلید است. تابع f باید نسبت به حمله متن رمزنشده مشخص حساس باشد. حمله لغزش در ارتباط با حمله کلید مرتبط است.ریشه ‌های ایده حمله لغزش به مقاله ادنا گرسمن و بریانت توکرمن در سال ۱۹۷۷ برمی گردد. این دو حمله را بر یک بلوک رمز ضعیف توضیح دادند. حمله به این واقعیت که رمز دارای زیرکلیدی یکسان در هر دور است، بستگی داشت. بنابراین رمز یک کلید با فهرست چرخه‌های مربوط به تنها یک کلید که آن را تبدیل به نسخه ای از حمله لغزش می‌کند، ارتباط داشت. خلاصه ای از گزارش شامل توصیفی از رمز بلوکی ان دی اس و حمله، در سیستم‌های رمز (بکر و پیپر، ۱۹۸۲) ارائه شده‌است.حمله حقیقی.در ابتدا نمادگذاری‌ها را بیان می کنیم. تعداد بیت‌های بلوک رمز n است و فهرست کلیدها به صورت formula_1 بیان می‌شود، به طوری که کلیدها دارای طول‌های مختلف هستند.حمله لغزش از طریق شکستن رمز به توابع جایگشت یکسان عمل می‌کند. این توابع می توانند از بیش از یک دور رمز تشکیل شده باشند. به عنوان مثال اگر یک رمز از یک فهرست کلید متناوب استفاده کند، به طوری برای هر دور بین formula_2 و formula_3 یکی را انتخاب کند. تابع f از دو دور تشکیل می‌شود. هر کدام از کلیدهای formula_4 حداقل یک بار در تابع به کار می روند.مرحله بعد جمع آوری formula_5 جفت متن رمزنشده به همراه متن رمزشده آن هاست. بسته به خصوصیات رمز تعداد کمتری ممکن است کفایت کند، اما بر اساس مسئله تاریخ تولد حداکثر formula_5 جفت لازم است. این جفت‌ها که به صورت formula_7 نمایش داده می‌شوند برای پیدا کردن یک جفت لغزش که به صورت formula_8 نشان داده می‌شود، به کار می روند. جفت لغزش دارای دو ویژگی formula_9 و formula_10 است. هر زمانی که جفت لغزش شناسایی می‌شود، رمز به خاطر حساسیت حملات متن رمزنشده مشخص، شکسته می‌شود. کلید می‌تواند به سادگی از این جفت‌ها استخراج شود. جفت لغزش می‌تواند چیزی که برای یک پیام بعد از یک بار استفاده از تابع اتفاق می افتد، در نظر گرفته شود.فرایند پیدا کردن یک جفت لغزش چیزی متفاوت از هر رمز است اما از همان طرح اولیه پیروی می‌کند. با انتخاب هر جفت متن رمزنشده و متن رمزشده آن formula_8 و چک کردن با هدف پیدا کردن کلیدهای مطابق با formula_9 و formula_10، استخراج کلید از فقط یک تکرار تابع امکان‌پذیر می‌شود. اگر این کلیدها با هم مطابق باشند، این جفت یک جفت لغزش است در غیر این صورت جفت بعدی بررسی می‌شود.با formula_5 جفت متن رمزنشده و متن رمزشده آنها، وجود یک جفت لغزش انتظار می رود. مثبت کاذب می‌تواند از طریق کاربرد کلیدهایی روی یک جفت متفاوت دیگر برای پی بردن به اینکه رمزنگاری صحیح است یا نه ، حذف شود. احتمال اینکه کلید نادرست به درستی دو یا تعداد بیشتری پیام را رمز کند، در مورد یک رمز خوب بسیار پایین است.گاهی اوقات ساختار رمز به شدت تعداد جفت‌های لغزش لازم را کاهش می‌دهد و بنابراین بخش زیادی از کار را کاهش می‌دهد. واضح‌ترین مثال رمز فیستل است که از فهرست چرخشی کلیدها استفاده می‌کند. علت این است که جستجو برای formula_15 صورت می‌گیرد. این مسئله تعداد جفت پیام‌های ممکن را از formula_16 به formula_5 کاهش می‌دهد (به این دلیل که نیمی از پیام ثابت است) و بنابراین حداکثر formula_18 جفت متن رمزنشده و متن رمزشده برای پیدا کردن جفت لغزش لازم است.