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

از ویکی‌پدیا، دانشنامهٔ آزاد
محتوای حذف‌شده محتوای افزوده‌شده
M2khosravizadeh (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
M2khosravizadeh (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۷: خط ۷:
همچنين اگر تابع [[رمزگشایی]](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”, 1997,PP 191-282. http://www.cacr.math.uwaterloo.ca/hac</ref>


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


R_(i+1)=L_i ⊕ F(R_i,K_i)
R_(i+1) = L_i ⊕ F(R_i,K_i)


L_(i+1)=R_i
L_(i+1) = R_i


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


R_i=L_(i+1)
R_i = L_(i+1)


L_i= R_(i+1) ⊕ F(L_(i+1),K_i)
L_i = R_(i+1) ⊕ F(L_(i+1),K_i)


تفاوت اين ساختار بــا ساختار مبتنی بــر شبکه جابجايی- جانشينی اين است که، تابع F در اين ساختار لزوماً معکوس پذير نيست. همچنين اين ساختار برای رمزگذاری و يا رمزگشايی به دو قسمت تقسيم شده است، در حالی که در ساختار جابجايی- جانشينی برای رمزگذاری و يا رمزگشايی نيازی به تقسيم‎بندی متن اصلی نيست.
تفاوت اين ساختار بــا ساختار مبتنی بــر شبکه جابجايی- جانشينی اين است که، تابع F در اين ساختار لزوماً معکوس پذير نيست. همچنين اين ساختار برای رمزگذاری و يا رمزگشايی به دو قسمت تقسيم شده است، در حالی که در ساختار جابجايی- جانشينی برای رمزگذاری و يا رمزگشايی نيازی به تقسيم‎بندی متن اصلی نيست.

نسخهٔ ‏۴ دسامبر ۲۰۱۱، ساعت ۲۱:۲۱

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

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

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

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

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

R_(i+1) = L_i ⊕ F(R_i,K_i) 

L_(i+1) = R_i

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

R_i = L_(i+1)

         L_i = R_(i+1) ⊕ F(L_(i+1),K_i) 

تفاوت اين ساختار بــا ساختار مبتنی بــر شبکه جابجايی- جانشينی اين است که، تابع F در اين ساختار لزوماً معکوس پذير نيست. همچنين اين ساختار برای رمزگذاری و يا رمزگشايی به دو قسمت تقسيم شده است، در حالی که در ساختار جابجايی- جانشينی برای رمزگذاری و يا رمزگشايی نيازی به تقسيم‎بندی متن اصلی نيست.

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

DES،Blowfish ،Camellia , CAST-128 ،FEAL ،ICE، KASUMI ،LOKI97 ، Lucifer ، MARS، MAGENTA، MISTY1، RC5، TEA، Triple DES، Twofish.


منابع

  1. A. Menezes, P. van Oorschot and S. Vanstone, “Handbook of Applied Cryptography”, 1997,PP 191-282. http://www.cacr.math.uwaterloo.ca/hac
  2. sidechannelattack