Quantcast
Channel: دانلود فایل رایگان
Viewing all articles
Browse latest Browse all 46175

مقاله پروژه تئوري رمز گذاري

$
0
0
 nx دارای 342 صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است فایل ورد nx  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد. این پروژه توسط مرکز nx2 آماده و تنظیم شده است توجه : در صورت  مشاهده  بهم ريختگي احتمالي در متون زير ،دليل ان کپي کردن اين مطالب از داخل فایل ورد مي باشد و در فايل اصلي nx،به هيچ وجه بهم ريختگي وجود ندارد بخشی از متن nx : پروژه تئوری رمز گذاری مقدمه و تاریخچه هر کدام از ما وقتی به دنیای ماموران مخفی و جاسوسان فکر می کنیم چیز های زیادی به ذهنمان می رسد: سفرهای خارجی، ماموریت های خطرناک، اسلحه های عجیب و ماشین های سریع. کمتر کسی در کنار این چیزها به ریاضیات فکر می کند. اما باید بدانیم ریاضیات در فهمیدن پیامهای سری و شکستن رمزها نقش اساسی بازی می کند و در طول تاریخ ریاضیدان ها نتیجه نبردهای فراوانی را با شکستن رمزها تغییر داده اند. رمزنگاری دانش تغییر دادن متن پیام به کمک یک کلید رمزنگاری و یک الگوریتم رمزنگاری است. به صورتی که تنها شخصی که از کلید و الگوریتم مطلع است قادر به استخراج متن اصلی از متن رمزشده باشد و شخصی که از یکی یا هردوی آن‌ها اطلاعی ندارد، نتواند به محتوای پیام دسترسی پیدا کند. رمزنگاری از طریق پنهان نگاه داشتن الگوریتم رمزنگاری منسوخ است. در روشهای جدید رمزنگاری فرض بر آن است که همگان الگوریتم رمزنگاری را می‌دانند. آنچه پنهان است فقط کلید است. رمزنگاری علمی است که به وسیله آن می‌توان اطلاعات را بصورتی امن منتقل کرد حتی اگر مسیر انتقال اطلاعات (کانالهای ارتباطی) ناامن باشد. دریافت‌کننده اطلاعات آنها را از حالت رمز خارج می‌کند (decrypting) که به این عمل رمزگشائی گفته می‌شود . توجه داشته باشید که رمزنگاری به تغییر ساده محتویات یک متن گفته می‌شود با کدگذاری (coding) تفاوت دارد. در این صورت تنها هر کاراکتر با یک نماد تغییر می‌کند. کلمه Cryptography بر گرفته لغات یونانی‘kryptos’ به مفهوم ” محرمانه ” و grapheinبه معنای نوشتن ” است. قبل از هر چیز لازم است بین رمز و کد تفاوت قائل شویم. رمز به مفهوم تبدیل کاراکتر به کاراکتر یا بیت به بیت ؛ بدون تغییر محتویات زبان شناختی آن است. در مقابل ” کد ” تبدیلی است که کلمه‌ای را با یک کلمه یا نماد دیگر جایگزین می‌کند .دانش رمزنگاری بر پایه مقدمات بسیاری از قبیل تئوری اطلاعات، نظریه اعداد و آمار بنا شده‌است.امروزه در کشور ما نیز دوره دکترای رمزنگاری که از شاخه های رشته ریاضی کاربردی میباشد برگزار میشود. شروع و توسعه رمزنگاری اولین بار سزار امپراتور رم باستان برای آنکه بتواند بدون اطلاع دشمن با ا ارتشش در سراسر دنیا در ارتباط باشد نوعی رمز را بکار گرفت. این رمز به این شکل بود که برای فرستادن یک پیام جای هر حرف را با سومین حرف بعد از آن در الفبا عوض می کردند، مثلا به جای ‘A’ حرف ‘D’ و به جای ‘X’ حرف ‘A’ را می گذاشتند. بنابراین برای از کد خارج کردن پیام ها کافی بود دریافت کننده جای هر حرف را با سومین حرف بعد از آن در الفبا عوض کند. مثلا سعی کنید این پیغام سزاری را از رمز خارج کنید: hqhpb dssurdfklqj wkluwb ghdg uhwuhdw wr iruhvw در این کدگذاری ریاضی زمانی مطرح می شود که به هر حرف یک عدد نسبت دهیم. در این صورت فرایند کد کردن مثل اضافه کردن عدد 3 به عدد اولیه خواهد بود 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 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 مثلا برای به رمز درآوردن ‘A’ : داریم 0+3=3برای اینکه در مورد حرف های نزدیک به پایان الفبا دچار مشکل نشویم بهتر است به جای جمع معمولی از جمع به پیمانه 26 استفاده کنیم، یعنی به جای هر عدد از باقیمانده تقسیم آن عدد بر 26 استفاده کنیم.مثلا: برای ‘X’ داریم: (به پیمانه 26) 23+3=26=0 برای ‘Y’ داریم: (به پیمانه 26) 24+3=27=1 برای ‘T’ داریم: (به پیمانه 26) 19+3=21=21 برای از رمز درآوردن هم می توانیم از تفریق به پیمانه 26 استفاده کنیم. واضح است که می توانیم به جای انتقال 3 تایی از هر انتقالی بین 1 و 25 استفاده کنیم، اما همانطور که احتمالا حدس زده اید شکستن این رمز خیلی ساده است یعنی یک جاسوس می تواند با امتحان کردن همه 25 انتقال ممکن به سرعت رمز را بشکند. حالا به سراغ یک روش پیچیده تر می رویم. فرض کنید به ازای هر حرف الفبا یک علامت جایگزین کنیم، مثلا ‘*’ به جای ‘A’ و ‘+’ به جای ‘B’. مثل رمزی که ماری ملکه اسکاتلند برای مکاتباتش بر علیه الیزابت اول ملکه انگلیس بکار می گرفت . تا مدت ها مردم فکر می کردند شکستن این رمز ناممکن است تا اینکه آمار ریاضی بوجود آمد . نموداری که می بینید فراوانی حروف الفبا را در زبان انگلیسی نشان میدهد. این اطلاعات از شمارش حروف مختلف در حجم زیادی از نوشته ها مثل کتاب ها و روزنامه ها بدست آمده است. این نمودار مثلا نشان می دهد به طور میانگین 135 درصد از حروف بکار رفته در متن های انگلیسی E هستند، که فراوان ترین حرف الفبا است. بنابراین وقتی رمزی از نوع بالا داریم احتمالا علامتی که بیش از همه تکرار می شود علامت متناظر E است و فراوانترین علامت بعد از آن متناظر ‘T’ است. سرنخ های دیگری هم وجود دارد مثلا تنها دو کلمه یک حرفی در انگلیسی وجود دارد: ‘I’ و ‘A’ و همچنین ‘AND’ و ‘THE’ کلمات خیلی معمولی هستند با کمک این سرنخ ها و کمی آزمایش و خطا میتوان اینگونه رمزها را شکست.همین روش باعث شد که ماری سرش را از دست بدهد.   براساس متون موجود در مورد رمزنگاری تاریخچه این علم را میتوان در نگاهی گذرا بصورت زیر بیان كرد :1 – شروع رمزنگاری به سال 1900 قبل از میلاد برمیگردد برطبق اساد موجود یك مصری درآن زمان كه كلمات بصورت تصویر بیان میشد ازتصاویری استفاده كرده كه متداول نبوده بنابراین شروع رمزنگاری از مصریان میباشد . چهارصد سال بعد در بینالنهرین وحه هئی نوشته شد كه شامل فرمولهائی رمزی از تهیه شیشه برای كوزه گری میباشد . 2 – 500 سال قبل از میلاد یك نویسنده یهودی كتابی نوشت كه كلمات آن برعكس نوشته شده بود این روش بنام رمز آتابش نامیده شد . 3 – در سال 487 قبل از میلاد اسكیتال در یونان بوجود آمد و مورد استفاده قرار گرفت 4 – 400 سال بعد ژولیوس سزار در مكاتبات دولتی از رمز سزار استفاده كرد . او در این رمز جای حروف الفبا را عوض كرد . رمز سزار هرچند در نسبت به رمز آتابش ساده تر است اما مدارك محرمانه دولتی در نگاه اول قابل فهمیدن نبود . 5 – بین سالهای 0 تا 400 بعد از میلاد رمز به عنوان یك هنر توسط هندیان در كاماسوترا بیان شده است . در كاما سوترا به شیوه های ساده رمزنگاری اشاره شده است . 6 – 200 سال بعد از میلاد لیدن دستورالعمل های مهم خود را بصورت رمز می نوشت . 7 – در شروع امپراتوری اسلامی ابوعبدل الرحمان الخلیل ابن احمد امرابن تمام الفرهادی الزیدی الیهمدی كتابی در علم رمزنگاری نوشت كه الهام گرفته از رمزهای یونانی میباشد كه برای امپراتوری روم شرقی نوشته شده بود . البته این كتاب مفقود شده است شیوه هائی كه در این كتاب اشاره شده است در جنگ جهانی دوم در مقابل رمز انگما نیز استفاده شده است . 8 – در سال 855 ابوبكر احمد ابن علی ابن وحششیه نباتی رمزهای مختلفی را ابداع كرده تست 9 – در حكومت غزنویان كه كشورگشائی های زیادی داشتند در بحث نظامی و سفارت خانه ای خود به وفور از رمزها استفاده می كردند .مقامات عالیرتبه حكومتی با توجه به موقعیتشان از سیستم رمز مخصوص آن مقام استفاده می كردند . 10 – در سالهای بعد از 1266 ( بعد از میلاد ) در ونیز رمزهائی ساده در عالم سیاست استفاده می شد . در این رمز جای حروف با نقطه و ضریبدر عوض می شد . 11 – در حدود 1500 ( بعد از میلاد ) شخصی بنام روگر بكن رمزهای متعددی را نوشت او در اول كارهایش مینویسد . : كسی كه متن محرمانه ای را طوری بنویسد كه بقیه بفهمند احمق می باشد . 12 – در 1300 میلادی ابن خلدون جهت استفاده اداره مالیات و ارتش برای ساده نویسی و پنهان كاری از نوعی رمز استفاده می كرد . 13 – در سالهای بعد از 1379 میلادی گابریل دی لاوندی بتقاضلی كلمنت هفتم رمزی نوشت كه تركیبی از جابجائی حروف و كدها بود این رمز سالها مورد استفاده دولتمردان قرارگرفت و تا 400 سال این رمز كاربرد داشت . 14 – جوفری چاوسر در سالهای 1392 رمزی نوشت كه تركیبی از علائم و جابجائی حروف و كد بود 15 – در 1412 میلادی عابد الله الكلكشندی دائره المعارفی عربی نوشت كه 14 جلد می باشد و یكی از جلد های آن مربوط به رمزنگاری و منصوب به طالب موصولی می باشد . او برای اولین بار ؛ چند بار از جانشانی استفاده می كند او در كتاب خود راجع به رمزگشائی نیز بحث می كند كه رمز شكنی با استفاده از روش فركانسی منصوب به او می باشد . 16 – در سال 1466 اون باتیستا البرتی رمزی را اختراع كرد كه امروزه به رمز ( Capital Midnight Decode Badge ) مشهور است برای نزدیك به 400 سال یعنی تا 1800 این رمز شكسته نشد 17 – در 1518 اولین كتاب چاپی در باره رمز توسط جوهان تریتیمیوس نوشته شده او در انی كتاب از رمزهای مختلف سخن میگوید او از رمز polyalphabetic با شیوه جانشانی مستطیلی را توضیح می دهد . 18 – جیوان باتیستاپورتا در سال 1553 رمزی را ابداع كرد كه در آن ازیك عبارت بعنوان كلید استفاده می شود بسیاری از نویسندگان این رمزبلاسو را با رمز ویگنر اشتباه میگیرند . 19 – جیوانی باتیستا پورتا در سال 1563 از رمزی استفاده كرد كه در آن رمز ضمن استفاده از اسپل غلط و در ضمن جانشانی و انتقال از حروف عجیب و غریب در متن های خود استفاده كرد . 20 – در سال 1585 بلالیسس دی ویگنر كتابی در مورد رمز نوشت با متنهای رمزی همراه با سیستم رمز كلید خودكار ( یعنی كلید رمز در متن قبلی قرار دارد . این سیستم بعد ها در رمزهای DES,CFB,CBC مورد استفاده قرار گرفت . 21 – در سال 1623 فرانسیس بیكن رمزی بنام رمز كننده 5 – بیتی باینری را ابداع كرد . 22 – توماس جفرسون در سال 1790 با كمك دكتر جفرسون ( ریاضی دان ) چرخ رمز را اختراع كردند . این رمز تكامل پیدا كرد و بعدها در جنگ جهانی دوم مورد استفاده قرار گرفت . 23 – در سال 1817 سرهنگ وادستورد دیسكهای چرخدنده های رمز كننده ای با تعداد حروف متفاوت را اختراع كرد 24 – چارلز ویتستون رمز ( بازی مطبوع ) را در 1854 اختراع كرد . او همچنین رمز وادستورد را تكمیل كرد . 25 – اختراع تكامل یافته چرخ رمز نگاری توسط چارلز بابگی در 1854 26 – در 1857 ادمیرال سرفرانسیس بیوفورت رمز جدیدی اختراع كرد كه نوعی رمز ویگنر می باشد . البته كار او س از مرگش توسط برادرش چاپ شد . 27 – پلینی چاسی اولین شرح را برای رمزهای توموگرافیك در 1859 نوشت . 28 – بین سالهای 1861 الی 1980 بحث رمز عمومی شد و در سال 1769 سندی در امریكا بدست امده كه بنحوی با رمز سروكار دارد . 29 – در 1861 فردریك كاساسكی كتابی نوشت برچگونگی شكستن رمز چند الفبائی كه چند صد سال امن مانده بود 30 – در جنگهای داخلی امریكا جنوبی ها از جانشین كردن حروف در متن رمزی استفاده كردند درصورتی كه شمالی ها از رمز ویگنر كه بتازگی از طرف كاساسكی ابداع شده بود استفاده می كردند . 31 – در 1891 سرهنگ اتینی بازرایز بعد از انكه مدل جدید چرخ رمزكننده را ابداع كرد و ارتش فرانسه از آن استقبال نكرد آن انتشار داد 32 – كاپیتان پاركت هیت در سال 1913 با تغییر در چرخ رمز كننده منجر به رمز كننده M-138-A از WW-II شد . 33 – در سال سال 1916 سرتیپ ژوزف مورجنی رمز هیت را بصورت چرخ رمزی درآورد و جایگزینی حروف را قویتر انجام داد و در نهایت منجر به دستكاه رمز كننده M-94 شد . 34 – در 917 ویلیام فردریك فایردمن كه پدر علم رمز امریكا نامیده می شود در دولت محلی ریوربنك امریكا بعنوان متخصص رمز استخدام شد و اولین مركز آموزشی رمز را برای ارتش آمریكا ایجاد كرد و بعدها به خاطر فعالیتش به واشنگتن رفت . 35 – در همین سال گیلبرت ورنام رمزی را ابداع نمود كه كاملا” از كلیدهای اتفاقی استفاده می شد كه دیگر تكرار نمی شد تا این تاریخ این اولین ماشین رمزكننده ای است كه به ثبت رسیده است . رمز او برای استفاده در جنگ جهانی اول پیشنهاد شد ولی ارتش امریكا آن را نپذیرفت و در كارهای بازرگانی بكار گرفته شد . 36 – در اواخر جنگ جهانی اول آلمانها سیستم رمز كننده ADFGVX را اختراع كردند كه توسط رمز شكن مشهور فرانسوی پینوین شكسته شد . 37 – در 1919 الكساندر كوخ رمز استوانه ای را ابداع كرد كه در 1927 امتیاز رمز را به ارتور اسچربیوس كه مخترع ماشین انیگما بود واگذار كرد . 38 – در سوئد گرهارد دراما رمز استوانه ای را ابداع نمود كه بعدها توسط وایلهلم هگالین به مجموعه ای از رمز مشهور شد . بعدها دولت سوئد در 1919 پیشنهاد كرد شركتی كه شركتی با نام CryptoAG تاسیس گردد و دولت نیز در موارد مربوط به رمز از آن شركت استفاده كند . این شر39 – در 1921 ادوارد هوگ هیرن كد های الكتریكی را ابداع نمود . كه در حال حاضر نیز فعال است و بخاطر فروش رمز كننده به ایران مورد چالش قرار گرفت . 39 – تا سال 1924 رمز وون كریا كه به شدت مورد استفاده دپیماتهای آلمانی قرار می گرفت توسط رمز شكنان امریكائی در مدت دو ساعت و چهل دقیقه شكسته شد و بعد از این تاریخ دیگر مورد استفاده قرار نگرفت . 40 – از سال 1925 به بعد كاربران رمز از بانكها . نیرو های مسلح و عاشقان . مورد استفاده خلافكاران نیز قرار گرفت بطوری كه در اداره رمز در واشنگتن دی سی امریكا گشایش یافت . 41 – بین سالهای 1927 الی 1933 یكی از بازنشستگان نیروی دریائی آمریكا كه نام او مشخص نشد شبكه رمزی قوی ایجاد كه كه مورد استفاده وسیع اچاقچیان قرار گرفت و بسیاری از رمزهای انان شكسته نشد . 42 – لستر هیل در 1929 مقاله زیبائی تحت عنوان ” رمز نگاری در جبر حروف انتشار داد در این رمز از ماتریسها جهت رمز كردن استفاده می شود . 43 – بین سالهای 1933 تا 1945 رمز انگما كه به المان برده شده بود و تكامل پیدا كرد و مورد استفاده المانها قرار گرفت توسط یك ریاضدان لهستانی به نام مارین رجوسكی شكسته شد . این رمز در جنگ جهانی در انگلیس هم توسط آلن ترنینگو و گردن ریچمن شكسته شد . 44 – در همین ایام رمز ژاپنی ها توسط هربرت یاردلی شكسته شد و ژاپنیس ها رمز ارغوانی را ابداع كردند این رمز نیز توسط گروهی به سركردگی ویلیام فریدمن شكسته شد . 45 – اختراع رمز كننده SIGABA_131_C در سال 1930 به ویلیام فایردمن نسبت داده می شود . این رمز كننده كامل تر از رمز كننده انیگما می باشد . و دارای پانزده استوانه برای انتقال رقم ها و نج استوانه برای كنترل باند می باشد . 46 – در سال 1930 رمز كننده Typex جایگزین رمز كننده انیگما می شود . 47 – در سال 1970 دكتر هورست فیستال در یك پروژه تحقیقاتی روز رمزها مجموعه ای از رمزرمز ها را بوجود آورد كه منجر به رمز كننده DES گردید . 48 – در سال 1976 در شركت IBM طراحی رمزی براساس رمز لیسوفر به نام رمز FIPS PUB 46 انجام گرفت كه دارای S – BOX پیشرفته و همچنین كاهش اندازه كلید را دربرداشت . و برای بیست سال در برار حملات مقاومت كرد . و بدین خاطر بسیار مورد استفاده قرار گرفت . 49 – در سال 1976 وایت فیلد دیفی و مارتین هلمن برای اولین بار در مقاله خویش كلید عمومی را معرفی كرد . 50 – در سال 1977 براساس مقاله هلمن سه ماتور كار رمز بنامهای رونالد ریوست . عدی شامیر و لئونارد ادلمن رمز RSA ابداع كردند . در اولیل كار سازمان NSA امریكا اجازه نداد كه كار انها انتشار پیدا كند ولی بعد از مدتی كار خود را انتشار دادند كه همزمان با انتشار دو ژورنال Cryptologia و Cryptology می باشد . در واقع این سه نفر مقاله هلمن را عملی كردند . 51 – در سال 1978 در ACM برای اولین بار RSA انتشار یافت 52 – در 1984 الی 1985 رمز ROT13 در خبرنامه USENET انتشار یافت . 53 – در 1990 جیمز مسی ولیی در سیوزرلند رمز های بلوكی استاندارد را كه به دلیل استفاده ساده تر جای رمز DES را گرفت با نام IDEA ابداع كرد . 54 – برای اولین بار در 1991 رمز كوانتومی توسط بنتووبراساد مطرح شد . آنها از یك فوتون جهت انتقال كلید استفاده كردند در این رمز كننده گیرنده و فرستنده باید دارای كابل فیبر اپتیكی باشند 55 – در همین سال زیمرمن رمز PGP را برای اولین بار معرفی كرد این رمز به دلیل سادگی و امنیت بالا مورد استفاده جهانی قرار گرفته است . 56 – در سال 1994 پروفسور رون ریوست به دنبال ابداع RC4 رمز RC5 را ابداع نمود معرفی و اصطلاحات رمز نگاری از زاویه دیگر :رمزنگاری علم کدها و رمزهاست. یک هنر قدیمی است و برای قرنها بمنظور محافظت از پیغامهایی که بین فرماندهان، جاسوسان و دیگران ردوبدل می‌شده، استفاده شده است تا پیغامهای آنها محرمانه بماند. ثبات هویت فرستنده و گیرنده پیغام داریم و در ضمن باید از عدم تغییر محتوای پیغام مطمئن شویم. این سه موضوع یعنی محرمانگی، تصدیق هویت و جامعیت در قلب امنیت ارتباطات دیتای مدرن قرار دارند و می‌توانند از رمزنگاری استفاده کنند.اغلب این مساله باید تضمین شود که یک پیغام فقط میتواند توسط کسانی خوانده شود که پیغام برای آنها ارسال شده است و دیگران این اجازه را ندارند. روشی که تامین کننده این مساله باشد “رمزنگاری” نام دارد. رمزنگاری هنر نوشتن بصورت رمز است بطوریکه هیچکس به غیر از دریافت کننده موردنظر نتواند محتوای پیغام را بخواند. رمزنگاری مخفف‌ها و اصطلاحات مخصوص به خود را دارد. برای درک عمیق‌تر به مقداری از دانش ریاضیات نیاز است. برای محافظت از دیتای اصلی ( که بعنوان plaintext شناخته می‌شود)، آنرا با استفاده از یک کلید (رشته‌ای محدود از بیتها) بصورت رمز در می‌آوریم تا کسی که دیتای حاصله را می‌خواند قادر به درک آن نباشد. دیتای رمزشده (که بعنوان ciphertext شناخته می‌شود) بصورت یک سری بی‌معنی از بیتها بدون داشتن رابطه مشخصی با دیتای اصلی بنظر می‌رسد. برای حصول متن اولیه دریافت‌کننده آنرا رمزگشایی می‌کند. یک شخص ثالت (مثلا یک هکر) می‌تواند برای اینکه بدون دانستن کلید به دیتای اصلی دست یابد، کشف رمز‌نوشته (cryptanalysis) کند. بخاطرداشتن وجود این شخص ثالث بسیار مهم است. رمزنگاری دو جزء اصلی دارد: یک الگوریتم و یک کلید. الگوریتم یک مبدل یا فرمول ریاضی است. تعداد کمی الگوریتم قدرتمند وجود دارد که بیشتر آنها بعنوان استانداردها یا مقالات ریاضی منتشر شده‌اند. کلید، یک رشته از ارقام دودویی (صفر و یک) است که بخودی‌خود بی‌معنی است. رمزنگاری مدرن فرض می‌کند که الگوریتم شناخته شده است یا می‌تواند کشف شود. کلید است که باید مخفی نگاه داشته شود و کلید است که در هر مرحله پیاده‌سازی تغییر می‌کند. رمزگشایی ممکن است از همان جفت الگوریتم و کلید یا جفت متفاوتی استفاده کند. دیتای اولیه اغلب قبل از رمزشدن بازچینی می‌شود؛ این عمل عموما بعنوان scrambling شناخته می‌شود. بصورت مشخص‌تر، hash functionها بلوکی از دیتا را (که می‌تواند هر اندازه‌ای داشته باشد) به طول از پیش مشخص‌شده کاهش می‌دهد. البته دیتای اولیه نمی‌تواند از hashed value بازسازی شود. Hash functionها اغلب بعنوان بخشی از یک سیستم تایید هویت مورد نیاز هستند؛ خلاصه‌ای از پیام (شامل مهم‌ترین قسمتها مانند شماره پیام، تاریخ و ساعت، و نواحی مهم دیتا) قبل از رمزنگاری خود پیام، ساخته ‌و hash می‌شود.یک چک تایید پیام (Message Authentication Check) یا MAC یک الگوریتم ثابت با تولید یک امضاء برروی پیام با استفاده از یک کلید متقارن است. هدف آن نشان دادن این مطلب است که پیام بین ارسال و دریافت تغییر نکرده است. هنگامی که رمزنگاری توسط کلید عمومی برای تایید هویت فرستنده پیام استفاده می‌شود، منجر به ایجاد امضای دیجیتال (digital signature) می‌شود. الگوریتم‌ها طراحی الگوریتمهای رمزنگاری مقوله‌ای برای متخصصان ریاضی است. طراحان سیستمهایی که در آنها از رمزنگاری استفاده می‌شود، باید از نقاط قوت و ضعف الگوریتمهای موجود مطلع باشند و برای تعیین الگوریتم مناسب قدرت تصمیم‌گیری داشته باشند. اگرچه رمزنگاری از اولین کارهای شانون (Shannon) در اواخر دهه 40 و اوایل دهه 50 بشدت پیشرفت کرده است، اما کشف رمز نیز پابه‌پای رمزنگاری به پیش آمده است و الگوریتمهای کمی هنوز با گذشت زمان ارزش خود را حفظ کرده‌اند. بنابراین تعداد الگوریتمهای استفاده شده در سیستمهای کامپیوتری عملی و در سیستمهای برپایه کارت هوشمند بسیار کم است. 1-2 سیستمهای کلید متقارن یک الگوریتم متقارن از یک کلید برای رمزنگاری و رمزگشایی استفاده می‌کند. بیشترین شکل استفاده از رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد data encryption algorithm یا DEA است که بیشتر بعنوان DES شناخته می‌شود. DES یک محصول دولت ایالات متحده است که امروزه بطور وسیعی بعنوان یک استاندارد بین‌المللی شناخته ‌می‌شود. بلوکهای 64بیتی دیتا توسط یک کلید تنها که معمولا 56بیت طول دارد، رمزنگاری و رمزگشایی می‌شوند. DES از نظر محاسباتی ساده است و براحتی می‌تواند توسط پردازنده‌های کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد. این روش بستگی به مخفی‌بودن کلید دارد. بنابراین برای استفاده در دو موقعیت مناسب است: هنگامی که کلیدها می‌توانند به یک روش قابل اعتماد و امن توزیع و ذخیره شوند یا جایی که کلید بین دو سیستم مبادله می‌شوند که قبلا هویت یکدیگر را تایید کرده‌اند عمر کلیدها بیشتر از مدت تراکنش طول نمی‌کشد. رمزنگاری DES عموما برای حفاظت دیتا از شنود در طول انتقال استفاده می‌شود. کلیدهای DES 40بیتی امروزه در عرض چندین ساعت توسط کامپیوترهای معمولی شکسته می‌شوند و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت طولانی اعتبار استفاده شود. کلید 56بیتی عموما توسط سخت‌افزار یا شبکه‌های بخصوصی شکسته می‌شوند. رمزنگاری DESسه‌تایی عبارتست از کدکردن دیتای اصلی با استفاده از الگوریتم DES که در سه مرتبه انجام می‌گیرد. (دو مرتبه با استفاده از یک کلید به سمت جلو (رمزنگاری) و یک مرتبه به سمت عقب (رمزگشایی) با یک کلید دیگر) این عمل تاثیر دوبرابر کردن طول مؤثر کلید را دارد؛ این عمل یک عامل مهم در قدرت رمزکنندگی است. الگوریتمهای استاندارد جدیدتر مختلفی پیشنهاد شده‌اند. الگوریتمهایی مانند Blowfish و IDEA برای زمانی مورد استفاده قرار گرفته‌اند اما هیچکدام پیاده‌سازی سخت‌افزاری نشدند بنابراین بعنوان رقیبی برای DES برای استفاده در کاربردهای میکروکنترلی مطرح نبوده‌اند. پروژه استاندارد رمزنگاری پیشرفته دولتی ایالات متحده (AES) الگوریتم Rijndael را برای جایگزینی DES بعنوان الگوریتم رمزنگاری اولیه انتخاب کرده است. الگوریتم Twofish مشخصا برای پیاده‌سازی در پردازنده‌های توان‌ـ‌پایین مثلا در کارتهای هوشمند طراحی شد. در 1998 وزارت دفاع ایالات متحده تصمیم گرفت که الگوریتمها Skipjack و مبادله کلید را که در کارتهای Fortezza استفاده شده بود، از محرمانگی خارج سازد. یکی از دلایل این امر تشویق برای پیاده‌سازی بیشتر کارتهای هوشمند برپایه این الگوریتمها بود. برای رمزنگاری جریانی (streaming encryption) (که رمزنگاری دیتا در حین ارسال صورت می‌گیرد بجای اینکه دیتای کدشده در یک فایل مجزا قرار گیرد) الگوریتم RC4 سرعت بالا و دامنه‌ای از طول کلیدها از 40 تا 256 بیت فراهم می‌کند. RC4 که متعلق به امنیت دیتای RSA است، بصورت عادی برای رمزنگاری ارتباطات دوطرفه امن در اینترنت استفاده می‌شود. رمزنگاری به ‌شیوه كلید متقارن‌همان‌طور كه در شكل می‌بینید، در رمزنگاری به شیوه كلید متقارن، تابع رمزگذاری (‌)E با استفاده از یك كلید محرمانه k، پیغام متنی P را به متن رمزشده C تبدیل می‌كند. دریافت‌كننده این پیغام رمزشده، با اعمال تابع رمزگشایی (‌)D و همان كلید محرمانه k، این پیغام را به حالت اولیه P بازمی‌گرداند.بهترین تكنیك رمزنگاری به شیوه كلید متقارن، DES یا‌ Data Encryption Standard نام دارد و از سال 1976 مورد استفاده قرار گرفته است. تكنیك DES در واقع یك متن كدشدهِ تكراری است كه به قطعات 64 بیتی متن ساده متصل می‌شود. تابع رمزگذاری به‌ واسطه جابه‌جایی، توسعه، انتقال، فشرده‌سازی، تعویض و تركیب قطعات 64 بیتی متن پیغام با یك كلید 56 بیتی، هر قطعه از متن ورودی را به یك قطعه متن 64 بیتی كدشده تبدیل می‌كند. گیرنده پیغام، با اجرای معكوس مراحل رمزگذاری و با استفاده از همان كلید 56 بیتیk ، قادر است پیغام را به حالت اولیه بازگرداند. شکل1- فرآیند رمزگذاری از فرمول (C=E(P تبعیت می‌کند. برای رمزگشایی پیغام از فرمول (P=D(C استفاده می‌شود. در رمزگذاری به شیوه کلید متقارن،رابطه K1=K2 برقرار است. در رمزگذاری به شیوه کلید عمومی، کلید رمزگذاری با کلید عمومی دریافت‌کننده پیغام یکسان است و کلید رمزگشایی همان کلید خصوصی دریافت‌کننده است. تكنیك DES از همان ابتدای كار، به عنوان یك روش ایمن برای انجام تراكنش‌های مالی مورد استفاده قرار گرفت، اما امروزه كارایی گذشته را ندارد. فضای 56 بیتی كلید مورد استفاده در این تكنیك، 2 به توان 56 كلید منحصر به‌فرد تولید می‌كند. بنابراین، جست‌وجوی دقیق فضای كلید، متضمن دستیابی به مقدار كلیدk و تبدیل متن كدشدهC به پیغام اولیه P خواهد بود.با این‌كه فضای 256 بیتی برای انسان‌ها بسیار بزرگ به ‌نظر می‌رسد، جست‌وجوی آن برای ماشین‌های ویژهِ كشف‌رمز یا سوپركامپیوترهای امروزی، چندان مشكل نیست. در نتیجه، محققان روش‌های جدیدی را برای پیاده‌سازی الگوریتم‌های رمزنگاری به‌شیوه كلید متقارن ابداع كرده‌اند. از میان این روش‌ها می‌توان از DES سه‌گانه (در این روش، تكنیك DES سه بار پیاپی و با استفاده از سه كلید 56 بیتی متفاوت اجرا می‌شود. در این نوع رمزنگاری، فضای كلید مود استفاده، معادل یك كلید 168 بیتی خواهد بود.)، تكنیك IDEA یا International Data Encryption Algorithm با كلیدهای 128 بیتی، تكنیك RC4 (كلیدهایی با فضای بالای دو كیلوبیت یا 2048 بیت) و تكنیك RC5 (كلیدهایی با فضای بالای 256 بیت) نام برد. هنگام استانداردسازی روش‌های رمزنگاری در سال 1997 مؤسسه ملی استاندارد و فناوری با برگزاری یك مسابقه عمومی، تكنیك DES را با تكنیك AES یا Advanced Encription Standard جایگزین كرد. برنده این مسابقه روشی موسوم به Rijndael یا Rhine-doll بود كه دو رمزنگار بلژیكی معرفی كردند. تكنیك AES مانند DES نوعی رمزنگاری با استفاده از قطعات تكراری متن كدشده است، اما در آن از متن‌های 128 بیتی همراه كلیدهای 128، 192 یا 256بیتی استفاده می‌شود. بهره‌گیری از كلید 256 بیتی، تعداد 2 به توان 256 انتخاب را برای كلید فراهم می‌كند. جست‌وجوی این فضا حتی برای كامپیوترهای پیشرفتهِ امروزی نیز غیرممكن است.از آنجایی كه برای اجرای رمزنگاری به شیوه كلید متقارن از فرمول‌های ریاضی ساده استفاده می‌شود، این شیوه با سرعت نسبتاً زیادی به اجرا در می‌آید. صرف‌نظر از فضای كلید، تمام رویكردهای رمزنگاری به شیوه كلید متقارن یك ضعف مشابه دارند. برای بازگرداندن پیغام به حالت اولیه، كلید مورد استفاده در رمزگذاری باید در اختیار دریافت‌كننده پیغام قرار بگیرد. در این بین اگر كسی به كلید دسترسی یابد، رمزنگاری پیغام بی‌فایده خواهد بود. برای رفع مشكل انتقال كلید، می‌توان از رمزنگاری به شیوه كلید عمومی بهره گرفت.الگوریتم رمزنگاری قابل بازگشت (Rijndael) string SecureDataAlg(string StrInp,byte[] key,byte[] iv) { byte[] input = Encoding.UTF8.GetBytes(StrInp); CryptoStream cryptoStream = null; RijndaelManaged rijndael = null; ICryptoTransform rijndaelTransform = null; MemoryStream memStream = null; rijndael = new RijndaelManaged(); rijndael.Key = key; rijndael.IV = iv; rijndaelTransform = rijndael.CreateEncryptor(); memStream = new MemoryStream(); cryptoStream = new CryptoStream(memStream, rijndaelTransform, CryptoStreamMode.Write); cryptoStream.Write(input, 0, input.Length); cryptoStream.FlushFinalBlock(); byte[] str = memStream.ToArray(); return Convert.ToBase64String(str); }متغیر key ، 16 بایتی و متغیر iv ، 24 بایتی که به عنوان کلید عمومی و کلید اختصاصی استفاده می شوند. الگوریتم رمزنگاری BlowFish :الگوریتم رمزنگاری متقارن BlowFish یكی از روشهای متداول رمزنگاری است . این الگوریتم با پذیرش كلید عمومی از 32 بیت تا 448 بیت ، جایگزین خوبی برای روشهائی مثل DES است . ( خصوصا در كشورهائی مثل آمریكا كه صدور و فروش نرم افزارهای دارای سیستم رمزنگاری به خارج از كشور ممنوع و برای استفاده های داخلی هم در طول كلید محدودیتهائی وجود دارد.)از این روش امروزه به وفور در نرم افزارهای گسترده و سازمانی استفاده میشه ، به عنوان مثال Oracle . این الگوریتم در سال 1993 توسط Bruce Schneier طراحی و توسعه داده شد فایل هدر برای دسترسی به توابع : #define MAXKEYBYTES 56 /* 448 bits */// #define little_endian 1 /* Eg: Intel */#define big_endian 1 /* Eg: Motorola */ short opensubkeyfile(void);unsigned long F(unsigned long x);void Blowfish_encipher(unsigned long *xl, unsigned long *xr);void Blowfish_decipher(unsigned long *xl, unsigned long *xr); متن الگوریتم و پیاده سازی توابع :#ifdef little_endian /* Eg: Intel */#include <dos.h>#include <graphics.h>#include <io.h>#endif #include <math.h>#include <stdio.h>#include <stdlib.h>#include <time.h> #ifdef little_endian /* Eg: Intel */#include <alloc.h>#endif #include <ctype.h> #ifdef little_endian /* Eg: Intel */#include <dir.h>#include <bios.h>#endif #ifdef big_endian#include <Types.h>#endif #include “Blowfish.h” #define N 16#define noErr 0#define DATAERROR -1#define KEYBYTES 8#define subkeyfilename “Blowfish.dat” unsigned long P[N + 2];unsigned long S[4][256];FILE* SubkeyFile; short opensubkeyfile(void) /* read only */{short error; error = noErr; if((SubkeyFile = fopen(subkeyfilename,”rb”)) == NULL) {error = DATAERROR;} return error;} unsigned long F(unsigned long x){unsigned short a;unsigned short b;unsigned short c;unsigned short d;unsigned long y; d = x & 0x00FF;x >>= 8;c = x & 0x00FF;x >>= 8;b = x & 0x00FF;x >>= 8;a = x & 0x00FF;//y = ((S[0][a] + S[1][b]) ^ S[2][c]) + S[3][d];y = S[0][a] + S[1][b];y = y ^ S[2][c];y = y + S[3][d]; return y;} void Blowfish_encipher(unsigned long *xl, unsigned long *xr){unsigned long Xl;unsigned long Xr;unsigned long temp;short i; Xl = *xl;Xr = *xr; for (i = 0; i < N; ++i) {Xl = Xl ^ P[i];Xr = F(Xl) ^ Xr; temp = Xl;Xl = Xr;Xr = temp;} temp = Xl;Xl = Xr;Xr = temp; Xr = Xr ^ P[N];Xl = Xl ^ P[N + 1]; *xl = Xl;*xr = Xr;} void Blowfish_decipher(unsigned long *xl, unsigned long *xr){unsigned long Xl;unsigned long Xr;unsigned long temp;short i; Xl = *xl;Xr = *xr; for (i = N + 1; i > 1; –i) {Xl = Xl ^ P[i];Xr = F(Xl) ^ Xr; /* Exchange Xl and Xr */temp = Xl;Xl = Xr;Xr = temp;} /* Exchange Xl and Xr */temp = Xl;Xl = Xr;Xr = temp; Xr = Xr ^ P[1];Xl = Xl ^ P[0]; *xl = Xl;*xr = Xr;} short InitializeBlowfish(char key[], short keybytes){short i;short j;short k;short error;short numread;unsigned long data;unsigned long datal;unsigned long datar; /* First, open the file containing the array initialization data */error = opensubkeyfile();if (error == noErr) {for (i = 0; i < N + 2; ++i) {numread = fread(&data, 4, 1, SubkeyFile);#ifdef little_endian /* Eg: Intel We want to process things in byte *//* order, not as rearranged in a longword */data = ((data & 0xFF000000) >> 24) |((data & 0x00FF0000) >> 8) |((data & 0x0000FF00) << 8) |((data & 0x000000FF) << 24);#endif if (numread != 1) {return DATAERROR;} else {P[i] = data;}} for (i = 0; i < 4; ++i) {for (j = 0; j < 256; ++j) {numread = fread(&data, 4, 1, SubkeyFile); #ifdef little_endian /* Eg: Intel We want to process things in byte *//* order, not as rearranged in a longword */data = ((data & 0xFF000000) >> 24) |((data & 0x00FF0000) >> 8) |((data & 0x0000FF00) << 8) |((data & 0x000000FF) << 24);#endif if (numread != 1) {return DATAERROR;} else {S[i][j] = data;}}} fclose(SubkeyFile); j = 0;for (i = 0; i < N + 2; ++i) {data = 0x00000000;for (k = 0; k < 4; ++k) {data = (data << 8) | key[j];j = j + 1;if (j >= keybytes) {j = 0;}}P[i] = P[i] ^ data;} datal = 0x00000000;datar = 0x00000000; for (i = 0; i < N + 2; i += 2) {Blowfish_encipher(&datal, &datar); P[i] = datal;P[i + 1] = datar;} for (i = 0; i < 4; ++i) {for (j = 0; j < 256; j += 2) { Blowfish_encipher(&datal, &datar); S[i][j] = datal;S[i][j + 1] = datar;}}} else {printf(“Unable to open subkey initialization file : %d\n”, error);} return error;} 2-2 سیستمهای کلید نامتقارنسیستمهای کلید نامتقارن از کلید مختلفی برای رمزنگاری و رمزگشایی استفاده می‌کنند. بسیاری از سیستمها اجازه می‌دهند که یک جزء (کلید عمومی یا public key) منتشر شود در حالیکه دیگری (کلید اختصاصی یا private key) توسط صاحبش حفظ شود. فرستنده پیام، متن را با کلید عمومی گیرنده کد می‌کند و گیرنده آن را با کلید اختصاصی خودش رمزنگاری میکند. بعبارتی تنها با کلید اختصاصی گیرنده می‌توان متن کد شده را به متن اولیه صحیح تبدیل کرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام مطلع است اما نمی‌تواند از متن کدشده به متن اصلی دست یابد، بنابراین پیام کدشده برای هرگیرنده‌ای بجز گیرنده مورد نظر فرستنده بی‌معنی خواهد بود. معمولترین سیستم نامتقارن بعنوان RSA شناخته می‌شود (حروف اول پدیدآورندگان آن یعنی Rivest ، Shamir و Adlemen است). اگرچه چندین طرح دیگر وجود دارند. می‌توان از یک سیستم نامتقارن برای نشاندادن اینکه فرستنده پیام همان شخصی است که ادعا می‌کند استفاده کرد که این عمل اصطلاحا امضاء نام دارد. RSA شامل دو تبدیل است که هرکدام احتیاج به بتوان‌رسانی ماجولار با توانهای خیلی طولانی دارد:   • امضاء، متن اصلی را با استفاده از کلید اختصاصی رمز می‌کند؛ • رمزگشایی عملیات مشابه‌ای روی متن رمزشده اما با استفاده از کلید عمومی است. برای تایید امضاء بررسی می‌کنیم که آیا این نتیجه با دیتای اولیه یکسان است؛ اگر اینگونه است، امضاء توسط کلید اختصاصی متناظر رمزشده است. به بیان ساده‌تر چنانچه متنی از شخصی برای دیگران منتشر شود، این متن شامل متن اصلی و همان متن اما رمز شده توسط کلید اختصاصی همان شخص است. حال اگر متن رمزشده توسط کلید عمومی آن شخص که شما از آن مطلعید رمزگشایی شود، مطابقت متن حاصل و متن اصلی نشاندهنده صحت فرد فرستنده آن است، به این ترتیب امضای فرد تصدیق می‌شود. افرادی که از کلید اختصاصی این فرد اطلاع ندارند قادر به ایجاد متن رمز‌شده‌ نیستند بطوریکه با رمزگشایی توسط کلید عمومی این فرد به متن اولیه تبدیل شود.اساس سیستم RSA این فرمول است: X = Y k (mod r) که X متن کد شده، Y متن اصلی، k کلید اختصاصی و r حاصلضرب دو عدد اولیه بزرگ است که با دقت انتخاب شده‌اند. برای اطلاع از جزئیات بیشتر می‌توان به مراجعی که در این زمینه وجود دارد رجوع کرد. این شکل محاسبات روی پردازنده‌های بایتی بخصوص روی 8 بیتی‌ها که در کارتهای هوشمند استفاده می‌شود بسیار کند است. بنابراین، اگرچه RSA هم تصدیق هویت و هم رمزنگاری را ممکن می‌سازد، در اصل برای تایید هویت منبع پیام از این الگوریتم در کارتهای هوشمند استفاده می‌شود و برای نشاندادن عدم تغییر پیام در طول ارسال و رمزنگاری کلیدهای آتی استفاده می‌شود. ادامه خواندن مقاله پروژه تئوري رمز گذاري

نوشته مقاله پروژه تئوري رمز گذاري اولین بار در دانلود رایگان پدیدار شد.


Viewing all articles
Browse latest Browse all 46175

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>