نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی

رمزگذاری با استفاده از استاندارد des. طرح رمزگذاری DES

که ANSI آن را DEA (الگوریتم رمزگذاری داده ها) و ISO - DEA-1 می نامد، طی 20 سال به یک استاندارد جهانی تبدیل شده است. در طول سالیان عمر خود، در برابر هجوم حملات مختلف مقاومت کرده و تحت محدودیت‌های خاصی، همچنان از نظر رمزنگاری امن تلقی می‌شود.

DES یک رمز بلاک است که داده ها را در بلوک های 64 بیتی رمزگذاری می کند. در یک انتهای الگوریتم، یک بلوک 64 بیتی از متن ساده وارد می شود و در انتهای دیگر، یک بلوک 64 بیتی از متن رمزی خروجی می شود. DES است الگوریتم متقارن: از همان الگوریتم و کلید برای رمزگذاری و رمزگشایی استفاده می شود (به جز تفاوت های جزئی در استفاده از کلید). طول کلید 56 بیت است. (کلید معمولاً به عنوان یک عدد 64 بیتی نشان داده می شود، اما هر هشتمین بیت برای برابری استفاده می شود و نادیده گرفته می شود. بیت های برابری کوچکترین هستند. بیت های مهمکلید بایت.) کلید، که می تواند هر عدد 56 بیتی باشد، می تواند در هر زمان تغییر کند.

مقاومت کریپتو به طور کامل توسط کلید تعیین می شود. بلوک اصلی ساختمان DES ترکیبی از جایگشت و جایگشت است. DES از 16 چرخه تشکیل شده است.

نمای کلی چرخه تبدیل:

اگر L i و R i دو نیمه چپ و راست هستند که در نتیجه تکرار i-ام به دست می آیند، K i یک کلید 48 بیتی برای چرخه i است و f تابعی است که همه جانشین ها، جایگشت ها و XOR را با یک انجام می دهد. کلید، سپس یک چرخه تبدیل را می توان به صورت زیر در نظر گرفت:

با در نظر گرفتن جایگزینی F i (*) و جایگشت T (*)، چرخه تبدیل را می توان همانطور که در شکل انجام می شود نشان داد.

می توان دید که هر چرخه DES یک رمز ترکیبی با دو تبدیل متوالی است - جایگزینی F i (*) و جایگشت T (*) (به جز آخرین چرخه شانزدهم که جایگشت حذف شده است).

تعویض:

(L i، R i) = (R i -1، L i -1) ⊕ f (R i -1، K)

از آن زمان یک تحول است

F i (F i (L i -1، Ri -1)) = F i (R i -1، L i -1) ⊕ (f (R i -1، K i))) = (R i - 1، L i -1 ⊕ (f (Ri -1، K i)) ⊕ (f (Ri -1، K i))) = (L i -1، Ri -1)

و تعویض

T (L i ', R i ') = (R i ', L i ')،

از آنجا که

T (T (L i ', R i')) = T (R i ', L i ') = L i ', R i'

اگر جایگشت های اولیه و نهایی را به صورت (IP) و (IP) - 1 نشان دهیم، تبدیل مستقیم DES (رمزگذاری) تابع را پیاده سازی می کند:

DES = (IP) F 1 TF 2 T… F 15 TF 16 (IP) - 1,

و تبدیل معکوس DES (رمزگشایی) تابع را پیاده سازی می کند:

DES - 1 = (IP) -1 F 16 TF 15 T… F 2 TF 1 (IP).

بنابراین، DES یک رمز Feistel است و برای اجرا طراحی شده است دارایی مفید: از همین الگوریتم برای رمزگذاری و رمزگشایی استفاده می شود. تنها تفاوت این است که کلیدها باید در آن استفاده شوند به صورت برعکس.


یعنی اگر از کلیدهای K 1، K 2، K 3، ...، K 16 برای رمزگذاری استفاده می شد، کلیدهای رمزگشایی K 16، K 15، K 14، ...، K 1 خواهند بود. الگوریتم فقط از محاسبات اعداد 64 بیتی استاندارد و عملیات منطقی، بنابراین پیاده سازی آن در سخت افزار آسان است.

DES بر روی یک بلوک 64 بیتی از متن ساده کار می کند. پس از جایگشت اولیه، بلوک به دو نیمه راست و چپ هر کدام 32 بیت تقسیم می شود. سپس 16 تبدیل انجام می شود (تابع f) که در آن داده ها با کلید ترکیب می شوند. پس از چرخه شانزدهم، نیمه راست و چپ با هم ترکیب می شوند و الگوریتم با جایگشت نهایی (معکوس نسبت به اصلی) به پایان می رسد. در هر چرخه (شکل را ببینید)، بیت های کلید جابجا می شوند و سپس 48 بیت از 56 بیت کلید انتخاب می شوند. نیمه سمت راست داده ها با یک جایگشت گسترده به 48 بیت افزایش می یابد، XOR با 48 بیت کلید جابجا شده و جابجا شده، از طریق 8 جعبه S عبور می کند تا 32 بیت جدید تشکیل دهد و دوباره مرتب می شود. این چهار عمل توسط تابع f انجام می شود.

سپس نتیجه تابع f با استفاده از XOR دیگر با نیمه چپ الحاق می شود. در نتیجه این اقدامات، نیمه راست جدید ظاهر می شود و نیمه راست قدیمی به نیمه چپ جدید تبدیل می شود. این مراحل 16 بار تکرار می شود و 16 دور DES را تشکیل می دهد.

استاندارد روسیه - GOST 28147-89

GOST 28147-89 یک رمز بلاک با یک کلید 256 بیتی و 32 چرخه تبدیل است که در بلوک های 64 بیتی کار می کند. الگوریتم رمزنگاری نیز استفاده می کند کلید اضافیکه در زیر مورد بحث قرار گرفته است. برای رمزگذاری متن سادهابتدا به دو نیمه چپ و راست L و R تقسیم می شود. در چرخه i، از کلید فرعی K i استفاده می شود:

L i = R i -1،
R i = L i -1 ⊕ (f (R i -1، K i)).

تابع f به صورت زیر پیاده سازی می شود. ابتدا، نیمه سمت راست و کلید فرعی i-امین مدول 2 32 اضافه می شوند. نتیجه به هشت دنباله 4 بیتی تقسیم می شود که هر کدام به ورودی S-box خود می روند. GOST از هشت S-box مختلف استفاده می کند، 4 بیت اول به S-box اول، 4 بیت دوم به S-box دوم و ... هر S-box جایگشتی از اعداد از 0 تا 15 است. به عنوان مثال، یک S-box ممکن است به شکل زیر باشد: 7،10،2،4،15،9،0،3،6،12،5،13،1،8،11. در این حالت، اگر ورودی S-box 0 باشد، خروجی آن 7 است. اگر ورودی 1، خروجی 10 و غیره باشد. هر هشت S-box متفاوت هستند، در واقع مواد کلید اضافی هستند. خروجی‌های هر هشت S-box به یک کلمه 32 بیتی متصل می‌شوند، سپس کل کلمه به صورت چرخه‌ای به سمت چپ 11 بیت جابه‌جا می‌شود. در نهایت، نتیجه با نیمه چپ XOR می شود تا نیمه راست جدید ایجاد شود و نیمه راست به نیمه چپ جدید تبدیل می شود. برای تولید کلیدهای فرعی، کلید 256 بیتی اصلی به هشت بلوک 32 بیتی تقسیم می شود: k 1، k 2، ...، k 8. هر چرخه از کلید فرعی خود استفاده می کند. رمزگشایی به همان روش رمزگذاری انجام می شود، اما ترتیب کلیدهای فرعی k i معکوس است. استاندارد نحوه تولید S-box ها را تعریف نمی کند.

تفاوت های کلیدی بین DES و GOST

تفاوت اصلی بین DES و GOST به شرح زیر است:

  • DES از یک روش پیچیده برای تولید کلیدهای فرعی از کلیدها استفاده می کند. در GOST، این روش بسیار ساده است.
  • در DES یک کلید 56 بیتی و در GOST یک کلید 256 بیتی است. اگر جایگشت های مخفی جعبه های S را اضافه کنیم، مقدار کل اطلاعات مخفی GOST تقریباً 610 بیت خواهد بود.
  • S-box های DES دارای ورودی و خروجی 6 بیتی و خروجی های GOST S دارای ورودی و خروجی های 4 بیتی هستند. هشت S-box در هر دو الگوریتم استفاده می شود، اما جعبه S GOST برابر با یک چهارم جعبه S DES است.
  • DES از یک جایگشت نامنظم به نام P-box استفاده می کند و GOST از یک تغییر دایره ای 11 بیتی به چپ استفاده می کند.
  • DES دارای 16 چرخه و GOST - 32 است.

حمله قدرت به GOST کاملاً ناامید کننده است. GOST از یک کلید 256 بیتی استفاده می کند و اگر S-box های مخفی در نظر گرفته شوند، طول کلید حتی بیشتر می شود. به نظر می رسد که GOST نسبت به DES برای تجزیه و تحلیل دیفرانسیل و خطی قوی تر است. اگرچه جعبه‌های S تصادفی GOST، با مقداری انتخاب، استحکام رمزنگاری بالایی را در مقایسه با جعبه‌های S ثابت DES تضمین نمی‌کنند، محرمانه بودن آن‌ها مقاومت GOST را در برابر تحلیل‌های دیجیتالی و خطی افزایش می‌دهد. علاوه بر این، اثربخشی این روش‌های رمزنگاری به تعداد چرخه‌های تبدیل بستگی دارد - هر چه چرخه‌ها بیشتر باشد، تحلیل رمز دشوارتر است. GOST دو برابر چرخه های DES استفاده می کند، که احتمالاً منجر به ناسازگاری تحلیل رمزنگاری دیفرانسیل و خطی می شود.

GOST از جایگشت پسوندی که در DES وجود دارد استفاده نمی کند. حذف این جایگشت از DES به دلیل کاهش اثرات بهمن، آن را ضعیف می کند. منطقی است که فرض کنیم عدم وجود چنین عملیاتی در GOST بر قدرت رمزنگاری آن تأثیر منفی می گذارد. از نقطه نظر قدرت رمزنگاری، عملیات جمع حسابی مورد استفاده در GOST بدتر از عملیات XOR در DES نیست.

به نظر می رسد تفاوت اصلی استفاده از تغییر چرخه ای به جای جایگشت در GOST باشد. جایگشت DES اثر بهمنی را افزایش می دهد. در GOST، تغییر در یک بیت ورودی بر یک بلوک S از یک چرخه تبدیل تأثیر می گذارد، که سپس بر دو بلوک S چرخه بعدی، سپس سه بلوک از چرخه بعدی و غیره تأثیر می گذارد. قبل از اینکه تغییر یک بیت ورودی بر هر بیت از نتیجه تأثیر بگذارد، هشت چرخه طول می کشد. در DES فقط پنج چرخه طول می کشد. با این حال، GOST شامل 32 چرخه و DES فقط 16 چرخه است.

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

وروبیوا ای.، لوکیانوا آ.

بیش از 30 سال از تصویب DES به عنوان استاندارد رمزگذاری ایالات متحده می گذرد. DES الگوریتم رمزگذاری با غنی ترین و جالب ترین تاریخ است.

تاریخچه ایجاد الگوریتم

یکی از مشهورترین رمزنگاران جهان به نام بروس اشنایر در کتاب معروف خود "رمزنگاری کاربردی" مشکلات کاربران ابزارهای امنیت اطلاعات در اوایل دهه 70 را تشریح کرد. قرن بیستم (به طور طبیعی می آیددرباره کاربران آن سوی «پرده آهنین»):

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

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

این مشکل توسط اداره ملی استانداردهای ایالات متحده (NBS) بررسی شده است. در نتیجه، در سال 1973، اولین مسابقه آزاد برای استاندارد رمزگذاری اعلام شد. NBS مایل بود الگوریتم‌های نامزدی را بررسی کند که معیارهای زیر را برای انتخاب استاندارد داشته باشند:

الگوریتم باید از نظر رمزنگاری قوی باشد.

الگوریتم باید سریع باشد.

ساختار الگوریتم باید واضح و روشن باشد.

قدرت رمزگذاری باید فقط به کلید بستگی داشته باشد؛ خود الگوریتم نباید مخفی باشد.

الگوریتم باید به راحتی برای اهداف مختلف قابل اجرا باشد.

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

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

در واقع، تنها یک الگوریتم نامزد وجود داشت: آن الگوریتم رمزگذاری لوسیفر بود که توسط CMM توسعه یافت. (به بخش 3.31 مراجعه کنید).به مدت دو سال، الگوریتم اصلاح شد:

ابتدا، NBS، همراه با آژانس امنیت ملی ایالات متحده (NSA، NSA)، تجزیه و تحلیل کاملی از الگوریتم انجام دادند که منجر به بازسازی بسیار مهم آن شد.

ثانیاً نظرات و انتقادات کلیه سازمانها و افراد ذینفع جهت بررسی پذیرفته شد.

در نتیجه تلاش مشترک بین IBM، NBS و NSA، DES در ژانویه 1977 به عنوان استاندارد ایالات متحده منتشر شد. آخرین نسخهاین استاندارد - در سند) برای الگوریتم رمزگذاری داده ها (به جز اطلاعات با درجه محرمانه بالا). الگوریتم DES توسط YM ثبت اختراع شد، اما NBS در واقع یک مجوز رایگان و نامحدود برای استفاده دریافت کرد. این الگوریتم... نام جایگزین، اما کمتر مورد استفاده برای الگوریتم، DEA (الگوریتم رمزگذاری داده ها) است.

ویژگی های اصلی و ساختار الگوریتم

DES اطلاعات را در بلوک های 64 بیتی با استفاده از یک کلید رمزگذاری 64 بیتی که فقط از 56 بیت استفاده می کند، رمزگذاری می کند (رویه گسترش کلید به طور مفصل در زیر توضیح داده شده است).

رمزگذاری اطلاعات به شرح زیر انجام می شود (شکل 3.56):

1. بالای یک بلوک داده 64 بیتی، یک جایگشت اولیه مطابق جدول انجام می شود. 3.16.

جدول 3.16

جدول به صورت زیر تفسیر می شود: مقدار بیت ورودی 58 (از این پس، همه بیت ها از چپ به راست شماره گذاری می شوند، از 1 شروع می شود) در بیت خروجی 1 قرار می گیرد، مقدار بیت 50 - در بیت 2 و غیره .



2. نتیجه عملیات قبلی به 2 بلوک فرعی 32 بیتی (با

برنج. 3.56 برچسب زده شده است A 0و B 0)، که 16 دور ساخته شده است

تحولات زیر:

همانطور که در بالا ذکر شد، DES تنها از 56 بیت از یک کلید رمزگذاری 64 بیتی استفاده می کند. هر 8 بیت کنار گذاشته می شود و به هیچ وجه در الگوریتم استفاده نمی شود و استفاده از بیت های باقی مانده از کلید رمزگذاری در پیاده سازی های الگوریتم DES به هیچ وجه توسط استاندارد محدود نمی شود. روش استخراج 56 بیت مهم از یک کلید 64 بیتی در شکل. 3.59 به عنوان E تعیین شده است. علاوه بر استخراج، این رویههمچنین جایگشت بیت های کلید را مطابق جدول انجام می دهد. 3.19 و 3.20.


جدول 3.19

جدول 3.20


در نتیجه جایگشت، دو مقدار 28 بیتی C و D تشکیل می شود. جدول 3.19 نمونه بیت های کلیدی را برای C، جدول تعریف می کند. 3.20 - برای دی

سپس 16 دور تبدیل انجام می شود که هر یک از آنها یکی از کلیدهای دور K t را می دهد. در هر دور از روند گسترش کلید، اقدامات زیر انجام می شود:

1. مقادیر فعلی C و دیچرخه ای به سمت چپ تغییر می کند عدد متغیربیت ها پ.برای دورهای 1، 2، 9 و 16 پ= 1، در دورهای باقی مانده یک شیفت چرخه ای 2 بیتی انجام می شود.

2.C و دیبه یک مقدار 56 بیتی الحاق می شوند، که یک جایگشت انقباضی CP به آن اعمال می شود، که منجر به یک کلید گرد 48 بیتی K می شود (. جایگشت انقباض مطابق جدول 3.21 انجام می شود.

جدول 3.21

هنگام رمزگشایی داده ها، می توانید از همان روش گسترش کلید استفاده کنید، اما کلیدهای گرد را به ترتیب معکوس اعمال کنید. گزینه دیگری وجود دارد: در هر دور روند گسترش کلید، به جای یک تغییر چرخه ای به چپ، یک جابجایی چرخه ای به راست با n بیت انجام دهید، که در آن rc '= 0 برای دور اول، و' = 1 برای دورهای 2، 9، 16 و n = 2 برای دور باقی مانده ... چنین رویه گسترش کلید بلافاصله کلیدهای گرد لازم برای رمزگشایی را می دهد.

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

  • آموزش

سلام% نام کاربری%!
بسیاری از مردم می دانند که استاندارد پیش فرض در این زمینه است رمزگذاری متقارن برای مدت طولانیالگوریتم DES در نظر گرفته شد. اولین حمله موفقیت آمیز به این الگوریتم غیرقابل کشتن در سال 1993 منتشر شد، 16 سال پس از پذیرش به عنوان یک استاندارد. روشی که نویسنده آن را تحلیل رمز خطی نامیده است، در حضور 247 جفت متن باز / رمزی، امکان شکستن کلید مخفی رمز DES را در 243 عملیات فراهم می کند.
در زیر برش، سعی می کنم نکات اصلی این حمله را خلاصه کنم.

رمزنگاری خطی

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

V مورد کلییک حمله مبتنی بر تحلیل رمزی خطی به شرایط زیر کاهش می یابد. مهاجم مالک است مقدار زیادجفت‌های متن رمزنگاری/clear با استفاده از یک کلید رمزگذاری K به دست آمده‌اند. هدف مهاجم بازیابی بخشی یا کامل کلید K است.

اول از همه، مهاجم رمز را بررسی می کند و به اصطلاح را پیدا می کند. آنالوگ آماری، یعنی معادله شکل زیر که با احتمال P ≠ 1/2 برای یک جفت متن دلخواه باز / بسته و یک کلید ثابت انجام می شود:
P I1 ⊕ P I2 ⊕… ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
که در آن P n، C n، K n بیت های n-ام متن، متن رمزی و کلید هستند.
پس از یافتن معادله مشابه، مهاجم می‌تواند 1 بیت اطلاعات کلید را با استفاده از الگوریتم زیر بازیابی کند.

الگوریتم 1
فرض کنید T تعداد متن هایی باشد که سمت چپ معادله (1) برابر 0 است، پس
اگر T> N / 2، که در آن N تعداد متن های ساده شناخته شده است.
فرض کنید که K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0 (وقتی P> 1/2) یا 1 (وقتی P<1/2).
در غیر این صورت
فرض کنید K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1 (وقتی P> 1/2) یا 0 (وقتی P<1/2).
بدیهی است که موفقیت الگوریتم مستقیماً به مقدار | P-1/2 | بستگی دارد و بر روی تعداد جفت متن باز / بسته موجود N. هر چه احتمال P برابری (1) با 1/2 متفاوت باشد، تعداد متن های باز N برای حمله کمتر ضروری است.

برای یک حمله موفق دو مشکل وجود دارد که باید برطرف شود:

  • چگونه معادله مؤثر شکل (1) را پیدا کنیم.
  • چگونه با استفاده از چنین معادله ای بیش از یک بیت اطلاعات در مورد یک کلید بدست آوریم.
بیایید حل این سوالات را با مثال رمز DES در نظر بگیریم.

توضیحات DES

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

بنابراین DES یک رمز بلوکی مبتنی بر شبکه Feistel است. این رمز دارای اندازه بلوک 64 بیت و اندازه کلید 56 بیت است. بیایید طرح رمزگذاری DES را در نظر بگیریم.

همانطور که در شکل مشاهده می کنید، در هنگام رمزگذاری، عملیات زیر بر روی متن انجام می شود:

  1. جایگشت بیت اولیه در این مرحله، بیت‌های بلوک ورودی به ترتیب خاصی به هم ریخته می‌شوند.
  2. پس از آن، بیت های مخلوط به دو نیمه تقسیم می شوند که به ورودی تابع Feistel تغذیه می شود. برای DES استاندارد، شبکه Feistel شامل 16 دور است، اما انواع دیگری از الگوریتم وجود دارد.
  3. دو بلوک به دست آمده در آخرین دور تبدیل با هم ترکیب می شوند و یک جایگشت دیگر روی بلوک حاصل انجام می شود.

در هر دور از شبکه Feistel، کمترین 32 بیت پیام از تابع f عبور می کند:

عملیات انجام شده در این مرحله را در نظر بگیرید:

  1. بلوک ورودی از تابع توسعه E عبور می کند که یک بلوک 32 بیتی را به یک بلوک 48 بیتی تبدیل می کند.
  2. بلوک حاصل با کلید گرد K i اضافه می شود.
  3. نتیجه مرحله قبل به 8 بلوک 6 بیتی تقسیم می شود.
  4. هر یک از بلوک های دریافتی B i از تابع جایگزینی S-Box i عبور می کند که توالی 6 بیتی را با یک بلوک 4 بیتی جایگزین می کند.
  5. بلوک 32 بیتی حاصل از جایگشت P عبور می کند و به عنوان نتیجه f برگردانده می شود.

از نقطه نظر تحلیل رمزی، برای ما بلوک های S طراحی شده اند تا ارتباط بین داده های ورودی و خروجی تابع f را پنهان کنند. برای حمله موفقیت آمیز به DES، ابتدا همتاهای آماری را برای هر یک از جعبه های S می سازیم و سپس آنها را به کل رمز گسترش می دهیم.

تجزیه و تحلیل بلوک S

هر S-box یک دنباله 6 بیتی را به عنوان ورودی می پذیرد و یک مقدار ثابت 4 بیتی برای هر یک از این دنباله ها برگردانده می شود. آن ها تنها 64 گزینه برای داده های ورودی و خروجی وجود دارد. وظیفه ما نشان دادن رابطه بین داده های ورودی و خروجی بلوک های S است. به عنوان مثال، برای سومین بلوک S از رمز DES، بیت سوم دنباله ورودی در 38 مورد از 64 مورد، برابر با بیت 3 دنباله خروجی است. بنابراین، ما آنالوگ آماری زیر را برای سومین S پیدا کردیم. -مسدود کردن:
S 3 (x) = x که با احتمال P = 38/64 اجرا می شود.
هر دو طرف معادله نشان دهنده 1 بیت اطلاعات است. بنابراین، اگر سمت چپ و راست مستقل از یکدیگر بودند، معادله باید با احتمال 1/2 برآورده شود. بنابراین، ما رابطه بین ورودی و خروجی سومین جعبه S الگوریتم DES را نشان دادیم.

اجازه دهید در نظر بگیریم که چگونه می توانید یک آنالوگ آماری از جعبه S در حالت کلی پیدا کنید.

برای S-box S a، 1 ≤ α ≤ 63 و 1 ≤ β ≤ 15، مقدار NS a (α، β) توضیح می دهد که چند بار از 64 بیت ورودی XOR ممکن S a که روی بیت های α قرار داده شده، برابر با خروجی XOR است. بیت هایی که روی بیت های β قرار گرفته اند، یعنی:
که در آن نماد یک AND منطقی است.
مقادیر α و β، که NS a (α، β) بیشتر از 32 متفاوت است، کارآمدترین آنالوگ آماری S-box S a را توصیف می کند.

مؤثرترین آنالوگ در پنجمین بلوک S از رمز DES برای α = 16 و β = 15 NS 5 (16، 15) = 12 یافت شد. این به این معنی است که معادله زیر درست است: Z = Y ⊕ Y ⊕ Y ⊕ Y، که در آن Z دنباله ورودی S-box و Y دنباله خروجی است.
یا با در نظر گرفتن این واقعیت که در الگوریتم DES، قبل از ورود به بلوک S، داده ها مدول 2 با یک کلید گرد اضافه می شود، یعنی. Z = X ⊕ K بدست می آوریم
X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K، که در آن X و Y داده های ورودی و خروجی تابع f بدون در نظر گرفتن جایگشت هستند.
معادله به دست آمده در تمام دورهای الگوریتم DES با احتمال یکسان P = 12/64 برآورده می شود.
جدول زیر فهرستی از موثرها را ارائه می دهد، به عنوان مثال. داشتن بزرگترین انحراف از P = 1/2، آنالوگ های آماری برای هر بلوک s از الگوریتم DES.

ساخت آنالوگ های آماری برای چندین دور DES

اکنون اجازه دهید نشان دهیم که چگونه می توانیم آنالوگ های آماری چندین دور DES را ترکیب کنیم و در نتیجه یک آنالوگ آماری برای کل رمز به دست آوریم.
برای انجام این کار، یک نسخه سه دور از الگوریتم را در نظر بگیرید:

اجازه دهید یک آنالوگ آماری کارآمد از s-box 5 را برای محاسبه بیت های خاصی از مقدار X (2) اعمال کنیم.
می دانیم که با احتمال 12/64 تابع f برابری را برآورده می کند X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K،در جایی که X دومین بیت ورودی S-box 5 است، اساساً بیت 26 از دنباله ای است که پس از گسترش بیت های ورودی به دست می آید. با تجزیه و تحلیل تابع پسوند، می توانیم مشخص کنیم که به جای بیت 26، بیت هفدهم از دنباله X (1) وجود دارد.
به همین ترتیب، Y، ...، Y اساساً بیت های 17، 18، 19 و 20 دنباله ای هستند که قبل از جایگشت P به دست آمده اند. پس از بررسی جایگشت P، دریافت می کنیم که بیت های Y، ...، Y در واقع بیت هستند. Y (1)، Y (1)، Y (1)، Y (1).
بیت کلید K درگیر در معادلات، بیت 26 از کلید فرعی دور اول K1 است و سپس آنالوگ آماری به شکل زیر است:
X (1) ⊕ Y (1) ⊕ Y (1) ⊕ Y1 ⊕ Y (1) = K1.
از این رو، X (1) ⊕ K1 = Y (1) ⊕ Y (1) ⊕ Y (1) ⊕ Y (1)(2) با احتمال P = 12/64.
با دانستن 3، 8، 14، 25 بیت از دنباله Y (1)، می توانید 3، 8، 14، 25 بیت از دنباله X (2) را بیابید:
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y (1) ⊕ Y (1) ⊕ Y (1) ⊕ Y (1)یا با در نظر گرفتن معادله (2)
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X (1) ⊕ K1 (3) با احتمال 12/64.

بیایید با استفاده از دور آخر یک عبارت مشابه پیدا کنیم. این بار معادله را داریم
X (3) ⊕ K3 = Y (3) ⊕ Y (3) ⊕ Y (3) ⊕ Y (3).
زیرا
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ Y (3) ⊕ Y (3) ⊕ Y (3) ⊕ Y (3)
ما آن را دریافت می کنیم
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ X (3) ⊕ K3(4) با احتمال 12/64.

با معادل سازی سمت راست معادلات (3) و (4) به دست می آوریم
CL ⊕ CL ⊕ CL ⊕ CL ⊕ X (3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X (1) ⊕ K1با احتمال (12/64) 2 + (1-12 / 64) 2.
با در نظر گرفتن X (1) = PR و X (3) = CR، یک آنالوگ آماری به دست می آوریم.
CL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
که با احتمال (12/64) 2 + (1-12 / 64) 2 = 0.7 اجرا می شود.
آنالوگ آماری شرح داده شده در بالا را می توان به صورت گرافیکی به صورت زیر نشان داد (بیت های موجود در شکل از راست به چپ شماره گذاری شده اند و از صفر شروع می شوند):

تمام بیت های سمت چپ معادله برای مهاجم شناخته شده است، بنابراین او می تواند الگوریتم 1 را اعمال کند و مقدار K1 ⊕ K3 را دریابد. اجازه دهید نشان دهیم که چگونه می توان از این آنالوگ آماری برای شکستن نه 1، بلکه 12 بیت از کلید رمزگذاری K استفاده کرد.

حمله DES با متن ساده شناخته شده

در اینجا روشی وجود دارد که با آن می توانید حمله را گسترش دهید و 6 بیت از کلید فرعی دور اول را به طور همزمان دریافت کنید.
هنگام نوشتن معادله (5)، این واقعیت را در نظر گرفتیم که مقدار F1 (PR، K1) را نمی دانیم. بنابراین، ما از آنالوگ آماری آن K1 ⊕ PR استفاده کردیم.
اجازه دهید مقدار F1 (PR, K1) را به جای عبارت K1 ⊕ PR برگردانیم و معادله زیر را بدست آوریم:
CL ⊕ CR ⊕ PL ⊕ F1 (PR، K1) = K3 (6) که با احتمال 12/64 اجرا خواهد شد. از زمانی که ما فقط آنالوگ آماری را از دور سوم باقی گذاشتیم، احتمال تغییر کرده است، همه مقادیر دیگر ثابت هستند.

در بالا، ما قبلاً تعیین کرده‌ایم که مقدار F1 (PR، K1) تحت تأثیر بیت‌های ورودی پنجمین جعبه S، یعنی بیت‌های کلید K1 و بیت‌های بلوک PR قرار دارد. اجازه دهید نشان دهیم که چگونه با داشتن مجموعه ای از متون باز / بسته، می توانید مقدار K1 را بازیابی کنید. برای این کار از الگوریتم 2 استفاده می کنیم.

الگوریتم 2
اجازه دهید N تعداد جفت های متن باز/بسته شناخته شده قبل از حمله باشد. سپس برای باز کردن کلید باید مراحل زیر را انجام دهید.
برای (i = 0; i<64; i++) do
{
برای (j = 0؛ j {
اگر (CL j ⊕ CR j ⊕ PL j ⊕ F1 (PR j, i) = 0) سپس
T i = T i +1
}
}
به عنوان یک دنباله احتمالی K1، چنین مقداری از i گرفته می شود که عبارت | T i -N / 2 | دارای حداکثر مقدار است.

با توجه به تعداد کافی متن ساده شناخته شده، الگوریتم به احتمال زیاد شش بیت صحیح از اولین دور کلید فرعی K1 را برمی گرداند. این با این واقعیت توضیح داده می شود که اگر متغیر i برابر با K1 نباشد، مقدار تابع F1 (PR j, K) تصادفی خواهد بود و تعداد معادلات برای چنین مقداری از i که سمت چپ آن است. برابر با صفر به N/2 تمایل پیدا می کند. اگر کلید فرعی به درستی حدس زده شود، سمت چپ با بیت ثابت K3 با احتمال 12/64 برابر خواهد شد. آن ها انحراف قابل توجهی از N / 2 وجود خواهد داشت.

با دریافت 6 بیت از کلید فرعی K1، می توانید 6 بیت کلید فرعی K3 را به همین ترتیب باز کنید. تنها چیزی که برای این کار لازم است این است که در معادله (6) C با P و K1 با K3 جایگزین شود:
PL ⊕ PR ⊕ CL ⊕ F3 (CR، K3) = K1.
الگوریتم 2 مقدار صحیح K3 را برمی گرداند زیرا فرآیند رمزگشایی الگوریتم DES با فرآیند رمزگذاری یکسان است، فقط دنباله کلیدها معکوس می شود. بنابراین در دور اول رمزگشایی از کلید K3 و در دور آخر کلید K1 استفاده می شود.

مهاجم با دریافت 6 بیت از کلیدهای فرعی K1 و K3 هر کدام، 12 بیت از کلید عمومی رمز K را بازیابی می کند. کلیدهای گرد جایگشت معمول کلید K هستند. تعداد متن‌های ساده مورد نیاز برای یک حمله موفق به احتمال مشابه آماری بستگی دارد. برای شکستن 12 بیت یک کلید DES 3 دور، 100 جفت متن واضح / متن شفاف کافی است. برای شکستن 12 بیت یک کلید 16 دور DES، حدود 244 جفت متن مورد نیاز است. 44 بیت باقی مانده از کلید با یک حمله brute-force منظم باز می شود.

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

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

مزایای اصلی الگوریتم DES:

· فقط یک کلید 56 بیتی استفاده می شود.

· با رمزگذاری یک پیام با یک بسته، می توانید از هر بسته دیگری برای رمزگشایی استفاده کنید.

· سادگی نسبی الگوریتم سرعت بالایی در پردازش اطلاعات را فراهم می کند.

· استحکام کافی الگوریتم بالا.

DES بلوک های 64 بیتی داده را با استفاده از یک کلید 56 بیتی رمزگذاری می کند. رمزگشایی DES عملیات معکوس رمزگذاری است و با تکرار عملیات رمزگذاری به ترتیب معکوس انجام می شود (علی رغم واضح بودن ظاهراً، این کار همیشه انجام نمی شود. در ادامه به رمزهایی خواهیم پرداخت که در آنها رمزگذاری و رمزگشایی با استفاده از الگوریتم های مختلف انجام می شود).

فرآیند رمزگذاری شامل یک مبادله بیت اولیه یک بلوک 64 بیتی، شانزده چرخه رمزگذاری و در نهایت یک مبادله بیت معکوس است (شکل 1).

فوراً باید توجه داشت که تمام جداول ارائه شده در این مقاله استاندارد هستند و بنابراین باید بدون تغییر در اجرای الگوریتم شما گنجانده شوند. تمامی جایگشت ها و کدهای موجود در جداول توسط توسعه دهندگان به گونه ای انتخاب شده اند که با حدس زدن کلید، فرآیند رمزگشایی را تا حد ممکن دشوار کنند. ساختار الگوریتم DES در شکل نشان داده شده است. 2.

برنج. 2.

اجازه دهید بلوک 8 بایتی بعدی T از فایل خوانده شود که با استفاده از ماتریس جایگشت اولیه IP (جدول 1) به صورت زیر تبدیل می شود: بیت 58 بلوک T تبدیل به بیت 1 می شود، بیت 50 به بیت 2 تبدیل می شود و غیره. منجر به: T (0) = IP (T) خواهد شد.

دنباله حاصل از بیت های T (0) به دو دنباله 32 بیتی هر کدام تقسیم می شود: L (0) - بیت های چپ یا مهم ترین، R (0) - بیت های راست یا کم اهمیت ترین بیت ها.

جدول 1: ماتریس جایگشت اولیه IP

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

سپس رمزگذاری انجام می شود که شامل 16 تکرار است. نتیجه تکرار i با فرمول های زیر توصیف می شود:

R (i) = L (i-1) xor f (R (i-1)، K (i))،

جایی که xor عملیات انحصاری OR است.

تابع f را تابع رمزگذاری می نامند. آرگومان های آن عبارتند از دنباله 32 بیتی R (i-1)، که در تکرار (i-1) به دست می آید، و کلید 48 بیتی K (i)، که نتیجه تبدیل کلید 64 بیتی K است. به طور مفصل، تابع رمزگذاری و الگوریتم برای به دست آوردن کلید K (i) در زیر توضیح داده شده است.

در تکرار شانزدهم، دنباله‌های R (16) و L (16) (بدون جایگشت) به دست می‌آیند که در یک دنباله 64 بیتی R (16) L (16) به هم متصل می‌شوند.

سپس موقعیت بیت های این دنباله مطابق با ماتریس IP -1 تغییر می کند (جدول 2).

جدول 2: IP -1 ماتریس جایگشت معکوس

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

ماتریس های IP -1 و IP به شرح زیر مرتبط هستند: مقدار عنصر اول ماتریس IP -1 40 است و مقدار عنصر 40 ماتریس IP 1 است، مقدار دوم. عنصر ماتریس IP -1 8 است و مقدار عنصر هشتم ماتریس IP برابر با 2 و غیره است.

فرآیند رمزگشایی داده ها برعکس فرآیند رمزگذاری است. تمام مراحل باید به ترتیب معکوس انجام شود. این بدان معنی است که داده های رمزگشایی شده ابتدا مطابق با ماتریس IP-1 مرتب می شوند و سپس همان اقدامات روی دنباله بیت R (16) L (16) مانند فرآیند رمزگذاری انجام می شود، اما به ترتیب معکوس.

فرآیند رمزگشایی تکراری را می توان با فرمول های زیر توصیف کرد:

R (i-1) = L (i)، i = 1، 2، ...، 16;

L (i-1) = R (i) xor f (L (i)، K (i))، i = 1، 2، ...، 16.

در تکرار شانزدهم، دنباله های L (0) و R (0) به دست می آیند که به دنباله 64 بیتی L (0) R (0) الحاق می شوند.

سپس موقعیت بیت های این دنباله مطابق با ماتریس IP بازآرایی می شوند. نتیجه چنین جایگشتی توالی 64 بیتی اصلی است.

اکنون تابع رمزگذاری f (R (i-1)، K (i)) را در نظر بگیرید. به صورت شماتیک در شکل نشان داده شده است. 3.


برنج. 3.

برای محاسبه مقدار تابع f از توابع ماتریسی زیر استفاده می شود:

E - گسترش یک دنباله 32 بیتی به 48 بیت،

S1، S2، ...، S8 - تبدیل یک بلوک 6 بیتی به یک بلوک 4 بیتی،

P - جایگشت بیت ها در یک دنباله 32 بیتی.

تابع بسط E در جدول تعریف شده است. 3. طبق این جدول، 3 بیت اول E (R (i-1)) بیت های 32، 1 و 2 و آخرین بیت های 31، 32 و 1 هستند.

جدول 3: تابع بسط E

32 01 02 03 04 05

04 05 06 07 08 09

08 09 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 01

نتیجه تابع E (R (i-1)) یک دنباله 48 بیتی است که مدول 2 (عملیات xor) با یک کلید 48 بیتی K (i) اضافه می شود. دنباله 48 بیتی به دست آمده به هشت بلوک 6 بیتی تقسیم می شود B (1) B (2) B (3) B (4) B (5) B (6) B (7) B (8). به این معنا که:

E (R (i-1)) xor K (i) = B (1) B (2)… B (8).

توابع S1، S2، ...، S8 توسط جدول تعیین می شوند. 4.

جدول 4

به میز. 4. نیاز به توضیح بیشتر دارد. اجازه دهید بلوک 6 بیتی B (j) = b1b2b3b4b5b6 وارد ورودی تابع ماتریس Sj شود، سپس عدد دو بیتی b1b6 شماره ردیف ماتریس را نشان می دهد و b2b3b4b5 شماره ستون است. نتیجه Sj (B (j)) یک عنصر 4 بیتی است که در تقاطع سطر و ستون مشخص شده قرار دارد.

به عنوان مثال، B (1) = 011011. سپس S1 (B (1)) در تقاطع ردیف 1 و ستون 13 قرار دارد. ستون 13 ردیف 1 روی 5 تنظیم می شود. بنابراین S1 (011011) = 0101.

با اعمال عملیات انتخاب برای هر یک از بلوک های 6 بیتی B (1)، B (2)، ...، B (8)، یک دنباله 32 بیتی S1 (B (1)) S2 (B (2) به دست می آوریم. )) S3 (B (3))… S8 (B (8)).

در نهایت، برای به دست آوردن نتیجه تابع رمزگذاری، بیت های این دنباله باید تعویض شوند. برای این کار از تابع جایگشت P استفاده می شود (جدول 5). در ترتیب ورودی، بیت ها به گونه ای جابجا می شوند که بیت 16 به بیت 1، بیت 7 به بیت 2 و غیره تبدیل می شود.

جدول 5: تابع انتقال P

به این ترتیب،

f (R (i-1)، K (i)) = P (S1 (B (1))، ... S8 (B (8)))

برای تکمیل توضیحات الگوریتم رمزگذاری داده ها، باید یک الگوریتم برای به دست آوردن کلیدهای 48 بیتی K (i)، i = 1 ... 16 ارائه شود. در هر تکرار، یک مقدار کلید جدید K (i) استفاده می شود که از کلید اولیه K محاسبه می شود. K یک بلوک 64 بیتی با هشت بیت برابری است که در موقعیت های 8،16،24،32،40،48 قرار دارند. 56، 64.

برای حذف بیت های کنترل و جابجایی بقیه، از تابع G آماده سازی کلید اولیه استفاده می شود (جدول 6).

جدول 6

ماتریس آماده سازی کلید اولیه G

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

نتیجه تبدیل G (K) به دو بلوک 28 بیتی C (0) و D (0) تقسیم می شود و C (0) از بیت های 57، 49، ...، 44، 36 از کلید K تشکیل می شود، و D (0) متشکل از بیت های 63، 55، ...، 12، 4 کلید K خواهد بود. پس از تعریف C (0) و D (0)، C (i) و D (i)، i = 1 ... 16، به صورت بازگشتی تعیین می شوند. برای انجام این کار، بسته به تعداد تکرار، همانطور که در جدول نشان داده شده است، یک یا دو بیت تغییر چرخه ای به چپ اعمال کنید. 7.

جدول 7. جدول شیفت برای محاسبه کلید

شماره تکرار

شیفت (بیت)

مقدار حاصل دوباره مطابق با ماتریس H (جدول 8) "مخلوط" می شود.

جدول 8: کلید پس از پردازش ماتریس H

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

کلید K (i) از بیت های 14، 17، ...، 29، 32 از دنباله C (i) D (i) تشکیل شده است. به این ترتیب:

K (i) = H (C (i) D (i))

بلوک دیاگرام الگوریتم محاسبه کلید در شکل نشان داده شده است. 4.

برنج. 4.

بازیابی متن اصلی با استفاده از این الگوریتم انجام می شود، اما ابتدا از کلید K (15)، سپس K (14) و غیره استفاده می کنید. اکنون باید برای شما روشن باشد که چرا نویسنده به شدت استفاده از ماتریس های داده شده را توصیه می کند. اگر شروع به خودپسندی کنید، حتما یک کد بسیار مخفی دریافت کرده اید، اما خودتان نمی توانید آن را فاش کنید!

حاشیه نویسی: یکی از معروف ترین سیستم های رمزنگاری کلید خصوصی DES - Data Encryption Standard است. این سیستم اولین سیستمی بود که وضعیت استاندارد دولتی در زمینه رمزگذاری داده ها را دریافت کرد. و اگرچه DES استاندارد قدیمی آمریکایی اکنون وضعیت رسمی خود را از دست داده است، این الگوریتم هنوز در هنگام مطالعه رمزنگاری شایسته توجه است. علاوه بر این، این سخنرانی توضیح می دهد که DES دوگانه چیست، یک حمله ملاقات در وسط، و نحوه رفع آن. در همین سخنرانی به طور خلاصه استاندارد جدید ایالات متحده برای رمزهای بلوکی - الگوریتم Rijndael - بحث می شود.

هدف از سخنرانی: دانش آموز را با اصول الگوریتم رمزگذاری DES آشنا کنید.

اطلاعات اولیه

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

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

طول کلید در الگوریتم DES 56 بیت است. با این واقعیت است که بحث اصلی در مورد توانایی است DESمقاومت در برابر حملات مختلف همانطور که می دانید، هر رمز بلوکی با یک کلید خصوصی را می توان با آزمایش تمام ترکیب های کلیدی ممکن شکست. با طول کلید 56 بیت، 2 56 کلید مختلف امکان پذیر است. اگر یک کامپیوتر 1000000 کلید را در یک ثانیه برشمرد (که تقریباً برابر است با 220)، در این صورت تکرار 236 ثانیه در تمام 256 کلید یا کمی بیشتر از دو هزار سال طول می کشد که البته غیر قابل قبول است. برای مزاحمان

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

در عین حال می توان به این نکته اشاره کرد که سیستم DESممکن است به خوبی در برنامه های کاربردی کوچک تا متوسط ​​برای رمزگذاری داده ها با ارزش کمی استفاده شود. برای رمزگذاری داده های دارای اهمیت ملی یا سیستم ارزش تجاری مهم DESدر حال حاضر، البته، نباید استفاده شود. در سال 2001، پس از یک مسابقه اعلام شده ویژه در ایالات متحده، استاندارد جدیدی برای رمزگذاری بلوک به تصویب رسید که به نام AES (استاندارد رمزگذاری پیشرفته)، که بر اساس رمز بود ریجندیلتوسط متخصصان بلژیکی ساخته شده است. این رمز در پایان سخنرانی مورد بحث قرار می گیرد.

تنظیمات اصلی DES: اندازه بلوک 64 بیت، طول کلید 56 بیت، تعداد دور - 16. DESتوری کلاسیک فیستل با دو شاخه است. این الگوریتم یک بلوک ورودی 64 بیتی داده را به یک بلوک خروجی 64 بیتی در چندین دور تبدیل می کند. استاندارد DESبر اساس استفاده ترکیبی از جایگشت، جایگزینی و بازی ساخته شده است. داده های رمزگذاری شده باید به صورت باینری باشند.

رمزگذاری

ساختار کلی DESدر شکل نشان داده شده است. 4.1. فرآیند رمزگذاری برای هر بلوک 64 بیتی داده اصلی را می توان به سه مرحله تقسیم کرد:

  1. آماده سازی اولیه بلوک داده؛
  2. 16 دور "حلقه اصلی"؛
  3. پردازش نهایی بلوک داده

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

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

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


برنج. 4.1.

بیایید تمام مراحل تبدیل رمزنگاری را طبق استاندارد با جزئیات بیشتری در نظر بگیریم DES.

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

همزمان با جایگشت اولیه بلوک داده، جایگشت اولیه 56 بیت کلید انجام می شود. از انجیر 4.1. مشاهده می شود که در هر یک از دورها از کلید جزئی 48 بیتی مربوطه K i استفاده شده است. کلیدهای K i طبق یک الگوریتم مشخص و با استفاده از هر یک از بیت های کلید اولیه چندین بار به دست می آیند. در هر دور، کلید 56 بیتی به دو نیمه 28 بیتی تقسیم می شود. سپس نیمه ها بسته به عدد گرد، یک یا دو بیت به چپ منتقل می شوند. پس از تغییر، 48 بیت از 56 بیت به روش خاصی انتخاب می شود. از آنجایی که این نه تنها زیرمجموعه ای از بیت ها را انتخاب می کند، بلکه ترتیب آنها را نیز تغییر می دهد، این عملیات "جایگشت با فشرده سازی" نامیده می شود. نتیجه آن مجموعه ای از 48 بیت است. به طور متوسط، هر بیت از کلید اصلی 56 بیتی در 14 مورد از 16 کلید فرعی استفاده می شود، اگرچه همه بیت ها به تعداد یکسان استفاده نمی شوند.

در مرحله بعد، چرخه تبدیل اصلی انجام می شود که مطابق با شبکه Feistel سازماندهی شده و از 16 دور یکسان تشکیل شده است. در این حالت، در هر دور (شکل 4.2) یک مقدار متوسط ​​64 بیتی به دست می آید که سپس در دور بعدی پردازش می شود.


برنج. 4.2.

شاخه های چپ و راست هر مقدار میانی به عنوان مقادیر 32 بیتی جداگانه در نظر گرفته می شوند که با L و R نشان داده می شوند.

ابتدا، سمت راست بلوک R i با استفاده از جدولی که جایگشت به اضافه پسوند 16 بیتی را تعریف می کند، به 48 بیت گسترش می یابد. این عملیات اندازه نیمه سمت راست را تغییر می دهد تا با اندازه کلید برای عملیات XOR مطابقت داشته باشد. علاوه بر این، به دلیل این عملیات، وابستگی تمام بیت های نتیجه به بیت های داده اصلی و کلید سریعتر افزایش می یابد (به این "اثر بهمنی" می گویند). هرچه اثر بهمن هنگام استفاده از یک یا آن الگوریتم رمزگذاری بیشتر آشکار شود، بهتر است.

پس از انجام جایگشت بسط، مقدار 48 بیتی حاصل با کلید فرعی 48 بیتی K i XOR می شود. سپس مقدار 48 بیتی حاصل به ورودی بلوک جایگزینی S (از انگلیسی. تعویض - جایگزینی)، نتیجهکه یک مقدار 32 بیتی است. تعویض در هشت جعبه جایگزین یا هشت جعبه S انجام می شود. هنگامی که انجام این DES روی کاغذ بسیار پیچیده به نظر می رسد، چه رسد به اجرای نرم افزار آن! برنامه ای با عملکرد صحیح و بهینه کاملاً مطابق با DES، احتمالاً فقط برنامه نویسان با تجربه می توانند این کار را انجام دهند. برخی از مشکلات زمانی بوجود می آیند که پیاده سازی نرم افزاربه عنوان مثال، یک جایگشت اولیه یا یک جایگشت با بسط. این مشکلات به این دلیل است که در ابتدا برای اجرای آن برنامه ریزی شده بود DESفقط سخت افزار تمامی عملیات استفاده شده در استاندارد به راحتی توسط واحدهای سخت افزاری انجام می شود و هیچ مشکلی در اجرا وجود ندارد. با این حال، مدتی پس از انتشار این استاندارد، توسعه دهندگان نرم افزار تصمیم گرفتند که کنار ننشینند و همچنین شروع به ایجاد سیستم های رمزگذاری کنند. به علاوه DESهم در سخت افزار و هم در نرم افزار پیاده سازی می شود.

مقالات مرتبط برتر