رمز قالبی: تفاوت میان نسخه‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد
محتوای حذف‌شده محتوای افزوده‌شده
M2khosravizadeh (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
Ariobarzan (بحث | مشارکت‌ها)
جز ویرایش به وسیلهٔ ابزار خودکار ابرابزار
خط ۱: خط ۱:
رمز قالبی نوعی [[الگوریتم‌های کلید متقارن |رمز کليد متقارن]] است که در آن ابتدا بيت‎های متن اصلی به بلوک‎هايی مجزا تقسيم‎بندی می‎شود، سپس الگوريتم رمزگذاری روی هر بلوک اعمال می‎گردد. طبق تعريف رياضی، رمز قالبی تابعی است که n بيت متن اصلی را تحت کنترل کليد K، به n بيت متن رمزشده تبديل می‎کند و نيز n بيت متـن رمزشده را تحت کنترل کليـد K، به n بيت متـن اصلی تبديل می‎کند . قالب‎های متن اصلی و متن رمزشده تعداد بيت یکسانی دارند. اندازه قالب را با n يا b نمایش می‎دهند، که همان تعداد بيت‎های آن قالب است.
رمز قالبی نوعی [[الگوریتم‌های کلید متقارن |رمز کلید متقارن]] است که در آن ابتدا بیت‎های متن اصلی به بلوک‎هایی مجزا تقسیم‎بندی می‎شود، سپس الگوریتم رمزگذاری روی هر بلوک اعمال می‎گردد. طبق تعریف ریاضی، رمز قالبی تابعی است که n بیت متن اصلی را تحت کنترل کلید K، به n بیت متن رمزشده تبدیل می‎کند و نیز n بیت متـن رمزشده را تحت کنترل کلیـد K، به n بیت متـن اصلی تبدیل می‎کند. قالب‎های متن اصلی و متن رمزشده تعداد بیت یکسانی دارند. اندازه قالب را با n یا b نمایش می‎دهند، که همان تعداد بیت‎های آن قالب است.


تابع رمزنگاری برای قالب‎های n بيتی متن رمزشده، و قالب‎های n بيتی متن اصلی همراه با کليد ثابت(k)، يک تابع يک به يک و پوشا است. یعنی اگر تابع [[رمزگذاری]](E) را تحت کنترل کليد (k) به يک قالب از متن اصلی(M) اعمال کنيم، يک قالب از متن رمزشده(c) بدست می‎آيد. حال اگر تابع رمزگشایی(D) را تحت کنترل همان کليد(k) به اين قالب متن رمز شده(c) اعمال کنيم، متن اصلی(M) دوباره بازيابی می‎شود:
تابع رمزنگاری برای قالب‎های n بیتی متن رمزشده، و قالب‎های n بیتی متن اصلی همراه با کلید ثابت(k)، یک تابع یک به یک و پوشا است. یعنی اگر تابع [[رمزگذاری]](E) را تحت کنترل کلید (k) به یک قالب از متن اصلی(M) اعمال کنیم، یک قالب از متن رمزشده(c) بدست می‎آید. حال اگر تابع رمزگشایی(D) را تحت کنترل همان کلید(k) به این قالب متن رمز شده(c) اعمال کنیم، متن اصلی(M) دوباره بازیابی می‎شود:
{{چپچین}}
{{چپچین}}
E(D(M)) = M.
E(D(M)) = M.
{{پایان چپچین}}
{{پایان چپچین}}
همچنين اگر تابع [[رمزگشایی]](D) را تحت کنترل کليد (k) به يک قالب از متن رمزشده(C) اعمال کنيم، يک قالب از متن اصلی(M) بدست می‎آيد. حال اگر تابع رمزگذاری(E) را تحت کنترل همان کليد(k) به اين قالب متن اصلی(M) اعمال کنيم، متن رمزشده(C) دوباره بازيابی می‎شود:
همچنین اگر تابع [[رمزگشایی]](D) را تحت کنترل کلید (k) به یک قالب از متن رمزشده(C) اعمال کنیم، یک قالب از متن اصلی(M) بدست می‎آید. حال اگر تابع رمزگذاری(E) را تحت کنترل همان کلید(k) به این قالب متن اصلی(M) اعمال کنیم، متن رمزشده(C) دوباره بازیابی می‎شود:
{{چپچین}}
{{چپچین}}
D(E(C)) = C .<ref> A. Menezes, P. van Oorschot and S. Vanstone, “Handbook of Applied Cryptography”, 1997,PP 191-282. http://www.cacr.math.uwaterloo.ca/hac</ref>
D(E(C)) = C.<ref> A. Menezes, P. van Oorschot and S. Vanstone, “Handbook of Applied Cryptography”, ۱۹۹۷,PP ۱۹۱-۲۸۲. http://www.cacr.math.uwaterloo.ca/hac</ref>
{{پایان چپچین}}
{{پایان چپچین}}
==ساختارهاي مختلف رمزهاي بلوكي==


== ساختارهای مختلف رمزهای بلوکی ==
رمزهاي بلوكي، دو ساختار كلي دارند:


رمزهای بلوکی، دو ساختار کلی دارند:
ساختار مبتني بر شبكه فيستل: مانند رمز DES.


ساختار مبتني بر شبكه جابجايي- جانشيني: مانند رمز AES.
ساختار مبتنی بر شبکه فیستل: مانند رمز DES.


ساختار مبتنی بر شبکه جابجایی- جانشینی: مانند رمز AES.
البته همه رمزهاي بلوكي لزوماً از اين دو ساختار تبعيت نمي‎كنند، بلكه رمزهاي بلوكي ديگري نيز هستند كه ساختارهاي منحصر بفردي دارند؛ مانند الگوریتم رمز Keeloq که رمز بلوکی مبتنی بر ساختار NLFSR (شیفت‎رحیسترهای غیرخطی) است.
<ref>[https://sites.google.com/site/sidechannela/ sidechannelattack<!-- عنوان تصحیح شده توسط ربات -->]</ref>


البته همه رمزهای بلوکی لزوماً از این دو ساختار تبعیت نمی‎کنند، بلکه رمزهای بلوکی دیگری نیز هستند که ساختارهای منحصر بفردی دارند؛ مانند الگوریتم رمز Keeloq که رمز بلوکی مبتنی بر ساختار NLFSR (شیفت‎رحیسترهای غیرخطی) است.<ref>[https://sites.google.com/site/sidechannela/ sidechannelattack<!-- عنوان تصحیح شده توسط ربات -->]</ref>
==ساختار مبتني بر شبكه جابجايي - جانشيني==


== ساختار مبتنی بر شبکه جابجایی - جانشینی ==
اين ساختار از دو اصل در هم پيچيدگي و انتشار شانون تبعيت مي‎كند . با استفاده از در هم پيچيدگي، رابطه بين بيت‎هاي كليد و بيت‎هاي متن رمزشده، غيرخطي و پيچيده مي‎گردد. با استفاده از انتشار، [[افزونگي]] موجود در متن اصلي پس از رمزكردن در متن رمز شده پخش مي‎شود.


این ساختار از دو اصل در هم پیچیدگی و انتشار شانون تبعیت می‎کند. با استفاده از در هم پیچیدگی، رابطه بین بیت‎های کلید و بیت‎های متن رمزشده، غیرخطی و پیچیده می‎گردد. با استفاده از انتشار، [[افزونگی]] موجود در متن اصلی پس از رمزکردن در متن رمز شده پخش می‎شود.
در اين ساختار از شبكه هاي جابجايي- جانشيني بصورت متوالي در چند دور استفاده مي‎گردد. در هر دور، بیت‎های کلید دور با بیت‎های متن اصلی XOR می‎شود. همچنین S_BOXها بیت‎های یک بلوک از متن اصلی را با بیت‎های دیگر جایگزین کرده P_BOXها بیت‎های خروجی از S_BOXهای یک دور را با یکدیگر جابجا می کنند. درواقع درهم‎پیچیدگی توسط S_BOX و انتشار توسط P_BOX انجام می‎گیرد. در دور آخر جابجایی بیتی صورت نمی‎گیرد.نحوه رمزگشایی نیز ماندد رمزگذاری است با این تفاوت که در رمزگشایی نحوه اعمال زیرکلید برعکس رمزگذاری است.


در این ساختار از شبکه‌های جابجایی- جانشینی بصورت متوالی در چند دور استفاده می‎گردد. در هر دور، بیت‎های کلید دور با بیت‎های متن اصلی XOR می‎شود. همچنین S_BOXها بیت‎های یک بلوک از متن اصلی را با بیت‎های دیگر جایگزین کرده P_BOXها بیت‎های خروجی از S_BOXهای یک دور را با یکدیگر جابجا می‌کنند. درواقع درهم‎پیچیدگی توسط S_BOX و انتشار توسط P_BOX انجام می‎گیرد. در دور آخر جابجایی بیتی صورت نمی‎گیرد. نحوه رمزگشایی نیز ماندد رمزگذاری است با این تفاوت که در رمزگشایی نحوه اعمال زیرکلید برعکس رمزگذاری است.
اگر يک بيت از متن اصلی تغيير کند، بواسطه S_BOXها چندين بيت از خروجی تغيير خواهد نمود. سپس اين تغييرات توسط P_BOXها در S_BOXهای بعدی منتشر خواهد شد. در يک سيستم رمز بلوکی خوب، P_BOXها بيت‎های مربوط به خروجی يک S_BOX را بطور کامل در S_BOXهای بعدی پراکنده می‎سازد. بدين ترتيب با تغيير يک بيت از متن اصلی، احتمال اين که يک بيت خاص از متن رمزشده تغيير کند، 0.5 است. به اين خاصيت، خاصيت بهمنی می‎گويند.


اگر یک بیت از متن اصلی تغییر کند، بواسطه S_BOXها چندین بیت از خروجی تغییر خواهد نمود. سپس این تغییرات توسط P_BOXها در S_BOXهای بعدی منتشر خواهد شد. در یک سیستم رمز بلوکی خوب، P_BOXها بیت‎های مربوط به خروجی یک S_BOX را بطور کامل در S_BOXهای بعدی پراکنده می‎سازد. بدین ترتیب با تغییر یک بیت از متن اصلی، احتمال این که یک بیت خاص از متن رمزشده تغییر کند، ۰٫۵ است. به این خاصیت، خاصیت بهمنی می‎گویند.
از رمزهای بلوکی معروف مبتنی بر شبکه شبکه جابجايی- جانشينی می‎توان رمزهای زير را نام برد:

از رمزهای بلوکی معروف مبتنی بر شبکه شبکه جابجایی- جانشینی می‎توان رمزهای زیر را نام برد:
{{چپچین}}
{{چپچین}}
AES، ABC، 3way، Akelarre ، Anubis، ARIA، BaseKing، BEAR and LION، CRYPTON
AES، ABC، ۳way، Akelarre، Anubis، ARIA، BaseKing، BEAR and LION، CRYPTON
{{پایان چپچین}}
{{پایان چپچین}}
==ساختار مبتنی بر شبکه فيستل==


== ساختار مبتنی بر شبکه فیستل ==
در اين ساختار برای رمزگذاری، ابتدا متن اصلی به دو قسمت تقسيم می‎شود. سپس بر روی قسمت سمت راست ساختار، با استفاده از تابع F عمليات رمزگذاری صورت گرفته، خروجی تابع F (يا به نحوی تغيير يافته آن) با قسمت سمت چپ XOR می‎شود. سپس برای دور بعدی مکان دو قسمت سمت راست و چپ با يکديگر جابجا می‎شوند:

در این ساختار برای رمزگذاری، ابتدا متن اصلی به دو قسمت تقسیم می‎شود. سپس بر روی قسمت سمت راست ساختار، با استفاده از تابع F عملیات رمزگذاری صورت گرفته، خروجی تابع F (یا به نحوی تغییر یافته آن) با قسمت سمت چپ XOR می‎شود. سپس برای دور بعدی مکان دو قسمت سمت راست و چپ با یکدیگر جابجا می‎شوند:
{{چپچین}}
{{چپچین}}
R_(i+1) = L_i ⊕ F(R_i,K_i)
R_(i+۱) = L_i ⊕ F(R_i,K_i)


L_(i+1) = R_i
L_(i+۱) = R_i
{{پایان چپچین}}
{{پایان چپچین}}
نحوة رمزگشايی نيز مانند نحوة رمزگذاری است با اين تفاوت که در رمزگشايی نحوه اعمال زيرکليد، برعکس حالت رمزگذاری است. در اين ساختار برای رمزگشايی نيز مانند حالت رمزگذاری ابتدا متن رمزشده به دو قسمت تقسيم می‎شود، سپس بر روی قسمت سمت راست ساختار با استفاده از تابع F، عمليات رمزگشايی صورت گرفته، خروجی تابع F (يـا بـه نحوی تغيير يافته آن) بـا قسمت سمت چپ XOR می‎شود. سپس برای دور بعدی مکان دو قسمت سمت راست و چپ با يکديگر جابجا می‎شود:
نحوة رمزگشایی نیز مانند نحوة رمزگذاری است با این تفاوت که در رمزگشایی نحوه اعمال زیرکلید، برعکس حالت رمزگذاری است. در این ساختار برای رمزگشایی نیز مانند حالت رمزگذاری ابتدا متن رمزشده به دو قسمت تقسیم می‎شود، سپس بر روی قسمت سمت راست ساختار با استفاده از تابع F، عملیات رمزگشایی صورت گرفته، خروجی تابع F (یـا بـه نحوی تغییر یافته آن) بـا قسمت سمت چپ XOR می‎شود. سپس برای دور بعدی مکان دو قسمت سمت راست و چپ با یکدیگر جابجا می‎شود:
{{چپچین}}
{{چپچین}}
R_i = L_(i+1)
R_i = L_(i+۱)


L_i = R_(i+1) ⊕ F(L_(i+1),K_i)
L_i = R_(i+۱) ⊕ F(L_(i+۱),K_i)
{{پایان چپچین}}
{{پایان چپچین}}
تفاوت اين ساختار بــا ساختار مبتنی بــر شبکه جابجايی- جانشينی اين است که، تابع F در اين ساختار لزوماً معکوس پذير نيست. همچنين اين ساختار برای رمزگذاری و يا رمزگشايی به دو قسمت تقسيم شده است، در حالی که در ساختار جابجايی- جانشينی برای رمزگذاری و يا رمزگشايی نيازی به تقسيم‎بندی متن اصلی نيست.
تفاوت این ساختار بــا ساختار مبتنی بــر شبکه جابجایی- جانشینی این است که، تابع F در این ساختار لزوماً معکوس پذیر نیست. همچنین این ساختار برای رمزگذاری و یا رمزگشایی به دو قسمت تقسیم شده است، در حالی که در ساختار جابجایی- جانشینی برای رمزگذاری و یا رمزگشایی نیازی به تقسیم‎بندی متن اصلی نیست.


از رمزهای بلوکی معروف مبتنی بر شبکه فيستل می‎توان رمزهای زير را نام برد:
از رمزهای بلوکی معروف مبتنی بر شبکه فیستل می‎توان رمزهای زیر را نام برد:
{{چپچین}}
{{چپچین}}
DES،Blowfish ،Camellia , CAST-128 ،FEAL ،ICE، KASUMI ،LOKI97 ، Lucifer ، MARS، MAGENTA، MISTY1، RC5، TEA، Triple DES، Twofish.
DES،Blowfish،Camellia , CAST-۱۲۸،FEAL،ICE، KASUMI،LOKI۹۷، Lucifer، MARS، MAGENTA، MISTY۱، RC۵، TEA، Triple DES، Twofish.
{{پایان چپچین}}
{{پایان چپچین}}


==حالات مختلف کاری رمزهای بلوکی==
== حالات مختلف کاری رمزهای بلوکی ==


برای استفاده از رمزهای بلوکی، بسته به نوع نياز از حالات مختلفی استفاده می¬کنيم. هر حالت مزايا و معايب خود را دارد. هيچ حالتی را نمی‎توان يافت که کليه مزايا را داشته باشد، و هيچ مشکلی نداشته باشد. بر اين اساس، با توجه به نوع نياز و نيز محدوديت‎هايی چون سرعت، حافظه، تعداد بيت‎های متن اصلی، اندازة برد سخت‎افزاری و يا ميزان هزينة مورد نياز برای عمل رمزنگاری و يا رمزگشايی و ...، از حالت بهينه استفاده می‎کنيم[6].
برای استفاده از رمزهای بلوکی، بسته به نوع نیاز از حالات مختلفی استفاده می¬کنیم. هر حالت مزایا و معایب خود را دارد. هیچ حالتی را نمی‎توان یافت که کلیه مزایا را داشته باشد، و هیچ مشکلی نداشته باشد. بر این اساس، با توجه به نوع نیاز و نیز محدودیت‎هایی چون سرعت، حافظه، تعداد بیت‎های متن اصلی، اندازة برد سخت‎افزاری و یا میزان هزینة مورد نیاز برای عمل رمزنگاری و یا رمزگشایی و...، از حالت بهینه استفاده می‎کنیم[۶].


بر طبق استاندارد NIST، رمزهای قالبی از لحاظ کاربردی 3 حالت دارند:
بر طبق استاندارد NIST، رمزهای قالبی از لحاظ کاربردی ۳ حالت دارند:


رمزهای قالبی مورد استفاده برای محرمانگی: که 6 حالت دارد.
رمزهای قالبی مورد استفاده برای محرمانگی: که ۶ حالت دارد.


فهرست داده الکترونيکی.
فهرست داده الکترونیکی.


زنجيره بلوک-رمز.
زنجیره بلوک-رمز.


فيدبک رمز.
فیدبک رمز.


فيدبک خروجی.
فیدبک خروجی.


شمارنده.
شمارنده.


رمز پيچشی با تنظيم افزونگی متن رمزشده.
رمز پیچشی با تنظیم افزونگی متن رمزشده.


رمزهای بلوکی مورد استفاده برای اعتبار پيام: که شامل يک حالت است.
رمزهای بلوکی مورد استفاده برای اعتبار پیام: که شامل یک حالت است.


رمز مبتنی بر کد اعتبار پيام.
رمز مبتنی بر کد اعتبار پیام.


رمزهای بلوکی مورد استفاده برای اعتبار پیام و محرمانگی: که ۲ حالت دارد.


شمارنده با حالات زنجیره بلوک_رمز- کد اعتبار پیام.
رمزهای بلوکی مورد استفاده برای اعتبار پيام و محرمانگی: که 2 حالت دارد.

شمارنده با حالات زنجيره بلوک_رمز- کد اعتبار پيام.


حالت گالوا/ شمارنده.
حالت گالوا/ شمارنده.


حالات «زنجيرة بلوک رمز»، «فيدبک خروجی»، و «فيدبک رمز» علاوه بر متن اصلی و کليد رمز، به يک بردار مقدار اوليه نيز بعنوان ورودی نياز دارند. اين بردار مقدار اوليه برای هر حالت اجرايی از عمليات رمزنگاری و رمزگشايی، بعنوان اولين بلوک ورودی به تابع رمز استفاده می‎شوند. لزومی ندارد بردار مقدار اوليه را مخفی نگه داريم، اما اين بردار در حالت کلی، نبايد از طريق خود الگوريتم رمزنگاری و يا رمزگشايی، قابل تعيين و يا قابل پيشگويی باشد. البته در حالت «فيدبک خروجی» چنانچه بردار مقدار اوليه غيرقابل پيشگويی باشد، در امنيت سيستم رمز، مشکلی بوجود نمی‎آيد. بنابراين برای هر قسمت از متن رمزشدة ارسالی، بايد بردار مقدار اوليه يا اطلاعاتی که برای محاسبة آن مورد نياز است، در دسترس باشد؛ زيرا ما برای هر قسمت از متن رمزشدة ارسالی برای ايجاد محرمانگی، به يک بردار مقدار اوليه يکتا نياز داريم.
حالات «زنجیرة بلوک رمز»، «فیدبک خروجی»، و «فیدبک رمز» علاوه بر متن اصلی و کلید رمز، به یک بردار مقدار اولیه نیز بعنوان ورودی نیاز دارند. این بردار مقدار اولیه برای هر حالت اجرایی از عملیات رمزنگاری و رمزگشایی، بعنوان اولین بلوک ورودی به تابع رمز استفاده می‎شوند. لزومی ندارد بردار مقدار اولیه را مخفی نگه داریم، اما این بردار در حالت کلی، نباید از طریق خود الگوریتم رمزنگاری و یا رمزگشایی، قابل تعیین و یا قابل پیشگویی باشد. البته در حالت «فیدبک خروجی» چنانچه بردار مقدار اولیه غیرقابل پیشگویی باشد، در امنیت سیستم رمز، مشکلی بوجود نمی‎آید. بنابراین برای هر قسمت از متن رمزشدة ارسالی، باید بردار مقدار اولیه یا اطلاعاتی که برای محاسبة آن مورد نیاز است، در دسترس باشد؛ زیرا ما برای هر قسمت از متن رمزشدة ارسالی برای ایجاد محرمانگی، به یک بردار مقدار اولیه یکتا نیاز داریم.
برای کلیه حالات، بلوک‎ها يا بندهای متن اصلی به بلوک‎ها يا بندهای متن رمز شده متناظر، با طول بيتی يکسان تبديل می‎شوند.
برای کلیه حالات، بلوک‎ها یا بندهای متن اصلی به بلوک‎ها یا بندهای متن رمز شده متناظر، با طول بیتی یکسان تبدیل می‎شوند.



==منابع==
== منابع ==<references/>
<references/>


[[رده:رمزنگاری]]
[[رده:رمزنگاری]]

نسخهٔ ‏۲۴ ژوئن ۲۰۱۳، ساعت ۰۴:۲۹

رمز قالبی نوعی رمز کلید متقارن است که در آن ابتدا بیت‎های متن اصلی به بلوک‎هایی مجزا تقسیم‎بندی می‎شود، سپس الگوریتم رمزگذاری روی هر بلوک اعمال می‎گردد. طبق تعریف ریاضی، رمز قالبی تابعی است که n بیت متن اصلی را تحت کنترل کلید K، به n بیت متن رمزشده تبدیل می‎کند و نیز n بیت متـن رمزشده را تحت کنترل کلیـد K، به n بیت متـن اصلی تبدیل می‎کند. قالب‎های متن اصلی و متن رمزشده تعداد بیت یکسانی دارند. اندازه قالب را با n یا b نمایش می‎دهند، که همان تعداد بیت‎های آن قالب است.

تابع رمزنگاری برای قالب‎های 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.[۱]

ساختارهای مختلف رمزهای بلوکی

رمزهای بلوکی، دو ساختار کلی دارند:

ساختار مبتنی بر شبکه فیستل: مانند رمز DES.

ساختار مبتنی بر شبکه جابجایی- جانشینی: مانند رمز AES.

البته همه رمزهای بلوکی لزوماً از این دو ساختار تبعیت نمی‎کنند، بلکه رمزهای بلوکی دیگری نیز هستند که ساختارهای منحصر بفردی دارند؛ مانند الگوریتم رمز Keeloq که رمز بلوکی مبتنی بر ساختار NLFSR (شیفت‎رحیسترهای غیرخطی) است.[۲]

ساختار مبتنی بر شبکه جابجایی - جانشینی

این ساختار از دو اصل در هم پیچیدگی و انتشار شانون تبعیت می‎کند. با استفاده از در هم پیچیدگی، رابطه بین بیت‎های کلید و بیت‎های متن رمزشده، غیرخطی و پیچیده می‎گردد. با استفاده از انتشار، افزونگی موجود در متن اصلی پس از رمزکردن در متن رمز شده پخش می‎شود.

در این ساختار از شبکه‌های جابجایی- جانشینی بصورت متوالی در چند دور استفاده می‎گردد. در هر دور، بیت‎های کلید دور با بیت‎های متن اصلی XOR می‎شود. همچنین S_BOXها بیت‎های یک بلوک از متن اصلی را با بیت‎های دیگر جایگزین کرده P_BOXها بیت‎های خروجی از S_BOXهای یک دور را با یکدیگر جابجا می‌کنند. درواقع درهم‎پیچیدگی توسط S_BOX و انتشار توسط P_BOX انجام می‎گیرد. در دور آخر جابجایی بیتی صورت نمی‎گیرد. نحوه رمزگشایی نیز ماندد رمزگذاری است با این تفاوت که در رمزگشایی نحوه اعمال زیرکلید برعکس رمزگذاری است.

اگر یک بیت از متن اصلی تغییر کند، بواسطه S_BOXها چندین بیت از خروجی تغییر خواهد نمود. سپس این تغییرات توسط P_BOXها در S_BOXهای بعدی منتشر خواهد شد. در یک سیستم رمز بلوکی خوب، P_BOXها بیت‎های مربوط به خروجی یک S_BOX را بطور کامل در S_BOXهای بعدی پراکنده می‎سازد. بدین ترتیب با تغییر یک بیت از متن اصلی، احتمال این که یک بیت خاص از متن رمزشده تغییر کند، ۰٫۵ است. به این خاصیت، خاصیت بهمنی می‎گویند.

از رمزهای بلوکی معروف مبتنی بر شبکه شبکه جابجایی- جانشینی می‎توان رمزهای زیر را نام برد:

AES، ABC، ۳way، Akelarre، Anubis، ARIA، BaseKing، BEAR and LION، CRYPTON

ساختار مبتنی بر شبکه فیستل

در این ساختار برای رمزگذاری، ابتدا متن اصلی به دو قسمت تقسیم می‎شود. سپس بر روی قسمت سمت راست ساختار، با استفاده از تابع 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 در این ساختار لزوماً معکوس پذیر نیست. همچنین این ساختار برای رمزگذاری و یا رمزگشایی به دو قسمت تقسیم شده است، در حالی که در ساختار جابجایی- جانشینی برای رمزگذاری و یا رمزگشایی نیازی به تقسیم‎بندی متن اصلی نیست.

از رمزهای بلوکی معروف مبتنی بر شبکه فیستل می‎توان رمزهای زیر را نام برد:

DES،Blowfish،Camellia , CAST-۱۲۸،FEAL،ICE، KASUMI،LOKI۹۷، Lucifer، MARS، MAGENTA، MISTY۱، RC۵، TEA، Triple DES، Twofish.

حالات مختلف کاری رمزهای بلوکی

برای استفاده از رمزهای بلوکی، بسته به نوع نیاز از حالات مختلفی استفاده می¬کنیم. هر حالت مزایا و معایب خود را دارد. هیچ حالتی را نمی‎توان یافت که کلیه مزایا را داشته باشد، و هیچ مشکلی نداشته باشد. بر این اساس، با توجه به نوع نیاز و نیز محدودیت‎هایی چون سرعت، حافظه، تعداد بیت‎های متن اصلی، اندازة برد سخت‎افزاری و یا میزان هزینة مورد نیاز برای عمل رمزنگاری و یا رمزگشایی و...، از حالت بهینه استفاده می‎کنیم[۶].

بر طبق استاندارد NIST، رمزهای قالبی از لحاظ کاربردی ۳ حالت دارند:

رمزهای قالبی مورد استفاده برای محرمانگی: که ۶ حالت دارد.

فهرست داده الکترونیکی.

زنجیره بلوک-رمز.

فیدبک رمز.

فیدبک خروجی.

شمارنده.

رمز پیچشی با تنظیم افزونگی متن رمزشده.

رمزهای بلوکی مورد استفاده برای اعتبار پیام: که شامل یک حالت است.

رمز مبتنی بر کد اعتبار پیام.

رمزهای بلوکی مورد استفاده برای اعتبار پیام و محرمانگی: که ۲ حالت دارد.

شمارنده با حالات زنجیره بلوک_رمز- کد اعتبار پیام.

حالت گالوا/ شمارنده.

حالات «زنجیرة بلوک رمز»، «فیدبک خروجی»، و «فیدبک رمز» علاوه بر متن اصلی و کلید رمز، به یک بردار مقدار اولیه نیز بعنوان ورودی نیاز دارند. این بردار مقدار اولیه برای هر حالت اجرایی از عملیات رمزنگاری و رمزگشایی، بعنوان اولین بلوک ورودی به تابع رمز استفاده می‎شوند. لزومی ندارد بردار مقدار اولیه را مخفی نگه داریم، اما این بردار در حالت کلی، نباید از طریق خود الگوریتم رمزنگاری و یا رمزگشایی، قابل تعیین و یا قابل پیشگویی باشد. البته در حالت «فیدبک خروجی» چنانچه بردار مقدار اولیه غیرقابل پیشگویی باشد، در امنیت سیستم رمز، مشکلی بوجود نمی‎آید. بنابراین برای هر قسمت از متن رمزشدة ارسالی، باید بردار مقدار اولیه یا اطلاعاتی که برای محاسبة آن مورد نیاز است، در دسترس باشد؛ زیرا ما برای هر قسمت از متن رمزشدة ارسالی برای ایجاد محرمانگی، به یک بردار مقدار اولیه یکتا نیاز داریم. برای کلیه حالات، بلوک‎ها یا بندهای متن اصلی به بلوک‎ها یا بندهای متن رمز شده متناظر، با طول بیتی یکسان تبدیل می‎شوند.

== منابع ==

  1. A. Menezes, P. van Oorschot and S. Vanstone, “Handbook of Applied Cryptography”, ۱۹۹۷,PP ۱۹۱-۲۸۲. http://www.cacr.math.uwaterloo.ca/hac
  2. sidechannelattack