مبانی امنیت شبکه - صفحه اصلی | وب

Download Report

Transcript مبانی امنیت شبکه - صفحه اصلی | وب

‫‪1‬‬
‫مبانی امنیت شبکه‬
‫گردآوری‪ :‬محمدعلی عظیمی‬
‫‪2‬‬
‫بخش دوم‪ :‬رمزنگاری‬
‫گردآوری‪ :‬محمدعلی عظیمی‬
‫‪3‬‬
‫تعاریف اولیه رمزنگاری‬
‫‪‬‬
‫"‪ :"Cryptography‬از زبان يوناني گرفته شدهاست و وقتيكه واژه به واژه (تحتاللفظي) ترجمه شود‪،‬‬
‫"نوشتن محرمانه" معني ميدهد‪.‬‬
‫‪‬‬
‫پياماصلي‪ plaintext‬يا ‪ cleartext‬ناميده ميشود‪.‬‬
‫رمزنگاری محتويات پيام به نحوي كه محتواي آن را از بيگانگان مخفي كند‪ ،‬پنهانكردن (‪)Encryption‬‬
‫ناميده ميشود‪.‬‬
‫‪‬‬
‫پيامپنهانشده (رمزشده) ‪ ciphertext‬ناميده ميشود‪ .‬به فرآيند بازيابي ‪ plaintext‬از‬
‫‪ ،ciphertext‬آشكارسازي ‪ Decryption‬گفته ميشود‪.‬‬
‫در فرآيندهاي پنهان سازي و آشكار سازي به طور معمول از كليد استفاده ميشود و روش رمزنگاري بهگونهاي‬
‫است كه آشكارسازي تنها با دانستن كليد مناسب ميتواند انجام شود‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪4‬‬
‫تعاریف اولیه رمزنگاری‬
‫‪‬‬
‫‪ : Cryptography‬رمزنگاري هنر يا علم محرمانه نگاهداشتن پيامها است‪.‬‬
‫‪‬‬
‫‪ :Cryptanalysis‬شكستن رمز ‪Breaking‬هنر شكستن رمز كنندهها ميباشد؛‬
‫بدين معني كه ‪ plaintext‬بدون دانستن كليد مناسب بازيابي شود‪.‬‬
‫‪‬‬
‫‪cryptanalyst‬ها وظيفه ‪ cryptanalysis‬را عهده دار ميباشند‪.‬‬
‫‪‬‬
‫رمز نگاري با تمام جنبههاي پيغامرساني امن‪ ،‬تصديق ‪ ،Authentication‬امضاهاي‬
‫ديجيتالي‪ ،‬پول الكترونيكي وديگر كاربردها سر وكار دارد‪ Cryptology .‬يك شاخه از‬
‫رياضيات است كه پايههاي رياض ي روشهاي پنهان سازي (رمز نگاري) را مطالعه و‬
‫بررس ي ميكند‪.‬‬
‫‪5‬‬
‫اصول شش گانه کرکهف‪:‬‬
‫‪ -1‬سیستم رمزنگاری اگر نه به لحاظ تئوری که در عمل غیرقابل شکست باشد‪.‬‬
‫‪ -2‬سیستم رمزنگار باید هیچ نکته پنهان و محرمانه ای نداشته باشد؛ بلکه تنها چیزی که باید‬
‫سری نگهداشته شود‪ ،‬کلید رمز است‪ .‬این اصل را اصل اساس ی کرکهف می گویند‪ .‬طراح‬
‫سیستم رمزنگار نباید جزئیات سیستم خود را‪ ،‬حتی از دشمنان مخفی نگهدارد‪.‬‬
‫ً‬
‫ً‬
‫‪ -3‬کلید رمز باید به گونه ای قابل انتخاب باشد که اوال بتوان به راحتی آن را عوض کرد و ثانیا‬
‫بتوان آن را به خاطر سپرد و نیازی به یادداشت کردن کلید رمز نباشد‪.‬‬
‫‪ -4‬متون رمز نگاری شده باید از طریق خطوط تلگراف قابل مخابره باشد‪.‬‬
‫‪ -5‬دستگاه رمزنگاری یا اسناد رمزشده باید توسط یک نفر قابل حمل و نقل باشد‪.‬‬
‫‪ -6‬سیستم رمزنگاری باید به سهولت قابل راه اندازی و استفاده باشد‪ .‬یعنی نباید به آموزش‬
‫های مفصل و رعایت فهرست بزرگی از قواعد و دستورالعمل ها نیاز داشته باشیم‪.‬‬
‫‪6‬‬
‫استدالل اصل اساس ی‬
‫ً‬
‫این که جزئیات الگوریتم را پنهای نکنیم و اساسا پنهان کردن چاره نفوذ نکردن بر‬
‫آن سیستم نیست را کرکهف به صورت زیر استدالل می کند‪:‬‬
‫‪ ‬هرگاه کلید در اثر خیانت یا سهل انگاری یا هر دو عامل و یا هر عامل دیگر لو‬
‫برود‪ ،‬با تغییر کلید رمز جلوی ضرر گرفته می شود ولی افشای جزئیات یک‬
‫سیستم و نفوذ در آن‪ ،‬هیچ چیزی در آن باقی نمی گذارد و تنها راه‪ ،‬تغییر سریع‬
‫سیستم رمزنگاری است‪ .‬البته این تغییر هرگز در زمان کوتاه و به راحتی امکان‬
‫پذیر نمی باشد‪.‬‬
‫‪ ‬هرگاه روش ی برای سال ها در معرض افکار پژوهشگران و متخصصان این فن‬
‫باشد‪ ،‬با روش های علمی و عملی به چالش کشیده شود و هیچ تالش ی در‬
‫شکستن آن به ثمر نرسد‪ ،‬می توان فقط احتمال داد که روش به قدر کافی‬
‫محکم و امن بوده است‪.‬‬
‫‪7‬‬
‫طبقهبندي الگوريتمهاي رمزنگاري‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫الگوريتمهاي رمزنگاري به دو دستة "بر پاية كليد" و غيركليدي تقسيم ميشوند‬
‫الگوريتمهاي غیركليدي هم شامل توابع درهمسازي و روشهاي رمزنگاري كالسيك و سنتي‪.‬‬
‫دو دسته از الگوريتمهاي پنهانسازي برپايةكليد موجودند‪ :‬متقارن ‪ Symmetric‬و‬
‫ن (ياكليد عمومي)‪ .‬الگوريتمهاي متقارن براي ‪ encryption‬و ‪ decryption‬از‬
‫نا‌متقار ‌‬
‫يك كليد استفاده ميكنند در حاليكه الگوريتمهاي نامتقارن براي پنهان سازي وآشكار سازي‬
‫از كليدهاي متفاوت استفاده ميكنند‪.‬‬
‫الگوريتمهاي متقارن ميتوانند به دو دسته رمز‌كننده‌‌هاي جرياني‪ Stream cipher‬و‬
‫رمز‌كننده‌‌هاي بلوكي‪ block cipher‬تقسيم شوند‪ .‬رمز كنندههاي جرياني ميتوانند در‬
‫هر زمان يك بيت ًاز ‪ plaintext‬را رمزكنند‪ ،‬در حاليكه رمزكنندههاي بلوكي تعدادي‬
‫بيت ميگیرند (نوعا ‪ 64‬بيت در رمزكنندههاي پيشرفته) وآنها را به عنوان يك واحد جدا‬
‫رمز ميكنند‪.‬‬
8
‫‪9‬‬
‫حمله ‪Brute Force‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫تست کردن همه کلید های ممکن تا زمانی که تبدیل درست متن اصلی شده به متن‬
‫رمز شده بدست آید‪.‬‬
‫یک حمله پایه ای وابسته به طول کلید است‪.‬‬
‫فرض می شود که متن اصلی را در اختیار دارد‪.‬‬
10
Assuming 1E12
Decryptions / sec
10
‫‪11‬‬
‫رمزشكني و حمالت عليه سيستمهاي رمزنگاري‬
‫‪‬‬
‫حمالت عليه سيستمهاي رمزنگاري‪ ،‬روشهايي هستند كه رمزشكن ممكن است به كار ببرد‬
‫تا امنيت يك رمزكننده را بشكند يا به آن نفوذ كند‪ .‬هنوز طبقهبندي سراسري براي اين‬
‫روشها وجود ندارد‪ .‬در حال حاضر‪ ،‬حمالت در درجة اول با میزان اطالعات در دسترس‬
‫حملهكننده يا محدوديتهاي روي حمله و سپس با استراتژيهايي كه از اطالعات در‬
‫دسترس استفاده ميكنند‪ ،‬دستهبندي ميشوند‪.‬‬
‫‪.1‬‬
‫حمله ‪Ciphertext-only‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫وضعيتي است كه حملهكننده چیزي دربارة محتويات پيام نميداند و بايد فقط از ‪ Ciphertext‬به‬
‫آن پي ببرد‪.‬‬
‫در عمل‪ ،‬ممكن است كه دربارة ‪ Plaintext‬بتوان حدسهايي زد‪ ،‬چرا كه انواع زيادي از پيامها‬
‫داراي سرآيند با شكل ثابتي هستند‪ .‬هنوز هم نامههاي معمولي و اسناد به طريق قابل پيشبيني شروع‬
‫ميشوند‪.‬‬
‫براي مثال‪ ،‬حمالت كالسيك زيادي از تحليل فركانس ي ‪ Ciphertext‬استفاده ميكنند‪ ،‬هر چند كه‪،‬‬
‫اين روش در برابر رمزكنندههاي پيشرفتة خوب كارآمد نيست‪ .‬سيستمهاي رمزنگاري پيشرفته در برابر‬
‫حمالت ‪ Ciphertext-only‬ضعيف نيستند‪ ،‬چراكه گاهي اوقات آنها با فرض اضافهشدهاي كه‬
‫پيام حاوي بعض ي خصوصيات آماري ميباشد در نظر گرفته ميشوند‪.‬‬
‫‪12‬‬
‫‪.2‬‬
‫حملة ‪Known-Plaintext‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪.3‬‬
‫در اين وضعيت‪ ،‬حملهكننده ميداند يا ميتواند ‪ Plaintext‬را براي بعض ي بخشهاي‬
‫‪ Ciphertext‬حدس بزند‪.‬‬
‫كار رمزگشايي باقيماندة بلوكهاي ‪ Ciphertext‬با استفاده از اين اطالعات صورت ميگیرد‪.‬‬
‫اين کار ممكن است به وسيله تشخيص كليد مورد استفاده براي رمزكردن داده‪ ،‬يا از طريق تعدادي‬
‫ميانبر انجام شود‪.‬‬
‫يكي از بهترين حمالت شناختهشدة مدرن ‪ Known-plaintext‬رمزشكني خطي عليه‬
‫رمزكنندههاي بلوكي ميباشد‪.‬‬
‫حملة ‪Chosen-Plaintext‬‬
‫‪‬‬
‫در اين حالت‪ ،‬حملهكننده قادر به داشتن رمزشدة هر متن دلخواه با كليد ناشناخته ميباشد‪.‬‬
‫‪‬‬
‫عمل الزم‪ ،‬مشخصكردن كليد استفاده شده براي رمزكردن ميباشد‪.‬‬
‫‪‬‬
‫يك مثال از اين حمله "رمزشكني تفاضلي" ‪Differential Cryptanalysis‬است كه ميتواند‬
‫عليه رمزكنندههاي بلوكي به كار گرفته شود (و در بعض ي حاالت عليه توابع درهمسازي نیز استفاده‬
‫ميشود)‪.‬‬
‫‪‬‬
‫بعض ي سيستمهاي رمزنگاري‪ ،‬بهطورمشخص ‪ ،RSA‬نسبت به حمالت ‪Chosen-Plaintext‬‬
‫آسيبپذير هستند‪.‬‬
‫‪13‬‬
‫‪.4‬‬
‫حملة ‪Man-in-the-middle‬‬
‫‪ ‬اين حمله مربوط به ارتباطات رمزنگاري و قراردادهاي مبادلة كليد ميباشد‪.‬‬
‫‪ ‬ايده اين است كه هنگاميكه دو طرف ‪ A‬و ‪ B‬در حال مبادلة كليد براي ارتباط امن‬
‫ً‬
‫ميباشند (مثال با استفاده از ‪)Diffie-Hellman‬؛ دشمن خودش را روي خط‬
‫ارتباطي بین ‪ A‬و ‪ B‬قرار ميدهد‪ .‬دشمن سپس سيگنالهايي را كه ‪ A‬و ‪ B‬به يكديگر‬
‫ميفرستند قطع ميكند و يك مبادلة كليد به صورت جداگانه با ‪ A‬و ‪ B‬انجام‬
‫ميدهد‪.‬‬
‫‪ A ‬و ‪ B‬به كار خود خاتمه ميدهند در حاليكه از دو كليد متفاوت استفاده ميكنند‬
‫كه هر كدام نزد دشمن شناخته شدهاست‪ .‬دشمن سپس ميتواند هر ارتباطي از ‪ A‬را‬
‫با كليدي كه با ‪ A‬مشترك است رمزگشايي كند و مكاتبه را با رمزكردن آن با كليدي‬
‫كه با ‪ B‬به اشتراك گذاشته است‪ ،‬به ‪ B‬بفرستد‪ .‬هر دوي ‪ A‬و ‪ B‬فكر خواهند كرد‬
‫كه آنها به صورت امن در حال مكاتبه هستند‪ ،‬اما درحقيقت دشمن همه چیز را در‬
‫كنترل خود آورده است‪.‬‬
‫‪ ‬راه معمول براي جلوگیري از حملة ‪ ،Man-in-the-middle‬استفاده از يك‬
‫سيستم رمزنگاري كليد عمومي با توانايي ارائه امضاهاي ديجيتالي ميباشد‪.‬‬
‫‪14‬‬
‫‪ .5‬حمله عليه سختافزار زير اليه‬
‫‪ ‬در چند سال اخیر از آنجاييكه"وسايل رمزنگاري متحرك" ‪Mobile crypto‬‬
‫استفادة وسيع قرار گرفتهاند‪ ،‬يك دستة جديد‬
‫‪devices‬كوچك و كوچكتر‪ ،‬مورد ً‬
‫از حمالت ظهور پيدا كردهاند كه مستقيما پيادهسازي سختافزاري سيستم رمزنگاري‬
‫را هدفگیري ميكنند‪.‬‬
‫‪ ‬حمالت از دادههايي كه از اندازهگیريهاي خيلي ظريف از وسيلة مزبور در زمانهاي‬
‫ً‬
‫مشخص‪ ،‬مثال در زمان رمزكردن بدست ميآيد استفاده ميكنند و اطالعات كليد را از‬
‫اين اندازهگیريها محاسبه ميكنند‪.‬‬
‫‪ .6‬نقص و خرابی در سيستمهاي رمزنگاري ‪Faults in cryptosystems‬‬
‫‪" ‬نقص در سيستمهاي رمزنگاري" ميتواند منجر به رمزشكني و حتي افشاي كليد‬
‫محرمانه گردند‪.‬‬
‫‪ ‬اين مساله روشن شده است كه بعض ي الگوريتمها با ايجاد نقصهاي كوچك در‬
‫محاسبات داخلي بد رفتار ميكنند‪ .‬به عنوان مثال‪ ،‬در پيادهسازي معمول ‪،RSA‬‬
‫اعمال مربوط به كليد خصوص ي‪ ،‬در برابر اين دسته از حمالت آسيبپذير ميباشد‪.‬‬
‫نشان داده شدهاست كه با ايجاد يك بيت خطا در مكان مناسب ميتوان تجزية پيمانه‬
‫را کشف كرد (بدينوسيله كليد خصوص ي هم آشكار ميشود)‪.‬‬
‫‪15‬‬
‫استراتژيهاي حمله‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪( Brute-Force‬همچنین "جستجوي كليد سراسري" ‪Exhaustive‬‬
‫‪)key search‬‬
‫‪( Codebook‬مفهوم "شكستن كد" ‪Codebreaking‬كالسيك)‪ .‬در‬
‫اين حمله‪ ،‬دشمن سعي ميكند كه يك ليست يا يك كتاب از تمام تبديالت‬
‫ممكن بین ‪ Plaintext‬و ‪ Ciphertext‬با يك كليد مجزا ايجاد كند‪ .‬يك‬
‫راه مقابله داشتن اندازة بلوك بزرگ ميباشد‪.‬‬
‫شكستن رمز تفاضلي ‪ :Differential cryptanalysis‬در اين استراتژي‬
‫هدف‪ ،‬يافتن تشابه آماري بین مقادير كليد و تبديالت رمزكننده ميباشد‪.‬‬
‫شكستنرمز خطي ‪ :Linear cryptanalysis‬هدف‪ ،‬يافتن يك تخمین‬
‫خطي براي ‪ S-box‬هاي موجود در رمزكننده و استفاده از آن براي يافتن‬
‫كليد ميباشد‪.‬‬
‫‪Meet-in-the-Middle‬‬
‫‪16‬‬
‫استراتژيهاي حمله‬
‫‪.6‬‬
‫‪.7‬‬
‫‪.8‬‬
‫‪.9‬‬
‫‪.10‬‬
‫‪ :Key Schedule‬انتخاب كليدهايي كه تأثیرات معلومي را در مراحل مختلف‬
‫رمزكردن بهجاي ميگذارند‪.‬‬
‫ً‬
‫‪( Birthday‬معموال يك حمله عليه ‪ :)hash‬با استفاده از پارادوكس روز تولد انجام‬
‫ميشود‪ ،‬ايده اين است كه يافتن دو مقدار كه با هم تطبيق داشته باشند از يافتن تطبيق‬
‫با يك مقدار مشخص‪ ،‬سادهتر است‪ .‬پارادوكس اصلي بدين صورت ميباشد كه در يك‬
‫كالس درس تنها با ‪ 23‬دانشآموز با احتمال ‪ 50‬درصد‪ ،‬حداقل ‪ 2‬نفر متولد يك روز‬
‫هستند‪.‬‬
‫تشابه ‪Correlation‬‬
‫‪ :Dictionary‬از يك ليست با كليدهاي خيلي محتمل‪ ،‬سعي در يافتن كليد ًمورد نظر‬
‫صورت ميگیرد (درواقع يك راه براي بهبود ‪ Brute-force‬ميباشد)‪ .‬معموال براي يافتن‬
‫يك كلمة عبور استفاده ميشود بدين نحوكه يك فرهنگ از كلمههاي عبور متداول‪،‬‬
‫ايجاد شده و روي آن ‪ Brute-Force‬انجام ميشود‪.‬‬
‫‪ :Replay‬تعدادي از بلوكها يا پيامهاي ‪ Ciphertext‬ضبط و ذخیره ميگردد و‬
‫سپس در زمان مناسب دوباره فرستاده ميشود‪.‬‬
‫‪17‬‬
‫‪‬‬
‫امنیت غير مشروط‬
‫‪‬‬
‫امنیت محاسباتی‬
‫‪ ‬رمزنگاری در صورتی امنیت غیر مشروط است که متن رمزشده تولید شده‬
‫شامل اطالعات کافی برای پیدا کردن متن اصلی نباشد‪ .‬اهمیتی ندارد که چه‬
‫حدی از متن رمزشده در اختیار باشد یا چقدر محاسبات الزم است‪ ،‬در هز‬
‫صورت امکان پیدا کردن متن اصلی نباشد‪.‬‬
‫‪ ‬اگر بدون توجه به میزان قدرت پردازش ی در دسترس ‪ ،‬نتوان الگوریتم رمز را‬
‫شکست‪ .‬زیرا متن رمز شده اطالعات کافی برای بدست آوردن متن اصلی را نمی‬
‫دهد‪.‬‬
‫‪ ‬بجز الگوریتم ‪ one-time pad‬هیچ الگوریتم رمزی امنیت غیر مشروطی‬
‫وجود ندارد‪.‬‬
‫‪ ‬با توجه به منابع محاسباتی محدود (بطور مثال زمان مورد نیاز برای شکستن رمز‬
‫بیشتر از عمر جهان باشد) الگوریتم رمز نمی تواند شکسته شود‪.‬‬
‫‪18‬‬
‫کاربرد رمزنگاری‬
‫ً‬
‫عموما الگوريتمهاي متقارن براي اجرا شدن روي يك كامپيوترخيلي سريعتر از انواع نامتقارن‬
‫هستند‪.‬‬
‫ً‬
‫در عمل‪ ،‬اين الگوريتمها غالبا با همديگر استفاده ميشوند‪ .‬بدين ترتيب که يك الگوريتم كليد‬
‫عمومي مورد استفاده قرار ميگیرد تا يك كليد رمزنگاري تصادفي را رمزكند و كليد تصادفي‬
‫مورد استفاده قرار ميگیرد تا پيام حقيقي (واقعي) را با استفاده از يك الگوريتم متقارن‬
‫رمزكند‪ .‬اين عمل گاهي رمز كردن پيوندي يا تركيبي ناميده ميشود‪.‬‬
‫رمزنگاري عالوه بر محرمانگي ‪ ،Confidentiality‬همچنین ميتواند خواص امنيتي زير را‬
‫فراهم كند‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫تصديق ‪ : Authentication‬به طرفي كه اطالعات را ميفرستد اعتبار و رسميت ميدهد‪.‬‬
‫جامعيت ‪ :Integrity‬اطمينان ميدهد كه اطالعات در هنگام انتقال تغيیر نيافته است‪.‬‬
‫عدم انكار ‪ :Non-Repudiation‬مانع از انكار يك طرف كه پيامي فرستاده يا عملي را انجام داده‬
‫است‪ ،‬ميشود‪.‬‬
‫‪19‬‬
‫مديريت كليد‬
‫‪ ‬بسياري از حمالت عليه الگوريتمهاي متقارن و نامتقارن بر روي مديريت كليد انجام‬
‫ميگیرد‪ .‬مديريت كليد شامل عمليات توليد‪ ،‬انتقال و نگهداري كليد ميباشد و نگهداري‬
‫كليد شامل عمليات بروزرساني‪ ،‬ذخیره و پشتيبانگیري از كليد ميباشد‪.‬‬
‫توليد كليد‬
‫‪ ‬براي توليد كليد به صورت تصادفي‪ ،‬بهترين روش‪ ،‬استفاده از "مولدهاي اعداد‬
‫شبهتصادفي" ميباشد‪ .‬اين مولدها توابع يكطرفهاي ميباشند كه از يك عدد تصادفي‬
‫كوچك‪ ،‬رشتة تصادفي بزرگتري ميسازند؛ بهنحويكه حدسزدن عدد تصادفي توليد شده‬
‫بسيار مشكل ميباشد‪ .‬استاندارد ‪(ANSI X9.17‬تجديدنظرشده) يك روش براي توليد‬
‫كليدهاي تصادفي درون يك سيستم پيشنهاد نمودهاست‪ .‬در اين روش‪ ،‬از الگوريتم رمزنگاري‬
‫‪ DES‬استفاده ميشود‬
‫‪20‬‬
‫انتقال كليد‬
‫‪ ‬در الگوريتمهاي متقارن‪ ،‬كليد توليد شده بايد به صورت امن به طرف مقابل انتقال‬
‫يابد‪.‬‬
‫‪ ‬از روشهاي معمول انتقال كليدهاي الگوريتمهاي متقارن استفاده از الگوريتمهاي‬
‫نامتقارن و روش رمزنگاري كوانتومي ميباشد‪.‬‬
‫‪ ‬رمزنگاري كوانتمي در مراحل تحقيقاتي و آزمايشگاهي قرار دارد‪ .‬اين رمزنگاري بر اساس‬
‫قوانین كوانتوم استوار است و تضمین ميكند كه كليد منتقلشده با استفاده از اين‬
‫روش‪ ،‬قابل كشف توسط شخص سومي نيست‪.‬‬
‫‪ ‬الگوريتمهاي نامتقارن نیز يكي از روشهاي انتقال كليد ميباشند‪ ،‬با استفاده از كليد‬
‫عمومي طرف مقابل‪ ،‬دادهها رمز و فرستاده ميشوند‪.‬‬
‫‪ ‬يك راهحل‪ ،‬تكهتكهكردن كليد و فرستادن جداگانة هريك از قسمتها بر روي كانالهاي‬
‫متفاوت است؛ براي مثال يك بخش بر روي خط تلفن‪ ،‬يك بخش توسط نامة‬
‫الكترونيكي و بخش ي نیز ميتواند توسط پست انتقال يابد‪.‬‬
‫‪21‬‬
‫تاييد صحت كليد‬
‫‪ ‬طرف دريافتكنندة كليد‪ ،‬بايد از صحت كليد منتقلشده اطمينان يابد‪.‬‬
‫‪ ‬رمزنگاري كوانتومي قراردادهايي را براي بررس ي صحت كليد منتقلشده دارد‪.‬‬
‫‪ ‬در الگوريتمهاي نامتقارن‪ ،‬شخص رمزكنندة كليد بايد به صحت كليد عمومي طرف‬
‫مقابل اطمينان يابد كه اين كار از طريق ‪ CA‬امكانپذير است‪.‬‬
‫‪ ‬طرف دريافتكنندة كليد نیز بايد به صحت فرستندة آن مطمئن باشد‪ .‬دراين حالت‪،‬‬
‫شخص رمزكننده ميتواند از امضاي ديجيتالي استفاده كند‪.‬‬
‫‪ ‬براي بررس ي خطاهاي انتقال نیز ميتوان از توابع درهمسازي استفاده نمود‪.‬‬
‫‪22‬‬
‫نگهداري كليد‬
‫‪ ‬بعد از مرحلة انتقال‪ ،‬كليدها در سيستم بايد بهدرستي نگهداري شوند‪.‬‬
‫‪ ‬نگهداري صحيح شامل بهروزرساني بهموقع كليدها‪ ،‬ذخیرة امن آنها و پشتيبانگیري از‬
‫كليدها ميباشد‪.‬‬
‫‪ ‬بهروزرساني كليد به معني تغيیر كليد با استفاده از يك فرآيند غیرقابل برگشت‬
‫ميباشد‪ .‬براي اين كار‪ ،‬يك تابع يكطرفه الزم است كه توسط آن بتوان از كليد قديمي‬
‫كليد جديد را بدست آورد‪ .‬امنيت كليد جديد به همان اندازة امنيت كليد قديمي‬
‫خواهد بود‪ .‬درحقيقت اگر طرف سومي به كليد قديمي دسترس ي داشته باشد‪ ،‬ميتواند‬
‫كليد جديد را نیز توليد كند‪.‬‬
‫‪ ‬ذخیرة كليد نیز بايد بهصورت امن‪ ،‬ممكن باشد‪ .‬امروزه كارتهاي هوشمند و حافظههاي‬
‫فقط‪-‬خواندني كه بخش ي از كليد را حمل ميكنند‪ ،‬ابزارهاي مطمئني براي ذخیرة‬
‫كليدها هستند‪.‬‬
‫‪23‬‬
‫رمزكنندههاي بلوكي‬
‫‪‬‬
‫يك دستة بسيار مهم از الگوريتمهاي رمزنگاري‪" ،‬رمزكنندههاي بلوكي" ‪Block‬‬
‫ً‬
‫‪Ciphers‬ميباشند‪ .‬اين رمزكنندهها در هر زمان‪ ،‬تعدادي بيت ميگیرند (نوعا ‪ 64‬بيت‬
‫در رمزكنندههاي پيشرفته) وآنها را به عنوان يك واحد مستقل رمز ميكنند‪ .‬در شكل زير‬
‫چگونگي استفاده از رمز نگاري متقارن مشاهده ميشود‪.‬‬
‫‪24‬‬
‫مزايا و معايب رمزنگاري كليد متقارن‬
‫مزايا‪:‬‬
‫‪ ‬سريع ‌مي‌باشند‪.‬‬
‫‪ ‬به سادگي در سخت افزار پياده‌سازي ‌مي‌شوند‪.‬‬
‫‪ ‬به طور گسترده استفاده ‌مي‌شوند‪.‬‬
‫معايب‪:‬‬
‫‪‬‬
‫براي هر فرد تازه ‌وارد بايد يك كليد جديد توليد و نگهداري شود تا بتواند به مبادلة اطالعات بپردازد (‪n‬‬
‫نفر‪ 2-n)/2 (n‬كليد نياز دارند)‪.‬‬
‫كليد محرمانه بايد از طريق يك كانال مطمئن (امن) مبادله شود‪.‬‬
‫بايد كليد با طول ثابت استفاده شود‪.‬‬
‫در صورت استفاده از الگوريت ضعيف قابل شنود است‪.‬‬
‫تالش و ز‌‌حمت بيشتري براي تأييد فرستنده نياز است‪.‬‬
‫‪‬‬
‫به يك منطق ادارة‌كليد (‪ )key management‬نياز است‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪25‬‬
‫رمزكنندههاي جرياني ‪Stream Ciphers‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫"رمزكنندههاي جرياني" يك دستة مهم از الگوريتمهاي رمزنگاري متقارن ميباشند كه روي‬
‫يك بيت‪ ،‬بايت و يا كلمة (كامپيوتر) از پيام ‪ plaintext‬در يك زمان عمل ميكنند و به اين‬
‫دليل در كاربردهايي كه با يك جريان داده روبرو هستند مناسب ميباشند‪.‬‬
‫يك رمزكنندة جرياني شامل يك ماشین حالت است كه در هر گذر حالت يك بيت از‬
‫ً‬
‫ي‬
‫اطالعات را خارج ميكند‪ .‬اين جريان بيتهاي خروجي معموال "كليد جار " ‪Running‬‬
‫‪key‬يا "جريانكليد" ‪ Keystream‬ناميده ميشود‪.‬‬
‫عمل رمزكردن با ‪ XOR‬كردن جريانكليد و پيام ‪plaintext‬انجام می شود‪.‬‬
‫در اين رمزكنندهها تعدادي از مكانیزمهاي "پسخورد" (فيدبك) پيادهسازي ميشود‪ ،‬به‬
‫نحوي كه كليد به طور دائمي تغيیر ميكند‪ .‬بنابراين گفته ميشود كه رمزكنندههاي جرياني‬
‫حافظهدار هستند‪ .‬ماشین حالت بهكاررفته در اين رمزكنندهها مانند يك مولد اعداد‬
‫شبهتصادفي است‪ .‬هر چه اعداد تصادفي بهتر و نزديك به واقعيت توليد شوند‪ ،‬رمزكنندة‬
‫جرياني استفادهكننده از آن نیز امنتر خواهد بود‪.‬‬
‫‪26‬‬
‫الگوریتم های رمزنگاری کالسیک‬
‫‪ ‬حروف متن اصلی با حروف دیگر یا اعداد یا سمبل های دیگری‬
‫جایگزین می شود‪.‬‬
‫‪ ‬اگر متن اصلی به صورت ترتیبی از بیت ها ظاهر شود‪ ،‬ترتیب بیت ها‬
‫در متن اصلی با ترتیب بیت های رمز شده جایگزین می شود‪.‬‬
‫‪27‬‬
‫الگوریتم رمزنگاری ‪Caesar‬‬
‫‪‬‬
‫‪‬‬
‫حروف متن اصلی با حروف دیگر یا اعداد یا سمبل های دیگری جایگزین می شود‪.‬‬
‫در ‪ Caesar‬هر حرف از حروف الفبا با سه حرف جلوتر در حروف الفبا جایگزین می‬
‫شود‪ .‬برای مثال‪:‬‬
‫‪j‬‬
‫‪k l m n o p q r s t u v‬‬
‫‪w x y z‬‬
‫‪d e f g h i j k l m n o p q r s t u v w x y‬‬
‫‪z a b c‬‬
‫پیام اصلی ‪:‬‬
‫متن رمز شده‪:‬‬
‫‪phhw‬‬
‫‪me meet‬‬
‫‪a b c d e f g h i‬‬
‫‪party after‬‬
‫‪sduwb‬‬
‫‪toga‬‬
‫‪the‬‬
‫‪diwhu wkh wrjd‬‬
‫‪ph‬‬
‫‪28‬‬
‫الگوریتم رمزنگاری ‪Caesar‬‬
‫‪‬‬
‫اگر به هر حرف مقداری عددی انتساب داده شود(‪ ،)a=0, b=1,.., z=25‬می‬
‫توان الگوریتم را به صورت زیر نشان داد‪:‬‬
‫‪C= E(P)= (p+3) modulo 26‬‬
‫بصورتی که ‪ p‬بیان گر حرفی (عددی بین ‪ 0‬تا ‪ )25‬و )‪ C=E(P‬برابر با متن رمزشده‬
‫معادل آن است‪.‬‬
‫الگوریتم رمزگشایی به صورت زیر است‪:‬‬
‫‪P=D(C)=(C-3) modulo 26.‬‬
29
Caesar ‫الگوریتم رمزنگاری‬
:‫ انتقال انجام شده‬
a b c d e f g h i j k l m n o p q r s t u v w x y z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
:‫ انتساب عدد به هر حرف‬
a b c d e f g h i j k l m
0 1 2 3 4 5 6 7 8 9 10 11 12
n o p q r s t u v w x y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
:‫ الگوریتم رمزنگاری جایگذاری تک حرفی‬
C = E(P) = (P + k) mod (26)
p = D(C) = (C – k) mod (26)
‫‪30‬‬
‫شکستن الگوریتم ‪Caesar‬‬
‫‪ ‬تنها ‪ 26‬کلید ممکن وجود دارد!‬
‫‪ ‬حمله ‪brute force‬‬
‫‪ ‬با داشتن متن رمزشده میتوان همه جابجایی های را بررس ی کرد‪.‬‬
‫‪ ‬مثال‪ :‬متن رمز شده "‪ "GCUA VQ DTGCM‬را رمزگشایی‬
‫کنید‪.‬‬
‫‪31‬‬
‫الگوریتم رمزنگاری ‪Monoalphabetic‬‬
‫‪ ‬فراتر از فقط جابجایی حروف است‪.‬‬
‫‪ ‬ترتیب حروف را به صورت دلخواه به هم میزند‪.‬‬
‫‪ ‬هر حرف از متن اصلی به حرفی متفاوت از متن رمزشده نگاشت می‬
‫شود‪.‬‬
‫‪ ‬کلید رمزنگاری می تواند هر جایگشتی از ‪ 26‬حرف الفبا باشد‪.‬‬
A
T
B
H
C
E
D
I
E
L
F
S
G
A
H
R
I
V
J
B
K
C
L
D
M
F
N
G
O
J
P
K
Q
M
R
N
S
O
T
P
U
Q
V
U
W
W
X
X
Y
Y
Z
Z
32
“THE HILLS ARE ALIVE” :‫کلید‬
‫‪33‬‬
‫امنیت الگوریتم رمزنگاری ‪Monoalphabetic‬‬
‫‪‬‬
‫در این حالت تعداد کلیدهای ممکن برایر زیر است‪:‬‬
‫‪26! = 403291461126605635584000000 keys‬‬
‫‪=4 x E26 Keys‬‬
‫‪‬‬
‫اما باز هم با داشتن این تعداد کلید امنیت کافی برقرار نمی شود‪.‬‬
‫‪‬‬
‫مشکل خصوصیات زبان است‬
‫‪34‬‬
‫تکرار حروف و شکستن رمز‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫میزان استفاده از حروف الفبایی یکسان نیست‪.‬‬
‫در زبان انکلیس ی حرف ‪ e‬بیش از همه حروف کاربرد دارد‪.‬‬
‫و سپس حروف پرکاربرد دیگر عبارتند از ‪ A ،O ،I ،N ،R ،T‬و ‪S‬‬
‫سایرحروف به ندرت استفاده می شوند‪.‬‬
‫‪ Q ،K ،J ،Z‬و ‪X‬‬
‫می توان جدولی از فرکانس استفاده تکی‪ ،‬دوتایی و سه تایی از حروف تهیه‬
‫کرد‪.‬‬
‫‪35‬‬
‫فرکانس استفاده از حروف زبان انگلیس ی‬
‫‪36‬‬
‫استفاده در شکستن رمز‬
‫‪ ‬جایگزینی در ‪ monoalphabetic‬تغییری در فرکانس استفاده‬
‫حروف ایجاد نمی کند‪.‬‬
‫‪ ‬محاسبه فرکانس ظهور حروف استفاده در متن رمزشده‬
‫‪ ‬مقایسه فرکانس با مقادیر‬
‫‪ ‬جدول حروف دوتایی و سه تایی کمک می کند‪.‬‬
‫مثالی از شکستن رمز‬
:‫متن رمزشده‬

UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZ
VUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSX
EPYEPOPDZSZUFPOMBZWPFUPZHMDJUDTMOHMQ
‫فرکانس استفاده از حروف را محاسبه کنید‬

P 13.33
H 5.83
F 3.33
B 1.67
C 0.00
Z 11.67
D 5.00
W 3.33
G 1.67
K 0.00
S 8.33
E 5.00
Q 2.50
Y 1.67
L 0.00
U 8.33
V 4.17
T 2.50
I 0.83
N 0.00
O 7.50
X 4.17
A 1.67
J 0.83
R 0.00
M 6.67
37
‫‪38‬‬
‫مثالی از شکستن رمز‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫به نظر می رسد ‪ P‬و ‪ Z‬به جای ‪ e‬و ‪ t‬قرار گرفته اند‬
‫به نظر می رسد ‪ ZW‬به جای ‪ th‬و در نتیجه ‪ ZWP‬به جای ‪the‬‬
‫استفاده شده است‪.‬‬
‫با روش آزمون و خطا متن زیر بدست می آید‪:‬‬
‫‪it was disclosed yesterday that several‬‬
‫‪informal but‬‬
‫‪direct contacts have been made with political‬‬
‫‪representatives of the vietcong in moscow‬‬
‫‪‬‬
‫شکستن رمزنگاری ‪ Monoalphabetic‬بیان کننده فرکانس استفاده از حروف‬
‫بوده وبه همین دلیل شکستن آن ساده می باشد‪.‬‬
‫‪39‬‬
‫ساختار الگوریتم رمزنگاری ‪Feistel‬‬
‫ً‬
‫عموما همه رمزکننده های بلوکی دارای ساختاری هستند که اولین بار توسط ‪ H. Feistel‬از ‪IBM‬‬
‫در سال ‪ 1973‬مطرح شد‬
‫پارامترها‬
‫• سایز بلوک‪ :‬هرچه سایز بلوک بزرگ تر باشد(بقیه پارامترها ثابت هستند) امنیت بیشتر می‬
‫شود‪ ،‬اما سرعت رمزگشایی و رمزنگاری کاهش پیدا می کند‪ .‬سایز بلوک ‪ 64‬بیتی‪ ،‬سایز منطقی‬
‫است‪.‬‬
‫• سایز کلید‪ :‬هرچه سایز کلید بزرگ تر باشد‪ ،‬امنیت بیشتر می شود‪ ،‬اما ممکن است سرعت‬
‫رمزنگاری و رمزگشایی کاهش پیدا کند‪ .‬طول کلید معمول در الگوریتم مدرن ‪ 128‬بیت است‪.‬‬
‫• تعداد دورها‪ :‬ایده اصلی در رمزنگاری ‪ Feistel‬این است که یک دور الگوریتم امنیت کافی‬
‫بوجود نمی آورد‪ ،‬اما استفاده از چندین دور امنیت را افزایش می دهد‪ .‬تعدا دور متداول ‪16‬‬
‫دور است‪.‬‬
40
(+)
(+)
(+)
‫‪41‬‬
‫ساختار الگوریتم رمزنگاری ‪Feistel‬‬
‫الگوریتم تولید زیرکلید‪ :‬پیچیدگی بیشتر در این الگوریتم‪ ،‬شکستن رمز را مشکل تر می کند‪.‬‬
‫پروسه رمزگشایی‪ :‬متن رمزشده به عنوان وردی به الگوریتم وارد می شود‪ .‬اما زیرکلید ها با‬
‫ترتیب معکوس استفاده می شوند به این صورت که ‪ Kn‬در مرحله اول و درمرحله دوم و در پایان در‬
‫آخرین دور استفاده می شود‪.‬‬
‫‪42‬‬
‫ساختار رمزهای فیستل‬
‫‪‬‬
‫‪‬‬
‫معموال الگوریتمهای رمزنگاری از ساختاری تبعیت می کنند که‬
‫توسط فیستل در سال ‪ 1973‬در ‪ IBM‬پیشنهاد شد‪.‬‬
‫رمزهای فیستل به انتخاب پارامترهای زیر بستگی دارند‬
‫‪43‬‬
‫ساختار رمزهای فیستل‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫طول قطعه (بلوک)‬
‫طول کلید‬
‫تعداد دورها‬
‫الگوریتم تولید زیرکلیدها‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫هر چه پیچیده تر باشد‪ ،‬تحلیل هم سخت تر می شود‪.‬‬
‫سرعت رمزنگاری‪/‬رمزگشایی‬
‫تابع دور )‪(Round function‬‬
‫سادگی تحلیل‬
44
‫‪45‬‬
‫مکان دستگاه های رمزنگاری‬
‫‪‬‬
‫‪‬‬
‫قوی ترین و معمول ترین رویکرد در مقابله با حمالت رمزنگاری‬
‫است‬
‫در راستای استفاده از رمزنگاری باید بدانیم چه چیزی رمز می‬
‫شود و پروسه رمزنگاری در کجا اتفاق می افتد‪ .‬دو راه حل وجود‬
‫دارد‪:‬‬
‫‪ .1‬رمزنگاری لینک‬
‫‪ .2‬رمزنگاری انتها به انتها‬
46
‫‪47‬‬
‫رمزنگاری لینک‬
‫در انتهای هر سمت لینک آسیب پذیر‪ ،‬دستگاه رمزنگاری وجود دارد‪.‬‬
‫‪ ‬کل ترافیک بر روی لینک امن است‪.‬‬
‫‪ ‬این رویکرد در شبکه های بزرگ نیاز به تعداد زیادی دستگاه های رمزنگاری‬
‫دارد‪.‬‬
‫‪ ‬هر پیام با رسیدن به سوییچ باید رمزگشایی شود‪ .‬بدلیل اینکه هر سوییچ باید‬
‫آدرس مبدا و مقصد را از ‪ header‬بسته برای مسیریابی بسته استخراج‬
‫کند‪ ،‬بسته در سوییچ باید رمزگشایی شود‪ .‬در نتیجه پیام در سوییچ آسیب‬
‫پذیر است‪.‬‬
‫‪48‬‬
‫رمزنگاری انتها به انتها‬
‫‪ ‬پروسه رمزنگاری در دو سیستم انتهایی انجام می شود‪.‬‬
‫‪ ‬این راه حل امنیت داده های کاربر را تضمین می کند‪.‬‬
‫‪ ‬البته از الگوی ترافیکی حفاظت نمی شود‪ ،‬زیرا ‪header‬‬
‫بسته بصورت متن ساده ارسال می شود‪.‬‬
‫‪49‬‬
‫‪ ‬چندین رمزکننده های بلوکی متقارن مهم‬
‫‪DES ‬‬
‫‪IDEA ‬‬
‫‪RC5 ‬‬
‫‪RC6 ‬‬
‫‪AES ‬‬
‫‪50‬‬
‫‪DES‬‬
‫‪‬‬
‫‪ DES‬داده های ‪ 64‬بیتی را به عنوان ورودی گرفته و با‬
‫استفاده از کلید ‪ 56‬بیتی در ‪ 16‬دور بلوک های ‪ 64‬بیتی رمزشده را‬
‫در خروجی تولید می کند‪.‬‬
‫‪51‬‬
‫‪.1‬‬
‫بر روی بلوک پیام اصلی جایگشت اولیه (‪ )IP‬انجام می شود و ‪ L0,R0‬را‬
‫تولید می کند‪.‬‬
‫‪.2‬‬
‫‪ L0,R0‬از ‪ 16‬مرحله جایگشت وجانشینی و ‪ XOR‬عبور می کند‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪.3‬‬
‫خروجی هر دور در رمزنگاری‪:‬‬
‫‪‬‬
‫‪Li = Ri−1‬‬
‫‪‬‬
‫)‪Ri = Li−1 ⊕ f (Ri−1,Ki‬‬
‫خروجی هر دور در رمزگشایی‪:‬‬
‫‪‬‬
‫‪Ri−1 = Li‬‬
‫‪‬‬
‫) ‪Li−1 = Ri ⊕ f (Ri−1,Ki) = Ri ⊕ f (Li,Ki‬‬
‫جایگشت معکوس (‪ )IP-1‬بر روی خروجی آخرین دور انجام شده و پیام‬
‫رمزشده تولید شود‪.‬‬
52
53
‫‪54‬‬
‫تولید کلید‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫با در نظر نگرفتن بیت های هشتم از کلید ‪ 64‬بیتی‪ ،‬کلید ‪ 56‬بیتی ایجاد می‬
‫شود‪(. )k8,k16,k24,k32,k40,k48,k56,k64(.‬جدول ‪)3.1‬‬
‫کلید ‪ 56‬بیتی به دو نیمه ‪ 32‬بیتی تقسیم شده‪ ،‬سپس بر اساس شماره دور‪ ،‬هر نیمه‬
‫یک یا دو واحد به چپ شیفت داده می شود(جدول ‪ )3.2‬وهر نیمه (‪1 ≤ i ≤ )Ci,Di‬‬
‫‪ ،16‬به عنوان ورودی به دور بعد وارد می شود‪.‬‬
‫نیمه های )‪ (Ci,Di‬بهم متصل شده و بر روی آنها جایگشت ‪(PC2‬جدول ‪ )3.3‬انجام‬
‫می شود که نتیجه آن کلیدی ‪ 48‬بیتی است‪)K1, K2, . . . , K16(.‬‬
‫در نهایت برای هر یک از ‪ 16‬دور در ‪ ،DES‬یک کلید متفاوت ‪ 48‬بیتی تولید می شود‪.‬‬
‫هر کلید برای رمزنگاری در یک دور به کار میرود‪.‬‬
‫‪55‬‬
‫مثال‬
‫‪.1‬‬
‫کلید ‪ 64‬بیتی ورودی شامل ‪ 8‬بیت توازن‬
‫‪.2‬‬
‫محتوای رجیستر بر اساس جدول ‪: 3.1‬‬
‫‪C0 = bcd1a45 D0 = d22e87f‬‬
‫‪.3‬‬
‫با انجام عمل شیفت به چپ بر روی ‪C0‬و ِ‪ D0‬داریم‪:‬‬
‫‪C1 = 79a348b D1 = a45d0ff‬‬
‫‪.4‬‬
‫با ورود بلوک )‪ (C1||D1‬به جدول ‪ 3.3‬داریم‪:‬‬
‫‪K1 = 27a169e58dda‬‬
‫‪.5‬‬
‫از شیفت یک بیت به چپ ‪ C1||D1‬داریم‪:‬‬
‫‪.6‬‬
‫بر اساس جدول ‪ 3.3‬در دور دوم داریم‪:‬‬
‫‪.7‬‬
‫از شیفت یک بیت به چپ ‪ C2||D2‬داریم‪:‬‬
‫‪.8‬‬
‫بر اساس جدول ‪ 3.3‬در دور سوم داریم‪:‬‬
‫‪K = 581fbc94d3a452ea‬‬
‫‪(C2||D2) = f346916 48ba1ff‬‬
‫‪K2 = da91ddd7b748‬‬
‫‪(C3||D3) = cd1a456 22e87fd‬‬
‫‪K3 = 1dc24bf89768‬‬
‫‪K1 = 27a169e58dda K2 = da91ddd7b748 K3 = 1dc24bf89768 K4 = 2359ae58fe2e‬‬
‫‪K6 = 116e39a9787b K7 = c535b4a7fa32 K8 = d68ec5b50f76‬‬
‫‪K5 = b829c57c7cb8‬‬
‫‪K9 = e80d33d75314 K10 = e5aa2dd123ec K11 = 83b69cf0ba8d K12 = 7c1ef27236bf‬‬
‫‪K13 = f6f0483f39ab K14 = 0ac756267973 K15 = 6c591f67a976 K16 = 4f57a0c6c35b‬‬
56
57
‫‪58‬‬
‫رمزنگاری در ‪DES‬‬
‫‪.1‬‬
‫بر روی بلوک ‪ 64‬بیتی جایگشت اولیه(‪ )IP‬انجام می شود(جدول ‪ .)3.4‬سپس بلوک داده‬
‫به دو بلوک ‪ 32‬بیتی داده ‪ Li‬و ‪ Ri‬تقسیم می شود‪.‬‬
‫‪.2‬‬
‫‪ Ri‬به ‪ 48‬بیت بسط و جایگشت( )‪ ) E(Ri‬داده می شود‪(.‬جدول ‪)3.5‬‬
‫‪.3‬‬
‫کلید مرحله ای ‪ Ki‬با بلوک بسط داده شده از دور قبل ‪ XOR‬می شود‪ .‬بطوریکه‬
‫‪Γi=E(Ri-1) ⊕ Ki :1 ≤ i ≤ 15‬‬
‫‪.4‬‬
‫‪ 48‬بیت به ‪ 8‬تا ‪ Si-box‬وارد شده و ‪ 32‬بیت خروجی تولید میکند‪ 48.‬بیت به هشت‬
‫بلوک ‪ 6‬بیتی تقسیم می شود و هر بلوک وارد یک ‪ Si-box‬میشود‪ .‬هر ‪ Si-box‬یک‬
‫جدول حاوی ‪ 4‬سطر و ‪ 16‬ستون است‪(.‬جدول ‪)3.6‬‬
‫‪59‬‬
‫‪.5‬‬
‫اگر بلوک ‪ 6‬بیتی ورودی را با ‪ A‬نشان دهیم‪ Si(A) ،‬به این صورت‬
‫تعریف میشود‪ :‬اولین و آخرین بیت ‪ A‬بیانگر شماره سطر از ماتریس ‪ Si‬و ‪4‬‬
‫بیت میانی بیانگر شماره ستون از ماتریس ‪ Si‬است‪.‬‬
‫‪‬‬
‫‪.6‬‬
‫برای مثال با وردی (‪ )101110‬به ‪ ،S5‬اولین و آخرین بیت(‪ )10‬به معنای سطر‬
‫دوم و ‪ 4‬بیت میانی (‪ )0111‬به معنای ستون هفتم است و = )‪S510 (0111‬‬
‫))‪S52 (7) = 8 (hexadecimal‬‬
‫‪ 6‬تا چهار بیت خروجی ‪ S-box‬با هم ترکیب شده و ‪ Ωi‬را تولید می‬
‫کند‪.‬‬
‫‪60‬‬
‫‪.5‬‬
‫جایگشت جدول ‪ Ωi ،3.7‬را به )‪ P(Ωi‬نگاشت می کند‬
‫‪.6‬‬
‫)‪ P(Ωi‬با ‪ XOR ،Li‬شده‪ ،‬سپس جای ‪ Li‬و ‪ Ri‬با هم عوض‬
‫می شود‪.‬‬
‫‪.7‬‬
‫جایگشت معکوس جایگشت اولیه (‪ )IP-1‬طبق جدول ‪ 3.8‬انجام‬
‫می شود‪.‬‬
‫‪61‬‬
‫مثال‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫پیام اصلی ‪ 64‬بیتی ‪X = 3570e2f1ba4682c7‬‬
‫کلید ‪ 64‬بیتی از مثال قبل ‪K = 581fbc94d3a452ea‬‬
‫کلیدهای دوره اول و دوم از مثال قبل‬
‫‪‬‬
‫‪.1‬‬
‫‪K1 = 27a169e58dda , K2 = da91ddd76748‬‬
‫پیام اصلی ‪ X‬به دو بلوک ‪ L0‬و ‪ R0‬شکسته شده و بر اساس جدول ‪ 3.4‬روی آن جایگشت انجام می‬
‫شود‬
‫‪‬‬
‫‪L0 = ae1ba189 , R0 = dc1f10f4‬‬
‫دور اول‌‪:‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪ 32 R0‬بیتی بر اساس جدول ‪ 3.5‬به ) ‪ 48E(R0‬بیتی بسط داده می شود‪.‬‬
‫‪E(R0) = 6f80fe8a17a9 ‬‬
‫)‪ E(R0‬با کلید مرحله اول ‪ XOR‬می شود‪.‬‬
‫‪‬‬
‫‪Γ1 = E(R0) ⊕ K1= 4821976f9a73‬‬
‫‪62‬‬
‫‪ 48‬بیت ‪ Γ1‬به هشت بلوک ‪ 6‬بیتی تقسیم شده و وارد ‪ s-box‬می شود که خروجی‬
‫آن برابر ‪ Ω1= a1ec961c‬است‪.‬‬
‫‪.4‬‬
‫‪.5‬‬
‫مقدار جایگشت ‪ Ω1‬بر اساس جدول ‪ 3.7‬برابر با ‪ P(Ω1) = 2ba1536c‬است‪.‬‬
‫‪.6‬‬
‫‪R1 = P(Ω1) ⊕ L0 = 85baf2e5‬‬
‫‪.7‬‬
‫‪ L1 = R0‬بنابراین داریم‪L1 = dc1f10f4 :‬‬
‫دور دوم‪:‬‬
‫‪.8‬‬
‫‪ R1‬به ‪ E(R1)= c0bdf57a570b‬بسط داده می شود‪.‬‬
‫‪.9‬‬
‫)‪ E(R1‬با کلید دوره دوم ‪ XOR‬می شود‪.‬‬
‫•‬
‫‪Γ2 = E(R1) ⊕ K2 = 1a2c28ade043‬‬
‫‪63‬‬
‫‪.10‬‬
‫‪ Γ2‬وارد ‪ s-box‬شده و خروجی آن برابر ‪ Ω1= 1ebcebdf‬است‪.‬‬
‫‪.11‬‬
‫مقدار جایگشت ‪ Ω1‬بر اساس جدول ‪ 3.7‬برابر با ‪ P(Ω2) = 5f3e39f7‬است‪.‬‬
‫‪.12‬‬
‫‪R2 = P(Ω2) ⊕ L1 = 83212903‬‬
‫‪.13‬‬
‫‪L2 = R1 = 85baf2e5‬‬
‫‪.14‬‬
‫‪ L2‬و ‪ R2‬به هم متصل شده و بر اساس جدول جایگشت معکوس می شود‪.‬‬
‫•‬
‫‪Y = IP−1(R2||L2) = d7698224283e0aea‬‬
64
65
66
67
‫‪68‬‬
‫رمزگشایی در ‪DES‬‬
‫رمزگشایی در ‪ DES‬مشابه رمزنگاری است با این تفاوت که کلید های دوره‬
‫ای با ترتیب عکس استفاده میشوند‪K1,…,K15,K16 .‬‬
‫مثال‬
‫‪.1‬‬
‫رمزگشایی پیام رمز شده ‪( y=d7698224283e0aea‬از مثال قبل)‬
‫دور او ‌ل‪:‬‬
‫‪.2‬‬
‫بر اساس جدول ‪ y ،3.4‬به دو بلوک تقسیم شده‬
‫‪‬‬
‫‪.3‬‬
‫‪R2 = 83212903 L2 = 85baf2e5‬‬
‫بسط ‪ L2‬به ‪ E(L2)= c0bdf57a570b‬بر اساس جدول ‪3.5‬‬
‫‪69‬‬
‫‪.4‬‬
‫‪ XOR‬کردن )‪ E(L2‬با ‪K2‬‬
‫‪‬‬
‫‪.5‬‬
‫‪Γ2 = E(L2) ⊕ K2= 1a2c28ade043‬‬
‫ورود ‪ 48 Γ2‬بیتی به ‪ s-box‬و خروج ‪ 32 Ω2‬بیتی‬
‫‪‬‬
‫‪Ω2 = 1ebcebdf‬‬
‫بر اساس جدول ‪P(Ω2 ) = 5f3e39f7 3.7‬‬
‫‪.6‬‬
‫دور دوم‪:‬‬
‫‪ .7‬محاسبه ‪L1=P(Ω2 ) ⊕ R2 = dc1f10f4 ،L1‬‬
‫‪ .8‬بسط ‪ L1‬بر اساس جدول‪E(L1) = 6f80fe8a17a9 ،3.5‬‬
‫‪.9‬‬
‫‪ XOR‬کردن با کلید دوره اول‬
‫‪‬‬
‫‪Γ1 = E(L1) ⊕ K1= 4821976f9a73‬‬
‫‪70‬‬
‫‪.10‬‬
‫‪.11‬‬
‫‪.12‬‬
‫‪.13‬‬
‫‪.14‬‬
‫‪.15‬‬
‫ورود ‪ 48 Γ1‬بیتی به ‪ s-box‬و خروج ‪ 32 Ω1‬بیتی‬
‫‪Ω1 = a1ec961c ‬‬
‫بر اساس جدول ‪P(Ω1 ) = 2ba1536c 3.7‬‬
‫محاسبه ‪ L0‬و ‪، R0‬‬
‫‪ L0 = P(Ω1 ) ⊕ R1 = ae1ba189 ‬و ‪R0 = L1 = dc1f10f4‬‬
‫اتصال ‪ L0‬و‪R0‬‬
‫‪L0||R0 = ae1ba189dc1f10f4‬‬
‫اعمال جدول ‪ 3.8‬و محاسبه چایگشت معکوس‬
‫‪‬‬
‫‪X = IP−1(L0||R0)= 3570e2f1ba4682c7‬‬
‫‪71‬‬
‫استاندارد رمزگذاری داده ‪DES‬‬
‫‪‬‬
‫مرور‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫در سال ‪ 1974‬توسط ‪ IBM‬توليد شد‬
‫‪ ‬پس از انجام تغییراتی توسط ‪ ،NSA‬در سال ‪ NIST 1976‬آن را پذيرفت‪.‬‬
‫اساس الگوريتم تركيبي از عمليات جايگزيني و جایگشت ميباشد‪.‬‬
‫مشخصات‪:‬‬
‫‪ ‬طول كليد ‪ 56‬بيت‬
‫‪ ‬طول قطعههاي ورودي و خروجي ‪ 64 :‬بيت‬
‫‪ ‬تعداد دورها‪ 16 :‬دور‬
‫الگوريتمهاي رمزگذاري و رمزگشايي عمومي هستند‪ ,‬ولي مباني رياض ي و اصول طراحي آنها فاش نشد‪.‬‬
‫در گذشته بسیار پر استفاده بود‪.‬‬
‫‪72‬‬
‫‪ DES‬امن نيست!‬
‫‪‬‬
‫در ژانویه ‪ 1999‬این الگوریتم توسط آزمون جامع فضای کلید در‬
‫‪ 23‬ساعت شکسته شد!‬
‫‪ ‬بیش از ‪ 1000‬هزار کامپیوتر بر روی اینترنت هر یک بخش کوچکی از کار‬
‫جستجو را انجام دادند‪.‬‬
‫‪ ‬منظور از آزمون جامع فضای کليد همان جستجوی کامل کليد با‬
‫استفاده از روش ‪ Brute Force‬می باشد‪.‬‬
‫‪‬‬
‫‪‬‬
‫به الگوریتمهای امن تر با طول کلید باالتر نیاز داریم‪.‬‬
‫عالوه بر اين ‪ DES‬طراحی شفاف و روشن ندارد‪.‬‬
‫‪73‬‬
‫استاندارد رمزگذاری داده‪DES‬‬
‫قطعه ‪ 64‬بیتی متن واضح‬
‫زیر کلید دور‬
‫تولید زیر کلیدهای ‪48‬‬
‫بیتی از کلید اصلی ‪56‬‬
‫بیتی برای هر دور‬
‫دور‪1‬‬
‫دور‪2‬‬
‫دور‪15‬‬
‫دور‪16‬‬
‫کلید ‪ 56‬بیتی‬
‫قطعه ‪ 64‬بیتی متن رمزشده‬
74
DES ‫یک دور از‬
‫توسط زمانبندی کلید‬
.‫تولید میشود‬
Li (32 bit)
Ri (32 bit)
Ki (48 bit)
“round key”
f
“round function”
Li+1
Ri+1
75
‫‪76‬‬
‫یک دور از ‪DES‬‬
‫‪‬‬
‫اعمال انجام شده در هر دور‪:‬‬
‫‪Li = Ri-1‬‬
‫)‪Ri = Li-1 XOR F(Ri-1, Ki‬‬
‫‪‬‬
‫‪‬‬
77
DES ‫ رمز‬Feistel ‫ساختار‬
X
(64)
Initial Permutation
(32)
(32)
+
F
+
F
(48)
(48)
K2
+
F
(48)
K3
…
+
F
(48)
K16
Initial Permutation-1
Y
(64)
Key Scheduler
K1
(56)
K
78
DES ‫تابع دور‬
32
expansion
48
Ki ‫کلید دوره‬
48
6 to 4 6 to 4 6 to 4 6 to 4 6 to 4 6 to 4 6 to 4 6 to 4
S-box S-box S-box S-box S-box S-box S-box S-box
32
permutation
79
DES ‫تابع دور‬
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + +
S1
S2
S3
S4
S5
S6
S7
S8
P
80
Key-schedule
Permuted
choice
48
bits
Di-1 (28 bit)
‫شیفت به چپ‬
PC2
Ki
Ci-1 (28 bit)
Ci (28 bit)
Di (28 bit)
81
‫زمانبندی کلید‬
K
(56)
Permuted Choice 1
(28)
(28)
Left shift(s)
Left shift(s)
(28)
K1
(48)
Permuted Choice 2
Left shift(s)
(48)
Left shift(s)
Permuted Choice 2
…
K2
(28)
ً
‫هر بیت کلید حدودا در‬
‫ دور‬16 ‫ دور از‬14
.‫استفاده میشود‬

‫‪82‬‬
‫توانمندي ‪DES‬‬
‫‪‬‬
‫اندازه كليد‬
‫‪ 56 ‬بيت داراي كل فضاي حالت ‪256 = 7.2 * 1016‬‬
‫‪ ‬حمله آزمون جامع هرچند مشكل‪ ,‬ولي امكانپذير است‬
‫‪‬‬
‫‪‬‬
‫آخرين گزارش ثبت شده در سال ‪ 1999‬نشان از كشف كليد در طول ‪ 22‬ساعت داده‬
‫اند!‬
‫حمله زماني‬
‫‪ ‬پياده سازي ‪ DES‬را مورد هدف قرار مي دهند‬
‫‪ ‬الگوريتم براي ورودي هاي مختلف در زمانهاي متفاوت پاسخ مي دهد‬
‫‪ ‬بيشتر در كارتهاي هوشمند مشكل زا مي شوند‬
83
Time to break a code (106 decryptions/µs)
‫‪84‬‬
‫ویژگیهای مطلوب در الگوریتم رمزنگاری‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫رمزگذاری آسان‬
‫رمزگشایی آسان‬
‫سرعت باالی رمزگذاری و رمزگشایی‬
‫‪diffusion and confusion‬‬
‫دیگر ویژگیها برای کاربردهای خاص‪:‬‬
‫‪ ‬کارت هوشمند‪ :‬نیاز به حافظه و قدرت پردازش کم‬
‫‪85‬‬
‫‪Diffusion and Confusion‬‬
‫‪‬‬
‫‪( Confusion‬درهمی)‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫متن رمز باید به نحو پیچیده ای به متن واضح و کلید وابسته باشد‪.‬‬
‫هدف آن است که تعیین ارتباط ویژگیهای آماری متن رمز و متن واضح مشکل باشد‪.‬‬
‫‪( Diffusion‬انتشار)‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫هر بیت متن واضح باید بر هر بیت متن رمز تاثیر داشته باشد‪.‬‬
‫هر بیت کلید باید بر هر بیت متن رمز تاثیر داشته باشد‪.‬‬
‫هدف پنهان سازی ویژگیهای آماری متن واضح است‪.‬‬
‫‪86‬‬
‫مباني رمزنگاري کليد عمومي‬
‫‪‬‬
‫ً‬
‫رمزنگاري کليد عمومي اساسا با انگیزه رسيدن به دو هدف طراحي‬
‫شد‪:‬‬
‫‪ ‬حل مساله توزيع کليد در روشهای رمزنگاری متقارن‬
‫‪ ‬امضاي ديجيتال‬
‫ديفي و هلمن اولین راه حل را در ‪ 1976‬ارايه دادند‪.‬‬
‫‪87‬‬
‫رمزنگاري کليد عمومي‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫کليد هاي رمزگذاری و رمزگشايي متفاوت اما مرتبط هستند‪.‬‬
‫رسيدن به کليد رمز گشايي از کليد رمزگذاری از لحاظ محاسباتي‬
‫ناممکن مي باشد‪.‬‬
‫ً‬
‫رمزگذاری امري همگاني ميباشد و اساسا نيازي به اشتراک گذاشتن‬
‫اطالعات محرمانه ندارد‪.‬‬
‫رمز گشايي از طرف ديگر امري اختصاص ي بوده و محرمانگي پيامها‬
‫محفوظ ميماند‪.‬‬
‫‪88‬‬
‫رمزگذاری کليد عمومي‪2-‬‬
‫‪‬‬
‫براي رمز نگاري کليد عمومي گامهاي زير را برميداريم‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫هر کاربر يک زوج کليد رمزگذاری و رمز گشايي توليد ميکند‪.‬‬
‫کاربران کليد رمزگذاری خود را به صورت عمومي اعالن ميکنند درحالي‬
‫که کليد رمز گشايي مخفي ميباشد‪.‬‬
‫همگان قادر به ارسال پيام رمز شده براي هر کاربر دلخواه با استفاده‬
‫از کليد رمزگذاری (عمومي) او ميباشند‪.‬‬
‫هر کاربر ميتواند با کمک کليد رمزگشايي (خصوص ي) پيامهايي که با‬
‫کليد رمزگذاری (عمومي) او رمز شده رمزگشايي کند‪.‬‬
‫‪89‬‬
‫رمزگذاری کليد عمومي‬
‫‪90‬‬
‫مقايسه رمزنگاري مرسوم و رمزنگاري کليد عمومي‪1-‬‬
‫رمزنگاري مرسوم (‪)Conventional Cryptography‬‬
‫‪ ‬استفاده از يك كليد يکسان و مخفي براي رمزگذاري و‬
‫رمزگشايي‬
‫معايب‬
‫‪ ‬مشكل مديريت كليدها‬
‫‪ ‬نياز به توافق بر روي كليد پيش از برقراري ارتباط‬
‫‪ ‬براي ارتباط ‪ n‬نفر باهم به ‪ n(n-1)/2‬كليد احتياج‬
‫داريم‬
‫‪ ‬عدم پشتيباني از امضاء الكترونيكي‬
‫مزايا‬
‫‪ ‬با اين وجود از الگوريتمهاي رمزنگاری با كليد عمومي سريع‪K9‬‬
‫تر‬
‫است‬
‫‪K4‬‬
‫‪K3‬‬
‫‪K2‬‬
‫‪K1‬‬
‫‪K5‬‬
‫‪K6‬‬
‫‪K8‬‬
‫‪K10‬‬
‫‪K7‬‬
‫‪91‬‬
‫مقايسه رمزنگاري مرسوم و رمزنگاري کليد‬
‫عمومي‪2-‬‬
‫رمزگذاری مرسوم‬
‫‪ ‬براي امن بودن بايد‪:‬‬
‫‪ ‬كليد سری‪ ،‬مخفي نگه داشته شود‪.‬‬
‫‪ ‬رسيدن به پيام واضح از روي متن رمز شده از نظر محاسباتي نا ممکن‬
‫باشد‪.‬‬
‫‪ ‬اطالع از الگوريتم و داشتن نمونههايي از پيغام رمز شده براي تعيین كليد‬
‫كافي نباشد‪.‬‬
‫مقايسه رمزگذاری مرسوم و رمزگذاری‬
‫کليد عمومي‪3-‬‬
‫‪92‬‬
‫‪‬‬
‫ملزومات امنيتي(رمزگذاری با كليد عمومي)‬
‫‪ ‬تنها يكي از دو كليد بايد مخفي بماند‬
‫‪ ‬رسيدن به پيام واضح از روي متن رمز شده حتي با داشتن کليد عمومي‬
‫از نظر محاسباتي نا ممکن باشد‪.‬‬
‫‪ ‬اطالع از الگوريتم‪ ،‬داشتن يكي از كليدها و نیز دراختيار داشتن نمونه‬
‫پيغامهای رمزشده براي تعيین كليد دوم كافي نباشد‪.‬‬
‫‪93‬‬
‫جايگزيني يا تكميل؟‬
‫از نظر كاربردي‪ ،‬رمزگذاری با كليد عمومي بيش از آنكه جايگزيني براي‬
‫رمزگذاری مرسوم باشد‪ ,‬نقش مكمل آنرا براي حل مشکالت توزيع‬
‫كليد بازي مي كند‪.‬‬
‫‪94‬‬
‫!‪Misconceptions‬‬
‫دو تصور اشتباه ديگر درباره الگوريتمهای کليد عمومی‬
‫‪ ‬رمزنگاری با کليد عمومی امن تر است!‬
‫‪‬‬
‫در هر دو روش رمزنگاری امنيت به طول کليد وابسته است‪.‬‬
‫‪ ‬مسئله توزيع کليد در رمزنگاری با کليد عمومی برطرف شده است‬
‫‪‬‬
‫‪‬‬
‫چگونه مطمئن شويم کليد عمومی لزوما متعلق به شخص ادعاکننده است؟!‬
‫پس توزيع کليد عمومی آسانتر است‪ ،‬ولی بديهی نيست‪.‬‬
‫‪95‬‬
‫كاربردهاي رمزگذاری کليد عمومي‬
‫‪‬‬
‫دسته بندي كلي كاربردها‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫رمزگذاری‪ /‬رمز گشايي ‪ :‬براي حفظ محرمانگي‬
‫امضاء رقمي ‪ :‬براي حفظ اصالت پيام و معین نمودن فرستنده‬
‫پيام (پيوند دادن پيام با امضاء کننده)‬
‫توزيع كليد ‪ :‬براي توافق طرفین روي كليد جلسه مخفي پيش از‬
‫برقراری ارتباط‬
‫‪96‬‬
‫جايگاه عملي رمزگذاری کليد عمومي‬
‫‪‬‬
‫کليدهاي اين نوع از الگوريتمها بسيار طوالني تر از الگوريتمهاي مرسوم (کليد‬
‫خصوص ي) ميباشند‪.‬‬
‫‪‬‬
‫‪‬‬
‫الگوريتم ‪ RSA‬با پيمانه ‪ 1024‬بيتي امنيتی در حد الگوريتمهای متقارن با‬
‫کليدهای ‪ 80‬بيتي دارد‪.‬‬
‫سرعت الگوريتمهاي کليد عمومي از الگوريتمهاي رمزگذاری مرسوم پايین تر‬
‫است‪.‬‬
‫ً‬
‫‪ RSA ‬تقريبا ‪ 1000‬بار کند تر از رمزهاي کليد سری (با امنيت يکسان) ميباشد‪.‬‬
‫‪97‬‬
‫جايگاه عملي رمزگذاری کليد عمومي‬
‫امروزه کاربرد اين الگوريتمها به حل مساله توزيع کليد و‬
‫امضاي ديجيتال محدود ميشود‪.‬‬
‫(مطابق اهداف و انگیزه هاي اوليه طراحي)‬
‫‪98‬‬
‫حمالت به رمزنگاری کلید عمومی‬
‫‪‬‬
‫‪‬‬
‫جستجوی فراگیر )‪(Brute force‬‬
‫محاسبه کلید خصوص ی از کلید عمومی‬
‫‪ ‬اثبات نشده که غیر ممکن است!‬
‫‪‬‬
‫حمله پیام احتمالی (‪)Probable-message attack‬‬
‫‪ ‬مخصوص رمزنگاری کلید عمومی‬
‫‪99‬‬
‫كليات الگوريتم رمز نگاري ‪RSA‬‬
‫‪‬‬
‫كليات‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫توسط ‪ Rivest-Shamir -Adleman‬در سال ‪ 1977‬در ‪ MIT‬ارائه شد‬
‫مشهورترين و پركاربردترين الگوريتم رمزگذاری كليدعمومي‬
‫مبتني بر توان رساني پيمانه ايي‬
‫استفاده از اعداد طبيعي خيلي بزرگ‬
‫امنيت آن ناش ي از دشوار بودن تجزيه اعداد بزرگ‪ ،‬که حاصلضرب دو عامل اول‬
‫بزرگ هستند‪ ،‬می باشد‪.‬‬
‫‪ ‬مستندات مربوط به آن تحت عنوان ‪ PKCS‬استاندارد شده است‪.‬‬
‫‪Public Key Cryptography Standards‬‬
‫‪100‬‬
‫نمادگذاري ‪RSA‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪ : N‬پيمانه محاسبات‬
‫‪ :e‬نماي رمزگذاری‬
‫‪ :d‬نماي رمزگشايي‬
‫‪ :M‬پيام ‪ ،‬عدد صحيح متعلق به ‪Z N‬‬
‫‪y‬‬
‫‪ xe modN‬‬
‫تابع ‪ :RSA‬تالباتبتابتا بتا‬
‫‪x‬‬
‫‪‬ي‬
‫‪mod‬سي ‪y‬سيس‬
‫تابع معکوس‪ :‬سي‪N‬سي‬
‫‪d‬‬
‫‪101‬‬
‫کلید عمومی ‪:‬‬
‫‪(n ‬حاصل ضرب دو عدد اول ‪ p‬و ‪)q‬‬
‫ً‬
‫ل‬
‫‪(e ‬کلید رمز‪ ،‬نسبتا او با )‪)φ(n) = (p − 1)(q − 1‬‬
‫کلید خصوص ی‪:‬‬
‫‪( d ‬کلید رمزگشایی‪) d ≡ e−1 (mod φ(n)) ،‬‬
‫رمزنگاری‌‪:‬‬
‫‪c ≡ me (mod n) ‬‬
‫رمزگشایی‪:‬‬
‫‪m ≡ cd (mod n) ‬‬
‫‪‬‬
‫)‪cd ≡ (me)d ≡ med ≡ m (mod n‬‬
‫در پیاده سازی سخت افزاری ‪ 1000 RSA‬مرتبه از ‪ DES‬کندتر است‪ .‬امنیت ‪RSA‬‬
‫به سختی عمل فاکتور گیری اعداد بزرک بستگی دارد‪ .‬در حال حاضر ‪ n‬باید عددی‬
‫بزرگ تر از ‪129‬رقمی باشد‪.‬‬
102
103
RSA ‫مبانی رياض ی‬
.‫ دو عدد اول ميباشند‬q ‫ و‬p

.‫ اول است‬N ‫) که نسبت به‬N‫ تعداد اعداد(کوچکتر از‬:(N) 
N  pq
 N    p  1 q  1
gcd( N , e)  1
d  e  1 mod N 
C  M e mod N
 
M  C mod N  M
d
e d
{e,n}:‫کلید عمومی‬
{d,n} :‫کلید خصوص ی‬
mod N


‫‪104‬‬
‫قراردادها و پروتکل ‪RSA‬‬
‫‪‬‬
‫‪‬‬
‫هم فرستنده و هم گیرنده مقدار ‪ N‬را ميدانند‬
‫فرستنده مقدار ‪ e‬را ميداند‬
‫‪‬‬
‫‪‬‬
‫تنها گیرنده مقدار ‪ d‬را ميداند‬
‫‪‬‬
‫‪‬‬
‫کليد عمومی ‪)N , e( :‬‬
‫کليد خصوص ی ‪)N, d( :‬‬
‫نيازمنديها‪:‬‬
‫‪‬‬
‫‪‬‬
‫محاسبه ‪ Me‬و ‪ Cd‬آسان باشد‬
‫محاسبه ‪ d‬با دانستن کليد عمومی غیرممكن باشد‬
105
‫مثال‬-RSA
p = 17, q = 11, n = p*q= 187
(n) = 16*10 =160, pick e=7, d.e=1 mod (n)  d = 23
‫‪106‬‬
‫روشهاي کارا براي محاسبه نما‬
‫‪‬‬
‫براي محاسبه )‪ ab (mod N‬الگوريتمهاي متفاوتي ابداع شده‬
‫است‪...‬‬
‫‪‬‬
‫‪‬‬
‫فرض کنيد ‪ bkbk-1…b0‬نمايش مبناي ‪ 2‬عدد ‪ b‬باشد‪.‬‬
‫بنابراين خواهيم داشت‪:‬‬
‫‪2i‬‬
‫‪ a‬‬
‫‪2i‬‬
‫‪bi  0‬‬
‫‪a a‬‬
‫‪b‬‬
‫‪bi  0‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪2i‬‬
‫‪2i‬‬
‫‪a modn   a  modn   a modn  modn‬‬
‫‪ bi  0‬‬
‫‪‬‬
‫‪ bi  0‬‬
‫‪‬‬
‫‪b‬‬
107
‫الگوريتم توان و ضرب‬
:‫بر اين مبنا ميتوان الگوريتم زير را طراحي نمود‬
c  0; d  1
for i  k downto0
do c  c  2
d  d 2 modn
if bi  1
then c  c  1
d  d  a  modn
return d

‫‪108‬‬
‫مثال عددي الگوريتم توان و ضرب‬
‫نتيجه الگوريتم توان رساندن سريع پيمانه ايي براي ‪ ab mod n‬که مقادير ‪ b،a‬و ‪ n‬عبارتند از‪:‬‬
‫‪a=7,b=560=(1000110000)2,n=561‬‬
‫‪109‬‬
‫حمالت ممکن بر ‪RSA‬‬
‫‪‬‬
‫حمله آزمون جامع(‪)Brute Force‬‬
‫‪ ‬طول كليد با پيدايش هر نسل جديد از پردازنده ها افزايش مي يابد‪ ،‬ضمن اينكه قدرت‬
‫پردازش ي هكرها زياد مي شود!‬
‫‪ ‬طول کليد معادل تعداد بيتهای پيمانه محاسبات(‪ )N‬می باشد‪.‬‬
‫‪‬‬
‫حمالت رياض ي‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫تجزيه ‪ N‬و در نتیجه محاسبه )‪(N‬‬
‫محاسبه )‪ (N‬به صورت مستقیم‬
‫محاسبه ‪ d‬بدون استفاده از )‪(N‬‬
‫حمله زماني‬
‫‪ ‬زمان اجراي عمليات رمزگذاری يا واگشايي رمز ميتواند اطالعاتي را در مورد کليد افشاء‬
‫کند‪.‬‬
110
RSA ‫حمالت رياض ي‬
: )‫ (پيوست‬Stanford ‫ در دانشگاه‬Dan Boneh ‫مقاله‬

Twenty Years of Attacks on the RSA Cryptosystem
1999

‫‪111‬‬
‫راههاي مقابله با حمله زماني به‪RSA‬‬
‫‪‬‬
‫استفاده از توان رساندن با زمان ثابت محاسباتي‪.‬‬
‫‪‬‬
‫تابع بايد به ازای همه وروديها زمان ثابتی به طول بيانجامد‬
‫‪‬‬
‫اضافه كردن تاخیرهاي تصادفي‬
‫‪‬‬
‫قرار دادن اعمال اضافی و گمراه کننده در بین محاسبات‬
‫‪ ‬ضرب کردن متن رمزشده در يک عدد تصادفی قبل از عمليات به توان رسانی‬
‫‪ ‬تحليلگر از ساختار بيتی متنی که به توان می رسد‪ ،‬مطلع نيست و اين حمله زمانی را‬
‫برای او غیرممکن می سازد‬