התקפת ערוץ צדדי

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

התקפת ערוץ צדדיאנגלית: Side channel attack) היא התקפה קריפטוגרפית המנצלת מידע שמושג מאופן היישום הפיזי או השימוש של מערכת ההצפנה ולא בכוח גס כנגד האלגוריתם עליה היא מבוססת או קריפטואנליזה תאורטית של אלגוריתם ההצפנה. לעתים, בשל מגבלות טכניות או אף בשל רשלנות או חוסר תשומת לב באופן יישום מערכת ההצפנה נוצרות נקודות תורפה המאפשרות לחלץ מידע העלול לסכן את ביטחון המערכת. לדוגמה, מידע תיזמון (Timing) הקשור בכמות המידע שנכנס ויוצא מהמעבד עלול לשמש לניתוח סטטיסטי של סיביות מפתח ההצפנה. להלן מספר מקורות מידע אפשריים להתקפה כזו:

  • מידע תיזמון; קריפטואנליזה המבוססת על ניתוח הזמן הדרוש למערכת ההצפנה לביצוע פעולות מסוימות במהלך ההצפנה או הפענוח. למשל בצמתים קריטיים במערכת בהם נקבע האם לבצע רוטינה מסוימת או לא הצפנה אסימטרית עלולה להדליף מידע. היות שבהצפנה אסימטרית העלאה בחזקה ידועה כזללנית זמן עיבוד לכן, כאשר המעריך מתאפס כמות הזמן הדרוש לביצוע המשימה מצטמצמת באופן שניתן למדידה. כל רוטינה גוזלת זמן עיבוד מסוים, וניתוח של הפרשי הזמן יכול לחשוף את תהליך בקרת הזרימה הפנימי של המערכת ובכך לחשוף מידע קריטי.
  • צריכת אנרגיה; קריפטואנליזה המבוססת על ניתוח צריכת אנרגיה, מיועדת בעיקר כנגד חומרת הצפנה חסינת מגע (נקראת גם "קופסה שחורה") אולם אפשרית גם כנגד מחשב ביתי. בהתקפה זו נבדק גרף הצריכה של המתקן או מכשיר ההצפנה במהלך פעולתו. לדוגמה, אם פונקציית ההצפנה מבצעת קפיצה או מדלגת מעל קטע קוד או רוטינה מסוימת, מתרחשת נפילה בצריכת אנרגיה, וכן במקרים בהם המערכת צריכה לבצע רוטינה מסוימת במספר גדול יותר של סבבים בהתאם לסיטואציה מסוימת עשויה להתרחש קפיצה בצריכת האנרגיה. ניתוח מידע זה באמצעות אלגוריתם סטטיסטי ייעודי מאפשר לחלץ מידע אודות המפתח.
  • דליפה אלקטרומגנטית; קריפטואנליזה המבוססת על קרינה אלקטרומגנטית דומה להתקפה על צריכת אנרגיה, אלא שכאן נבדקת הקרינה האלקטרומגטית הנובעת מהמערכת.
  • מידע אקוסטי; קריפטואנליזה אקוסטית בודקת את כמות הרעש הבוקע מהמכשיר או המחשב המבצע את ההצפנה, או רעש הבוקע מהמקלדת או מנגנונים אחרים במחשב. מידע על הפרשים בכמות הרעש עשוי לספק מידע מסוים.
  • הִשְׁתַּיְּרוּת מידע; המגנטיות הנותרת לאחר מחיקת מידע מעל גבי מדיה מגנטית. במשך זמן מסוים ניתן לקרוא מידע למרות שנמחק. מסיבה זו קיימים תקנים מחמירים לאופן מחיקת מידע רגיש. למשל באמצעות אלגוריתם כמו שיטת גוטמן שבה דורסים את האזור המיועד למחיקה באמצעות 35 רצפים שונים המותאמים לסוגים שונים של פורמטים לכוננים קשיחים.

היסטוריה[עריכת קוד מקור | עריכה]

רגישות מערכות אלקטרוניות להתקפת ערוץ צדדי הייתה ידועה כבר ממלחמת העולם השנייה[1]. ב-1943 מהנדס של חברת הטלפוניה בל, גילה לגמרי במקרה, כאשר עבד על מכונת ההצפנה SIGABA ששימשה את ארצות הברית בזמן המלחמה, שבזמן פעולתה אוסצילוסקופ שהיה ממקום הרחק בצד אחר של החדר החל להציג קפיצות מוזרות למרות שלא היה חיבור פיזי ביניהם. מה שהוביל לגילוי התופעה שבין היתר נקראת כיום TEMPEST. מאז נעשו ניסיונות לרגל אחר מדינות זרות באמצעים דומים, על ידי הצבת אנטנות וציתות לפעימות אלקטרומגנטיות הבוקעות ממערכות תקשורת או מסכי תצוגה. ידוע כי במשך שנים מדינות אחרות מלבד ארצות הברית ביניהן הרוסים, היפנים והבריטים השתמשו בטכניקות דומות לצורכי ריגול. ארגון NSA מיסד תקן לאמצעי נגד המיועדים להטמעה במערכות תקשורת וציוד תצוגה כדי לחסום דליפה ולמנוע ציתות, בעיקר באריזה חסינה ובדרך של שיבוש אותות בהוספת רעש אקראי.

ב-1985 גילה מדען מחשב הולנדי שניתן לצותת (מה שקרוי פריקינג מודרני) לחתימה האלקטרומגנטית של מסכי תצוגה CRT או LCD. הוא סיפק הוכחות תאורטיות וניסוי מעשי. ההשלכה של תגליתו גרמה לממשת הולנד לבטל את תוכניתם לגבי הצבעה ממוחשבת, מחשש כי לא יוכלו להבטיח חשאיות וגם מחשש להטיות ושיבוש הבחירות.

התקפות קריפטוגרפיות[עריכת קוד מקור | עריכה]

באפריל 2005, פרסם דניאל ברנשטיין התקפת תזמון מטמון (cache timing attack)‏[2] שהצליחה לפרוץ לשרת ייעודי שיישם הצפנת AES כחלק ממערכת SSL. השרת נבנה כך שיאפשר חשיפה של מידע תזמון רב ככל האפשר. ההתקפה נזקקה ללפחות 200 מיליון צופנים נבחרים. הסיבה לפרצה נובעת מהנדסת האלגורתם והמבנה האלגברי הייחודי שלו, עובדה המקשה על כתיבת קוד בטוח (שפועל בזמן אחיד) למרות שהחולשה קיימת גם באלגוריתמים נוספים. עדי שמיר וחוקרים ממכון ויצמן, פרסמו מספר התקפות תזמון דומות כנגד AES, אחת מהן הצליחה לחשוף את המפתח כולו אחרי 800 כתיבות לזיכרון בלבד בתוך מספר מילישניות. יש לציין כי התקפות האמורות התבצעו על שרת ייעודי, באופן שאיפשר גישה ישירה לתוקף, תנאי שאינו מעשי דרך רשת האינטרנט.

בדרך כלל ההתמודדות עם התקפות מסוג זה היא יישום האלגוריתם באופן שאינו מדליף מידע, בעיקר הימנעות משימוש בטבלאות המרה (table lookup) שאמנם משפרות ביצועים אך פותחות פתח להתקפות תיזמון. כמו כן קיימות שיטות כגון Bit Slicing, שיטה ישנה שאומצה בעבר על ידי אלי ביהם לשיפור ביצועי אלגוריתם DES והתגלתה כטובה במיוחד כנגד התקפת תיזמון.

בדצמבר 2013 פורסם מאמר‏[3] של עדי שמיר, ערן טרומר ודניאל גנקין בנושא קריפטואנליזה אקוסטית בחילוץ מפתח RSA. ההתקפה מנצלת את העובדה שמחשבים רבים מפיקים רעש צורם בזמן עבודתם, שכמעט אינו נשמע לאוזן אנושית. הרעש אינו רק מטרד, אלא עלול להדליף מידע מסוים לגבי תוכניות הפועלות בו ובמיוחד לספק מידע קריפטוגרפי רגיש בזמן פענוח. המאמר כולל הדגמה ותיאור של התקפה מעשית כנגד יישום של RSA בתוכנה חופשית GnuPG בה ניתן לחלץ את מפתח הפענוח בתוך כשעה, אפילו באמצעות ציוד דל כמו שימוש במיקרופון פשוט של טלפון נייד. כמו כן צויין שהתקפה דומה אפשרית גם על ידי מדידת המתח החשמלי במארז המחשב באמצעות מגע פיזי עם ציוד מתאים או באמצעות מחבר USB או כבל Ethernet.

באפריל 2014 התגלתה ותוקנה פרצת אבטחה בגרסת OpenSSL 1.0.1 ו-OpenSSL 1.0.2-beta ובמספר גרסאות נוספות, שבה ניתן לחטוף עד 64 קילובתים של מידע רגיש מהשרת באמצעות תת-פרוטוקול הנקרא Heartbeat, שהוא פרוטוקול סינכרון. ההתקפה, הנקראת HeartBleed (פרפרזה על שם הפרוטוקול), מנצלת את העובדה שלא נעשית בדיקת גבולות (Bound Checking), בקשת סינכרון המכילה בית אחד והצבת הערך 65,536 בשדה המייצג את גודל ההודעה גורמת לשרת להפיק תגובה המכילה מידע מזיכרון היישום. אמנם התוקף אינו שולט בתוכנו אך גוש המידע עשוי להכיל אינפורמציה קריטית כמו עוגיות, סיסמאות ואף מפתח מאסטר של השרת.

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

הדרכים להתמודדות עם התקפות ערוץ צדדי מתחלקות לשתי קטגוריות עיקריות.

  • חסימה ומניעה; במקרה של כשל תוכנתי אפשר למנוע דליפה על ידי קוד מתאים כמו בדיקת גבולות, בדיקת שגיאות וחריגות ובכל מקרה אופן הטיפול בשגיאות או חריגות מצריך משנה זהירות כדי שלא ידליף מידע מסויים. דליפה פיזית כמו קרינה, אפשר לחסום באמצעים פיזיים כמו מיסוך, אריזה חסינת קרינה או תוספת רעש רקע.
  • שיבוש והטעיה; שיבוש הקשר בין המידע הרגיש לבין הדליפה על ידי הוספת פעולות סרק או פעולות אקראיות. למשל מחשב (שרת) או מכשיר נייד המיישם הצפנה אסימטרית ייתכן שיהיה צורך בפעולות מנע כמו ריפוד או ערבוב מספרים אקראיים או במקרה חמור יותר, ביצוע שינויים באלגוריתמים הבסיסיים כך שגרף הצריכה או גרף התיזמון של המערכת ייראה אחיד במידת האפשר. לדוגמה, במערכת אסימטרית אפשר לגרום להשהייה מכוונת בזמן פעולת כפל אריתמטי כך שתדרוש זמן עיבוד שווה פחות או יותר לפעולת העלאה בחזקה. פעולות מסוג זה באות בהכרח על חשבון יעילות.

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