مقدمه

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

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

با وجود این، رمزگذارهای جویباری بدلیل مزایای مهمشان، امروزه بطور وسیعی مورد استفاده قرار میگیرند. رمزگذارهای جویباری میتوانند یا کلید متقارن باشد یا کلید عمومی، تمرکز این مقاله بر روی رمزگذارهای جویباری کلید متقارن است. رمزگذارهای بلاکی پیغام را با بلاکهای نسبتاً بزرگی پردازش می کنند (n>64bits) در این نوع رمزگذارها از تابعی یکسان برای رمزگذاری بلاکها استفاده می شود. بنابراین رمزگذارهای بلاکی بدون حافظه هستند. در مقابل، رمزگذارهای جویباری پیغام را در بلاکهایی به کوچکی یک تک بیت پردازش می کنند و تابع رمزگذاری ممکن است تغییر کند. بنابراین رمزگذارهای جویباری دارای حافظه هستند. در بعضی مواقع به آنها رمزگذارهای حالت نیز گفته می شود زیرا رمزگذار نه تنها به کلید و پیغام وابسته است بلکه به حالات جاری نیز وابسته است. این اختلاف میان رمزگذارهای جویباری و رمزگذارهای بلاکی قطی نیست یعنی با اضافه کردن یک مقدار حافظه کم به رمزگذارهای بلاکی، رمزگذارهای جویباریی با بلاکهای بزرگ نتیجه میشود.