ג'ון קלסי וטדיושי קונו פיתחו התקפה נגד מבנה מרקל דמגרד הנקראת "התקפת כינוס" (Herding attack). בהתקפה זו בהנחה שהמתקיף מסוגל למצוא התנגשויות מרובות בכוח גס הוא יכול תחילה להציג ערך גיבוב של מסר כלשהו ולאחר מכן "לכנס" כל התחלה של מסר נתון אחר כך שיתקבל ערך הגיבוב שהתחייב לו על ידי בחירת סיומת מתאימה. כלומר המתקיף מראה שהוא מצליח לייצר מסר עם תוספת כלשהי שהגיבוב שלו מתאים לערך הגיבוב הראשוני ובכך הוא הפר למעשה את ההנחה היסודית שלא ניתן למצוא מקור. הרעיון שלהם מסתמך על בחירת ערך גיבוב בצורה כזו שתקל על המתקיף במציאת מקור וההתקפה היא שיפור של הרעיון של Joux על ידי איזון בין זמן וזיכרון. בשלב הראשון המתקיף בוחר formula_70 ערכי ביניים אפשריים formula_98 וכן בוחר formula_99 בלוקים בודדים של מסרים כלשהם כאשר formula_21 הוא אורך הבלוק בסיביות. הוא מחשב את הפלטים של כל אחד מהבלוקים עם כל אחד מערכי הביניים, מתוך הרשימה הגדולה שקיבל הוא צפוי למצוא מספר התנגשויות. הוא שומר את כל הבלוקים שגרמו להתנגשות וחוזר על התהליך מספר פעמים עם ערכי הביניים שנמצאו. לאחר שהוא נשאר עם ערך ביניים אחד הוא משתמש איתו כדי לחשב את ערך הגיבוב שהוא מתחייב אליו. בשלב המקוון המתקיף צריך לבצע formula_101 פעולות גיבוב עד שהוא מוצא מסר שערך הביניים שלו תואם אחד כזה שנמצא ברשימה של formula_70 ערכים שהכין קודם. אם הוא נמצא ברשימה הוא יכול לקחת את הבלוק המתאים לו שאמור להוביל לערך הגיבוב שהתחייב. סיבוכיות ההתקפה כולה היא formula_103 פעולות הכנה באוף ליין וכן formula_101 פעולות און ליין והיא עשויה להיות פרקטית.
שיפורים.
ההתפתחויות האחרונות במציאת התנגשויות בפונקציות ממשפחת SHA הניעו חוקרים לחפש גישות שונות לפתרון הבעיה. נראה שקיימת חולשה מובנית בסגנון האיטרטיבי של הפונקציה. קיימות מספר אסטרטגיות לשיפור מבנה מרקל דמגרד, בהן:
השיטה הראשונה אפשרית בין היתר על ידי הפיכת פונקציית הגיבוב לפונקציית גיבוב אקראית בכך פוחתת התלות בביטחון הפונקציה הפנימית בעיקר בעמידות מפני התנגשויות. הרעיון הוא להפוך את הקלט לאקראי לפני העיבוד בפונקציית הגיבוב על ידי ערבוב עם ערך אקראי כלשהו שאינו סודי אך חייב להיות שונה עבור כל מסר, כך שהתנגשויות, אם יהיו, יוסתרו היטב על ידי הערך האקראי ויאלצו את המתקיף לעבוד קשה יותר למציאת התנגשויות כי כעת עליו להביא בחשבון את המיסוך בערך האקראי הנוסף. השיטה הזו שימושית במיוחד לחיזוק אלגוריתם חתימה דיגיטלית שמסתמך בין היתר על העמידות מפני התנגשויות של פונקציית הגיבוב הנלווית.
הרחבת הזיכרון או המצב הפנימי (internal state) של פונקציית הדחיסה מתגבר על החיסרון של המבנה האיטרטיבי של מרקל-דמגרד. במקרה זה מציאת התנגשויות פנימיות בערכי הביניים תהיה קשה כמו הפיכת הפונקציה כולה בהנחה שפונקציית הדחיסה טובה. שיטה זו שולבה באלגוריתם LAKE המהווה בסיס לפונקציית הגיבוב BLAKE.
להלן תקציר מספר שיטות מתקדמות של מבנה מרקל דמגרד שנועדו להתמודד עם הקריפטואנליזה המתוארת.
שיטת eMD שהיא קיצור של enveloped Merkle-Damgard הוצעה ב-2006 על ידי מיהיר בלייר ואחרים. והיא נועדה לחיזוק מבנה מרקל דמגרד על ידי שימור הפסאודו-אקראיות של הפונקציה הפנימית. eMD מורכב משני מנגנונים שמטרתם לשמר את תכונות הפונקציה הפנימית. הראשון ריפוד המסר הכולל שילוב קידוד אורך המסר בסופו המבטיח עמידות מפני התנגשויות והשני עטיפת הפונקציה הפנימית בפונקציה פנימית נוספת. המבנה פועל כדלהלן:
הפונקציה הפנימית היא מהצורה:
פונקציית המעטפת היא מהצורה:
היא פועלת על formula_109 כדלהלן:
כאשר formula_110 היא מבנה מרקל דמגרד הרגיל. בנוסף צריכה להיות פונקציית ריפוד מתאימה:
הפונקציה מקודדת את אורכו של formula_5 המסומן formula_113 בתוך 64 הסיביות האחרונות של המסר המרופד formula_114. וכן דרושים שני וקטורי אתחול formula_115 ו-formula_116 שונים וקבועים. כעת מבנה eMD הוא:
ב-2004 פרסמו פיליפ רוגווי ותומס שרימפטון מאמר חשוב לגבי הגדרות ותכונות של פונקציות גיבוב קריפטוגרפיות וציינו שבע תכונות יסודיות שפונקציית גיבוב כזו צריכה לעמוד בהן שהן וריאציות של עמידות מפני התנגשויות, מציאת מקור ראשון ומציאת מקור שני. על בסיס רעיונות אילו פותח המבנה ROX קיצור של Random Oracle XOR שמציע ביטחון טוב יותר ממבנה מרקל דמגרד. הרעיון הוא אם נתונה פונקציית דחיסה מהצורה formula_118. כאשר formula_119 הוא מקסימום אורך המסר בסיביות (למשל formula_120 מקובל). formula_71 קטן כגון formula_122 ו-formula_4 יכול להיות 160. ונתונים שני אורקלים אקראיים formula_124 וכן formula_125. אותם אפשר לבנות מצופן בלוקים עם קלט שונה בסיבית אחת. פונקציית הריפוד מקבלת את המסר formula_5 ומפיקה בלוקים של מסר מרופד כך:
הריפוד מוסיף למסר סיביות המיוצרות על ידי האורקל האקראי formula_128 כך שהבלוק האחרון יכיל לפחות formula_129 סיביות. ייתכן שיתווסף בלוק ריק בסוף המסר המכיל רק ריפוד. נתונה פונקציה formula_130 שמחזירה את השלם הגדול ביותר formula_131 כך שמתקיים formula_132 מחלק את formula_14. וכן הסימן formula_134 מייצג את formula_71 הסיביות הראשונות של formula_21. מבנה ROX מומחש בפסאודו קוד הבא:
מבנה ROX נחשב לבטוח ומשמר את כל התכונות הטובות שצוינו, במסגרת מודל אורקל אקראי.
HAIFA.
HAsh Iterative FrAmework בקיצור HAIFA הוצע ב-2009 על ידי אלי ביהם ואור דונקלמן כשיפור של מבנה מרקל-דמגרד. HAIFA משמר את התכונות הטובות של מבנה מרקל דמגרד תוך הוספה בביטחון וסקלביליות. הוא פשוט וגמיש, משמר את העמידות מפני התנגשויות של פונקציית הדחיסה, משפר את העמידות שלה נגד התקפת מקור שני ומקשה על התקפת נקודת שבת והתקפות מתקדמות אחרות. אפשר לראות ב-HAIFA כמודל פשוט המשלב יחד כמה מהרעיונות שהוצעו כמו eMD, ROX ו-RMC וניצול התכונות הטובות שלהם.
הרעיון הכללי של HAIFA הוא תוספת מונה וגיוון (salt) לתוך פונקציית הדחיסה. המונה מייצג את מספר הסיביות המצטבר שנקלטו עד כה בכל סבב של האיטרציה. וה-formula_137 הוא ערך אקראי כלשהו לא סודי. בשיטה זו פונקציית הדחיסה תראה כך:
ערך הביניים מחושב על ידי:
כאשר formula_140 מייצג את מספר הסיביות שנקלטו עד עכשיו. כדי לגבב את המסר formula_5 והגיוון formula_142 יש לבצע את המהלכים הבאים:
ריפוד המסר של HAIFA דומה לשיטת הריפוד של מרקל דמגרד.
הכנת ה-IV דורשת עבודה נוספת כדי לתמוך בתמצית מסר באורכים שונים כפי שתקן SHA דורש. תחילה יש לעבד את וקטור האתחול. כלומר בהינתן formula_144 שנבחר על ידי המשתמש יש לחשב את:
את formula_21 מקודדים ב-formula_9 הסיביות הראשונות, מוסיפים '1' ולאחר מכן formula_160 אפסים. לאחר קריאה זו אפשר להמשיך ליתר הבלוקים של המסר. הקריאה הזו שונה מיתר הקריאות לפונקציה formula_146 והיא ייחודית בכך שבשיטה זו אפשר לחתוך את פלט פונקציית הגיבוב לכל אורך רצוי. בנוסף במקרים כאשר ידוע מראש שפלט קבוע באורכו אפשר לחשב מראש את הקריאה הזו ולקודד את התוצאה בתוך הפונקציה.
הוספת אורך תמצית המסר נועדה למנוע מצב שבו שני מסרים עם שני וקטורי אתחול שונים יפיקו ערך ביניים זהה. כמו כן שיטת HAIFA מסתמכת על כך שניתן להבחין בבלוק האחרון. זה אפשרי בשיטה זו כיוון שיש מונה. אם formula_162 וכן formula_163 אז זהו הבלוק האחרון של המסר וכן לא קיים אחריו בלוק ריפוד. אחרת קיימות שתי אפשרויות אם formula_164 אזי המשמעות היא שקיים בלוק נוסף שמכיל ריפוד, אחרת אם formula_165 זהו בלוק הריפוד עצמו שבמקרה אינו מכיל סיביות מהמסר כלל. למשל אם formula_166 ו-formula_167 ונניח ש-formula_168. היות ש-formula_4 מתחלק ב-512 נוסף בלוק ריפוד באורך 512 ובתחילתו תוספת 1 לאחריו 447 אפסים ובסופו קידוד האורך ב-64 ביט ומתקבל בסך הכול 2048. במקרה זה בבלוק האחרון formula_149.
מבנה HAIFA שולב בפונקציית הגיבוב BLAKE שהייתה מועמדת לתחרות פונקציות הגיבוב SHA-3 שהתקיימה ב-2008 ונוהלה על ידי NIST. וכן מהווה בסיס לגרסה המתקדמת BLAKE2.
בדומה למבנה מרקל דמגרד אפשר להוכיח שמבנה HAIFA משמר את עמידות הפונקציה הפנימית מפני התנגשויות. כאשר שיטת הריפוד ותוספת המונה יחד עם ה-formula_137 מקשים מאוד על מספר התקפות מתקדמות כמו התקפת נקודת שבת, התקפת רב-התנגשויות וכדומה. ה-formula_137 למעשה מקנה לפונקציה פסאודו-אקראיות. זה מאפשר להגדיר את ביטחון הפונקציה במודלים תאורטיים, זה מעביר את כל ההתקפות שהיו אפשריות במצב אוף ליין למצב און ליין כיוון שה-formula_137 אינו ידוע למתקיף מראש. ה-formula_137 אינו סודי והוא יכול להיות למעשה כל דבר תלוי יישום כמו נומרטור, מחרוזת זיהוי, חותם זמן או סתם מחרוזת אקראית. וכן הוא לא חייב להיות כאורך המסר אלא כאורך הבלוק בלבד.
שפירא
שפירא הוא שם משפחה נפוץ בקרב משפחות יהודיות שמוצאן מיהדות אשכנז ההיסטורית שהתפזרה לאורך השנים ברחבי יהדות אירופה.
ישנן מספר גרסאות למקורו. הגרסה הראשונה גורסת כי מקורו מהמילה "ספיר" (במובנו המקראי, כלומר, אבן החן לפיס לזולי), אבן החושן שייצגה את שבט יששכר ומזהה את המשפחה עם שבט זה. אפשרות נוספת היא שזוהי גרסה יידישאית לשם העיר שפייר (שפיירא) שבגרמניה. בעקבות עדויות לפיהן שם המשפחה קדם ליסוד העיר, טוענת המסורת המשפחתית שהעיר היא זו שקרויה על שם המשפחה. וריאנט נפוץ לשם זה הוא שפירו.
כור היתוך