آبجی
1st February 2010, 11:49 PM
رمزنگاری دانش تغییر دادن متن پیام به کمک یک کلید رمزنگاری و یک الگوریتم رمزنگاری است. به صورتی که تنها شخصی که از کلید و الگوریتم مطلع است قادر به استخراج متن اصلی از متن رمزشده باشد و شخصی که از یکی یا هردوی آنها اطلاعی ندارد، نتواند به محتوای پیام دسترسی پیدا کند. رمزنگاری از طریق پنهان نگاه داشتن الگوریتم منسوخ است. در روشهای جدید رمزنگاری فرض بر آن است که همگان الگوریتم را میدانند. آنچه پنهان است فقط کلید است.
رمزنگاری علمی است که به وسیله آن میتوان اطلاعات را بصورتی امن منتقل کرد حتی اگر مسیر انتقال اطلاعات (کانالهای ارتباطی) ناامن باشد. دریافتکننده اطلاعات آنها را از حالت رمز خارج میکند (decrypting). به این عمل در واقع رمزگشایی گفته میشود .
توجه داشته باشید که رمزنگاری به تغییر ساده محتویات یک متن گفته میشود با کدگذاری (coding) تفاوت دارد. در این صورت تنها هر کاراکتر با یک نماد تغییر میکند. کلمه Cryptography بر گرفته لغات یونانی‘kryptos’ به مفهوم ” محرمانه ” و grapheinبه معنای نوشتن ” است. قبل از هر چیز لازم است بین رمز و کد تفاوت قایل شویم. رمز به مفهوم تبدیل کاراکتر به کاراکتر یا بیت به بیت ؛ بدون تغییر محتویات زبان شناختی آن است. در مقابل ” کد ” تبدیلی است که کلمهای را با یک کلمه یا نماد دیگر جایگزین میکند . در بررسی نخستین استفاده کنندگان از رمزنگاری به ” سزار ” امپراتور روم و نیز ” الکندی ” که یک مسلمان است برمیخوریم از عمده ترین شیوههای رمزنگاریهای ابتدایی پیچیدن نسخه اصلی پیام بر روی استوانهای با قطر مشخص و نوشتن پیام بر روی متن استوانهای است. بدیهی است بدون درک میزان قطر، خواندن پیام کار بسیار دشواری بود بعدها از این روش به همراه موتورهای الکتریکی برای رمزنگاری استفاده شد. در ادامه تصاویری از این رمزنگاری را مشاهده میکنید .
رمزنگاری امروزه به طور خاص در علم مخابرات مورد استفاده قرار میگیرد. از رمزنگاری میتوان برای تأمین امنیت و تأمین اعتبار پیام به صورت جداگانه یا توامان استفاده کرد. منظور از تأمین امنیت پیام این است که به غیر از گیرنده مجاز، شخص دیگر قادر به فهمیدن متن پیام نباشد. همچنین منظور از اعتبار پیام این است که فرستنده واقعی پیام مشخص باشد. دانش رمزنگاری بر پایه مقدمات بسیاری از قبیل تیوری اطلاعات، نظریه اعداد و آمار بنا شدهاست.
الگوریتمهای مختلفی (مانند md۵ و RSA) برای رمز کردن اطلاعات وجود دارد.
۱) معرفی رمزگذاری
رمزگذاری یعنی تبدیل اطلاعات به یک شکل غیر قابل فهم و انتقال آن و سپس برگرداندن اطلاعات رمز شده به حالت اولیه و قابل خواندن. عناصر مهمی که در رمزگذاری مورد استفاده قرار میگیرند به شرح زیر میباشد:
▪ Public Key یا کلید عمومی اعداد یا کلماتی که با یک شخص یا سازمان در ارتباط میباشد. کلید عمومی جزیی از جفت کلید عمومی/خصوصی میباشد وبه صورت عمومی در دسترس کسانی که قصد انتقال اطلاعات رمز شده را دارند، میباشد.
▪ Private Key یا کلید خصوصی اعداد یا کلماتی که با یک شخص یا سازمان در ارتباط میباشد. کلید خصوصی جزیی از جفت کلید عمومی/خصوصی میباشد. کلید خصوصی فقط در دسترس مالک جفت کلید عمومی/خصوصی میباشد و برای بازگشایی اطلاعاتی که توسط کلید عمومی رمزگذاری شده استفاده میشود.
▪ ایجادکنندههای جفت کلید برای ایجاد یک جفت کلید عمومی و خصوصی طبق یک الگوریتم رمزگذاری مشخص استفاده میشود.
▪ Key Factories برای تبدیل کلیدهای نامشخص به کلیدهای مشخص به کار میرود.
▪ Keystores بانکی که برای مدیریت تعدادی از کلیدها به کار میرود.
▪ الگوریتمهای رمزگذاری الگوریتمها و روشهایی که برای رمزگذاری اطلاعات به کار میرود. RSA و DES نام دو تا از معروفترین الگوریتمها میباشد.
۲) روشهای رمزگذاری
▪ روش متقارن Symmetric در این روش هر دو طرفی که قصد رد و بدل اطلاعات را دارند از یک کلید مشترک برای رمزگذاری و نیز بازگشایی رمز استفاده میکنند.در این حالت بازگشایی و رمزگذاری اطلاعات دو فرآیند معکوس یکدیگر میباشند. مشکل اصلی این روش این است که کلید مربوط به رمزگذاری باید بین دو طرف به اشتراک گذاشته شود و این سوال پیش میآید که دو طرف چگونه میتوانند این کلید را به طور امن بین یکدیگر رد و بدل کنند. انتقال از طریق انترانت و یا به صورت فیزیکی تا حدی امن میباشد اما در انتقال آن در اینترنت به هیچ وجه درست نیست.در این قبیل سیستمها، کلیدهای رمزنگاری و رمزگشایی یکسان هستند و یا رابطهای بسیار ساده با هم دارند .این سیستمها را سیستمهای متقارن یا ” تک کلیدی ” مینامیم. به دلیل ویژگی ذاتی تقارن کلید رمزنگاری و رمزگشایی، مراقبت و جلوگیری از افشای این سیستمها یا تلاش در جهت امن ساخت آنها لازم است در بر گیرنده ” جلوگیری از استراق سمع ” و ” ممانعت از دستکاری اطلاعات ” باشد .
▪ روش نامتقارن Asymmetric این روش برای حل مشکل انتقال کلید در روش متقارن ایجاد شد. در این روش به جای یک کلید مشترک از یک جفت کلید به نامهای کلید عمومی و خصوصی استفاده میشود. در این روش از کلید عمومی برای رمزگذاری اطلاعات استفاده میشود. طرفی که قصد انتقال اطلاعات را به صورت رمزگذاری شده دارد اطلاعات را رمزگذاری کرده و برای طرفی که مالک این جفت کلید است استفاده میشود. مالک کلید، کلید خصوصی را پیش خود به صورت محرمانه حفظ میکند. در این دسته، کلیدهای رمزنگاری و رمزگشایی متمایزند و یا اینکه چنان رابطه پیچیدهای بین آنها حکم فرماست که کشف کلید رمزگشایی با در اختیار داشتن کلید رمزنگاری، عملا ناممکن است.
▪ مقایسه رمزنگاری الگوریتمهای متقارن و الگوریتمهای کلید عمومی: بحثهای زیادی شده که کدام یک از این الگوریتمها بهترند اما جواب مشخصی ندارد. البته بررسی هایی روی این سوال شده به طور مثال Needham و Schroeder بعد از تحقیق به این نتیجه رسیدند که طول پیغامی که با الگوریتمهای متقارن میتواند رمزنگاری شود از الگوریتمهای کلید عمومی کمتر است. و با تحقیق به این نتیجه ریسیدند که الگوریتمهای متقارن الگوریتمهای بهینه تری هستند. اما وقتی که بحث امنیت پیش می آید الگوریتمهای کلید عمومی کارایی بیشتریدارند. و بطور خلاصه میتوان گفت که الگوریتمهای متقارن دارای سرعت بالاتر و الگوریتمهای کلید عمومی دارای امنیت بهتری هستند. در ضمن گاهی از سیستم ترکیبی از هردو الگوریتم استفاده میکنند که به این الگوریتمها الگوریتم های ترکیبی (hybrid)گفته میشود. اما اگر به طور دقیق تر به این دو نگاه کنیم آنگاه متوجه خواهیم شد که الگوریتمهای کلید عمومی و الگوریتمهای کلید متقارن دارای دو ماهیت کاملاً متفاوت هستند و کار بردهای متفاوتی دارند به طور مثال در رمزنگاریهای ساده که حجم دادهها بسیار زیاد است از الگوریتم متقارن استفاده میشود زیرا دادهها با سرعت بالاتری رمزنگاری و رمزگشایی شوند. اما در پروتکل هایی که در اینترنت استفاده میشود، برای رمز نگری کلید هایی که نیاز به مدیریت دارند از الگوریتمهای کلید عمومی استفاده میشود.
▪ Key Agreement همانطور که در بالا گفته شد به علت کند بودن و محدودیت رمزگذاری با روش نامتقارن از این روش فقط برای رمزگذاری کلید مشترک استفاده میشود. اما این روش نیز یک مشکل دارد و آن اینست که هر شخص نیاز به کلید عمومی و خصوصی مربوط به خود را دارد و باید برای انتقال اطلاعات آن را برای طرف مقابل بفرستد. یک راه برای حل مشکل استفاده از کلید عمومی و یک مکانیزم به نام Key Agreement میباشد که به طبق آن یک توافق بر روی کلید مخفی بین طرفین به وجود میآید و به این ترتیب نیازی به انتقال کلید نیست. وقتی که یک بار بر روی یک کلید مشترک توافق حاصل شد از آن میتوان برای رمزگذاری و رمزگشایی اطلاعات مربوطه استفاده کرد. معمولاً در این روش از الگوریتم Diffie-Hellman استفاده میشود. مراحل انتقال اطلاعات از این روش به صورت زیر میباشد: - آغازگر ابتدا یک جفت کلید عمومی و خصوصی ایجاد کرده و کلید عمومی را همراه با مشخصات الگوریتم (Algorithm Specification) به سمت طرف مقابل میفرستد. - طرف مقابل نیز یک جفت کلید عمومی و خصوصی همراه با مشخصات الگوریتم آغازگر ساخته و کلید عمومی را برای آغازگر میفرستد. - آغازگر یک کلید مخفی بر اساس کلید خصوصی خود و کلید عمومی طرف مقابل ایجاد میکند. - طرف مقابل نیز با استفاده از کلید خصوصی خود و کلید عمومی آغازگر یک کلید مخفی میسازد. الگوریتم Diffie-Hellman تضمین میکند که کلید مخفی هر دو طرف یکسان میباشد.
رمزنگاری علمی است که به وسیله آن میتوان اطلاعات را بصورتی امن منتقل کرد حتی اگر مسیر انتقال اطلاعات (کانالهای ارتباطی) ناامن باشد. دریافتکننده اطلاعات آنها را از حالت رمز خارج میکند (decrypting). به این عمل در واقع رمزگشایی گفته میشود .
توجه داشته باشید که رمزنگاری به تغییر ساده محتویات یک متن گفته میشود با کدگذاری (coding) تفاوت دارد. در این صورت تنها هر کاراکتر با یک نماد تغییر میکند. کلمه Cryptography بر گرفته لغات یونانی‘kryptos’ به مفهوم ” محرمانه ” و grapheinبه معنای نوشتن ” است. قبل از هر چیز لازم است بین رمز و کد تفاوت قایل شویم. رمز به مفهوم تبدیل کاراکتر به کاراکتر یا بیت به بیت ؛ بدون تغییر محتویات زبان شناختی آن است. در مقابل ” کد ” تبدیلی است که کلمهای را با یک کلمه یا نماد دیگر جایگزین میکند . در بررسی نخستین استفاده کنندگان از رمزنگاری به ” سزار ” امپراتور روم و نیز ” الکندی ” که یک مسلمان است برمیخوریم از عمده ترین شیوههای رمزنگاریهای ابتدایی پیچیدن نسخه اصلی پیام بر روی استوانهای با قطر مشخص و نوشتن پیام بر روی متن استوانهای است. بدیهی است بدون درک میزان قطر، خواندن پیام کار بسیار دشواری بود بعدها از این روش به همراه موتورهای الکتریکی برای رمزنگاری استفاده شد. در ادامه تصاویری از این رمزنگاری را مشاهده میکنید .
رمزنگاری امروزه به طور خاص در علم مخابرات مورد استفاده قرار میگیرد. از رمزنگاری میتوان برای تأمین امنیت و تأمین اعتبار پیام به صورت جداگانه یا توامان استفاده کرد. منظور از تأمین امنیت پیام این است که به غیر از گیرنده مجاز، شخص دیگر قادر به فهمیدن متن پیام نباشد. همچنین منظور از اعتبار پیام این است که فرستنده واقعی پیام مشخص باشد. دانش رمزنگاری بر پایه مقدمات بسیاری از قبیل تیوری اطلاعات، نظریه اعداد و آمار بنا شدهاست.
الگوریتمهای مختلفی (مانند md۵ و RSA) برای رمز کردن اطلاعات وجود دارد.
۱) معرفی رمزگذاری
رمزگذاری یعنی تبدیل اطلاعات به یک شکل غیر قابل فهم و انتقال آن و سپس برگرداندن اطلاعات رمز شده به حالت اولیه و قابل خواندن. عناصر مهمی که در رمزگذاری مورد استفاده قرار میگیرند به شرح زیر میباشد:
▪ Public Key یا کلید عمومی اعداد یا کلماتی که با یک شخص یا سازمان در ارتباط میباشد. کلید عمومی جزیی از جفت کلید عمومی/خصوصی میباشد وبه صورت عمومی در دسترس کسانی که قصد انتقال اطلاعات رمز شده را دارند، میباشد.
▪ Private Key یا کلید خصوصی اعداد یا کلماتی که با یک شخص یا سازمان در ارتباط میباشد. کلید خصوصی جزیی از جفت کلید عمومی/خصوصی میباشد. کلید خصوصی فقط در دسترس مالک جفت کلید عمومی/خصوصی میباشد و برای بازگشایی اطلاعاتی که توسط کلید عمومی رمزگذاری شده استفاده میشود.
▪ ایجادکنندههای جفت کلید برای ایجاد یک جفت کلید عمومی و خصوصی طبق یک الگوریتم رمزگذاری مشخص استفاده میشود.
▪ Key Factories برای تبدیل کلیدهای نامشخص به کلیدهای مشخص به کار میرود.
▪ Keystores بانکی که برای مدیریت تعدادی از کلیدها به کار میرود.
▪ الگوریتمهای رمزگذاری الگوریتمها و روشهایی که برای رمزگذاری اطلاعات به کار میرود. RSA و DES نام دو تا از معروفترین الگوریتمها میباشد.
۲) روشهای رمزگذاری
▪ روش متقارن Symmetric در این روش هر دو طرفی که قصد رد و بدل اطلاعات را دارند از یک کلید مشترک برای رمزگذاری و نیز بازگشایی رمز استفاده میکنند.در این حالت بازگشایی و رمزگذاری اطلاعات دو فرآیند معکوس یکدیگر میباشند. مشکل اصلی این روش این است که کلید مربوط به رمزگذاری باید بین دو طرف به اشتراک گذاشته شود و این سوال پیش میآید که دو طرف چگونه میتوانند این کلید را به طور امن بین یکدیگر رد و بدل کنند. انتقال از طریق انترانت و یا به صورت فیزیکی تا حدی امن میباشد اما در انتقال آن در اینترنت به هیچ وجه درست نیست.در این قبیل سیستمها، کلیدهای رمزنگاری و رمزگشایی یکسان هستند و یا رابطهای بسیار ساده با هم دارند .این سیستمها را سیستمهای متقارن یا ” تک کلیدی ” مینامیم. به دلیل ویژگی ذاتی تقارن کلید رمزنگاری و رمزگشایی، مراقبت و جلوگیری از افشای این سیستمها یا تلاش در جهت امن ساخت آنها لازم است در بر گیرنده ” جلوگیری از استراق سمع ” و ” ممانعت از دستکاری اطلاعات ” باشد .
▪ روش نامتقارن Asymmetric این روش برای حل مشکل انتقال کلید در روش متقارن ایجاد شد. در این روش به جای یک کلید مشترک از یک جفت کلید به نامهای کلید عمومی و خصوصی استفاده میشود. در این روش از کلید عمومی برای رمزگذاری اطلاعات استفاده میشود. طرفی که قصد انتقال اطلاعات را به صورت رمزگذاری شده دارد اطلاعات را رمزگذاری کرده و برای طرفی که مالک این جفت کلید است استفاده میشود. مالک کلید، کلید خصوصی را پیش خود به صورت محرمانه حفظ میکند. در این دسته، کلیدهای رمزنگاری و رمزگشایی متمایزند و یا اینکه چنان رابطه پیچیدهای بین آنها حکم فرماست که کشف کلید رمزگشایی با در اختیار داشتن کلید رمزنگاری، عملا ناممکن است.
▪ مقایسه رمزنگاری الگوریتمهای متقارن و الگوریتمهای کلید عمومی: بحثهای زیادی شده که کدام یک از این الگوریتمها بهترند اما جواب مشخصی ندارد. البته بررسی هایی روی این سوال شده به طور مثال Needham و Schroeder بعد از تحقیق به این نتیجه رسیدند که طول پیغامی که با الگوریتمهای متقارن میتواند رمزنگاری شود از الگوریتمهای کلید عمومی کمتر است. و با تحقیق به این نتیجه ریسیدند که الگوریتمهای متقارن الگوریتمهای بهینه تری هستند. اما وقتی که بحث امنیت پیش می آید الگوریتمهای کلید عمومی کارایی بیشتریدارند. و بطور خلاصه میتوان گفت که الگوریتمهای متقارن دارای سرعت بالاتر و الگوریتمهای کلید عمومی دارای امنیت بهتری هستند. در ضمن گاهی از سیستم ترکیبی از هردو الگوریتم استفاده میکنند که به این الگوریتمها الگوریتم های ترکیبی (hybrid)گفته میشود. اما اگر به طور دقیق تر به این دو نگاه کنیم آنگاه متوجه خواهیم شد که الگوریتمهای کلید عمومی و الگوریتمهای کلید متقارن دارای دو ماهیت کاملاً متفاوت هستند و کار بردهای متفاوتی دارند به طور مثال در رمزنگاریهای ساده که حجم دادهها بسیار زیاد است از الگوریتم متقارن استفاده میشود زیرا دادهها با سرعت بالاتری رمزنگاری و رمزگشایی شوند. اما در پروتکل هایی که در اینترنت استفاده میشود، برای رمز نگری کلید هایی که نیاز به مدیریت دارند از الگوریتمهای کلید عمومی استفاده میشود.
▪ Key Agreement همانطور که در بالا گفته شد به علت کند بودن و محدودیت رمزگذاری با روش نامتقارن از این روش فقط برای رمزگذاری کلید مشترک استفاده میشود. اما این روش نیز یک مشکل دارد و آن اینست که هر شخص نیاز به کلید عمومی و خصوصی مربوط به خود را دارد و باید برای انتقال اطلاعات آن را برای طرف مقابل بفرستد. یک راه برای حل مشکل استفاده از کلید عمومی و یک مکانیزم به نام Key Agreement میباشد که به طبق آن یک توافق بر روی کلید مخفی بین طرفین به وجود میآید و به این ترتیب نیازی به انتقال کلید نیست. وقتی که یک بار بر روی یک کلید مشترک توافق حاصل شد از آن میتوان برای رمزگذاری و رمزگشایی اطلاعات مربوطه استفاده کرد. معمولاً در این روش از الگوریتم Diffie-Hellman استفاده میشود. مراحل انتقال اطلاعات از این روش به صورت زیر میباشد: - آغازگر ابتدا یک جفت کلید عمومی و خصوصی ایجاد کرده و کلید عمومی را همراه با مشخصات الگوریتم (Algorithm Specification) به سمت طرف مقابل میفرستد. - طرف مقابل نیز یک جفت کلید عمومی و خصوصی همراه با مشخصات الگوریتم آغازگر ساخته و کلید عمومی را برای آغازگر میفرستد. - آغازگر یک کلید مخفی بر اساس کلید خصوصی خود و کلید عمومی طرف مقابل ایجاد میکند. - طرف مقابل نیز با استفاده از کلید خصوصی خود و کلید عمومی آغازگر یک کلید مخفی میسازد. الگوریتم Diffie-Hellman تضمین میکند که کلید مخفی هر دو طرف یکسان میباشد.