מה זה SHAttered? תקיפות התנגשות 1, הסבר
ביום הראשון של 2016, מוזילה סיימה את התמיכה בטכנולוגיית אבטחה חלשה שנקראת SHA-1 בדפדפן האינטרנט פיירפוקס. כמעט מיד, הם הפכו את החלטתם, כפי שהוא היה לגישה כמה אתרים ישנים. אבל בפברואר 2017, הפחדים שלהם סוף סוף התגשם: חוקרים שבר את SHA-1 על ידי יצירת התקפה ראשונה בעולם התנגשות. הנה מה שכל זה אומר.
מה זה SHA-1?
SHA ב SHA-1 מייצג אלגוריתם Hash מאובטח, ופשוט, אתה יכול לחשוב על זה כעל סוג של בעיה במתמטיקה או שיטה מטשטש את הנתונים שהוכנסו לתוכו. פותח על ידי NSA ארצות הברית, זה מרכיב מרכזי של טכנולוגיות רבות המשמשים להצפין שידורים חשובים באינטרנט. שיטות הצפנה נפוצות SSL ו- TLS, שייתכן ששמעת עליהן, יכולות להשתמש בפונקציה hash כמו SHA-1 כדי ליצור את האישורים שנחתמו בסרגל הכלים של הדפדפן.
אנחנו לא נלך עמוק לתוך המתמטיקה ומדעי המחשב של כל הפונקציות SHA, אבל הנה הרעיון הבסיסי. "חשיש" הוא קוד ייחודי המבוסס על קלט של נתונים כלשהם. אפילו מחרוזת אקראית קטנה של אותיות לפונקציה חשיש כמו SHA-1 תחזיר מספר רב של תווים, מה שהופך אותו (פוטנציאלי) בלתי אפשרי להחזיר את מחרוזת תווים בחזרה את הנתונים המקוריים. כך פועל בדרך כלל אחסון סיסמה. כאשר אתה יוצר סיסמה, קלט הסיסמה שלך נשבר ומאוחסן על ידי השרת. עם ההחזר שלך, כאשר אתה מקליד את הסיסמה שלך, הוא שוב hashed. אם הוא תואם את hash המקורי, את ההנחה ניתן להניח להיות זהה, ואתה תקבל גישה לנתונים שלך.
פונקציות Hash הן שימושיות בעיקר משום שהן מאפשרות לקבוע בקלות אם הקלט, לדוגמה, קובץ או סיסמה, השתנה. כאשר הנתונים קלט הוא סוד, כמו סיסמה, חשיש כמעט בלתי אפשרי להפוך ולשחזר את הנתונים המקוריים (הידוע גם בשם "מפתח"). זה קצת שונה מ"הצפנה ", שמטרתה לערבב נתונים לצורך סילוקם מאוחר יותר, באמצעות צופן ומפתחות סודיים. Hashes נועדו פשוט להבטיח את שלמות הנתונים - כדי לוודא שהכל הוא אותו דבר. Git, בקרת גרסאות ותוכנה הפצה עבור קוד פתוח, משתמש SHA-1 hashes מסיבה זו מאוד.
זה הרבה מידע טכני, אבל במילים פשוטות: חשיש זה לא אותו דבר כמו הצפנה, מאז הוא משמש לזיהוי אם הקובץ השתנה.
כיצד הטכנולוגיה הזו משפיעה עלי?
נניח שאתה צריך לבקר באתר באופן פרטי. הבנק שלך, הדוא"ל שלך, אפילו חשבון הפייסבוק שלך - כולם משתמשים בהצפנה כדי לשמור על הנתונים שאתה שולח להם פרטיים. אתר אינטרנט מקצועי יספק הצפנה על ידי קבלת אישור מרשות מהימנה - צד שלישי, מהימן על מנת להבטיח כי ההצפנה היא ברמה, פרטית בין האתר לבין המשתמש, ולא להיות ריגל על ידי כל צד אחר. קשר זה עם הצד השלישי, שנקרא רשויות אישורים, או CA, הוא קריטי, שכן כל משתמש יכול ליצור תעודת "חתום על עצמי" - אתה יכול אפילו לעשות את זה בעצמך במחשב פועל לינוקס עם SSL פתוח. סימנטק ו Digicert הן שתי חברות CA ידועים, למשל.
בוא נרוץ באמצעות תרחיש תיאורטי: How-To Geek רוצה לשמור על רישום הפעלות המשתמשים הפרטיים עם הצפנה, ולכן היא עתירה CA כמו Symantec עם בקשה לחתום על אישור, או CSR. הם יוצרים מפתח ציבורי ו מפתח פרטי עבור הצפנת פענוח נתונים שנשלחו דרך האינטרנט. בקשת האחריות החברתית שולחת את המפתח הציבורי לסימנטק יחד עם מידע על האתר. סימנטק בודקת את המפתח כנגד הרשומה שלה כדי לוודא שהנתונים לא השתנו על ידי כל הצדדים, משום שכל שינוי קטן בנתונים הופך את ה- Hash שונה בתכלית.
אלה המפתחות הציבוריים והאישורים הדיגיטליים חתומים על ידי פונקציות hash, כי הפלט של פונקציות אלה קל לראות. מפתח ציבורי ואישור עם Hash מאומת מסימנטק (בדוגמה שלנו), רשות, מבטיח למשתמש של How-To Geek שהמפתח לא השתנה ולא נשלח ממישהו זדוני.
בגלל חשיש קל לפקח ובלתי אפשרי (חלק יגיד "קשה") כדי להפוך, את החתימה נכונה חותם מאומת פירושו כי התעודה ואת החיבור ניתן לסמוך, נתונים ניתן להסכים להישלח מוצפן מקצה לקצה . אבל מה אם חשיש לא היה ייחודי?
מה זה התנגשות, האם זה אפשרי בעולם האמיתי?
אולי שמעת על "בעיה של יום הולדת" במתמטיקה, אם כי אולי לא ידעת מה זה נקרא. הרעיון הבסיסי הוא שאם אתה אוסף קבוצה גדולה מספיק של אנשים, הסיכויים הם גבוהים למדי כי שני אנשים או יותר יהיה באותו יום הולדת. גבוה יותר ממה שהיית מצפה, למעשה - מספיק שזה נראה כמו צירוף מקרים מוזר. בקבוצה קטנה כמו 23 אנשים, יש סיכוי של 50% כי שניים יחלקו יום הולדת.
זוהי החולשה הטבועה בכל hashes, כולל SHA-1. תיאורטית, את הפונקציה SHA צריך ליצור חשיש ייחודי עבור כל הנתונים לשים את זה, אבל ככל שמספר hashes גדל, זה הופך להיות יותר סביר כי זוגות שונים של נתונים יכולים ליצור את אותו חשיש. לכן, ניתן ליצור אישור לא מהימן עם חשיש זהה לתעודה מהימנה. אם הם נתנו לך להתקין את האישור לא מהימן, הוא עשוי להתחזות לאמון ולהפיץ נתונים זדוניים.
מציאת hashes תואם בתוך שני קבצים נקרא a התנגשות. לפחות אחד בקנה מידה גדול התנגשות בקנה מידה ידוע כבר קרה עבור hashes MD5. אבל ב -27 בפברואר, 2017, הודיעה גוגל על SHAttered, ההתנגשות הראשונה שנוצרה אי פעם עבור SHA-1. Google הצליחה ליצור קובץ PDF בעל אותו קובץ SHA-1 כקובץ PDF נוסף, למרות שיש תוכן שונה.
SHAttered בוצע על קובץ PDF. קובצי PDF הם פורמט קובץ רופף יחסית; הרבה שינויים זעירים ברמת סיביות יכולים להתבצע מבלי למנוע מהקוראים לפתוח אותה או לגרום להבדלים נראים לעין. מסמכי PDF משמשים לעתים קרובות גם כדי לספק תוכנות זדוניות. בעוד SHAttered יכול לעבוד על סוגים אחרים של קבצים, כמו ISO, אישורים הם צוינו בקפידה, מה שהופך התקף כזה סביר.
אז כמה קל זה ההתקפה לבצע? SHAttered התבססה על שיטה שנתגלתה על ידי מארק סטיבנס בשנת 2012, אשר דרשה מעל 2 ^ 60.3 (9.223 quintillion) SHA-1 פעולות - מספר מדהים. עם זאת, שיטה זו עדיין 100,000 פעמים פחות פעולות מאשר יהיה צורך להשיג את אותה תוצאה עם כוח הזרוע. גוגל מצאה כי עם 110 כרטיסי גרפיקה מתקדמים עובד במקביל, זה ייקח בערך שנה כדי לייצר התנגשות. שכירת זמן חישוב זה מ- Amazon AWS תעלה כ -110,000 דולר. זכור כי ככל שהמחירים יורדים עבור חלקי מחשב ואתה יכול לקבל יותר כוח עבור פחות, התקפות כמו SHAttered להיות קל יותר לשלוף.
$ 110,000 עשויים להיראות כמו הרבה, אבל זה בתחום של affordability עבור כמה ארגונים, כלומר cybervillians החיים האמיתיים יכול לזייף חתימות מסמך דיגיטלי, להפריע גיבוי ומערכות בקרת גרסאות כמו Git ו SVN, או להפוך לינוקס זדוני נראה לגיטימי.
למרבה המזל, ישנם גורמים מקלים המונעים התקפות כאלה. SHA-1 משמש לעתים נדירות לחתימות דיגיטליות. רשויות האישור אינן מספקות עוד אישורים חתומים ב- SHA-1, וגם Chrome וגם Firefox ירדו לתמיכה עבורן. הפצות לינוקס בדרך כלל משתחררות לעתים קרובות יותר מפעם אחת בשנה, מה שהופך אותו לא מעשי עבור התוקף ליצור גרסה זדונית ולאחר מכן ליצור אחד מרופד יש את אותו SHA-1 חשיש.
מצד שני, כמה התקפות המבוססות על SHAttered כבר מתרחשות בעולם האמיתי. מערכת בקרת גרסאות SVN להשתמש SHA-1 כדי להבדיל קבצים. העלאת שני מסמכי PDF עם Hash זהה 1 SHA-1 למאגר SVN יגרום לה להשחית.
איך אני יכול להגן על עצמי מפני התקפות SHA-1?
אין הרבה עבור המשתמש טיפוסי לעשות. אם אתה משתמש ב- checkums כדי להשוות קבצים, עליך להשתמש ב- SHA-2 (SHA-256) או ב- SHA-3 במקום ב- SHA-1 או MD5. כמו כן, אם אתה מפתח, הקפד להשתמש באלגוריתמים hashing מודרניים יותר כמו SHA-2, SHA-3 או bcrypt. אם אתה חושש כי SHAttered שימש לתת שני קבצים שונים באותו חשיש, גוגל פרסמה כלי באתר SHAttered שיכולים לבדוק אותך.
זיכויים תמונה: לגו פיירפוקס, הרבה חשיש, בבקשה אל תפגע מחבר האינטרנט לא ידוע, גוגל.