رمزگذاری 3DES چیست و DES چگونه کار می کند؟

رمزگذاری 3DES چیست و چگونه کار می کند DES (1)

3DES رمزگذاری رمزگذاری است که از استاندارد اصلی رمزگذاری داده ها (DES) گرفته شده است. در اواخر دهه نود برجسته شد ، اما از آن زمان به دلیل ظهور الگوریتم های ایمن تر از آن طرفداری نکرد.

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

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

3DES چیست؟?

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

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

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

استفاده از 3DES

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

برخی از نمونه های اجرای آن شامل سیستم های پرداخت مایکروسافت آفیس ، فایرفاکس و EMV بود. بسیاری از این سیستم عامل ها دیگر از 3DES استفاده نمی کنند زیرا گزینه های بهتری وجود دارد.

انستیتوی ملی استاندارد و فناوری (NIST) پیش نویس پیشنهادی را منتشر کرده است که می گوید کلیه اشکال 3DES تا سال 2023 مستهلک می شوند و از سال 2024 به بعد مجاز نیستند. اگرچه این فقط یک پیش نویس است ، این پیشنهاد پایان یک دوره را نشان می دهد ، و زمان آن رسیده است که به سمت دیگر الگوریتم های امن تر حرکت کنید..

تاریخچه رمزگذاری 3DES

از آنجا که 3DES از DES گرفته شده است ، بهتر است ابتدا استاندارد اولیه را معرفی کنید. در دهه هفتاد ، دفتر ملی استاندارد (NBS - از آن به بعد به NIST تغییر نام داده است) در جستجوی الگوریتمی بود که بتواند از آن به عنوان استاندارد برای رمزگذاری اطلاعات حساس و غیرقابل طبقه بندی دولت استفاده کند..

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

در سال 1975 ، الگوریتم IBM توسط NBS به عنوان استاندارد رمزگذاری داده پیشنهادی منتشر شد. از عموم مردم دعوت شد تا درباره این طرح اظهار نظر کنند و این باعث انتقاداتی شد.

رمزنگاران برجسته مانند ویتفیلد دیفی و مارتین هلمن ، طراحان تبادل کلید Diffie-Hellman ، ادعا کردند که طول کلید خیلی کوتاه است و جعبه های S از طراحی اولیه آنها تغییر کرده است..

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

وقتی این مورد توسط کمیته اطلاعات مجلس سنا در ایالات متحده مورد بررسی قرار گرفت ، مشخص شد که "NSA IBM را متقاعد کرد که اندازه کلید کاهش یافته کافی است. به طور غیر مستقیم در توسعه سازه های جعبه S کمک می کند. و تأیید کرد که الگوریتم نهایی DES ، به بهترین دانش آنها ، عاری از هرگونه ضعف آماری یا ریاضی بود. "

در همین گزارش آمده است كه "NSA به هیچ وجه از طراحی خدشه وارد نمی كند." این مورد توسط برخی از كارمندان سابق IBM كه ادعا می كردند الگوریتم DES كاملاً توسط تیم IBM طراحی شده است ، حمایت شده است..

مستندات منسوخ شده NSA ادعا می کند که آژانس "همکاری نزدیک با IBM برای تقویت الگوریتم در برابر همه به جز حملات بی رحمانه و تقویت جداول جانشینی ..."

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

این نشان می دهد که تیم IBM پیش از این در مورد رمزنگاری دیفرانسیل در دهه هفتاد آگاهی داشت ، با استیون لوی ادعا کرد که NSA از آنها خواسته است تا این روش را برای حفظ امنیت ملی مخفی نگه دارند..

رمزنگاری مشهور ، بروس اشنیر یک بار گفت: "دو دهه طول كشید تا جامعه دانشگاهی بفهمند كه اقدامات" NSA "در واقع امنیت DES را بهبود می بخشد."

با وجود سؤالات اولیه درباره امنیت الگوریتم و درگیری NSA ، الگوریتم IBM به عنوان استاندارد رمزگذاری داده در سال 1976 تصویب شد..

هنگامی که رمزنگاری خطی برای اولین بار در سال 1994 منتشر شد ، شروع به ایجاد سؤالاتی در مورد امنیت الگوریتم کرد. در سال 1997 ، NIST اعلام کرد که به دنبال الگوریتمی برای جایگزینی DES است. با توسعه فن آوری بیشتر و حملات بالقوه قوی تر ، نیاز به یک الگوریتم جدید بیشتر شد.

تلاش های مختلف برای شکستن ، نشان داد که شکستن الگوریتم از آنچه قبلاً تصور می شد کمتر دشوار است. در سال 1998 ، distrib.net قادر به کرک DES 39 روز است.

با شروع سال 1999 ، Deep Crack بنیاد الکترونیکی Frontier زمان کمی را به بیش از 22 ساعت کاهش داده بود. این نشانگر پایان DES بود ، زیرا حمله به این طبیعت در حال حاضر در دسترس یک رقیب خوش منبع بود..

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

در حالی که رمزنگاری برای AES تصمیم گیری می شد ، 3DES به عنوان یک اقدام استراحت پیشنهاد شد. این شامل سه بار اجرای الگوریتم DES با سه کلید جداگانه است. در سال 1999 ، DES دوباره تأیید شد ، اما با 3DES به عنوان الگوریتم ایده آل. DES معمولی فقط در برنامه های میراث مجاز بود.

3DES به یک الگوریتم رمزگذاری گسترده تبدیل شد ، اگرچه استفاده شدید از منابع و محدودیت های امنیتی باعث شده است تا در بیشتر موارد استفاده توسط AES جایگزین شود.

درک الگوریتم DES

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

ما از رمزگذاری برای تبدیل داده های متن ساده به متن رمزگذاری استفاده می کنیم ، این اطلاعاتی است که توسط مهاجمان قابل دسترسی نیست (مادامی که ما از الگوریتم های مناسب استفاده می کنیم).

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

رمزگذاری متن

واقعیت این است که رایانه ها با حرف و حرف کار نمی کنند. در عوض ، آنها روی سیستم 1 و 0 کار می کنند که به دوتایی معروف است. هر 1 یا 0 به عنوان کمی شناخته می شود و مجموعه ای از هشت مورد از آنها به عنوان یک بایت شناخته می شود.

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

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111 00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000 01100010 01100101 01100001 01100011 01101000

بلوک

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

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

دوم ما:

00100000 01110100 01101111 00100000 01110100 01101000 01100101 00100000

و بلوک نهایی ما:

01100010 01100101 01100001 01100011 01101000

لایه گذاری

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

برنامه کلید DES

الگوریتم های رمزگذاری از کلیدهایی برای افزودن داده استفاده می کنند که نتیجه نهایی فرایند را تغییر می دهد. اگر DES فقط شامل مراحلی مانند permutation و جعبه های S (انتقال مجدد در زیر است ، در حالی که جعبه های S در داخل پوشیده شده اند) جانشینی بخش) ، تمام کاری که یک مهاجم باید انجام دهد کشف جزئیات الگوریتم است ، سپس هر یک از مراحل معکوس را انجام دهید تا پیام اولیه را فاش کند.

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

DES با یک کلید واحد شروع می شود ، که برای ساخت کلیدهای فرعی که در هر دور استفاده می شود ، استفاده می شود. این یک کلید 64 بیتی است ، به اندازه بلوک های ما. بیایید بگوییم که کلید ما این است:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010

اکنون ، این کلید به صورت باینری است ، یعنی روشی که داده ها هنگام پردازش رایانه ها بیان می کنند. وقتی انسانها با کلیدها برخورد می کنند ، معمولاً به عنوان ترکیبی از شخصیت ها ظاهر می شوند ، چیزی شبیه به این:

kj329nf982bc9wn1

در DES ، اولین قدم برای به دست آوردن کلیدهای گرد ما این است که طبق کلید زیر ، کلید (حرکت در اطراف آن) را مجاز بدارید:

3des-2a

در جایگشت ، همانطور که در جدول مشخص شده است ، هر بیت از کلید اصلی ما در یک موقعیت جدید قرار می گیرد. از آنجا که سلول در گوشه بالا سمت چپ (از C) می گوید 57, شماره اول کلید مجاز ما شماره در موقعیت 57 بلوک قدیمی ما خواهد بود:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 11111010

سلول دوم می گوید 49, که بدان معنی است که رقم دوم کلید جدید ما عددی خواهد بود که در موقعیت 49 در بلوک قدیمی ما قرار دارد:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 1111010

سلول سوم می گوید 41, بنابراین ما به دنبال رقم در موقعیت 41 هستیم:

01001010 10101101 11101000 10100101 01110001 01010100 10101001 1111010

تا کنون ، کلید ما از "110".

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

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

1100010 1010010 1010101 0101010 1010000 1111001 0001011 1000111

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

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

جداول C و D یک کلید به ما می دهند که دو نیمه از 28 بیتی دارد. بعضی اوقات ، از نیمه به عنوان C و D یاد می شود ، اما در طول این مقاله ما به آنها به عنوان L و R اشاره خواهیم کرد ، برای چپ و راست. سمت چپ ما:

1100010 1010010 1010101 0101010

در حالی که حق ما این است:

1010000 1111001 0001011 1000111

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

تعداد دور شماره تعداد چپ
1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

بیایید نیمه و راست ما را بگیریم:

L 1010010 1010010 1010101 0101010

R 1010000 1111001 0001011 1000111

و هر دو را یک موقعیت به سمت چپ تغییر دهید ، زیرا دور اول دارای یک تغییر است 1 مطابق جدول (شماره سمت چپ به انتهای سمت راست منتقل می شود).

زیر دور اول:

L 0100101 0100101 0101010 1010101

R 0100001 1110010 0010111 0001111

در دور دوم جدول نیز می گوید 1, بنابراین با حرکت دادن هر موقعیت یک عدد به سمت چپ ، این نتیجه دوباره تغییر خواهد کرد.

دور دوم کلید فرعی:

L 1001010 1001010 1010101 0101010

R 1000011 1100100 0101110 0011110

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

فرعی دور سوم:

ل 0101010 0101010 1010101 0101010

R 0001111 0010001 0111000 1111010

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

مرحله بعدی با توجه به جدول PC2 نشان داده شده در زیر ، مجوز دیگری است:

des-3a

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

هر یک از 16 کلید به دست آمده در فرآیند تغییر ، اکنون مطابق جدول جابجا شده اند ، با شماره از موقعیت 14 به مکان اول ، 17 ام به دوم ، یازدهم به سوم و غیره منتقل می شود...

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

همچنین می توانید ببینید که قسمت بالای جدول دارای اعداد بین یک تا 28 است ، در حالی که نیمه پایینی عددی بین 29 تا 56 را نشان می دهد. این باعث می شود که نیمه های چپ و راست از زیرک های ما جداگانه باشد و در زیر فضای بزرگتر آن را نشان می دهد. وسط کلیدها.

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

دور یک:         010101 010101 101010 110100 101001 100101 101010 101010

دور دوم:         011010 110101 101110 110010 010100 110010 111101 101101

دور سه:     010100 100110 110110 101010 100110 011000 101011 011001

دور چهارم:         011001 110101 011001 110101 000011 001011 010101 010101

دور پنجم:         110101 001101 010101 010101 010011 001011 010111 100101

دور شش:           010111 110101 011001 111001 101001 100101 101010 101010

دور هفت:     110101 111010 101110 101010 100110 010110 111011 001110

دور هشتم:       011001 110101 010101 001001 010011 001011 010100 101010

دور نهم:         111011 011010 011110 100010 100010 010110 110011 110010

دور 10:             011010 010101 101110 101001 010010 010110 111000 101010

دور 11:             110101 001101 101110 101010 100101 100101 101010 001010

دور 12:             101001 100100 101001 101010 100110 011000 101011 011001

دور 13:             010010 010010 010101 010101 010110 110001 100101 101010

دور 14:             101001 100110 010101 011101 010001 001010 110010 111110

دور 15:             011001 011010 011001 110101 001001 011001 100101 101101

دور 16:             010010 100110 010101 010101 010001 101000 110010 111010    

این فرآیند تغییر در هر بیت از کلید اصلی استفاده شده در حدود 14 از 16 کلید زیر استفاده می کند ، اگرچه برخی از بیت ها کمی بیشتر از بقیه استفاده می شوند.

جابجایی اولیه

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

3des-12

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

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

بیایید اولین بلوک را از پیام "بیاییم به ساحل برویم" ، که ما در آن گرفته ایم ، برمی داریم مسدود کردن بخش زیر درک الگوریتم DES:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

از آنجا که سلول اول می گوید 58, ما شماره را از موقعیت 58 انتخاب می کنیم:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

سپس شماره را از موقعیت 50 می گیریم:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

و شماره از موقعیت 42:

01001100 01100101 01110100 00100111 01110011 00100000 01100111 01101111

این به ما می دهد "110" تا حالا. ما بقیه تعداد را تشکیل می دهیم:

11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001

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

تقسیم بلوک

پس از آنکه داده ها مجراي اوليه خود را پشت سر گذاشتند ، به دو نيم تقسيم مي شوند. ما بلوک خود را می گیریم که دقیقاً تحت نفوذ اولیه آن قرار گرفته است:

11010111 01001010 10101000 10011101 01001011 10110101 10000111 10101001

و ما آن را به دو بلوک ، یک بلوک سمت چپ (که از 32 رقم اول تشکیل شده است) جدا خواهیم کرد ، معروف به ل0:

ل0    11010111 01001010 10101000 10011101

و یک بلوک راست (که از 32 رقم دوم تشکیل شده است) معروف است ر0:

ر0    01001011 10110101 10000111 10101001

تابع F

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

  • جایگشت انبساط (E در نمودار)
  • مخلوط کردن کلید (⊕ در نمودار)
  • تعویض (هر یک از S1 ، S2 و غیره در نمودار)
  • جایگشت (P در نمودار)

دس 5

مجوز گسترش

جایگشت انبساط سه کار را انجام می دهد. مهمترین چیز این است که به بیت های داده ورودی اجازه می دهد تا بر خروجی دو بیت دیگر تأثیر بگذارند و باعث به وجود آمدن اثر بهمن می شود. همچنین نیمه 48 بیتی مناسب را ایجاد می کند ، به طوری که برای مرحله بعدی به اندازه اندازه زیرکمه است. تأثیر دیگر جایگشت انبساط این است که باعث می شود خروجی طولانی تر از ورودی باشد. این اجازه می دهد تا در عمل جایگزینی فشرده شود.

بیت ها مطابق جدول زیر تنظیم مجدد می شوند. برخی از بیت های جداگانه دو بار در جدول قرار دارند ، به این ترتیب که بلوک از 32 به 48 بیت گسترش می یابد:

des - 6a

از آنجا که سلول اول می گوید 32 ، ما بلوک سمت راست خود را برمی داریم و شماره را از موقعیت 32 انتخاب می کنیم ، دقیقاً مانند نمونه های دیگر جایگشت ذکر شده در بالا:

ر0    01001011 10110101 10000111 10101001

سپس اعداد را از موقعیت اول ، موقعیت دوم و غیره می گیریم ، درست تا زمانی که به گوشه سمت راست پایین بلوک برسیم. از آنجا که وجود دارد 1 در این سلول ، آخرین رقم نیز عددی خواهد بود که در موقعیت اول بلوک ما ظاهر می شود.

بیایید بگوییم که جایگشت انبساط بلوک جدید 48 بیتی را در اختیار ما قرار می دهد:

101110 100110 100100 000000 001100 001110 101101 011110

مخلوط کردن کلید

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

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

در رمزنگاری XOR:

0 + 0 = 0

1 + 0 = 1

1 + 1 = 0

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

1101

0101

هر رقم به رقم زیر آن اضافه می شود. با توجه به سه قانون نشان داده شده در بالا ، این نتیجه می دهد:

1000

برای تکمیل مرحله اختلاط کلید ، سمت راست بلوک خود را که تازه به 48 بیت و کلید دور اول گسترش داده ایم ، می گیریم. سپس علاوه بر این XOR را انجام می دهیم:

مسدود کردن:                      101110 100110 100100 000000 001100 001110 101101 011110

یک کلید دور:     010101 010101 101010 110100 101001 100101 101010 101010

نتیجه XOR:             111011 110011 001110 110100 100101 101011 000111 110100

نتیجه عملیات XOR سپس به دور بعدی منتقل می شود.

جانشینی

جانشینی باعث سردرگمی داده ها می شود. این به طور معمول با جداول جستجو انجام می شود ، که به جعبه های تعویض یا جعبه های S نیز شناخته می شوند. DES از هشت جدول جداگانه یا جعبه S استفاده می کند ، یک جدول متفاوت برای هر 6 بیت داده. جدول زیر هشت جعبه S DES را نشان می دهد:

des - 7

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

بیایید داده هایی را که ما تازه در مرحله قبل XORing به پایان رسانده ایم ، بگیریم:

111011 110011 001110 110100 100101 101011 000111 110100

ما به بخش اول 6 بیتی نگاه خواهیم کرد تا نحوه عملکرد فرایند جایگزینی را به شما نشان دهد:

111011

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

سپس چهار رقم میانی بخش 6 بیتی اول را می گیریم:

111011

و آنها را از باینری به اعشار تبدیل کنید. 1101 ترجمه به شماره 13.

حالا ، ما این دو عدد را می گیریم و به مرور در آنها نگاه می کنیم س1 جدول:

                des - 7a

شماره اول ما, 3, به ما می گوید که در ردیف سوم نگاه کنیم ، در حالی که شماره دوم ماست, 13 به ما می گوید که در ستون سیزدهم نگاه کنیم. مقدار در ردیف سوم ستون سیزدهم است 0.

اکنون که شماره خود را در جدول جستجو کردیم ، آن را به دودویی چهار رقمی تبدیل می کنیم. صفر معمولاً به صورت 0 به صورت باینری نوشته می شود ، اما 0000 همان است ، و این فرمی است که برای اهداف ما مناسب ترین است.

پس از این فرآیند ، جعبه S اولین بخش 6 بیتی داده های ما را تبدیل می کند (111011) به یک مقدار 4 بیتی متفاوت (0000) به نظر می رسد پیچیده است ، اما این تکنیک کمک می کند تا رابطه بین متن رمزنگاری و متن ساده ای که با آن در ارتباط است.

بخش 6 بیتی بعدی داده ها با همان فرآیند طی می شوند ، اما در عوض از جعبه S2 استفاده شده در بالا استفاده می کند. در بخش سوم از جدول S3 استفاده می شود و مواردی از این قبیل ، تا اینکه قسمت نهایی از طریق جدول S8 جایگزینی را انجام دهد.

باز هم ، ما می خواهیم برای بقیه ارزشها تقلب کنیم. بیایید بگوییم که جعبه های جایگزینی نتیجه ای از ما به ما می دهد:

0000 1010 1100 1001 0100 1001 0111 0001

هنگامی که هر بخش از داده ها جعبه S خود را پشت سر گذاشت ، به مرحله بعد حرکت می کند.

مجوز

آخرین مرحله از عملکرد F با استفاده از جدول زیر ، جایگشت دیگری است:des - 8a

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

بیایید بگوییم که این جابجایی نتیجه قبلی ما را می گیرد:

0000 1010 1100 1001 0100 1001 0111 0001

و به ما می دهد خروجی از:

0101 0110 1001 0101 0010 0100 0101 0010

اکنون که جایگشت به پایان رسیده است ، ما با چهار مرحله عملکرد F در این مرحله به پایان رسیده ایم. در نماد ریاضی ، این مقدار به عنوان شناخته می شود f (R0, ک1). این بدان معنی است که نتیجه عملکرد است (f) سمت راست اولیه بلوک (R0) و زیرک دور اول (ک1).

XOR با بلوک سمت چپ

به یاد داشته باشید که درست قبل از شروع مراحل عملکرد F ، بلوک را به نصف تقسیم می کنیم؟ ما سمت چپ بلوک (L0) را کنار می گذاریم ، در حالی که سمت راست تحت هر یک از این فرآیندها قرار دارد. خوب ، اکنون زمان آن فرا رسیده است که L0 دوباره وارد عمل شود.

ما سمت راست را که تازه پردازش کرده ایم می گیریم f (R0, ک1) و آن را به سمت چپ قدیمی اضافه کنید (ل0) با استفاده از رمزنگاری XOR. این به ما می دهد ر1, نتیجه دور اول ما:

f (R0, ک1):                         0101 0110 1001 0101 0010 0100 0101 0010

ل0:                                    1101 0111 0100 1010 1010 1000 1001 1101

نتیجه XOR (R1):              1000 0001 1101 1111 1000 1100 1100 1111

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

15 دور دیگر ...

اگر تاکنون به این نتیجه رسیده اید ، احتمالاً DES مانند یک روند دشوار به نظر می رسد. اما هنوز به پایان نرسیده است. این داده ها هرچند چهار مرحله از عملکرد F ، به دنبال آن ، XOR ، 15 بار دیگر ، برای کل 16 دور انجام می شود..

در دور دوم ، نسخه اصلی و دست نخورده سمت راست بلوک (R0) را می گیریم و آن را به عنوان سمت چپ جدید (L1) می سازیم. در ضمن نتیجه دور اول خود را می گیریم و از طریق عملکرد F ارسال می کنیم. همه چیز درست مثل دفعه قبل اتفاق می افتد ، اما این بار به جای آن از زیر مجموعه برای دور دوم استفاده می شود. بیایید بگوییم که این روند به ما نتیجه می دهد:

f (R1, ک2):        1011 0111 1000 1011 1001 1101 1001 1110

سپس نتیجه را با L1 می گیریم ، که در واقع R0 است (ما این را در نتیجه گرفتیم بلوک های تقسیم بخش). این نتیجه دور دوم ، R2 را به ما می دهد:

f (R1, ک2):           1011 0111 1000 1011 1001 1101 1001 1110

ل1:                      0100 1011 1011 0101 1000 0111 1010 1001

ر2:                     1111 1100 0011 1110 0001 1010 0011 0111

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

نمودار زیر نمایش بصری از آنچه اتفاق می افتد را نشان می دهد. IP نمایانگر جایگشت اولیه است ، F یک ایستادگی در کل عملکرد F است ، ⊕ نماد عملکرد XOR است و فلش ها نشان می دهد که هر طرف بلوک در حال حرکت بین چپ و راست است:

des-9

فرمول دقیق برای هر مرحله:

لن = رn-1

رن = لn-1 + f(رn-1,کن)

جایی که:

L = نیمه چپ بلوک (با شروع ابتدا از L0 شروع می شود)

R = نیمه راست بلوک (با شروع R0 هنگام تقسیم بلوک شروع می شود)

n = تعداد دور (ابتدا با 0 ، وقتی بلوک ابتدا تقسیم می شود)

f = عملکرد F

Kn = زیر مجموعه برای round n

طبق فرمول و نمودار ، در دور سوم ، R1 به نیمه سمت چپ جدید (L2) تبدیل می شود ، در حالی که R2 از طریق عملکرد F پردازش می شود. بیایید بگوییم که این نتیجه ای را به ما می دهد:

f (R2, ک3)        1001 0111 0000 1011 1101 0111 1011 1011

سپس مانند دور قبل نتیجه دور سوم (R3) خود را با استفاده از رمزگذاری XOR محاسبه می کنیم:

f (R2, ک3):           1011 0111 1000 1011 1001 1101 1001 1110

ل2:                      0100 1011 1011 0101 1000 0111 1010 1001

ر3:                      1111 1100 0011 1110 0001 1010 0011 0111

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

بیایید بگوییم که دور نهایی نتیجه ای را به ما می دهد:

1010 0101 0100 1011 1001 0001 0100 1000 0101 1010 1101 0001 1101 1001 1001 1101

جابجایی نهایی

این جابجایی معکوس permutation اولیه است و مجدداً هیچ ارزش امنیتی اضافی اضافه نمی کند. طبق جدول زیر داده ها را دوباره مرتب می کند:

des-10a

این جدول جایگشتی همانند نمونه های قبلی کار می کند. از آنجایی که این مرحله نهایی فرایند رمزگذاری است ، نتیجه متن رمزگذاری برای اولین بلوک "بیا بریم به سمت ساحل". بیایید بگوییم که بلوک رمزگذاری شده است:

0100 1001 0011 0010 1001 0101 0111 0100 1011 1010 0111 0101 0111 1010 0101 0101

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

U2FsdGVkX19Pienyu3w3q4zCd2IPKEPUWBzu3AeyVu2H3FeimZe6hA

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

رمزگشایی DES

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

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

بلوک ها روشن شده و نتیجه برای همان دور دوم طی همان مرحله طی می شود ، با این تفاوت که تنها 15 کلید فرعی اعمال می شود. این فرآیند تا مرحله شانزدهم ادامه دارد ، هنگامی که از زیر 1 استفاده می شود.

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

3DES

با ضعف و ضعف امنیتی DES ، 3DES به عنوان روشی برای گسترش اندازه کلیدی آن بدون نیاز به ایجاد یک الگوریتم کاملاً جدید پیشنهاد شد. 3DES بجای استفاده از یک کلید واحد مانند DES ، سه الگوریتم DES را با سه کلید 56 بیتی اجرا می کند:

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

در هر مرحله ، روند کامل DES همانطور که در بالا ذکر شد دنبال می شود.

حال ممکن است از شما سؤال شود که "چگونه می توانید اعمال رمزگشایی در مرحله دوم امنیت را تقویت کنید؟"

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

اما از آنجا که از کلید دیگری استفاده می کند ، فرایند رمزگشایی در واقع برای رمزگشایی داده ها مؤثر نیست. این ممکن است منطقی به نظر برسد ، اما رمزگشایی با یک کلید جداگانه فقط به فریب داده ها حتی بیشتر کمک می کند.

هنگامی که کلید دوم داده ها را رمزگشایی کرد ، کلید سوم برای رمزگذاری مجدد آن استفاده می شود. نتیجه متن رمزگذاری 3DES است.

3DES به این ترتیب ساختار یافته است زیرا این امکان را می دهد تا پیاده سازی ها با DES single key ، دو کلید DES و سه کلید DES سازگار باشند (این موارد در بخش زیر پوشش داده شده است). در صورت استفاده از رمزگذاری در هر سه مرحله ، این کار نمی کند.

گزینه های کلید سازی 3DES

از نظر فنی ، 3DES با سه تنظیم کلید مختلف قابل اجرا است. با وجود این ، گزینه دوم و سوم ناامن است و هرگز نباید عملی شود.

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

فرآیند 3DES: گزینه شماره گیری یکی

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

متن ساده وارد الگوریتم 3DES می شود و اول است رمزگذاری شده با کلید اصلی در مراحل زیر:

    • برنامه کلیدی - 16 کلید اصلی از کلید اصلی مشتق شده اند

    • جابجایی اولیه

    • بلوک به نیمه و چپ و راست تقسیم می شود

      • نیمه سمت راست از طریق عملکرد F ارسال می شود

        • مجوز گسترش

        • XOR با کلید فرعی برای دور

        • جانشینی

        • مجوز

      • XOR نتیجه عملکرد F با سمت چپ

      • سمت راست قدیمی را سمت چپ جدید قرار دهید و نتیجه سمت راست جدید را بگیرید

        مراحل بالا را 14 بار تکرار کنید

      • نیمه سمت راست از طریق عملکرد F ارسال می شود

        • مجوز گسترش

        • XOR با زیر مجموعه برای دور شانزدهم

        • جانشینی

        • مجوز

      • XOR نتیجه عملکرد F با سمت چپ

      • قسمت های چپ و راست بلوک را با هم ترکیب کنید

    • جابجایی نهایی

متن مورد رمزگذاری شده را با کلید یکی بردارید ، سپس آنرا ارسال کنید فرآیند رمزگشایی با کلید دو:

    • برنامه کلیدی - 16 کلید اصلی از دو کلید اصلی گرفته شده اند

    • جابجایی اولیه

    • بلوک به نیمه و چپ و راست تقسیم می شود

      • نیمه سمت راست از طریق عملکرد F ارسال می شود

        • مجوز گسترش

        • XOR با کلید فرعی برای دور (شروع از جعبه 16 برای رمزگشایی)

        • جانشینی

        • مجوز

      • XOR نتیجه عملکرد F با سمت چپ

      • سمت راست قدیمی را سمت چپ جدید قرار دهید و نتیجه سمت راست جدید را بگیرید

        مراحل بالا را 14 بار تکرار کنید

      • نیمه سمت راست از طریق عملکرد F ارسال می شود

        • مجوز گسترش

        • XOR با کلید فرعی برای دور اول

        • جانشینی

        • مجوز

      • XOR نتیجه عملکرد F با سمت چپ

      • قسمت های چپ و راست بلوک را با هم ترکیب کنید
    • جابجایی نهایی

داده هایی را که توسط کلید دو "رمزگشایی شده است" بگیرید و سپس آنرا از طریق enفرآیند رمزگذاری با کلید سه:

    • برنامه کلیدی - 16 کلید اصلی از سه کلید اصلی گرفته شده اند

    • جابجایی اولیه

    • بلوک به نیمه و چپ و راست تقسیم می شود

      • نیمه سمت راست از طریق عملکرد F ارسال می شود

        • مجوز گسترش

        • XOR با کلید فرعی برای دور

        • جانشینی

        • مجوز

      • XOR نتیجه عملکرد F با سمت چپ

      • سمت راست قدیمی را سمت چپ جدید قرار دهید و نتیجه سمت راست جدید را بگیرید

        مراحل بالا را 14 بار تکرار کنید

      • نیمه سمت راست از طریق عملکرد F ارسال می شود

        • مجوز گسترش

        • XOR با زیر مجموعه برای دور شانزدهم

        • جانشینی

        • مجوز

      • XOR نتیجه عملکرد F با سمت چپ

      • قسمت های چپ و راست بلوک را با هم ترکیب کنید

    • جابجایی نهایی

نتیجه متن رمزگذاری 3DES است.

امنیت 3DES

امنیت 3DES بستگی به این دارد که کدام گزینه keying مورد استفاده قرار می گیرد. گزینه Keying یک شامل سه کلید مختلف 56 بیتی است که طول کل آن 168 بیت است. طول حملات قابل توجه با حملات ملاقات ، میانه کاهش می یابد ، که امنیت دنیای واقعی آن را به 112 بیت می رساند.

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

گزینه های دو و سه کلیدهای قابل توجهی کوچکتر دارند و در برابر حملات شناخته شده-ساده ، و حملات متن انتخابی - و سایر موارد آسیب پذیر هستند..

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

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

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

امن 3DES است?

از آنجا که 3DES در چند سال آینده کاهش می یابد ، بهتر است از الگوریتم های دیگر استفاده کنید. اگرچه گزینه کلید زدن یکی هنوز هم برای بسیاری از برنامه ها امن است ، اما دلایل خوبی وجود ندارد که چرا باید به جای جایگزینی مانند AES مورد استفاده قرار گیرد.

اگرچه 3DES به عنوان پیگیری DES از اهمیت ویژه ای در رمزنگاری برخوردار است ، سالهای شکوه و عظمت آن به پایان رسیده و زمان آن رسیده است که ادامه یابد اگر می خواهید سیستم های خود را به خوبی در آینده تضمین کنید ، باید به جای آن از الگوریتم به روز استفاده کنید.

مربوط: انواع رمزگذاری رایج توضیح داده شده است

برنامه X توسط وزارت دفاع تحت مجوز CC0

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me

About the author

Leave a Reply

Your email address will not be published. Required fields are marked *

+ 86 = 96

Adblock
detector