در این مقاله با الگوریتم “خلاصه پیام
MD5″ آشنا می شویم. این الگوریتم یک رشته با طول متفاوت را به عنوان ورودی
می گیرد و یک “خلاصه پیام MD5″ یا “اثر انگشت” با طول ۱۲۸ بیت می سازد.
در این روش اینکه دو پیام مختلف دارای یک “خلاصه پیام” باشند یا اینکه یک
رشته از روی یک “خلاصه پیام” ساخته شود غیر ممکن می باشد. این الگوریتم
برای امضاهای دیجیتال مناسب است، جایی که احتیاج به خلاصه کردن یک فایل
بزرگ در یک رشتهء امن و فشرده، قبل از کد کردن آن متن، در سیستم های
کدینگ، با کلید های خصوصی و عمومی آن سیستم مانند RSA (Rivest Shamir
Adelman)
الگوریتم MD5 برای داشتن سرعت بالا در ماشین های ۳۲ بیتی طراحی شده است در
عین حال احتیاجی به جانشینی ها در جداول بزرگ ندارد. این الگوریتم را با
کدهای بسیار کمی می توان نوشت.
الگوریتم MD5 توسعه ای از الگوریتم MD4 می باشد با این تفاوت که MD5 کمی
کندتر از MD4 عمل می کند اما در طراحی آن بسیار محافظه کارانه عمل شده است.
MD5 به این دلیل طراحی شد که حس کردند MD4 به عنوان سرعت بالایی که داشت
پذیرفته شده و از امنیت بالایی در شرایط بحرانی برخوردار نمی باشد. MD4
برای سرعت بالا طراحی شده ولی احتمال شکست آن در رمز کردنی موفق وجود
دارد. MD5 کمی در سرعت کند شده با این تفاوت که بیشترین امنیت را داراست.
این الگوریتم حاصل تاثیر دادن نظرات تعدادی از استفاده کنندگان MD4 به
همراه مقادیری تغییر در ساختار الگوریتم برای افزایش سرعت و قدرت آن می
باشد. الگوریتم MD5 در این مکان عومی قرارگرفته تا از آن استفاده و در
صورت امکان استاندارد شود.
در
این مقاله با الگوریتم “خلاصه پیام MD5″ آشنا می شویم. این الگوریتم یک
رشته با طول متفاوت را به عنوان ورودی می گیرد و یک “خلاصه پیام MD5″ یا
“اثر انگشت” با طول ۱۲۸ بیت می سازد.
در این روش اینکه دو پیام مختلف دارای یک “خلاصه پیام” باشند یا اینکه یک
رشته از روی یک “خلاصه پیام” ساخته شود غیر ممکن می باشد. این الگوریتم
برای امضاهای دیجیتال مناسب است، جایی که احتیاج به خلاصه کردن یک فایل
بزرگ در یک رشتهء امن و فشرده، قبل از کد کردن آن متن، در سیستم های
کدینگ، با کلید های خصوصی و عمومی آن سیستم مانند RSA (Rivest Shamir
Adelman)
الگوریتم MD5 برای داشتن سرعت بالا در ماشین های ۳۲ بیتی طراحی شده است در
عین حال احتیاجی به جانشینی ها در جداول بزرگ ندارد. این الگوریتم را با
کدهای بسیار کمی می توان نوشت.
الگوریتم MD5 توسعه ای از الگوریتم MD4 می باشد با این تفاوت که MD5 کمی
کندتر از MD4 عمل می کند اما در طراحی آن بسیار محافظه کارانه عمل شده است.
MD5 به این دلیل طراحی شد که حس کردند MD4 به عنوان سرعت بالایی که داشت
پذیرفته شده و از امنیت بالایی در شرایط بحرانی برخوردار نمی باشد. MD4
برای سرعت بالا طراحی شده ولی احتمال شکست آن در رمز کردنی موفق وجود
دارد. MD5 کمی در سرعت کند شده با این تفاوت که بیشترین امنیت را داراست.
این الگوریتم حاصل تاثیر دادن نظرات تعدادی از استفاده کنندگان MD4 به
همراه مقادیری تغییر در ساختار الگوریتم برای افزایش سرعت و قدرت آن می
باشد. الگوریتم MD5 در این مکان عومی قرارگرفته تا از آن استفاده و در
صورت امکان استاندارد شود.
۳- توضیحات الگوریتم MD5:
فرض کنید ما b بیت پیام
به عنوان ورودی داریم و تصمیم داریم خلاصه پیام آن را بدست آوریم. b در
اینجا یک عدد نا منفی و صحیح است، b می تواند مقدار صفر داشته باشد و هیچ
محدودیتی برای مضرب هشت بودن آن نیست و به هر اندازه می تواند بزرگ باشد.
فرض کنید بیت های این پیام را بشود به صورت زیر نوشت:
m_0 m_1 … m_{b-1} |
برای آوردن خلاصه پیام ۵ مرحله زیر را انجام می دهیم:
گام ۱- اضافه کردن بیتهای نرم کننده:
طول پیام مورد نظر به ۴۴۸ به پیمانه ۵۱۲ توسعه پیدا می کند به این معنی که
اگر به طول پیام ۶۴ بیت اضافه شود، طولش مضربی از ۵۱۲ خواهد بود. عمل
توسعه دادن همیشه اجرا می شود مگر اینکه طول پیام به صورت ۴۴۸ به پیمانه
۵۱۲ باشد.
عمل توسعه پیام یا نرم کردن آن به صورت زیر انجام می شود:
یک بیت [۱] سپس تعدادی بیت [۰] به پیام اضافه می شود.اضافه شدن بیت های ۰
تا زمانی که طول رشته به ۴۴۸ بر پایه ۵۱۲ برسد، ادامه پیدا می کند. در این
عمل حداقل یک بیت و حداکثر ۵۱۲ بیت اضافه خواهد شد.
گام ۲- افزایش طول:
یک نمایش ۶۴ بیتی از b بیت پیام اولیه به آخر نتیجه گام قبل اضافه می شود.
در بدترین حالت، b بزرگتر از ۶۴ بیت خواهد بود. در این حالت فقط ۶۴ بیت کم
ارزش b استفاده خواهد شد.
هم اکنون طول پیام بدست آمده دقیقا معادل مضربی از ۵۱۲ خواهد بود. مشابه
اینکه بگوییم، این پیام طولی معادل مضربی از۱۶ کلمه دارد اجازه بدهید
M[0…N-1] را نمایانگر کلمات پیام بدست آمده بدانیم. (N مضربی از ۱۶ می
باشد.)
گام ۳- یین بافر برای MD:
برای محاسبه خلاصه پیام یک بافر ۴ کلمه ای (A,B,C,D) استفاده می شود. هر
کدام از A، B، Cو D یک ثبات ۳۲ بیتی می باشند. این ثبات ها مطابق جدول زیر
مقدار دهی می شوند ( بایتهای کم ارزش در ابتدا قرار دارند )
word A: 01 23 45 67 word B: 89 ab cd ef word C: fe dc ba 98 word D: 76 54 32 10 |
گام ۴- پردازش پیام در بلاک های ۱۶ کلمه ای:
در ابتدا ۴ تابع کمکی تعریف می کنیم که هر کدام به عنوان ورودی سه کلمهء
۳۲ بیتی می گیرد و برای خروجی یک کلمهء ۳۲ بیتی تولید می کند.
F(X,Y,Z) = XY v not(X) Z G(X,Y,Z) = XZ v Y not(Z) H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X v not(Z)) |
در هر موقعیت بیتی، F به عنوان شرط عمل می کند: اگر X آنگاه Y در غیر
این صورت Z. تابع F می توانست طوری تعریف شود که به جای استفاده از v از +
استفاده کند چون XY و not(X) هرگز یک هایی در موقعیت بیتی یکسان نخواهد
داشت. جالب است به یاد داشته باشید که اگر بیت های X، Y و Z مستقل و غیر
مرتبط باشند، هر بیت از F(X, Y, Z) مستقل و غیر مرتبط خواهد بود.
توابع G، H و I شبیه تابع F هستند، به طوری که آنها در “توازی بیتی” کار
می کنند تا خروجی شان را از بیت های X، Y و Z تولید کنند. در چنین روشی
اگر بیت های متناظر X، Y و Z مستقل و غیر مرتبط باشند، آنگاه هر بیت از
G(X, Y, Z)، H(X, Y, Z) و I(X, Y, Z) مستقل و غیر مرتبط خواهند بود.
توجه داشته باشید که تابع H، تابع XOR یا توازن بیتی از ورودی هایش است.
این گام از یک جدول ۶۴ عنصری T[1…۶۴] ساخته شده از یک تابع مثلثاتی،
استفاده می کند. اجازه دهید T[i]، I-امین عنصر جدول را مشخص می کند که
برابر است با قسمت صحیح حاصلضرب ۴۲۹۴۹۶۷۲۹۶ در abs(sin(i))، به طوری که I
به رادیان باشد.
کارهای زیر را انجام می دهید:
// Process each 16-word block. For i = 0 to N/16-1 do // Copy block i into X. // Save A as AA, B as BB, C as CC, and D as DD. // Round 1. // Round 2. // Round 3. // Round 4. // Then perform the following additions. (That is increment each end // of loop on i |
گام ۵- خروجی:
خلاصه پیامی که به عنوان خروجی تولید می شود و عبارت است از A، B، C و D،
که ما با کم ارزش ترین بیت A شروع می کنیم و به با ارزش ترین بیت D خاتمه
می دهیم. این تعریف MD5 را کامل می کند.
۴- نتیجه:
الگوریتم خلاصه پیام MD5 به سادگی قابل اجرا می باشد و یک “اثر انگشت” یا
“خلاصه پیام” از پیام با طول اختیاری تولید می کند. گمان برده می شود که
امکان مواجه شدن با دو پیام که خلاصه پیام مشابهی دارند از رتبهء ۶۴^۲ و
برای هر پیامی که به آن یک خلاصه پیام داده شده است از رتبهء ۱۲۸^۲ می
باشد.
الگوریتم MD5 برای نقاط ضعف به دقت بررسی شده است. به هر حال این الگوریتم نسبتا جدید است و تحلیل امنیتی بیشتری را طلب می کند .
برگرفته از سایت IRAN PHP