جام جم آنلاین: یکی از مهمترین مباحث در امنیت شبکه و رایانه رمزنگاری است. رمز نگاری دانشی است که به بررسی و شناخت اصول و روشهای انتقال یا ذخیره اطلاعات به صورت امن (حتی اگر مسیر انتقال اطلاعات و کانالهای ارتباطی یا محل ذخیره اطلاعات ناامن باشند) میپردازد.
رمزنگاری از زمانهای قدیم برای حفظ اطلاعات، همخوانی اطلاعات فرستاده شده و دریافت شده، تصدیق هویت و سندیت استفاده میشد و این اصول باید در هر نوع از رمزنگاری رعایت شود.
حفظ اطلاعات و رازداری به این معنی است که فقط فرستنده و گیرنده محتوای پیغام را بفهمند. ممکن است افراد دیگر بتوانند محتوای آن را ببینند، اما از دید آنها محتوای آن باید کاملا نامفهوم باشد.
تصدیق هویت به این معنی است که هم فرستنده و هم گیرنده از هویت واقعی یکدیگر مطلع باشند. همخوانی پیغام به این معنی است که فرستنده و گیرنده مطمئن باشند اطلاعات فرستاده شده، بعد از ارسال تغییری نکرده است و اگر این اتفاق افتاده باشد از این موضوع با خبر شوند.
این اصل شامل تغییرات محتوای پیغام، تغییر اسم فرستنده و یا گیرنده، تأخیر در ارسال پیغام و ترتیب پیغامها میشود.
رمزنگاری به سه نوع متقارن (symmetric encryption)، نامتقارن (asymmetric encryption) و تابع درهم (hash function) تقسیم میشود.
رمزنگاری متقارن
رمزنگاری متقارن به هر نوع رمزنگاری گفته میشود که در آن یک کلید برای رمزنگاری و رمزگشایی پیغام استفاده میشود. در این نوع رمزنگاری، کلید باید فقط بین فرستنده و گیرنده به اشتراک گذاشته شود.
رمزنگاری متقارن به دو روش جریانی (stream cipher) و بلوکی (block cipher) پیادهسازی میشود. در روش بلوکی اطلاعات به قسمتهای کوچک تر تقسیم میشود و هر قسمت رمزنگاری میشود در حالی که در روش جریانی هر کاراکتر به تنهایی رمزنگاری میشود.
RC4، Fish، SEAL، One Time Pad الگوریتمهایی هستند که از روش جریانی استفاده میکنند که RC4 یکی از محبوب ترین آنهاست و در رمزنگاری WEP در استاندارد ۸۰۲٫۱۱ استفاده میشود. رمزنگاری متقارن انواعی دارد از جمله:
الف: رمزنگاری سزار
این رمزنگاری یکی از قدیمی ترین و ساده ترین انواع رمزنگاری است که برای اولین بار توسط ژولیوس سزار در جنگها برای حفاظت از محتوای پیغامها استفاده میشد.
در این روش، هر حرف از حروف الفبا به اندازه مشخصی جابهجا میشوند. مثلا اگر جابهجایی سه خانه است، به جای حرف A حرف D قرار میگیرد و برای رمزگشایی، باید به همین مقدار حزوف را در جهت عکس جابجا کنید. همانطور که الگوریتم این روش بسیار ساده است، حمله برای رمزگشایی آن نیز ساده است.
برای رمزگشایی، کافی است (با استفاده از روش brute force) کلیدهای یک تا ۲۵ را امتحان کنیم تا یکی از آنها متن رمزنگاری شده را به کلمات با معنی تبدیل کند.
الگوریتم سزار در واقع یک نوع الگوریتم جایگزینی نیز به حساب میآید. به طور کلی در الگوریتمهای جایگزینی هر حرف الفبا با یک حرف دیگر جایگزین میشود و گیرنده متن رمزنگاری شده باید عکس این عمل را انجام دهد و از این روش بیش از ۲۰۰۰ سال است که استفاده میشود.
در این روش کلید، جدولی از حروف خواهد بود. در این روش، حمله با روش brute force سخت تر است؛ چراکه در این روش تعداد کلیدها ۲۶! است و محاسبه و تحلیل آنها عملا زمان بسیار زیادی میبرد و غیر ممکن است.
برای مثال اگر در هر ثانیه ۱۰۰ میلیارد کلید را امتحان کنیم، ۱۰۰ میلیارد سال طول میکشد! برای حمله و رمزگشایی آن از روشی به اسم آنالیز تکرار استفاده میکنند.
در این نوع حمله، تعداد تکرار حروف رمزنگاری شده، با تعداد تکرار حروف در متنهای عادی انگلیسی مفایسه میشود و از این طریق ممکن است کلید رمزنگاری را بدست آورند و هر چقدر متن طولانیتر باشد، رمزگشایی آن سادهتر میشود.
ب: رمزنگاری بلوکی
در این روش، اطلاعات با گروههای مختلف با طول معین تقسیم میشوند و هر گروه یا بلوک به صورت جداگانه رمزنگاری میشود.
الگوریتمهای معروفی که از این روش استفاده میکنند شامل DES، ۳DES و AES هستند.
Data Encryption Standard:
این الگوریتم از سوی سازمان ملی استانداردهای آمریکا (NBS) به عنوان الگوریتم رسمی برای استاندارد پردازش اطلاعات فدرال (FIPS) انتخاب شد و با اینکه این الگوریتم در بسیاری از کشورها استفاده میشود، الگوریتمی نا امن برای بسیاری از کاربردها به حساب میآید و این صرفا به علت طول کلید ۵۶ بیتی استفاده شده در آن است. در سال ۱۹۹۹ این الگوریتم در کمتر از ۲۳ ساعت با حمله brute force رمزگشایی شد. به همین دلیل الگوریتم ۳DES طراحی شد که به نوعی همان الگوریتم DES است که با ۳ کلید متفاوت هر بلوک را ۳ بار رمزنگاری میکند.
Advanced Encryption Standard:
از سوی دیگر به جای DES الگوریتمهای متعددی طراحی شدند که در طی یک رقابت جایگزین آن شوند. در سال ۱۹۹۷ برای این رقابت معیارهایی از سوی مؤسسه ملی استاندارد و تکنولوژی آمریکا (NIST) تعیین شد که به شرح زیر است:
• این الگوریتم باید بدون محدودیت در دنیا استفاده شود
• جزئیات این الگوریتم باید با زبان ANSI C و JAVA قابل پیاده سازی باشد.
• باید در مقابل حملات مستحکم باشد
• وقتی الگوریتم برای عموم باز و قابل دسترس بود باید قدرت خود را حفظ کند.
• امنیت به وسیله ابهام ممنوع است.
• درست کردن کلید باید سریع باشد.
• سادگی الگوریتم
• قابل پیادهسازی برای پلت فرمهای کوچک مانند کارتهای هوشمند و پلت فرمهای بزرگ مانند سرور ها.
در واقع الگوریتم AES از سوی دنیا مورد آزمایش قرار گرفت نه فقط NIST. در طی این فرآیند، الگوریتمهای ضعیف از دور رقابت خارج شدند. و در سال ۲۰۰۰ الگوریتم Rijndael که توسط Vincent Rijmen و Joan Daemen از کشور بلژیک نوشته شده بود برنده این رقابت اعلام شد.
رمزنگاری نامتقارن
یکی از مشکلات رمزنگاری به شیوه متقارن، ارسال و توزیع کلید است؛ اگر هکری که میخواهد محتوای پیغامهای رد و بدل شده را بداند، با داشتن کلید به راحتی به هدف خود میرسد و رمزنگاری اثر خود را از دست میدهد. گیرنده برای رمزگشایی به کلید نیاز دارد و همچنین کلید نباید به دست کسی جز او برسد.
برای حل این مشکل راه حلهایی پیش نهاد شده است که به آنها میپردازیم.میتوانیم کلید را قبل از شروع ارتباط توزیع کنیم. این روش فوایدی دارد اما بسیار محدود اگر به گیرنده دسترسی فیزیکی داریم میتوانیم کلید را از طریق یک کارت حافظه به او برسانیم اما این کار برای کسی که به او دسترسی فیزیکی نداریم تقریبا عملی نیست. در ضمن اگر تعداد گیرندهها زیاد باشند از این روش نمیتوان استفاده کرد.
رمزنگاری تابع در هم
راهحل دیگر استفاده از یک مرکز توزیع کلید است که گیرنده برای دریافت کلید به آن مراجعه کند.این روش نیز محدودیتهایی دارد. فرآیند تولید کلید به سادگی روشهای دیگر نیست.
در ضمن در این روش اگر مرکز توزیع کلید از کار بیفتد همه ارتباطات رمزنگاری شده متوقف میشود و اگر یک هکر بتواند به این مرکز نفوذ کند، روزنگاری اثر خود را از دست میدهد.
روشی که کاربرد بیشتری دارد استفاده از کلید عمومی است. در این روش کلیدی به عنوان کلید عمومی در دسترس عموم قرار میگیرد و این به معنی آن است که هر کس میتواند با استفاده از این کلید پیغامها را رمزنگاری کند ولی نمیتواند از آن برای رمزگشایی استفاده کند.
از سوی دیگر کلیدی که برای رمزگشایی استفاده میشود خصوصی است و نباید در دسترس کسی جز گیرنده قرار گیرد. در این روش گیرنده دو کلید خصوصی و عمومی را میسازد و این دو کلید جفت یکدیگر هستند.
کلید عمومی را برای فرستنده میفرستد و فرستنده با استفاده از آن میتواند اطلاعات را رمزنگاری کند و این اطلاعات فقط با استفاده از کلید خصوصی گیرنده قابل رمزگشایی هستند.
در این روش مهم نیست اگر شخص دیگری به کلید عمومی دسترسی پیدا کند، مهم این است که کلید خصوصی فاش نشود.
با استفاده از این روش مشکل توزیع کلید حل میشود اما این روش نسبت به رمزنگاری متقارن زمان بیشتری میبرد. (جام جم – ضمیمه کلیک)
محمدعلی زارعیفر
jamejamonline.ir – 22 – RSS Version