روشی برای رمزنگاری داده های دیجیتال

مقدمه:استاندارد رمزنگاری پیشرفته (Advanced Encryption Standard) یا به اختصار AES، ویژگی ای برای رمزنگاری داده های دیجیتال می باشد.این استاندارد در سال 2001 توسط موسسه ملی فناوری و استاندارد آمریکا ایجاد گردیده است.استاندارد رمزنگاری پیشرفته امروزه در سراسر جهان در حال استفاده می باشد و برای اولین بار در آمریکا پذیرفته شد.این الگوریتم رمزنگاری به جای استاندارد DES یا همان استاندارد رمزنگاری داده ها که در سال 1977 منتشر گردیده بود، جایگزین شد. الگوریتم AES یک الگوریتم کلید متقارن می باشد.*الگوریتمی را کلید متقارن گویند که از کلید یکسان برای رمزنگاری و رمزگشایی استفاده کند.تاریخچه:این رمز در ابتدا ریندال ( Rijndael ) نامیده می شد و توسط دو رمزنگار بلژیکی به نام های Joan Daemen و Vincent Rijmen توسعه داده شده است. کلمه ی ریندال ترکیبی از دو نام مخترع این الگوریتم بوده است.* اگر بخواهیم دقیق شویم، استاندارد AES گونه‌ای از ریندال است که اندازه بلاک آن ۱۲۸ بیتی است.در آمریکا برای اولین بار AES توسط موسسه ملی استاندارد و تکنولوژی به عنوان FIPS PUB 197 در نوامبر 2001 اعلام گردید، علاوه بر آن جالب است بدانید که این اعلان بعد از یک فرآیند استاندارد سازی پنج ساله بود که در طول آن پانزده طرح، تا قبل از معرفی رمز AES، به عنوان گزینه مناسب ارائه و ارزیابی گردید.رمزنگاری AES به عنوان استاندارد دولت فدرال در ماه می 2002 بعد از تایید توسط وزارت بازرگانی آمریکا به کار گرفته شد.رمزنگاری AES در استاندارد ISO/IEC 18033-3 قرار گرفته است.AES در بسته های رمزنگاری متفاوتی در دسترس می باشد و نخستین سایفر باز و در دسترس عموم می باشد که توسط NSA یا همان آژانس امنیت ملی آمریکا، برای اطلاعات خیلی محرمانه تصدیق شده است.*در عمل رمزنگاری سایفر یک الگوریتم برای قفل‌گذاری یا قفل‌شکنی به عنوان یک سری مراحل تعریف شده به کار می‌رود.شرح مطلب:AES بر اساس قاعده طراحی به نام Substitution- Permutation Network است و در هر دو فاز نرم افزاری و سخت افزاری کارآمد می باشد. بر خلاف رمزنگاری DES، در حالت AES از رمزنگاری فیستل استفاده نمی شود.*شبکه فایستل یکی از روش ها رایج در ساخت رمز قالبی است ( ساختار رمز DES بر اساس این شبکه است ).استاندارد رمزنگاری پیشرفته (AES) گونه‌ای از Rijndael است که اندازه بلاک ثابت ۱۲۸ بیتی و اندازه کلید ۱۲۸، ۱۹۲ و ۲۵۶ بیتی دارد. در مقابل، مشخصه per se الگوریتم Rijndael با اندازه کلید و اندازه بلاکی تعیین می‌شود که می‌تواند هر ضریبی از ۳۲ بیت، با حداقل ۱۲۸ و حداکثر ۲۵۶ بیت باشد.استاندارد رمزنگاری پیشرفته روی ماتریسی ۴x۴ از بایت‌ها با ترتیب ستونی، که state نامیده می‌شود، عمل می‌کند، اگرچه برخی نسخه‌های Rijndael اندازه بلاک بزرگتر و ستونهای بیشتری در state دارند. بیشترین محاسبات AES در یک finite field خاص انجام می‌گیرد.اندازه کلید استفاده شده در رمز AES، تعداد تکرارهای چرخه‌های تبدیل (transformation) را تعیین می‌کند که ورودی، با نام متن عادی (plaintext) را به خروجی نهایی با نام متن رمز شده (ciphertext) تبدیل می‌نماید. تعداد چرخه‌های تکرار به صورت زیر است:۱۰ چرخه تکرار برای کلیدهای ۱۲۸ بیتی.۱۲ چرخه تکرار برای کلیدهای ۱۹۲ بیتی.۱۴ چرخه تکرار برای کلیدهای ۲۵۶ بیتی.هر تکرار شامل چندین مرحله پردازشی است، که یک مرحله بستگی به کلید رمزنگاری دارد. مجموعه‌ای از چرخه‌های معکوس برای تبدیل متن رمز شده به متن اصلی با استفاده از همان کلید رمزنگاری بکار گرفته می‌شود.روند کلی الگوریتم:*در تمامی مراحل الگوریتم کلیه عملیات های ریاضی شامل جمع، تفریق و ضرب بر روی دسته بایت های 8 بیتی انجام میشود.1- Key Expansion ( بسط کلید ) :کلیدهای چرخه از کلید رمز با استفاده از زمانبندی کلید ریندال مشتق گرفته می شود.2- Initial Round Key Addition ( چرخه اولیه ) :Add.round.key - هر بایت از state با کلید چرخه توسط xor، بیت به بیت ترکیب می شود.3- Rounds ( چرخه ها ) :SubBytes: مرحله جانشین سازی (substitution) غیر خطی که هر بایت با بایت دیگری بر اساس یک جدول جستجو (lookup table) جایگزین می‌شود.ShiftRows: مرحله جابجاسازی (transposition) که هر سطر از state به صورت تکراری در چند مرحله معین شیفت می‌یابد.MixColumns: فرایند در هم ریختن (mixing) ستون‌ها که روی ستون‌های state عمل می‌نماید و چهار بایت از هر ستون را ترکیب می‌نماید.Add.Round.Key4- Final Rounds ( چرخه آخر ) :SubBytesShiftRowsAddRoundKeyشرح تک تک مراحل به کار گرفته شده در الگوریتم:1- مرحله ی SubBytes:در این جا هر بایت در ماتریس state با استفاده از substitution box 8 بیتی Rijndael S-box با یک SubByte جایگزین می‌گردد.S-box استفاده شده از معکوس فزاینده (multiplicative inverse) روی (GF(۲۸ مشتق شده‌است که به داشتن خصوصیات غیرخطی خوب مشهور است. برای اجتناب از حملات مبتنی بر خصوصیات جبری ساده، S-box به وسیله ترکیب تابع معکوس با یک affine transformation معکوس پذیر ایجاد می‌گردد. affine transformation S-box همچنین به گونه‌ای انتخاب می‌شود که از هرگونه نقاط ثابت (و همچنین آشفتگی) و هرگونه نقاط ثابت معکوس اجتناب شود.در SubBytes هر بایت در state با مقداری در جدول جستجو با ۸ بیت ثابت جایگزین می‌شود، (Si Bij = S(Aij2- مرحله ی ShiftRows:این مرحله بر روی سطرهای state عمل می کند.در این مرحله بایت‌های هر سطر به وسیله یک آفست (Offset) معین به صورت چرخشی شیفت می‌یابد. برای AES، نخستین سطر بدون تغییر باقی می‌ماند. هر بایت از سطر دوم یکی به سمت چپ شیفت می‌یابد. به صورت مشابه، سطرهای سوم و چهارم به ترتیب با آفست‌های دو و سه شیفت می‌یابند. برای بلاک‌های با اندازه ۱۲۸ و ۱۹۲ بیتی، الگوی شیفت دادن یکسان است. سطر n به تعداد n-1 بایت به صورت چرخشی به چپ شیفت می‌یابد. بدین صورت، هر ستون از state خروجی در این مرحله ترکیب شده بایت‌های هر ستون از state ورودی است. (انواع Rijndael با اندازه بلاک بزرگتر، آفست‌هایی اندکی متفاوت دارند) برای یک بلاک ۲۵۶ بیتی، نخستین سطر بدون تغییر باقی می‌ماند و سطرهای دوم و سوم و چهارم به ترتیب یک، دو و سه بایت شیفت می‌یابد. این تغییر تنها برای رمز Rijndael با بلاک ۲۵۶ بیتی اعمال می‌شود چون AES بلاک‌های ۲۵۶ بیتی استفاده نمی‌کند.در مرحله ShiftRows بایت‌ها در هر سطر از state به صورت چرخشی شیفت داده می‌شوند. تعداد مکانهایی که هر بایت شیفت می‌یابد برای هر سطر متفاوت است.3- مرحله ی Mix Columns:در این مرحله، چهار بایت از هر ستون state با استفاده از تبدیل خطی معکوس ترکیب می‌شوند. تابع MixColumns چهار بایت را به عنوان ورودی در نظر می‌گیرد و چهار بایت را به خروجی می‌دهد، که هر بایت ورودی بر هر چهار بایت خروجی تأثیر می‌گذارد. به همراه ShiftRows، مرحله MixColumns آشفتگی و پخش (diffusion) را در رمزنگاری فراهم می‌نماید.در طول این عمل، هر ستون توسط ماتریس شناخته شده‌ای که برای کلید ۱۲۸ بیتی است ضرب می‌گردد.عمل ضرب بدین صورت تعریف می‌شود: ضرب در ۱ به معنی بدون تغییر، ضرب در ۲ به معنای جابجایی به سمت چپ و ضرب در ۳ به معنای جابجایی به سمت چپ و سپس انجام XOR را با مقدار اولیه جابجا نشده. پس از جابجایی، اگر مقدار جابجا شده بیشتر از ۰xFF باشد، XOR شرطی با ۰x11B باید انجام شود.به صورت کلی تر، هر ستون به عنوان یک چند جمله‌ای روی (GF(2^8 تلقی می‌شود و پس از آن پیمانه x4+1 با یک چند جمله‌ای ثابت c(x) = 0x03 · x3 + x2 + x + 0x02 ضرب شده است. ضرایب با معادل مبنای ۱۶ از نمایش دودویی بیت‌های چندجمله‌ای [GF(2)[x نمایش داده می‌شود. مرحله MixColumns همچنین می‌تواند به صورت ضرب یک ماتریس خاص MDS در یک finite field دیده شود. این فرایند در مقاله ستون‌های ترکیبی Rijndael به صورت مفصل تر شرح داده شده است.در مرحله MixColumns هر ستون از state با یک چندجمله‌ای (C(x ضرب می‌شود.4- مرحله ی AddRoundKey:در مرحله AddRoundKey، subkey با state ترکیب می‌شود. در هر دور، یک subkey از کلید اصلی توسط زمانبند کلید Rijndael مشتق می‌شود. هر subkey به همان اندازه state است. subkey با ترکیب کردن هر بایت از state با بایت متناظر از subkey با استفاده از XOR بیتی جمع بسته می‌شود.در مرحله AddRoundKey هر بایت از stat با یک بایت از subkey چرخه با استفاده از عمل XOR (⊕) ترکیب می‌شود.نگاهی عمیق تر:Security:تا ماه مه ۲۰۰۹، تنها حملات منتشر شده موفق علیه AES کامل، حملات Side-Channel در برخی از پیاده‌سازی‌های خاص بود. آژانس امنیت ملی آمریکا (NSA) همه AES های فینالیست، از جمله Rijndael را بازبینی کرد، و اظهار داشت که همه آنها برای اطلاعات غیر طبقه‌بندی شده دولت ایالات متحده به اندازه کافی امن است. در ماه ژوئن سال ۲۰۰۳، دولت ایالات متحده اعلام کرد که AES می‌تواند برای محافظت از اطلاعات طبقه‌بندی شده مورد استفاده قرار گیرد:طراحی و قدرت تمام طول کلیدهای الگوریتم AES (به عنوان مثال ۱۲۸، ۱۹۲ و ۲۵۶) برای محافظت از اطلاعات طبقه‌بندی شده تا سطح محرمانه کافی است. اطلاعات خیلی محرمانه نیاز به استفاده کلیدهای با طول ۱۹۲ یا ۲۵۶ دارد. پیاده‌سازی AES در محصولات در نظر گرفته شده برای حفاظت از سیستم‌های امنیت ملی و / یا اطلاعات باید توسط NSA، پیش از استفاده، بازبینی و مجوز داده شود.AES دارای ۱۰ چرخه برای کلیدهای ۱۲۸ بیتی، ۱۲ چرخه برای کلیدهای ۱۹۲ بیتی و ۱۴ چرخه برای کلیدهای ۲۵۶ بیتی می‌باشد. در سال ۲۰۰۶، بهترین حملات شناخته شده در ۷ چرخه برای کلیدهای ۱۲۸ بیتی، ۸ چرخه برای کلیدهای ۱۹۲ بیتی، و ۹ چرخه برای کلیدهای ۲۵۶ بیتی بودند.Optimization:در سیستم‌های با کلمات ۳۲ بیتی یا بزرگتر، این امکان وجود دارد که به وسیله ترکیب مراحل SubBytes و ShiftRows با مرحله MixColumns با تبدیل آنها به دنباله‌ای از جستجوهای‌های جدول، اجرای این رمزنگاری را سرعت بخشید. این امر نیازمند چهار جدول با ۲۵۶ مدخل ۳۲ بیتی و بهره‌گیری از چهار کیلوبایت (۴۰۹۶ کلمه) حافظه (یک کیلوبایت برای هر جدول) است. آنگاه یک چرخه می‌تواند با ۱۶ جستجوی جدول و ۱۲ عمل OR انحصاری ۳۲ بیتی و در ادامه با چهار عمل OR انحصاری ۳۲ بیتی در مرحله AddRoundKey انجام می‌شود.اگر اندازه جدول چهار کیلوبایتی برای پلتفرم مقصد بزرگ است، جستجوی جدول می‌تواند با یک جدول با ۲۵۶ مدخل ۳۲ بیتی (یعنی ۱ کیلوبایت) با استفاده از تکرارهای چرخشی انجام گردد.با استفاده از رویکرد بایت گرا، ترکیب مراحل SubBytes، ShiftRows و MixColumns به یک چرخه تنها امکان‌پذیر است.جمع بندی و نتیجه گیری:AES تنها الگوریتم رمزنگاری قابل‌دسترس برای عموم است که جهت حفاظت از اطلاعات دولتی در بالاترین سطوح امنیتی مورد تایید NSA قرار گرفته است. AES از الگوریتم رمزنگاری بلوکی بر مبنای یک شبکه جایگشتی تعویضی (SPN) استفاده می‌کند. پیام باز در طی چندین مرحله به یک پیام ایمن تبدیل خواهد شد. این‌کار با هر بلوک متنی ساده و دارای اندازه‌ای استاندارد آغاز می‌شود. پیام در قالب یک آرایه قرار گرفته و سپس فرآیند رمزنگاری بر روی پیام اجرا می‌شود. در هر دور از رمزنگاری، اعمال جایگزینی، انتقال و ترکیب پیاده‌سازی خواهند شد.همانند کد 3DES که دارای 3 مرحله رمزگذاری بود؛ AES نیز دارای مراحل رمزنگاری چندگانه است. اگرچه در AES این‌کار بسته به طول کلید، بسیار چشم‌گیرتر از 3DES انجام می‌شود. فرآیند رمزنگاری برای کلید 128 بیتی شامل 10 مرحله، برای کلید 192 بیتی شامل 12 مرحله و برای کلید 256 بیتی دارای 14 مرحله خواهد بود. با افزایش طول کلید امکان دستیابی به سطوح امنیتی بالاتر فراهم خواهد شد.طی این فرآیند، یک کلید رمزنگاری ایجاد می‌شود که جهت رمزگشایی پیام توسط دریافت‌کننده لازم خواهد بود. بدون وجود کلید رمزنگاری، پیام کاملا گنگ و نامفهوم به‌نظر می‌رسد. بنابراین جهت امکان رمزنگاری و رمزگشایی پیام، هم فرستنده و هم گیرنده بایستی از این کلید مشابه اطلاع داشته باشند.مراجع:W. Stallings, Cryptography and Network Security: Principles and Practice(link).https://en.wikipedia.org/wiki/Advanced_Encryption_Standard