الگوریتم کلید متقارن (Symmetric key) – اصول رمزنگاری متقارن

  • یکشنبه ۲۶ فروردین ۱۳۹۷
  • بازدید 500 نفر
  • 1 امتیاز2 امتیاز3 امتیاز4 امتیاز5 امتیاز (52 امتیاز از 11 رای)
    Loading...

الگوریتم کلید متقارن (Symmetric key)   اصول رمزنگاری متقارن

معرفی الگوریتم کلید متقارن

در این بخش مقاله الگوریتم کلید متقارن (Symmetric key) – اصول رمزنگاری متقارن را آماده کردیم که بر اساس کتاب اصول امنیت شبکه های کامپیوتری نوشته استالینگز می باشد. در ادامه با ما همراه باشید تا توضیحات مفصلی در رابطه با اصول رمزنگاری متقارن و الگوریتم کلید متقارن ارائه کنیم.

رمزنگاری متقارن

رمزنگاری متقارن که از آن با عناوین رمزنگاری رسمی، رمزنگاری کلید سرّی، و یا رمزنگاری با یک کلید نیز یاد می شود، تنها نوع رمزنگاری مورد استفاده قبل از معرفی رمزنگاری کلید عمومی دراواخر دهه ۱۹۷۰ بود. این رمزنگاری در زمان حال نیز پراستفاده ترین روش، از بین دو نوع رمزنگاری معمول می باشد.

یک طرح رمزنگاری متقارن دارای پنج جزء طبق شکل بالا است:

  • متن ساده: این پیام ورودی و یا داده هائی است که بعنوان ورودی وارد الگوریتم می شود.
  • الگوریتم رمزنگاری: الگوریتم رمزنگاری، جایگزینی ها و تبدیلات مختلفی را روی متن ساده انجام می دهد.
  • کلید سرّی: کلید سرّی نیز یکی از ورودی های الگوریتم است. جایگزینی ها و تبدیلات انجام شده توسط الگوریتم، وابسته به این کلید است.
  • متن رمزشده: این پیام درهم ریخته شدهای است که بعنوان خروجی تولید میشود. این متن وابسته به متن ساده و کلید سرّی است. برای یک پیام دادهشده، دو کلید مختلف دو متن رمزشده مختلف تولید خواهند کرد.
  • الگوریتم رمزگشائی: این معمولاً همان الگوریتم رمزنگاری است که بطور معکوس اجرا می شود. این الگوریتم متن رمزشده و همان کلید سرّی را گرفته و متن ساده اولیه را تولید می کند.

الگوریتم کلید متقارن (Symmetric key)   اصول رمزنگاری متقارن

شکل ۲: رمزگذاری متقارن

برای استفاده امن از رمزنگاری متقارن دو چیز مورد نیاز است:

  1. به یک الگوریتم رمزنگاری قوی احتیاج داریم. حداقل مایلیم که الگوریتم چنان باشد که دشمنی که الگوریتم را می شناسد و به یک یا چند متن رمزشده دسترسی دارد، قادر نباشد تا متن رمزشده را رمزگشائی کرده و یا کلید رمز را کشف کند. این نیاز معمولاً بصورت محکمتری چنین بیان می گردد: دشمن بایستی قادر نباشد تا متن رمزشده را رمزگشائی کرده و یا کلید رمز را کشف کند، حتی اگر او چند متن رمزشده بهمراه متون ساده نظیر آنها را در اختیار داشته باشد.
  2. فرستنده و گیرنده بایستی کپی های کلید سرّی را به روش امنی بدست آورده باشند و آنها را امن نگاه دارند. اگر کسی بتواند کلید را کشف کرده و الگوریتم را نیز بداند، تمام ارتباطاتی که از این کلید استفاده می کنند قابل شنود خواهند بود.

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

الگوریتم کلید متقارن (Symmetric key)   اصول رمزنگاری متقارن

شکل ۳: رمزنگاری در شبکه

رمزنگاری

سیستم های رمزنگاری معمولاً از سه بُعد مستقل دسته بندی می شوند:

  1. نوع عملیات بکار گرفته شده برای تبدیل متن ساده به متن رمزشده: تمام الگوریتم های رمزنگاری بر مبنای دو اصل عمومی قرار دارند: جایگزینی، که در آن هر عنصر متن ساده (بیت، حرف، گروهی از بیت ها یا حروف) با عنصر دیگری جایگزین شده، و جابجائی که در آن عناصر متن ساده جای خود را عوض میکنند. مهمترین و اصلیترین الزام این است که هیچ اطلاعاتی گم نشود (یعنی تمام عملیات برگشتپذیر باشند). بیشتر سیستم ها که از آنها با عنوان سیستم های ترکیبی یاد می شود، شامل چندین مرحله جایگزینی و جابجائی هستند.
  2. تعداد کلیدهای استفاده شده: اگر هم فرستنده و هم گیرنده از یک کلید استفاده کنند، سیستم رمزنگاری را متقارن، تک کلیدی، کلید سرّی و یا رسمی گویند. اگر فرستنده و گیرنده هرکدام از یک کلید متفاوت استفاده کنند، سیستم رمزنگاری را نامتقارن، دو- کلیدی و یا کلید- عمومی نامند.
  3. نحوه پردازش متن ساده پیام: یک رمز قالبی (block cipher)، ورودی را بصورت یک بلوک در هر زمان مورد پردازش قرار داده و یک بلوک خروجی برای هر بلوک ورودی تولید میکند. یک رمز دنباله ای (stream cipher) عناصر ورودی را بصورت پیوسته پردازش کرده و همینطور که جلو میرود، عناصر خروجی نیز بطور پیوسته از آن خارج میگردند.

شکستن رمز یا کشف رمز

کوشش برای کشف کردن متن ساده پیام و یا کلید را شکستن رمز گویند. استراتژی بکارگرفته شده در این مورد، بستگی به طبیعت روش رمزنگاری و اطلاعات قابل دسترسی مسئول کشف رمز دارد. جدول زیر نشان میدهد. مشکلترین مورد زمانی است که فقط متن رمزشده در دسترس باشد. در بعضی موارد نه تنها الگوریتم رمزنگاری شناخته شده است، بلکه عموما می توانیم فرض کنیم که دشمن از الگوریتم استفاده شده برای رمزنگاری مطلع است.

یکی از حملاتی که تحت این شرایط ممکن است رخ دهد، جستجوی جامع (brute-force) امتحان کردن همه کلیدهای ممکن است. اگر فضای کلید خیلی وسیع باشد، این امر غیرعملی خواهد شد. بنابراین دشمن بایستی به تجزیه و تحلیل خود متن رمزشده متکی بوده و تست های آماری مختلفی را روی آن انجام دهد. برای استفاده از این روش، دشمن بایستی ایده هائی نسبت به نوع متن ساده پیام که پنهان شده است داشته باشد. یعنی مثلاً بداند که پیام، یک متن انگلیسی، یک متن فرانسه، یک فایل EXE، یک برنامه با زبان Java، یک سند مالی و غیره است.

الگوریتم کلید متقارن (Symmetric key)   اصول رمزنگاری متقارن

شکل ۴: حمله brute force

دفاع در برابر حمله فقط متن رمزشده سادهترین نوع دفاع است زیرا دشمن کمترین اطلاعات را داراست. در بسیاری موارد، شکننده رمز اطلاعات بیشتری دارد. او ممکن است قادر باشد تا یک یا چند پیام ساده به همراه فرم رمزنگاریشده آنها را بدست آورد. کشفکننده رمز ممکن است بداند که الگوهای مخصوصی در پیام وجود دارد. مثلاً فایلی که با فرمت Postscript  ُکد می شود همیشه با الگوی خاصی شروع میشود و یا ممکن است یک عنوان استانداردشده، همیشه همراه یک پیام الکترونیکی انتقال دهنده پول وجود داشته باشد. همه اینها مثال هائی از متن ساده معلوم اند. با چنین معلوماتی، تحلیلگر رمز ممکن است بتواند کلید را، بر مبنای آگاهی از الگوی متن ساده رمزنشده، بدست آورد.

الگوریتم کلید متقارن (Symmetric key)   اصول رمزنگاری متقارن

شکل ۵: جدول انواع حملات به پیام های رمزنگاری شده

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

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

  • هزینه شکستن رمز، از ارزش اطلاعات رمزشده تجاوز کند.
  • زمان لازم برای شکستن رمز، از عمر مفید اطلاعات تجاوز کند.

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

الگوریتم کلید متقارن (Symmetric key)   اصول رمزنگاری متقارن

شکل ۶: رمزنگاری متقارن با الگوریتم DES

در الگوریتم DES از یک کلید ۵۶ بیتی استفاده می شود. برای اندازه هر کلید، نتایج با فرض اینکه یک میکروثانیه برای هر رمزگشائی ساده صرف خواهد شد، نشان داده شده است. یک میکروثانیه برای هر رمزگشائی ، اندازه معقولی برای ماشین های امروزی است. با استفاده از تعداد زیادی میکروپروسسور با سازماندهی موازی، ممکن است نرخ پردازش را به چندین برابر افزایش داد. ستون آخر در جدول زیر نتایج را برای سیستمی که بتواند یک میلیون کلید در هر میکروثانیه را آزمایش کند، نشان میدهد. همانطور که مشاهده می کنید، در چنین سطح عملکردی، الگوریتم DES دیگر نمی تواند از نظر محاسباتی امن فرض شود.

ساختار رمز Feistel

بیشتر الگوریتم های رمزنگاری متقارن قالبی، از جمله الگوریتم DES دارای ساختاری هستند که برای اولین بار توسط Horst Feistel از شرکت IBM در سال ۱۹۷۳ [FEIS73] توصیف گردید و در شکل زیر نشان داده شده است. ورودی های الگوریتم رمزنگاری، یک بلوک از متن ساده با طول ۲w بیت و یک کلید K است. بلوک متن ساده به دو نمیه L0 و R0 تقسیم می شود. دو نیمه دیتا، n دُور پردازش را پشت سر گذاشته و آنگاه با یکدیگر ترکیب شده تا بلوک متن رمزشده را ایجاد نمایند. هر دُور i دارای ورودی های Li-1 و Ri-1 که خروجی دور ماقبل بوده ، و همچنین یک زیر کلید Ki که از کلید K مشتق شده است می باشد. عموماً زیرکلیدهای Ki با یکدیگر و همچنین با فرق داشته و بتوسط یک الگوریتم تولید زیر کلید خلق می شوند.

الگوریتم کلید متقارن (Symmetric key)   اصول رمزنگاری متقارن

شکل ۷: جدل مقایسه در رمز Feistel

همه دُورهای رمزنگاری دارای ساختار یکسانی هستند. یک جایگزینی روی نیمه چپ دیتا انجام میشود. این امر با اعمال یک تابع دُور F (round function) به نیمه راست دیتا و سپس XOR کردن خروجی این تابع با نیمه چپ دیتا حاصل میگردد. در هر دُور، تابع دُور دارای ساختار عمومی یکسانی است که بتوسط زیرکلید دُور Ki پارامترهای آن تغییر می یابد. پس از این جایگزینی، یک جایگشت صورت میپذیرد که شامل تعویض محل دو نیمه دیتاست.

الگوریتم کلید متقارن (Symmetric key)   اصول رمزنگاری متقارن

شکل ۸: ساختار رمز Feistel

ساختار Feistel یک مثال خاص از ساختار عمومی تری است که توسط تمام رمزهای قالبی متقارن مورد استفاده قرار می گیرد. در حالت کلی، یک رمز قالبی متقارن شامل تعدادی از دُورهای متوالی است که در هر دُور، عملیات جایگزینی  و جابجائی با وابستگی به اندازه کلید سرّی دُور صورت میپذیرد. تحقق واقعی یک رمز قالبی متقارن، بستگی به انتخاب پارامترهای زیر و موارد طراحی دارد:

  • اندازه بلوک: هرچقدر اندازه بلوک ها بزرگتر باشد (با فرض ثابت بودن سایر پارامترها)، امنیت بیشتر ولی سرعت رمزنگاری/ رمزگشائی کمتر است. مصالحه مناسب در این مورد، انتخاب بلوکی با طول ۱۲۸ بیت بوده که در طراحی رمز قالبی، تقریباً انتخابی همگانی است.
  • اندازه کلید: اندازه بزرگتر کلید بمنزله امنیت بیشتر است، ولی ممکن است سرعت رمزنگاری / رمزگشائی را کاهش دهد. معمولترین کلیدها در الگوریتمه ای مدرن، دارای طول ۱۲۸ بیت هستند.
  • تعداد دُورها: جوهره یک رمز قالبی متقارن در این است که تنها یک دُور رمزنگاری، امنیت مناسبی را ایجاد نمی کند و بنابراین دُورهای بیشتری از رمزنگاری برای افزایش امنیت مورد نیاز است. اندازه معمول در این مورد، ۱۶ دُور است.
  • الگوریتم تولید زیرکلید: پیچیدگی بیشتر در این الگوریتم، بایستی باعث افزایش پیچیدگی در شکستن رمز گردد.
  • تابع دُور: باز هم پیچیدگی بیشتر، معمولاً بمعنای مقاومت بیشتر در مقابل کشف رمز است.

دو مورد دیگر را نیز در طراحی یک رمز قالبی متقارن بایستی درنظر گرفت:

  • نرم افزار رمزنگاری / رمزگشائی سریع: در بسیاری موارد، رمزنگاری در دل کاربردها و یا توابع اجرائی طوری قرار گرفته است که خارج از حیطه اجرای سخت افزاری الگوریتم است. بنابراین سرعت اجرای الگوریتم یکی از نکته های قابل تأمل است.

الگوریتم کلید متقارن (Symmetric key)   اصول رمزنگاری متقارن

شکل ۹: دیاگرام شبکه کلاسیک Feistel

  • سهولت تحلیل: اگرچه علاقهمندیم که برای جلوگیری از شکستن رمز، هرچه ممکن است الگوریتم را پیچیدهتر کنیم ولی ایجاد سهولت در تحلیل الگوریتم محسنات زیادی دارد. یعنی اگر الگوریتم بتواند بطور مختصر و روشن بیان شود، تحلیل آن برای آسیب پذیری های مربوط به شکستن رمز هم سادهتر بوده و بنابراین سطح اطمینان به قدرت آن را میتوان افزایش داد. بعنوان مثال، الگوریتم DES دارای عملکرد تحلیلی ساده ای نیست.

رمزگشائی با یک رمز قالبی متقارن نیز ضرورتاً مثل همان رمزنگاری آن است. قاعده چنین است: متن رمزشده را بعنوان ورودی الگوریتم بکار برده ولی زیرکلیدهای Ki را با نظم معکوس استفاده میکنیم. یعنی Kn در دوز اول، Kn-1 در دور دوم، و بهمین ترتیب تا K1 که در دور آخر مورد استفاده قرار میگیرد. این خاصیت جذابی است زیرا لازم نیست تا از دو الگوریتم مختلف، یکی برای رمزنگاری و یکی برای رمزگشائی استفاده شود.

منبع: کتاب اصول امنیت شبکه های کامپیوتری استالینگز


مشاهده ویدئو در این باره

خوشحال خواهیم شد اگر نظر خودتون رو درباره این مطلب ثبت کنید

خطا!دکمه ریفریش را بزنید