تاريخچه رمزنگاري يا Cryptography
Cryptography يا رمزنگاري جزو پايهاي ترين علوم در کار کامپيوتر محسوب ميشود زيرا هر جا احتياج به انتقال ( و يا بايگاني ) اطلاعاتي است که ارزشمند هستند اين بحث مطرح ميشود، که آيا اين اطلاعات را ميتوان دور از دسترس ديگران نگاه داشت يا نه؟ ( در اينجا بحث کانال ايدهآل مطرح ميشود. براي روشن شدن موضوع ، در شکل 1 فرض کنيد که S ميخواهد پيغام خود را به R بفرستد به گونهاي که A متوجه نشود.)
شکل 1
مشخص است که اين علم چه کاربرد وسيعي در کاربردهاي نظامي خواهد داشت و از عوامل اصلي پديد آمدن اين علم همين کاربردهاي نظامي بوده است. از زمينههاي ديگر کاربرد اين علم ميتوان به مسايل ديپلماتيک بين کشورها و يا احزاب مختلف و يا ... اشاره کرد.
Cryptography از يک لغت يوناني گرفته شده است که به معناي نوشتن به صورت پنهاني است. اين علم تاريخچه مفصلي دارد که ذکر برخي از موارد تاريخي آن خالي از لطف نيست .
جوليوس سزار در مصر از يک سيستم رمزنگاري استفاده ميکرده که هنوز هم به نام او يعني Caesar’s Cipher شناخته ميشود. در اين روش به اين صورت عمل ميشده است که حروف الفبا را به صورت دوراني 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 کردن آن متن که خود دو نوع است active intruder که ميتواند اطلاعات را روي خط عوض کند و تغيير دهد و passive intruder که فقط ميتواند اطلاعات روي خط را داشته باشد و قابليت تغيير آنها را ندارد.
Protocol : به روش و يا قرار دادي که بين دو يا چند نفر براي تبادل اطلاعات گذاشته ميشود گفته ميشود.
Intrusion Points : نقاطي که يک نفوذگر بتواند به اطلاعات با ارزش دست پيدا کند.
Internal Access Point : به سيستمهايي گويند که در اتاق يا در شبکه داخلي مستقرند و هيچ امنيتي ( Local Security ) روي آنها تنظيم نشده باشد و احتمال حمله به آنها وجود دارد.
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
ـ الگوريتم نامتقارن يا Asymmetric Algorithm
الگوريتم متقارن (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 کنيم Plain Text به دست ميآيد و اين به دليل خواص XOR است.
جالب است بدانيد که نسخه هاي اوليه Yahoo Messenger براي ذخيره کردن Password ها روي ماشين ، آن را با User Name شما XOR کرده و در registry قرار ميداد.
شکل 2شکل 2 نحوه کار کليد متقارن را نشان ميدهد که در هر دو مرحله 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
«» Blind Signatures
«» Diffie-Hellman ( الگوريتم DH )
«» Elgamal Discrete log Cryptosystem
«» Zero-knowledge Proofs
حال ميتوان از يک روش ترکيبي که توضيح داده شد استفاده کنيم يعني آنکه ما از يک روش symmetric key cryptography براي تبادل اطلاعات استفاده کنيم ولي کليد را به وسيلهي روش asymmetric key cryptography روي خط منتقل کنيم تا سرعت کار نيز مناسب تر باشد.
مثال کاربردي از اين بحث ، ميتوان به (SSL ( Secure Socket Layer ) اشاره کرد ( احتمالا در Browser Internet ها به آن توجه کرده ايد) که در سال 1995 توسط Netscape Communications Corp ارايه شد و از الگوريتم هاي مختلفي مثل RSA و DES و 3DES براي انتقال اطلاعات محرمانه مثل Password ها يا Credit Card Information ها در اينترنت استفاده ميکند ومعمولا بين client و server براي Authentication استفاده ميشود. ( به شکل 3 دقت کنيد. )
شکل 3
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/publications/library/proceedings/lisa98
/invited_talks/avolio_html/index.htm
يک منبع مناسب که به صورت اسلايد به اسلايد مطالب را مطرح کرده است.
• سايت 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 رمز شده است.
علاقه مندی ها (Bookmarks)