بردار اولیه

در رمزنگاری، **بُردار اولیه** Initialization Vector یا متغیر نخستین starting Variable یک ورودی تصادفی به طول ثابت  است که به اعمال اولیه رمزگذاری اضافه می‌شود.  تصادفی بودن این بردار اولیه به منظور رسیدن به امنیت معنایی بسیار حیاتی است. این ویژگی مانع از آن می‌شود که در صورت استفاده از یک کلید یکسان در چندین بار رمزگذاری، حمله‌کننده بتواند رابطهٔ بین قطعه پیام اصلی و قطعه پیام رمز شده متناظر با آن را حدس بزند. طول این قطعه ثابت بستگی به الگوریتم رمزگذاری دارد. معمولاً در روش‌های رمز قطعه‌ایی، اندازه این ورودی ثابت با اندازه قطعه رمز برابر در نظر گرفته می‌شود. به روش‌های افزودن بردار اولیه به رمزگذاری قطعه‌ایی اصطلاحاً روش‌های عملیات گفته می‌شود. در رمز جریانی مثل 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

## منابع

* http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
* http://en.wikipedia.org/wiki/Initialization_vector

رده:رمزنگاری
رده:مدهای کاری رمزهای قطعه‌ای