From Wikipedia, the free encyclopedia
رمزنگار چهارم ریوست (به انگلیسی: Rivest Cipher 4) با کوتهنوشت RC4 یک رمز دنبالهای است که در هر زمان یک بلوک از عناصر ورودی را پردازش کرده و یک بلوک خروجی برای آن بلوک ورودی تولید میکند. یک رمز دنبالهای، عناصر ورودی را بهطور پیوسته پردازش کرده و همینطور که جلو میرود عناصر متن رمزنگاری شده را تولید میکند. اگرچه رمزهای قالبی بسیار متداولترند ولی در برخی کاربردها یک رمز دنبالهای گزینهای مناسبتراست. متداولترین رمز دنبالهای RC4 است.
این مقاله دقیق، کامل و صحیح ترجمه نشده و نیازمند ترجمه به فارسی است. کل یا بخشی از این مقاله به زبانی بهجز زبان فارسی نوشته شدهاست. اگر مقصود ارائهٔ مقاله برای مخاطبان آن زبان است، باید در نسخهای از ویکیپدیا به همان زبان نوشته شود (فهرست ویکیپدیاها را ببینید). در غیر این صورت، خواهشمند است ترجمهٔ این مقاله را با توجه به متن اصلی و با رعایت سیاست ویرایش، دستور خط فارسی و برابر سازی به زبان فارسی بهبود دهید و سپس این الگو را از بالای صفحه بردارید. همچنین برای بحثهای مرتبط، مدخل این مقاله در فهرست صفحههای نیازمند ترجمه به فارسی را ببینید. اگر این مقاله به زبان فارسی بازنویسی نشود، تا دو هفتهٔ دیگر نامزد حذف میشود و/یا به نسخهٔ زبانی مرتبط ویکیپدیا منتقل خواهد شد. اگر شما اخیراً این مقاله را بهعنوان صفحهٔ نیازمند ترجمه برچسب زدهاید، لطفاً عبارت {{جا:هبک-ترجمه به فارسی|1=آر سی ۴}} ~~~~ را نیز در صفحهٔ بحث نگارنده قرار دهید. |
این مقاله نیازمند ویکیسازی است. لطفاً با توجه به راهنمای ویرایش و شیوهنامه، محتوای آن را بهبود بخشید. (ژانویه ۲۰۱۲) |
در رمزنگاری، RC4 متداولترین نرمافزار رمزنگاری است و در پروتکلهایی همچون (Secure Socket Layer (SSL برای محافظت از ترافیک شبکه و WEP برای امن کردن شبکههای بیسیم استفاده میشود. RC4 دارای ویژگیهای قابل توجهی، مانند سادگی و سرعت آن در نرمافزار است.
مطالعات گستردهای در رابطه با روشهای حمله به RC4 انجام شدهاست ولی هیچکدام از این روشها برای حمله به RC4 با کلیدی که دارای طول منطقی همچون ۱۲۸ بیت باشد عملی نبودهاند. یک مورد جدی در [FLUH1] مطرح شدهاست که در آن محققان نشان دادند پروتکل WEP که برای محرمانگی در شبکههای محلی بیسیم مورد استفاده قرار میگیرد، در برابر نوعی حمله بخصوص آسیبپذیر است؛ ولی در واقع مشکل ربطی به RC4 نداشت بلکه به روشی که کلیدها برای استفاده در ورودی RC4 تولید میشوند، بستگی داشتهاست. این مشکل در سایر کاربردهایی که از RC4 استفاده میکنند مشاهده نشده و در WEP نیز با تغییر روش تولید کلیدها، مشکل حل شدهاست.
RC4 یک رمز دنبالهای است که توسط رونالد ریوست از اعضای شرکت RSA Security در سال ۱۹۸۷طراحی شد. RC4 از نظر تجاری مدتها از سوی شرکت RSA Security پنهان نگه داشته شده بود و در نهایت این الگوریتم در سپتامبر ۱۹۹۴ لو رفت.
مهمترین فاکتورهای موفقیت RC4 در محدوده وسیع کاربردهای آن، سادگی و سرعت آن است و اینکه پیادهسازی آن هم در سختافزار و هم در نرمافزار کارآمد است و همچنین توسعه آن بسیار سادهاست.
RC4 یک رمز دنبالهای با طول کلید متغیر بوده و عملیات آن روی بایتها انجام میشود. الگوریتم بر مبنای استفاده از یک جایگشت تصادفی بنا نهاده شدهاست. RC4 یک جریان شبه تصادفی از بیتها تولید میکند. خروجی تولیدکننده شبه تصادفی که یک دنبالهٔ کلید (keystream) نامیده میشود با دنباله متن سادهٔ ورودی به صورت یک بایت در هر زمان و به صورت عمل XOR روی بیتها ترکیب میشود. عمل رمزگشایی نیز به صورت مشابه انجام میشود. برای تولید دنبالهٔ کلید، کد استفاده از یک حالت داخلی پنهانی را میسر میسازد که شامل دو قسمت است:
جایگشت با یک طول کلید متغیر آغاز میشود که معمولاً بین ۴۰ تا ۲۵۶ بیت است، که با استفاده از الگوریتم زمانبندی کلید (KAS) انجام میشود. بعد خاتمه این مرحله، جریانی از بیتها با استفاده از الگوریتم تولید شبه تصادفی (PRGA) تولید میشود.
الگوریتم زمانبندی کلید (به انگلیسی: The Key-Scheduling Algorithm) با کوتهنوشت KSA برای مقداردهی اولیه جایگشت در آرایه S استفاده میشود. keylength به عنوان تعداد بایتهای کلید تعریف میشود که میتواند بین ۱تا ۲۵۶ باشد ولی معمولاً بین ۵ و۱۶ است و به تبع آن، طول کلید نیز معمولاً بین۴۰ و ۱۲۸ بیت خواهد بود. ابتدا آرایه S برای ایجاد جایگشت مقداردهی اولیه شده و سپس S برای ۲۵۶ تکرار در PRGA پردازش میشود و همزمان نیز بایتهای مربوط به کلید را تولید میکند.
for i from 0 to 255
S[i]:= i
endfor
j:= 0
for i from 0 to 255
j:= (j + S[i] + key[i mod keylength]) mod 256
[swap values of S[i] and S[j
endfor
به خاطر تکرارهای زیاد، PRGA حالت و خروجیهای دنباله کلید را بهبود میدهد. در هر بار تکرار، الگوریتم تولید شبه تصادفی The pseudo-random generation algorithm با کوتهنوشت PRGA مقدار i را افزایش میدهد و سپس مقدار [S[i را با j جمع میکند، مقادیر [S[i و [S[j را با هم جابجا کرده و سپس مقدار S[i]+S[j] mod 256 را محاسبه کرده و به عنوان شاخصی برای واکشی S که در واقع خروجی الگوریتم است، استفاده میکند. هر عنصر S با یک عنصر دیگر حداقل یک بار در هر ۲۵۶ تکرار جابجا خواهد شد.
i:= 0 j:= 0 while GeneratingOutput: i:= (i + 1) mod 256 j:= (j + S[i]) mod 256 [swap values of S[i] and S[j [K:= S[(S[i] + S[j]) mod 256 output K endwhile
خیلی از جریانهای رمزشده بر مبنای شیفت رجیسترهای بازخورد خطی (به انگلیسی: Linear feedback shift registers) هستند این در حالی است که پیادهسازی این سیستمها در سختافزار کارآمد هستند ولی در نرمافزار اینچنین نیستند. در طراحی RC4 از استفاده از LFSRها پرهیز میشود و بنابراین برای پیادهسازی نرمافزاری ایدهآل است چرا که فقط نیازمند دستکاری بایتها ست. RC4 از ۲۵۶ بایت حافظه برای آرایه حالت، [S[0 تا S[255]، k بایت حافظه برای کلید، [key[0 تا [key[k-1، و متغیرهای عددی i, j و y استفاده میکند.
بردارهای تست زیر رسمی نیستند ولی برای تست کردن برنامههای RC4 راحت مناسب و راحت هستند. کلیدها و متنهای اصلی همگی در مد اسکی هستند و دنباله کلید و متون رمزنگاری شده در مد دستگاه اعداد پایه ۱۶ هستند.
ملاحظات زیر در طراحی یک رمز دنبالهای ذکر شدهاست:
با یک مولداعداد تصادفی با طرح مناسب، یک رمز دنبالهای میتواند به هممان ندازه یک رمز قالبی با همان طول کلید، امن باشد. مزیت اصلی رمزهای دنبالهای این است که رمزهای دنبالهای تقریباً همیشه سریعتربوده و نسبت به رمزهای قالبی از حجم برنامه کمتری استفاده میکنند. به عنوان مثال رمز RC4 میتواند تنها با چند خط برنامه کامپوتری پیادهسازی شود. جدول زیر زمان اجرای RC4 را با سه رمز قالبی معروف مقایسه کردهاست:
سرعت (مگابیت بر ثانیه) | طول کلید | نوع رمز |
---|---|---|
۹ | ۵۶ | DES |
۳ | ۱۶۸ | 3DES |
۰٫۹ | متغیر | RC2 |
۴۵ | متغیر | RC4 |
خوبی یک رمز قالب در این است که میتوان از کلید رمز بارها استفاده کرد. در رمز دنبالهای اگر دو متن ساده با یک کلید یکسان رمزگاری شوند، آنگاه شکستن رمز غالباً بسیار آسان خواهد بود. اگر دو دنباله متن رمزنگاری شده با هم XOR شوند، نتیجه با XOR دو متن ساده نظیر آنها یکسان خواهدبود. حال اگر متن ساده، دنباله کوتاهی همانند کارتهای اعتباری باشند، عمل شکستن رمز ممکن است موفقیتآمیز باشد. برای کارردهایی همچون کانالهای مخابرهٔ داده یا مرور لینکهای وب که نیازمند رمزنگاری/رمزگشایی دنبالههای دیتا دارند، یک رمز دنبالهای میتواند گزینه بهتری باشد. برای کاربردهایی مانند انتقال فایل، پست الکترونیک و پایگاه داده که با بلوکهای دیتا سروکار دارند رمزهای قالبی میتوانند مناسبترباند. با این وجود هر دو نوع رمز تقریباً در هر کاربردی قابل استفادهاند.
به دلیل اینکه RC4 یک رمزنگاری دنبالهای است سازگارتر از رمزهای قالبی است، و در صورتی که با یک کد احراز هویت پیام (MAC) ترکیب نشود رمزنگاری نسبت به حملهٔ تغییر بیتها آسیبپذیر خواهد بود.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.