PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مفاهيم رمزنگاری به زبان ساده Cryptography



M.A.H.S.A
08-22-2011, 11:15 AM
اشاره :
احتمالا بارها از رمز و رمزنگاری یا کلماتی مانند Encrypt یا Decrypt شنیده‌اید. در این مقاله بدون اینکه وارد مباحث پیچیده امنیت و الگوریتم‌های رمزنگاری ( Encryption ) شویم ، به زبان ساده با برخی از این مفاهیم آشنا خواهیم شد. هرچه از عمر علم کامپیوتر می‌گذرد رشد چشم گیرتری در ابعاد مختلف این علم دیده می شود. اما چه بخواهبم و چه نخواهیم باید قبول کرد که استفاده مخرب از آن نیز رشد بسیاری داشته است و روزانه حملات بسیاری به اطلاعات و شبکه‌های کامپیوتری می‌شود. این در حالی است که مدت‌هاست کارشناسان همراه با شاخه‌های متنوع علم کامپیوتر به بحث امنیت و رمزگذاری پرداخته و در این راستا پیشرفت‌هایی نیز حاصل شده است. علم رمزنگاری و Cryptography یکی از رشته‌هایی است که انسان از سال‌های بسیار دور به آن توجه داشته است. در ادامه ، با این علم بصورت جزئی‌تر آشنا می‌شوید.

تاریخچه رمزنگاری یا Cryptography
Cryptography یا رمزنگاری جزو پایه‌‌ای ترین علوم در کار کامپیوتر محسوب می‌شود زیرا هر جا احتیاج به انتقال ( و یا بایگانی ) اطلاعاتی است که ارزشمند هستند این بحث مطرح می‌شود، که آیا این اطلاعات را می‌توان دور از دسترس دیگران نگاه داشت یا نه؟ ( در اینجا بحث کانال ایده‌آل مطرح می‌شود. برای روشن شدن موضوع ، در شکل زیر فرض کنید که S می‌خواهد پیغام خود را به R بفرستد به گونه‌ای که A متوجه نشود.)
احتمالا بارها از رمز و رمزنگاری یا کلماتی مانند Encrypt یا Decrypt شنیده‌اید. در این مقاله بدون اینکه وارد مباحث پیچیده امنیت و الگوریتم‌های رمزنگاری ( Encryption ) شویم ، به زبان ساده با برخی از این مفاهیم آشنا خواهیم شد. هرچه از عمر علم کامپیوتر می‌گذرد رشد چشم گیرتری در ابعاد مختلف این علم دیده می شود. اما چه بخواهبم و چه نخواهیم باید قبول کرد که استفاده مخرب از آن نیز رشد بسیاری داشته است و روزانه حملات بسیاری به اطلاعات و شبکه‌های کامپیوتری می‌شود. این در حالی است که مدت‌هاست کارشناسان همراه با شاخه‌های متنوع علم کامپیوتر به بحث امنیت و رمزگذاری پرداخته و در این راستا پیشرفت‌هایی نیز حاصل شده است. علم رمزنگاری و Cryptography یکی از رشته‌هایی است که انسان از سال‌های بسیار دور به آن توجه داشته است. در ادامه ، با این علم بصورت جزئی‌تر آشنا می‌شوید. Cryptography یا رمزنگاری جزو پایه‌‌ای ترین علوم در کار کامپیوتر محسوب می‌شود زیرا هر جا احتیاج به انتقال ( و یا بایگانی ) اطلاعاتی است که ارزشمند هستند این بحث مطرح می‌شود، که آیا این اطلاعات را می‌توان دور از دسترس دیگران نگاه داشت یا نه؟ ( در اینجا بحث کانال ایده‌آل مطرح می‌شود. برای روشن شدن موضوع ، در شکل زیر فرض کنید که S می‌خواهد پیغام خود را به R بفرستد به گونه‌ای که A متوجه نشود.)


http://parsidoc.ir/images/stories/doc/code_1.jpg


مشخص است که این علم چه کاربرد وسیعی در کاربردهای نظامی ‌خواهد داشت و از عوامل اصلی پدید آمدن این علم همین کاربردهای نظامی بوده است. از زمینه‌های دیگر کاربرد این علم می‌توان به مسایل دیپلماتیک بین کشورها و یا احزاب مختلف و یا ... اشاره کرد.
Cryptography از یک لغت یونانی گرفته شده است که به معنای نوشتن به صورت پنهانی است. این علم تاریخچه‌ مفصلی دارد که ذکر برخی از موارد تاریخی آن خالی از لطف نیست .
جولیوس سزار در مصر از یک سیستم رمزنگاری استفاده می‌کرده که هنوز هم به نام او یعنی Caesar’sCipher شناخته می‌شود. در این روش به این صورت عمل می‌شده است که حروف الفبا را به صورت دورانی 3 تا شیفت می‌دادند. برای مثال الف به ت تبدیل می‌شود ( اگر به آخر الفبا رسیدیم دوباره از اولین حرف الفبا شروع می‌کنیم.) مثلا فرض کنید بخواهیم جمله‌ی اول را رمز کنیم:

pick up supplies at location x
که به این صورت در می آید:

slfn xt vxttolhv dw orfdwlrq a
همان طور که مشاهده می‌شود جمله دوم برای انسان در حالت عادی قابل درک نیست هر چند این روش خیلی ساده و ابتدایی است ولی مثال جالبی از کاربرد این علم در چند صد سال پیش است.
یا در طول جنگ جهانی دوم آمریکایی ها برای آنکه از شکسته شدن رمزهایشان توسط ژاپنی ها جلوگیری کنند مجبور به استفاده از Navajo شدند.
Navajo یک زبان محلی مربوط به بومیان هندی که در شمال New Mexico سکونت داشتند، می باشد و تعداد زیادی از افرادی كه به این زبان صحبت می كردند و در جنگ به آمریکایی ها کمک کردند نشان های عالی نظامی گرفتند.
یکی از زیر شاخه های Cryptography علمی، به نام Steganography است که به معنای پنهان کردن اطلاعات در یک عکس یا یک موسیقی و ... است.
از سابقه تاریخی این علم ، به نوشتن اطلاعات توسط آب لیمو یا آب پرتقال روی کاغذ که توسط حرارت آشکار می‌شود می‌توان اشاره کرد که سابقه چند هزار ساله دارد.
از دیگر موارد تاریخی می‌توان به این موضوع اشاره کرد که یونانی ها برای فرستادن پیام‌های بسیار دور که باید مخفی می‌ماند به این صورت عمل می‌کردند که فردی را که قرار بود با اسب پیغام را ببرد کچل می‌کردند و پیغام را با جوهر روی سر او می‌نوشتند و او را راهی می‌کردند تا این فرد به مقصد برسد وی در حدود 6 ماه تا یک سال در راه بود و در چند 10 روز اول موی او رشد می‌کرد و به مقصد که می‌رسید موی او را دوباره می‌تراشیدند!

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

Encryption:
در علم cryptography به پنهان سازی اطلاعات گفته می‌شود.
Decryption :
معکوس encryption است و در crypto به آشکار سازی اطلاعات پنهان شده گفته می‌شود.
Plain text :
به متنی گفته می‌شود که معنای آن بدون تغییر خاصی قابل درک است.
Cipher :
به روشی برای تبدیل plain text به متنی که معنای آن پنهان باشد cipher گفته می‌شود.
Cryptanalysis :
به هنر شکستن متون cipher شده گفته می‌شود.
Intruder :
در لغت به معنای مزاحم است ولی در اینجا به معنای کسی است که یک كپی از cipher text دارد و تمایل به شکستن رمز دارد. منظور از شکستن رمز یعنی decrypt کردن آن متن که خود دو نوع است activeintruder که می‌تواند اطلاعات را روی خط عوض کند و تغییر دهد و passive intruder که فقط می‌تواند اطلاعات روی خط را داشته باشد و قابلیت تغییر آنها را ندارد.
Protocol :
به روش و یا قرار دادی که بین دو یا چند نفر برای تبادل اطلاعات گذاشته می‌شود گفته می‌شود.
Intrusion Points :
نقاطی که یک نفوذگر بتواند به اطلاعات با ارزش دست پیدا کند.
Internal Access Point :
به سیستم‌هایی گویند که در اتاق یا در شبکه داخلی مستقرند و هیچ امنیتی (‌ LocalSecurity ) روی آنها تنظیم نشده باشد و احتمال حمله به آنها وجود دارد.
External Access Point :
تجهیزاتی که ما را به شبکه خارجی مانند اینترنت متصل می‌کنند یا Applicationهایی که از طریق اینترنت کار می‌کنند و احتمال حمله به آنها وجود دارد.
Attack :
هر چیزی که مکانیزم امنیت سیستم شما را دور زده و باعث تخریب گردد را حمله یا Attack گویند.
از انواع حمله می‌توان به موارد زیر اشاره کرد:
ـ DoS
ـ DDoS
ـ Spoofing (‌ مانند MAC Spoofing ، IP Spoofing و Web Spoofing )
ـ‌ Man-in-the-Middle
ـ Password Guessing
Key :
به اطلاعاتی گفته می‌شود که با استفاده از آن بتوان cipher text (متنی که cipher شده) را به plain text تبدیل کرد.( یا برعكس ) به عبارت ساده یک متن رمز شده توسط یک Key با الگوریتم مناسب ، به متن ساده تبدیل می‌شود.

بحث هش ( Hash Algorithm )
روش Hash یک روش یکطرفه ( One Way Function ) است كه برای مطمئن بودن از عدم تغییر data استفاده می شود. (حفظ تمامیت یا Integrity) در این روش از فایل یک واحدی از دیتا ایجاد می‌کند که فایل هش ( Hash File ) نام دارد و حجم كوچكی دارد (در حد چند 10 بایت) و در صورتیکه فایل تغییر کند Hash آن نیز تغییر می‌کند. در این روش هم در مبدا و هم در مقصد ، از فایلی که قرار است منتقل شود Hash گرفته می‌شود که باید Hash مبدا و مقصد با هم برابر باشد. اگر در طول مسیر انتقال فایل به هر دلیلی فایل تغییر کند Hash مبدا و مقصد یکی نخواهد شد. الگوریتم Hash خود روش‌های گوناگونی دارد که عبارتند از:
روش MD4
روش MD5
روش SHA-A

انواع keyهایی که در Encryption استفاده می شوند:.
دو مدل و الگوریتم برای کلید وجود دارد:
ـ الگوریتم متقارن یا Symmetric Algorithm
ـ الگوریتم نامتقارن یا AsymmetricAlgorithm
الگوریتم متقارن (Symmetric Algorithm )

در روش Symmetric Key Cryptography یک کلید برای encrypt و decrypt کردن Cipher Text وجود دارد که به آن کلید معمولا secret key گفته می‌شود به همین دلیل symmetric ( متقارن ) نامیده می‌شود.
متن یا فایلی که با یک کلید و الگوریتم در مبدا ، رمز (encrypt) می‌شود با همان کلید و همان الگوریتم در مقصد باز می‌شود. به عبارت دیگر دری که قفل شد فقط با همان کلید باز می‌شود.
در این روش کلید باید بین فرستنده و گیرنده secret نگاه داشته شود زیرا که با داشتن کلید به راحتی می‌توان Cipher Text را Decrypt کرد.

الگوریتم‌های این روش عبارتند از:
DES
3DES
AES
IDEA
Blow Fish
RC4

این روش معمولا از روش نامتقارن کم هزینه‌تر است و سریع تر انجام می‌شود و معمولا کلیدها خیلی بزرگ هستند و الگوریتم‌های آن چند هزار سال است که در حال بهبودند و به خوبی شناخته شده هستند. مساله اصلی در این نوع cryptography آن است که چگونه کلیدی را برای ارتباط به طرف مقابل یعنی مقصد اعلام کرد (چون خط انتقال ممکن است secure نباشد).
یکی از ساده ترین الگوریتم‌هایی که در روش متقارن استفاده می‌شود XOR کردن معمولی Plain Text با کلید مورد نظر است که اگر دوباره Cipher Text را با کلید مورد نظر XOR کنیم PlainText به دست می‌آید و این به دلیل خواص XOR است.
جالب است بدانید که نسخه های اولیه Yahoo Messenger برای ذخیره کردن Password ها روی ماشین ، آن را با User Name شما XOR کرده و در registry قرار می‌داد.

http://parsidoc.ir/images/stories/doc/code_2.jpg


شکل بالا نحوه‌ کار کلید متقارن را نشان می‌دهد که در هر دو مرحله Encryption و Decryption از یک کلید K استفاده شده است.

الگوریتم نامتقارن (Asymmetric Algorithm )
در روش نامتقارن ، از دو کلید، یکی برای Encrypt کردن و دیگری برای Decrypt کردن استفاده می‌شود. این دو کلید، Public Key و Private Key نام دارند.
از پیدایش روش نامتقارن عمر زیادی نمی‌گذرد. یکی از زیر شاخه‌های اصلی این نوع رمزنگاریPublic Key Cryptography است که امروزه کاربرد وسیعی یافته است که در سال 1976 توسط Whitfield Diffie و Martin Hellman به عنوان روشیی برای تبادل کلید روی خط غیر secure برای Symmetric Key Cryptography مطرح شد (به عنوان مثال الگوریتم DH.).
در الگوریتم DH ، یک جفت کلید به نام های Public Key و Private Key وجود دارند و پیغامی که توسط Public Key رمز شود تنها توسط Privet Key قابل Decrypt کردن است. بنابراین اگر شما Public Key مرا داشته باشید و پیغامی را توسط آن رمز کنید و برای من بفرستید می‌توانید اطمینان داشته باشید که فقط من می‌توانم این اطلاعات را Decrypt کنم. این مطلب از یک جهت دیگر نیز جالب است و آن این است که اگر شما بتوانید یک پیغام را با Public Key مربوط به من Decrypt کنید می‌توانید اطمینان داشته باشید که این پیغام با Private Key من Encrypt شده است. زیرا فرض بر آن است که هیچ کسی نمی‌تواند Private Key من را داشته باشد. (و این روش باعث می شود كه عدم انكار پذیری ایجاد شود یعنی من نتوانم منكر فرستادن این پیغام شوم.)
ولی Public Key من را ممکن است هر کسی داشته باشد. بنا براین اگر من بخواهم پیغامی را به شما بفرستم از Public Key شما استفاده می‌کنم. معمولا الگوریتم های مربوط به کلید نامتقارن کندتر هستند ولی در عوض اطمینان بیشتری را برای ما از جهت secure ماندن اطلاعات فراهم می‌کنند.

برخی الگوریتم‌های روش نامتقارن عبارتند از:
«»‌ Elliptic Curve Cryptography
«» RSA
«» BlindSignatures
«»‌ Diffie-Hellman ( الگوریتم DH )
«» Elgamal Discrete logCryptosystem
«» Zero-knowledge Proofs

حال می‌توان از یک روش ترکیبی که توضیح داده شد استفاده کنیم یعنی آنکه ما از یک روش symmetric keycryptography برای تبادل اطلاعات استفاده کنیم ولی کلید را به وسیله‌ی روش asymmetric key cryptography روی خط منتقل کنیم تا سرعت کار نیز مناسب تر باشد.
مثال کاربردی از این بحث ، می‌توان به (SSL ( Secure Socket Layer اشاره کرد ( احتمالا در Browser Internet ها به آن توجه کرده اید) که در سال 1995 توسط Netscape Communications Corp ارایه شد و از الگوریتم های مختلفی مثل RSA و DES و 3DES برای انتقال اطلاعات محرمانه مثل Password ها یا Credit Card Information ها در اینترنت استفاده می‌کند ومعمولا بین client و server برای Authentication استفاده می‌شود. ( به شکل زیردقت کنید. )



http://parsidoc.ir/images/stories/doc/code_3.jpg

Public key Cryptography اولین بار در DOS استفاده شد که الگوریتم آن در سال 1991 توسط Phil Zimmerman ارائه داده و به عنوان (PGP ( Pretty Good Privacy به کار گرفته شد. در سال 1994 PGP به صورت multiple platform در آمد و در UNIX و Amiga هم به کار رفت.
برخی سایت‌ها و منابعی که برای اطلاع بیشتر می‌توانید به آنها مراجعه کنید:
• سایت: www.all.net/books/ip/Chap2-1.html
یک سایت بسیار جالب که حاوی تاریخچه مفصلی در مورد رمزنگاری است.

• کتاب Computer Networks , Fourth Edition -Andrew S. Tanenbaum
که فصل هشتم آن توضیحات کاملی در مورد Cryptography و کاربرد آن در علوم امروزی امنیت شبکه دارد.

• سایت:www.usenix.org (http://www.usenix.org/)
یک منبع مناسب که به صورت اسلاید به اسلاید مطالب را مطرح کرده است.

• سایت: www.cs.wisc.edu/~koconnor/applets/index.html :
تعدادی java applet که انواع مختلف Cryptography های متداول را به صورت interactive پوشش داده است.

• سایت: www.pgp.com
توضیحاتی در مورد pretty good privacy و همچنین نرم افزار تجاری آن.

• سایت: www.cryptographyworld.com/index.htm
یک دایره المعارف در مورد الگوریتم های مختلف encryption و دلایل استفاده از آن و ...

• سایت: stats.distributed.net/projects.php?project_id=5
یک پروژه‌ی توزیع شده روی کامپیوترهای داوطلب در سطح اینترنت برای شکستن رمز یک متن که توسط یکی از بهترین الگوریتم‌های نامتقارن به اسم RC5-64 رمز شده است.
منبع : ماهنامه رايانه خبر