MD4 הוא אלגוריתם תמצות מסרים הרביעי בסדרה, שפיתח רונלד ריבסט מהמכון הטכנולוגי של מסצ'וסטס בשנת 1990. האלגוריתם הוא חלק ממשפחה של פונקציות גיבוב קריפטוגרפיות לבדיקת שלמות ונכונות הקלט. פלט האלגוריתם הוא באורך 128 סיביות. האלגוריתם השפיע על פיתוחים מתקדמים יותר כגון MD5, SHA, ו-RIPEMD.

סבב יחיד של MD4

חולשתו של האלגוריתם הוצגה לראשונה על ידי דן בואר וסודלארס בכתב עת שהופיע ב-1991. באוגוסט 2004, דיווחו מדענים כי הצליחו ליצור התנגשויות ב-MD4 על ידי שימוש ב "התנגשויות יד" (התקפה על ידי התנגשויות ולא על ידי פונקציית הפוכה). כמו כן ההתקפה צלחה במציאת התנגשויות בפונקציות גיבוב חדשות יותר במשפחת MD4/MD5/SHA/RIPEMD. הזמן הממוצע למציאת התנגשות במחשב מודרני הוא כ-5 שניות.[1]

וריאנט של MD4 ממומש כיום ברשת לשיתוף קבצים הפופולרית eDonkey2000/ eMule.

פונקציות גיבוב של MD4 עריכה

המסר של 128 ביט (16 בתים) של MD4 כרגיל מיוצג על ידי 32 ספרות בבסיס הקסדצימלי. דוגמה לפנגרם עם הקוד MD4 שלו:

MD4("The quick brown fox jumps over the lazy dog") = 1BEE69A46BA811185C194762ABAEAE90

אפילו שינוי קטן בקלט יוביל לשינוי דרסטי בקוד ה MD4: למשל אם נשנה את האות d לאות c נקבל:

MD4("The quick brown fox jumps over the lazy cog") = B86E130CE7028DA59E672D56AD0113DF

הקוד של מחרוזת בגודל אפס תהיה:

MD4("") = 31D6CFE0D16AE931B73C59D7E0C089C0

הערות שוליים עריכה