بخشی از مقاله

خلاصه

امروزه در دنیای دیجیتال حفاظت از اطلاعات نقش اساسی و مهمی در تبادلات پیامها ومبادلات تجاری ایفا مینماید. از رمز نگاری برای تامین نیازهای امنیتی اطلاعات استفاده میشود. با توجه به اهمیت این موضوع و گذار از مرحله سنتی به مرحله دیجیتال آشنایی با روشهای رمز گذاری ضروری به نظر میرسد. الگوریتمهای رمزنگاری به دو گروه عمده تقسیم میگردند این دو گروه عبارت هستند از الگوریتم های رمزنگاری متقارن و نا متقارن.

از گروه الگوریتم های رمزنگاری متقارن، الگوریتم های رمزنگاری AES دارای سرعت بالا و قابلیت اجرا در سخت افزار و نرم افزار میباشند. به دلیل اهمیت الگوریتم های رمزنگاری AES در این مقاله به بررسی ساختار و نحوه اجرای آن ها خواهیم پرداخت و همچنین از گروه الگوریتم های رمزنگاری نا متقارن یکی از الگوریتم های رمزنگاری که نقش مهمی در توسعه الگوریتم های رمزنگاری در گروه نا متقارن داشته است، الگوریتم رمز نگاری RSA است. به دلیل اهمیت این الگوریتم در رمزنگاری اطلاعات در این مقاله ساختار الگوریتم RSA و نحوه اجرای آن در زبان برنامه نویسی C# توضیح داده خواهد شد.

.1 مقدمه

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

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

.2 ساختار های الگوریتم رمزنگاری

الگوریتم های رمزنگاری در حالت کلی در دو دسته الگوریتم های کلید متقارن - کلید خصوصی - و الگوریتم های کلید نا متقارن - کلید عمومی - تقسیم بندی میشوند. در ادامه به بررسی هر یک از این ساختار ها خواهیم پرداخت.

.3 الگوریتم های رمزنگاری کلید متقارن متداولترین نوع رمزنگاری مبتنی بر کلید، رمزنگاری "کلید خصوصی" است. به این نوع رمزنگاری، متقارن، سنتی و رمز مشترک نیز گفته میشود. در این نوع رمزنگاری، فرستنده و گیرنده از کلید استفاده شده به منظور رمزنگاری اطلاعات آگاهی دارند. رمزنگاری کلیدخصوصی، گزینهای مناسب به منظور مبادله اطلاعات بر روی اینترنت و یا ذخیره سازی اطلاعات حساس در یک بانک اطلاعاتی و یا یک فایل میباشد. از روش فوق، به منظور ایمن سازی ارسال اطلاعات در شبکههای عمومی استفاده میگردد .ایده اولیه و اساسی در چنین سیستم هایی، "اشتراک یک رمز" بوده و دو گروه شرکت کننده در مبادله اطلاعات، بر روی یک "کلید رمزمشترک "، با یکدیگر توافق مینمایند

بدین ترتیب امکان رمزنگاری و رمزگشائی پیامها برای هر یک از آنان با توجه به آگاهی از "کلید رمز "، فراهم میگردد . 

الگوریتم های رمز متقارن شناخته شده عبارت هستند از Twofish،CAST5، RC4، DES، وIDEA از الگوریتم های رمزنگاری متقارن گفته شده، الگوریتم AES توسط NIST 128 بیتی تایید شد

.4 بررسی دقیق الگوریتم رمزنگاری AES

استاندارد رمزنگاری پیشرفته یا به اختصار AES روشی برای رمزنگاری دادههای دیجیتال است که در سال 2001 توسط موسسه ملی فناوری و استاندارد های ایالات متحده ایجاد گردید.

استاندارد رمزنگاری پیشرفته توسط دولت ایالات متحده پذیرفته شده و اکنون در سراسر جهان استفاده میگردد. این الگوریتم رمزنگاری به جای استاندارد رمزنگاری دادهها - DES - که در سال 1977 منتشر شده است [6] جایگزین گردیده است.

استاندارد رمزنگاری پیشرفته بر اساس یک قاعده طراحی به نام substitution-permutation network است و به هر دو صورت سختافزاری و نرمافزاری به صورت سریع اجرا میشود.

در الگوریتم AES اندازه بلاک ها 128 بیتی است و همچنین اندازه کلید ها در انواع 128، 192 و 256 بیتی تقسیم بندی میشوند .

استاندارد رمزنگاری پیشرفته روی ماتریسی 4*4 از بایتها با ترتیب ستونی، که state نامیده میشود، عمل میکند و اندازه کلید استفاده شده در الگوریتم AES ، تعداد تکرارهای چرخههای تبدیل - transformation - را تعیین میکند که ورودی با نام متن عادی - plaintext - را به خروجی نهایی با نام متن رمز شده - ciphertext - تبدیل مینماید. تعداد چرخههای تکرار به صورت زیر است:

10 چرخه تکرار برای کلیدهای 128 بیتی.

12 چرخه تکرار برای کلید های 192 بیتی.

14 چرخه تکرار برای کلید های 256 بیتی.

هر تکرار - Round - شامل چندین مرحله پردازشی است، که یک مرحله بستگی به کلید رمزنگاری دارد. مجموعهای از چرخههای معکوس برای تبدیل متن رمز شده به متن اصلی با استفاده از همان کلید رمزنگاری بکار گرفته میشوند .  در شکل شماره 1 ساختار کلی الگوریتم رمزنگاری AES نمایش داده شده است.

در شکل شمراه 2 ساختار داخل هر Round و مراحل رمزنگاری و رمز گشایی در الگوریتم AES نشان داده شده است. در جدول شماره 1 مشخصات و ویژگی های هر یک از مراحل استفاده شده در Round ها تعریف شده اند.

جدول -1 مشخصات و ویژگی های هر یک از مراحل استفاده شده در Round ها

مشخصات و ویژگی ها

هر بایت از state با کلید چرخه توسط xor بیت به بیت ترکیب میشود. مرحله جانشین سازی - substitution - غیر خطی که هر بایت با بایت دیگری بر اساس یک جدول جستجو - lookup table - جایگزین میشود.

مرحله جابجاسازی - transposition - که هر سطر از state به صورت تکراری در چند مرحله معین شیفت مییابد.

فرایند در هم ریختن - mixing - ستونها که روی ستونهای state عمل مینماید و چهار بایت از هر ستون را ترکیب مینماید.

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید