1 תיאוריה בראי המציאות : שיעור – אבטחת מידע

‫אבטחת מידע – תיאוריה בראי המציאות ‪ :‬שיעור ‪1‬‬
‫‪Architectural attacks‬‬
‫במכונות וירטואליות ניתנת לנו הגנה מספק הוירטואליזיציה על סמך מרחבי זיכרון שונים למכונות שונות‪.‬‬
‫למרות זאת‪ ,‬המשאבים הפיסיים (…‪ )CPU, Cache, DRAM‬משותפים‪.‬‬
‫המתקיף יכול לבצע מניפולציות על אותם רכיבים ובכך ללמוד מידע על דפוס ההתנהגות של הקורבן (לדוגמא‬
‫טעינת ערכים ל‪ cache‬ע"י המתקיף ומדידת הזמן שבו המותקף קורא ערכים מהזיכרון)‪.‬‬
‫סוגי התקפות‬
‫‪Side Channel Attack‬‬
‫מדובר על מידע שזולג מהמותקף למתקיף תוך שימוש במסלול סמוי‪ ,‬לרבות השכבה הפיסית שעליה מבוססת‬
‫אבטחת המערכת‪.‬‬
‫הקורבן לא עד ליצירת המסלול לתוקף‪.‬‬
‫דוגמא – ‪ Timing attack, Power monitoring attack, Acoustic attack‬ועוד‪.‬‬
‫‪Covert Channel Attack‬‬
‫ערוץ חבוי‪ .‬המתקיף והקורבן משתפים פעולה כדי להזרים מידע מאחד לשני‪.‬‬
‫כיוון שיש מנגנונים רבים שמנטרים ערוצים כאלה‪ ,‬דרך השליחה יכולה להיות לא טריוויאלית‪ .‬לדוגמא העברת‬
‫ביט של ‪ 0/1‬מאחד לשני יכולה להתבסס על פניה לזכרון המטמון ברגע מסויים‪.‬‬
‫דוגמא – שבירת ‪ AES‬דרך דליפת כתובת הזיכרון‬
‫‪ AES‬מבוסס על פניה לזיכרון למקומות שמחושבים ע"י ]‪.Plain[x]^Key[x‬‬
‫נניח שנצליח להבין מהי הכתובת שאליה פונים אזי בקלות נוכל למצוא את המפתח (נבקש מהנתקף להצפין‬
‫עבורינו מידע ועל ידי כך נחשב את ]‪ key[x‬ע"י ]‪.)address ^ Plain[x‬‬
‫יש כמה סיבוכים‪ :‬רעש במערכת‪ ,‬אנחנו לא בטוחים איזה פעולה הנתקף מריץ בכל רגע (ייתכן ‪context‬‬
‫‪ )switch‬וייתכן שמספר אינדקסים יפנו לאותו ‪( cahce line‬הנתקף מתחרה עם עצמו על מקומות ב‪cache‬‬
‫ואנחנו צריכים להיות מודעים לזה)‪.‬‬
‫איך נצליח להשיג את הכתובת? באמצעות זיכרון המטמון!‬
‫פניה לזיכרון המטמון היא ‪ 1ns‬בעוד פניה ל‪ DRAM‬היא ‪ .100ns‬באמצעות מדידת הזמן נוכל לדעת האם‬
‫התבצעה פניה לזיכרון המטמון או ל‪.DRAM‬‬
‫ישנן שתי שיטות לעשות זאת‪:‬‬
‫שיטה ‪ - 0‬לבדוק מתי הקורבן פונה ל‪DRAM‬‬
‫‪ .0‬התוקף מבקש מהקורבן להצפין עבורו משהו‪ .‬הקורבן טוען למטמון את ‪.T0‬‬
‫‪ .2‬התוקף ממלא את המטמון‪.‬‬
‫‪ .3‬התוקף מבקש מהקורבן שוב להצפין משהו‪ ,‬אך הפעם בודק האם ההצפנה לקחה יותר זמן‪.‬‬
‫שיטה ‪ – 2‬לבדוק מתי התוקף פונה ל‪DRAM‬‬
‫‪ .0‬התוקף ממלא את המטמון‪.‬‬
‫‪ .2‬התוקף מבקש מהנתקף להצפין עבורו משהו‪.‬‬
‫‪ .3‬התוקף שוב פונה לזיכרון ומודד האם הפניה החוזרת לקחה יותר זמן‪.‬‬
‫כל משאב משותף יכול לשמש את התוקף‪ ,‬לדוגמא באלגוריתם ‪ RSA‬עושים שימוש רב ביחידת הכפל‬
‫והריבוע‪ ,‬ולכן יחידת ה‪ ALU‬היא פוטנציאל לשימוש ע"י התוקף (התוקף מודד את הזמן שלוקח ליחידת ה‪ALU‬‬
‫לבצע חישובים‪ .‬אם הזמן ממושך אזי זהו סימן שגם הנתקף משתמש ביחידה)‪.‬‬
‫ניתן להרחיב את השיטות הללו ע"י‪:‬‬
‫‪.0‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫מערכות ‪Hyper Threading‬‬
‫נותני שירות למערכות וירטואליות‬
‫ניצול לרעה מערכות המאפשרות לך להשתמש במשאביהן‬
‫קוד המורץ על המכונה של הנתקף (לדוגמא ‪.)JS‬‬