تحلیل رمز

بندانگشتی|مثالی از رمزنگاری تفاضلی
**رمزکاوی** (‏‪Cryptanalysis‬‏) یا تحلیل رمز، شاخه‌ای از دانش رمزنگاری است که به بررسی، تحلیل و شکستن پیام‌ها و سامانه‌های رمزگذاری‌شده می‌پردازد. هدف رمزکاوی دسترسی به محتوای پیام‌های پنهان یا کشف کلید رمز است، بدون آن‌که کلید اصلیِ مورد استفاده در رمزگذاری در دسترس باشد. در این فرایند، متن رمزشده بررسی می‌شود تا از راه شناسایی الگوها، ضعف‌های ریاضی یا خطاهای اجرایی در سامانهٔ رمزگذاری، پیام اصلی بازیابی شود.

رمزکاوی در کنار رمزنگاری، زیرمجموعه‌ای از رمزشناسی به‌شمار می‌رود؛ به‌طوری که رمزنگاری بر ساخت روش‌های امن برای پنهان‌سازی اطلاعات تمرکز دارد، در حالی که رمزکاوی به ارزیابی میزان امنیت این روش‌ها و یافتن راه‌های نفوذ به آن‌ها می‌پردازد. از دید تاریخی، رمزکاوی پیشینه‌ای کهن دارد و نمونه‌هایی مانند تحلیل فراوانی حروف برای شکستن رمزهای ساده، از سده‌ها پیش به‌کار گرفته می‌شده است.

در دوران امروزی، رمزکاوی تنها به تحلیل متن‌های رمزشده محدود نمی‌شود و می‌تواند شامل بررسی رفتار سامانه‌ها، زمان پاسخ‌دهی، مصرف انرژی یا خطاهای انسانی در پیاده‌سازی رمزگذاری باشد. این دانش هم در زمینه‌های دفاعی و امنیت اطلاعات برای سنجش استحکام سامانه‌ها کاربرد دارد و هم در حوزه‌های اطلاعاتی و پژوهشی برای شناسایی آسیب‌پذیری‌های موجود در روش‌های رمزگذاری استفاده می‌شود.

علاوه بر تجزیه و تحلیل ریاضی الگوریتم‌های رمزنگاری، تحلیل رمز شامل مطالعه حملات کانال جانبی است که نقاط ضعف در الگوریتم‌های رمزنگاری را هدف نمی‌گیرند، بلکه در عوض از ضعف‌ها در اجرای آنها سوء استفاده می‌کنند. اگرچه هدف یکسان بوده‌است، روش‌ها و تکنیک‌های تحلیل رمز در طول تاریخ رمزنگاری به طرز چشمگیری تغییر کرده‌است، سازگار با افزایش پیچیدگی رمزنگاری، از روش‌های قلم و کاغذ، از طریق ماشین‌هایی مانند بمب‌های انگلیس و رایانه‌های کولئوس در بلوکلی پارک در جنگ جهانی دوم، به طرح‌های رایانه ای پیشرفته رایانه ای حاضر. روشهای شکستن رمزنگاری‌های مدرن اغلب شامل حل مسائل با دقت ساخته شده در ریاضیات خالص است که شناخته شده‌ترین عامل عدد صحیح است.

### مقدار اطلاعات در دسترس مهاجم
حملات رمزکاوی را می‌توان بر پایهٔ نوع و میزان اطلاعاتی که مهاجم در اختیار دارد، دسته‌بندی کرد. در تحلیل‌های رمزنگاری معمولاً این فرض پذیرفته می‌شود که الگوریتم رمزگذاری به‌طور کامل شناخته‌شده است و تنها کلید رمز ناشناخته باقی می‌ماند. این فرض که به اصل «دشمن سامانه را می‌شناسد» معروف است، نخستین بار توسط ماکس شانون مطرح شد و از نظر مفهومی معادل اصل کرکهفز به‌شمار می‌رود.

این فرض در عمل نیز معقول است، زیرا در طول تاریخ نمونه‌های فراوانی از الگوریتم‌های به‌ظاهر محرمانه وجود داشته‌اند که در نهایت از راه‌هایی مانند جاسوسی، خیانت، مهندسی معکوس یا تحلیل محض ریاضی افشا شده‌اند. از جمله می‌توان به شکسته‌شدن رمزهای آلمانی لورنز، رمز ژاپنی «پِرپل» و بسیاری از رمزهای کلاسیک اشاره کرد.

بر پایهٔ میزان اطلاعات در دسترس مهاجم، مهم‌ترین گونه‌های حمله عبارت‌اند از:

* حمله متن رمز: تحلیل‌گر تنها به مجموعه‌ای از متن‌های رمزگذاری‌شده دسترسی دارد.
* حمله متن آشکار: مهاجم علاوه بر متن‌های رمزگذاری‌شده، متن سادهٔ متناظر با آن‌ها را نیز می‌شناسد.
* حمله با متن آشکار منتخب (یا حمله با متن رمز منتخب): مهاجم می‌تواند برای متن‌های دلخواه خود، خروجی رمزگذاری (یا برعکس) را دریافت کند.
* **حمله با متن منتخب تطبیقی**: مشابه حملهٔ متن منتخب است، با این تفاوت که مهاجم می‌تواند انتخاب‌های بعدی خود را بر پایهٔ اطلاعات به‌دست‌آمده از رمزگذاری‌های پیشین تنظیم کند.
* حمله کلید مرتبط: در این حالت مهاجم متن‌های رمزگذاری‌شده‌ای را در اختیار دارد که با کلیدهای متفاوت اما دارای رابطهٔ مشخص (برای نمونه تفاوت در یک بیت) تولید شده‌اند.

### منابع محاسباتی مورد نیاز
حملات رمزکاوی را همچنین می‌توان بر اساس منابع محاسباتی لازم برای اجرای آن‌ها توصیف کرد. این منابع معمولاً شامل موارد زیر هستند:

* **زمان**: تعداد عملیات محاسباتی مورد نیاز، مانند تعداد آزمون‌های رمزگذاری.
* حافظه: میزان فضای ذخیره‌سازی لازم برای اجرای حمله.
* **داده**: مقدار و نوع متن‌های ساده یا رمزگذاری‌شدهٔ مورد نیاز.

برآورد دقیق این منابع همواره آسان نیست، به‌ویژه زمانی که اجرای عملی حمله ممکن نباشد. با این حال، پژوهشگران دانشگاهی معمولاً مرتبهٔ بزرگی این هزینه‌ها را گزارش می‌کنند، برای نمونه بیان می‌شود که یافتن برخورد در تابع هش SHA-1 نیازمند حدود ۲۵۲ عملیات است.

### شکست‌های جزئی
نتایج یک حملهٔ رمزکاوی از نظر میزان سودمندی می‌تواند بسیار متفاوت باشد. برای نمونه، لارس نودسن در سال ۱۹۸۹ گونه‌های مختلف شکست رمزهای بلوکی را بر پایهٔ میزان اطلاعات افشاشده چنین طبقه‌بندی کرد:

* **شکست کامل'': مهاجم به کلید محرمانه دست می‌یابد.
* **استنتاج سراسری*: مهاجم بدون دانستن کلید، الگوریتمی هم‌ارز برای رمزگذاری و رمزگشایی پیدا می‌کند.
* *'استنتاج موضعی*: بخشی از متن ساده یا متن رمز که پیش‌تر ناشناخته بوده، بازیابی می‌شود.
* *'استنتاج اطلاعاتی*: مهاجم بخشی از [[آنتروپی اطلاعات|آنتروپی اطلاعات ]] متن ساده یا رمز را به‌دست می‌آورد.
* *'الگوریتم تمایزدهنده'': مهاجم می‌تواند خروجی رمز را از یک جایگشت تصادفی تشخیص دهد.

بسیاری از حملات دانشگاهی در عمل تنها علیه نسخه‌های تضعیف‌شدهٔ الگوریتم‌ها، مانند کاهش تعداد دورهای یک رمز بلوکی یا تابع هش، موفق هستند. با این حال، چنین شکست‌هایی گاه نشانه‌ای از آسیب‌پذیری عمیق‌تر در نسخهٔ کامل الگوریتم به‌شمار می‌روند. برای نمونه، حملات عملی به DES، MD5 و SHA-1 نخست بر نسخه‌های ضعیف‌تر آن‌ها انجام شد.

در رمزنگاری دانشگاهی، تعریف «شکست» معمولاً بسیار محافظه‌کارانه است. ممکن است حمله‌ای تنها با منابعی غیرعملی یا با فرض توانایی‌هایی انجام‌پذیر باشد که در دنیای واقعی به‌ندرت در اختیار مهاجمان قرار می‌گیرد. با این حال، همین حملات می‌توانند گامی مهم در جهت ارزیابی امنیت یک سامانهٔ رمزگذاری باشند.

## تاریخچه
بندانگشتی|جلد (سمت راست) و صفحهٔ نخستِ رسالهٔ «فی حلّ المترجَم» (دربارهٔ رمزکاوی) اثر ابن عدلان، که با نام «المؤلَّف للملک الاشرف» (کتابی که برای ملک الاشرف نوشته شده است) نیز شناخته می‌شود. این اثر تاریخ نگارش مشخصی ندارد و برای امیر الاشرف موسیِ دمشق، که میان سال‌های ۱۲۲۹ تا ۱۲۳۷ میلادی فرمانروایی می‌کرد، نوشته شده است. نسخهٔ حاضر از این رساله در کتابخانهٔ سلیمانیه، وابسته به مسجد سلیمانیهٔ استانبول، نگهداری می‌شود (شمارهٔ نسخهٔ خطی: ۵۳۵۹).

رمزنگاری و رمزکاوی همواره به‌صورت هم‌زمان تکامل یافته‌اند و می‌توان این رقابت را در سراسر تاریخ رمزنگاری مشاهده کرد. رمزهای تازه برای جایگزینی طرح‌های شکسته‌شده پدید آمده‌اند و در مقابل، روش‌های نوین رمزکاوی برای شکستن این طرح‌های بهبودیافته توسعه یافته‌اند. در عمل، این دو حوزه همچون دو روی یک سکه عمل می‌کنند.

### رمزگذاری‌های کلاسیک
اگرچه واژهٔ «رمزکاوی» اصطلاحی نسبتاً نو است و در دههٔ ۱۹۲۰ توسط ویلیام فریدمن رواج یافت، اما روش‌های شکستن رمزها پیشینه‌ای بسیار کهن دارند. به گفتهٔ دیوید کان در کتاب The Codebreakers، دانشمندان عرب نخستین کسانی بودند که رمزکاوی را به‌صورت روشمند مستند کردند.

نخستین شرح ثبت‌شدهٔ علمی از رمزکاوی به الکندی، دانشمند سدهٔ سوم هجری، بازمی‌گردد. او در رساله‌ای دربارهٔ رمزگشایی پیام‌ها، برای نخستین بار روش تحلیل فراوانی را شرح داد. این روش بر این اصل استوار است که در زبان‌های طبیعی، برخی حروف بیش از دیگران به‌کار می‌روند. برای نمونه، در زبان انگلیسی حرف «E» بیشترین بسامد را دارد.

تحلیل فراوانی ابزاری بنیادین برای شکستن بسیاری از رمزهای کلاسیک، به‌ویژه رمزهای جانشینی ساده، به‌شمار می‌رود. این روش زمانی کارآمد است که متن به‌اندازهٔ کافی طولانی باشد تا الگوهای آماری زبان آشکار شوند.

در اروپا، پژوهشگرانی مانند جَمباتیستا دلا پورتا در سدهٔ شانزدهم به توسعهٔ رمزکاوی پرداختند. در همین دوران، رمزهای چندجانشینی مانند رمز ویژنر پدید آمدند که برای چند قرن امن تلقی می‌شدند، تا آن‌که در سدهٔ نوزدهم توسط چارلز بابیج و فردریش کاسیسکی شکسته شدند.

### رمزهای جنگ جهانی اول و دوم
در جنگ جهانی اول، شکستن تلگرام زیمرمان نقشی کلیدی در ورود ایالات متحده به جنگ ایفا کرد. در جنگ جهانی دوم نیز رمزگشایی موفق رمزهای آلمانی مانند انیگما و رمز لورنز و همچنین رمزهای ژاپنی، تأثیری تعیین‌کننده بر نتیجهٔ جنگ داشت. اطلاعات حاصل از این رمزگشایی‌ها، که با نام‌هایی مانند «اولترا» و «مجیک» شناخته می‌شدند، به‌طور چشمگیری مدت جنگ را کاهش دادند..

#### نشانگر
در رمزهای ماشینیِ روتوری مانند انیگما و نیز سامانه‌هایی مانند رمز لورنز که در جنگ جهانی دوم به‌کار می‌رفتند، هر پیام معمولاً «کلید پیام» جداگانه‌ای داشت. اپراتورِ فرستنده برای این‌که گیرنده بتواند دستگاه را درست تنظیم کند، پیش از پیامِ رمزگذاری‌شده بخشی کوتاه را ارسال می‌کرد که به گیرنده «نشان می‌داد» تنظیمات اولیه چیست. به این بخش «نشانگر» گفته می‌شود. ضعف در روش‌های طراحی یا اجرای نشانگر (و نیز اشتباه‌های اپراتورها) از عوامل مهمی بود که راه را برای شکستن انیگما هموار کرد.

در برخی شیوه‌های اولیهٔ نشانگر در انیگما، از یک تنظیم آغازین مشترک در شبکه استفاده می‌شد و نیز «کلید پیام» گاهی به‌شکل تکرارشده ارسال می‌شد. این‌گونه خطاهای روالی، الگوهایی پدید می‌آورد که رمزکاوان می‌توانستند از آن‌ها برای بازسازی تنظیمات و سپس پیشروی به سوی رمزگشایی پیام‌ها بهره بگیرند.

#### عمق
ارسال دو یا چند پیام با کلید یکسان (یا با تنظیمات آغازین یکسان) رویه‌ای ناامن است. در چنین حالتی گفته می‌شود پیام‌ها «در عمق» ارسال شده‌اند. «عمق» معمولاً زمانی رخ می‌دهد که دو پیام به‌طور تصادفی یا به سبب خطای روالی، با همان کلید پیام تولید شوند؛ یا این‌که به دلیل نشانگرهای یکسان، تنظیمات یکسانی برای آغاز تولید کلید به کار رفته باشد. 

نمونهٔ کلاسیکِ بهره‌برداری از «عمق» در رمزهای جریانی دیده می‌شود. در رمزگذاری ورنام، متن ساده و کلیدِ جریانی با عملگر «اکس‌اوآر» (‏‌‏‎XOR‎‏‌‏) ترکیب می‌شوند و متن رمز به دست می‌آید. اگر دو متن رمز با یک کلید مشترک ساخته شده باشند، ترکیب آن دو متن رمز، اثر کلید مشترک را حذف می‌کند و ترکیبی از دو متن ساده باقی می‌گذارد. در این وضعیت، رمزکاو می‌تواند با تکیه بر حدس‌های زبانی و ساختاری دربارهٔ متن‌ها، قطعه‌هایی از یکی از متن‌های ساده را حدس بزند و نتیجه را روی دیگری بیازماید. با درست درآمدن حدس‌ها، بخش‌های بیشتری قابل بازسازی می‌شود و گاه می‌توان تا حد استخراج کلید مشترک پیش رفت؛ و در صورت تکرارِ استفاده از همان کلید، پیام‌های دیگر نیز خوانده می‌شوند. 

## توسعهٔ رمزنگاری مدرن
دولت‌ها از دیرباز اهمیت رمزنگاری را در ارتباطات نظامی و دیپلماتیک شناخته‌اند و برای شکستن رمزهای دیگر کشورها نهادهای تخصصی ایجاد کرده‌اند؛ از جمله می‌توان به GCHQ در بریتانیا و NSA در ایالات متحده اشاره کرد. 

با گسترش رایانه‌ها، هم رمزنگاری و هم رمزکاوی دگرگون شدند. از یک سو، بسیاری از سامانه‌های امروزی در برابر روش‌های کلاسیکِ شکستن رمز بسیار مقاوم‌ترند و به‌ویژه در رمزهای درست‌طراحی‌شده، حتی داشتن مقدار زیادی متن رمز لزوماً راهگشا نیست. از سوی دیگر، در کنار حملات «ریاضی محض»، مسیرهایی مانند خطاهای پیاده‌سازی، خطاهای روالی، رهگیری، و حملات کانال جانبی (برای نمونه بر پایهٔ زمان اجرا یا نشتی‌های فیزیکی) اهمیت بیشتری یافته‌اند.

در ادبیات این حوزه، گاه از «بالغ شدن» حوزهٔ رمزنگاری و کندتر شدن جهش‌های بزرگ نظری نسبت به دوران پیشین سخن گفته می‌شود. 

با این حال، در دورهٔ رمزنگاری رایانه‌ای نیز نمونه‌های پرشماری از شکست‌ها و تضعیف‌های جدی گزارش شده‌اند؛ از جمله شکست‌های عملی علیه برخی الگوریتم‌های پیشنهادی و نیز شکست سامانه‌های رایج در کاربردهای روزمره. برای نمونه، در حوزهٔ شبکه‌های بی‌سیم، پروتکل WEP به‌دلیل ضعف‌های طراحی و وابستگی به آرسی‌۴، در عمل ناامن شناخته شد و حملات بازیابی کلید علیه آن از اوایل دههٔ ۲۰۰۰ میلادی مطرح شد. 

همچنین در حوزهٔ زیرساخت گواهی‌های وب، پژوهشگران در سال ۲۰۰۸ نشان دادند که ضعف‌های برخوردیِ ام‌دی۵ می‌تواند در سناریوهای مشخصی برای ساخت گواهیِ «مرجع صدور گواهی» جعلی و در نتیجه، تسهیل حملات مرد میانی مورد سوءاستفاده قرار گیرد. 

## رمزهای متقارن

حمله جستجوی فراگیر

رمزکاوی تفاضلی

حمله ملاقات در میانه

حمله لغزش

حمله ایکس‌اس‌ال

## رمزهای نامتقارن
رمزنگاری نامتقارن یا کلید عمومی، بر استفاده از دو کلیدِ مرتبط از نظر ریاضی (یکی عمومی و دیگری خصوصی) تکیه دارد. امنیت این سامانه‌ها معمولاً به دشواری حل مسائل ویژهٔ ریاضی وابسته است؛ بنابراین رمزکاوی در این حوزه، بیش از آن‌که بر الگوهای زبانی یا آماری استوار باشد، به پیشرفت‌های الگوریتمی و ریاضی گره می‌خورد.

برای نمونه، امنیت تبادل کلید دیفی–هلمن به دشواری محاسبهٔ لگاریتم گسسته وابسته است و امنیت RSA به دشواری تجزیهٔ عددهای صحیحِ بزرگ پیوند دارد. اگر الگوریتم‌های سریع‌تر یا روش‌های ریاضی تازه‌ای برای حل این مسائل پیدا شود، اندازهٔ کلیدهای لازم برای حفظ امنیت افزایش می‌یابد یا ممکن است یک طرح عملاً تضعیف شود.

## امنیت مطلق در رمزکاوی
یک سامانهٔ رمزنگاری زمانی «امنیت مطلق» دارد که متن رمز بدون داشتن کلید، هیچ اطلاعاتی دربارهٔ متن رمزنشده فاش نکند. این مفهوم با امنیت از نظر تئوری اطلاعات پیوند دارد و در چنین چارچوبی حتی مهاجمی با منابع محاسباتی نامحدود نیز نمی‌تواند از متن رمز، دانشی دربارهٔ متن ساده به دست آورد. 

در عمل، بسیاری از سامانه‌ها ممکن است بخشی از اطلاعات را (به‌صورت مستقیم یا غیرمستقیم) آشکار کنند، اما همچنان در برابر مهاجمی با توان محاسباتی محدود یا حتی بسیار بالا مقاوم بمانند؛ این‌گونه سامانه‌ها ممکن است «امن» تلقی شوند، اما الزاماً امنیت مطلق ندارند. 

## امنیت نامشروط
«امنیت نامشروط» گاه به‌جای امنیت از نظر تئوری اطلاعات به‌کار می‌رود، اما در برخی کاربردها به سامانه‌هایی هم گفته می‌شود که امنیتشان به «فرض‌های اثبات‌نشدهٔ دشواری محاسباتی» وابسته نیست. با این حال، طرح‌هایی مانند RSA معمولاً در ردهٔ امنیت تئوری اطلاعات قرار نمی‌گیرند، زیرا امنیت آن‌ها به دشواری محاسباتیِ یک مسئلهٔ ریاضی گره خورده است. 

## پانویس

رده:اختراع‌های اعراب
رده:پیشه‌های علوم ریاضیاتی
رده:حمله‌های رمزنگاری
رده:رمزنگاری