אקראי

You are currently browsing articles tagged אקראי.

אותכם, אותי, ולדעתי צריך לעניין את כולם.

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

דביאן היא הפצת לינוקס פופולרית, שגם אובונטו מבוססת עליה.

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

זה דבר חשוב מאוד למשתמש, מפני שמפתחי תוכנות לרוב משחררים את התוכנות שלהן כקוד מקור, שפת תוכנה, ולא כקובץ שניתן להפעיל – הכנת התוכנה לעבודה אורכת זמן רב, ואריזת התוכנה עבור המשתמש כוללת את זמן ההכנה הזה.

– – –

הבעיות עלולות להתעורר כשבתהליך אריזת התוכנה, מתבצע שינוי בתוכנה.

שינוי כזה בוצע בחבילת OpenSSL/OpenSSH, שאחראית על ההצפנות במערכת.

חלק גדול מתהליך הצפנה קשור במפתחות – לאליס יש את המפתח של בוב, לבוב יש את המפתח של אליס, ואיכשהו הם מצליחים להצפין דברים.

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

אפשרות אחת היא להשתמש בשעה כמספר בסיס – זהו מספר שמשתנה בכל שניה, לכל כל הרצה של התוכנה תיתן מספרים שונים.

כמובן שמבחינת אבטחת מידע, בבואך לייצר מפתח סודי, זוהי שיטה רעה. אם אדע באיזו שעה ייצרת מפתח, אוכל לייצר מפתח זהה! לכן מפתחי OpenSSL השתמשו בשיטה ייחודית ומעניינת – קריאה של מיקום אקראי בזיכרון המחשב.

– – –

כמה שנים לאחר מכן, במקום אחר, מפתחים אחרים כתבו תוכנות אחרות, שמשתמשות בOpenSSL, וכשבאו לדבג (מלשון debug) את התוכנות שלהן כדי לגרום להן לעבוד בלי להתרסק, הם גילו שיש קריאה למקומות לא מוגדרים בזכרון, בגלל השיטה של OpenSSL לקבלת אקראיות.

כאן נכנסו לתמונה אורזי החבילות של דביאן, מתחו את החזה גבוה, ו"תיקנו את הבעיה".

טעות מספר 1 – תיקנו "באג" שלא הבינו אותו – השיטה המשונה לקבלת מספר אקראי.

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

– – –

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

כאמור, השינוי לא נשלח חזרה (במעלה הזרם) אלא הוכנס כמו שהוא למערכות דביאן, שכאמור, אובונטו מבוססת על דביאן, ושם הוא נשאר משנת 2006 עד השבוע.

– – –
משנת 2006 עד השבוע, המפתחות של כל המשתמשים יוצרו באמצעות מספרים שהאקראיות שלהם נמוכה מאוד. כמה נמוכה? ניתן לייצר רשימה שמכילה מפתחות שלכ90% מהמשתמשים יש. דוגמה:

e5378b9299a5b0b000da
e538f98984504a808620
e539ae75479e565630a1
e539b10c83ece8fd730a
e53b50b3d25ab2a0bcb4
e53b87bbcc06e165ae61
e53cfde8882f1e79ee50
e53cfe5b5c86f754b3f1
e53d08db18313a7bf195
e53d122743999e6dcb2f
e53d5f69d1261e676693
e54629634a243fa1dc23

– – –


– – –

קריאה נוספת:

DSA-1571 openssl

DSA-1576 openssh

SSLkeys

תגובת המפתחים

התייחסות שחר שמש

Tags: , , , , ,