0

رمزنگاری، چرا و چگونه؟

 
amirpetrucci0261
amirpetrucci0261
کاربر طلایی1
تاریخ عضویت : تیر 1388 
تعداد پست ها : 27726
محل سکونت : http://zoomstar.ir/

رمزنگاری، چرا و چگونه؟
چهارشنبه 10 آذر 1389  11:17 PM

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


رمزنگاری تاریخ طولانی دارد اما در سال 1466 فردی بنام لیون آلبرتی روشی بنام الفبای چندگانه آلبرتی طراحی کرد که پیشرفت مهمی در زمینه رمزنگاری محسوب می شد.همچنین قدم بعدی که باعث تحول و پویایی در این علم شد اختراع کامپیوتر بود.در واقع رمزنگاری با اختراع کامپیوتر معنی واقعی خود را یافت چون کامپیوتر ها اولا خستگی ناپذیرهستند و با سرعت ودقت می توانند به پردازش متن ها بپردازند.

دلایل اصلی رمزنگاری نوین:

1- Data Confidentiality

(دادهای محرمانه): متنی که باید بصورت محرمانه و سری رد و بدل شود و فقط شخص خاصی اجازه فهمیدن محتوای متن را داشته باشد.


2- Data Integrity

(صحت داده ها): داده هایی که باید از دستکاری و تخریب محافظت شوند.


3- Authentication

(تعیین اعتبار): گذروازهایی که مشخص می کند چه شخصی اجازه دسترسی به اطلاعات،برنامه و...رادارد.


4- Digital signature

(امضای دیجیتالی): سیستمی برای تعین هویت که باید منحصر به فرد باشد و همچنین از جعل و دستکاری محافظت شود.

مقدمات رمزنگاری:

1-

Plain Text

متنی که باید رمز شود


2-

Chipper

Text متن رمز شده


3-

Encrypt

پروسه تبدیل متن ساده به رمز


4-

Decrypt

پروسه تبدیل متن رمزشده به متن اصلی


در ضمن استفاده از یک الگوریتم خاص از اعمال زیر برای پیچیده تر شدن متن از روشهای انبساطی (Expansion) ، فشرده سازی (Compression) ، تقسیم بلوکی (Block Division) و...استفاده می شود.سپس توسط الگوریتم های مشهوری مانند RSA,Blowfish,AES,DES متن را به رمزدرآوریم.اماقبل از توضیح درباره الگوریتم ها مختصری در باره یای انحصاری (XOR) توضیح خواهم داد.دراواسط دهه 90 استفاده زیادی از XOR می شد.وقتی شما متنی را به همراه یک کلیدXOR کنید متن نامفهومی نتیجه می شودوعکس این عمل متن قابل فهم را به شماخواهدداد بعنوان مثال وقتی کلمهhello را با عدد9، XORمی کنیدکلمهaleef بدست می آیدو وقتی aleef را با عدد9،XOR می کنیدهمان کلمه hello نتیجه می شود.اساس کار با بیت های تشکیل دهنده کاراکتر است. 0 XOR 0 = 0


0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0

نقص یای انحصاری(XOR):

هر عبارتی که با عدد0، XOR شود تغییری پیدا نخواهد کرد.بعنوان مثال کلمه hello اگر باعدد0،XOR شود نتیجه همان hello خواهد بود.این موضوع وقتی حادتر می شود که بدانیم در فایل های بسیاری مانند فایل های word یک قسمت header وجود دارد که پر از 0 است ودر نتیجه وقتی به متن رمزشده ورد نگاه کنیم مبینیم که کلید رمزبه دفعات تکرار شده است . پس در استفاده از ای انحصاری باید احتیاط کرد.


الگوریتم DES: استاندارد رمزنگاری دادها(DES) در سال 1972 باهمکاری اداره استانداردملی امریکا و IBM طراحی شد ولی سازمان NSA آن را مورد بازنگری قرار داد.این الگوریتم از یک بلوک 64 بیتی دادهاویک کلید 56بیتی استفاده می کند.بنابراین 264 حالت مختلف برای هر کلید به وجود می آید و 256 کلید نیز وجود دارد.در الگوریتم اصلی IBM طول کلید128 بیت بود اماNBSاعلام کرد طول کلید باید به 56 بیت کاهش پیدا کند.الگوریتم DES از ابتدا برای سخت افزار طراحی شده بود ودر سیستم های نرم افزاری بازده بالایی از نظر زمانی نسبت به حالت سخت افزاری ندارد.برای میزان عملکرد یک الگوریتم در نظر بگیرید که بطور مثال 60 میلیون کلمه در ماه باید رمز شود که نیاز به یک الگوریتم سریع و مطمئن داریم.الگوریتم DES در ابتدا در رمزنگاری اسناد ملی آمریکا وپس از آن در تجارت و استفاده های عمومی بکار گرفته شد ولی این الگوریتم امروزه با وجود سیستم های سریع کامپیوتری کارایی خو را از دست داده است.


الگوریتم داخلی DES از یک سری عملیات های جانشینی،جابجایی،XOR کردن و...در 16 مرحله استفاده می کند.


رمزنگاری کلید عمومی:


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

الگوریتم RSA :

در سال 1978 سه نفر به نام های ریوست،شامیر،آدلمن روش رمز نگاری جدیدی به نام RSA (مخفف نام آنها) طراحیکردند که مطابق الگوی جدید کلید عمومی و اختصاصی بود.این الگوریتم بعنوان یک روش مطمئن در رمزنگاری نوین مطرح شد.الگوریتم RSA یک الگوریتم ساده است که از ریاضی محض استفاده می کند.امروزه اکثر الگوریتم های خوب توسط قوانین ریاضی ایجادمی شونداما بطوری که بیاد دارید در الگوریتم های قدیمی مانند DES از جابجایی،کاهش،افزایش و دستکاری در بیت ها و...استفاده می شد.

ساختار داخلی الگوریتم RSA:

ابتدا متنی که باید رمز شود به بلوک هایی تقسیم می شود وبههر بلوک یک عدد صحیح نسبت می دهیم.در این جا براغی سادهتر شدن مطلب از بلوک بندی(تقسیم گروهی) صرف نظر می کنیم و هرکاراکتر از متن را انتخاب کرده وبعنوان عدد صحیح متناظر معادل کد اسکی آن را در نظر می گیریم.بطور مثال کلمه cryptography را رمز می کنیم.فرض می کنیم:


c r i …….y


99 114 105 ….121


P1 P2 P3 …..P12


در مرحله بعد دو عدد (17,2773) معادل (e,n) در نظر می گیریم و طبق فرمول زیر Ci (کاراکتر رمز شده) را بدست می آوریم. Ci = (Pi)e mod n


سپس کاراکتر ها کنار هم چیده شده و متن رمز شده بدست می آید.رمزگشا نیز طبق فرمول زیر متن را رمزگشایی خواهد کرد. Pi = (Ci)d mod n

طریقه ایجاد کلید عمومی و خصوصی درRSA:

دو عدد اول دلخواه اما بزرگ انتخاب می کنیم سپس n را طبق فرمول n = p * q پیدا می کنیم در یک سیستم 256 بیتی طول n باید بزرگتر یا مساوی 300 رقم باشد. عدد z رانیز طبق فرمول z = (p-1) * (q-1) بدست می آوریم.آنگاه عددd رابطوری که رابطه (e * d) mod z = 1 باشد بدست می آوریم.

چند نکته:

1) توضیح بالا الگوریتم RSA را به نحو ساده ای بیان می کند اما در عمل بااستفاده از تکنیک های دیگر و عملیات های باینری الگوریتم فوق را اجرا می کنند.
2) الگوریتم های مبتنی برRSA امروزه بعنوان الگوریتم های مطمئن در تجارت و بخصوص در تجارت الکترونیکی و اسناد بسیار محرمانه استفاده می گردد.این الگوریتم از DESکندتر است بنابراین بیشتر در شبکه ها برای مبادله کلید رمز یا در تجارت الکترونیکی استفاده می شود.
اما چرا این الگوریتم ساده غیر قابل نفوذ شده است؟
نکته در خاصیت اعداد اول است.طبق قوانیین ریاضی وقتی دو عدد اول بزرگ در هم ضرب شوند به سختی می توان از عددبدست آمده به عمل های ضرب شونده (اعداد اول) رسید.بطور مثال در فرمول n = p * q به سختی می توان ازn به p,q (اعداد اول) رسید.در رابطه بااین مطلب به جدول زیر توجه کنید.
جدول زمان تجزیه یک عدد به عوامل اول بر حسب تعداد رقم:

تعداد ارقام زمان محاسبه
50
4 ساعت
75
104 روز
100
74 سال
200
4 میلیون سال
500
4 * 1025 سال

شناخت ابزارها و تکنیک های رمزنگاری یکی از مهمترین عوامل درحوزه امنیت سیستم ها و تجارت الکترونیک می باشد که لازم است در این زمینه برنامه نویسان به کسب مهارت بپردازند. امیدوارم که در این راه قدم کوچکی برداشته باشم .در ضمن این مقاله خالی ازاشکال نیست نظرات و سوالات خود را ازطریق e-mail با نویسنده در میان بگذارید. با آرزوی موفقیت برای دوستان عزیزم.

تشکرات از این پست
دسترسی سریع به انجمن ها