رمزنگاری قالبی

در رمزنگاری، رمزنگاری قالبی یک الگوریتم قطعی است که بر روی گروه‌های بیت با طول ثابت که به عنوان بلاک شناخته می‌شوند کار می‌کند، با یک تحول بی وقفه که توسط یک کلید متقارن مشخص شده‌است. رمزنگاری‌های قالبی به عنوان مؤلفه‌های ابتدایی مهم در طراحی بسیاری از پروتکل‌های رمزنگاری عمل می‌کنند و به‌طور گسترده‌ای برای پیاده‌سازی رمزگذاری داده‌های زیاد مورد استفاده قرار می‌گیرند.

حتی رمزنگاری قالبی ایمن فقط برای رمزگذاری یک بلوک واحد در زیر یک کلید ثابت مناسب است. بسیاری از حالت‌های عملکردی طراحی شده‌اند تا استفاده مکرر آنها را به روشی مطمئن و معمولاً برای دستیابی به اهداف امنیتی مانند محرمانه بودن و اعتبارسنجی امکان بذیر کنند. با این حال، رمزنگارهای قالبی ممکن است به عنوان بلوک‌های ساختاری در سایر پروتکل‌های رمزنگاری شده، مانند توابع آمیزش جهانی و تولیدکننده شماره شبه تصادفی نیز ظاهر شوند.

## تعریف
رمزنگاری قالبی از دو الگوریتم زوج تشکیل شده است، یکی برای رمزگذاری،  و دیگری برای رمزگشایی،  هر دو الگوریتم دو ورودی را قبول می‌کنند: یک بلوک ورودی از بیت اندازه  و یک کلید از بیت اندازه . و هر دو بلوک خروجی  -bit دارند. الگوریتم رمزگشایی  تعریف شده‌است که عملکرد معکوس رمزگذاری است، یعنی D = E^(-1). رمزگذاری بلوک توسط یک عملکرد رمزگذاری مشخص می‌شود.

E_K(P) := E(K,P): \{0,1\}^k \times \{0,1\}^n \rightarrow \{0,1\}^n,

که به عنوان ورودی کلید K از طول بیت k، به نام اندازه کلید و یک bit string به نام P از طول n به نام اندازه بلوک را در نظر می‌گیرد و یک رشته C از n بیت‌ها را برمی‌گرداند. P به متن ساده گفته می‌شود و C به متن متن رمزگذاری می‌شود. برای هر K، عملکرد EK (P) لازم است که یک نگاشت معقول با {۰،1} n باشد. معکوس برای E به عنوان یک تابع تعریف می‌شود

E_K^{-1}(C) := D_K(C) = D(K,C): \{0,1\}^k \times \{0,1\}^n \rightarrow \{0,1\}^n,

با استفاده از یک کلید K و ciphertext که C باشد برای برگرداندن مقدار plaintext که با P نمایش می‌دهیم، به این ترتیب:

\forall K: D_K(E_K(P)) = P.

به عنوان مثال، یک الگوریتم رمزنگاری شده ممکن است یک متن ۱۲۸ بیتی از متن ساده را به عنوان ورودی بدست آورد، و یک بلوک متن رمزگذاری متناظر ۱۲۸ بیتی را تولید کند. کلید تحریر دقیق با استفاده از یک ورودی دوم کنترل می‌شود. رمزگشایی مشابه است: الگوریتم رمزگشایی، در این مثال یک بلوک ۱۲۸ بیتی متن رمزنگاری را همراه با کلید مخفی می‌گیرد و بلوک ۱۲۸ بیتی متن ساده را بازده می‌کند.

برای هر کلید K , EK مجوز (نقشه‌برداری بیولوژیکی) بر روی مجموعه بلوک‌های ورودی است. هر کلید یک مجوز از مجموعه (۲ به توان n) جایگشت احتمالی را انتخاب می‌کند.

## تاریخچه
طراحی مدرن رمزنگاری‌های قالبی مبتنی بر مفهوم رمزنگاری محصول تکراری است. کلود شانون انتشارات اصلی خود در سال ۱۹۴۹ با عنوان نظریه ارتباطات سیستمهای رازداری، رمزنگاری محصولات را مورد تجزیه و تحلیل قرار داد و با ترکیب عملیات ساده مانند تعویض‌ها و جابجایی‌ها، آنها را به عنوان ابزاری برای بهبود مؤثر امنیت در نظر گرفت. رمزنگاری‌های محصول Iterated رمزگذاری را در چند دور انجام می‌دهند، که هر یک از آنها از یک کلید فرعی متفاوت برگرفته از کلید اصلی استفاده می‌کند. اجرای گسترده چنین رمزهایی، به نام شبکه فیستل پس از Horst Feistel، به ویژه در رمزگذاری DES پیاده‌سازی شده‌است. بسیاری از تحقق رمزنگاری‌های قالبی، مانند AES، به عنوان شبکه‌های جایگزینی-permutation طبقه‌بندی می‌شوند. 

ریشه کلیه قالب‌های بلوک رمزنگاری شده‌ای که در استانداردهای امنیت داده‌های کارت‌های صنعت پرداخت (PCI DSS) و استانداردهای مؤسسه ملی استاندارد آمریکا (ANSI) استفاده می‌شود مربوط به بلوک کلیدی Atalla (AKB) است که نوآوری اساسی در Atalla Box بود، اولین ماژول امنیتی سخت‌افزار (HSM). این کار در سال ۱۹۷۲ توسط Mohamed M. Atalla، بنیانگذار شرکت Atalla Corporation (در حال حاضر Utimaco Atalla) توسعه یافته و در سال ۱۹۷۳ منتشر شد. AKB یک بلوک کلیدی بود که برای تبادل ایمن کلیدهای متقارن یا پین‌ها با سایر بازیگران صنعت بانکداری مورد نیاز است. این تعویض امن با استفاده از فرمت AKB انجام می‌شود. Atalla Box بیش از ۹۰٪ از کل شبکه‌های دستگاه‌های خودپرداز را که از سال ۱۹۹۸ کار می‌کردند محافظت می‌کرد، و محصولات Atalla هنوز هم اکثر معاملات ATM جهان را از سال ۲۰۱۴ تضمین می‌کنند.

انتشار رمزگذاری DES توسط دفتر ملی استاندارد ایالات متحده (متعاقباً موسسه ملی استاندارد و فناوری NIST) در سال ۱۹۷۷ در درک عمومی از طراحی رمزنگاری مدرن بسیار مؤثر بود. همچنین بر پیشرفت آکادمیک حملات کریپتانالیستی تأثیر گذاشت. cryptanalyse دیفرانسیل و خطی هر دو ناشی از مطالعات در مورد طراحی DES است.  یک مجموعه از تکنیک‌های حمله وجود دارد که علاوه بر اینکه در برابر حملات بی رحمانه نیرومند است، باید رمزنگاری قالبی را نیز ایمن کند.

## طراحی
### رمزگذاری‌های Feistel
[پیوند=https://en.wikipedia.org/wiki/File:Feistel_cipher_diagram_en.svg|راست|بندانگشتی|387x387پیکسل|بسیاری از رمزگذارهای بلوک مانند DES و Blowfish از ساختارهایی استفاده می‌کنند که به عنوان ''[:en:Feistel_cipher|Feistel ciphers* شناخته می‌شوند.]]
در *Feistel cipher*,، بلوک plain text برای رمزگذاری به دو نیمه مساوی تقسیم می‌شود. تابع round با استفاده از یک کلید فرعی روی یک‌نیمه اعمال می‌شود، و سپس خروجی با نیمه دیگر XOR می‌شود. سپس دو نیمه جابه‌جا می‌شوند.

فرض کنید F یک تابع round باشد و فرض کنید کلیدهای K0، K1، …، Kn به ترتیب زیر کلیدهای دورهای ۰، …، n باشند.

سپس عملیات اساسی به شرح زیر است:

بلوک متن ساده را به دو قطعه مساوی تقسیم کنید، (<math>L_0</math>، <math>R_0</math>)

برای هر دور به ازای <math>i =0,1,\dots,n</math> محاسبه کنید

<math>L_{i+1} = R_i\,</math>

<math>R_{i+1}= L_i \oplus {\rm F}(R_i, K_i)</math>

بعد از آن ciphertext برابر <math>(R_{n+1}, L_{n+1})</math> است.

رمزگشایی متن رمزنگاری (Rn + 1، Ln + 1) با محاسبه به ازای هر یک از iها انجام می‌شود <math>i=n,n-1,\ldots,0</math>

<math>R_{i} = L_{i+1}\,</math>

<math>L_{i} = R_{i+1} \oplus {\rm F}(L_{i+1}, K_{i})</math>

سپس (L0، R0) دوباره plaintext است.

یکی از مزایای مدل Feistel در مقایسه با یک شبکه جایگزینی-جایگشتی این است که تابع round (یا F) نیازی به برگشت‌ناپذیر بودن ندارد.

=== رمزگذاری‌های Lai–Massey ===
[[پرونده:Lai_Massey_scheme_diagram_en.svg|پیوند=https://en.wikipedia.org/wiki/File:Lai_Massey_scheme_diagram_en.svg|راست|بندانگشتی|387x387پیکسل|طرح Lai–Massey. رمزگذار استفاده شده از آن IDEA است.]]
طرح Lai–Masseyخواص امنیتی شبیه به ساختار Feistel را ارائه می‌دهد. همچنین این مزیت را دارد که تابع round (یا همان F) نیازی به برگشت‌ناپذیر بودن ندارد. شباهت دیگر این است که بلوک ورودی را به دو قطعه مساوی تقسیم می‌کند. با این حال، تابع round به اختلاف بین این دو اعمال می‌شود و سپس نتیجه به هر دو نیم بلوک اضافه می‌شود.

فرض کنید F یک تابع round و H یک تابع half-round باشد و فرض کنید کلیدهای K0، K1، …، زیرکلید برای دورهای ۰٬۱، …، n باشند.

سپس عملیات اساسی به شرح زیر است:

بلاک plaintext را به دو قسمت مساوی تقسیم کنید، (<math>L_0</math>، <math>R_0</math>)

برای هر دور به ازای <math>i =0,1,\dots,n</math> محاسبه کنید:

<math>(L_{i+1}',R_{i+1}') = \mathrm H(L_i' + T_i,R_i' + T_i)</math>

هرجا <math>T_i = \mathrm F(L_i' - R_i', K_i)</math> و <math>(L_0',R_0') = \mathrm H(L_0,R_0)</math>

سپس عبارت ciphertext برابر <math>(L_{n+1}, R_{n+1}) = (L_{n+1}',R_{n+1}')</math> است.

رمزگشایی یک ciphertext <math>(L_{n+1}, R_{n+1})</math> با محاسبه برای i = n , n − ۱، …، ۰ انجام می‌شود.

<math>(L_i',R_i') = \mathrm H^{-1}(L_{i+1}' - T_i, R_{i+1}' - T_i)</math>

هرجا <math>T_i = \mathrm F(L_{i+1}' - R_{i+1}',K_i)</math> و <math>(L_{n+1}',R_{n+1}')=\mathrm H^{-1}(L_{n+1},R_{n+1})</math>

سپس <math>(L_0,R_0) = (L_0',R_0')</math> دوباره برابر plaintext است.

=== عملگرها ===
==== ARX (add-rotate-XOR) ====
بسیاری از رمزگذارها و رمزنگاری‌های قالبی مدرن درواقع الگوریتم‌های *'ARX** هستند. تابع round آنها فقط شامل سه عمل است: تابع addition یا جمع، [[:en:Circular_shift|rotation]] با مقادیر چرخش ثابت و XOR (به اختصار ARX). مثال‌های آن شامل ChaCha20، Speck , XXTEA و BLAKE است. بسیاری از نویسندگان برای نشان دادن چنین round function ای، از یک شبکه ARX، نوعی [[نمودار جریان داده|نمودار جریان داده ترسیم می]] کنند.

این عملگرهای ARX محبوب هستند زیرا از نظر سخت‌افزاری و نرم‌افزاری نسبتاً سریع و ارزان هستند، اجرای آنها می‌تواند بسیار ساده انجام شود، همچنین به دلیل اینکه در زمان ثابت اجرا می شون؛ بنابراین در مقابل [[حمله زمانبندی|حملات زمان‌بندی مصون هستند]]. روش رمزنگاری چرخشی سعی در حمله به چنین round functionsهایی دارد.

==== سایر عملگرها ====
عملگرهای دیگری که اغلب در رمزنگاری‌های قالبی مورد استفاده قرار می‌گیرند شامل: data-dependent rotations مانند [[آرسی۵|RC5]] و RC6 است، یک جعبه جایگزینی که به عنوان جدول جستجو (یا [[:en:Lookup_table|lookup table]]) به کار می‌رود همان‌طور که در [[استاندارد رمزنگاری داده‌ها|استاندارد رمزگذاری داده‌ها]] و [[استاندارد رمزنگاری پیشرفته|استاندارد رمزگذاری پیشرفته]]، جعبه جایگشت و ضرب مانند [[الگوریتم بین‌المللی رمزگذاری داده‌ها|IDEA است]].

== تحلیل رمزنگاری ==
=== حملات Brute-force ===
این خاصیت باعث می‌شود امنیت رمزنگاری به صورت درجه یک کاهش یابد و در هنگام انتخاب اندازه بلوک باید مورد توجه قرار گیرد. در واقع یک مصالحه بین بزرگی سایز بلوک و ناکارآمدی الگوریتم به منظور عملکرد عملگر وجود دارد. رمزنگاری‌های قالبی اولیه مانند [[استاندارد رمزنگاری داده‌ها|DES]] معمولاً اندازه بلوک ۶۴ بیتی را انتخاب کرده‌اند، در حالی که طرح‌های جدیدتر مانند [[استاندارد رمزنگاری پیشرفته|AES]] با اندازه بلوک ۱۲۸ بیت یا بیشتر را پشتیبانی می‌کنند، در حالی که برخی از رمزگذارها، طیف وسیعی از اندازه‌های مختلف بلوک را پشتیبانی می‌کنند.

=== تحلیل رمزنگاری خطی ===
نوعی از تحلیل رمزنگاری است که بر اساس یافتن تقریب‌های [[تبدیل آفین|وابسته]] به پیوند به عملکرد [[سایفر|رمزنگاری است]]. تحلیل رمزنگاری خطی یکی از دو حمله پرکاربرد بر روی رمزنگاری‌های قالبی است. دیگری [[:en:Differential_cryptanalysis|تحلیل رمزنگاری انتگرال]] است.

این کشف به Mitsuru Matsui  منتسب شده‌است، که نخستین بار این تکنیک را در رمزگذاری [[:en:FEAL|FEAL]] به کار برد (Matsui and Yamagishi، ۱۹۹۲).

=== تحلیل رمزنگاری انتگرالی ===
یک حمله کریپتانالیستی است که خصوصاً برای مسدود کردن رمزها بر اساس شبکه‌های جایگزینی-جابجایی کاربرد دارد. برخلاف تحلیل رمزنگاری دیفرانسیل، که از جفت‌های plaintexts انتخاب شده با اختلاف XOR ثابت استفاده می‌کند، تحلیل رمزنگاری انتگرالی از

مجموعه‌ها یا حتی چند مجموعه از plaintexts منتخب استفاده می‌کند که قسمتی از آن ثابت نگه داشته می‌شود و بخش دیگر با تمام امکانات متفاوت است. به عنوان مثال، یک حمله ممکن است از ۲۵۶ عدد انتخاب شده استفاده کند که تمام ۸ بیت آنها یکسان است، اما همه در ۸ بیت متفاوت هستند. چنین مجموعه ای لزوماً یک XOR با مقدار ۰ و نیز XORهایی که مقادیر آن‌ها از مجموعه‌های مربوط به رمزنگاری‌ها، اطلاعات مربوط به عملکرد رمزنگاری را ارائه می‌دهند، دارد. این تقابل بین تفاوت‌های جفت متون و مجموع مجموعه‌های بزرگتر از متن، الهام بخش از نام «تحلیلی رمزنگاری انتگرالی» و قرض گرفتن اصطلاح آن از [[حسابان|حساب دیفرانسیل و انتگرال]] است. 

=== تکنیک‌های دیگر ===
[[پرونده:Attaque_boomerang.png|چپ|بندانگشتی|235x235پیکسل| توسعه [[:en:Boomerang_attack|حمله بومرنگ]] تکنیک‌های تحلیل رمزنگاری دیفرانسیل را برای بسیاری از رمزهای کاربردی که قبلاً در مقابل حملات دیفرانسیل ایمن به نظر می‌رسید، اعمال می‌کند.]]
علاوه بر تحلیل رمزنگاری خطی و دیفرانسیل، یک فهرست از حملات فزاینده وجود دارد: تحلیل رمزنگاری دیفرانسیل کوتاه، تحلیل رمزنگاری دیفرانسیل جزئی، کریپتانالیز یکپارچه، که شامل حملات مربعی و انتگرالی، [[حمله لغزش|حملات اسلاید]]، حملات بومرنگ، **حمله ایکس‌اس‌ال**، تحلیل رمزنگاری دیفرانسیل غیرممکن و حملات جبری.

برای اینکه یک رمزنگاری جدید از اعتبار برخوردار باشد، باید شواهد امنیتی را در برابر حملات شناخته شده نشان دهد. 

== امنیت قابل تأمین ==
هنگامی که از یک رمزنگاری قالبی در یک [[مدهای کاری رمزهای قطعه‌ای|حالت]] معین [[مدهای کاری رمزهای قطعه‌ای|از عملکردهای آن استفاده می‌شود]]، الگوریتم حاصل به‌طور ایده‌آل می‌تواند به اندازه خود رمزنگاری قالبی امن باشد. ECB (مورد بحث در بالا) به‌طور برجسته فاقد این خاصیت است: صرف نظر از اینکه رمزنگاری‌های قالبی زیرین چقدر امن است، حالت ECB به راحتی می‌تواند مورد حمله قرار گیرد. از طرف دیگر، با فرض اینکه رمزنگاری قالبی زیرین نیز به همان نسبت امن است، می‌توان حالت CBC را ایمن اعلام کرد. با این حال توجه داشته باشید که اظهارنظرهایی مانند این، نیاز به تعاریف رسمی ریاضی دارد که برای آنچه از آن به عنوان الگوریتم رمزگذاری یا رمزنگاری قالبی یاد می‌شود به معنای «ایمن بودن» است. در این بخش دو مفهوم رایج در مورد خصوصیات رمزنگاری قالبی توضیح داده شده‌است. هر یک با یک [[مدل ریاضیاتی|مدل ریاضی]] مطابقت دارد که می‌تواند برای اثبات خواص الگوریتم‌های سطح بالاتر مانند CBC استفاده شود.

این رویکرد کلی در مواجهه با رمزنگاری - اثبات الگوریتم‌های سطح بالاتر (مانند CBC) با فرضیه‌های صریح بیان شده در مورد اجزای آنها (مانند رمزنگاری قالبی) ایمن است - به عنوان ''امنیت قابل اثبات'' شناخته شده ''است''.

=== مدل استاندارد ===
اگر مهاجمی نتواند تفاوت بین رمزنگاری قالبی (مجهز به کلید تصادفی) و یک جابجایی تصادفی را نشان دهد، یک رمزنگاری قالبی در مدل استاندارد ایمن است.

برای دقیق تر بودن، فرض کنید ''E'' یک رمزنگاری قالبی ''n'' -bit ای باشد. ما بازی زیر را تصور می‌کنیم:
# شخصی که بازی را اجرا می‌کند، یک سکه را به هوا می‌اندازد.
#* اگر سکه به رو فرود بیاید، یک کلید تصادفی ''K'' را انتخاب می‌کند و تابع ''f'' = ''E'' <sub>''K''</sub> را تعریف می‌کند.
#* اگر سکه به زیر فرود بیاید، او یک انتخاب از  جایگشت تصادفی بر روی مجموعه ای از رشته‌های ''N'' بیتی دارد، و تابع ''f'' =  تعریف می‌کند.
# مهاجم رشتهٔ X که n-bit دارد ''را'' انتخاب می‌کند و شخصی که بازی را انجام می‌دهد مقدار ''f'' (''X'') را به او می‌گوید.
# مرحله ۲ در کل ''q'' بار تکرار می‌شود. (هر یک از این فعل و انفعالات ''q'' یک ''واکشی است'' .)
# مهاجم حدس می‌زند که چگونه سکه به زمین فرود آمده‌است. اگر حدس او صحیح باشد، برنده می‌شود.

مهاجم، که می‌توانیم آن را به عنوان یک الگوریتم در نظر بگیریم، یک ''دشمن'' نامیده می‌شود. تابع ''f'' (که طرف مقابل قادر به جستجوی آن بود) ''[[ماشین اوراکل|اوراکل]]'' نامیده می‌شود.

توجه داشته باشید که یک دشمن می‌تواند با حدس زدن تصادفی (یا مثلاً همیشه «رو» را حدس بزند) شانس ۵۰٪ پیروزی را تضمین کند؛ بنابراین، ''فرض کنید P'' <sub>''E''</sub> (''A'') این احتمال را نشان دهد که طرف ''A'' در این بازی درمقابل E برنده ''شود'' و ''سود A را'' به شکل مقابل تعریف کند (''P'' <sub>''E''</sub> (''A'')-1/2)2.

به این ترتیب که اگر ''A به'' طور تصادفی حدس بزند، سود آن ۰ خواهد بود. از طرف دیگر، اگر ''A'' همیشه برنده باشد، سود آن ۱ است. رمزنگاری ''قالبی E'' با توجه به محدودیت‌های مشخص شده در ''q'' و زمان اجرای طرف مقابل، اگر دارای ''جا به جایی شبه تصادفی'' (PRP) باشد، هیچ حریفی با سود قابل بیشتر از ۰ نخواهد داشت. اگر در مرحله ۲، دشمنان به جای ''f'' (''X'') از یادگیری ''f'' <sup>−1</sup> (''X'') استفاده کنند (اما هنوز تنها سود کمی دارند)، آنگاه ''E'' یک PRP ''قوی'' (SPRP) است. یک مهاجم ''غیر انطباقی'' است اگر همه مقادیر q برای X را قبل از بازی انتخاب کند (یعنی از اطلاعاتی که از نمایش‌های قبلی استفاده نشده‌است، برای انتخاب هر X در هر صورت استفاده می‌کند).

این تعاریف برای تجزیه و تحلیل حالت‌های مختلف عملگر مفید بوده‌است. به عنوان مثال، می‌توان یک بازی مشابه را برای اندازه‌گیری امنیت الگوریتم رمزنگاری مبتنی بر رمزنگاری قالبی تعریف کرد و سپس سعی کرد (از طریق یک [[کاهش (پیچیدگی)|استدلال کاهشی]]) نشان داد که احتمال برنده شدن حریف در این بازی جدید، خیلی بیشتر از ''P<sub>E</sub>''(''A'') برای A نیست. (کاهش به‌طور معمول محدودیت‌هایی در ''q'' و زمان اجرای ''A را در اختیار شما قرار می‌دهد''.) به‌طور برابر، اگر مقدار ''P'' <sub>''E''</sub> (''A'') برای همه ''A''های مربوط کم باشد، پس هیچ مهاجمی احتمال قابل توجهی برای برنده شدن در بازی جدید ندارد. درواقع این ایده را رسمیت می‌بخشد که الگوریتم سطح بالاتر امنیت رمزنگاری قالبی را به ارث می‌برد.

== رمزنگاری‌های قالبی قابل توجه ==
=== IDEA ===
''[[الگوریتم بین‌المللی رمزگذاری داده‌ها|الگوریتم رمزگذاری داده‌های بین‌المللی]]'' (''IDEA'') یک رمزنگاری است که توسط James Massey از **مؤسسه فناوری فدرال زوریخ*' و Xuejia Lai طراحی شده‌است. اولین بار در سال ۱۹۹۱ به عنوان جایگزینی برای DES توصیف شد.

IDEA با استفاده از یک کلید ۱۲۸ بیتی بر روی بلوک‌های ۶۴ بیتی کار می‌کند، و شامل یک سری از هشت تبدیل یکسان (یک *round*) و یک دگرگونی خروجی (*half-round*) است. فرایندهای رمزگذاری و رمزگشایی مشابه هستند. IDEA بخش اعظم امنیت خود را با در هم آمیختن عملیات از [[گروه (ریاضیات)|گروه‌های]] مختلف - اضافه شدن و ضرب [[هم‌نهشتی (نظریه اعداد)|ماژولار]]، و *منحصر به فرد* بصری *یا (XOR)* - که از نظر جبری «ناسازگار» هستند، به دست می‌آورد.

طراحان IDEA را برای اندازه‌گیری استحکام آن در برابر تحلیل رمزنگاری دیفرانسیل بررسی کردند و به این نتیجه رسیدند که تحت فرضیات خاصی از آن مصون است. هیچ ضعف خطی یا جبری موفقیت‌آمیزی گزارش نشده‌است.  بهترین حمله برای کلیه کلیدها می‌تواند با استفاده از یک حمله narrow-bicliques حدود چهار برابر سریعتر از حمله brute force،
یک IDEA که 8.5-round است را کامل بشکند.

=== RC5 ===
[[پرونده:RC5_InfoBox_Diagram.svg|چپ|بندانگشتی|394x394پیکسل| یک round (دو half-round) رمزنگاری بلوک RC5]]
RC5 رمزنگاری قالبی استکه توسط [[رونالد ریوست]] در سال ۱۹۹۴ طراحی شده‌است و برخلاف بسیاری از رمزگذارهای دیگر، اندازه بلوک متغیر (۳۲، ۶۴ یا ۱۲۸ بیت)، اندازه کلید (۰ تا ۲۰۴۰ بیت) و تعداد دور (۰ تا ۲۵۵) دارد. انتخاب اصلی پارامترها اندازه بلوک ۶۴ بیت، یک کلید ۱۲۸ بیتی و 12 round بود.

ویژگی اصلی RC5 استفاده از چرخش وابسته به داده‌ها است. یکی از اهداف RC5، فوریت مطالعه و ارزیابی چنین عملیاتی به عنوان رمزنگاری اولیه بود. RC5 همچنین شامل تعدادی اضافات [[هم‌نهشتی (نظریه اعداد)|ماژولار]] و XOR است. ساختار کلی الگوریتم یک شبکه شبیه [[:en:Feistel_cipher|Feistel]] است. روال رمزگذاری و رمزگشایی را می‌توان در چند خط کد مشخص کرد. با این حال، برنامه کلیدی پیچیده‌تر است و کلید را با استفاده از [[:en:One-way_function|one-way function]] و با باینری‌های هر دو [[E (عدد)|e]] و [[نسبت طلایی]] به عنوان منبع nothing up my sleeve numbers گسترش می‌دهیم. سادگی خسته کننده الگوریتم، همراه با جدید بودن چرخش وابسته به داده‌ها، RC5 را به یک موضوع جذاب برای مطالعه برای رمزنگاری تبدیل کرده‌است.

RC5 که round-12 است (با بلوک‌های ۶۴ بیتی) با استفاده از2<sup>44</sup> نمونه ساده انتخاب شده مستعد حمله دیفرانسیل است. 18-20 round برای محافظت کافی پیشنهاد شده‌است.

=== Rijndael / AES ===
رمزگذاری *Rijndael* که توسط رمزنگاران بلژیکی، Joan Daemen و Vincent Rijmen ساخته شد یکی از طرح‌های رقابتی برای جایگزینی DES بود. این طرح در مسابقه 5-year public competition برنده شد تا تبدیل به AES شود ،(استاندارد رمزگذاری پیشرفته).

AES در سال ۲۰۰۱ پذیرفته شده توسط NIST، دارای اندازه بلوک ثابت ۱۲۸ بیت و اندازه کلید ۱۲۸، ۱۹۲ یا ۲۵۶ بیت است، در حالی که Rijndael را می‌توان با اندازه‌های بلوک و کلید در هر چند برابر از ۳۲ بیت، با حداقل ۱۲۸ مشخص کرد. اندازه بلوک حداکثر ۲۵۶ بیت دارد، اما اندازه کلید سایز تئوری حداکثری ندارد. AES در یک ماتریس [[:en:Column-major_order|column-major order]] عمل می‌کند، به این *حالت گفته می‌شود'' (نسخه‌های Rijndael با اندازه بلوک بزرگتر دارای ستون‌های اضافی برای حالت هستند).

## جستارهای وابسته
* خلاصه امنیت رمزگذاری
* مباحث مربوط به رمزنگاری

## منابع

## خواندن بیشتر
* 

## پیوند به بیرون
* لیستی از بسیاری از الگوریتم‌های متقارن که اکثر آنها رمزنگاری بلوک هستند.
* سالن رمزنگاری بلوک
* رمز بلوک چیست؟ از سوالات متداول RSA
* رمزگذاری بلوک بر اساس توالی‌های طلایی و سیستم چادرهای تدارکاتی هرج و مرج

رده:اختراع‌های اعراب
رده:اختراع‌های مصری
رده:پایه رمزنگاری
رده:رمزنگاری قطعه‌ای