دانلود - Jabry

Download Report

Transcript دانلود - Jabry

‫رمز نگاری‪:‬‬
‫داده هایی که به راحتی قابل فهم هستند و هیچ نکته و ابهام خاص ی در درک آنها وجود‬
‫ندارد متن ساده یا متن آشکار نامیده میشوند ‪.‬‬
‫روش ی که باعث میشود متن ساده حالت قابل درک و فهم خود را از دست بدهد به رمز نگاری‬
‫موسوم است ‪.‬‬
‫متضاد علم رمز نگاری علم تحلیل رمز است که روشهای تجزیه و شکستن رمز اطالعات و کشف‬
‫کلید رمز را مورد بحث و تحلیل قرار میدهد ‪.‬‬
‫روشهای سنتی رمز نگاری ‪:‬‬
‫روش جانشینی‬
‫رمز نگاری جایگشتی‬
‫ٌ‬
‫روش جانشینی ‪ :‬در این روش هر حرف از جدول حروف الفبا به حرفی دیگر تبدیل میشود ‪ .‬این روش بعدا بهبود‬
‫داده شد و به جای اینکه تمام حروف به طور منظم و باقاعده به یکدیگر تبدیل شوند جدول حروف الفبا طبق‬
‫یک قاعده نامشخص که جدول رمز نامیده میشود به هم تبدیل می شدند ‪.‬‬
‫‪Z‬‬
‫‪y‬‬
‫‪x‬‬
‫‪v w‬‬
‫‪u‬‬
‫‪t‬‬
‫‪s‬‬
‫‪r‬‬
‫‪q‬‬
‫‪p‬‬
‫‪B N M‬‬
‫‪C‬‬
‫‪X‬‬
‫‪Z‬‬
‫‪L‬‬
‫‪K‬‬
‫‪J‬‬
‫‪F G H‬‬
‫‪V‬‬
‫‪o‬‬
‫‪n‬‬
‫‪a‬‬
‫‪l m‬‬
‫‪k‬‬
‫‪j‬‬
‫‪i‬‬
‫‪h‬‬
‫‪g‬‬
‫‪f‬‬
‫‪e‬‬
‫‪d‬‬
‫‪c‬‬
‫‪b‬‬
‫‪S D‬‬
‫‪A‬‬
‫‪P‬‬
‫‪I O‬‬
‫‪U‬‬
‫‪Y‬‬
‫‪T‬‬
‫‪R‬‬
‫‪E‬‬
‫‪Q W‬‬
‫نقطه ضعف این روش در مشخصات آماری هر حرف در یک زبان است ‪.‬‬
‫ترتیب فراوانی نسبی برای شش حرف پر تکرار در متون انگلیس ی از چپ به راست به تریتب زیر است ‪:‬‬
‫‪e–t–o–a–n–i‬‬
‫اولین اقدام در رمز شکنی آن است که متن رمز شده تحلیل آماری شود و هر کاراکتری که بیش از همه در آن‬
‫تکرار شده باشد معادل ‪e‬و ‪...‬‬
‫دومین نکته آماری آن است که در زبان انگلیس حروف کنار هم وابستگی آماری به هم دارند مثال ‪% 9/99‬‬
‫مواقع سمت راست حرف ‪ q‬حرف ‪ u‬قرار دارد و ‪...‬‬
‫ترتیب فراروانی نسبی برای ‪ 5‬دوحرفی پرتکرار در متون انگلیس ی به ترتیب زیر است ‪:‬‬
‫‪th – in – er – re – an‬‬
‫سومین نکته آماری مربوط به سه حرفی هاست مثال در زبان انگلیس ی سه حرفی های – ‪ing – the- and‬‬
‫‪ion‬به کرات استفاده میشود‬
‫چهارمین نکته برای رمز شکنی مراجعه به فرهنگ لغات یک زبان است که بر اساس پیداشدن چند حرف از‬
‫یک کلمه رمز بقیه حروف آن نیز آشکار میشود‬
‫رمز نگاری جایگشتی ‪:‬‬
‫در این رمزنگاری محل قرار گرفتن و ترتیب حروف کلمات در یک متن به هم نمی خورد بلکه طبق یک جدول رمز‬
‫هر الگو با الگوی جدید جایگزین میشود‬
‫کلمه اصلی ‪the :‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫کلمه رمز ‪eth :‬‬
‫‪2‬‬
‫‪1‬‬
‫‪3‬‬
‫برا ی رمز گشایی گیرنده پیام باید کلید جایگشت را بداند‪.‬مثال‪:‬‬
‫‪ :Please-transfer-one-milion-dollors-to-my-swiss-bank-account-six-two-two‬متن اصلی‬
‫‪ :MEGABUCK‬کلمه رمز‬
‫برای رمز نگاری جایگشتی‪ ،‬کلمات متن اصلی به صورت دسته های هشت تایی جدا شده و تماما زیر هم نوشته‬
‫می شود‪:‬‬
‫حال براساس ترتیب حروف الفبا هر حرف در کلمه رمز‪ ،‬ستونها به صورت پشت هم نوشته می شوند‪.‬‬
‫‪as---wkt-sfmdti—teeioosasw-rll-sciolanor-auwenenssnnot-llm-cx‬‬‫”‪”proiayboteeioosasw‬‬
‫ااین روش رمز هم قابل شکستن است زیرا اگر چه ترتیب حروف به هم ریخته است ولی در متن رمزشده تمام‬
‫حروف هریک از کلمان وجود دارند‪.‬لذا با بررس ی تمام جایگشت های ممکن می توان رمز را به دست آورد‪.‬‬
‫سیستم های رمز نگاری متقارن‬
‫رمزنگاری برای رمز و درهم کردن داده ها به یک پارامتر به نام کلید رمز نیاز دارد‪.‬الگوریتم رمزنگار یک بلوک داده را به‬
‫همراه کلید دریافت کرده و آنها را طبق روالی مشخص برحسب مقدار کلید به هم میریزد‪.‬‬
‫به هر روش رمزنگاری که در آن کلید رمزگشایی دقیقا همان کلیدی است که اطالعات با آنها رمز شده اصطالحا روش‬
‫متقارن می گویند‪.‬‬
‫در طرف مقابل روش هایی وجود دارند که کلید رمزنگاری با کلید رمزگشایی فرق دارد و فقط کلید رمزگشایی باید مخفی‬
‫بماند و کلید رمزنگاری آشکارا اعالم میشود چراکه با این کلید فقط میتوان رمز کرد نه رمزگشایی!‬
‫به این رده از الگوریتم ها اصطالحا روش های کلید عمومی یا نامتقارن می گویند‪.‬‬
‫هر سیستم رمزنگاری متقارن حداقل باید دارای دو ویژگی پخش و پراکنده سازی و گمراه کنندگی در باالترین سطح‬
‫ممکن باشد‪.‬‬
‫پخش و پراکنده سازی ‪ :‬تاثیر بیت ها یا بایت های ورودی را بر روی دنباله وسیعی از بیت ها یا بایت های خروجی ‪،‬‬
‫تلفیق و ترکیب می کند‪ .‬این کار با تکرار متوالی و مکرر عملیات جایگشت‪ ،‬جانشینی و عملیات ریاض ی و منطقی و‬
‫وارون پذیر حاصل خواهد شد‪.‬‬
‫گمراه کنندگی ‪ :‬در عمل هرگز نباید بتوان بین ورودی‪ ،‬خروجی و کلید‪ ،‬هیچ رابطه سرراست و مشخص ی پیدا کرد‪.‬‬
‫استانداردهای نوین رمزنگاری ‪– DES:‬زاده دوران جنگ سرد‬
‫‪ DES‬سرآغاز شروع علم رمزنگاری و تحلیل رمز به صورت آکادمیک و هدفمند است‪.‬متاسفانه چون حامی و‬
‫سفارش دهنده اصلی این روش سازمان امنیت ملی آمریکا بود لذا شایعات بسیار گسترده ای در خصوص‬
‫وجود شاه کلید فوق سری مطرح شد‪.‬این شایعات برای ‪ DES‬گران تمام شد و محبوبیت آن رو به افول‬
‫گذاشت‪.‬‬
‫الگوریتم ‪DES‬‬
‫● ورودی رمزنگار یک رشته ‪ 64‬بیتی است‪ ،‬بنابراین داده های ورودی بایست در گروه های ‪8‬کاراکتری دسته بندی‬
‫و به ورودی سخت افزار یا نرم افزار رمزنگار ‪ DES‬اعمال شوند‪.‬‬
‫● اولین عملی که بر روی رشته ورودی انجام می شود جابجا کردن محل بیت های رشته ‪ 64‬بیتی طبق جدول ‪-11‬‬
‫‪ 8‬است ‪:‬‬
‫● در گام دوم رشته ‪ 64‬بیتی جایگشت شده از گام قبل به دو نیمه ‪ 32‬بیتی تقسیم می شود‬
‫● در گام سوم فرآیند رمزنگاری مبتنی بر کلید آغاز میشود و تا شانزده دور ادامه می یابد‪.‬در هر دور ‪ 32‬بیت‬
‫سمت راست مستقیما به سمت چپ منتقل شده و ‪ 32‬بیت سمت چپ طبق رابطه زیر به یک رشته ‪ 32‬بیتی‬
‫جدید تبدیل و به سمت راست منتقل خواهد شد ‪:‬‬
‫)‪f(Ri-1,Ki‬‬
‫‪Li-1‬‬
‫●پس از دور شانزدهم جای نیمه ‪ 32‬بیتی چپ و راست عوض خواهد شد‪ .‬سپس عکس عمل جایگشتی که در‬
‫ابتدا انجام شده بود صورت میگیرد تا بیت ها سر جای اصلیشان برگردند‪.‬‬
.‫ در خروجی آماده است‬، ‫ بیتی رمز شده‬64 ‫● حال خروجی‬
: DES ‫شبه کد توصیفگر الگوریتم رمزنگاری‬
Function DES-Encrypt (M,K)Where M=(L,R)
M
IP(M)
For i=1 to 16 do
begin
Ki
T
Subkey(ki)
L xor f(R,Ki)
Swap (L,R)
R=T
end
Swap (L,R)
M
IP-1(M)
return M
end
‫روند عملیاتی تابع ‪: f‬‬
‫● در اولین گام رشته ‪ 32‬بیتی ورودی (‪ )Ri-1‬با تکرار برخی از بیت ها به یک رشته ‪ 48‬بیتی توسعه داده میشود‪:‬‬
‫● در گام بعد‪ ،‬کلید فرعی متناظر با شماره دور ‪ ،‬با رشته توسعه یافته ‪ ،‬بیت به بیت ‪ XOR‬میشود‪.‬بدین ترتیب‬
‫یک رشته جدید ‪ 48‬بیتی پدید می آید‪.‬‬
‫● در گام سوم رشته ‪ 48‬بیتی حاصل باید به ‪ 32‬بیت کاهش یابد‪.‬‬
‫● در گام آخر بیت های رشته ‪ 32‬بیتی بدست آمده از مرحله قبل ‪ ،‬جایگشت داده می شوند‪.‬‬
‫روش استخراج کلیدهای فرعی از کلید اصلی‬
‫کلید اصلی در ‪ 56 DES‬بیتی است ‪ .‬برای استخراج ‪ 16‬کلید فرعی روال زیر شانزده بار تکرار میشود ‪:‬‬
‫• در اولین گام بیتهای کلید اصلی طبق جدول ذیل جایگشت داده میشود ‪:‬‬
‫•در دومین گام ‪ 56‬بیت خروجی مرحله قبل در قالب دو نیمه ‪ 28‬بیتی به‬
‫ئو رجیستر با قابلیت ( شیفت چرخش ی به سمت چپ ) ‪(Circular‬‬
‫)‪ left shift‬وارد می شوند ‪ .‬جدول زیر تهداد شیفت چرخش ی در هر‬
‫دور را نشان میدهد ‪.‬‬
‫• در سومین گام از تولید کلید فرعی خروجی شیفت یافته مرحله قبل در قالب یک رشته ‪ 56‬بیتی واحد مجددا طبق جدول‬
‫زیر تحت جایگشت بیتی قرار می گیرند ‪.‬‬
‫•برای تولید مابقی کلیدها این روال از گام دوم تکرار میشود ‪.‬‬
‫روند تولید کلیدهای فرعی از کلید اصلی‬
‫مثال ‪:‬‬
‫رمز گشایی ‪DES‬‬
‫هرگاه کلیدهای فرعی ‪ K1‬تا ‪ K16‬برعکس از ‪ K16‬تا ‪ K1‬به الگوریتم وارد کنید داده ها رمزگشایی خواهد شد ‪.‬‬
‫برای برگرداندن سمت راست یعنی ‪ Ri-1‬کافی است که ‪ Li‬را به جای آن قراردهیم ‪ .‬پس ‪ Ri-1‬بسادگی به دست می‬
‫آید ‪.‬‬
‫حال بیایید فرض کنیم که یک رشته ‪ 64‬بیتی رمز شده را مجددا به الگوریتم رمز نگاری ‪ DES‬ولی با ترتیب کلیدهای وارونه‬
‫اعمال کنیم ‪ .‬در اولین گام رشته رمز شده تحت عمل جایگشت ‪ IP‬قرار میگیرد و اثر آخرین مرحله ی رمز نگاری یعنی‬
‫جایگشت ‪ IP-1‬خنثی خواهد شد ‪ .‬سپس دو نیمه جابجا شده به اولین بلوک رمزنگار با کلید فرعی ‪ K16‬اعمال میشود که‬
‫رمز گشایی صورت میگیرد ‪ .‬همین کار دور بعدی تکرار می شود تا داده ها مرحله به مرحله به شکل قبلی خود بازیابی و‬
‫رمزگشایی شوند ‪.‬‬
‫رمز نگاری ‪ AES‬و ‪Rijndeal‬‬
‫●در ‪ Rijndeal‬طول کلید و طول بلوک داده می تواند ‪ 128،192‬و‪ 256‬بیت باشد و طول کلید و طول قطعات‬
‫داده مستقل از هم قابل انتخابند لذا می توان گفت که ‪ Rijndeal‬دارای ‪ 9‬انتخاب متفاوت برای رمزنگاری‬
‫اطالعات است‪.‬‬
‫●در ‪ AES‬طول بلوک داده صرفا باید ‪ 128‬بیتی باشد ولی می توان طول کلید را از بین یکی از مقادیر ‪ 192،128‬و‬
‫‪ 256‬بیتی انتخاب کرد بدین ترتیب ‪ AES‬دارای ‪ 3‬انتخاب است ‪:‬‬
‫الگوریتم ‪: AES‬‬
‫پارامترهای ورودی الگوریتم ‪:‬‬
‫‪ : Nb‬طول بلوک داده ورودی‬
‫‪ : Nk‬طول کلید‬
‫‪ : Nr‬تعداد دورهای رمزنگاری‬
‫چهار عملکرد اصلی الگوریتم ‪:‬‬
‫●جانشینی بایت‬
‫●شیفت چرخش ی کلمات به اندازه یک بایت‬
‫●تلفیق و درهم سازی ستونی‬
‫●جمع (‪ )XOR‬کلید با کلمات در هر دور‬
‫روش کار برنامه ‪:‬‬
‫●در همان ابتدای برنامه ‪ Expand-key‬به یازده کلید فرعی توسعه یافته و درون متغیر ‪ Kr‬قرار می گیرد‪.‬‬
‫●در مرحله بعدی متن اصلی به درون آرایه ‪ State‬منتقل می شود تا در خالل ده دور متوالی پردازش شود‪.‬‬
‫●قبل از شروع حلقه تکرار[‪ Kr ]0‬با آرایه ‪ ،State‬بایت به بایت ‪ XOR‬میشود‪.‬‬
‫●در این لحظه محاسبات اصلی شروع میشود ‪ .‬حلقه تکرار ده دور محاسبات رمزنگاری را انجام می دهد‪ .‬هر دور شامل‬
‫چهار عمل است ‪:‬‬
‫‪ : Substitute(state) -1‬این تابع یکایک بایت های ماتریس ‪ State‬را براساس یک جدول جانشینی ثابت و مشخص با‬
‫مقادیرجدید جایگزین میکند‪.‬‬
‫‪ : Rotate-rows(state) -2‬این تابع هر چهار سطر از آرایه ‪ State‬را به سمت چپ می چرخاند‪.‬‬
‫‪ : mix-columns(state) -2‬این تابع هر ستون از ارایه ‪ state‬را بطور مستقل از دیگر ستون ها تلفیق و درهم‬
‫سازی می کند ‪.‬‬
‫‪: xor_roundkey_into_state(state,rk[r]) -4‬این تابع محتویات متغیر ‪ state‬را با محتویات کلید متناظر با‬
‫دور‪ ،‬بایت به بایت ‪ XOR‬میکند‪.‬‬
‫در دورهای بعدی همین چهار عمل متوالیا بر روی محتویات ماتریس ‪ State‬انجام میگیرد‪.‬‬