תוכנה חופשית לעומת Open Source

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

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

אז ככה:

תוכנה חופשית


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

דוגמאות לתוכנות שלא נותנות את כל החירויות:
תוכנה שלא מתירה שימוש בה לצרכים צבאיים לא נותנת את חירות מספר 0.
תוכנה קניינית רגילה לא נותנת את חירות מספר 1.
כל תוכנה שמגיעה בלי קוד מקור לא נותנת את חירות מספר 2. מצד שני, גם להשיג את shared source של מיקרוסופט נותן לכם את קוד המקור, אבל לא את חירות מספר 2.
חירות מספר 3 היא המוזרה ביותר. על פניו, הן לא נראות שונה מכל השאר ביחד. התוכנות של DjB, אבל (qmail, ezmlm) נותנות את חרויות 0 עד 2, אבל לא את 3. כתוצאה מכך, אי אפשר לייצר יצירות נגזרות שלהן בצורה נוחה, הפיתוח של qmail לחלוטין נעצר במה ש-DJB החליט להכניס.

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

Open Source


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

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

ל-Open Source Initiative יש עשר הגדרות לגבי מהי תוכנה פתוחת קוד. מי שייקרא את ההגדרות יבין שאין כל הבדל עקרוני בין עשר ההגדרות של OSI לבין הארבע של סטולמן. תוכנה פתוחת קוד הינה תוכנה חופשית. רשיון קוד פתוח הינו רשיון תוכנה חופשית. אין הבדל.

ההבדל היחידי הינו באנשים. אנשי ה-OpenSource נוטים להיות פחות פנאטיים מאשר אנשי ה-Free Software, ולא לטעון שכתיבת תוכנה קניינית הינה “לא מוסרית”, וש”כל התוכנה בעולם חייבת להיות חופשית”.

תוכנה עם קוד מקור


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

לא כל תוכנה שמגיעה עם קוד המקור הינה תוכנה פתוחת קוד. כל תוכנה פתוחת קוד הינה תוכנה חופשית.

שחר

המאמר ב-whatsup שהקפיץ אותי הפעם…

מפגעי מזג האויר

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

בניגוד להרגלי בזמן האחרון (דיאטה וכו’), החלטתי להזמין אוכל מבחוץ. הזמנתי ספגטי meat balls מהאתר של ספגטים. כבר בטלפון הם הזהירו שייקח להם יותר מאשר בד”כ הפעם, ושזה ייקח שעה. לא נעים, אבל כבר הכנתי את עצמי לספגטים, ורציתי להמשיך לעבוד. השעה כשסגרתי את הטלפון היתה 13:18 (השעון מכוון ב-NTP, כך שאנחנו מדברים בדיוק של אלפיות שניה :-).

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

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

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

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

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

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

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

שחר

לא הכל ורוד

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

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

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

שחר

יזהרו הגולשים?

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

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

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

מצד שני, גוגל כן היו יכולים להזהר. ל-cookies שנשמרות בדפדפן שלכם יש טווח חוקי. עבור גלישה לדף שמחוץ לטווח הנ”ל, הדפדפן שלכם לא ימסור את ה-cookie. מכאן שגוגל התרשלו פעמיים. פעם אחת בגלל שהיה להם Cross Site Scripting (ולאבירם – נהוג לכנות אותם XSS, במיוחד כדי למנוע את הבילבול של מגיב מספר 4), ופעם שניה, החמורה יותר, שאתר froogle יכל היה לגשת ל-cookies ששייכים ל-gmail.

גם לגבי החלק השני, זה נובע מחוסר זהירות כפול. ראשית, בגלל שהם מפנים את gmail.com ל-gmail.google.com, ושנית בגלל שהם לא מגבילים את ה-cookies של gmail רק לאתר ההוא.

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

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

שחר

על חשיבות כללים בדמוקרטיה

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

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

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

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

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

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

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

דמוקרטיה באה להגן עלינו. בואו נדאג שהיא עושה את זה.

שחר

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

שחר

דו"ח spywares מהמחשב שלי – אפס

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

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

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

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

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

אז, נכון, השימוש שלי במערכת הזו הוא דיי סגפני. אין שם תוכנות P2P, אין שם משחקים מפוצצים. מצד שני, כן יש שם סביבת פיתוח מלאה (שתיים, למעשה. Visual Studio 6 ו-MinGW), מסד נתונים (Postgresql 8 לחלונות), כלי בקרת תצורה (WinCVS) וכו. יש שם אפילו טיפה משחקים קטנים, וסתם דברים אחרים (skype מהתקופה שלא היתה גרסה ללינוקס, וכו’).

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

שחר

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

ש.

שיחת המכירות הקצרה ביותר

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

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

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

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

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

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

שחר

מי מחליט מה עושה המחשב שלכם? כמה מילים על חשיבות הינדוס לאחור

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

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

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

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

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

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

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

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

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

חשוב להבין


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

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

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

אני אתן דוגמאות. בעבר הרחוק היו מספר גרסאות של DOS. אחת מהן היתה של חברה בשם Digital Research, וכונתה “DR-DOS”. מסתבר שבגרסאות הבטא של חלונות 3.11, מיקרוסופט ביצעה זיהוי של איזו גרסת Dos רצה על המחשב, ואם היה מדובר בגרסה של DR-Dos, חלונות לא היה עולה. התומכים הטכניים הונחו להאשים את DR-Dos בתקלה. אקט של השמצה עסקית פשוטה. הדרך היחידה לגלות את זה, אבל, היא באמצעות הינדוס לאחור את מקור השגיאה. אם הינדוס לאחור לא היה קיים (או היה אסור), אקטים בריוניים שכאילו היו עוברים מבלי שאיש היה מבחין בהם.

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

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

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

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

שחר

נ.ב.
הנה המאמר ב-slashdot שהביא אותי לכתוב את הפוסט הזה דווקא היום.
ש.

Bear