مدرسه اینترنتی
آشنایی با الگوریتم MD5

1- خلاصه:
در این مقاله با الگوریتم "خلاصه پیام MD5" آشنا می شویم.
این الگوریتم یک رشته با طول متفاوت را به عنوان ورودی می گیرد و یک
"خلاصه پیام MD5" یا "اثر انگشت" با طول 128 بیت می سازد.
در این روش
اینکه دو پیام مختلف دارای یک "خلاصه پیام" باشند یا اینکه یک رشته از روی
یک "خلاصه پیام" ساخته شود غیر ممکن می باشد. این الگوریتم برای امضاهای
دیجیتال مناسب است، جایی که احتیاج به خلاصه کردن یک فایل بزرگ در یک
رشتهء امن و فشرده، قبل از کد کردن آن متن، در سیستم های کدینگ، با کلید
های خصوصی و عمومی آن سیستم مانند RSA (Rivest Shamir Adelman)
الگوریتم
MD5 برای داشتن سرعت بالا در ماشین های 32 بیتی طراحی شده است در عین حال
احتیاجی به جانشینی ها در جداول بزرگ ندارد. این الگوریتم را با کدهای
بسیار کمی می توان نوشت.
الگوریتم MD5 توسعه ای از الگوریتم MD4 می
باشد با این تفاوت که MD5 کمی کندتر از MD4 عمل می کند اما در طراحی آن
بسیار محافظه کارانه عمل شده است.
MD5 به این دلیل طراحی شد که حس
کردند MD4 به عنوان سرعت بالایی که داشت پذیرفته شده و از امنیت بالایی در
شرایط بحرانی برخوردار نمی باشد. MD4 برای سرعت بالا طراحی شده ولی احتمال
شکست آن در رمز کردنی موفق وجود دارد. MD5 کمی در سرعت کند شده با این
تفاوت که بیشترین امنیت را داراست. این الگوریتم حاصل تاثیر دادن نظرات
تعدادی از استفاده کنندگان MD4 به همراه مقادیری تغییر در ساختار الگوریتم
برای افزایش سرعت و قدرت آن می باشد. الگوریتم MD5 در این مکان عومی
قرارگرفته تا از آن استفاده و در صورت امکان استاندارد شود.

2- شرایط و نکات لازم:
در
این متن منظور از « کلمه» تعداد 32 بیت و «بایت» تعداد 8 بیت داده می
باشد. یک صف از بیت ها دارای خصوصیات طبیعی یک صف از بایتها می باشند که
هر گروه هشت تایی متوالی از بیتها یک بایت را تشکیل می دهند که پرارزش
ترین بیت در ابتدا قرار دارد. یک صف از بایت ها دقیقا مشابه یک صف 32 بیتی
از کلمات پردازش می شود. جایی که گروهی 4 تایی از توالی بایتها پردازش می
شوند، کم ارزش ترین بایت اولین بایت می باشد.
اجازه بدهید از x_i
بجای xi (x اندیس i ) استفاده کنیم و اگر مقدار اندیس یک عبارت محاسباتی
بود آن را در {} محدود می کنیم، مانند: x_{i-1} . همچنین از ^ به عنوان
علامت توان استفاده می کنیم، پس x^i یعنیx به توان i .
اجازه بدهید از
علامت «+» برای اضافه کردن دو کلمه به هم استفاده کنیم. از x<<<5
به عنوان عملگر چرخش بیتی در کلمات استفاده می شود کهx به اندازه 5 بیت به
چپ چرخش می کند.
از not (x) به عنوان عملگر نقیض بیتی، از X v Y به
عنوان عملگر فصل (or) و از X xor Y به عنوان عملگر exclusive or و از XY
به عنوان عملگر عطف (and) استفاده می کنیم.

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


m_0 m_1 ... m_{b-1}


برای آوردن خلاصه پیام 5 مرحله زیر را انجام می دهیم:

  • گام 1- اضافه کردن بیتهای نرم کننده:

طول
پیام مورد نظر به 448 به پیمانه 512 توسعه پیدا می کند به این معنی که اگر
به طول پیام 64 بیت اضافه شود، طولش مضربی از 512 خواهد بود. عمل توسعه
دادن همیشه اجرا می شود مگر اینکه طول پیام به صورت 448 به پیمانه 512
باشد.
عمل توسعه پیام یا نرم کردن آن به صورت زیر انجام می شود:
یک بیت [1] سپس تعدادی بیت


  • به پیام اضافه می شود.اضافه شدن بیت های 0 تا زمانی که طول رشته به 448 بر
    پایه 512 برسد، ادامه پیدا می کند. در این عمل حداقل یک بیت و حداکثر 512
    بیت اضافه خواهد شد.

  • گام 2- افزایش طول:
یک نمایش 64 بیتی
از b بیت پیام اولیه به آخر نتیجه گام قبل اضافه می شود. در بدترین حالت،
b بزرگتر از 64 بیت خواهد بود. در این حالت فقط 64 بیت کم ارزش b استفاده
خواهد شد.
هم اکنون طول پیام بدست آمده دقیقا معادل مضربی از 512 خواهد
بود. مشابه اینکه بگوییم، این پیام طولی معادل مضربی از16 کلمه دارد اجازه
بدهید M[0…N-1] را نمایانگر کلمات پیام بدست آمده بدانیم. (N مضربی از 16
می باشد.)

  • گام 3- یین بافر برای MD:
برای محاسبه خلاصه پیام یک
بافر 4 کلمه ای (A,B,C,D) استفاده می شود. هر کدام از A، B، Cو D یک ثبات
32 بیتی می باشند. این ثبات ها مطابق جدول زیر مقدار دهی می شوند (
بایتهای کم ارزش در ابتدا قرار دارند )


word A: 01 23 45 67
word B: 89 ab cd ef
word C: fe dc ba 98
word D: 76 54 32 10



  • گام 4- پردازش پیام در بلاک های 16 کلمه ای:
در
ابتدا 4 تابع کمکی تعریف می کنیم که هر کدام به عنوان ورودی سه کلمهء 32
بیتی می گیرد و برای خروجی یک کلمهء 32 بیتی تولید می کند.


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 یا توازن بیتی از ورودی هایش است. این گام از
یک جدول 64 عنصری T[1…64] ساخته شده از یک تابع مثلثاتی، استفاده می کند.
اجازه دهید T، I-امین عنصر جدول را مشخص می کند که برابر است با قسمت صحیح حاصلضرب 4294967296 در abs(sin(i))، به طوری که I به رادیان باشد.
کارهای زیر را انجام می دهید:



/* Process each 16-word block. */
   For i = 0 to N/16-1 do

     /* Copy block i into X. */
     For j = 0 to 15 do
       Set X[j] to M[i*16+j].
     end /* of loop on j */

     /* Save A as AA, B as BB, C as CC, and D as DD. */
     AA = A
     BB = B
     CC = C
     DD = D

     /* Round 1. */
     /* Let [abcd k s i] denote the operation
          a = b + ((a + F(b,c,d) + X[k] + T) <<< s). */
     /* Do the following 16 operations. */
     [ABCD  0  7  1]  [DABC  1 12  2]  [CDAB  2 17  3]  [BCDA  3 22  4]
     [ABCD  4  7  5]  [DABC  5 12  6]  [CDAB  6 17  7]  [BCDA  7 22  8]
     [ABCD  8  7  9]  [DABC  9 12 10]  [CDAB 10 17 11]  [BCDA 11 22 12]
     [ABCD 12  7 13]  [DABC 13 12 14]  [CDAB 14 17 15]  [BCDA 15 22 16]

     /* Round 2. */
     /* Let [abcd k s i] denote the operation
          a = b + ((a + G(b,c,d) + X[k] + T) <<< s). */
     /* Do the following 16 operations. */
     [ABCD  1  5 17]  [DABC  6  9 18]  [CDAB 11 14 19]  [BCDA  0 20 20]
     [ABCD  5  5 21]  [DABC 10  9 22]  [CDAB 15 14 23]  [BCDA  4 20 24]
     [ABCD  9  5 25]  [DABC 14  9 26]  [CDAB  3 14 27]  [BCDA  8 20 28]
     [ABCD 13  5 29]  [DABC  2  9 30]  [CDAB  7 14 31]  [BCDA 12 20 32]

     /* Round 3. */
     /* Let [abcd k s t] denote the operation
          a = b + ((a + H(b,c,d) + X[k] + T) <<< s). */
     /* Do the following 16 operations. */
     [ABCD  5  4 33]  [DABC  8 11 34]  [CDAB 11 16 35]  [BCDA 14 23 36]
     [ABCD  1  4 37]  [DABC  4 11 38]  [CDAB  7 16 39]  [BCDA 10 23 40]
     [ABCD 13  4 41]  [DABC  0 11 42]  [CDAB  3 16 43]  [BCDA  6 23 44]
     [ABCD  9  4 45]  [DABC 12 11 46]  [CDAB 15 16 47]  [BCDA  2 23 48]

     /* Round 4. */
     /* Let [abcd k s t] denote the operation
          a = b + ((a + I(b,c,d) + X[k] + T) <<< s). */
     /* Do the following 16 operations. */
     [ABCD  0  6 49]  [DABC  7 10 50]  [CDAB 14 15 51]  [BCDA  5 21 52]
     [ABCD 12  6 53]  [DABC  3 10 54]  [CDAB 10 15 55]  [BCDA  1 21 56]
     [ABCD  8  6 57]  [DABC 15 10 58]  [CDAB  6 15 59]  [BCDA 13 21 60]
     [ABCD  4  6 61]  [DABC 11 10 62]  [CDAB  2 15 63]  [BCDA  9 21 64]

     /* Then perform the following additions. (That is increment each
        of the four registers by the value it had before this block
        was started.) */
     A = A + AA
     B = B + BB
     C = C + CC
     D = D + DD

   end /* of loop on i */



  • گام 5- خروجی:
خلاصه
پیامی که به عنوان خروجی تولید می شود و عبارت است از A، B، C و D، که ما
با کم ارزش ترین بیت A شروع می کنیم و به با ارزش ترین بیت D خاتمه می
دهیم. این تعریف MD5 را کامل می کند.


4- نتیجه:
الگوریتم خلاصه
پیام MD5 به سادگی قابل اجرا می باشد و یک "اثر انگشت" یا "خلاصه پیام" از
پیام با طول اختیاری تولید می کند. گمان برده می شود که امکان مواجه شدن
با دو پیام که خلاصه پیام مشابهی دارند از رتبهء 64^2 و برای هر پیامی که
به آن یک خلاصه پیام داده شده است از رتبهء 128^2 می باشد.

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


برای رمز شکنی آنلاین این الگوریتم می توانید از سایت زیر بهره ببرید:
http://www.huehacker.info/

http://gorooh.parsiblog.com/PhotoAlbum/dars2/10e9328c176de902f34269074578f82d.gif

  نوشته شده در روز جمعه 88/4/5  ، تعداد


مطالب طلایی - کلیک کنید

آمــار سایت

بازدیــــد امـــــروز : 256
بازدیــــــــد دیـــــــــروز : 426
بازدیـــــــــد کــــــــــل : 1180807
تعـــــداد یادداشت هـــــــا : 3950
منوی اصلی

صفحـه اول سایـت

ساخت فروشگـاه اینترنتـــی

وبلاگ بسازید و کسب درآمد کنید

سایت عکس های متحـرک 

نظرات و پیشنهادات

فهرست موضوعی یادداشت ها

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

پاورپوینت فصل اول علوم تجربی هفتم( تجربه و تفکر )
پاورپوینت فصل سوم علوم تجربی پایه هفتم (اتم ها , الفبای زندگی )
پاورپوینت درس 10 فارسی چهارم دبستان (ابتدایی): باغچه ی اطفال (هم
پاورپوینت درس 7 فارسی چهارم دبستان (ابتدایی): مهمان شهر ما (انتظ
طرح درس و روش تدریس ریاضی پنجم، فصل1: معرفی میلیارد
پاورپوینت علوم اول، درس11: دنیای سرد و گرم
طرح درس ویژه دبیران درس ریاضی چهارم ابتدایی
طرح درس روزانه پایه ی چهارم درس ریاضی صفحه 49 درس آشنایی با ضرب
طرح درس آموزش حجم ریاضی پنجم
تحقیق درسی در مورد اهرم و انواع آن
تحقیق دانش آموزی با موضوع اسید و باز
طرح درس دو نامه، هدیه های آسمان پنجم
تحقیق درسی در مورد نورون عصبی
مقاله با موضوع فیثاغورس و قضیه آن
سوال و جواب علوم چهارم، درس بدن ما 1
[همه عناوین(3913)][عناوین آرشیوشده]

http://www.parsiblog.com/PhotoAlbum/riazi/6af5e218c7b634c3d7afd741834f59d2.jpg