منو

des

des:des
des

باسمه تعالي

 

 

الگوریتم رمز نگاری متقارن

DES

 

 

زير نظر استاد : دكتر معيني

 

دانشجو : محمد زند خانه شهري

شماره دانشجويي : 9161118

موسسه غير انتفاعي نور طوبي

 

 

 

 

 

 

مقطع كارشناسي ارشد

بهار 1392

06/06/2013

مقدمه

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

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

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

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

 

رمزنگاری کلید متقارن Symmetric

 

یک الگوریتم متقارن از یک کلید برای رمزنگاری و ازهمان کلید برای رمزگشایی استفاده می‌کند. بیشترین شکل استفاده از این نوع رمزنگاری که در کارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود دارد Data Encryption Algorithm یا DEA است که بیشتر بعنوان DESشناخته می‌شود. الگوریتم DES یک محصول دولت ایالات متحده است که امروزه بعنوان یک استاندارد بین‌المللی شناخته ‌شده و بطور وسیعی مورد استفاده قرار می گیرد. بلوکهای ۶۴ بیتی دیتا توسط یک کلید تنها که معمولا ۵۶ بیت طول دارد، رمزنگاری و رمزگشایی می‌شوند. الگوریتم DES از نظر محاسباتی ساده است و به راحتی می‌تواند توسط پردازنده‌های کند (بخصوص آنهایی که در کارتهای هوشمند وجود دارند) انجام گیرد. در دهه 60 میلادی، با رشد فزاینده فناوری کامپیوتر و نگرانی ها در مورد محرمانه و خصوصی بودن ارتباطات، علاقه به ایجاد یک استاندارد رمزنگاری ملی در آمریکا به شدت افزایش پیدا کرد. تلاشها در جهت ایجاد استانداردی بود که بتواند توسط کامپیوترها و شبکه های متفاوت دولتی در آمریکا مورد استفاده قرار گیرد و همچنین در سیستم های پیمانکاران دولتی نیز مفید واقع شود. تلاشهای مذکور منجر به ایجاد استاندارد رمزنگاری داده یا Data Encryption Standard )DES) گشت که امروزه به صورت وسیعی در رمزنگاری مورد استفاده قرار می گیرد.

در این قبیل سیستم‌ها، یا کلیدهای رمزگذاری و رمزگشایی یکسان هستند و یا با رابطه‌ای بسیار ساده از یکدیگر قابل استخراج می‌باشند و رمزگذاری و رمزگشایی اطلاعات نیز دو فرآیند معکوس یکدیگر می‌باشند.

واضح است که در این نوع از رمزنگاری، باید یک کلید رمز مشترک بین دو طرف تعریف گردد. چون کلید رمز باید کاملاً محرمانه باقی بماند، برای ایجاد و رد و بدل کلید رمز مشترک باید از کانال امن استفاده نمود یا از روش‌های رمزنگاری نامتقارن استفاده کرد. نیاز به وجود یک کلید رمز به ازای هر دو نفرِ درگیر در رمزنگاری متقارن، موجب بروز مشکلاتی در مدیریت کلیدهای رمز می‌گردد.

 

رمزنگاری DES

 

استاندارد رمزنگاری داده (DES) یک الگوریتمی ریاضی است که برای رمزنگاری و رمزگشایی اطلاعات کدشده باینری به کار می رود. رمزنگاری داده ها را تبدیل به داده های نامفهومی به نام cipher می کند. رمزگشایی از cipher آن را به داده های اصلی بازمی گرداند. الگوریتم مذکور هر دو عملیات رمزنگاری و رمزگشایی را بر اساس یک عدد باینری به نام کلید مشخص می سازد. داده ها تنها در صورتی قابل بازیابی از cipher هستند که دقیقاً از کلیدی که برای رمزنگاری استفاده شده برای رمزگشایی نیز استفاده شود.الگوریتم DES دارای دو جزء است:

  • الگوریتم رمزنگاری : الگوریتم DES منتشر شده شامل چندین تکرار از یک تغییر شکل ساده با استفاده از هر دو تکنیک جابجایی و جایگزینی است. این الگوریتم تنها از یک کلید برای رمزنگاری و رمزگشایی استفاده می کند و به همین جهت به آن رمزنگاری کلید اختصاصی نیز گفته می شود. در این حالت حفظ کلید به صورت محرمانه توسط فرستنده و گیرنده پیغام بسیار اهمیت دارد زیرا الگوریتم به صورت عمومی در اختیار همگان است و در صورت لو رفتن کلید، هر کسی می تواند پیغام محرمانه را ببیند. به همین جهت در رمزنگاری DES معمولاً عمر کلید به اندازه عمر تراکنش است.

 

  • کلید رمزنگاری : کلید DES یک توالی هشت بایتی است که هر بایت شامل یک کلید هفت بیتی و یک بیت توازن است. در حین رمزنگاری، الگوریتم DES متن اصلی را به بلوک های 64 بیتی می شکند. این الگوریتم در هر زمان بر روی یک بلوک کار می کند و آن را از نصف شکسته و کاراکتر به کاراکتر رمزنگاری می کند. کاراکترها 16 بار تحت نظارت کلید تغییر شکل پیدا کرده و در نهایت یک متن رمزنگاری شده 64 بیتی تولید می شود. کلید حاوی 56 بیت معنادار و هشت بیت توازن است.

http://s3.picofile.com/file/7593566769/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85_des_png.jpg




رمز نگاری روش نامتقارن Asymmetric

 

الگوریتم‌های رمزنگاری با کلید نامتقارن از کلیدهای مختلفی برای رمزنگاری و رمزگشایی استفاده می‌کنند. بسیاری از سیستمها اجازه می‌دهند که یکی از کلیدها کلید عمومی یا (public key) منتشر شود در حالی که دیگری کلید خصوصی یا (private key) توسط صاحبش حفظ می‌شود. فرستنده پیام، متن را با کلید عمومی گیرنده، کد می‌کند و گیرنده آن را با کلید اختصاصی خود رمزگشایی می‌کند. بعبارتی تنها با کلید خصوصی گیرنده می‌توان متن کد شده را به متن اولیه صحیح تبدیل کرد. یعنی حتی فرستنده نیز اگرچه از محتوای اصلی پیام مطلع است اما نمی ‌تواند از متن کدشده به متن اصلی دست یابد، بنابراین پیام کدشده برای هر گیرنده‌ای، به جز گیرنده مورد نظر فرستنده، بی ‌معنی خواهد بود.
معمول ترین سیستم نامتقارن به عنوان RSA شناخته می‌شود. (این حروف اول نام پدید آورندگان آن یعنی Rivest ،Shamir و Adlemen است) این الگوریتم در سال 1978 در دانشگاه MIT ایجاد شده است و تأیید هویت (روشی برای مطمئن شدن از هویت ارسال کننده پیغام) را به خوبی رمزنگاری انجام می‌دهد. الگوریتم RSA از دو کلید برای رمزنگاری استفاده می‌کند: کلید خصوصی و کلید عمومی. در الگوریتم مذکور تفاوتی بین توانایی عملیاتی کلید عمومی و خصوصی وجود ندارد و یک کلید می‌تواند هم به عنوان کلید خصوصی به کار رود و هم به عنوان کلید عمومی.کلیدهای RSA با استفاده از روش های ریاضی و با ترکیب اعداد اول تولید می‌شوند. بزرگترین عددها با ضرب اعداد کوچک به دست می آیند و این اعداد کوچک از لحاظ ریاضی به هم وابسته هستند و دانستن یکی از آن‌ها منجر به شناسایی دیگر اعداد اول به کار رفته در کلید می‌شود. این وضعیتی است که در استفاده از کلید های عمومی و خصوصی مورد نظر است. البته در صورتی که عدد خیلی بزرگ باشد، این کار به راحتی قابل انجام نیست و وضعیت های گمراه کننده بسیاری وجود دارند.

 

مقایسه رمزنگاری الگوریتم‌های متقارن ونامتقارن

 

بحثهای زیادی شده که کدام یک از این الگوریتم‌ها بهترند اما جواب مشخصی‌ ندارد. البته بررسی‌ هایی‌ روی این ‏سوال شده به طور مثال دونفر به نامهای Needham و Schroeder بعد از تحقیق به این نتیجه رسیدند که طول پیغامی‌ که با الگوریتم‌های متقارن ‏میتواند رمزنگاری شود از الگوریتم‌های نامتقارن کمتر است و با تحقیق به این نتیجه رسیدند که الگوریتم‌های ‏متقارن الگوریتم‌های بهینه تری هستند. اما وقتی‌ که بحث امنیت پیش می‌ آید الگوریتم‌های نامتقارن کارایی‌ بیشتری ‏دارند. به طور خلاصه می‌توان گفت که الگوریتم‌های متقارن دارای سرعت بالاتر و الگوریتم‌های نامتقارن دارای ‏امنیت بهتری هستند. در ضمن گاهی‌ از سیستم ترکیبی‌ از هر دو الگوریتم استفاده می‌کنند که به این الگوریتم‌ها الگوریتم ‏های ترکیبی‌ (hybrid) گفته می‌شود. اما اگر به طور دقیق تر به این دو نگاه کنیم آنگاه متوجه خواهیم شد که الگوریتم‌های نامتقارن و الگوریتم‌های ‏کلید متقارن دارای دو ماهیت کاملاً متفاوت هستند و کاربردهای متفاوتی‌ دارند به طور مثال در رمزنگاریهای ساده که ‏حجم داده‌ها بسیار زیاد است از الگوریتم متقارن استفاده می‌شود زیرا داده‌ها با سرعت بالاتری رمزنگاری و ‏رمزگشایی‌ می‌شوند. اما در پروتکل هایی‌ که در اینترنت استفاده می‌شود، برای رمز نگری کلید هایی‌ که نیاز به مدیریت ‏دارند از الگوریتم‌های نامتقارن استفاده می‌شود.

كلیدهای رمزنگاری


تکنیک‌های رمزنگاری پیچیده به راحتی از روش‌های جابه‌جایی یا جایگزینی استفاده نمی‌کنند. در عوض از یك كلید محرمانه برای كنترل یك توالی طولانی از جابه‌جایی و جایگزینی‌های پیچیده استفاده می‌کنند. كلیدهای رمزنگاری و الگوریتم‌های رمزنگاری با یكدیگر همكاری می‌کنند تا یك متن اولیه را به یك متن رمزی تبدیل كنند. در اغلب موارد الگوریتم رمزنگاری ثابت و شناخته شده است و این كلید رمزنگاری است كه یك نسخه یكتا از اطلاعات رمزنگاری شده تولید می‌کند. در زیر انواع كلیدهای رمزنگاری توضیح داده شده‌اند.




كلیدهای محرمانه


سیستم‌های كلید محرمانه تنها از یك كلید برای رمزنگاری و رمزگشایی اطلاعات استفاده می‌کنند. در این شیوه رمزنگاری، لازم است كه هر جفت فرستنده و گیرنده اطلاعات كلید جداگانه‌ای را برای رمزنگاری دارا باشند و حفظ كلید به صورت محرمانه بسیار اهمیت دارد. امنیت این روش در گرو حفظ امنیت كلید است. الگوریتم Data Encryption Standard) DES) یك نمونه از الگوریتم‌های كلید محرمانه است. چون فرض بر این است كه الگوریتم شناخته شده و معلوم است، امن بودن انتقال و ذخیره كلید بسیار مهم است. کارت‌های هوشمند معمولاً برای ذخیره كلیدهای محرمانه استفاده می‌شوند. در این حالت تضمین اینكه قلمرو كلید محدود است، مهم است: باید همیشه فرض كنیم كه یك كارت ممكن است توسط افراد غیرمجاز با موفقیت تحلیل گردد و به این ترتیب كل سیستم در مخاطره قرار گیرد. در شكل زیر یك عملیات انتقال اطلاعات با استفاده از كلید محرمانه نشان داده شده است كه در آن یك كاربر بانك، اطلاعات را با استفاده از كلید محرمانه رمزنگاری می‌کند و برای كارمند بانك ارسال می‌کند. وی نیز اطلاعات را با كلید مشابهی رمزگشایی می‌کند.




كلیدهای عمومی و خصوصی


سیستم‌هایی كه از این نوع كلیدها استفاده می‌کنند، نامتقارن خوانده شده و در واقع دارای یك زوج كلید هستند: یك كلید عمومی و یك كلید خصوصی. در این سیستم هر كاربر دارای دو كلید عمومی و خصوصی است كه لازم است كلید خصوصی محرمانه نگهداری شود ولی كلید عمومی در اختیار همگان است. در اینجا كلید عمومی و خصوصی به یكدیگر از لحاظ ریاضی وابسته هستند. كاربر می‌تواند با استفاده از كلید خصوصی كه در اختیار دارد پیغام خود را رمزنگاری كرده و گیرنده آن را با استفاده از كلید عمومی رمزگشایی كند یا بالعكس. امتیاز اصلی و مهم سیستم‌های كلید نامتقارن این است كه آن‌ها اجازه می‌دهند كه یك كلید (كلید خصوصی) با امنیت بسیار بالا توسط صاحب آن نگهداری شود در حالیكه كلید دیگر (كلید عمومی) می‌تواند منتشر شود. كلیدهای عمومی می‌توانند همراه پیام‌ها فرستاده شوند یا در فهرست‌ها لیست شوند. شروط و قوانینی برای كلیدهای عمومی در طرح فهرست پیام‌رسانی الكترونیكی ITU X500. وجود دارد، و از یك شخص به شخص بعدی داده شوند. مكانیسم توزیع كلیدهای عمومی می‌تواند رسمی (یك مركز توزیع كلید) یا غیر رسمی باشد. یكی از نكات منفی سیستم‌های رمزنگاری با كلید عمومی توسط سناریوی زیر توضیح داده شده است. فرض كنید كاربر پیغام خود را با استفاده از كلید خصوصی رمزنگاری می‌کند. دریافت كننده پیغام می‌تواند از هویت فرستنده پیغام مطمئن باشد یعنی تأیید هویت به خوبی انجام می‌شود ولی مشكل اینست كه هر كسی كه دسترسی به كلید عمومی دارد می‌تواند اطلاعات مذكور را رمزگشایی كند. لذا این روش محرمانگی اطلاعات را حفظ نمی‌کند. از طرف دیگر در صورتی كه اطلاعات توسط كلید عمومی رمزنگاری شوند، از آنجایی كه تنها دارنده كلید خصوصی قادر به رمزگشایی آن است لذا محرمانگی آن حفظ می‌شود ولی مشكل در اینست كه چون هر كسی می‌تواند به كلید عمومی دسترسی داشته باشد تأیید هویت با مشكل روبرو می‌شود.



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





كلیدهای اصلی و كلیدهای مشتق شده (Master keys and derived keys)


یكی از ایراداتی كه به روش‌های پیشین وارد است، تعداد زیاد كلیدها است كه طبیعتاً منجر به سخت‌تر شدن مدیریت كلید می‌شود. یك روش برای كاستن از تعداد كلیدهایی كه باید منتقل و ذخیره شوند، مشتق گرفتن از آن‌ها در زمان مورد نیاز است. در یك برنامه اشتقاق كلید، یك كلید اصلی همراه با چند پارامتر مجزا برای محاسبه كلید مشتق ‌شده استفاده می‌شود كه بعداً برای رمزنگاری استفاده می‌گردد. برای مثال، اگر یك صادر كننده با تعداد زیادی كارت سروكار دارد، می‌تواند برای هر كارت، با استفاده از كلید اصلی، شماره كارت را رمز كند و به این ترتیب كلید مشتق شده حاصل می‌شود و به آن كارت اختصاص داده می‌شود. شكل دیگری از كلیدهای مشتق شده با استفاده از tokenها به دست می‌آیند كه tokenها محاسبه‌گرهای الكترونیكی با عملكردهای مخصوص هستند. ورودی آن‌ها ممكن است، یك مقدار گرفته شده از سیستم مركزی، یك PIN وارد شده توسط كاربر و یا تاریخ و زمان باشد. خود token شامل الگوریتم و یك كلید اصلی است. چنین tokenهایی اغلب برای دسترسی به سیستم‌های كامپیوتری امن استفاده می‌شوند.




كلیدهای رمز كننده‌ كلید (Key-encrypting keys)


از آنجا كه ارسال كلید یك نقطه ضعف از نظر امنیتی در سیستم‌ها بشمار می‌رود، رمز کردن كلیدها هنگام ارسال و ذخیره آن‌ها به شکل رمز شده منطقی به نظر می‌رسد. كلیدهای رمز کننده كلید هرگز به خارج از یك سیستم كامپیوتری (یا كارت هوشمند) ارسال نمی‌شوند و بنابراین می‌توانند آسان‌تر محافظت شوند. اغلب برای تبادل كلیدها الگوریتم متفاوتی از آنچه كه برای رمز کردن پیام‌ها استفاده می‌شود، مورد استفاده قرار می‌گیرد. از مفهوم دامنه كلید (key domain) برای محدود كردن میدان كلیدها و محافظت كردن از كلیدها در دامنه‌شان استفاده می‌كنیم. معمولاً یك دامنه، یك سیستم كامپیوتری خواهد بود كه می‌تواند به صورت فیزیكی و منطقی محافظت گردد. كلیدهای استفاده شده در یك دامنه توسط یك كلید رمز کننده كلید محلی ذخیره می‌شوند. هنگامی كه كلیدها می‌خواهند به یك سیستم كامپیوتری دیگر فرستاده شوند، رمزگشایی و تحت یك كلید جدید رمز می‌شوند كه اغلب به عنوان كلید كنترل ناحیه (zone control key) شناخته می‌شوند. با دریافت این كلیدها در طرف دیگر، تحت كلید محلی سیستم جدید رمز می‌شوند. بنابراین كلیدهایی كه در دامنه‌های یك ناحیه قرار دارند از دامنه‌ای به دامنه دیگر به صورتی كه بیان گردید منتقل می‌شوند.




كلیدهای نشست (Session keys)


برای محدود كردن مدت زمانی كه كلیدها معتبر هستند، اغلب یك كلید جدید برای هر نشست یا هر تراكنش تولید می‌شود. این كلید ممكن است یك عدد تصادفی تولید شده توسط ترمینالی باشد كه در مرحله تصدیق كارت قرار دارد. اگر كارت قادر به رمزگشایی روش كلید عمومی باشد، یعنی كلید نشست می‌تواند با استفاده از كلید عمومی كارت رمز شود. بخشی از تراكنش كه در آن كلید منتقل می‌شود اغلب در مقایسه با بقیه تراكنش کوتاه‌تر است؛ بنابراین بار اضافی این بخش نسبت به كل تراكنش قابل صرف نظر است. چنانچه بقیه تراكنش به سبب استفاده از كلید متقارن (محرمانه) با بالاسری كمتری رمز شود، زمان پردازش برای فاز تایید هویت و انتقال كلید قابل پذیرش است (توضیح اینكه روش‌های رمز متقارن از نامتقارن به مراتب سریع‌تر هستند بنابراین می‌توان ابتدا یك كلید متقارن را با استفاده از روش نامتقارن انتقال داد و سپس از آن كلید متقارن برای انجام بقیه تراكنش استفاده كرد). شكل خاصی از كلید نشست، سیستم انتقال كلید است كه در برخی سیستم‌های پرداخت الكترونیك و مبادله دیتای الكترونیك استفاده می‌شود. بدین صورت كه در پایان هر تراكنش، یك كلید جدید منتقل می‌شود و این كلید برای تراكنش بعدی مورد استفاده قرار می‌گیرد.




رمزنگاری مبدأ به مقصد و رمزنگاری انتقال


دو سطح ارتباطی پایه وجود دارد كه رمزنگاری می‌تواند در آن اجرا شود. رمزنگاری بر اساس این سطوح به دو دسته رمزنگاری مبدأ به مقصد و رمزنگاری انتقال تقسیم می‌شود. در رمزنگاری مبدأ به مقصد یا end-to-end كه گاهی اوقات به آن رمزنگاری آفلاین هم گفته می‌شود، پیغام‌ها در مبدأ و در زمان ارسال رمزنگاری شده و سپس در مقصد رمزگشایی می‌شوند. در این سطح رمزنگاری نیازی نیست كه شبكه از رمزی بودن پیغام آگاهی داشته باشد. گاهی اوقات این نوع رمزنگاری می‌تواند توسط كاربر مورد انتخاب قرار بگیرد. پیغام در تمام طول انتقال رمز شده باقی می‌ماند، از ابتدا تا انتها. فایده این روش در این است كه احتیاجی نیست در تمام گام‌های مسیر، تمام نقاط امن باشند. این اصلی است كه امروزه در سیستم‌های شناخته شده رمزنگاری پیغام به شیوه تونل مانند SSL و TLS مورد استفاده قرار می‌گیرد. در رمزنگاری انتقال یا link encryption كه گاهی به آن رمزنگاری آنلاین هم گفته می‌شود، مانند روش قبل پیغام در زمان ارسال رمزنگاری می‌شود ولی هر بار كه به یك گره ارتباطی شبكه می‌رسد، رمزگشایی شده و دوباره رمزنگاری می‌شود. در این روش رمزنگاری از دید كاربر پنهان است و به عنوان بخشی از پروسه انتقال اعمال می‌شود. برای هر دو روش نقاط مثبت و منفی وجود دارد كه در زیر آورده شده است.


نقاط مثبت روش مبدأ به مقصد


قابلیت انعطاف بیشتری دارد. كاربر می‌تواند تنها اطلاعات مورد نظر خویش را رمزنگاری كند و هر كاربر نیز می‌تواند كلید جداگانه‌ای داشته باشد.

  • در این روش انتشار كلید و مدیریت آن ساده‌تر است.
  • با استفاده از این روش، اطلاعات از ابتدا تا انتها و در كل شبكه محافظت شده باقی می‌مانند.
  • روشی كارآمدتر است زیرا لازم نیست شبكه هیچ‌گونه تسهیلات خاص رمزنگاری را دارا باشد.

 


نقاط منفی روش مبدأ به مقصد


ممكن است نیاز به بررسی برخی از اطلاعات مانند اطلاعات سر آیند و یا مسیریابی به صورت رمزنگاری نشده باشد.

  • هر سیستمی نیازمند اجرای نوع یكسانی از رمزنگاری است.
  • این روش تنها محتویات پیغام را امن نگاه می‌دارد ولی نمی‌تواند این واقعیت را مخفی كند كه چنین پیغامی فرستاده شده است.


نقاط مثبت روش انتقال

  • راحت‌تر است زیرا لازم نیست كاربر هیچ كاری انجام دهد.
  • استفاده از آن، در شبکه‌ای كه گره‌های زیادی دارد راحت‌تر است.
  • در صورتی كه یكی از گره‌ها مورد سوء استفاده قرار گیرد تمام شبكه لو نمی‌رود زیرا هر جفت از گره‌ها از كلید جداگانه‌ای استفاده می‌کنند.
  • در این روش تمام اطلاعات، حتی اطلاعات سرآیند و مسیریابی رمزنگاری می‌شوند.


نقاط منفی روش انتقال

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

منابع

 

 

و سايت شخصي محمد زند :

  • http://xand.ir
  • http://irexperts.ir
  • Normal 0 false false false false EN-US X-NONE AR-SA

    باسمه تعالي

     

     

    الگوریتم رمز نگاری متقارن

    DES

     

     

    زير نظر استاد : دكتر معيني

     

    دانشجو : محمد زند خانه شهري

    شماره دانشجويي : 9161118

    موسسه غير انتفاعي نور طوبي

     

     

     

     

     

     

    مقطع كارشناسي ارشد

    بهار 1392

    06/06/2013

    مقدمه

    الگوریتم 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

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

    http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/DES-main-network.png/250px-DES-main-network.pngدر 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

     

    http://upload.wikimedia.org/wikipedia/commons/thumb/a/a3/DES-f-function.png/250px-DES-f-function.png

    تابع F

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

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

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

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

     

     

     

     

     

     

    الگوریتم Key Schedule

     

    http://upload.wikimedia.org/wikipedia/commons/thumb/0/06/DES-key-schedule.png/250px-DES-key-schedule.pngتولید کلید مراحل مختلف

    از این الگوریتم برای تولید زیر کلیدها استفاده می‌شود. درابتدا ۵۶ بیت از ۶۴ بیت کلید توسط انتخاب جایگشت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 استفاده می‌کند به اجرا در بیاورد.

    منابع

    • خدیجه محمدزاده، دانشگاه صنعتی امیرکبیر، استاد راهنما: دکتر اکبری
    • و. حواری نسب، م. ریحانی تبار، م. سلماسی زاده، ج. مهاجری، "مقایسه الگوریتم‌های رتبه اول واخر در گزینش نهایی AES " در مجموعه مقالات اولین کنفرانس رمز ایران، ص266- 253
    • ی. بوخمان، مقدمه‌ای بر رمزنگاری، ترجمه م. اسماعیلی، انتشارات دانشگاه صنعتی اصفهان، ۱۳۸۲
    • پ. میری، طراحی و شبیه سازی و سنتز الگوریتم رمزنگاری AES به صورت اسنکرون"، پایان نامه کارشناسی، دانشکده مهندسی کامپیوتر، دانشگاه صنعتی امیرکبیر، 1385
    • http://www.itl.nist.gov
    • http://www.nist.gov
    • http://citreseer.ist.psu.edu
    • http://msdn2.microsoft.com
    • http://Searchsecurity.techtarget.com

    و سايت شخصي محمد زند :

 

25 نظر

  • محمد زند / 10 صبح / 5 دی 1395, / جواب

    تست

    • محمد زند / 10 صبح / 5 دی 1395, / جواب

      تست

نظر شما در مورد این مطلب چیست؟

به صفحه اول خوش آمدید