الگوریتم های رمزنگاری

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

یك الگوریتم متقارن از یك كلید برای رمزنگاری و ازهمان کلید برای رمزگشایی استفاده می‌كند. بیشترین شكل استفاده از این نوع رمزنگاری كه در كارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد 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

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

  • الگوریتم رمزنگاری : الگوریتم DES منتشر شده شامل چندین تكرار از یك تغییر شكل ساده با استفاده از هر دو تكنیك جابجایی و جایگزینی است. این الگوریتم تنها از یك كلید برای رمزنگاری و رمزگشایی استفاده می كند و به همین جهت به آن رمزنگاری كلید اختصاصی نیز گفته می شود. در این حالت حفظ كلید به صورت محرمانه توسط فرستنده و گیرنده پیغام بسیار اهمیت دارد زیرا الگوریتم به صورت عمومی در اختیار همگان است و در صورت لو رفتن كلید، هر كسی می تواند پیغام محرمانه را ببیند. به همین جهت در رمزنگاری DES معمولاً عمر كلید به اندازه عمر تراكنش است.
  • کلید رمزنگاری : كلید DES یك توالی هشت بایتی است كه هر بایت شامل یك كلید هفت بیتی و یك بیت توازن است. در حین رمزنگاری، الگوریتم DES متن اصلی را به بلوك های 64 بیتی می شكند. این الگوریتم در هر زمان بر روی یك بلوك كار می كند و آن را از نصف شكسته و كاراكتر به كاراكتر رمزنگاری می كند. كاراكترها 16 بار تحت نظارت كلید تغییر شكل پیدا كرده و در نهایت یك متن رمزنگاری شده 64 بیتی تولید می شود. كلید حاوی 56 بیت معنادار و هشت بیت توازن است.
الگوریتم رمزنگاری DES

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

الگوریتم رمزنگاری 3DES

به هرحال DES به حیات خود ادامه می دهد زیرا اولاً هر كسی می تواند به راحتی از آن استفاده كند و ثانیاً قابلیت حفظ محرمانگی را برای مدت كوتاهی دارد كه برای بسیاری از برنامه های كاربردی، زمان مناسبی محسوب می شود. رمزنگاری DES چهار مد مجزا را فراهم می كند كه از لحاظ پیچیدگی و موارد كاربرد متفاوت هستند. در زیر هر كدام از مدها به صورت خلاصه شرح داده شده اند:

1- Electronic Code Book یا ECB

هرگاه در رمزنگاری یک متن بزرگ، کل متن را به قطعات کوچک با طول ثابت (و متناسب با طول ورودی سیستم در رمزنگار) تقسیم کرده و هر بلوک مستقل از دیگری با کلید k رمز و جانشین متن اصلی شود، اصطلاحاً مبتنی بر “شیوه کتابچه رمز” یا ECB) Mode Electronic Code Book ) عمل کرده ایم.

روش کتابچه رمز

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

مقایسه روش زنجیره سازی

ب) فرض کنید یک بانک اطلاعاتی با الگوریتم 3DES و طبق شیوه ECB رمزنگاری و جایگزین شده باشند. حال نفوذگر توانسته در حین انتقال این پایگاه اطلاعاتی آن را قاپیده و در اختیار بگیرد. او اگر چه نمی تواند رمز این اطلاعات را بشکند ولی می تواند جای برخی فیلدها را با هم عوض کند. بدین ترتیب بدون آنکه کسی متوجه این تغییر شود توانسته در روند عملیات اختلال ایجاد کند و یک حمله غیر فعال علیه سیستم رمز به وقوع پیوسته است.

2- Cipher Block Chaining یا CBC

ساده ترین شیوه ی زنجیره سازی بلوکهای رمز آن است که نتیجه ی رمزنگاری هر بلوک کوچک در رمزنگاری بلوکهای بعدی نیز دخالت داده شود. طبق این شیوه هر گونه تغییر یا جا بجایی در یک بلوک باعث خواهد شد که متن رمزگشایی شده از محل دستکاری، به بلوکهای آشغال و بی معنی تبدیل گردد. این روش به اختصار شیوه( CBC (Cipher Block Chaining یا شیوه “زنجیره سازی بلوکهای رمز” نامیده می شود. برای رمزنگاری اولین بلوک متن یک مقدار اولیه مشهور به IV در نظر گرفته می شود که از لحاظ طول دقیقاً هم اندازه با بلوک متن است. به عبارت دیگر اولین بلوک متن با یک مقدار اولیه XOR می شود. مقدار IV اصلا اهمیتی ندارد و کاملا تصادفی انتخاب و به همراه داده ها (به صورت آشکار) ارسال می شود. چرا که شاه کلید رمز مخفی است و بدون کلید هیچ چیزی از رمز خارج نخواهد شد.

روش زنجیره سازی بلوکها

این شیوه نیز دو مشکل اساسی دارد:
تغییر در مقدار اولیه (IV) یا هر یک از بیت های متن اصلی، کل خروجی را تا انتهای متن تحت تاثیر قرار می دهد و این تاثیر حتی به اندازه یک بیت بسیار ژرف خواهد بود. در طرف مقابل تغییر در یک بیت از متن رمز شده در خلال عبور از کانال انتقال فقط رمزگشایی دو بلوک مجاور را با اختلال مواجه می کند. بدین ترتیب بلوکهای مشابه در متن اصلی هرگز به بلوکهای یکسان در خروجی تبدیل نخواهند شد.
یکی دیگر از اشکالات شیوه زنجیره سازی بلوکها آن است که رمزنگاری اطلاعات باید به صورت ترتیبی انجام گیرد و امکان موازی سازی عملیات جهت بالا رفتن سرعت، وجود ندارد. هرگز نمی توانید بلوک Pi را رمز کنید مگر آنکه تمام بلوکهای P0 و P(i-2) ، P(i-1) را قبلاً رمز کرده باشید.

3- Cipher Feedback یا CFB

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

روش فیدبک

4- Output Feedback یا OFB

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

استاندارد پیشرفته رمزنگاری یا ( AES ( Advance Encryption System

مؤسسه 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 بایت در ماتریس تكرار می شود.

Image
  • شیفت ردیف و تركیب ستونها

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

Image
  • كلیدهای Round

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

  • تكرار

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

Copyright © 2010 Dlbook Team

CONTACT US
221, Mount Olimpus, Rheasilvia, Mars,
Solar System, Milky Way Galaxy
+1 (999) 999-99-99
PGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9lbWJlZD9wYj0hMW0xOCExbTEyITFtMyExZDYwNDQuMjc1NjM3NDU2ODA1ITJkLTczLjk4MzQ2MzY4MzI1MjA0ITNkNDAuNzU4OTkzNDExNDc4NTMhMm0zITFmMCEyZjAhM2YwITNtMiExaTEwMjQhMmk3NjghNGYxMy4xITNtMyExbTIhMXMweDAlM0EweDU1MTk0ZWM1YTFhZTA3MmUhMnNUaW1lcytTcXVhcmUhNWUwITNtMiExc2VuITJzITR2MTM5MjkwMTMxODQ2MSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6MCI+PC9pZnJhbWU+
Thank You. We will contact you as soon as possible.