مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

  • جمعه ۷ اردیبهشت ۱۳۹۷
  • بازدید ۲,۷۳۶ نفر

تصویر sequence-codes-and-rc4-algorithms_3265_1 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

ساختار رمزهای دنباله ای و الگوریتم RC4

در این بخش مقاله مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4 را آماده کردیم که بر اساس کتاب اصول امنیت شبکه های کامپیوتری نوشته استالینگز می باشد. در ادامه با ما همراه باشید تا یک بررسی در رابطه با به متداول ترین رمز دنباله ای متقارن یعنی رمز RC4 داشته باشیم.

رمز دنباله ای

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

تصویر sequence-codes-and-rc4-algorithms_3265_2 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

شکل 2: یک دور عملیاتی AES

ساختار رمزهای دنباله ای

یک رمز دنباله ای معمولا متن ساده را بصورت بایت به بایت رمزنگاری می نماید. البته می توان رمزهای دنباله ای دیگری خلق کرد که داده ها را بصورت بیت به بیت و یا در واحدهای بزرگ تر از بایت در هر زمان رمزنگاری نماید. شکل 5 نمایش دهنده ساختار یک رمز دنباله ای است که در این ساختار یک کلید، ورودی یک تولید کننده شبه تصادفی بیتها بوده که یک دنباله ۸ بیتی که ظاهرا تصادفی به نظر می رسد را تولید می کند. خروجی تولید کننده شبه تصادفی، که یک دنباله کلید (keystream)، نامیده می شود با دنباله متن ساده ورودی بصورت یک بایت در هر زمان و بصورت عمل XOR روی بیت ها ترکیب می شود. برای مثال اگر بایت تولید شده توسط مولد 01101100 و بایت متن ساده 11001100 باشد، آنگاه بایت متن رمز شده حاصل چنین است:

تصویر sequence-codes-and-rc4-algorithms_3265_3 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

عکس 3: رمزگذاری

رمزگشائی نياز به استفاده از همان رديف شبه تصادفی را دارد.

تصویر sequence-codes-and-rc4-algorithms_3265_4 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

شکل 4: رمزگشائی

ملاحظات مهم زیر توسط [KUMA97] در طراحی يک رمز دنباله ای را ذكر شده است:

  1. دنباله رمز بایستی دارای دوره تناوب بزرگی باشد، یک تولید کننده اعداد شبه تصادفی از تابعی استفاده می کند که یک دنباله یقینی از بیت ها را تولید کرده که نهایتا بعد از مدتی تکرار می شوند. هر چقدر دوره تناوب این تکرار طویل تر باشد، عمل شکستن رمز سخت تر خواهد بود.
  2. دنباله کلید بایستی با تقریب بسیار خوب، خواص یک دنباله عدد تصادفی واقعی را داشته باشد. به عنوان مثال تقریبا بایستی تعداد 1 ها و 0 ها در این دنباله برابر باشند. اگر دنباله کلید بصورت یک ردیف از بایت ها مورد استفاده قرار گیرد، آنگاه تمام 256 حالت ممکن بایستی تقریبا بصورت مساوی مورد استفاده قرار گیرند. هر چقدر دنباله کلید تصادفی تر بنظر آید، متن رمز شده تصادفی تر بوده و شکستن رمز سخت تر خواهد بود.

تصویر sequence-codes-and-rc4-algorithms_3265_1 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

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

  1. با توجه به شکل 5 که در بالا آمده است، می توان دریافت که خروجی یک مولد اعداد شبه تصادفی به اندازه کلید ورودی وابسته است. برای جلوگیری از حملات همه جانبه، کلید بایستی به اندازه کافی بزرگ باشد. همان ملاحظاتی که در مورد رمزهای قالبی وجود داشت در اینجا نیز صادق اند. بنابراین با تکنولوژی کنونی، کلیدی با طول حداقل 128 بیت مناسب بنظر می رسد.

با یک مولد اعداد شبه تصادفی با طرح مناسب، یک رمز دنباله ای می تواند به همان اندازه یک رمز قالبی، با همان طول کلید، امن باشد. مزیت اصلی یک رمز دنباله ای این است که رمزهای دنباله ای تقریبا همیشه سریع تر بوده و نسبت به رمزهای قالبی از حجم برنامه کمتری استفاده می کنند. رمز RC4 که در این بخش تشریح شده است تنها می تواند با چند خط برنامه کامپیوتری پیاده سازی شود. شکل 7 که از اطلاعات [RESC01] اقتباس شده است، زمان اجرای RC4 را با سه رمز قالبی معروف مقایسه کرده است. حسن یک رمز قالبی در این است که شما می توانید از کلید رمز بارها استفاده کنید. در رمز دنباله ای اگر دو متن ساده با یک کلید یکسان رمزنگاری شوند، آنگاه شکستن رمز غالبا بسیار آسان خواهد بود [DAWS96]. اگر دو دنباله متن رمز شده با هم XOR شوند، نتیجه با XOR دو متن ساده نظیر آنها یکسان خواهد بود. حال اگر متن ساده، دنباله کوتاهی همانند شماره کارت های اعتباری و یا ردیف های دیگری با خواص شناخته شده باشند، عمل شکستن رمز ممکن است موفقیت آمیز باشد.

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

الگوریتم RC4

الگوریتم RC4 یک رمز دنباله ای است که در سال 1987 میلادی توسط Ron Rivest برای کمپانی RSA Security طراحی گردید. الگوریتم RC4 یک رمز دنباله ای با طول کلید متغیر بوده و عملیات آن روی بایتها انجام می شود. الگوریتم بر مبنای استفاده از یک جایگشت تصادفی بنا نهاده شده است. تحلیل این رمز نشان میدهد که دوره تناوب رمز با احتمال قریب به یقین بزرگتر از 10100 است [ROBS95a]. برای تولید هر بایت خروجی بین 8 تا 16 عمل لازم است و انتظار می رود که رمزنگاری در نرم افزار به سرعت انجام شود.

تصویر sequence-codes-and-rc4-algorithms_3265_5 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

شکل 6: مراحل جستجو در RC4

الگوریتم RC4 در استاندارد (Secure Socket Layer/Transport Layer Security) SSL/TLS که برای ارتباط بین مرورگرهای وب و سرورها تعریف شده است، بکار می رود. این رمز همچنین در پروتکل (Wired Equivalent Privacy) WEP و پروتکل جدیدتر (WiFi Protected Access) WPA که بخشی از استانداردهای IEEE 802.11 مربوط به LAN بی سیم هستند، مورد استفاده است. روش RC4 از نظر تجاری مدتها از سوی کمپانی RSA Security پنهان نگاه داشته شده بود. در سپتامبر 1994 این الگوریتم به صورت ناشناس در لیست پستی Cypherpunks قرار گرفت و لو رفت.

الگوریتم RC4 به صورت قابل توجهی ساده بوده و تشریح آن کاملا آسان است. یک کلید با طول متغیر 1 تا 256 بایت (8 تا 2.048 بیت) برای آغازیدن یک بردار حالت 256 بایتی S با مؤلفه های S[255] , … , S[1] , S[0] مورد استفاده قرار می گیرد. در همه حالات، S شامل جایگشت همه اعداد 8 بیتی از صفر تا 255 است. برای رمزنگاری و رمز گشائی، یک بایت k (شكل 5 را ببینید) از میان 255 مؤلفه S به صورت سیستماتیک انتخاب می شود. همینطور که هر مقدار k تولید می شود، مؤلفه های S یک بار دیگر جایگشت می یابند.

تصویر sequence-codes-and-rc4-algorithms_3265_6 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

شکل 7: مقايسه سرعت پردازش رمزهای متقارن روی يک پردازشگر Pentium II

آغازیدن S

برای شروع، مقادیر صفر تا 255 بصورت صعودی در مؤلفه های S قرار داده می شود، یعنی S[1] = S[0] = 0 و S[255] = 255 و همچنین یک بردار موقت T خلق می شود. اگر طول کلید K برابر 256 بایت باشد، آنگاه K به T منتقل می شود. در غیر اینصورت برای کلیدی با طول keylen بایت، اولین مؤلفه های T از K کپی شده و سپس K هر چندبار لازم باشد تکرار شده تا T پر شود. این عملیات ابتدائی را می توان چنین خلاصه کرد:

تصویر sequence-codes-and-rc4-algorithms_3265_7 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

شکل 8: فرمول مقداردهی اولیه

سپس از T برای جایگشت آغازین S استفاده می شود. این امر با S[0] شروع شده و تا [255]S ادامه می یابد. هر S[i] با بایت دیگری در S بر اساس روشی که توسط T[i] دیکته می شود، تعویض می گردد:

تصویر sequence-codes-and-rc4-algorithms_3265_8 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

شکل 9: فرمول جایگزینی اولیه S

چون تنها عمل روی S یک تعویض محل بایت هاست، تنها اثر این امر ایجاد یک جایگشت است. S همچنان شامل تمام اعداد بین صفر تا 255 خواهد بود.

تولید دنباله

همین که بردار S با مقادیر اولیه پر شد، دیگر از کلید ورودی استفاده نخواهد شد. تولید دنباله شامل عبور از [0]S تا [255]S بوده و هر مقدار [S [i با بایت دیگری در S، بر حسب قانونی که بتوسط وضع فعلی S دیکته می شود، جایگزین می گردد. بعد از اینکه به [255]S رسیدیم، پردازش با شروع مجدد از [0]S ادامه می یابد:

تصویر sequence-codes-and-rc4-algorithms_3265_9 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

شکل 10: فرمول جریان نسل

برای رمزنگاری، اندازه k را با بایت بعدی متن ساده XOR می کنیم. برای رمز گشائی، اندازه k را با بایت بعدی متن رمز شده XOR می کنیم. شکل 11 منطق RC4 را نشان میدهد.

توانائی الگوریتم RC4

مقاله های متعددی نوشته شده اند که روش حمله به الگوریتم RC4 را تحلیل کرده اند (مثلا [MIST98] , [KNUD98] , [MANT01] , [FLUH00]). هیچکدام از این روش ها برای حمله به روش RC4 با کلیدی که دارای طول منطقی همچون 128 بیت باشد، عملی نیستند. یک مورد جدی تر در [FLUH01] مطرح گردید. نویسندگان مقاله نشان دادند که پروتکل WEP که برای فراهم نمودن محرمانگی در شبکه های LAN بیسیم از پروتکل 802.11 استفاده می کند، در برابر حمله بخصوصی آسیب پذیر است. در واقع مشکل به RC4 ربطی نداشته بلکه به روشی که کلیدها برای استفاده در ورودی RC4 تولید می شوند، مرتبط است. این مشکل بخصوص در سایر کاربردهایی که از RC4 استفاده می کنند ظاهر نشده و در پروتکل WEP نیز با تغییر روش تولید کلیدها، مشکل رفع خواهد شد. این مسئله، مشکل طراحی یک سیستم امن، که هم از تابع رمزنگاری و هم از پروتکل هائی که این توابع را بکار می گیرند استفاده می کند، را خاطر نشان می سازد.

تصویر sequence-codes-and-rc4-algorithms_3265_10 مروری بر ساختار رمزهای دنباله ای و الگوریتم RC4

شکل 11: دیاگرام الگوریتم RC4

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

 

مطالب مرتبط
معرفی پروتکل ICMP در شبکه

بازدید ۱۷۶۱ نفر
ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است