مفاهيم رمزنگاری به زبان ساده Cryptography
پنج شنبه 6 خرداد 1389 10:04 AM
مشخص است که
این علم چه کاربرد وسیعی در کاربردهای نظامی خواهد داشت و از عوامل اصلی
پدید آمدن این علم همین کاربردهای نظامی بوده است. از زمینههای دیگر
کاربرد این علم میتوان به مسایل دیپلماتیک بین کشورها و یا احزاب مختلف و
یا ... اشاره کرد.
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 قرار میداد.
شکل بالا نحوه کار کلید متقارن را نشان میدهد که در هر دو مرحله
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 استفاده میشود. ( به شکل زیردقت کنید. )
برخی سایتها و منابعی که برای اطلاع
بیشتر میتوانید به آنها مراجعه کنید:
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
یک منبع
مناسب که به صورت اسلاید به اسلاید مطالب را مطرح کرده است.
•
سایت: 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 رمز شده است.