بردار اولیه

مقدمه
در رمزنگاری، بردار اولیه یک ورودی تصادفی به طول ثابت است که به اعمال اولیه رمزگذاری اضافه می‌شود. تصادفی بودن این بردار اولیه به منظور رسیدن به امنیت معنایی بسیار حیاتی است. این ویزگی مانع از آن می‌شود که در صورت استفاده از یک کلید یکسان در چندین بار رمزگذاری، حمله‌کننده بتواند رابطه بین قطعه پیام اصلی و قطعه پیام رمز شده متناظر با آن را حدس بزند. طول این قطعه ثابت بستگی به الگوریتم رمزگذاری دارد. معمولا در روش‌های رمز قطعه‌ایی، اندازه این ورودی ثابت با اندازه قطعه رمز برابر در نظر گرفته می‌شود. به روش‌های افزودن بردار اولیه به رمزگذاری قطعه‌ایی اصطلاحا روش‌های عملیات گفته می‌شود. در رمز جریانی مثل RC4 بر خلاف رمز قطعه‌ایی، قابلیت دریافت بردار اولیه به صورت صریح در ورودی را ندارند. پس در این نوع رمزگذاری نیاز به یک روش ابتکاری برای ترکیب بردار اولیه با کلید رمز یا ایجاد تغییر در وضعیت درونی الگوریتم، با استفاده از بردار اولیه‌است.
انگیزه
رمز قطعه‌ایی یکی از پایه‌ایی‌ترین اعمال اولیه در رمزنگاری است که مکررا استفاده می‌شود. از این روش تنها می‌توان برای رمز کردن پیام‌ها با طول ثابت از پیش تعیین شده استفاده کرد. برای مثال الگوریتم AES در هر بار اجرا می‌تواند تنها یک بلوک ۱۲۸ بیتی داده را به یک بلوک ۱۲۸ بیتی داده رمز شده نگاشت کند. در این الگوریتم از کلیدی که به عنوان ورودی به آن داده می‌شود برای نگاشت داده اصلی به داده رمز شده استفاده می‌شود. اگر ما نیاز داشته باشیم که یک قطعه پیام بزرگتر از طول ثابت ورودی الگوریتم رمز کنیم، ساده‌ترین روش این است که ما پیام ورودی را به اندازه طول قطعه داده ورودی الگوریتم رمز، بشکنیم و هر قطعه را به طور مستقل با استفاده از کلید، رمز کنیم و در آخر قطعه‌های رمز شده را به یکدیگر بچسبانیم. این روش به علت اینکه هر قطعه پیام اصلی را به یک قطعه رمز شده متناظر و هم اندازه با آن نگاشت می‌کند، امن نیست زیرا اگر شخص سومی بتواند قطعه داده‌های رمز شده را مشاهده کند ممکن است به راحتی، حتی بدون اینکه کلید را در اختیار داشته باشد بتواند به محتوای پیام پی ببرد. به عنوان مثال تصویر زیر نمونه‌ایی از این روش ناامن را نشان می‌دهد.
در این حالت به منظور پنهان کردن الگوها در قطعه داده‌های رمز شده و همچنین جلوگیری از تولید مجدد کلید در هر مرحله به ازای ورود هر قطعه پیام به الگوریتم رمز، نیاز به روشی برای تصادفی کردن ورود قطعه داده‌های پیام به الگوریتم رمز است. موسسه ملی فناوری و استانداردها در سال ۱۹۸۰، مستندات یک استاندارد که توسط FIPS طراحی شده بود را منتشر کرد که در آن به توصیف چهار شیوه که هر یک راه‌حل مختلفی را برای رمز کردن قطعه پیام ورودی به الگوریتم رمز ارائه می‌دادند، پرداخته شده بود. به این شیوه‌ها اصطلاحا روش‌های عملیات رمز قطعه‌ایی گفته می‌شود. اولین روش که به عنوان(Electronic CodeBook(ECB شناخته می‌شود از همان استراتژی ساده توصیف شده در بالا استفاده می‌کند. یعنی هر قطعه داده ورودی را به صورت کاملا مستقل با یک کلید که به عنوان ورودی به الگوریتم داده شده‌است رمز می‌کند. اما در سه روش بعدی بر خلاف روش اول پروسه‌ایی را توصیف می‌کند که در آن قطعه داده رمز شده فعلی با قطعه داده بعدی که می‌خواهد رمز شود ترکیب می‌شود. به منظور راه‌اندازی این پروسه‌ها نیاز به یک ورودی اضافی است که با اولین بلوک ترکیب شود که به آن اصطلاحا بردار اولیه گفته می‌شود.
واژگان
اعمال اولیه رمزگزاریcryptographic primitive
امنیت معناییsemantic security
بردار اولیهinitialization vector
رمز جریانیstream cipher
رمز قطعه‌اییblock cipher
رمزنگاریcryptography
روش‌های عملیاتmodes of operation
روش‌های عملیات رمز قطه‌اییblock cipher modes of operations