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

از ویکی‌پدیا، دانشنامهٔ آزاد
محتوای حذف‌شده محتوای افزوده‌شده
M2khosravizadeh (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
M2khosravizadeh (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۲: خط ۲:


تابع رمزنگاری برای قالب‎های 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”, 1997,PP 191-282. http://www.cacr.math.uwaterloo.ca/hac</ref>
{{پایان چپچین}}

==ساختارهاي مختلف رمزهاي بلوكي==
==ساختارهاي مختلف رمزهاي بلوكي==


خط ۲۹: خط ۲۹:


از رمزهای بلوکی معروف مبتنی بر شبکه شبکه جابجايی- جانشينی می‎توان رمزهای زير را نام برد:
از رمزهای بلوکی معروف مبتنی بر شبکه شبکه جابجايی- جانشينی می‎توان رمزهای زير را نام برد:
{{چپچین}}
AES، ABC، 3way، Akelarre ، Anubis، ARIA، BaseKing، BEAR and LION، CRYPTON
AES، ABC، 3way، 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+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 در اين ساختار لزوماً معکوس پذير نيست. همچنين اين ساختار برای رمزگذاری و يا رمزگشايی به دو قسمت تقسيم شده است، در حالی که در ساختار جابجايی- جانشينی برای رمزگذاری و يا رمزگشايی نيازی به تقسيم‎بندی متن اصلی نيست.


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

DES،Blowfish ،Camellia , CAST-128 ،FEAL ،ICE، KASUMI ،LOKI97 ، Lucifer ، MARS، MAGENTA، MISTY1، RC5، TEA، Triple DES، Twofish.
DES،Blowfish ،Camellia , CAST-128 ،FEAL ،ICE، KASUMI ،LOKI97 ، Lucifer ، MARS، MAGENTA، MISTY1، RC5، TEA، Triple DES، Twofish.
{{پایان چپچین}}



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

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

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

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

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

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

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

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

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

فيدبک رمز.

فيدبک خروجی.

شمارنده.

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

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

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


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

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

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

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


منابع

  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