TheMarker יוצא הבוקר עם הכותרת “כשל אבטחה חמור התגלה בלינוקס”. אני לא בטוח מה עומד להיות הקישור המדוייק, אבל יכול להיות שזה (אתר שנקרא nfc. אני לא יודע אם הוא או הטוש הזוהר הם המקור).
אני חושב שהכותרת של המאמר שעליו מתבססת הטענה הרבה הרבה הרבה יותר סבירה. היא אומרת “חולשה במנגנון המספרים האקראיים של לינוקס”. תיאור מדוייק ולא מתלהם של הבעיה.
הסבר:
אין דבר כזה “אלגוריתם לייצור מספרים אקראיים”. אלגוריתם, מעצם הגדרתו, הוא משהו דטרמיניסטי. אם הזנתם את אותם קלטים, בהגדרה תקבלו את אותם תוצרים. למרבה הצער, לפעמים יש צורך במספרים אקראיים ממש. הצורך הקל ביותר לציון הוא לצורך ייצור מפתחות הצפנה.
מה עושים? משתמשים ב”מקורות אקראיות”. מדידה של מליוניות שניה של תזמוני לחיצה על מקשים, פעילות דיסק, וכו’. הקרנל של לינוקס עושה את זה כל הזמן, ומייצר מאגר של נתונים אקראיים. תוכנית שרצה בלינוקס יכולה לבקש לקבל את המאגר הזה, ולהשתמש בו.
ומה קורה אם המאגר נגמר?
בלינוקס יש שתי אופציות. הראשונה היא לחכות עד שיגיע עוד מידע אקראי. השניה היא להשתמש בפונקציות “כמעט אקראיות” (Pseudo random number generators) כדי לקבל רצף של מספרים.
ההתקפה שמצאו החוקרים מתארת שתי בעיות מרכזיות. הראשונה היא שניתן לדעת על מספר מספרים אחרונים שהמערכת סיפקה מה הם היו. השניה היא שאפשר לתת חיזוי עתידי של מספרים שיינתנו מה הם יהיו. חשוב לציין שבשני המקרים מדובר בשתי הנחות לא פשוטות:
– שלתוקף יש גישה למבנה הפנימי של הליבה.
– שלא נוספו מספרים אקראיים אמיתייים במהלך הניבוי (אחורה או קדימה).
לפני שאני ממשיך בניתוח, חשוב לי להבהיר. חלק גדול מהבעיות שמצאו החוקרים הן בעיות אמיתיות שחשוב (ואפשר, ולא מסובך) לתקן.
עכשיו לכותרת הבומבסטית:
יש בעולם המחשבים שני תחומים שאזורי עבודתם דומים. כתוצאה מכך, לפעמים יש אנשים שטועים לחשוב שמדובר באותו התחום. השגיאה הזו כל כך נפוצה שלפעמים האנשים טועים לחשוב שמדובר באותו התחום, למרות שהם עצמם שייכים לאחד התחומים האלו.
התחומים הם הצפנה (קריפטוגרפיה) ואבטחת מידע.
בן אדם שלא יודע את גבולות הידע שלו עצמו עלול לחשוב שהוא מוסמך לתת אבחנות בעולם השני, והתוצאה היא כותרות מטעות כמו זו של המאמר בטוש הזוהר.
אני, למשל, איש אבטחת מידע. זהו תחום שבו השקעתי בללמוד את הגורמים, התוצאות, נהלי עבודה, האנשים הפועלים, ואני מרשה לעצמי להגדיר את עצמי כ”מומחה” בתחום. למרות שלמדתי קריפטוגרפיה, אני מבין את המושגים הבסיסים, יודע את הצורה, פחות או יותר, שהעולם הזה מתנהג, רחוק היום עד שאני ארשה לעצמי להגדיר את עצמי כמומחה קריפטוגרפיה. פיתוח או ניתוח של אלגוריתמי הצפנה נמצא הרחק מתחום הידע שלי, ואין לי שום יומרות בנידון.
כותבי המאמר, על פי מה שאני יכול לנתח (וכן, קראתי גם את המאמר עצמו, לא רק את הדיווח בעיתון) הם אנשי קריפטוגרפיה. הניתוח שלהם של אלגוריתם המספרים הפסודו אקראיים של לינוקס ראוי להערכה, והחולשות שהם מצאו בו הן אמיתיות, וראוי שיתוקנו. חלקים נרחבים מהניתוחים האנליטיים במאמר היו מעבר לידע שלי בקריפטוגרפיה כדי לעקוב במדוייק. אני גם יכול להבין את החומרה שהם מייחסים לחולשות האלו. מבחינת איש קריפטוגרפיה, אין גרוע (כמעט) ממספרים אקראיים שאינם אקראיים.
אבל בכל מה שקשור לאבטחת מידע, אני חושש שאין לי הרבה הערכה לכותבי המאמר. בכל מקום שהם ניסו, במהלך המאמר, להשליך על העולם האמיתי את החולשות, ולמצוא שימושים פרקטיים שתוקף יכול להשתמש בהם כדי לנסות לתקוף את המערכת, התוצאה היתה בינונית במקרה הטוב.
הסיבה היא שיחידת המספרים האקראיים היא רק רכיב אחד מתוך המכלול שמרכיב את המערכת, גם כשמדובר במערכת שמשתמשת במנגנונים קריפטוגרפיים. אני אתן דוגמאות:
הדוגמא הכי בולטת שאני יכול לחשוב עליה היא הטענה שבהנחה שלא מגיעה אנטרופיה חדשה, התוקף יכול לדעת מה עומדים להיות המספרים האקראיים הבאים שיינתנו. גם אם נתעלם לשניה מהעובדה שאם פרצנו למערכת אנחנו יכולים לדאוג שנדע מה הם, הרי שבעיה זו היא מובנית בצורה שהמערכת מוגדרת, ולא ניתנת לפתרון. כל מי שמשתמש במנגנון שלא חוסם אם אין לו אנטרופיה חייב להיות מודע לה, ועל כן היא לא נחשבת לבעיית אבטחת מידע.
כדי להבהיר למה אני מתכוון, בואו ננסה להפעיל את ההתקפה הזו בסיטואציה אמיתית. rsyncrypto משתמש במנגנון המתואר כדי לייצר מפתח נפרד לכל קובץ שהוא מצפין. בואו נניח שמייד אחרי שסיימתי להצפין את הקבצים שלי תוקף חודר למערכת, ומעוניין לפענח אותם. אבל rsyncrypto שומר גם את מפתחות ההצפנה על הדיסק כשהוא עובד. במילים אחרות, לתוקף יש פשוט גישה למפתחות שהוא צריך.
בואו נניח שמפתחות ההצפנה לא נשמרים (והיו כבר בקשות למוד פעולה כזה של התוכנה, כך שזו לא הנחה מופרכת). כל מה שהתוקף צריך לעשות הוא להפעיל את ההתקפה שמתוארת במאמר כדי להוציא את רשימת המספרים האקראיים האחרונים שהמערכת נתנה, ומהם הוא יודע מה המפתחות שמצפינים את הקבצים. נכון?
לא נכון.
הקבצים נשמרים לדיסק. פעולת השמירה לדיסק מייצרת השהיות שלא ניתנות לחיזוי, כיוון שהן תלויות בגורמים מכניים. ההשהיות האלו משוקללות כמקור למידע אקראי באלגוריתם הייצור של המספרים האקראיים. ההתקפה הניחה שלא נוספים מספרים כאלו. בקיצור, על אף כל ההנחות המקלות לתוקף, הוא לא יכול להפעיל את ההתקפה.
אני מאמין ששיקולים כאלו יעצרו אתכם כמעט בכל נתיב שתבחרו לנסות להפעיל את ההתקפה, כולל רוב ההתקפות שמתוארות במפורש במאמר.
לסיכום:
בעיה שצריך לפתור? כן.
בעית אבטחה חמורה? לא.
שחר
הערה חשובה:
חלק מהציטוטים שראיתי גורמים לזה להשמע כאילו שאני מזלזל בכותבי המאמר או בתוכנו. רציתי להבהיר שאין זה המצב. הכשל הקריפטוגרפי הוא אמיתי וחמור, ואני מלא הערכה לכותבי המאמר על שהצליחו לנווט בסבך האלגוריתמיקה של מנגנון המספרים האקראיים של לינוקס ולמצוא נתיב שמוביל לפרצה.
מה שאמרתי זה שההשלכות הפרקטיות של הפרצה קטנות ממה שכותבי המאמר מנסים לשוות להן, ועל כן היה ראוי ל-TheMarker להשתמש בכותרת פחות סנסציונית.
ש.