خلاصه مقاله رمزگذاری عملیاتی است كه طی آن اطلاعات اولیه (که به آن متن آشکار گفته می*شود) با استفاده از یک الگوریتم (که الگوریتم رمز نامیده می*شود) و یك کمیت محرمانه (که به آن كليد رمز گفته می*شود) به متن غیر قابل فهم دیگری (که به آن متن رمز گفته می*شود) تبديل می*شود به نحوی که بدون دسترسی به کليد رمز، دستيابی به اطلاعات اولیه از روی متن رمز شده غيرممكن باشد.
متن کامل مقاله
به عملیات معکوس رمزگذاری، رمزگشایی گفته می*شود که به معنای بازیابی متن آشکار با دانستن و استفاده از کلید رمز می*باشد. اگر بازیابی متن آشکار بدون دانستن کلید رمز انجام گیرد، به آن تجزیه و تحلیل رمز گفته می*شود. امروزه مسائل مربوط به رمزگذاری توسعهٔ زیادی یافته است و در حوزهٔ دانش رمزنگاری مورد بررسی قرار می*گیرد.

استفاده از عملیات رمزگذاری دارای سابقهٔ چند هزار ساله است و مدت زیادی است که توسط دولت*ها و سیستم*های نظامی برای رد و بدل اطلاعات به صورت امن مورد بهره*برداری قرار گرفته است. اما امروزه با هدف محافظت از اطلاعات در بسیاری از کاربردها و سیستم*های مدرن انسانی مانند موارد زیر نیز به کار گرفته می*شود:

ارتباطات امن در شبکه*های رایانه*ای
سیستم*های تلفن همراه و ماهواره*ای
انواع سیستم*های بی*سیم
دستگاه*های خودپرداز بانک*ها
انواع سیستم*های تجاری و مالی
مدیریت حقوق دیجیتالی
● تاریخچه رمزنگاری یا Cryptography

احتمالا بارها از رمز و رمزنگاری یا کلماتی مانند Encrypt یا Decrypt شنیده*اید. در این مقاله بدون اینکه وارد مباحث پیچیده امنیت و الگوریتم*های رمزنگاری ( Encryption ) شویم ، به زبان ساده با برخی از این مفاهیم آشنا خواهیم شد. هرچه از عمر علم کامپیوتر می*گذرد رشد چشم گیرتری در ابعاد مختلف این علم دیده می شود. اما چه بخواهبم و چه نخواهیم باید قبول کرد که استفاده مخرب از آن نیز رشد بسیاری داشته است و روزانه حملات بسیاری به اطلاعات و شبکه*های کامپیوتری می*شود. این در حالی است که مدت*هاست کارشناسان همراه با شاخه*های متنوع علم کامپیوتر به بحث امنیت و رمزگذاری پرداخته و در این راستا پیشرفت*هایی نیز حاصل شده است. علم رمزنگاری و Cryptography یکی از رشته*هایی است که انسان از سال*های بسیار دور به آن توجه داشته است. در ادامه ، با این علم بصورت جزئی*تر آشنا می*شوید. Cryptography یا رمزنگاری جزو پایه**ای ترین علوم در کار کامپیوتر محسوب می*شود زیرا هر جا احتیاج به انتقال ( و یا بایگانی ) اطلاعاتی است که ارزشمند هستند این بحث مطرح می*شود، که آیا این اطلاعات را می*توان دور از دسترس دیگران نگاه داشت یا نه؟
مشخص است که این علم چه کاربرد وسیعی در کاربردهای نظامی *خواهد داشت و از عوامل اصلی پدید آمدن این علم همین کاربردهای نظامی بوده است. از زمینه*های دیگر کاربرد این علم می*توان به مسایل دیپلماتیک بین کشورها و یا احزاب مختلف و یا ... اشاره کرد.
Cryptography از یک لغت یونانی گرفته شده است که به معنای نوشتن به صورت پنهانی است. این علم تاریخچه* مفصلی دارد که ذکر برخی از موارد تاریخی آن خالی از لطف نیست .
جولیوس سزار در مصر از یک سیستم رمزنگاری استفاده می*کرده که هنوز هم به نام او یعنی Caesar’sCipher شناخته می*شود. در این روش به این صورت عمل می*شده است که حروف الفبا را به صورت دورانی ۳ تا شیفت می*دادند. برای مثال الف به ت تبدیل می*شود ( اگر به آخر الفبا رسیدیم دوباره از اولین حرف الفبا شروع می*کنیم.) مثلا فرض کنید بخواهیم جمله*ی اول را رمز کنیم:
pick up supplies at location x
که به این صورت در می آید:

slfn xt vxttolhv dw orfdwlrq a

همان طور که مشاهده می*شود جمله دوم برای انسان در حالت عادی قابل درک نیست هر چند این روش خیلی ساده و ابتدایی است ولی مثال جالبی از کاربرد این علم در چند صد سال پیش است.
یا در طول جنگ جهانی دوم آمریکایی ها برای آنکه از شکسته شدن رمزهایشان توسط ژاپنی ها جلوگیری کنند مجبور به استفاده از Navajo شدند.
Navajo یک زبان محلی مربوط به بومیان هندی که در شمال New Mexico سکونت داشتند، می باشد و تعداد زیادی از افرادی که به این زبان صحبت می کردند و در جنگ به آمریکایی ها کمک کردند نشان های عالی نظامی گرفتند.
یکی از زیر شاخه های Cryptography علمی، به نام Steganography است که به معنای پنهان کردن اطلاعات در یک عکس یا یک موسیقی و ... است.
از سابقه تاریخی این علم ، به نوشتن اطلاعات توسط آب لیمو یا آب پرتقال روی کاغذ که توسط حرارت آشکار می*شود می*توان اشاره کرد که سابقه چند هزار ساله دارد.
از دیگر موارد تاریخی می*توان به این موضوع اشاره کرد که یونانی ها برای فرستادن پیام*های بسیار دور که باید مخفی می*ماند به این صورت عمل می*کردند که فردی را که قرار بود با اسب پیغام را ببرد کچل می*کردند و پیغام را با جوهر روی سر او می*نوشتند و او را راهی می*کردند تا این فرد به مقصد برسد وی در حدود ۶ ماه تا یک سال در راه بود و در چند ۱۰ روز اول موی او رشد می*کرد و به مقصد که می*رسید موی او را دوباره می*تراشیدند!

● برخی اصطلاحات

در لیست زیر با توجه به ارتباط مستقیم علم رمزنگاری یا همان 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 ) نام دارد و حجم کوچکی دارد (در حد چند ۱۰ بایت) و در صورتیکه فایل تغییر کند 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 قرار می*داد.


▪ الگوریتم نامتقارن (Asymmetric Algorithm )

در روش نامتقارن ، از دو کلید، یکی برای Encrypt کردن و دیگری برای Decrypt کردن استفاده می*شود. این دو کلید، Public Key و Private Key نام دارند.
از پیدایش روش نامتقارن عمر زیادی نمی*گذرد. یکی از زیر شاخه*های اصلی این نوع رمزنگاریPublic Key Cryptography است که امروزه کاربرد وسیعی یافته است که در سال ۱۹۷۶ توسط 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 ها به آن توجه کرده اید) که در سال ۱۹۹۵ توسط Netscape Communications Corp ارایه شد و از الگوریتم های مختلفی مثل RSA و DES و 3DES برای انتقال اطلاعات محرمانه مثل Password ها یا Credit Card Information ها در اینترنت استفاده می*کند و معمولا بین client و server برای Authentication استفاده می*شود.
Public key Cryptography اولین بار در DOS استفاده شد که الگوریتم آن در سال ۱۹۹۱ توسط Phil Zimmerman ارائه داده و به عنوان (PGP ( Pretty Good Privacy به کار گرفته شد. در سال ۱۹۹۴ PGP به صورت multiple platform درآمد و در UNIX و Amiga هم به کار رفت.


منبع:
[برای نمایش لینک باید عضو شوید. ]