0

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

 
gps0064
gps0064
کاربر نقره ای
تاریخ عضویت : تیر 1388 
تعداد پست ها : 1751
محل سکونت : اصفهان

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

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

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

 



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


پنج شنبه 6 خرداد 1389  10:04 AM
تشکرات از این پست
samsam
gps0064
gps0064
کاربر نقره ای
تاریخ عضویت : تیر 1388 
تعداد پست ها : 1751
محل سکونت : اصفهان

پاسخ به:مفاهيم رمزنگاری به زبان ساده Cryptography

رمزنگاری  

۱- معرفی و اصطلاحات    

رمزنگاری علم کدها و رمزهاست. یک هنر قدیمی است و برای قرنها بمنظور محافظت از پیغامهایی که بین فرماندهان، جاسوسان،‌ عشاق و دیگران ردوبدل می‌شده، استفاده شده است تا پیغامهای آنها محرمانه بماند.  

هنگامی که با امنیت دیتا سروکار داریم، نیاز به اثبات هویت فرستنده و گیرنده پیغام داریم و در ضمن باید از عدم تغییر محتوای پیغام مطمئن شویم. این سه موضوع یعنی محرمانگی، تصدیق هویت و جامعیت در قلب امنیت ارتباطات دیتای مدرن قرار دارند و می‌توانند از رمزنگاری استفاده کنند.  

اغلب این مساله باید تضمین شود که یک پیغام فقط میتواند توسط کسانی خوانده شود که پیغام برای آنها ارسال شده است و دیگران این اجازه را ندارند. روشی که تامین کننده این مساله باشد "رمزنگاری" نام دارد. رمزنگاری هنر نوشتن بصورت رمز است بطوریکه هیچکس بغیر از دریافت کننده موردنظر نتواند محتوای پیغام را بخواند.  

رمزنگاری مخفف‌ها و اصطلاحات مخصوص به خود را دارد. برای درک عمیق‌تر به مقداری از دانش ریاضیات نیاز است. برای محافظت از دیتای اصلی ( که بعنوان plaintext     شناخته می‌شود)، آنرا با استفاده از یک کلید (رشته‌ای محدود از بیتها) بصورت رمز در می‌آوریم تا کسی که دیتای حاصله را می‌خواند قادر به درک آن نباشد. دیتای رمزشده (که بعنوان ciphertext     شناخته می‌شود) بصورت یک سری بی‌معنی از بیتها بدون داشتن رابطه مشخصی با دیتای اصلی بنظر می‌رسد. برای حصول متن اولیه دریافت‌کننده آنرا رمزگشایی می‌کند. یک شخص ثالت (مثلا یک هکر) می‌تواند برای اینکه بدون دانستن کلید به دیتای اصلی دست یابد، کشف رمز‌نوشته       (cryptanalysis)     کند. بخاطرداشتن وجود این شخص ثالث بسیار مهم است.  

رمزنگاری دو جزء اصلی دارد، یک الگوریتم و یک کلید. الگوریتم یک مبدل یا فرمول ریاضی است. تعداد کمی الگوریتم قدرتمند وجود دارد که بیشتر آنها بعنوان استانداردها یا مقالات ریاضی منتشر شده‌اند. کلید، یک رشته از ارقام دودویی (صفر و یک) است که بخودی‌خود بی‌معنی است. رمزنگاری مدرن فرض می‌کند که الگوریتم شناخته شده است یا می‌تواند کشف شود. کلید است که باید مخفی نگاه داشته شود و کلید است که در هر مرحله پیاده‌سازی تغییر می‌کند. رمزگشایی ممکن است از همان جفت الگوریتم و کلید یا جفت متفاوتی استفاده کند.  

دیتای اولیه اغلب قبل از رمزشدن بازچینی می‌شود؛  این عمل عموما بعنوان scrambling     شناخته می‌شود. بصورت مشخص‌تر، hash function ها بلوکی از دیتا را (که می‌تواند هر اندازه‌ای داشته باشد) به طول از پیش مشخص‌شده کاهش می‌دهد. البته دیتای اولیه نمی‌تواند از hashed value     بازسازی شود. Hash function ها اغلب بعنوان بخشی از یک سیستم تایید هویت مورد نیاز هستند؛ خلاصه‌ای از پیام (شامل مهم‌ترین قسمتها مانند شماره پیام، تاریخ و ساعت، و نواحی مهم دیتا) قبل از رمزنگاری خود پیام، ساخته ‌و hash     می‌شود.  

یک چک تایید پیام    (Message Authentication Check)     یا MAC     یک الگوریتم ثابت با تولید یک امضاء برروی پیام با استفاده از یک کلید متقارن است. هدف آن نشان دادن این مطلب است که پیام بین ارسال و دریافت تغییر نکرده است. هنگامی که رمزنگاری توسط کلید عمومی برای تایید هویت فرستنده پیام استفاده می‌شود، منجر به ایجاد امضای دیجیتال    (digital signature)     می‌شود.  

 

۲- الگوریتم‌ها  

طراحی الگوریتمهای رمزنگاری مقوله‌ای برای متخصصان ریاضی است. طراحان سیستمهایی که در آنها از رمزنگاری استفاده می‌شود، باید از نقاط قوت و ضعف الگوریتمهای موجود مطلع باشند و برای تعیین الگوریتم مناسب قدرت تصمیم‌گیری داشته باشند. اگرچه رمزنگاری از اولین کارهای شانون    (Shannon)     در اواخر دهه ۴۰ و اوایل دهه ۵۰ بشدت پیشرفت کرده است، اما کشف رمز نیز پابه‌پای رمزنگاری به پیش آمده است و الگوریتمهای کمی هنوز با گذشت زمان ارزش خود را حفظ کرده‌اند. بنابراین تعداد الگوریتمهای استفاده شده در سیستمهای کامپیوتری عملی و در سیستمهای برپایه کارت هوشمند بسیار کم است.

 

۱-۲ سیستمهای کلید متقارن  

یک الگوریتم متقارن از یک کلید برای رمزنگاری و رمزگشایی استفاده می‌کند. بیشترین شکل استفاده از رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد data encryption algorithm     یا DEA      است که بیشتر بعنوان DES شناخته می‌شود. DES     یک محصول دولت ایالات متحده است که امروزه بطور وسیعی بعنوان یک استاندارد بین‌المللی شناخته ‌می‌شود. بلوکهای ۶۴بیتی دیتا توسط یک کلید تنها که معمولا ۵۶بیت طول دارد، رمزنگاری و رمزگشایی می‌شوند. DES از نظر محاسباتی ساده است و براحتی می‌تواند توسط پردازنده‌های کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد.  

این روش بستگی به مخفی‌بودن کلید دارد. بنابراین برای استفاده در دو موقعیت مناسب است: هنگامی که کلیدها می‌توانند به یک روش قابل اعتماد و امن توزیع و ذخیره شوند یا جایی که کلید بین دو سیستم مبادله می‌شوند که قبلا هویت یکدیگر را تایید کرده‌اند عمر کلیدها بیشتر از مدت تراکنش طول نمی‌کشد. رمزنگاری DES     عموما برای حفاظت دیتا از شنود در طول انتقال استفاده می‌شود.  

کلیدهای DES     ۴۰بیتی امروزه در عرض چندین ساعت توسط کامپیوترهای معمولی شکسته می‌شوند و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت طولانی اعتبار استفاده شود. کلید ۵۶بیتی عموما توسط سخت‌افزار یا شبکه‌های بخصوصی شکسته می‌شوند. رمزنگاری DES سه‌تایی عبارتست از کدکردن دیتای اصلی با استفاده از الگوریتم DES که در سه مرتبه انجام می‌گیرد. (دو مرتبه با استفاده از یک کلید به سمت جلو (رمزنگاری)  و یک مرتبه به سمت عقب (رمزگشایی) با یک کلید دیگر)       

 این عمل تاثیر دوبرابر کردن طول مؤثر کلید را دارد؛ بعدا خواهیم دید که این یک عامل مهم در قدرت رمزکنندگی است.    

الگوریتمهای استاندارد جدیدتر مختلفی پیشنهاد شده‌اند. الگوریتمهایی مانند Blowfish     و IDEA     برای زمانی مورد استفاده قرار گرفته‌اند اما هیچکدام پیاده‌سازی سخت‌افزاری نشدند بنابراین بعنوان رقیبی برای       DES      برای استفاده در کاربردهای میکروکنترلی مطرح نبوده‌اند. پروژه استاندارد رمزنگاری پیشرفته دولتی ایالات متحده    (AES)     الگوریتم Rijndael     را برای جایگزیتی DES     بعنوان الگوریتم رمزنگاری اولیه انتخاب کرده است. الگوریتم Twofish     مشخصا برای پیاده‌سازی در پردازنده‌های توان‌ـ‌پایین مثلا در کارتهای هوشمند طراحی شد.

در ۱۹۹۸ وزارت دفاع ایالات متحده تصمیم گرفت که الگوریتمها Skipjack     و مبادله کلید را که در کارتهای Fortezza     استفاده شده بود، از محرمانگی خارج سازد. یکی از دلایل این امر تشویق برای پیاده‌سازی بیشتر کارتهای هوشمند برپایه این الگوریتمها بود.  

برای رمزنگاری جریانی    (streaming encryption)     (که رمزنگاری دیتا در حین ارسال صورت می‌گیرد بجای اینکه دیتای کدشده در یک فایل مجزا قرار گیرد) الگوریتم RC4 سرعت بالا و دامنه‌ای از طول کلیدها از ۴۰ تا ۲۵۶ بیت فراهم می‌کند. RC4     که متعلق به امنیت دیتای RSA است، بصورت عادی برای رمزنگاری ارتباطات دوطرفه امن در اینترنت استفاده می‌شود.

 

۲-۲ سیستمهای کلید نامتقارن  

سیستمهای کلید نامتقارن از کلید مختلفی برای رمزنگاری و رمزگشایی استفاده می‌کنند. بسیاری از سیستمها اجازه می‌دهند که یک جزء (کلید عمومی یا public key    ) منتشر شود در حالیکه دیگری (کلید اختصاصی یا private key    ) توسط صاحبش حفظ شود. فرستنده پیام، متن را با کلید عمومی گیرنده کد می‌کند و گیرنده آن را با کلید اختصاصی خودش رمزنگاری میکند. بعبارتی تنها با کلید اختصاصی گیرنده می‌توان متن کد شده را به متن اولیه صحیح تبدیل کرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام مطلع است اما نمی‌تواند از متن کدشده به متن اصلی دست یابد، بنابراین پیام کدشده برای هرگیرنده‌ای بجز گیرنده مورد نظر فرستنده بی‌معنی خواهد بود. معمولترین سیستم نامتقارن بعنوان RSA شناخته می‌شود (حروف اول پدیدآورندگان آن یعنی Rivest     ، Shamir     و Adlemen     است). اگرچه چندین طرح دیگر وجود دارند. می‌توان از یک سیستم نامتقارن برای نشاندادن اینکه فرستنده پیام همان شخصی است که ادعا می‌کند استفاده کرد که این عمل اصطلاحا امضاء نام دارد.     RSA     شامل دو تبدیل است که هرکدام احتیاج به بتوان‌رسانی ماجولار با توانهای خیلی طولانی دارد:  

·  امضاء، متن اصلی را با استفاده از کلید اختصاصی رمز می‌کند؛    

·  رمزگشایی عملیات مشابه‌ای روی متن رمزشده اما با استفاده از کلید عمومی است. برای تایید امضاء بررسی می‌کنیم که آیا این نتیجه با دیتای اولیه یکسان است؛ اگر اینگونه است، امضاء توسط کلید اختصاصی متناظر رمزشده است.  

به بیان ساده‌تر چنانچه متنی از شخصی برای دیگران منتشر شود، این متن شامل متن اصلی و همان متن اما رمز شده توسط کلید اختصاصی همان شخص است. حال اگر متن رمزشده توسط کلید عمومی آن شخص که شما از آن مطلعید رمزگشایی شود، مطابقت متن حاصل و متن اصلی نشاندهنده صحت فرد فرستنده آن است، به این ترتیب امضای فرد تصدیق می‌شود. افرادی که از کلید اختصاصی این فرد اطلاع ندارند قادر به ایجاد متن رمز‌شده‌ نیستند بطوریکه با رمزگشایی توسط کلید عمومی این فرد به متن اولیه تبدیل شود.  

اساس سیستم RSA      این فرمول است: X = Yk (mod r)

   که X     متن کد شده، Y     متن اصلی، k     کلید اختصاصی و r     حاصلضرب دو عدد اولیه بزرگ است که با دقت انتخاب شده‌اند. برای اطلاع از جزئیات بیشتر می‌توان به مراجعی که در این زمینه وجود دارد رجوع کرد. این شکل محاسبات روی پردازنده‌های بایتی بخصوص روی ۸ بیتی‌ها که در کارتهای هوشمند استفاده می‌شود بسیار کند است. بنابراین، اگرچه RSA     هم تصدیق هویت و هم رمزنگاری را ممکن می‌سازد، در اصل برای تایید هویت منبع پیام از این الگوریتم در کارتهای هوشمند استفاده می‌شود و برای نشاندادن عدم تغییر پیام در طول ارسال و رمزنگاری کلیدهای آتی استفاده می‌شود.   

سایر سیستمهای کلید نامتقارن شامل سیستمهای لگاریتم گسسته می‌شوند مانند Diffie-Hellman    ، ElGamal     و سایر طرحهای چندجمله‌ای و منحنی‌های بیضوی. بسیاری از این طرحها عملکردهای یک‌ـ‌طرفه‌ای دارند که اجازه تاییدهویت را می‌دهند اما رمزنگاری ندارند. یک رقیب جدیدتر الگوریتم RPK است که از یک تولیدکننده مرکب برای تنظیم ترکیبی از کلیدها با مشخصات مورد نیاز استفاده می‌کند. RPK     یک پروسه دو مرحله‌ای است: بعد از فاز آماده‌سازی در رمزنگاری و رمزگشایی (برای یک طرح کلید عمومی) رشته‌هایی از دیتا بطور استثنایی کاراست و می‌تواند براحتی در سخت‌افزارهای رایج پیاده‌سازی شود. بنابراین بخوبی با رمزنگاری و تصدیق‌هویت در ارتباطات سازگار است.

طولهای کلیدها برای این طرحهای جایگزین بسیار کوتاهتر از کلیدهای مورد استفاده در RSA است که آنها برای استفاده در چیپ‌کارتها مناسب‌تر است. اما ‌   RSA محکی برای ارزیابی سایر الگوریتمها باقی مانده است؛ حضور و بقای نزدیک به سه‌دهه از این الگوریتم، تضمینی در برابر ضعفهای عمده بشمار می‌رود.

 

پنج شنبه 6 خرداد 1389  10:08 AM
تشکرات از این پست
دسترسی سریع به انجمن ها