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

حالت های دس. حالت بازخورد خروجی

رایج ترین و شناخته شده ترین الگوریتم رمزگذاری متقارنهست یک DES (استاندارد رمزگذاری داده ها). این الگوریتم در سال 1977 توسعه یافت و در سال 1980 توسط NIST (موسسه ملی استاندارد و فناوری، ایالات متحده آمریکا) به عنوان یک استاندارد پذیرفته شد.

DES است شبکه کلاسیک Feistel با دو شاخه. داده ها در بلوک های 64 بیتی با استفاده از یک کلید 56 بیتی رمزگذاری می شوند. این الگوریتم ورودی 64 بیتی را در چندین دور به خروجی 64 بیتی تبدیل می کند. طول کلید 56 بیت است. فرآیند رمزگذاری چهار مرحله دارد. اولین مرحله انجام یک جایگشت اولیه (IP) متن منبع 64 بیتی (سفید کردن) است که طی آن بیت ها مطابق با آنها مرتب می شوند. جدول استاندارد... مرحله بعدی شامل 16 دور از همان تابع است که از عملیات جابجایی و تعویض استفاده می کند. در مرحله سوم، نیمه چپ و راست خروجی آخرین (شانزدهمین) تکرار معکوس می شوند. در نهایت در مرحله چهارم، نتیجه IP-1 به دست آمده در مرحله سوم بازآرایی می شود. جایگشت IP-1 برعکس جایگشت اولیه است.

شکل 4. الگوریتم DES

شکل استفاده از کلید 56 بیتی را نشان می دهد. در ابتدا، کلید به ورودی تابع جایگشت تغذیه می شود. سپس، برای هر یک از 16 دور، کلید فرعی K i یک تغییر چرخه ای چپ و ترکیب جایگشت است. تابع جایگشت برای هر دور یکسان است، اما کلیدهای فرعی K i برای هر دور به دلیل جابجایی مکرر بیت های کلید متفاوت است.

جایگشت اولیه و معکوس آن توسط جدول استاندارد تعیین می شود. اگر M 64 بیت تصادفی باشد، X = IP (M) 64 بیت جابه‌جا می‌شود. اگر تابع جایگشت معکوس Y = IP-1 (X) = IP-1 (IP (M)) را اعمال کنیم، دنباله بیت اصلی را بدست می آوریم.

توضیحات دور دس

دنباله ای از تبدیل های استفاده شده در هر دور را در نظر بگیرید.

شکل 5. تصویر یک دور از الگوریتم DES

بلوک ورودی 64 بیتی از 16 عبور می کند دورو در هر تکرار یک مقدار متوسط ​​64 بیتی به دست می آید. سمت چپ و راست هر مقدار میانی به عنوان مقادیر جداگانه 32 بیتی با برچسب L و R در نظر گرفته می شود. هر تکرار را می توان به صورت زیر توصیف کرد:

R i = L i -1 F (R i -1، K i)

بنابراین، خروجی نیمه چپ L i برابر با ورودی نیمه راست R i-1 است. خروجی نیمه راست Ri نتیجه XORing L i-1 و تابع F بسته به R i-1 و Ki است.

بیایید تابع F را با جزئیات بیشتری در نظر بگیریم. R i که به ورودی تابع F تغذیه می شود 32 بیت است. در ابتدا، R i با استفاده از جدولی که یک جایگشت به اضافه یک پسوند 16 بیتی را تعریف می کند، به 48 بیت گسترش می یابد. گسترش به روش زیر انجام می شود. 32 بیت به گروه های 4 بیتی تقسیم می شوند و سپس با افزودن بیرونی ترین بیت ها از دو گروه مجاور به 6 بیت گسترش می یابند. به عنوان مثال، اگر بخشی از پیام ورودی

افغ ایجکل منوپ. ... ...

سپس پسوند به پیام منجر می شود

دغی هیجکلم لمنوپق. ... ...

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

جایگزینی شامل هشت جعبه S است که هر کدام 6 بیت به عنوان ورودی دریافت می کنند و 4 بیت در خروجی تولید می کنند. این دگرگونی ها توسط جداول خاصی تعیین می شوند. اولین و آخرین بیت ورودی S-box شماره ردیف جدول را تعیین می کند و 4 بیت میانی شماره ستون را تعیین می کند. تقاطع سطر و ستون یک خروجی 4 بیتی را تعریف می کند. به عنوان مثال، اگر ورودی 011011 باشد، شماره ردیف 01 (ردیف 1) و شماره ستون 1101 (ستون 13) است. مقدار در ردیف 1 و ستون 13 5 است، یعنی. خروجی 0101 است.

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

کلید یک دور K i از 48 بیت تشکیل شده است. کلیدهای K i با الگوریتم زیر به دست می آیند. برای کلید 56 بیتی که به عنوان ورودی الگوریتم استفاده می شود، ابتدا یک جایگشت مطابق با جدول Permuted Choice 1 (PC-1) انجام می شود. کلید 56 بیتی به دو قسمت 28 بیتی تقسیم می شود که به ترتیب C0 و D0 نامیده می شوند. در هر دور، C i و D i به طور مستقل به صورت چرخه‌ای 1 یا 2 بیت به چپ منتقل می‌شوند، بسته به عدد دور. مقادیر به دست آمده ورودی دور بعدی هستند. آنها همچنین یک ورودی به Permuted Choice 2 (PC-2) هستند، که یک خروجی 48 بیتی تولید می کند که ورودی F (R i-1، K i) است.

فرآیند رمزگشایی مشابه فرآیند رمزگذاری است. متن رمز در ورودی الگوریتم استفاده می شود، اما کلیدهای K i به ترتیب معکوس استفاده می شوند. K 16 در دور اول استفاده می شود، K 1 در دور آخر استفاده می شود. اجازه دهید خروجی دور i-امین رمزگذاری L i || R i باشد. سپس ورودی متناظر دور رمزگشایی (16-i) R i || L i خواهد بود.

پس از آخرین دور فرآیند رمزگشایی، دو نیمه خروجی با هم عوض می شوند تا ورودی جایگشت نهایی IP-1 R 16 || L 16 باشد. خروجی این مرحله متن ساده است.

  • آموزش

سلام% نام کاربری%!
بسیاری از مردم می دانند که استاندارد پیش فرض در زمینه رمزگذاری متقارن است برای مدت طولانیدر نظر گرفته شد الگوریتم 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

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

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

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

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

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

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

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

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

شکل 2. ساختار الگوریتم رمزگذاری DES

اجازه دهید بلوک 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 (R (i-1)، K (i))

برای محاسبه مقدار تابع 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

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

شماره تکرار شیفت (بیت)
01 1
02 1
03 2
04 2
05 2
06 2
07 2
08 2
09 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

مقدار حاصل دوباره مطابق با ماتریس 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 (i)

بازیابی متن اصلی با استفاده از این الگوریتم انجام می شود، اما ابتدا از کلید استفاده می کنید

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

حالت های عملکرد DES

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

· کتاب کدهای الکترونیکی (کتاب کدهای الکترونیکی) - ECB.

زنجیره بلوک رمز - CBC;

· بازخورد دیجیتال (Cipher Feedback) - CFB.

· بازخورد خارجی (بازخورد خروجی) - OFB.

در این حالت، فایل منبع M به بلوک های 64 بیتی (هر کدام 8 بایت) تقسیم می شود: M = M (1) M (2) ... M (n). هر یک از این بلوک ها به طور مستقل با استفاده از همان کلید رمزگذاری رمزگذاری می شوند (شکل 5). مزیت اصلی این الگوریتم سهولت اجرای آن است. نقطه ضعف آن مقاومت نسبتاً ضعیف در برابر رمزنگاری‌گران ماهر است.

DES(استاندارد رمزگذاری داده ها) - الگوریتم رمزگذاری متقارن که در آن از یک کلید هم برای رمزگذاری و هم برای رمزگشایی داده ها استفاده می شود. DES توسط IBM توسعه داده شد و توسط دولت ایالات متحده در سال 1977 به عنوان یک استاندارد رسمی (FTPS 46-3) تایید شد. DES دارای بلوک های 64 بیتی و ساختار شبکه Feistel 16 دور است؛ از یک کلید 56 بیتی برای رمزگذاری استفاده می کند. این الگوریتم از ترکیبی از تبدیل های غیر خطی (S-box) و خطی (جایگشت E، IP، IP-1) استفاده می کند. چندین حالت برای DES توصیه می شود:
  • حالت کتاب کد الکترونیکی (ECB - کتاب کد الکترونیکی)،
  • حالت زنجیره بلوکی (CBC - زنجیره بلوک رمز)،
  • حالت بازخورد رمز (CFB)،
  • حالت بازخورد خروجی (OFB - Output Feed Back).

    رمز بلوک

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

    شبکه Feistel تبدیل می شود

    این یک تبدیل بر روی بردارها (بلوک ها) است که نشان دهنده نیمه چپ و راست ثبت تغییر است. DES از تبدیل فیستل رو به جلو در رمزگذاری (نگاه کنید به شکل 1) و تبدیل معکوس فیستل به رمزگشایی (نگاه کنید به شکل 2) استفاده می کند.

    طرح رمزگذاری DES


    متن اصلی یک بلوک 64 بیتی است.
    متن رمز یک بلوک 64 بیتی است.

    فرآیند رمزگذاری شامل یک جایگشت اولیه، 16 چرخه رمزگذاری و یک جایگشت نهایی است.
    یک نمودار دقیق از الگوریتم DES را در نظر بگیرید:
    L i R i = 1,2 \ ldot نیمه چپ و راست یک بلوک 64 بیتی L i R i
    k i - کلیدهای 48 بیتی
    f - تابع رمزگذاری
    IP - جایگشت اولیه
    IP -1 جایگشت نهایی است. طبق جدول، 3 بیت اول بلوک IP (T) حاصل پس از جایگشت اولیه IP، بیت های 58، 50، 42 بلوک ورودی T و 3 بیت آخر آن، بیت های 23، 15، 7 هستند. بلوک ورودی علاوه بر این، بلوک IP (T) 64 بیتی در 16 چرخه تبدیل Feistel شرکت می کند.

    16 چرخه تبدیل Feistel:

    IP (T) را به دو قسمت L 0، R 0 تقسیم کنید، که در آن L 0، R 0 - به ترتیب 32 بیت مهم و 32 بیت کم اهمیت از بلوک T0 IP (T) = L 0 R 0

    فرض کنید T i -1 = L i -1 R i -1 نتیجه تکرار (i-1) باشد، سپس نتیجه تکرار i-ام T i = L i R i مشخص می شود:

    L i = R i - 1نیمه چپ L i برابر با نیمه راست بردار قبلی L i - 1 R i - 1 است. و نیمه سمت راست R i جمع بیت L i - 1 و f (R i - 1, k i) مدول 2 است.

    در تبدیل 16 چرخه Feistel، تابع f نقش رمزگذاری را ایفا می کند. بیایید تابع f را با جزئیات در نظر بگیریم.

    آرگومان های f بردار 32 بیتی R i - 1، کلید 48 بیتی k i هستند که نتیجه تبدیل کلید رمز اصلی 56 بیتی k هستند.

    برای محاسبه تابع f از تابع فرمت E، تبدیل S متشکل از 8 تبدیل S-box و جایگشت P. استفاده می شود.

    تابع E بردار 32 بیتی R i - 1 را به بردار 48 بیتی E (R i - 1) با کپی کردن برخی از بیت ها از R i - 1 گسترش می دهد در حالی که ترتیب بیت های بردار E (R i - 1) در جدول نشان داده شده است. 2. سه بیت اول بردار E (R i - 1) بیت های 32، 1، 2 بردار R i -1 هستند. جدول 2 نشان می دهد که بیت های 1، 4، 5، 8، 9، 12، 13، 16، 17، 20، 21، 24، 25، 28، 29، 32 کپی شده اند. 3 بیت آخر بردار E (Ri - 1) بیت های 31، 32، 1 بردار R i - 1 هستند. بلوک E (R i -1) که پس از جایگشت به دست می آید، مدول 2 با کلیدهای k i اضافه می شود و سپس به عنوان هشت بلوک متوالی B 1، B 2، ... B 8 نشان داده می شود.
    E (R i - 1) = B 1 B 2 ... B 8
    هر B j یک بلوک 6 بیتی است. علاوه بر این، هر یک از بلوک های B j با استفاده از تبدیل های S j به یک بلوک 4 بیتی B "j" تبدیل می شود. تبدیل های S j توسط جدول 3 تعیین می شوند. فرض کنید B3 = 101111 و ما می خواهیم B را پیدا کنیم" 3. اولین و آخرین بیت B 3 نماد دودویی عدد a، 0 هستند مقدار تابع f (R i - 1, ki) (32 بیت) با جایگشت P اعمال شده به بلوک 32 بیتی B "1 به دست می آید. B" 2 ... B "8. P توسط جدول 4 آورده شده است.
    f (R i - 1، k i) = P (B "1 B" 2 ... B "8)
    مطابق جدول 4، چهار بیت اول بردار حاصل پس از عمل تابع f، بیت های 16، 7، 20، 21 بردار B "1 B" 2 ... B "8 هستند.

    کلیدهای تولید k i.
    کلیدهای k i از کلید اولیه k (56 بیت = 7 بایت یا 7 کاراکتر در اسکی) به این ترتیب به دست می آیند. هشت بیتی که در موقعیت های 8، 16، 24، 32، 40، 48، 56، 64 یافت می شوند به کلید k اضافه می شوند تا هر بایت دارای یک عدد فرد باشد. این برای تشخیص خطا در تعویض و ذخیره کلیدها استفاده می شود. سپس کلید توسعه یافته را جایگزین کنید (به جز بیت های اضافه شده 8، 16، 24، 32، 40، 48، 56، 64). چنین جایگشتی در جدول 5 تعریف شده است.

    این جایگشت توسط دو بلوک C 0 و D 0 هر کدام 28 بیت تعریف می شود. 3 بیت اول C 0 بیت های 57، 49، 41 کلید توسعه یافته هستند. و سه بیت اول D 0 بیت های 63، 55، 47 کلید توسعه یافته هستند. C i, D i i = 1,2,3 ... از C i - 1, D i - 1 با یک یا دو شیفت چرخه ای چپ مطابق جدول 6 بدست می آید.

    کلید ki، i = 1، ... 16 شامل 48 بیت است که از بیت های بردار C i D i (56 بیت) مطابق جدول 7 انتخاب شده است. بیت های اول و دوم ki بیت های 14، 17 بردار هستند. C i D i

    جایگشت نهایی IP - 1 روی T 16 عمل می کند و برای بازیابی موقعیت استفاده می شود. این برعکس جایگشت IP است. جایگشت نهایی توسط جدول 8 تعیین می شود.
    حالت های استفاده از DES DES را می توان در چهار حالت استفاده کرد.

  • حالت کتاب کد الکترونیکی (ECB): استفاده معمولی از DES به عنوان رمز بلوکی (شکل 7 را ببینید).
  • حالت زنجیر کردن بلوک رمزی (شکل 8 را ببینید). هر بلوک متوالی C i> = 1، قبل از رمزگذاری، مدول 2 با بلوک بعدی متن ساده M i + 1 اضافه می شود. بردار C 0 یک بردار اولیه است، روزانه تغییر می کند و مخفی نگه داشته می شود.
  • حالت بازخورد رمز (CFB) (شکل 9 را ببینید). در حالت CFB، یک بلوک "گاما" تولید می شود Z 0، Z 1، ... Z i = DESk (C i - 1). بردار اولیه C 0 مخفی نگه داشته می شود.
  • حالت بازخورد خروجی (OFB) (شکل 10 را ببینید). در حالت OFB، یک بلوک "gamut" تولید می شود Z 0، Z 1، ...، i> = 1
  • پیاده سازی حالت ECB آسان است، اما تحلیل انتقادی امکان پذیر است
  • در حالت های ECB و OFB، اعوجاج در حین انتقال یک بلوک 64 بیتی از متن رمزی C i منجر به اعوجاج پس از رمزگشایی تنها بلوک باز مربوطه M i می شود، بنابراین چنین حالت هایی برای انتقال از طریق کانال های ارتباطی با تعداد زیادی اعوجاج استفاده می شود.
  • در حالت‌های CBC و CFB، اعوجاج در حین انتقال یک بلوک از متن رمزی C i منجر به اعوجاج در گیرنده حداکثر دو بلوک متن ساده M i، M i + 1 می‌شود. تغییر در Mi منجر به تغییر در تمام بلوک های دیگر M i + 1، M i + 2 می شود ... این ویژگی برای ایجاد یک کد احراز هویت پیام استفاده می شود.
  • استاندارد 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) و غیره استفاده می کنید. اکنون باید برای شما روشن باشد که چرا نویسنده به شدت استفاده از ماتریس های داده شده را توصیه می کند. اگر شروع به خودپسندی کنید، حتما یک کد بسیار مخفی دریافت کرده اید، اما خودتان نمی توانید آن را فاش کنید!

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