כוכב נולד הפלסטיני – זו לא פוליטיקה, זו גיאוגרפיה

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

לכל מי שלא קרא ב-ynet, הנציג הפלסטיני לגרסה הכלל ערבית של “כוכב נולד” הפסיד. לא עקבתי אחרי התוכנית, אין לי מושג עד כמה הוא מוכשר, או עד כמה יריבו הלובי מוכשר. עדיין, זה לא מפתיע אותי.

לדעתי:

זה לא היה הפסד ענייני – זה לא בגלל שהוא פחות מוכשר

זה לא היה הפסד פוליטי – זה לא בגלל שהערבים לא אוהבים את הפלסטינאים

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

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

הפלסטינים ניסו לייצר הזדהות כזו, ע”י הכנסת פוליטיקה לתוך התחרות. הם ניסו להציג את זה בתור “משהו טוב שקורה לעם הפלסטיני בתקופה קשה”. מסתבר שהגישה הזו לא עובדת טוב במיוחד מחוץ לשטחים שבהם יש ריכוז פלסטיני. כנראה שלא ראינו המון ערבים ממצרים יוצאים מגדרם ושולחים SMSים לזכות המועמד הפלסטיני “בשם במאבק”, ובטוח שלא ראינו הרבה לובים עושים את זה. מכאן שתוצאות התחרות, גם אם לא היו ממש צפויות, לפחות לא צריכות להפתיע אותנו.

מה המסקנה? שככה לא בונים תחרות. אין מסקנה אחרת.

שחר

One of the most chaep and trusted onljne line phhaemeci! imbibe

הספאמרים, כדי לעקוף את הפילטרים הבייסיאנים, מכניסים שגיאות כתיב מכוונות למיילים שלהם.
א. זה לא עוזר. הפילטר שלי כבר מבין ש-chaep, או onljne, פירושם שהמייל הוא ספאם.
ב. נהיה בלתי אפשרי להבין מה הם מנסים למכור.
ג. עזבו שגיאות כתיב, למה המילה “line” נמצאת שם?

מה זה אומר? אני לא בטוח. אני מניח שאנחנו מנצחים, באיזושהי צורה פרוורטית את המלחמה בספאם.

שחר

ביקורת לינוקס מאת מתקין חדש

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

הנה הפסקה שאהבתי הכי הרבה:

I could go on and on. There’s stuff that’s much better than Windows, and stuff that isn’t. Linux is unfinished business without the panache of Windows XP. There are compensations; open source is an embarrassment of riches. You don’t need to buy an expensive application for occasional jobs anymore.



יש פיצויים. קוד פתוח מביא איתו עושר בחירה. לא תצטרכו לשלם יותר על תוכנה שבה אתם עושים שימוש אגבי. מבחינתי, זו אבחנת מפתח. ייתכן ו-GIMP אינו מספיק טוב למי שפרנסתו תלויה בכך שהוא עורך תמונות, אבל משתמש GIMP האגבי לא צריך לקנות Photoshop (ויש גרסת חלונות של GIMP :-)‏.

הסיכום הסופי שלו: “האם אני אוותר לחלוטין על חלונות? כנראה שכן. ככל שאני משתמש בלינוקס יותר, כך אני אוהב אותה יותר למרות האתגרים. …. אבל יותר מהכל, לינוקס נותנת לי יותר בחירה בפחות מחיר. רק תנו לה קצת זמן לטפס על ההר החלונאי“.

שחר

אנטומיה של באג ב-Word, ולמה לנו זה לא היה קורה.

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

אני לא אכנס לעומק בכל מה שקשור למאמר הזה. בעיקרון, כל מי שאיי פעם כתב תוכנה מכיר את התופעה – עובדים מאוד קשה עד שהבאג בכלל משתחזר אצלך, מגלים שהבעיה לא קוראת כשהתוכנה רצה ב-Debugger, בסוף מוצאים את הבעיה וכו’. יש הרבה מאוד מה לדון בכל מה שקשור לשאלות כמו “האם יש צורך בתוכנות עם כל כך הרבה יכולות”, כמו גם “האם אפשר לייצר תוכנות כך שהגדלת מספר האפשרויות להריץ אותן לא תגדיל את הסיכויים לבאגים. אני אשאיר את הדיונים האילו לפעם אחרת.

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

The fundamental cause is a basic design decision that you made more than a decade ago, and the only way to really fix it for certain is to rewrite the entire application from the ground up. Since that’s simply not an option for a product that you’ve shipped several times, you’re left with trying to make the problem difficult for most users to run into while trying to also minimize the negative effects if the user should ever run into the problem.


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

ההדגשה שלי.

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

התוצאה היא שבאג שהוכנס לתוכנה לראשונה בגרסה 6, לפני יותר מעשר שנים, עדיין חי וקיים. היום ההשלכות שלו יותר קטנות, במקום שלא תהיה לכם שום דרך לשמור את המסמך, אתם פשוט מדי פעם מאבדים את כל ה-Undo buffer שלכם בזמן שמירה, אבל רק אם אתם על חלונות. על Mac, אתם עדיין לפעמים לא יכולים לשמור.

וכאן ההבדל המהותי. התיקון של ריק וחבריו ל-Word לא היה מתקבל כמעט באף תוכנה חופשית שאני מכיר. מנהל התוכנה היה שואל “אילו באגים זה פותר”, ואז היה שואל “למה קרה הבאג הזה”, ואז היה דוחה את התיקון מכיוון שהוא לא מתקן את הבעיה. כתוצאה מכך, אילו Word היה מפותח כתוכנה חופשית, כבר גרסה 7 (Word 95) היתה יוצאת עם תיקון שפותר את הבעיה. אולי זה אכן היה מערער מעט את יציבות המערכת, אבל עירעור היציבות הזה היה נפתר עד הגרסה שאחריה (Word 97). במילים אחרות, אם הם היו מעיזים לתקן את הבעיה באמת, הבעיה היתה כבר פתורה מעל 7 שנים!

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

שחר

HP תומכים בדביאן רשמית – בערך

דבר ראשון, החדשות הטובות:
HP מציעה לכם להוריד הפצת לינוקס “דביאן” שהם שינו מעט כדי שתעבוד אופטימלית על שרתי HP. אילו חדשות נפלאות.

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

חשוב מכך, מי שקורא את ההודעה עשוי להבין ממנה שעכשיו מגוון החבילות, מערכת עדכוני האבטחה וכו’ של דביאן נתמך באופן פורמלי ע”י HP, וזוכה גם לכיסוי השיפוי מ-SCO שלהם (לא שלמישהו באמת אכפת, אבל זה מראה על כוונה).

אז זהו, שלא.

ההפצה הזו אינה באמת דביאן. היא “Debian with HP Extensions”. למעשה, זהו fork של דביאן, שלו הוסיפו HP חבילות משלהם.

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

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

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

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

וכאן הכשל העקרוני והמהותי שבכל הפצה מסחרית של לינוקס. ברגע שאתה לוקח לעצמך את מלוא השליטה על אילו חבילות נכנסות ואילו לא, אתה נאלץ לעשות שילוב כלשהו של כל שלוש האפשרויות הנ”ל! כתוצאה מכך, כל ההפצות המסחריות (מי יותר, מי פחות), ובפרט השלוש הידועות (RedHat, Suse ו-Mandrake), נאלצות הן להגביל את היצע החבילות שנמצאות בהפצה והן את כמות הבדיקות שכל אחת מהן עוברת. דוגמא דיי ידועה של זה היא שב-Suse מערכת KDE לא נמצאת באותה רמת גימור של Gnome. למה? כי היא לא בפוקוס של Suse, ואין להם משאבים לתחזק אותה.

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

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

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

למשל, לפני מספר שנים נהגתי להשתמש בעבודה בתוכנה בשם hping. בשלב כלשהו מצאתי בה באג. הבאג התגלה כשגיאה של שורה אחת. שלחתי למתחזק של hping את התיקון, והוא הוכנס פנימה. על המחשבים הפרטיים שלי, שמריצים דביאן, רציתי שהתיקון גם ייכנס. מכיוון שעוד לא היה שחרור גרסה חדשה של hping, הורדתי את קוד המקור מהחבילה של דביאן כדי להכניס אותו גם שם. ואז גיליתי שהתיקון כבר בפנים! כמוני, גם המתחזק של hping עלה על הבאג ותיקן אותו. דבר כזה קורה רק כאשר מי שמתחזק את החבילה גם משתמש בה. לצורך ההשוואה, על מחשבי העבודה היה מותקן RedHat. לא זו בלבד שהתיקון לא היה בחבילה, לא היתה חבילה של hping ל-RedHat כלל. קוראי הבלוג הזה שמתמשים ב-apt-get ל-RedHat מוזמנים לדווח האם היום התוכנה זמינה לרד האט או לא.

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

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

שחר

זה כיף כשהמודל עובד

אתמול היה יום דיי משעשע בעבודה.

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

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

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

בדיקה יותר מעמיקה של מקור הבעיה הראתה ש-Wine משתמש בפונקציה בשם “poll” כדי לבדוק אם הוא צריך לעשות משהו כרגע. בקרנלים חדשים של לינוקס יש תחליף יעיל יותר שנקרא “epoll”. סיכמנו עם הלקוח שנכניס תמיכה ב-epoll ל-Wine.

וכאן אפילו אני עומד משתאה מול המודל של תוכנה חופשית. כשזה עובד, זה פשוט מדהים. נוצר פה מצב שבו כולם מרוויחים:
1. הלקוח שלי – זכה במערכת שחסכה לו מספר חודשי עבודה (אם לא יותר), כמעט לחלוטין בחינם (הוא כן צריך לשלם על הזמן שלי, אבל העלות הזו זניחה לעומת כמות הזמן שהיה צריך להשקיע אם לא היה לו את Wine)‏.
2. פרוייקט Wine – מקבל תוספת ביצועים חשובה
3. אני (ולינגנו) – מתפרנסים מכל הסיפור בכבוד. מצד אחד – הכסף שאנחנו גובים רק חוסך כסף ללקוח, ומצד שני יש פה הרגשה טובה של לעשות למען אחרים.

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

שחר

אל תסמכו על החתימות הדיגיטליות

בקצרה: פרצו את MD5.

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

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

קצת רקע:
אלגוריתמים של חתימה דיגיטלית מאפשרים לוודא שרק מישהו שיודע סוד מסויים יכול היה לייצר חתימה מסויימת. אלגורתמים נפוצים היום הם RSA, DSA ו-ElGamal. אנחנו מניחים שיש רק בן אדם אחד שמחזיק את המפתח. נקרא לו, ללא הגבלת הכלליות, “אור”. אנחנו יכולים להניח שאם יש הודעת דואר אלקטרוני שחתומה ע”י המפתח של אור, אזי אור הוא זה שכתב את ההודעה.

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

אבל יש קוץ קל בכל השימחה. לחתום על הודעה, חוזה, או קובץ בגודל דיי גדול באמצעות אחד מהאלגוריתמים המוזכרים למעלה הינה פעולה יקרה וארוכה. כתוצאה מכך, בד”כ בוחרים בשיטה אחרת לביצוע חתימות. השיטה מכונה פונקצית האש קריפטוגרפית “cryptographic hash function”.

הרעיון הוא כזה. פונקציה y=f(x)‎ תחשב פונקצית האש טובה אם אפשר להגיד עליה כך:
בהנתן x, קל לחשב את y (אחרת למה אנחנו משתמשים בה).
בהנתן y, קשה למצוא x שמקיים את הפונקציה (הפונקציה לא הפיכה).
קשה למצוא שני xים, כך שיש להם את אותו ה-y.

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

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

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

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

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

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

כפי שציינתי, אפשר להשתמש באלגוריתמי הצפנה סטנדרתיים לצורך ייצירת האש. הבעיה היא שאילו בד”כ אינם יעילים כאשר כל הזמן משנים להם את המפתח, כפי שאנחנו מנסים לעשות פה. לצורך כך, ייצרו אלגוריתמי האש ייעודיים. בין הידועים והנפוצים כיום: MD5 ו-SHA1.

עד כאן הרקע, ועכשיו לחדשות

:
שברו את MD5. בגדול, יש שלושה דברים שהמשפט הקודם עלול/עשוי להגיד, בסדר עולה של חומרה:
1. תוקף מסוגל לייצר שתי הודעות שעונות על תנאי מתמטי מסויים, כך שלשתי ההודעות אותו האש.
2. תוקף מסוגל לייצר שתי הודעות, פחות או יותר כרצונו, כך שלשתי ההודעות אותו האש.
3. תוקף מסוגל לייצר הודעה חדשה כך שיש לה את אותו ההאש כמו הודעה קיימת.

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

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

מצד שני, אם זה כל מה שיש לי, יהיה לי מאוד קשה לייצר שתי הודעות טקסט שמכילות טקסטים (כמעט) כרצוני, ושיהיה להם את אותו ההאש.

מצד שני, אם יש שבירה ברמה 2, המצב כבר הרבה יותר רגיש. כפי שציינתי קודם, חתימה דיגיטלית מתבצעת כנגד ההאש של ההודעה, ולא כנגד ההודעה עצמה. אם אני מצליח למצוא שתי הודעות שלהן אותו ההאש, אין שום דרך להוכיח בבית משפט שחתמתם על אחת ולא על השניה. דוגמא להתקפה:
כידוע, לינגנו מוכרת, בין השאר, שירותי תחזוקה לרשתות מבוססי לינוקס. נגיד שאני שולח אליכם חוזה מוכן, שאומר שאני אתן לכם את שירותי תמורת 12 שקל בשנה, כולל מע”מ. וואלה, במחיר כזה, מי לא יסכים? כל שאתם צריכים לעשות הוא למלא את מספר החברה, ולחתום דיגיטלית.

אחרי ששלחתם אלי את החוזה חתום, אני מוציא לכם חשבונית על 10,000 דולר. “מה זה?”, אתם שואלים. “הנה, החוזה שחתמתם עליו”, אני עונה. כדי להוכיח, אני שולח לכם חוזה, ואכן כתוב בו שאתם מתחייבים לשכור את שירותי למשך שנה, בעלות דו-חודשית של 10,000$. החוזה חתום בחתימה דיגיטלית המוצפנת באמצעות המפתח שלכם, הכל נראה כשר ותקף.

במר יאושכם, אתם שוכרים שירותי מומחה, שמוצא שלחוזה שחשבתם שאתם חותמים עליו ולזה שאני טוען שחתמתם עליו יש את אותו ההאש. בשלב זה אנחנו מגיעים לבית משפט. אתם טוענים נגדי להפרת חוזה – אתם מוכנים לשלם 12 שקלים, אבל אין שירות. אני, מצידי, טוען להפרת חוזה. היכן 10,000 הדולר שאני צריך כדי להתחיל לתת לכם את השירות?

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

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

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

לסיכום: מצבינו היום הוא ש-MD5 נשבר ברמה 1. יש טענות מצד מומחי קריפוטגרפיה גדולים ממני שרמות 2 ו- 3 אינן קשות כפי שהיה נהוג לחשוב. SHA-1 כנראה נשבר גם הוא, למרות שאין עדיין וודאות בנושא.

שחר

Bear