استاندارد رمزنگاری داده‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو


الگوریتم DES در دهه‌ی ۷۰ میلادی در آمریکا به‌عنوان یک استاندارد کدگذاری مطرح شد. این الگوریتم این‌گونه عمل می‌کند که رشته‌ای از متن اصلی با طول ثابت را به عنوان ورودی می‌گیرد و پس از انجام یک سری اعمال پیچیده روی آن خروجی را که طولی برابر طول ورودی دارد تولید می‌کند. DES هم چنین از یک کلید برای ایجاد رمز استفاده می‌کند و تنها کسانی قادر به رمزگشایی خواهند بود که مقدار کلید را می‌دانند. اگرچه تحلیل‌هایی که درباره DES انجام شده‌است از هر روش رمز قطعه‌ای دیگری بیشتر است ولی عملی‌ترین حمله علیه این الگوریتم جستجوی جامع فضای کلید است. سه حمله تئوریکی برای این الگوریتم وجود دارند که زمان کمتری نسبت به جستجوی جامع فضای کلید نیاز دارند ولی این روشها در عمل امکان پذیر نیستند.

با شکسته شدن الگوریتمDES این استاندارد در سال ۱۹۹۸ تمدید نشد و در سال ۲۰۰۱، الگوریتم AES به عنوان استاندارد جایگزین آن تصویب شد. این الگوریتم مانند DES یک الگوریتم رمزقطعه‌ای است ولی بر خلاف DES از ساختار فیستل استفاده نمی‌کند. تا سال ۲۰۰۶ تنها حمله موثر علیه الگوریتمAES حمله side channel بوده‌است. در ژوئن سال ۲۰۰۳ دولت آمریکا اعلام کرد که ازAES می‌توان برای حفاظت از اطلاعات رده بندی شده و سری نیز استفاده کرد. برای اطلاعات فوق سری و محرمانه باید از کلیدهایی با طول ۱۹۲ یا ۲۵۶ بیت استفاده کرد.

در سال ۱۹۷۲ موسسه بین‌المللی استاندارد و فناوری آمریکااعلام کرد که به یک الگوریتم برای حفاظت از اطلاعات غیر رده بندی شده خود نیاز دارد. این الگوریتم می‌بایست ارزان، قابل دسترس وبسیار مطمئن می‌بود. در سال 1973،NIST فراخوانی برای چنین الگوریتمی اعلام نمود ولی هیچ یک از الگوریتم‌هایی که در پاسخ به این فراخوان ارائه شدند شرایط لازم را نداشتند. دومین فراخوان در سال ۱۹۷۴ مطرح شد در این زمان IBM الگوریتم خود را مطرح نمود که به نظر می‌رسید می‌تواند که نیازهای NISTرا بر طرف کند. این الگوریتم به عنوان یک استاندارد فدرال در سال ۱۹۷۶ تصویب شد ودر سال ۱۹۷۷ منتشر شد. با امکان پذیر شدن حمله جستجوی جامع فضای کلید برای این الگوریتم سازمان ملی استاندارد و فناوری آمریکا در آغاز سال ۱۹۹۷اعلام کرد که برای تدوین استاندارد پیشرفته رمزنگاری تلاشی را آغازکرده‌است در سپتامبر همان سال این سازمان به طور رسمی فراخوانی را برای ارائه الگوریتم‌های رمزنگاری اعلام نمود.

در کنفرانس اول، AES-1، 15 الگوریتم کاندیدا انتخاب شدند، NIST از تمام دانشمندان و موسسه‌های علمی خواست که نظ رات خود را در مورد این الگوریتم‌ها ارائه دهند. هم چنین NIST با کمک جامعه بین‌المللی رمزنگاری و تشکیل کمیته‌هایی اقدام به بررسی قابلیتها و توانایی‌های الگوریتم‌های ارائه شده نمود در آگوست سال بعد در سمینار دوم، AES-2، 5الگوریتم انتخاب و برای رقابت نهایی معرفی شدند این الگوریتم‌ها عبارتند از Rijndael - RC6 - MARS - Twofish - Serpent

آخرین نظرات و انتقادات تا تاریخ ۱۵ مه ۱۹۹۹ جمع آوری شد و بالاخره در سمینار AES-3 پس از بررسی گزارش کمیته‌های بررسی کننده، الگوریتم Rijndael به عنوان الگوریتم استاندارد پذیرفته شد.

الگوریتمDES[ویرایش]

نمای کلی الگوریتم

در DES طول قطعات ۶۴ بیت است. کلید نیز شامل ۶۴ بیت است ولی در عمل تنها از ۵۶ بیت آن استفاده می‌شود و از ۸ بیت دیگر فقط برای چک کردن parity استفاده می‌شود. الگوریتم شامل ۱۶ مرحله مشابه‌است که هر مرحله یک دور ۴نامیده می‌شود. متنی که قرار است رمزگذاری شود ابتدا در معرض یک جایگشت اولیه (IP)قرار می‌گیرد. سپس یک سری اعمال پیچیده وابسته به کلید روی آن انجام می‌شود و در نهایت در معرض یک جایگشت نهایی (FP) قرار می‌گیرد. IP,FP معکوس هم هستند FP عملی که توسط IP انجام شده‌است را خنثی می‌کند. بنابراین از جنبه رمزنگاری اهمیت چندانی ندارند و برای تسهیل نمودن بار کردن قطعات داده در سخت‌افزارهای دهه ۱۹۷۰ استفاده شدند ولی اجرای DES در نرم‌افزار را کند کردند. قبل از دور اصلی، داده به دو بخش ۳۲ بیتی تقسیم می‌شودکه این دو نیمه به طور متناوب مورد پردازش قرار می‌گیرند این تقاطع به عنوان شکل فیستل شناخته می‌شود. ساختار فیستل تضمین می‌کند که رمزگذاری و رمزگشایی دو رویه کاملاً مشابه هم هستند و تنها تفاوت آنها این است که زیر کلیدها در زمان رمزگشایی در جهت معکوس رمزگذاری به کار برده می‌شوند. و بقیه الگوریتم درهر دو یکسان است که این امر پیاده سازی رابه خصوص در سخت‌افزاربسیار آسان می‌کند و دیگر نیازی به الگوریتم‌های متفاوت برای رمزگذاری و رمزگشایی نیست. تابعی که خروجی IP را می‌گیرد وپس از شانزده مرحله ورودی FP را فراهم می‌کند تابع F نامیده می‌شود. این تابع یک ورودی ۳۲ بیتی و یک ورودی ۴۸ بیتی دارد و یک خروجی ۳۲ بیتی تولید می‌کند. بلاک ورودی شامل ۳۲ بیت که نیمه سمت چپ را تشکیل می‌دهد و با L نشان داده می‌شود و به دنبال آن ۳۲ بیت دیگر که نیمه راست را تشکیل می‌دهد و با R نمایش داده می‌شود است پس کل بلاک را می‌توان به صورت LR نمایش داد.

اگر K یک بلاک ۴۸ بیتی باشد که از کلید اصلی ۶۴ بیتی مشتق شده‌است و خروجی یک دور با ورودی LR و خروجی L1R1 به صورت زیر تعریف می‌شود. L1=R R1=L XOR F(R,K) اگر KS تابعی باشد که کلید ۶۴ بیتی KEY و یک عدد صحیح در محدوده ۱ تا ۱۶ را به عنوان ورود ی می‌گیرد و کلید ۴۸ بیتی Kn را به عنوان خروجی تولید می‌کند به طوری که بیتهای Kn از تغییر محل بیتهای KEY حاصل شده‌اند داریم: Kn= KS (n.KEY)

KS را تابع key schedule می‌نامند. بنابراین در حالت کلی داریم: Ln=Rn-1 Rn=Ln-1 XOR f(Rn-1,Kn) برای رمزگشایی نیز داریم: R=L1 L=R1 XOR f(L1,K)

در نتیجه رمزگشایی با همان الگوریتمی که برای رمزگذاری استفاده شد انجام می‌شودو در هر مرحله همان K بیتی که به عنوان کلید برای رمزگذاری استفاده شده بود مورد استفاده قرار می‌گیرد بنابراین می‌توان نوشت: Rn-1=Ln Ln-1=Rn XOR f(Ln,Kn)

برای محاسبات رمزگشایی R16L16 ورودی IP و R0L0 ورودی FP است. کلید شانزدهم در مرحله اول، کلید پانزدهم در مرحله دوم و به همین ترتیب کلید اول در مرحله شانزدهم مورد استفاده قرار می‌گیرد.

تابع F[ویرایش]

تابع F

بسط: در این مرحله با استفاده از یک جایگشت انبساطی ۳۲ بیت به ۴۸ بیت گسترش داده می‌شود.

ترکیب کلید: در این مرحله حاصل مرحله قبل با یک زیر کلید XOR می‌شود. شش کلید ۴۸ بیتی با استفاده از الگوریتم key schedule از کلید اصلی تولید می‌شود.

جایگزینی: بعد از ترکیب کلید هر قطعه داده به هشت بخش ۶ بیتی تقسیم می‌شود)قبل از پردازش توسط جعبه‌های جایگزینی(هر کدام از s-boxها ورودی ۶ بیتی خود را با استفاده از یک تبدیل غیر خطی که به شکل یک جدول look up است به یک خروجی ۴ بیتی تبدیل می‌کند S-boxها قلب DES هستند و بدون آنها رمز خطی خواهد بود و در نتیجه قابل شکستن خواهد شد.

جایگشت: در نهایت ۳۲ بیت خروجی S-boxها با استفاده از یک جایگشت ثابت مجدداً سازماندهی می‌شود (P-box).

الگوریتم Key Schedule[ویرایش]

تولید کلید مراحل مختلف

از این الگوریتم برای تولید زیر کلیدها استفاده می‌شود. درابتدا ۵۶ بیت از ۶۴ بیت کلید توسط انتخاب جایگشت1 (PC1)انتخاب می‌شوند و ۸ بیت باقی‌مانده یا دور ریخته می‌شوند و یا به عنوان parityبرای چک کردن مورد استفاده قرار می‌گیرند سپس این ۵۶ بیت به دو نیمه ۲۸ تایی تقسیم می‌شوند و پس از آن با هرنیمه به طور مستقل رفتار می‌شود. در دور بعدی هر دو نیمه یک یا دو بیت به سمت چپ انتقال می‌یابند.. سپس ۴۸ بیت زیرکلید توسط PC2 انتخاب می‌شوند. ۲۴ بیت، نیمه راست و ۲۴ بیت دیگر نیمه چپ را تشکیل می‌دهند. با استفاده از انتقال در هر زیر کلید مجموعه متفاوتی از بیتها مورد استفاده قرار می‌گیرد. هر بیت تقریباً در ۱۴ تا ۱۶ زیر کلید مورد استفاده واقع می‌شود. الگوریتم key schedule در رمزگشایی مانند رمزگذاری است ولی زیر کلیدها در مقایسه با رمزگذاری در جهت معکوس هستند به غیر از این تغییر بقیه الگوریتم مانند رمزگذاری انجام می‌شود.

امنیت DES[ویرایش]

اساسی‌ترین حمله برای هر رمزی امتحان کردن کلیه مقادیر ممکن برای کلید است. طول کلید، تعداد مقادیر ممکن برای کلید و هم چنین عملی بودن این روش رامشخص می‌کند. تردیدی که از ابتدا و حتی قبل از اینکه DES به عنوان استاندارد شناخته شود در مورد DESوجود داشت کافی بودن طول کلید بود NSA، IBM را به کاهش طول کلید از ۱۲۸ بیت به ۶۴ بیت و سپس به ۵۶ بیت نمود و این نشان می‌دهد که NSA حتی در آن زمان نیزقادر به شکستن کلیدهایی با طول ۵۶ بیت بوده‌است. طرحهای متنوعی برای یک ماشین که قادر به شکستن کلیدهای DESباشد مطرح گردیده‌است. در سال 1977، Hellman و Diffieماشینی طراحی کردند که بیست میلیون دلار قیمت داشت و می‌توانست کلید DES را در یک روز پیدا کند. در سال Wiener 1993 یک ماشین جستجوی کلید را پیشنهاد داد که یک میلیون دلار قیمت داشت و قادر بود کلید را در مدت هفت ساعت پیدا کند. ولی هیچ یک ازاین طرحهای ابتدایی پیاده سازی نشد و هیچ پیاده سازی مورد تایید قرارنگرفت. در سال ۱۹۹۷ موسسه RSA security اعلام کرد که به اولین تیمی که بتواند یک پیغام را که با استفاده از DES رمزگذاری شده‌است را بشکند یک جایزه ده هزار دلاری اعطا خواهد نمود پروژه DESCHALL برنده این رقابت شد که این کار را با استفاده از زمان بیکاری (idle cycle)هزاران کامپیوتر در اینترنت انجام داد. عملی بودن شکست DES با اختراع یک DES-cracker توسط EFF در سال ۱۹۹۸ بر همگان روشن شد این ماشین قیمتی حدود دویست و پنجاه هزار دلار داشت و انگیزه این تیم بر ای اختراع این ماشین، این بود که نشان دهند که DES هم چنان که از لحاظ تئوری قابل شکست است از لحاظ عملی نیز می‌توان آن را شکست. این ماشین کلید را با استفاده از روش جستجوی جامع فضای کلید درطی مدت زمان کمی بیش از دو روز پیدا می‌کند. تنها DES-cracker تایید شده پس از ماشین EFF، ماشین COPOCOBANA که در آلمان ساخته شد و بر خلاف EFF از مدارات مجتمع در دسترس و قابل پیکربندی دوباره ساخته شده‌است در این ماشین صد وبیست عدد FPGA از نوع XILINX Spartan- 1000 موازی با هم کار می‌کنند آنها در ماژولهای 20 DIMM گروه بندی شده‌اند هر کدام از این ماژولها شامل شش FPGA می‌باشند. استفاده از سخت‌افزارهای قابل پیکربندی دوباره سبب می‌شود که این ماشین برای شکستن کدهای دیگر نیز قابل استفاده باشد. یکی از جنبه‌های جالب این ماشین، فاکتور هزینه آن است این ماشبن با ده هزار دلار می‌تواند ساخته شود کاهش هزینه با ضریب ۲۵ نسبت به EFFنشان دهنده پیشرفتهای متوالی در زمینه سخت‌افزارهای دیجیتالی است.

الگوریتم‌های جایگزین DES[ویرایش]

نگرانی‌هایی که در مورد امنیت و طول کم کلید در DES وجود داشت محققان را به طراحیهای جایگزین برای رمز قطعه‌ای تشویق کرد که این تلاشها از سال ۱۹۸۰ شروع شد و تا اوایل ۱۹۹۰ ادامه داشت این تلاشها منجر به ایجاد طراحیهایی از قبیل Blowfish، RC5،IDEA، NEWDES،SAFER،CAST5 و FEAL گردید. بیشتر این الگوریتم‌ها مانند DES روی قطعه‌های داده با طول ۶۴ بیت کار می‌کردند و می‌توانستند جایگزین DESشوند اگرچه عموماً از کلیدهایی با طول ۶۴ یا ۱۲۸ بیت استفاده می‌کردند. DES می‌تواند دچار تغییراتی شود تا امن تر عمل نماید. Triple DES توسط یکی از مخترعان DES مطرح شد در این روش DES با استفاده از دو کلید (2TDES) و یا سه کلید متفاوت (3TDES) سه بار به کار برده می‌شود.

مشخصات عمومی الگوریتم رایندال[ویرایش]

رایندال یک الگوریتم رمز قطعه‌ای متفارن با طول قالب داده ۱۲۸، ۱۹۲ و ۲۵۶ بیت است طول کلید نیز مستقل از طول قالب، ۱۲۸،۱۹۲یا ۲۵۶ بیت باشد. الگوریتم بسته به طول قالب داده و طول کلید مشتمل بر ۱۰، ۱۲ یا ۱۴ دور خواهد بود. رایندال دارای ساختاری برای بسط کلید است که از روی کلید اصلی بسته به تعداد دورها، تعدادی زیر کلید تولید می‌کند که در هر دوربه قالب داده اضافه می‌شوند. الگوریتم شامل سه تبدیل مهم MixColumn() و ShiftRow() و SubByte()است که اولی یک تابع جایگزینی غیر خطی و تامین کننده امنیت سیستم و دومی وسومی توابعی خطی برای افزایش گسترش و اختلاط الگوریتم اند. در این رمز قطعه‌ای ساختار سیستم رمزگشا دقیقاً مشابه سیستم رمزگذار نیست. هم چنین چون با افزایش طول کلید تعداد دورهای الگوریتم افزایش می‌یابد، زمان اجرا و سرعت الگوریتم به طول کلید وابسته‌است.

تعاریف[ویرایش]

Nb - تعداد چهاربایتی‌های موجود در قالب داده‌است به عنوان مثال برای قالب داده ۱۲۸ بیتی Nb=۴ است.

Nk - نیز تعداد آرایه‌های ۴ بایتی موجود در کلید است برای کلیدهای ۱۲۸، ۱۹۲ و ۲۵۶ بیتی Nk به ترتیب ۴، ۶ و ۸ خواهد بود.

آرایه حالت یک آرایه دو بعدی با ابعاد 4*Nb از بایتها است بنابراین تعداد بایتهای آرایه حالت برابر تعداد بایتهای قالب داده خواهد بود در ابتدای الگوریتم متن اصلی بایت به بایت ازبالا به پایین و از چپ به راست در جدول حالت چیده می‌شود.

آرایه کلید بسط یافته - آرایه‌ای از کلمات ۴ بایتی است که کلید بسط یافته‌ای راکه تابع بسط کلید تولید کرده در خود ذخیره می‌کند این آرایه از (Nb*(Nr+1 کلمه ۴ بایتی تشکیل شده که (1+Nr) کلید دورهای مختلف را در خود ذخیره می‌کند.

تعداد دورهای الگوریتم رایندال را با Nr نشان می‌دهیم که به طول قالب داده و کلید بستگی دارد بدین ترتیب که اگر هر کدام ازNb یا Nk برابر ۶ باشد خواهیم داشت Nr=12 و اگر هر کدام برابر ۸ باشد خواهیم داشت Nr=۱۴ در غیر این صورت تعداد دورها برابر ۱۰ خواهد بود.

تبدیلها و توابع مورد استفاده[ویرایش]

هر کدام از توابع و تبدیلهای زیر روی آرایه حالت عمل کرده و آن را به نحوی تغییر می‌دهند.

تابع SubByte[ویرایش]

این تابع یک تابع غیرخطی است که به طور مستقل روی بایتهای آرایه حالت عمل کرده و به جای هر بایت به کمک جدول S-box یک بایت جدید قرار می‌دهد این تبدیل معکوس پذیر است و از دو تبدیل زیر تشکیل شده‌است:

۱- ابتدا معکوس ضربی بایت مورد نظر محاسبه می‌شود. معکوس «۰۰را» ۰۰ " در نظر می‌گیریم. 2- تبدیل صحیح(affine) روی بایت مورد نظر اعمال می‌شود.

تبدیل ShiftRow[ویرایش]

این تبدیل سه سطر آخر آرایه حالت را به تعداد معینی انتقال دورانی می‌دهد. برای اولین سطر، r=0، انتقالی انجام نمی‌شود تعداد انتقال دورانی در سه سطر آخر بستگی به Nb دارد به این ترتیب که برای Nb=8 انتقالهای سه سطر آخر به ترتیب برابر ۱،۳ و ۴ و برای Nb<8 برار ۱،۲ و ۳ خواهد بود.

تبدیل MixColumn[ویرایش]

این تابع روی آرایه حالت ستون به ستون عمل می‌کند. هر ستون به عنوان یک چندجمله‌ای در میدان دو به توان هشت در نظر گرفته می‌شود و در چند جمله‌ای ثابت a(x) ضرب می‌شود و به پیمانه x4 1 محاسبه می‌گردد. a (x) {۰۳}x3 {۰۱}x2 {۰۱}x {۰۲}

تابع AddRoundKey[ویرایش]

این تابع Nb کلمه اول آرایه را همراه با Nb ستون آرایه حالت XOR می‌کند و حاصل را در آرایه حالت قرار می‌دهد.

تابع بسط کلید[ویرایش]

الگوریتم رایندال K کلید اصلی را گرفته و تعداد (1+Nr) کلید دور (Round key) تولید می‌کند از آنجا که هر کدام از کلیدهای دوری از Nb کلمه ۴ بایتی تشکیل شده‌اند جمعاً (Nb*(Nr+1 کلمه ۴ بایتی به عنوان کلید بسط یافته از روی کلید اصلی تولید می‌شود. کلیدهای تولید شده یک آرایه خطی تشکیل می‌دهند که هرکلید با W[i] نشان داده می‌شود. قبل از توصیف نحوه بسط کلید ابتدا توابع زیر را تعریف می‌کنیم:

SubWord()-1 این تابع ر وی یک بردار ۴ بایتی عمل می‌کند به این صورت که S-box رایندال را روی تک تک بایتهای بردار اعمال کرده و بردار چهار بایتی جدیدی می‌سازد.
RotWord()-2این تابع روی یک بردار چهار بایتی مانند (a0,a1,a2,a3) عمل کرده آن را می‌چرخاند و بردار (a3,a2,a1,a0) را به عنوان خروجی به دست می‌دهد.

Rcon[i]-3 یا ثابت دور: این تابع یک بردار چهار بایتی به صورت زیر تولید می‌کند. Rcon[i]= (xi 1 ,00,00,00) که xi 1 توانهای x هستند. الگوریتم به این صورت است که ابتدا کلید اصلی داخل آرایه کلمات قرار می‌گیرد و سپس هر کلمه جدید، w[i]، از XOR کلمه قبل، w[i-1]، و کلمه Nk مرتبه قبل، w[i-Nk]، به دست می‌آید. توجه به این نکته ضروری است که الگوریتم تولید کلید برای کلیدهایی با طول ۲۵۶ بیت با الگوریتم مربوط به تولید کلید برای کلیدهای ۱۲۸ و ۱۹۲ بیتی اندکی متفاوت است. اگر Nk=8 و i-4 ضریبی از Nk باشد SubWord() روی w[i-1] پیش از xor اعمال می‌شود.

استاندارد پیشرفتۀ رمزنگاری AES[ویرایش]

تا سال ۲۰۰۶ تنها حمله موثر علیه الگوریتم AES حمله side channel بوده‌است. آژانس ملی امنیت آمریکا (NSA) هر پنج الگوریتمی را که به مرحله نهایی راه یافتند را بررسی کرد و پس از بررسی اعلام نمود که همه این الگوریتم‌ها برای حفاظت اطلاعات غیر سری آمریکا به اندازه کافی امنیت را فراهم می‌کنند. در ژوئن سال ۲۰۰۳ دولت آمریکا اعلام کرد که از AES می‌توان برای حفاظت از اطلاعات رده بندی شده و سری نیز استفاده کرد. برای اطلاعات فوق سری و محرمانه باید از کلیدهایی با طول ۱۹۲ یا ۲۵۶ بیت استفاده کرد. این اولین بار بود که NSA یک روش رمزنگاری را برای رمزگذاری اطلاعات فوق محرمانه در اختیار عموم قرار می‌داد. رایج‌ترین راه برای حمله به رمز قطعه‌ای امتحان کردن حملات. متنوع روی نسخه‌های رمز با تعداد کاهش یافته‌ای دور است.AES برای کلیدهای ۱۲۸ بیتی ۱۰ دور، برای کلیدهای ۱۹۲ بیتی ۱۲ دور و برای کلیدهای ۲۵۶ بیتی ۱۴ دور دارد. تا سال ۲۰۰۶ بهترین حمله با استفاده از ۷ دور برای کلیدهای ۱۲۸ بیتی، ۸ دور برای کلیدهای ۱۹۲ بیتی و ۹ دور برای کلیدهای ۲۵۶ بیتی بوده‌است. برخی از رمزنگاران در مورد امنیت AES اظهار نگرانی می‌کنند آنها معتقدند که حاشیه امنیت (فاصله بین دورهای الگوریتم و دورهای لازم برای شکستن رمز کم است. هم چنین این خطر وجود دارد که با پیشرفت الگوریتم‌های ذکر شده این الگوریتم‌ها بتوانند رمز را با زمانی کمتر از زمان لازم برای جستجوی جامع در فضای کلید بشکنند. شکستن یک کلید ۱۲۸ بیتی به ۲۱۲۰ عمل نیاز دارد که در مقایسه با ۲۱۲۸ بسیار کم است که امروزه کاملاً غیر ممکن و غیر عملی است. بزرگترین حمله که با استفاده از جستجوی جامع روی فضای کلید صورت گرفته‌است منجر به شکستن کلید RC5 65 بیتی شده‌است پس در این مورد جای نگرانی وجود ندارد. بقیه تردیدهایی که در مور د این الگوریتم وجود دارد راجع به ساختار ریاضی AES است. بر خلاف اکثر الگوریتم‌های رمزقطعه‌ای،AES یک تعریف جبری مرتب دارد. این ساختار تاکنون منجر به هیچ حمله‌ای نشده‌است ولی برخی از محققان می‌گویند که ایجاد یک رمز بر مبنای فرضیات سخت جدید به دور از ریسک نیست. در سال ۲۰۰۲ یک حمله تئوریکی به نام حمله XSL توسط Nicolas Courtois و Josef Pieprzyk مطرح شد. این دو نفر اعلام کردند که در این الگوریتم ضعفهایی وجود دارد. چندین متخصص رمزشناسی مشکلاتی را درساختار ریاضی حمله پیشنهاد شده کشف کردند و اعلام کردند که مخترعان این حمله احتمالاً در تخمین‌های خود دچار اشتباه شده‌اند. اینکه آیا حمله XSL می‌تواند علیه AES عمل کند یا نه سوالی است که هنوز به آن پاسخی داده نشده‌است. ولی احتمال اینکه این حمله بتواند در عمل انجام شود بسیار کم است

حمله کانال جانبی[ویرایش]

حمله کانال جانبی به رمز صدمه‌ای نمی‌رساند ولی به پیاده سازی رمز روی سیستم، حمله می‌کند و باعث فاش شدن داده‌ها می‌شود. چندین حمله برای برخی از پیاده سازیهای خاص AES شناخته شده‌است که در اینجا مورد اشاره قرار می‌گیرند. در آوریل سال 2005، D.J.Bernstein اعلام کر د که حمله cache timing می‌تواند یک سرور متعارف را که برای دادن اطلاعات تنظیم وقت به اندازه ممکن طراحی شده‌است واز روش رمزنگاری openSSL AES استفاده می‌کند را مورد حمله قرار دهد. یک حمله به بیش از دویست میلیون chosen plaintext نیاز دارد. برخی معتقدند که این حمله با فاصله یک و بیش از یک hop در اینترنت امکان پذیر نیست. در اکتبر سال 2005، ،Dag Arne Oskiv، Adi Shamir، Eran Tromer یک مقاله منتشر کردند و در آن چندین حمله cache timing را که می‌توانست علیه AES موثر واقع شود را توضیح دادند یکی از این حمله‌ها قادر بود که کلید را پس از ۸۰۰ عمل و در مدت ۵۶ میلی ثانیه به دست آورد ولی برای انجام این حمله، حمله کننده باید برنامه را روی همان سیستمی که از AES استفاده می‌کند به اجرا در بیاورد.

منابع[ویرایش]