رمز قالبی: تفاوت میان نسخهها
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
خط ۷: | خط ۷: | ||
همچنين اگر تابع [[رمزگشایی]](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.
منابع
- ↑ A. Menezes, P. van Oorschot and S. Vanstone, “Handbook of Applied Cryptography”, 1997,PP 191-282. http://www.cacr.math.uwaterloo.ca/hac
- ↑ sidechannelattack