نمایی از عملکرد تابع F:
روش استخراج کليدهای فرعی از کليد اصلی:
استخراج کلیدهای فرعی (48 بیتی) از کلید اصلی (56 بیتی) روند ساده و سریعی دارد ولی روال ابهام آلود وسردرگم کننده آن به استحکام DES کمک شایانی کرده است.
روال تولید کلیدهای فرعی برگشت پذیر نیست (اصطلاحاً یکطرفه است) بدین معنا که با داشتن یک یا چند کلید فرعی نمی توان بصورت سر راست و مستقیم شاه کلید را پیدا کرد.
برای استخراج 16 کلید فرعی، روال زیر شانزده بار تکرار می شود:
1) در اولین گام ،بیتهای کلید اصلی جایگشت داده می شوند. این جایگشت بیتی که اختصاراً PC-I = Permuted Choice one نامیده شده طبق جدول زیر انجام می گیرد.
2) در دومین گام، 56 بیت خروجی مرحله قبل در قالب دو نیمه 28بیتی با دو رجیستر با قابلیت شیفت چرخشی به سمت چپ وارد می شوند. تعداد شیفت ها در هر یک از مراحل 16 گانه تفاوت دارد و به شماره دور بستگی دارد. تعداد شيفت طبق جدول زير است:
3) در سومین گام از تولید کلید فرعی، خروجی شیفت یافته مرحله قبل، در قالب یک رشته بیتی 56 بیتی واحد ،مجدداً تحت جایگشت بیتی قرار می گیرد. این جایگشت بیتی که اختصاراً PC-2 Permuted Choice Two نامیده شده طبق جدول زیر انجام می گیرد. دقت کنید که در این جایگشت برخی از بیتهای ورودی در خروجی حضور ندارند زیرا باید از مجموع 56 بیت 48 بیت به عنوان کلید دور انتخاب شود.
برای تولید مابقی کلیدها همین روال از گام دوم تکرار می شود.
DESرمزگشایی:
یکی از زیبایی های DES آن است که عمل رمزگشایی داده ها نیاز به الگوریتم مجزا ندارد؛ هر گاه در الگوریتم رمز نگاری ترتیب کلیدها واژگون شود، رمزگشایی صورت خواهد گرفت به عبارت دیگر اگر در الگوريتم رمزنگاری بيت ها در کليدها را واژگون کنيم و بلوک رمز شده را به عنوان ورودی به الگوريتم اعمال کنيم، رمزگشايي صورت می گيرد.
رمز نگاری و رمز گشایی DES فرآیندی مستقل از جزئیات درونی تابع است. بدین معنا که می توانید در الگوریتم DES جزئیات تابع F را طبق میل خود تغییر بدهید و الگوریتم رمزنگاری و رمز گشایی مخصوص به خود را ایجاد کنید. روشن است که تابع F نقش بسیار پر اهمیتی در استحکام الگوریتم رمز نگاری ایفاء می کنید. این تابع باید بشدت غیر خطی و گمراه کننده باشد.
DESبررسی استحکام:
از زمانی که DES با پشتیبانی آژانس امنیت ملی آمریکا معرفی و به عنوان استاندارد فدرال توصیه شد، مناقشات و شایعات گسترده ای پیرامون آن در گرفت و شبهات زیادی به استحکام و امنیت آن وارد آمد.
در سال 1977 دو پروژه رمزنگاری از دانشگاه استنفورد به نام های «دیفی» و «هلمن»، طرح ماشینی برای شکستن رمز DES ارائه کردند و تخمین زدند این ماشین با هزینه ای حدود 20 میلیون دلار قابل ساخت است. این ماشین می توانست با داشتن یک قطعه کوچک از متن اصلی و کل متن رمز شده، کلید رمز را بین 256 حالت مختلف، در کمتر از یک روز پیدا کند. آن سالها کسی چنین پولی را نداد و چنین ماشینی هرگز ساخته نشد تا شایعه ضعف DES باقی بماند! حدود 20 سال بعد با ارزانتر شدن تکنولوژی و فراگیر شدن اینترنتت، رمز شکنی DES (به روش جستجوی کلید) میسر شد. با ارزان تر شدن پردازنده ها، ماشین های چند پردازنده متعددی برای شکستن DES طراحی و گاه ساخته شدند.
به هر حال شایعات و اتهامات هیچ گاه از دامان DES پاک نشدند و تلاش IBM نیز برای قدرتمندتر کردن آن با معرفی DES ـ 3 کمک چندانی به محبوبیت آن نکرد و سرانجام با معرفی روش AES تیر خلاص به DES زده شد.
طبیعت الگوریتم DES:
پيچيدگی DES از «به شدت غير خطي» بودن جداول جانشينی و غير قابل بازگشت بودن تابع F در صورت در اختيار نداشتن کليد k ، ناشی شده است.
آنچه که در خصوص معيارهای انتخاب S-Box های هشت گانه آشکار شده، آن است که:
1) خطی نبودن رابطه بين بيت های خروجی
2) هر سطر از جدول نگاشت S-Box ها تمام 16 حالت مختلف 0 تا 15 را در بر می گيرد تا فضای حالت خروجی دقيقا 16 باشد.
3) هرگاه دو ورودی 6 بيتی از يک S-Box واحد ، تنها در يک بيت تفاوت داشته باشد، خروجی آنها حداقل در دو بيت اختلاف دارد.
4) هرگاه دو ورودی به S-Box واحد در دو بيت ابتدايي اختلاف داشته باشند و در دو بيت انتهايي مشابه باشند، خروجی يکسان حاصل نمی شود.
شرایط فوق معیارهایی هستند که رمز شکن ها را متقاعد می سازد که S-BOX ها به شدت غیر خطی هستند و این الگوریتم از سطح گمراه کنندگی بالایی برخوردار است.
DES ـ 3
الگوریتم رمزنگاری DES ـ 3 (Triple DES)، روش مستقل و جدیدی به شمار نمی آید بلکه حاصل تلاش IBM برای افزایش موثر طول کلید و ایجاد اطمینان بیشتراست. در الگوریتم DES- 3 داده ها به کمک دو کلید 56 بیتی سه بار رمزنگاری می شوند. بنابراین فضای حالت کلید از 256 به112 افزایش می یابد که طول قابل قبولی است و دست هیچ یک از ماشینهای رمز شکن به چنین فضای بیکرانی نخواهد رسید.
در روش DES ـ 3 بلوک 64 بیتی ورودی ابتدا با کلید K1 رمزنگاری می شود. سپس حاصل این مرحله با کلید K2 رمزگشایی می شود. (رمزگشایی با کلید K2 هیچ تفاوتی با رمزنگاری ندارد.) سپس بار دیگر حاصل با کلید K1 رمز نگاری خواهد شد تا نتیجه رمز شده در خروجی بدست آید.
در اينجا از دو مرحله رمزنگاری و يک مرحله رمزگشايي برای رمزنگاری استفاده می شود. دليل رمزگشايي در مرحله دوم آن است که هرگاه کليدهای K1 و K2 مثل هم انتخاب شوند، دو بلوک اول تاثير يکديگر را خنثی می کنند و 3-DES به DES تبديل خواهد شد.