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

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

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

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

رمز دنباله ای

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الگوریتم RC4

الگوریتم RC4 یک رمز دنباله ای است که در سال ۱۹۸۷ میلادی توسط Ron Rivest برای کمپانی RSA Security طراحی گردید. الگوریتم RC4 یک رمز دنباله ای با طول کلید متغیر بوده و عملیات آن روی بایتها انجام می شود. الگوریتم بر مبنای استفاده از یک جایگشت تصادفی بنا نهاده شده است. تحلیل این رمز نشان میدهد که دوره تناوب رمز با احتمال قریب به یقین بزرگتر از ۱۰۱۰۰ است [ROBS95a]. برای تولید هر بایت خروجی بین ۸ تا ۱۶ عمل لازم است و انتظار می رود که رمزنگاری در نرم افزار به سرعت انجام شود.

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

شکل ۶: مراحل جستجو در 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 پنهان نگاه داشته شده بود. در سپتامبر ۱۹۹۴ این الگوریتم به صورت ناشناس در لیست پستی Cypherpunks قرار گرفت و لو رفت.

الگوریتم RC4 به صورت قابل توجهی ساده بوده و تشریح آن کاملا آسان است. یک کلید با طول متغیر ۱ تا ۲۵۶ بایت (۸ تا ۲٫۰۴۸ بیت) برای آغازیدن یک بردار حالت ۲۵۶ بایتی S با مؤلفه های S[255] , … , S[1] , S[0] مورد استفاده قرار می گیرد. در همه حالات، S شامل جایگشت همه اعداد ۸ بیتی از صفر تا ۲۵۵ است. برای رمزنگاری و رمز گشائی، یک بایت k (شکل ۵ را ببینید) از میان ۲۵۵ مؤلفه S به صورت سیستماتیک انتخاب می شود. همینطور که هر مقدار k تولید می شود، مؤلفه های S یک بار دیگر جایگشت می یابند.

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

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

آغازیدن S

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

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

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

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

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

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

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

تولید دنباله

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

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

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

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

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

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

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

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

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


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

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

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