موضوع مقاله: رمز قالبی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # رمز قالبی | مقدمه: رمز قالبی نوعی رمز کلید متقارن است که در آن ابتدا بیت‌های متن اصلی به بلوک‌هایی مجزا تقسیم‌بندی می‌شود، سپس الگوریتم رمزگذاری روی هر بلوک اعمال می‌گردد. | ## بخش 1: رمز قالبی | طبق تعریف ریاضی، رمز قالبی تابعی است که n بیت متن اصلی را تحت کنترل کلید K، به n بیت متن رمزشده تبدیل می‌کند و نیز n بیت متـن رمزشده را تحت کنترل کلیـد K، به n بیت متـن اصلی تبدیل می‌کند. تابع رمزنگاری برای قالب‌های n بیتی متن رمزشده، و قالب‌های n بیتی متن اصلی همراه با کلید ثابت(k)، یک تابع یک به یک و پوشا است. یعنی اگر تابع رمزگذاری(E) را تحت کنترل کلید (k) به یک قالب از متن اصلی(M) اعمال کنیم، یک قالب از متن رمزشده(c) بدست می‌آید. حال اگر تابع رمزگشایی(D) را تحت کنترل همان کلید(k) به این قالب متن رمز شده(c) اعمال کنیم، متن اصلی(M) دوباره بازیابی می‌شود: E(D(M = M. همچنین اگر تابع رمزگشایی(D) را تحت کنترل کلید (k) به یک قالب از متن رمزشده(C) اعمال کنیم، یک قالب از متن اصلی(M) بدست می‌آید. حال اگر تابع رمزگذاری(E) را تحت کنترل همان کلید(k) به این قالب متن اصلی(M) اعمال کنیم، متن رمزشده(C) دوباره بازیابی می‌شود: D(E(C = C.A. ساختارهای مختلف رمزهای بلوکی رمزهای بلوکی، دو ساختار کلی دارند: ساختار مبتنی بر شبکه فیستل: مانند رمز DES. البته همه رمزهای بلوکی لزوماً از این دو ساختار تبعیت نمی‌کنند، بلکه رمزهای بلوکی دیگری نیز هستند که ساختارهای منحصربه‌فردی دارند؛ مانند الگوریتم رمز Keeloq که رمز بلوکی مبتنی بر ساختار NLFSR (شیفت‌رحیسترهای غیرخطی) است. ساختار مبتنی بر شبکه جابجایی - جانشینی این ساختار از دو اصل در هم پیچیدگی و انتشار شانون تبعیت می‌کند. با استفاده از در هم پیچیدگی، رابطه بین بیت‌های کلید و بیت‌های متن رمزشده، غیرخطی و پیچیده می‌گردد. | ## بخش 2: رمز قالبی | با استفاده از انتشار، افزونگی موجود در متن اصلی پس از رمزکردن در متن رمز شده پخش می‌شود. در این ساختار از شبکه‌های جابجایی- جانشینی به صورت متوالی در چند دور استفاده می‌گردد. نحوه رمزگشایی نیز مانند رمزگذاری است با این تفاوت که در رمزگشایی نحوه اعمال زیرکلید برعکس رمزگذاری است. اگر یک بیت از متن اصلی تغییر کند، بواسطه S_BOXها چندین بیت از خروجی تغییر خواهد نمود. بدین ترتیب با تغییر یک بیت از متن اصلی، احتمال این که یک بیت خاص از متن رمزشده تغییر کند، ۰٫۵ است. سپس بر روی قسمت سمت راست ساختار، با استفاده از تابع F عملیات رمزگذاری صورت گرفته، خروجی تابع F (یا به نحوی تغییر یافته آن) با قسمت سمت چپ XOR می‌شود. سپس برای دور بعدی مکان دو قسمت سمت راست و چپ با یکدیگر جابجا می‌شوند: R_(i+۱) = L_i ⊕ F(R_i,K_i) L_(i+۱) = R_i نحوة رمزگشایی نیز مانند نحوة رمزگذاری است با این تفاوت که در رمزگشایی نحوه اعمال زیرکلید، برعکس حالت رمزگذاری است. در این ساختار برای رمزگشایی نیز مانند حالت رمزگذاری ابتدا متن رمزشده به دو قسمت تقسیم می‌شود، سپس بر روی قسمت سمت راست ساختار با استفاده از تابع F، عملیات رمزگشایی صورت گرفته، خروجی تابع F (یـا بـه نحوی تغییر یافته آن) بـا قسمت سمت چپ XOR می‌شود. سپس برای دور بعدی مکان دو قسمت سمت راست و چپ با یکدیگر جابجا می‌شود: R_i = L_(i+۱) L_i = R_(i+۱) ⊕ F(L_(i+۱),K_i) تفاوت این ساختار بــا ساختار مبتنی بــر شبکه جابجایی- جانشینی این است که، تابع F در این ساختار لزوماً معکوس پذیر نیست. همچنین این ساختار برای رمزگذاری یا رمزگشایی به دو قسمت تقسیم شده‌است، در حالی که در ساختار جابجایی- جانشینی برای رمزگذاری یا رمزگشایی نیازی به تقسیم‌بندی متن اصلی نیست. | ## بخش 3: رمز قالبی | حالات مختلف کاری رمزهای بلوکی برای استفاده از رمزهای بلوکی، بسته به نوع نیاز از حالات مختلفی استفاده می¬کنیم. هیچ حالتی را نمی‌توان یافت که کلیه مزایا را داشته باشد، و هیچ مشکلی نداشته باشد. بر این اساس، با توجه به نوع نیاز و نیز محدودیت‌هایی چون سرعت، حافظه، تعداد بیت‌های متن اصلی، اندازة برد سخت‌افزاری یا میزان هزینة مورد نیاز برای عمل رمزنگاری یا رمزگشایی و...، از حالت بهینه استفاده می‌کنیم[۶]. بر طبق استاندارد NIST، رمزهای قالبی از لحاظ کاربردی ۳ حالت دارند: رمزهای قالبی مورد استفاده برای محرمانگی: که ۶ حالت دارد. حالات «زنجیرة بلوک رمز»، «فیدبک خروجی»، و «فیدبک رمز» علاوه بر متن اصلی و کلید رمز، به یک بردار مقدار اولیه نیز به عنوان ورودی نیاز دارند. این بردار مقدار اولیه برای هر حالت اجرایی از عملیات رمزنگاری و رمزگشایی، به عنوان اولین بلوک ورودی به تابع رمز استفاده می‌شوند. لزومی ندارد بردار مقدار اولیه را مخفی نگه داریم، اما این بردار در حالت کلی، نباید از طریق خود الگوریتم رمزنگاری یا رمزگشایی، قابل تعیین یا قابل پیشگویی باشد. البته در حالت «فیدبک خروجی» چنانچه بردار مقدار اولیه غیرقابل پیشگویی باشد، در امنیت سیستم رمز، مشکلی به وجود نمی‌آید. بنابراین برای هر قسمت از متن رمزشدة ارسالی، باید بردار مقدار اولیه یا اطلاعاتی که برای محاسبة آن مورد نیاز است، در دسترس باشد؛ زیرا ما برای هر قسمت از متن رمزشدة ارسالی برای ایجاد محرمانگی، به یک بردار مقدار اولیه یکتا نیاز داریم. | ## جمع‌بندی | برای کلیه حالات، بلوک‌ها یا بندهای متن اصلی به بلوک‌ها یا بندهای متن رمز شده متناظر، با طول بیتی یکسان تبدیل می‌شوند.