SHA-3

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

SHA-3 השלישי במשפחת האלגוריתמים Secure Hash Algorithm, בשמו המקורי Keccak[1] הוא פונקציית גיבוב קריפטוגרפית מבוססת על אלגוריתם RadioGatun שפותחה ב-2008 על ידי גוידו ברטוני, יוהאן דאמן ממפתחי AES, מיכאל פיטרס וגילס ואן אשה. פונקציית גיבוב הינה מרכיב חשוב בקריפטוגרפיה מודרנית וקיימת כמעט בכל מערכת כזו. הפונקציה מפיקה ערך ייחודי בגודל קבוע ממסר בכל אורך נתון ומטרתה להוות ייצוג קומפקטי או טביעת אצבע דיגיטלית של המסר.

SHA-3 מבצע חיבור ב-XOR של כל גושי המסר בזה אחר זה, עם מחרוזת סיביות שמופקת בתהליך פנימי ולאחר מכן מבצע פרמוטציה הפיכה במספר סבבים. SHA-3 משתמש בטכניקה הקרויה מבנה ספוגי שהוא מצב הפעלה המבוסס על תמורה בגודל קבוע וכלל ריפוד שמייצג פונקציית מיפוי של קלט באורך משתנה לפלט באורך משתנה הנקראת פונקציה ספוגית בשל העובדה שהיא מקבלת מחרוזת בינארית באורך דינאמי ומפיקה מחרוזת בינארית בכל גודל רצוי, בהתאם לפרמטרים. מעין הכלאה בין פונקציית גיבוב רגילה המפיקה פלט קבוע וצופן זרם שמקבל קלט קבוע, כאשר התוצאה מושגת על ידי איטרציה של הפונקציה הפנימית תוך כדי חפיפה של ערכי ביניים.

בגרסה המקורית הפונקציה הפנימית של אלגוריתם Keccak משתמשת באחת משבע תמורות אפשריות הנקראות Keccak-f[b]‎ כאשר b=25, 50, 100, 200, 400, 800 או 1600, בגרסת התקן נבחרה האפשרות הגבוהה ביותר דהיינו מצב הביניים של הפונקציה מורכב ממערך של 5x5 מילות בגודל 64 סיביות, סך הכל 1600 סיביות. כל תמורה מורכבת מפונקציה מחזורית פשוטה בדומה לצופן גושים אך ללא מפתח. החישובים מוגבלים לפעולות XOR, NOT, AND ורוטציה (Rotate) ללא פעולות אריתמטיות או פונקציות המבוססות על דטה חיצונית. בשל כך אין צורך ליישם טבלאות חיפוש לצורך האצת החישובים. לפי הצהרת המפתחים נדרשים 12.5 מחזורי שעון לבית במעבד אינטל ליבה כפולה. בגרסת החומרה שלו האלגוריתם הפגין ביצועים טובים יותר מכל המועמדים האחרים.

בהגדרה אלגוריתם זה אינו אמור להחליף את קודמו SHA-2 כיוון שטרם התגלתה התקפה מעשית או תאורטית כנגדו, אלא מהווה מעין השלמה או אופציה נוספת. הרעיון הוא ששילוב שתי פונקציות שונות משמעותית, מניב שיפור בביטחון המערכת, כיוון שלא סביר שתמצא התקפה אחת שתהיה יעילה כנגד שתיהן באותה מידה.

תחרות בחירת התקן[עריכת קוד מקור | עריכה]

המניע מאחורי פיתוח תקן SHA-3 הוא התפתחותן של טכניקות קרפיטואנליטיות חדשות וחשיפת חולשות תאורטיות ומעשיות באלגוריתמים הקודמים במשפחה MD5 וכן SHA-0 והתקפה תאורטית על SHA-1. ב-NIST ראו צורך לפתח פונקציית גיבוב חדשה שונה במבנה ובקונספט מקודמותיה, על מנת להרחיב את היצע הפונקציות במשפחה וסימנה יהיה SHA-3. לשם כך אורגנה תחרות פומבית (בדומה לתחרות לבחירת תקן AES שבסופה נבחר צופן הבלוקים Rijndael). מפתחי מערכות קריפטוגרפיות הגישו את הצעותיהם וסקירת המועמדים התבצעה על ידי מגוון רחב של קריפטוגרפים וחוקרים מכל העולם שניסו לאתר חולשות בהצעות הנדונות. התחרות הוכרזה באופן רשמי ב-2 בנובמבר 2007 ותאריך הגשת המועמדים נקבע ל-31 באוגוסט 2008. לתחרות הוגשו 64 מועמדים שמתוכם נפסלו 13 מועמדים שלא עמדו בתנאי הסף של התחרות‏[2].

ביולי 2009 הוכרזו 14 המועמדים שעברו לשלב השני של התחרות באמצעות אימייל שנשלח לרשימת התפוצה של התחרות. הקריטריונים בהם נעזר חבר השופטים היו: בטיחות האלגוריתם, עלות החישוב ומדידת ביצועים ומאפיינים הקשורים במימוש. חבר השופטים ציין במפורש שאף אחד מהאלגוריתמים שנבחרו לשלב השני לא נשבר במלואו. NIST אפשרה למועמדים שעברו לשלב זה לבצע שינוים קלים (Tweaks) באלגוריתמים שהגישו אך לא כאלה שיהפכו התקפות קיימות לבטלות‏[3].

בדצמבר 2010 הודיעה NIST על בחירת חמשת המועמדים הסופיים: Blake, Grøstl, JH, Skein ו-Keccak. באוקטובר 2012 הוכרז רשמית Keccak כאלגוריתם הזוכה בתחרות התקן וסומן כ-SHA-3.


קישורים חיצוניים[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]