رمزنگاری چیست ؟


مفاهيم رمزنگاري به زبان ساده

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

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


S---------->R

A


مشخص است که اين علم چه کاربرد وسيعي در کاربردهاي نظامي ‌خواهد داشت و از عوامل اصلي پديد آمدن اين علم همين کاربردهاي نظامي بوده است. از زمينه‌هاي ديگر کاربرد اين علم مي‌توان به مسايل ديپلماتيک بين کشورها و يا احزاب مختلف و يا ... اشاره کرد.
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 قرار مي‌داد.

الگوريتم نامتقارن (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 استفاده مي‌شود.

Public key Cryptography اولين بار در DOS استفاده شد که الگوريتم آن در سال 1991 توسط Phil Zimmerman ارائه داده و به عنوان (PGP ( Pretty Good Privacy به کار گرفته شد. در سال 1994 PGP به صورت multiple platform در آمد و در UNIX و Amiga هم به کار رفت.

بايگانی وبلاگ