الگوريتم های رمزنگاری قالبی متقارن
در این بخش مقاله بررسی الگوريتم های رمزنگاری قالبی متقارن را آماده کردیم که بر اساس کتاب اصول امنیت شبکه های کامپیوتری نوشته استالینگز می باشد. در ادامه با ما همراه باشید تا توضیحات مفصلی در رابطه الگوریتم های DES – 3DES – AES ارائه کنیم.
الگوريتم های رمزنگاری قالبی متقارن
معمول ترین الگوریتم های بکار گرفته شده برای رمزنگاری متقارن، رمزهای قالبی هستند. یک رمز قالبی، متن ساده ورودی را در قالب بلوک هائی با اندازه ثابت پردازش کرده و یک بلوک متن رمز شده با همان اندازه را، برای هر بلوک متن ساده تولید می کند. در این بخش سه نوع از مهم ترین رمزهای قالبی متقارن را مورد بررسی قرار می دهیم که شامل موارد زیر می باشد.
- الگوریتم استاندارد رمزنگاری دیتا (DES)
- الگوریتم DES سه گانه (3DES)
- الگوریتم استاندارد رمزنگاری پیشرفته (AES)
استاندارد رمزنگاری دیتا (Data Encryption Standard – DES)
پراستفاده ترین روش رمزنگاری، بر مبنای استاندارد رمزنگاری دیتا (DES) قرار دارد که در سال 1977 توسط دفتر ملی استانداردها در آمریکا که امروز مؤسسه ملی استانداردها و تکنولوژی (NIST) خوانده می شود، تحت عنوان استاندارد فدرال پردازش اطلاعات 46 (FIP PUB46) پذیرفته شد. از خود الگوریتم، با نام الگوریتم رمزنگاری دیتا (DEA) یاد می شود.
توصیف الگوریتم
متن ساده دارای طول 64 بیت بوده و طول کلید 56 بیت است، متون ساده طویل تر در بلوک های 64 بیتی مورد پردازش قرار می گیرند. ساختار الگوریتم DES تقریبا همان ساختار شبكه Feistel با کمی تغییرات است. 16 دور پردازش وجود دارد؛ از کلید اولیه ۵۴ بیتی، شانزده زیر کلید تولید می شود که هر کدام در یک دور پردازش مورد استفاده قرار می گیرند. نحوه رمزگشایی با الگوریتم DES ضرورتا شبیه نحوه رمزنگاری با آن است. قاعده چنین است: متن رمز شده را به عنوان ورودی الگوریتم DES بکار برده ولی از زیر کلیدها با نظم معکوس استفاده کنید. یعنی در اولین تکرار کلید K16 در دومین تکرار کلید K15، و بهمین نحو جلو رفته و در شانزدهمین و آخرین تکرار کلید K1 را بکار برید.
شکل 2: روند عملکرد الگوریتم DES
توانایی الگوریتم DES
نگرانی نسبت به توانائی روش رمزنگاری DES در دو مقوله جدا قرار دارد: نگرانی در مورد خود الگوریتم و نگرانی در مورد استفاده از یک کلید 54 بیتی، اولین نگرانی، در رابطه با امکان شکستن رمز با استفاده از بکارگیری مشخصه های الگوریتم DES است.
در طول سالیان گذشته، تلاش های بسیاری برای کشف و سوء استفاده از نقاط ضعف الگوریتم DES انجام شده و به همین مناسبت DES الگوریتمی است که بیش از همه مورد مطالعه قرار گرفته است. با وجود تلاش های فراوان، تا کنون (تا سال 2007) کسی نتوانسته است که یک ضعف حیاتی در DES پیدا کند.
نگرانی جدی تر مربوط به طول کلید است؛ با کلیدی با طول 56 بیت، تعداد 256 کلید ممکن وجود دارد که تقریبا 7.2 * 1016 کلید است. بنابراین در صورت ظاهر، یک حمله همه جانبه غیر عملی خواهد بود. با فرض اینکه بطور متوسط نصف فضای کلید را بایستی برای یافتن آن جستجو کرد، اگر قرار باشد یک ماشین تنها که در هر میکروثانیه یک فقره رمزگشایی DES را انجام می دهد بکار گرفته شود، بیش از هزار سال طول خواهد کشید تا رمز شکسته شود (جدول زیر را بررسی نمائید).
شکل 3: ساختار الگوریتم DES
اما فرض یک رمزنگاری در هر میکروثانیه بیش از حد، محافظه کارانه است. بالاخره و بطور قطعی در ماه جولای سال 1998 اثبات گردید که DES نا امن است. دلیل امر این بود که (Electronic Frontier Foundation – EFF) اعلام کرد که رمز یک DES را با استفاده از یک ماشین مخصوص DES cracker که با هزینه کمتر از 250.000 دلار ساخته شده است، شکسته است که این حمله کمتر از سه روز طول کشیده بود.
شکل 4: کرک پسورد
توصیف مفصلی از ماشین مزبور توسط EFF منتشر شد و تا دیگران نیز بتوانند رمز شکن خود را بسازند [EFF98] و البته با توجه به اینکه با افزایش سرعت، قیمت سخت افزارها پائین می آید، DES بطور ضمنی بی ارزش خواهد شد. و مهم است توجه شود که در حمله جستجوی کلید، نکات مهم تری نیز سوای جستجوی همه کلیدها وجود دارد. به غیر از موردی که واقعا یک متن ساده در دسترس باشد، یک تحلیل گر بایستی یک متن ساده را به عنوان متن ساده تشخیص دهد. اگر پیام صرفا یک متن ساده به زبان انگلیسی باشد در این صورت نتیجه به سهولت استخراج خواهد شد، اگرچه وظیفه شناخت زبان انگیسی را باید خودکار نمود.
اگر متن پیام قبل از رمزنگاری فشرده شده باشد، شناخت آن دشوارتر خواهد شد و اگر پیام نمونه عام تری از دیتا، همانند یک فایل عددی بوده و فشرده سازی هم شده باشد، مشکل تحلیل خودکار آن باز هم پیچیده تر خواهد گردید. بنابراین برای فراهم آوردن روش همه جانبه، مقداری دانش در مورد متن ساده مورد نیاز بوده و همچنین لازم است تا وسیله ای برای تمیز دادن متن ساده از یک متن بی معنی بصورت خودکار وجود داشته باشد. روش EFF این مقوله را مورد توجه قرار داده و همچنین تکنیک های خود کاری را که در برخی زمینه ها مؤثرند، معرفی می کند.
شکل 5
یک نکته نهائی: اگر تنها فرم ممکن حمله نسبت به یک الگوریتم رمزنگاری، حمله همه جانبه باشد، آنگاه روش مقابله با آن کاملا روشن بوده و آن استفاده از کلیدهای طولانی تر است. برای این که ایده ای نسبت به اندازه کلید مورد نیاز پیدا کنیم، اجازه دهید تا از رمز شکن EFF برای تخمین امر استفاده نمائیم. EFF cracker یک نمونه منحصر بفرد بوده و ما می توانیم فرض کنیم که با تکنولوژی امروز، ساخت یک ماشین سریع تر مقرون بصرفه تر است. اگر فرض کنیم که یک رمز شکن بتواند در هر میکروثانیه یک میلیون رمز گشایی انجام دهد، که نرخی است که در جدول بالا از آن استفاده شده است، آنگاه تقریبا 10 ساعت طول خواهد کشید تا یک رمز DES شکسته شود. سرعت این رمز شکنی تقریبا 7 برابر بیشتر از نتیجه EFF است. با استفاده از این نرخ، نمودار زیر نشان می دهد که چقدر طول خواهد کشید تا الگوریتمی با فرم DES را بر حسب تابعی از اندازه کلید شکست.
به عنوان مثال برای یک کلید 128 بیتی، که در الگوریتم های فعلی (تا سال 2007) مرسوم است، بیش از 10 سال طول خواهد کشید تا بتوان رمزی را، با استفاده از رمز شکن EFF شکست. حتی اگر بتوان سرعت رمزشکن را با فاکتور یک تریلیون (1012) افزایش داد، بازهم یک میلیون سال طول خواهد کشید تا رمز شکسته شود. بنابراین یک کلید 128 بیتی برای استفاده در الگوریتمی که در مقابل حمله همه جانبه شکست ناپذیر باشد، یک انتخاب تضمین شده است.
شکل 6: زمان شكستن يک رمز ( با فرض 106 رمزگشائی در هر ميكروثانيه)
الگوریتم DES سه گانه (Triple DES – 3DES)
الگوریتم DES سه گانه (Triple DES – 3DES) اولین بار در سال 1985 برای استفاده در کاربردهای مالی، با نام X9.17 در استانداردهای ANSI ثبت گردید. روش 3DES با انتشار FIPS PUB 46.3 در سال 1999 به عنوان بخشی از استاندارد رمزنگاری دیتا (DES) بکار گرفته شد. الگوریتم 3DES از سه کلید و سه بار اجرای الگوریتم DES استفاده می کند. تابع از یک دنباله رمزنگاری – رمزگشائی – رمزنگاری (EDE) تبعیت می کند (شکل 7 – بخش الف):
C = E(K3 , D(K3 , E(K1 , P)))
که در آن
متن رمز شده C = (ciphertext)
متن ساده P = (plaintext)
رمزنگاری X با استفاده از کلید E [K,X] = K
رمزگشائی Y با استفاده از کلید D [K,X] = K
رمزگشائی بسادگی همان عملیات قبل است که ترتیب کلیدها در آن عوض شده است. (شکل 7 – بخش ب):
P = D(K1 , E(K2 , D(K3 , C)))
از نظر رمزنگاری، هیچ ویژگی خاصی در استفاده از رمز گشائی مرحله دوم رمزنگاری 3DES وجود ندارد. تنها حسن آن این است که به کاربران 3DES اجازه میدهد تا داده هائی را که توسط فرم قدیمی DES رمزنگاری شده بودند، رمز گشائی نمایند:
C = E(K1 , D(K1 , E(K1 , P))) = E[K , P]
با سه کلید متمایز، 3DES دارای کلیدی با طول مؤثر 168 بیت است. FIPS 46.3 همچنین استفاده از دو کلید، K1 = K3 را اجازه میدهد که در این مورد طول کلید 112 بیت خواهد بود. FIPS 46.3 شامل سه دستورالعمل زیر برای 3DES است:
- الگوریتم 3DES روش رمزنگاری متقارن منتخب و تأئید شده توسط FIPS است.
- الگوریتم DES اولیه که از یک کلید 56 بیتی استفاده می کند و تنها در استاندارد سیستم هائی که وارث آن هستیم مجاز می باشد. ساختار های جدید بایستی از 3DES حمایت نمایند.
- توصیه می شود که سازمان های دولتی، سیستم های موروثی DES را با 3DES تعویض نمایند.
- پیش بینی می شود که 3DES و AES در کنار هم، به عنوان الگوریتم های پذیرفته شده FIPS همزیستی داشته و در طول زمان بتدریج 3DES حذف و AES استاندارد غالب شود.
به سهولت می توان دریافت که 3DES یک الگوریتم نیرومند است. چون الگوریتم رمزنگاری بستر آن DEA (Data Encryption Algorithm) است، 3DES می تواند در مقابل تلاش های مربوط به کشف رمز، همان ادعاهای DEA را داشته باشد. علاوه بر آن با یک کلید 168 بیتی، حمله همه جانبه به آن عملا غیرممکن است. بالاخره و در نهایت قرار است AES جایگزین 3DES شود، ولی این تحول سال ها طول خواهد کشید (این نوشته برای 2007 است). NIST پیش بینی می کند که 3DES برای آینده ای قابل پیش بینی، الگوریتم موفقی باشد.
شکل 7: ساختار کلی Triple DES یا 3DES
استاندارد رمزنگاری پیشرفته (Advanced Encryption Standard – AES)
الگوریتم 3DES دارای دو جاذبه است که استفاده گسترده از آن در چند سال آینده را تضمین می کند (این نوشته برای 2007 است). اولا با طول کلید 168 بیتی خود، بر آسیب پذیری های ناشی از حمله همه جانبه در DEA غلبه می کند. ثانيا الگوریتم رمزنگاری 3DES همان DEA است. این الگوریتم بیش از هر الگوریتم رمزنگاری دیگر در طول زمان مورد رسیدگی دقیق قرار گرفته و هیچ نوع آسیب پذیری، بجز مورد حمله همه جانبه، در آن مشاهده نشده است. در نتیجه در مورد مقاومت 3DES در مقابل کشف رمز اعتماد زیادی وجود دارد. از این رو اگر فقط مسئله امنیت مورد توجه بود، 3DES الگوریتم انتخابی مناسبی برای رمزنگاری در طول دهه های آینده باقی می ماند.
مشکل اصلی 3DES این است که این الگوریتم از نظر نرم افزاری لخت است. DEA اولیه برای تجهیزات سخت افزاری سالهای میانه 1970 طراحی شده بود و کد نرم افزاری بهره وری را تولید نمی کند. 3DES که سه برابر DES عملیات اجرائی دارد، حتما کندتر خواهد بود. مشکل دوم این است که DEA و 3DES هر دو از یک بلوک دیتا با اندازه 64 بیت استفاده می کنند، به دلایلی که هم مربوط به بهره وری و هم مربوط به مسائل امنیتی می شود، استفاده از بلوکی با اندازه بزرگتر مطلوب تر است.
شکل 8: رمزگذاری و رمزگشائی
بعلت این مشکلات، 3DES در دراز مدت کاندیدای معقولی نیست. برای جانشینی آن با انتخاب بهتری، NIST در سال 1997، فراخوانی برای طراحی یک استاندارد رمزنگاری پیشرفته (AES) منتشر کرد که بایستی دارای توان امنیتی برابر و یا بهتر از 3DES و بهره وری قابل ملاحظه ای می بود. علاوه بر بیان نیازهای کلی، NIST مشخص نمود که AES بایستی یک رمز قالبی متقارن با طول بلوک 128 بیت بوده و از کلیدهائی با طول 128، 192، و 256 بیت پشتیبانی نماید. نکات مورد ارزیابی شامل امنیت، بهره وری محاسباتی، نیازهای مربوط به حافظه، تناسب سخت افزار و نرم افزار و قابلیت انعطاف اعلام گردید.
در اولین دور ارزیابی، 15 الگوریتم از بین پیشنهادها انتخاب شدند. در دور بعدی، 5 الگوریتم پذیرفته شدند. بالاخره NIST ارزیابی خود را به پایان رسانده و یک استاندارد نهائی (FIPS PUB 197) را در نوامبر سال 2001 منتشر نمود. Rijndael به عنوان الگوریتم انتخابی AES پذیرفته شد. در پژوهشگری که Rijndael را تهیه و ارائه کردند هر دو رمزنگارانی از بلژیک به نام های Dr. Joan Daemen و Dr. Vincent Rijmen بودند.
بررسی الگوریتم
الگوریتم AES از یک بلوک دیتا با طول 128 بیت و یک کلید که می تواند 128، 192، و یا 256 بیت باشد استفاده می کند. در این بررسی طول کلید را 128 بیت فرض می کنیم که احتمالا یکی از پر استفاده ترین آنها خواهد بود. شکل 9 که در زیر آمده است، ساختار کلی AES را نشان می دهد که ورودی الگوریتم های رمزنگاری و رمزگشائی یک بلوک منفرد 128 بیتی است. در 197 FIPS PUB این بلوک به صورت یک ماتریس مربعی از بایت ها تعریف شده است. این بلوک در رشته state کپی شده که در هر مرحله رمزنگاری یا رمزگشائی تعدیل می شود. بعد از آخرین مرحله، state در ماتریس خروجی کپی می شود. بطریق مشابه، کلید 128 بیتی به صورت یک ماتریس مربعی از بایت ها تعریف می شود. این کلید سپس بر اساس برنامه کلید (key schedule) گسترش می یابد. هر کلمه شامل ۴ بایت بوده و کل برنامه کلید، ۴۴ کلمه برای یک کلید 128 بیتی را تولید می کند.
نظم بایت ها در یک ماتریس، ستونی است، بنابراین برای مثال چهار بایت اول ورودی متن ساده 128 بیتی به رمزنگار، اولین ستون ماتریس ورودی، چهار بایت دوم ستون دوم و غیره را تشکیل می دهد. بطریق مشابه، اولین 4 بایت کلید گسترش یافته که یک کلمه را تشکیل می دهد، اولین ستون ماتریس w را می سازد.
شکل 9: رمزنگاری و رمزگشائی AES
موارد ذیل، نکاتی در مورد الگوریتم AES را روشن می سازد:
- یکی از خصوصیات قابل توجه این ساختار این است که یک ساختار Feistel نیست. بخاطر آورید که در ساختار کلاسیک Feistel یک نیمه از بلوک دیتا برای تغییر نیمه دیگر بکار میرفت و آنگاه دو نیمه جای خود را عوض می کردند. روش AES از ساختار Feistel استفاده نکرده بلکه در هر دور، کل بلوک دیتا را بصورت موازی بکار گرفته و جایگزینی و جابجائی را در آن انجام می دهد.
- کلیدی که در ورودی فراهم میشود، بصورت یک رشته 44 تائی از کلمات 32 بیتی [i]w گسترش می یابد. در هر دور 4 کلمه مجزا (128 بیت) بعنوان کلید دور مورد استفاده قرار می گیرد.
- از چهار عمل مختلف که یکی از آنها جابجائی و سه تای دیگر جایگزینی است استفاده می شود:
- بایت ها جابجا شوند: از یک جدول که S-box نامیده می شود استفاده کرده تا بایت به بایت بلوک را جابجا کند.
- سطرها شیفت داده شوند: یک جابجائی ساده که ردیف به ردیف انجام می شود.
- ستون ها مخلوط شوند: یک جابجائی که هر بایت یک ستون را بصورت تابعی از تمام بایتهای همان ستون تغییر می دهد.
- کلید دور اضافه شود: یک XOR ساده که بیتهای بلوک فعلی را با بخشی از کلید گسترش یافته XOR نماید.
- ساختار کاملا ساده است، هم برای رمزنگاری و هم برای رمزگشائی، رمز با یک مرحله اضافه کردن کلید دور (Add Round Key) شروع شده و بدنبال آن با نه دور دیگر که هر کدام شامل چهار مرحله است ادامه یافته و در انتها با سه مرحله در دور دهم خاتمه می یابد. شکل 10 که در زیر آمده است، سازمان یک دور رمزنگاری کامل را نشان میدهد.
شکل 10: یک دور عملیاتی AES
- تنها مرحله Add Round Key از کلید استفاده می کند، بهمین دلیل رمز با مرحله Add Round Key شروع و خاتمه می یابد. هر مرحله دیگر بدون نیاز به کلید قابل برگشت بوده و بنابراین چیزی به امنیت اضافه نمی کند.
- مرحله Add Round Key به تنهائی نیرومند نیست؛ سه مرحله دیگر بیت ها را مخلوط کرده ولی خود امنیتی را ایجاد نمی نمایند، زیرا از کلید استفاده نمی کنند. میتوان رمز را بصورت رمزنگاری (Add Round Key – XOR) یک بلوک و پس از آن در هم ریختن بلوک (سه مرحله دیگر) و بدنبال آن رمزنگاری XOR و غیره در نظر گرفت. این روش هم بهره ور و هم بغایت امن است.
شکل 11: مرحله Add Round Key
- هر مرحله به آسانی برگشت پذیر است. برای مراحل جابجائی بایت، شیفت ردیف، و مخلوط کردن ستون، یک تابع معکوس در الگوریتم رمز گشائی بکار رفته است. برای مرحله Add Round Key عمل عکس با XOR کردن همان کلید دور به بلوک حاصل می گردد زیرا A+A+B = B است.
- همانند اکثر رمزهای قالبی، الگوریتم رمز گشایی از کلید گسترش یافته با نظم معکوس استفاده می کند. با وجود این الگوریتم رمز گشایی شبیه الگوریتم رمزنگاری نیست. این نتیجه ساختار خاص AES است.
- وقتی روشن شد که هر چهار مرحله باز گشت پذیر هستند، آنگاه تأئید اینکه رمز گشائی متن ساده را احیاء خواهد کرد، آسان خواهد بود. شکل 8 رمزنگاری و رمز گشائی را در دو ستون کنار هم با جهت های مختلف نشان داده است. در هر سطح افقی (مثل خط چین ها در شکل)، state برای هم رمزنگاری و هم رمز گشائی یکی است.
- دور نهائی چه در عمل رمزنگاری و چه در عمل رمزگشائی فقط دارای سه مرحله است. بازهم این نتیجه ساختار خاص AES است و لازم است چنین باشد تا رمز باز گشت پذیر باشد.
منبع: کتاب اصول امنیت شبکه های کامپیوتری استالینگز
هیچ نظری ثبت نشده است