PDA

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



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


http://www.computernews.ir/Files/Gallery/2007/9/CryptoGraphy-01-1_s.jpg

شکل 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 قرار مي‌داد.


http://www.computernews.ir/Files/Gallery/2007/9/CryptoGraphy-02-2_s.jpg (http://www.computernews.ir/img.aspx?l=/files/gallery/2007/9/cryptography-02-2.jpg)

شکل 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 دقت کنيد. )


http://www.computernews.ir/Files/Gallery/2007/9/CryptoGraphy-03-3_s.jpg (http://www.computernews.ir/img.aspx?l=/files/gallery/2007/9/cryptography-03-3.jpg)

شکل 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 (http://www.computernews.ir/links.aspx?l=http://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 (http://www.computernews.ir/links.aspx?l=http://www.usenix.org/publications/library/proceedings/lisa98/invited_talks/avolio_html/index.htm)
يک منبع مناسب که به صورت اسلايد به اسلايد مطالب را مطرح کرده است.

• سايت www.cs.wisc.edu/~koconnor/applets/index.html (http://www.computernews.ir/links.aspx?l=http://www.cs.wisc.edu/%7Ekoconnor/applets/index.html) :
تعدادي java applet که انواع مختلف Cryptography هاي متداول را به صورت interactive پوشش داده است.

• سايت www.pgp.com (http://www.computernews.ir/links.aspx?l=http://www.pgp.com/) :
توضيحاتي در مورد pretty good privacy و همچنين نرم افزار تجاري آن.

• سايت www.cryptographyworld.com/index.htm (http://www.computernews.ir/links.aspx?l=http://www.cryptographyworld.com/index.htm) :
يک دايره المعارف در مورد الگوريتم هاي مختلف encryption و دلايل استفاده از آن و ...

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

uody
15th March 2011, 11:25 PM
رمزنگاري

تاريخچه رمزنگاري

به مطالعات رمزنگاري، cryptography اطلاق مي شود كه از واژه هاي يوناني kryptos به معني پنهان و graphia به معني نوشتن تشكيل شده است. به فرآيند باز كردن (شكستن) يك پيغام رمزنگاري شده بدون داشتن كليد cryptanalysis، به علم ايجاد كدهاي رمزنگاري و شكستن آنها به طور همزمان cryptology و به فرآيند نوشتن مطلبي به صورت رمز شده به طوري كه تنها افراد مجاز قادر به رمزگشايي و خواندن آن باشند، encryption يا همان رمزنگاري گفته مي شود.
در طول تاريخ، رمزنگاري با استفاده از روشهاي تغيير، جابجايي يا اضافه كردن حروف كلمات، براي ارسال پيغام هاي امن از ميان سرزمينهاي دشمن مورد استفاده قرار مي گرفت. به طور طبيعي زماني كه پيغام به مقصد مي رسيد، براي خوانا شدن نياز به رمزگشايي داشت و از همين جا داستان جالب رمزنگاري آغاز مي شود. بسياري از شيوه هاي استفاده شده در زمانهاي دور، پايه هاي امنيت كامپيوتر و شبكه در عصر جديد را تشكيل مي دهند.
صدها و شايد هزاران سال پيش پيغام هاي مهم كه از ميدان جنگ به پشت جبهه ارسال مي شدند به صورت رمزي در مي آمدند تا در صورتي كه سرباز حامل نامه ها اسير شود، اطلاعات حساس لو نروند. امروزه رمزنگاري براي مثال در مورد نامه هاي الكترونيكي مهم انجام مي شود تا در صورتي كه يك مهاجم به شبكه نفوذ كند، نتواند از محتواي ايميل ها آگاهي پيدا كند.
اطلاعات رمزنگاري شده حتي در صورت انتقال از يك شبكه نا امن و حتي در صورت انتشار عمومي، امن باقي خواهند ماند. در برخي سيستم عاملها مانند يونيكس، فايلي كه حاوي كلمه عبور است رمزنگاري مي شود، به طوري كه كشف آن براي مهاجمي كه به صورت غير قانوني به فايل مذكور دسترسي پيدا كرده بسيار سخت خواهد شد.
در گذشته رمزنگاري عملياتي پرهزينه به حساب مي آمد لذا تنها براي محافظت از اطلاعات طبقه بندي شده و حساس مانند اطلاعات نظامي، سرويسهاي امنيتي، نقل و انتقالات مالي و كلمات عبور مورد استفاده قرار مي گرفت. ولي امروزه استفاده از رمزنگاري متداول تر شده و تبديل به روش ارزان قيمتي براي محافظت از ارتباطات و اطلاعات شده است. براي مثال تعداد زيادي از مرورگرها خدمات رمزنگاري را به صورت رايگان يا با هزينه بسيار كم به مشتريان عرضه مي كنند.
سابقه سيستمهاي اوليه رمزنگاري كه گاهي به آنها كد (code) يا رمز (cipher) نيز گفته مي شود، به مصر باستان و حدود 2000 سال پيش باز مي گردد. در آن زمان پيغامهاي دنياي پس از مرگ با كلمات هيروگليف رمز شده يا تغيير شكل يافته بر روي قطعات سنگ حك مي شدند. البته منظور آنها از اين كار حفظ پيغام به صورت محرمانه نبوده است بلكه از اين طريق حالت رمزآلود و معما گونه اي براي پيغامهاي مذكور ايجاد مي كردند. تاريخ رمزنگاري از مصر باستان تا هند، بين النهرين، يونان، تمدن غرب و بالاخره عصر كامپيوتر ادامه پيدا مي كند. در طول تاريخ، رمزنگاري همواره جزئي از جنگ، سياست و حكومت داري بوده است. براي مثال ملكه اسكاتلند جان خود را در قرن شانزدهم از دست داد زيرا دشمنانش، پيغامي را كه از زندان و به صورت رمز شده ارسال كرده بود، رمز گشايي كردند. رمزنگاري و ابزارهاي مربوط به آن در طي قرنها رشد كردند و در الگوريتمهاي كامپيوتري و سيستمهاي مدرن امروزي به اوج خود رسيدند.
محافظت از ارتباطات همواره به عنوان بخش حياتي جنگ ها و نزاع هاي سياسي محسوب مي شود و به همين دليل گسترش رمزنگاري مدرن تا حد زيادي مديون تحقيقاتي است كه زير فشار جنگ جهاني دوم براي شكستن كدهاي رمزنگاري توليد شده توسط ماشين Enigma انجام شده است.
ماشين رمزنگاري Enigma توسط يك مهندس الكترونيك آلماني به نام Arthur Scherbius، در خلال جنگ جهاني اول اختراع شد. او در سال 1918 ماشين مذكور را به نيروي دريايي آلمان ارائه كرد كه مورد قبول واقع نشد. اما چندين سال بعد با ارتقاي امنيتي ماشين مذكور، نيروي دريايي آلمان استفاده از آن را در سال 1926 آغاز كرد. اين ماشين كه در شكل 1 نشان داده شده داراي چندين چرخ دنده است كه حروف الفبا را به حروف ديگري نگاشت مي كند، براي مثال حرف A به حرف P نگاشت مي شود و الي آخر. براي اين كار لازم است اپراتور يك سري تنظيمات اوليه را بر روي دستگاه انجام دهد كه در طرف ديگر دريافت كننده پيغام نيز دقيقاً همان تنظيمات را انجام داده است. براي جلوگيري از كشف سريع نگاشت ها در هر بار تكرار يك حرف، چرخ دنده يك بار مي چرخد و اين بار مثلاً حرف A به جاي اينكه به P نگاشت شود به X نگاشت مي شود. اين كار طبق همان تنظيمات اوليه صورت مي پذيرد. در طرف دريافت كننده نيز جهت رمزگشايي پيغام نياز به يك ماشين Enigma دقيقاً مطابق با طرف فرستنده و همچنين نياز به دانستن تنظيمات اوليه چرخ دنده است.



ماشين Enigma

اولين اقدامات براي شكستن كدهاي Enigma در لهستان انجام شد. در اواخر دهه 1920 دولت لهستان گروهي از افرادي را كه در شكستن كدهاي رمزي مهارت داشتند، مأمور كرد تا از علم رمزنگاري براي كار بر روي شكستن كدهاي آلمانها استفاده كنند. خانم Marian Rejewski و دو رياضيدان ديگر توانستند برخي از پيغامهاي اوليه Enigma را رمزگشايي كنند.
در اوايل دهه 1930 در فرانسه يك آلماني به نام Hans-Thilo Schmidt اطلاعاتي را در مورد تنظيمات اوليه ماشينهاي Enigma در اختيار سازمانهاي اطلاعاتي فرانسه قرار داد. تحليلگران رمزنگاري فرانسوي منابع لازم براي استفاده از اطلاعات مذكور را در اختيار نداشتند و انگليسيها نيز به دليل ناكافي بودن اطلاعات آن را نپذيرفتند. فرانسوي ها اطلاعات مذكور را در اختيار لهستاني ها قرار دادند و Marian Rejewski توانست با استفاده از آنها پيشرفت درخشاني در شكستن كدهاي Enigma پيدا كند.
بعد از سقوط لهستان در سال 1939 ، آنها اطلاعاتشان را در اختيار فرانسوي ها و انگليسي ها قرار دادند. البته آلماني ها، كليدها و طراحي ماشين Enigma را مرتباً تغيير مي دادند و انگليسي ها همچنان به راه حل لهستاني ها تكيه داشتند.
در اواخر جنگ يك پروژه فوق سري به نام Ultra زير نظر رياضيدان معروف آلن تورينگ شروع به كار كرد كه هدف از آن رمزگشايي پيغام هاي نيروي دريايي آلمان در مدت زماني معقول بود. انگيزه شروع اين پروژه اوراقي بود كه در يك قايق نجات غرق شده در مورد رمزنگاري Enigma كشف شد. در اوايل دهه 40 ميلادي آمريكائيها با استفاده از دانش و فناوريي كه از ماشينهاي رمزنگاري ژاپن به دست آورده بودند، يك نسخه مخصوص خود را خلق كردند.
در دهه هاي پس از جنگ جهاني دوم استفاده از كامپيوترها در شكستن كدهاي رمزنگاري شده انقلابي را در رمزنگاري ايجاد كرد و باعث انتشار گسترده رمزنگاري در سازمانهاي نظامي و اطلاعاتي شد و دامنه استفاده از آن تا سيستم هاي كامپيوتري معمولي نيز گسترش پيدا كرده است.
در قسمت بعدي انواع الگويتم هاي رمزنگاري را شرح خواهيم داد.



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

رمزنگاري منجر به تغيير شكل اصل اطلاعات كه به آن متن آشكار يا Plaintext مي گويند به اطلاعات ديگري به نام متن رمز شده يا cipher مي شود كه غالباً ظاهري نامفهوم و تصادفي دارد. اطلاعات تغيير شكل يافته را cryptogram مي نامند.
معمولاً از روش هاي برگشت پذير براي رمزنگاري متون استفاده مي شود به طوري كه دريافت كننده در مقصد بتواند متن رمز را به صورت متن آشكار يا همان متن اوليه در آورد.
تكنيك ها يا قوانيني كه براي رمزنگاري مورد استفاده قرار مي گيرند به عنوان الگوريتم هاي رمزنگاري شناخته مي شوند كه ميزان سادگي يا پيچيدگي يك فرآيند رمزنگاري را تعيين مي كنند. بسياري از روشهاي رمزنگاري از فرمولهاي ساده رياضي استفاده مي كنند كه چندين بار و با تركيب هاي متفاوت به كار گرفته مي شوند. بسياري از آنها نيز از يك مقدار محرمانه به نام كليد براي رمزنگاري و رمزگشايي استفاده مي كنند. كليد نوعي كلمه عبور است كه تنها فرستنده و گيرنده متن از آن آگاهي دارند. الگوريتم رمزنگاري با استفاده از قوانين رياضي كليد مزبور را كه معمولاً رشته اي طولاني از اعداد است، بر اطلاعاتي كه بايد رمزنگاري يا رمزگشايي شوند، اعمال مي كند.
بر خلاف يك كلمه عبور معمولي، كليد به كاربر اجازه دسترسي مستقيم به اطلاعات را نمي دهد. در عوض الگوريتم رمزنگاري با استفاده از كليد مي تواند داده هاي رمز شده را به صورت اوليه درآورد. در واقع بدون كليد، اطلاعات رمزنگاري شده غير قابل دسترسي هستند. در شماره بعدي سري مقالات رمزنگاري با ارائه مثال، به توضيح بيشتر كليدهاي رمزنگاري خواهيم پرداخت.
نوع الگوريتم رمزنگاري، ميزان محرمانگي كليد و چند ويژگي ديگر در مجموع قدرت رمزنگاري را تعيين مي كنند. قدرت رمزنگاري در واقع مشخص كننده ميزان دشواري شكستن يك پيغام رمزنگاري شده است.
بايد در نظر داشت كه معيار اصلي قدرتمند بودن يك الگوريتم رمزنگاري ربطي به وجود احتمال شكستن آن ندارد، زيرا در صورتي كه مقدار كافي از جفت متن آشكار و متن رمزنگاري شده در اختيار باشد، هر الگوريتم رمزنگاري بالاخره شكسته خواهد شد. قدرت اصلي هر الگوريتم رمزنگاري امكان اجراي آن در يك زمان قابل قبول است. متني كه امكان شكسته شدن آن بعد از سالها، آن هم با شبكه اي از سوپركامپيوترها وجود دارد، در حقيقت بسيار امن است.
سيستم هاي رمزنگاري اوليه براي حفظ امنيت به محرمانه ماندن الگوريتم رمزنگاري بسيار وابسته بودند. به تدريج الگوريتمهاي رمزنگاري بر مشكل وابستگي به طول كليد و محرمانگي آن غالب آمده اند. امروزه قابل اطمينان ترين الگوريتم هاي رمزنگاري ناچارند از پس چندين نوبت تحقيق موشكافانه و غيرمحرمانه به خوبي برآيند تا بتوانند اعتماد سازمان ها و مشتريان را جلب كنند. طبيعتاً بسيار سخت است كه الگوريتم هاي رمزنگاري قابل اطمينان ايجاد كرد و آنها را به صورت عمومي و غير محرمانه مورد آزمايش قرار داد.
انتخاب كليد ضعيف يا محافظت نامناسب از آن راه را براي ورود نفوذگران باز مي كند. در صورتي كه يك نفوذگر به يك كليد رمزنگاري دسترسي پيدا كند، حتي قويترين الگوريتم هاي رمزنگاري نيز قادر به حفاظت از داده هاي مورد نظر نيستند.
شكل زير نشان دهنده يك سيستم ساده رمزنگاري و رمزگشايي است.




چرا رمزنگاري؟

رمزنگاري هر سه محور اصلي در مباحث مربوط به امنيت را در بر مي گيرد كه عبارتند از:

محرمانگي

رمزنگاري يك شيوه بسيار خوب براي حفظ اطلاعات به صورت محرمانه است. حتي اگر رايانه يا فايلهاي حاوي اطلاعات رمزنگاري شده به سرقت روند، پي بردن به محتويات فايلهاي رمزنگاري شده بسيار مشكل خواهد بود.

تماميت

رمزنگاري همچنين روشي بسيار خوب براي اطمينان از صحت يا تماميت اطلاعات است. برخي از الگوريتم هاي رمزنگاري علاوه بر حفظ محرمانگي اطلاعات، از آنها در برابر دستكاري اطلاعات نيز محافظت به عمل مي آورند. اين قبيل پردازشها قدرت تشخيص تغييرات جزئي بدخواهانه يا غيرعمدي در اطلاعات را دارا هستند. در حالي كه بسياري از كاربران نظامي، اطلاعاتي يا تجاري بسيار به محرمانه ماندن اطلاعات اهميت مي دهند، كاربران مؤسسات مالي براي صحت و دقت اطلاعات اهميت بسياري قائل هستند. براي آنها بسيار مهم است كه يك مميز جابجا يا يك صفر كم يا زياد نشود. همچنين آزمون تماميت به كاربران شبكه ها اطمينان مي دهد كه ارتباطات آنها تحت تأثير ويروسها يا ديگر نفوذها قرار نگرفته است.

تأييد هويت

رمزنگاري يك روش موفق در فهميدن موثق بودن اطلاعات است. در واقع با رمزنگاري مي توان مطمئن شد كه اطلاعات از همان جايي كه ادعا مي كنند، مي آيند. برخي تكنيكهاي خاص رمزنگاري به كاربر امكان مي دهد تا مشخص كند دقيقاً چه كسي يك بسته اطلاعاتي را ارسال كرده است. اين قضيه در مراودات حقوقي يا مالي اهميت ويژه اي پيدا مي كند. يكي از تكنيكهاي رايج تأييد هويت، امضاي ديجيتالي است. امضاي ديجيتالي براي هر تراكنش يكتا بوده و جعل آن بسيار سخت مي باشد.

شيوه هاي پايه رمزنگاري

دو شيوه پايه براي رمزنگاري به نامهاي رمزنگاري جابجايي و رمزنگاري جايگزيني وجود دارند. در ادامه شيوه هاي مذكور را توضيح خواهيم داد.

رمزنگاري جابجايي (transposition)

رمزنگاري جابجايي به تغيير چيدمان بيت ها، كاراكترها و يا بلوكي از كاراكترهايي كه قبلاً به صورت رمز درآمده اند، اطلاق مي شود. در يك رمزنگاري ساده جابجايي كه در شكل زير نشان داده شده است، حروف متن اوليه بازچيني شده اند. در اين نوع از رمزنگاري حروف به كار رفته در متن اوليه حفظ شده و تنها محل قرار گرفتن آنها جابجا مي شود.



يكي ديگر از روشهاي رمزنگاري جابجايي كه كمي پيچيده تر است در شكل زير نشان داده شده است. در اين روش متن اوليه در سه ستون نوشته مي شود و سپس متن به صورت عمودي بازنويسي مي شود.



رمزنگاري جايگزيني (substitution)

رمزنگاري جايگزيني به جايگزيني بيت هاي واقعي، كاراكترها يا بلاكي از كاراكترها با يك كاراكتر جايگزين اطلاق مي شود. در دو نمونه رمزنگاري جايگزيني ساده كه در شكل زير نشان داده شده است، حروف به كار رفته در متن اوليه با حروف، اعداد يا سمبلهاي ديگر جايگزين شده اند. در اين نوع از رمزنگاري محل قرار گرفتن حروف متن اوليه حفظ شده ولي خود آنها تغيير مي يابند.


يكي ديگر از مثالهاي رمزنگاري جايگزيني شيوه اي است كه ماشين Enigma از آن استفاده مي كرد. براي كسب اطلاعات بيشتر در مورد ماشين مذكور و نحوه كار آن به مقاله تاريخچه رمزنگاري مراجعه فرماييد. يك مثال ديگر رمزنگاري سزار است كه در آن هر حرف با سه حرف جلوتر جايگزين مي شود.
نمونه هاي ذكر شده در اينجا بسيار ساده و رمزنگاري هاي واقعي با شيوه هاي مذكور بسيار پيچيده تر هستند. براي مثال ممكن است در يك الگوريتم رمزنگاري يك حرف، چندين بار با حروف و اعداد ديگر جايگزين شود يا چندين بار جابجا شود. همچنين در اغلب موارد جايگزيني حروف از هيچ قاعده مشخصي پيروي نمي كند.
در قسمت بعدي سري مقاله هاي رمزنگاري به توضيح بيشتر در مورد كليد هاي رمزنگاري، مديريت و انتشار كليد و شيوه هاي استفاده از رمزنگاري در شبكه ها خواهيم پرداخت.
كليدهاي رمزنگاري

تكنيك هاي رمزنگاري پيچيده به راحتي از روش هاي جابجايي يا جايگزيني استفاده نمي كنند. در عوض از يك كليد محرمانه براي كنترل يك توالي طولاني از جابجايي و جايگزيني هاي پيچيده استفاده مي كنند. كليدهاي رمزنگاري و الگوريتم هاي رمزنگاري با يكديگر همكاري مي كنند تا يك متن اوليه را به يك متن رمزي تبديل كنند. در اغلب موارد الگوريتم رمزنگاري ثابت و شناخته شده است و اين كليد رمزنگاري است كه يك نسخه يكتا از اطلاعات رمزنگاري شده توليد مي كند. در زير انواع كليدهاي رمزنگاري توضيح داده شده اند.

o كليدهاي محرمانه

سيستمهاي كليد محرمانه تنها از يك كليد براي رمزنگاري و رمزگشايي اطلاعات استفاده مي كنند. در اين شيوه رمزنگاري، لازم است كه هر جفت فرستنده و گيرنده اطلاعات كليد جداگانه اي را براي رمزنگاري دارا باشند و حفظ كليد به صورت محرمانه بسيار اهميت دارد. امنيت اين روش در گرو حفظ امنيت كليد است. الگوريتم Data Encryption Standard (DES) كه در قسمت بعدي سري مقاله هاي رمزنگاري توضيح داده خواهد شد، يك نمونه از الگوريتم هاي كليد محرمانه است. چون فرض بر اين است كه الگوريتم شناخته شده و معلوم است، امن بودن انتقال و ذخيره كليد بسيار مهم است. كارتهاي هوشمند معمولا براي ذخيره كليدهاي محرمانه استفاده مي‌شوند. در اين حالت تضمين اينكه قلمرو كليد محدود است، مهم است: بايد هميشه فرض كنيم كه يك كارت ممكن است توسط افراد غيرمجاز با موفقيت تحليل گردد، و به اين ترتيب كل سيستم در مخاطره قرار گيرد.
در شكل زير يك عمليات انتقال اطلاعات با استفاده از كليد محرمانه نشان داده شده است كه در آن يك كاربر بانك، اطلاعات را با استفاده از كليد محرمانه رمزنگاري مي كند و براي كارمند بانك ارسال مي كند. وي نيز اطلاعات را با كليد مشابهي رمزگشايي مي كند.


• كليدهاي عمومي و خصوصي

سيستم هايي كه از اين نوع كليدها استفاده مي كنند، نامتقارن خوانده شده و در واقع داراي يك زوج كليد هستند: يك كليد عمومي و يك كليد خصوصي. در اين سيستم هر كاربر داراي دو كليد عمومي و خصوصي است كه لازم است كليد خصوصي محرمانه نگهداري شود ولي كليد عمومي در اختيار همگان است. در اينجا كليد عمومي و خصوصي به يكديگر از لحاظ رياضي وابسته هستند. كاربر مي تواند با استفاده از كليد خصوصي كه در اختيار دارد پيغام خود را رمزنگاري كرده و گيرنده آن را با استفاده از كليد عمومي رمزگشايي كند يا بالعكس.
امتياز اصلي و مهم سيستمهاي كليد نامتقارن اين است كه آنها اجازه مي‌دهند كه يك كليد (كليد خصوصي) با امنيت بسيار بالا توسط صاحب آن نگهداري شود در حاليكه كليد ديگر (كليد عمومي) مي‌تواند منتشر شود. كليدهاي عمومي مي‌توانند همراه پيامها فرستاده شوند يا در فهرستها ليست شوند (شروط و قوانيني براي كليدهاي عمومي در طرح فهرست پيام‌رساني الكترونيكي ITU X.500 وجود دارد)، و از يك شخص به شخص بعدي داده شوند. مكانيسم توزيع كليدهاي عمومي مي‌تواند رسمي (يك مركز توزيع كليد) يا غيررسمي باشد.
يكي از نكات منفي سيستمهاي رمزنگاري با كليد عمومي توسط سناريوي زير توضيح داده شده است. فرض كنيد كاربر پيغام خود را با استفاده از كليد خصوصي رمزنگاري مي كند. دريافت كننده پيغام مي تواند از هويت فرستنده پيغام مطمئن باشد يعني تأييد هويت به خوبي انجام مي شود ولي مشكل اينست كه هر كسي كه دسترسي به كليد عمومي دارد مي تواند اطلاعات مذكور را رمزگشايي كند. لذا اين روش محرمانگي اطلاعات را حفظ نمي كند. از طرف ديگر در صورتي كه اطلاعات توسط كليد عمومي رمزنگاري شوند، از آنجايي كه تنها دارنده كليد خصوصي قادر به رمزگشايي آن است لذا محرمانگي آن حفظ مي شود ولي مشكل در اينست كه چون هر كسي مي تواند به كليد عمومي دسترسي داشته باشد تأييد هويت با مشكل روبرو مي شود.



راه حل مشكل مذكور، همان طور كه در شكل زير نشان داده شده است، استفاده تركيبي از دو روش است به طوري كه هم امكان تأييد هويت وجود داشته باشد و هم محرمانگي اطلاعات حفظ شود. فرستنده پيغام خود را با استفاده از كليد خصوصي كه در اختيار دارد رمزنگاري مي كند و سپس با استفاده از كليد عمومي كه مربوط به گيرنده است آن را مجدداً رمزنگاري مي كند. در اين حالت لازم است گيرنده پيغام ابتدا با استفاده از كليد خصوصي خود پيغام را رمزگشايي كند و سپس نتيجه را با استفاده از كليد عمومي فرستنده مجدداً رمزگشايي كند تا به اصل پيغام دسترسي پيدا كند. در اين صورت پيغام رمزنگاري شده تنها با كليد خصوصي دريافت كننده قابل رمزگشايي است و در نتيجه هم مشكل تأييد هويت و هم حفظ محرمانگي اطلاعات برطرف شده است. در همه حالات فرض مي شود كه دارندگان كليد خصوصي مراقبت هاي لازم را براي حفظ امنيت كليد مزبور به انجام مي رسانند.
البته دو بار رمزنگاري و رمزگشايي همه پيغام لزوماً مورد نياز نيست. از آنجايي كه در صورت استفاده فرستنده از كليد عمومي گيرنده، محرمانگي اطلاعات حفظ مي شود، در نتيجه رمزنگاري تنها بخش كوچكي از پيغام، براي تأييد هويت فرستنده كافي است. اين قضيه ايده اصلي امضاي ديجيتالي را تشكيل مي دهد.


• كليدهاي اصلي و كليدهاي مشتق‌شده (Master keys and derived keys)

يكي از ايراداتي كه به روشهاي پيشين وارد است، تعداد زياد كليدها است كه طبيعتاً منجر به سخت تر شدن مديريت كليد مي شود. يك روش براي كاستن از تعداد كليدهايي كه بايد منتقل و ذخيره شوند، مشتق گرفتن از آنها در زمان مورد نياز است. در يك برنامه اشتقاق كليد، يك كليد اصلي همراه با چند پارامتر مجزا براي محاسبه كليد مشتق‌شده استفاده مي‌شود كه بعداً براي رمزنگاري استفاده مي‌گردد. براي مثال، اگر يك صادركننده با تعداد زيادي كارت سروكار دارد، مي‌تواند براي هر كارت، با استفاده از كليد اصلي، شماره كارت را رمز كند و به اين ترتيب كليد مشتق‌شده حاصل مي‌شود و به آن كارت اختصاص داده مي‌شود.
شكل ديگري از كليدهاي مشتق‌شده با استفاده از tokenها به دست مي آيند كه tokenها محاسبه‌گرهاي الكترونيكي با عملكردهاي مخصوص هستند. ورودي آنها ممكن است، يك مقدار گرفته شده از سيستم مركزي، يك PIN وارد شده توسط كاربر و يا تاريخ و زمان باشد. خود token شامل الگوريتم و يك كليد اصلي است. چنين tokenهايي اغلب براي دسترسي به سيستمهاي كامپيوتري امن استفاده مي‌شوند.

• كليدهاي رمزكننده‌كليد (Key-encrypting keys)
از آنجا كه ارسال كليد يك نقطه ضعف از نظر امنيتي در سيستم ها بشمار مي‌رود، رمزكردن كليدها هنگام ارسال و ذخيره آنها بشكل رمزشده منطقي بنظر مي‌رسد. كليدهاي رمزكننده كليد هرگز به خارج از يك سيستم كامپيوتري (يا كارت هوشمند) ارسال نمي‌شوند و بنابراين مي‌توانند آسانتر محافظت شوند. اغلب براي تبادل كليدها الگوريتم متفاوتي از آنچه كه براي رمزكردن پيامها استفاده مي‌شود، مورد استفاده قرار مي‌گيرد.
از مفهوم دامنه كليد (key domain) براي محدود كردن ميدان كليدها و محافظت كردن از كليدها در دامنه‌شان استفاده مي‌كنيم. معمولاً يك دامنه، يك سيستم كامپيوتري خواهد بود كه مي‌تواند به صورت فيزيكي و منطقي محافظت گردد. كليدهاي استفاده شده در يك دامنه توسط يك كليد رمزكننده‌ كليد محلي ذخيره مي‌شوند. هنگامي كه كليدها مي‌خواهند به يك سيستم كامپيوتري ديگر فرستاده شوند، رمزگشايي و تحت يك كليد جديد رمز مي‌شوند كه اغلب بعنوان كليد كنترل ناحيه (zone control key) شناخته مي‌شوند. با دريافت اين كليدها در طرف ديگر، تحت كليد محلي سيستم جديد رمز مي‌شوند. بنابراين كليدهايي كه در دامنه‌هاي يك ناحيه قرار دارند از دامنه‌اي به دامنه ديگر به صورتي كه بيان گرديد منتقل مي‌شوند.

• كليدهاي نشست (Session keys)
براي محدود كردن مدت زماني كه كليدها معتبر هستند، اغلب يك كليد جديد براي هر نشست يا هر تراكنش توليد مي‌شود. اين كليد ممكن است يك عدد تصادفي توليد شده توسط ترمينالي باشد كه در مرحله تصديق كارت قرار دارد. اگر كارت قادر به رمزگشايي روش كليد عمومي باشد، يعني كليد نشست مي‌تواند با استفاده از كليد عمومي كارت رمز شود.
بخشي از تراكنش كه در آن كليد منتقل مي‌شود اغلب در مقايسه با بقيه تراكنش كوتاهتر است؛ بنابراين بار اضافي اين بخش نسبت به كل تراكنش قابل صرف نظر است. چنانچه بقيه تراكنش به سبب استفاده از كليد متقارن (محرمانه) با بالاسري كمتري رمز شود، زمان پردازش براي فاز تاييد هويت و انتقال كليد قابل پذيرش است. (توضيح اينكه روشهاي رمز متقارن از نامتقارن بمراتب سريعتر هستند بنابراين مي‌توان ابتدا يك كليد متقارن را با استفاده از روش نامتقارن انتقال داد و سپس از آن كليد متقارن براي انجام بقيه تراكنش استفاده كرد.) در مورد الگوريتم هاي رمزنگاري در قسمت بعدي بيشتر توضيح خواهيم داد.
شكل خاصي از كليد نشست، سيستم انتقال كليد است كه در برخي سيستمهاي پرداخت الكترونيك و مبادله ديتاي الكترونيك استفاده مي‌شود. بدين صورت كه در پايان هر تراكنش، يك كليد جديد منتقل مي‌شود و اين كليد براي تراكنش بعدي مورد استفاده قرار مي‌گيرد.

رمزنگاري مبدأ به مقصد و رمزنگاري انتقال

دو سطح ارتباطي پايه وجود دارد كه رمزنگاري مي تواند در آن اجرا شود. رمزنگاري بر اساس اين سطوح به دو دسته رمزنگاري مبدأ به مقصد و رمزنگاري انتقال تقسيم مي شود.
در رمزنگاري مبدأ به مقصد يا end-to-end كه گاهي اوقات به آن رمزنگاري آفلاين هم گفته مي شود، پيغامها در مبدأ و در زمان ارسال رمزنگاري شده و سپس در مقصد رمزگشايي مي شوند. در اين سطح رمزنگاري نيازي نيست كه شبكه از رمزي بودن پيغام آگاهي داشته باشد. گاهي اوقات اين نوع رمزنگاري مي تواند توسط كاربر مورد انتخاب قرار بگيرد. پيغام در تمام طول انتقال رمزشده باقي مي ماند، از ابتدا تا انتها. فايده اين روش در اين است كه احتياجي نيست در تمام گامهاي مسير، تمام نقاط امن باشند. اين اصلي است كه امروزه در سيستمهاي شناخته شده رمزنگاري پيغام به شيوه تونل مانند SSL و TLS مورد استفاده قرار مي گيرد.
در رمزنگاري انتقال يا link encryption كه گاهي به آن رمزنگاري آنلاين هم گفته مي شود، مانند روش قبل پيغام در زمان ارسال رمزنگاري مي شود ولي هر بار كه به يك گره ارتباطي شبكه مي رسد، رمزگشايي شده و دوباره رمزنگاري مي شود. در اين روش رمزنگاري از ديد كاربر پنهان است و به عنوان بخشي از پروسه انتقال اعمال مي شود.
براي هر دو روش نقاط مثبت و منفي وجود دارد كه در زير آورده شده است.

نقاط مثبت روش مبدأ به مقصد:

• قابليت انعطاف بيشتري دارد. كاربر مي تواند تنها اطلاعات مورد نظر خويش را رمزنگاري كند و هر كاربر نيز مي تواند كليد جداگانه اي داشته باشد.
• در اين روش انتشار كليد و مديريت آن ساده تر است.
• با استفاده از اين روش، اطلاعات از ابتدا تا انتها و در كل شبكه محافظت شده باقي مي مانند.
• روشي كارآمدتر است زيرا لازم نيست شبكه هيچگونه تسهيلات خاص رمزنگاري را دارا باشد.

نقاط منفي روش مبدأ به مقصد:

• ممكن است نياز به بررسي برخي از اطلاعات مانند اطلاعات سرآيند و يا مسيريابي به صورت رمزنگاري نشده باشد.
• هر سيستمي نيازمند اجراي نوع يكساني از رمزنگاري است.
• اين روش تنها محتويات پيغام را امن نگاه مي دارد ولي نمي تواند اين واقعيت را مخفي كند كه چنين پيغامي فرستاده شده است.

نقاط مثبت روش انتقال:

• راحت تر است زيرا لازم نيست كاربر هيچ كاري انجام دهد.
• استفاده از آن، در شبكه اي كه گره هاي زيادي دارد راحت تر است.
• در صورتي كه يكي از گره ها مورد سوءاستفاده قرار گيرد تمام شبكه لو نمي رود زيرا هر جفت از گره ها از كليد جداگانه اي استفاده مي كنند.
• در اين روش تمام اطلاعات، حتي اطلاعات سرآيند و مسيريابي رمزنگاري مي شوند.

نقاط منفي روش انتقال:

• انتشار كليد و مديريت آن بسيار مشكل خواهد بود زيرا همه گره هاي شبكه لازم است يك كليد دريافت كنند.
• نقاط آسيب پذير بيشتري وجود دارد زيرا اطلاعات، چندين نوبت به حالت اوليه تبديل مي شود.

الگوريتم هاي رمزنگاري متقارن

يك الگوريتم متقارن از يك كليد براي رمزنگاري و رمزگشايي استفاده مي‌كند. بيشترين شكل استفاده از رمزنگاري كه در كارتهاي هوشمند و البته در بيشتر سيستمهاي امنيت اطلاعات وجود دارد data encryption algorithm يا DEA است كه بيشتر بعنوان DES شناخته مي‌شود. الگوريتم DES يك محصول دولت ايالات متحده است كه امروزه بعنوان يك استاندارد بين‌المللي شناخته ‌شده و بطور وسيعي مورد استفاده قرار مي گيرد. بلوكهاي ۶۴ بيتي ديتا توسط يك كليد تنها كه معمولا ۵۶بيت طول دارد، رمزنگاري و رمزگشايي مي‌شوند. الگوريتم DES از نظر محاسباتي ساده است و به راحتي مي‌تواند توسط پردازنده‌هاي كند (بخصوص آنهايي كه در كارتهاي هوشمند وجود دارند) انجام گيرد.
در دهه 60 ميلادي، با رشد فزاينده فناوري كامپيوتر و نگراني ها در مورد محرمانه و خصوصي بودن ارتباطات، علاقه به ايجاد يك استاندارد رمزنگاري ملي در آمريكا به شدت افزايش پيدا كرد. تلاشها در جهت ايجاد استانداردي بود كه بتواند توسط كامپيوترها و شبكه هاي متفاوت دولتي در آمريكا مورد استفاده قرار گيرد و همچنين در سيستم هاي پيمانكاران دولتي نيز مفيد واقع شود. تلاشهاي مذكور منجر به ايجاد استاندارد رمزنگاري داده يا Data Encryption Standard (DES) گشت كه امروزه به صورت وسيعي در رمزنگاري مورد استفاده قرار مي گيرد.
در سال 1965 موسسه ملي استانداردها و فناوري آمريكا كه امروزه با نام NIST شناخته مي شود، مسئوليت تعيين استانداردهاي محافظت از سيستم هاي كامپيوتري را بر عهده گرفت. موسسه مذكور در فاصله سالهاي 1968 تا 1971 به مطالعه و تحقيق در مورد نيازهاي امنيتي سيستم هاي كامپيوتري دولتي پرداخت كه در نهايت منجر به تهيه يك استاندارد رمزنگاري شد. موسسه NIST با همكاري NSA يا آژانس امنيت ملي آمريكا، نخستين برنامه رمزنگاري را توليد كرد. در اوايل كار هدف ايجاد يك استاندارد واحد براي محافظت از داده هاي طبقه بندي شده دولتي و اطلاعات حساس بخش خصوصي بود كه از طرفي بتواند بين 10 تا 15 سال دوام آورد (هدفي كه DES بسيار پيشتر از آن رفت) و از طرفي نيز قابل استفاده در انواع سيستم هاي مختلف حتي سيستم هاي كند باشد.
در آگوست 1974، NSA از توليد كنندگان الگوريتم هاي رمزنگاري براي بار دوم دعوت كرد تا روش هاي خود را اعلام كنند تا شايد در ايجاد يك استاندارد رمزنگاري عمومي با كيفيت بالا مورد استفاده قرار گيرد. در اين زمان IBM الگوريتمي را ارائه كرد كه مورد قبول NSA واقع شد.
در شركت IBM تا قبل از آن كارهايي براي توسعه چندين الگوريتم متفاوت رمزنگاري انجام شده بود. يكي از آنها يك الگوريتم 64 بيتي بود كه براي محافظت از تراكنش هاي مالي به كار مي رفت و ديگري يك الگوريتم 128 بيتي به نام Lucifer بود.
آژانس امنيت ملي آمريكا در آن زمان از طرفي IBM را تشويق به ثبت الگوريتم Lucifer كرد و از طرف ديگر به متخصصان خود اجازه داد تا سعي كنند ارتباطات رمزنگاري شده توسط الگوريتم مذكور را بشكنند. لذا الگوريتم مذكور بعد از بررسي پايه هاي رياضي و سعي در شكستن آن، دچار تغييرات و اصلاحاتي شد (براي مثال طول كليد از 128 بيت به 56 بيت كاهش يافت و تغييراتي در توابع جايگزيني انجام شد) تا به تولد DES منجر شد.
بالاخره در سال 1977 اين الگوريتم به عنوان استاندارد رمزنگاري داده منتشر شد و به عنوان روشي رسمي در محافظت از داده هاي طبقه بندي نشده در مؤسسات دولتي آمريكا مورد استفاده قرار گرفت. در عين حال NSA موظف شد تا هر پنج سال يك بار اين الگوريتم را مورد مطالعه قرار دهد و تأييد كند كه هنوز مي تواند به عنوان استاندارد به كار رود.
قابل ذكر است كه اين روش بستگي به مخفي‌بودن كليد دارد. بنابراين براي استفاده در دو موقعيت مناسب است: هنگامي كه كليدها مي‌توانند به يك روش قابل اعتماد و امن توزيع و ذخيره شوند يا جايي كه كليد بين دو سيستمي مبادله مي‌شود كه قبلا هويت يكديگر را تاييد كرده‌اند. عمر كليدها بيشتر از مدت تراكنش طول نمي‌كشد. رمزنگاري DES عموما براي حفاظت ديتا از شنود در طول انتقال استفاده مي‌شود.

استاندارد رمزنگاري يا DES چيست؟

در FIPS PUB 46 تعريف DES اينگونه آمده است:
استاندارد رمزنگاري داده (DES) يك الگوريتمي رياضي است كه براي رمزنگاري و رمزگشايي اطلاعات كدشده باينري به كار مي رود. رمزنگاري داده ها را تبديل به داده هاي نامفهومي به نام cipher مي كند. رمزگشايي از cipher آن را به داده هاي اصلي بازمي گرداند. الگوريتم مذكور هر دو عمليات رمزنگاري و رمزگشايي را بر اساس يك عدد باينري به نام كليد مشخص مي سازد ... داده ها تنها در صورتي قابل بازيابي از cipher هستند كه دقيقاً از كليدي كه براي رمزنگاري استفاده شده براي رمزگشايي نيز استفاده شود.

الگوريتم DES داراي دو جزء است: يك الگوريتم رمزنگاري و كليد. الگوريتم DES منتشر شده شامل چندين تكرار از يك تغيير شكل ساده با استفاده از هر دو تكنيك جابجايي و جايگزيني (به رمزنگاري چيست مراجعه كنيد) است. اين الگوريتم تنها از يك كليد براي رمزنگاري و رمزگشايي استفاده مي كند و به همين جهت به آن رمزنگاري كليد اختصاصي نيز گفته مي شود. همان طور كه در مقاله كليدهاي رمزنگاري توضيح داديم در اين حالت حفظ كليد به صورت محرمانه توسط فرستنده و گيرنده پيغام بسيار اهميت دارد زيرا الگوريتم به صورت عمومي در اختيار همگان است و در صورت لو رفتن كليد، هر كسي مي تواند پيغام محرمانه را ببيند. به همين جهت در رمزنگاري DES معمولاً عمر كليد به اندازه عمر تراكنش است.
كليد DES يك توالي هشت بايتي است كه هر بايت شامل يك كليد هفت بيتي و يك بيت توازن است. در حين رمزنگاري، الگوريتم DES متن اصلي را به بلوك هاي 64 بيتي مي شكند. اين الگوريتم در هر زمان بر روي يك بلوك كار مي كند و آن را از نصف شكسته و كاراكتر به كاراكتر رمزنگاري مي كند. كاراكترها 16 بار تحت نظارت كليد تغيير شكل پيدا كرده و در نهايت يك متن رمزنگاري شده 64 بيتي توليد مي شود. كليد حاوي 56 بيت معنادار و هشت بيت توازن است.
در سال 1997 در يك تلاش همگاني و با استفاده از 14 هزار رايانه يك پيغام رمزنگاري شده توسط DES شكسته شد كه البته چندان باعث نگراني نيست. زيرا در بيشتر انتقال پيغام ها، به خصوص در نقل و انتقالات مالي، يك بازه زماني وجود دارد كه در آن اطلاعات بايد كاملاً محرمانه نگه داشته شود و بعد از آن فاش شدن آنها چندان اهميت نخواهد داشت.
بعد از سقوط DES بسياري از مؤسسات از DES سه گانه استفاده كردند كه به عنوان 3DES شناخته مي شود و در آن DES سه بار تكرار مي شود(دو مرتبه با استفاده از يك كليد به سمت جلو (رمزنگاري) و يك مرتبه به سمت عقب (رمزگشايي) با يك كليد ديگر). به اين صورت طول كليد به طرز مؤثري افزايش پيدا مي كند و منجر به ارتقاي امنيت مي شود، هر چند كه هيچ كس مطمئن نيست اين روش تا كي جواب مي دهد.
به هرحال DES به حيات خود ادامه مي دهد زيرا اولاً هر كسي مي تواند به راحتي از آن استفاده كند و ثانياً قابليت حفظ محرمانگي را براي مدت كوتاهي دارد كه براي بسياري از برنامه هاي كاربردي، زمان مناسبي محسوب مي شود.
رمزنگاري DES چهار مد مجزا را فراهم مي كند كه از لحاظ پيچيدگي و موارد كاربرد متفاوت هستند. در زير هر كدام از مد ها به صورت خلاصه شرح داده شده اند:

ECB

اين مد همان Electronic Codebook است و براي هر بلوك از داده مشخص و يك كليد مشخص، همواره يك متن رمزنگاري شده ثابت توليد مي شود. از مد ECB براي رمزنگاري كليدها استفاده مي شود.

CBC

اين مد Cipher Block Chaining است كه مد ارتقايافته ECB است. در اين مد بلوك هاي رمزنگاري شده به هم زنجير مي شوند. برخلاف مد ECB كه در آن بلوك هاي ورودي يكسان خروجي يكساني داشتند و ممكن بود منجر به افشاي الگو شوند، در اينجا CBC هر بلوك را با استفاده از متن اصلي، كليد و يك مقدار سوم رمزنگاري مي كند كه وابسته به بلوك قبلي است و لذا تكرار رمزنگاري كه به آن زنجيرسازي گفته مي شود منجر به پنهان سازي الگوهاي تكراري مي شود.

CFB

مد Cipher Feedback از متوني كه قبلاً رمزنگاري شده اند به عنوان ورودي DES براي توليد شبه تصادفي خروجي استفاده مي كند. اين خروجي با متن اصلي تركيب شده تا متن رمزنگاري شده را توليد كند. از اين مد براي رمزنگاري كاراكترهاي تنها استفاده مي شود.

OFB

مد Output Feedback بسيار شبيه به CFB است ولي مانند آن به زنجير كردن متون رمزنگاري شده نمي پردازد و به جاي آن يك سري پردازش ديگر بر روي متن اصلي انجام مي دهد. از اين مد براي رمزنگاري ارتباطات ماهواره اي استفاده مي شود.

مدهاي CBC و CFB تأييد پيغام و رمزنگاري را تؤاماً انجام مي دهند. تأييد پيغام جهت اطمينان از مطابقت متن ارسال شده و متن دريافت شده است. در هنگام رمزنگاري DES بلوك هاي متن به هم لينك مي شوند، در مدهاي CFB و CBC رمزنگاري هر بلوك وابسته به رمزنگاري بلوك قبل از آن است. به علت وجود همين اتصال، در صورت ايجاد تغيير حتي در يك كاراكتر، بلوك نهايي رمزنگاري شده نيز تغيير خواهد كرد. لذا بلوك آخر به عنوان يك كد تأييد هويت كار مي كند و از يك cryptographic checksum براي آزمايش دقت انتقال و تشخيص دستكاري پيغام استفاده مي شود.
كليدهاي DES ۴۰بيتي امروزه در عرض چندين ساعت توسط كامپيوترهاي معمولي شكسته مي‌شوند و بنابراين نبايد براي محافظت از اطلاعات مهم و با مدت اعتبار طولاني استفاده شود. كليد ۵۶ بيتي عموما توسط سخت‌افزار يا شبكه‌هاي بخصوصي شكسته مي‌شوند.

استاندارد پيشرفته رمزنگاري يا AES چيست؟

مؤسسه NIST سالها با گروههاي رمزنگاري همكاري كرد تا استاندارد رمزنگاري پيشرفته اي را تدوين نمايد. هدف كلي توسعه استانداردي بود كه توانايي محافظت از اطلاعات حساس را براي حداقل يك دهه دارا باشد.
مسابقات بسياري انجام شد تا الگوريتمي كه بايد پايه استاندارد رمزنگاري پيشرفته (AES) باشد، معين گردد. بالاخره در سال 1999، بين پنج الگوريتمي كه به فاينال رسيدند، الگوريتم Rijndael انتخاب شد كه توسط Joan Daemon و Vincent Rijmen نوشته شده بود. الگوريتم هايي كه به فاينال راه پيدا كرده بودند عبارتند از: MARS، RC6، Rijndael، Serpent و Twofish. استاندارد FIPS-197 در همين رابطه تهيه شده است و الگوريتم مذكور را به عنوان يك رمزنگاري متقارن تعريف مي كند كه سازمان هاي دولتي آمريكا بايد با استفاده از آن، اطلاعات حساس را رمزنگاري كنند. از آنجايي كه اثبات قابل اعتماد بودن الگوريتم مذكور كار بسيار دشواري بود، بسياري از كشورها و مليت هاي ديگر نيز به پروژه AES پيوستند و به آزمايش اين الگوريتم پرداختند و از آنجايي كه مشكلي در اين مورد پيدا نشد، الگوريتم مذكور روز به روز قابليت اعتماد بيشتري را كسب كرد.

طرز كار AES

الگوريتم Rijndael بايت به بايت كار مي كند و ورودي اصلي را با كليد رمزنگاري در يك ماتريس 4×4 جفت مي كند. كليد، به طريقي تقسيم يا برنامه ريزي شده است كه بتواند در مراحل مختلف تكرار به تدريج تزريق شود. اولين قسمت كليد قبل از شروع پروسه 10 مرحله اي تزريق مي شود. در هر كدام از اين مراحل، بايتها جابجا مي شوند، رديف ها شيفت پيدا مي كنند و ستونها تركيب مي شوند.

• SubBytes
در پروسه جابجايي، بايت هاي متن ورودي در يك جعبه جابجايي به نام S-box قرار مي گيرند كه يك ماتريس 16×16 است. هر بايت در يك تقاطع سطر و ستون اين ماتريس جا مي گيرد. براي پيدا كردن جاي هر بايت اولين عدد صحيح مبناي 16 (nibble) در يك بايت متن اصلي گرفته شده و از آن براي مشخص كردن سطر S-box استفاده مي شود و سپس از دومين nibble براي مشخص كردن ستون استفاده مي شود. كاراكتري كه در تقاطع سطر و ستون انتخاب شده ذخيره مي گردد به عنوان SubByte براي متن اصلي شناخته مي شود. اين پروسه براي هر 16 بايت در ماتريس تكرار مي شود.


• شيفت رديف و تركيب ستونها
بايت هايي كه بايد رمزنگاري شوند، توسط جايگذاري تعويض مي شوند وسپس رديف ها شيفت پيدا مي كنند. براي مثال اولين رديف دست نخورده باقي مي ماند، رديف دوم يك محل به راست جابجا مي شود، سومين رديف دو محل جابجا مي شود و آخرين رديف نيز سه محل جابجا مي شود. اين پروسه توسط يك فاز تركيب ستونها دنبال مي شود كه در آن هر ستون از ماتريس در يك ماتريس ديگر ضرب مي شود تا موقعيت ستون تغيير پيدا كند.





• كليدهاي Round

در مرحله بعدي يك كليد round به هر ستون اضافه مي شود. اين كليد در واقع يك تكه كوچك از يك كليد محرمانه است كه براي مراحل بعدي رمزنگاري تزريق مي شود.

• تكرار
اين تبديل ها 9 بار ديگر تكرار مي شوند. در تكرار آخر تركيب ستون ها وجود ندارد و با اضافه كردن كليد round متن رمزنگاري شده به دست مي آيد. كليد نيز به نوبه خود شيفت پيدا مي كند، گرد مي شود و به خودش اضافه مي شود.

ديگر الگوريتمهاي رمزنگاري كليد متقارن

الگوريتم Twofish مشخصا براي پياده‌سازي در پردازنده‌هاي توان‌ـ‌پايين مثلا در كارتهاي هوشمند طراحي شد. براي رمزنگاري جرياني (streaming encryption) (كه رمزنگاري ديتا در حين ارسال صورت مي‌گيرد به جاي اينكه ديتاي كدشده در يك فايل مجزا قرار گيرد) الگوريتم RC4 سرعت بالا و دامنه‌اي از طول كليدها از ۴۰ تا ۲۵۶ بيت را فراهم مي‌كند. الگوريتم RC4 كه متعلق به امنيت ديتاي RSA است، بصورت عادي براي رمزنگاري ارتباطات دوطرفه امن در اينترنت استفاده مي‌شود.

.

الگوريتم هاي رمزنگاري با كليد نامتقارن

در قسمت قبلي در مورد الگوريتم هاي رمزنگاري متقارن DES و AES توضيح داديم كه از يك كليد براي رمزنگاري و رمزگشايي استفاده مي كنند. در الگوريتم هاي مذكور در صورتي كه كليد رمزنگاري به سرقت رود محرمانگي اطلاعات نيز از بين خواهد رفت.
الگوريتم هاي رمزنگاري با كليد نامتقارن از كليدهاي مختلفي براي رمزنگاري و رمزگشايي استفاده مي‌كنند. بسياري از سيستمها اجازه مي‌دهند كه يكي از كليدها (كليد عمومي يا public key) منتشر شود در حالي كه ديگري (كليد خصوصي يا private key) توسط صاحبش حفظ مي شود. فرستنده پيام، متن را با كليد عمومي گيرنده، كد مي‌كند و گيرنده آن را با كليد اختصاصي خود رمزگشايي مي كند. بعبارتي تنها با كليد خصوصي گيرنده مي‌توان متن كد شده را به متن اوليه صحيح تبديل كرد. يعني حتي فرستنده نيز اگرچه از محتواي اصلي پيام مطلع است اما نمي ‌تواند از متن كدشده به متن اصلي دست يابد، بنابراين پيام كدشده براي هر گيرنده‌اي، به جز گيرنده مورد نظر فرستنده، بي ‌معني خواهد بود.
معمول ترين سيستم نامتقارن بعنوان RSA شناخته مي‌شود (اين حروف، اول نام پديد آورندگان آن يعني Rivest، Shamir و Adlemen است). اين الگوريتم در سال 1978 در دانشگاه MIT ايجاد شده است و تأييد هويت (روشي براي مطمئن شدن از هويت ارسال كننده پيغام ) را به خوبي رمزنگاري انجام مي دهد. الگوريتم RSA از دو كليد براي رمزنگاري استفاده مي كند: كليد خصوصي و كليد عمومي. در الگوريتم مذكور تفاوتي بين توانايي عملياتي كليد عمومي و خصوصي وجود ندارد و يك كليد مي تواند هم به عنوان كليد خصوصي به كار رود و هم به عنوان كليد عمومي.
كليدهاي RSA با استفاده از روش هاي رياضي و با تركيب اعداد اول توليد مي شوند. بزرگترين عددها با ضرب اعداد كوچك به دست مي آيند و اين اعداد كوچك از لحاظ رياضي به هم وابسته هستند و دانستن يكي از آنها منجر به شناسايي ديگر اعداد اول به كار رفته در كليد مي شود. اين وضعيتي است كه در استفاده از كليد هاي عمومي و خصوصي مورد نظر است. البته در صورتي كه عدد خيلي بزرگ باشد، اين كار به راحتي قابل انجام نيست و وضعيت هاي گمراه كننده بسياري وجود دارند. تنها تركيب درست از اعداد اول موجود در كليد رمزنگاري، قادر به رمزگشايي پيغام است. امنيت الگوريتم RSA و الگوريتم هاي مشابه آن وابسته به استفاده از اعداد خيلي بزرگ است و بيشتر نسخه هاي RSA از اعداد 154 رقمي يا 512 بيتي به عنوان كليد استفاده مي كنند. دسترسي به فاكتورهاي اعداد اول اعداد خيلي بزرگ كه بيش از 100 رقم دارند كار بسيار مشكلي است. البته برخي از محققان توانسته اند با تلاش بسيار اعداد بزرگ را بشكنند ولي اين كار براي هكرها براي ورود به يك سيستم يا سر در آوردن از يك پيغام مقرون به صرفه نمي باشد.
اساس سيستم RSA اين فرمول است: X = Yk (mod r)
كه X متن كد شده، Y متن اصلي، k كليد اختصاصي و r حاصلضرب دو عدد اوليه بزرگ است كه با دقت انتخاب شده‌اند. براي اطلاع از جزئيات بيشتر مي‌توان به مراجعي كه در اين زمينه وجود دارند رجوع كرد. اين شكل محاسبات روي پردازنده‌هاي بايتي بخصوص روي ۸ بيتي‌ها كه در كارتهاي هوشمند استفاده مي‌شود بسيار كند است. بنابراين، اگرچه RSA هم تأييد هويت و هم رمزنگاري را ممكن مي‌سازد، معمولاً تنها براي تاييد هويت منبع پيام از اين الگوريتم در كارتهاي هوشمند استفاده مي‌شود.
مي‌توان از يك سيستم نامتقارن براي نشان دادن اينكه فرستنده پيام همان شخصي است كه ادعا مي‌كند استفاده كرد كه اين عمل در اصطلاح امضاء نام دارد.
• فرستنده متن اصلي را با استفاده از كليد اختصاصي خود رمز مي‌كند؛ اين فرآيند امضا نام دارد.
• رمزگشايي عمليات مشابهي روي متن رمزشده اما با استفاده از كليد عمومي فرستنده است. براي تاييد امضاء بررسي مي‌كنيم كه آيا اين نتيجه با ديتاي اوليه يكسان است؛ اگر اينگونه است، امضاء توسط كليد خصوصي متناظر رمز شده است.
به بيان ساده‌ تر چنانچه متني از شخصي براي ديگران منتشر شود، اين متن شامل متن اصلي و همان متن اما رمز شده توسط كليد خصوصي همان شخص است. حال اگر متن رمزشده توسط كليد عمومي آن شخص كه شما از آن مطلعيد رمز گشايي شود، مطابقت متن حاصل و متن اصلي نشان دهنده صحت فرد فرستنده آن است، به اين ترتيب امضاي فرد تصديق مي‌شود. ساير افراد كه از كليد خصوصي اين فرد اطلاع ندارند قادر به ايجاد متن رمز‌شده‌ اي نيستند كه با رمزگشايي توسط كليد عمومي اين فرد به متن اوليه تبديل شود.
ساير سيستمهاي كليد نامتقارن شامل سيستمهاي لگاريتم گسسته مي‌شوند مانند Diffie-Hellman، ElGamal و ساير طرحهاي چندجمله ‌اي و منحني‌ هاي بيضوي. بسياري از اين طرحها عملكردهاي يك‌ طرفه‌اي دارند كه اجازه تاييد هويت را مي ‌دهند اما رمزنگاري ندارند.
يك رقيب جديدتر الگوريتم RPK است. الگوريتم رمزنگاري RPK يك سيستم رمزنگاري نسبتاً جديد بر پايه كليد عمومي است كه مبتني بر رياضياتي است كه امروزه به صورت گسترده در رمزنگاري استفاده مي شود. اين الگوريتم براي كاربردهاي تجاري طراحي شده است و نياز به مطالعات و تحقيقات گسترده در زمينه هاي جديد رياضي ندارد. مطالعه بر روي اين زمينه ها مانند سيستم رمزنگاري منحني هاي بيضوي (ECC)، گاهي اوقات چندين سال به طول مي انجامد.

منبع:.freedownload.ir

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد