סוכנות הביון האמריקאית (NSA, המקבילה ל-8200) שחררה לפני כשבועיים, באופן חופשי ופתוח לציבור, כלי טכנולוגי מתקדם בשם "גידרה". המהלך צפוי להשפיע באופן דרמטי על החיים של כולנו, והוא גם דוגמא מרשימה לשימוש ב"קוד פתוח" בגופי ממשלה. בישראל מהלך דומה עוד רחוק
| רן בר-זיק | עד לפני כשבועיים, השם "גידרה" (Ghidra) היה ידוע רק לחובבי אנימה יפניים, כמפלצת אויבת לגודזילה. אבל לפני שבועיים השם הזה עלה לכותרות בהקשר שונה לגמרי: כלי "הנדסה הפוכה" (הסבר בהמשך) שה-NSA, סוכנות הביון האמריקאית, שחררה באופן חופשי ופתוח לציבור. המהלך הזה יצר הדים משמעותיים בקהילת חוקרי אבטחת המידע, ויש לו השפעות דרמטיות על החיים של כולנו (גם מי שלא מבין דבר באבטחת מידע). אבטחת מידע (או "סייבר") הוא מושג מאוד כללי לתחום מקצועי רחב: המונח בדרך כלל נכנס לחיינו סביב גילויים של דליפות מידע מאתרי אינטרנט ומאגרי מידע מקוונים. אבל לאבטחת מידע יש צד נוסף: פריצה לתוכנות בשיטה שנקראת "הנדסה הפוכה" (או "הנדסה לאחור" – Reverse Engineering). על מנת להבין לעומק מדוע ההפצה של "גידרה" בידי ה-NSA היא כל כך דרמטית, שווה להבין קודם (בקטנה) מהי הנדסה הפוכה – אחד התחומים החדשניים והמרתקים בתחום האבטחה (אבל אפשר גם לדלג ישר להשלכות אם בא לכם). הנדסה הפוכה היא שם כללי לטכניקה באמצעותה מהנדסים מצליחים לבנות מערכת בהתבסס על מערכת אחרת. למשל: אם מוצג בפני מהנדס מנוע חדשני שעובד בטכנולוגיה שונה לגמרי מהמקובל, הוא יכול להבין כיצד הוא עובד על-ידי פירוק של המנוע ובחינת מרכיביו. כשהמנוע מפורק לחלקיו הקטנים ביותר – אפשר לתעד אותם ולתעד את אופן הפירוק, ובכך להבין איך המנוע פועל ואיך ליצור אותו מחדש. בגלל זה התהליך נקרא "הנדסה הפוכה" – בעוד שהנדסה קלאסית לוקחות מרכיבים ובונה מהם מודל שלם, במקרה הזה אנחנו לוקחים מודל שהוא כבר שלם ומפרקים אותו לחלקיו הקטנים. אגב, זו הסיבה שבלא מעט מכלי הטיס המשוכללים יש אמצעים להשמדה עצמית – כדי למנוע מהאויב להבין איך המערכת עובדת ולבנות מערכת דומה. מקרים של תפיסה של מטוסים והנדוס הפוך שלהם נפוצים מאוד במהלך ההיסטוריה. גם בעולם התוכנה יש לנו הנדסה הפוכה: אם נפתח את קבצי ההתקנה של תוכנה שכולנו מכירים, נניח "חלונות" (Windows), אז הרי שנראה מידע בינארי, קובץ מלא ב-0 ו-1 שרק המעבד של המחשב יכול להבין. עין אנושית לא תצליח לפענח מיליוני שורות כאלו. ולכן, היעד הראשוני של הליך הנדסה הפוכה בתוכנה תהיה להמיר את אותו קובץ בינארי לקבצים בשפת התוכנה המקורית שבה התוכנה נכתבה – שפה שמהנדס אנושי יכול בקלות לקרוא (כמו ++Java, Python, C וכו). כלומר, ברגע שאנו מבצעים הנדסה הפוכה מוצלחת לתוכנה מסוימת, נוכל לבחון היטב את דרך הפעולה שלה מבפנים ולגלות בדיוק מה היא עושה ואיך. מה תהיה סיבה לביצוע תהליך של הנדסה הפוכה בתוכנה? יכולות להיות כמה כאלה. הסיבה היותר פשוטה היא צורך לבצע תיקונים בתוכנה שקבצי המקור שלה אבדו. למשל בארגון שמשתמש בתוכנה שהוא עצמו פיתח אך הקבצים של המתכנת שכתב את הקוד אינם בנמצא. אבל בינינו, הסיבות העיקריות יהיו קשורות לאבטחת מידע: תוקפים מבצעים הנדסה הפוכה של תוכנה כדי לאתר בה חולשות. אם למשל תוקף יבצע הנדסה הפוכה של תוכנה להצפנת מסמכים, ויצליח לראות את אלגוריתם ההצפנה של המסמכים, אז הרי שהוא יוכל לפתוח אותם בקלות רבה הרבה יותר. תוקף שיבצע הנדסה הפוכה של מערכת הפעלה (נניח של כור גרעיני), יכול למצוא חולשות במערכת ולתכנן וירוס שיתקוף את החולשות הללו. גם אנשי האבטחה – אלו שמגינים על המערכות – משתמשים בהנדסה הפוכה. לדוגמא, על-ידי הנדסה הפוכה של וירוס מחשבים ניתן יהיה למצוא רמזים למי שיצר אותו. הנדסה הפוכה של תוכנת כופר (תוכנה שמצפינה את הקבצים שעל המחשב ודורשת מבעל המחשב תשלום לשחרורם) יכולה לספק מידע על אלגוריתם ההצפנה וכיצד לשחרר את הקבצים הנעולים (זו לא דוגמא תיאורטית). ההשלכות של שחרור "גידרה" על חיינו גדולות – הן מהצד של האיומים והן מצד ההגנות: הפצת תוכנות פרוצות כנראה תגבר עם שחרור "גידרה", ולכן כדאי כפליים להימנע מהתקנת תוכנות פרוצות או כאלו שלא הורדו ממקורות רשמיים. היום יותר מתמיד כדאי גם להקפיד על עדכון קבוע של מערכת ההפעלה והתוכנות, להימנע מפתיחה של קבצים שנשלחו אליכם מאדם לא מוכר ולהיזהר באופן כללי מאתרים מפוקפקים. הנדסה הפוכה של תוכנה הוא הליך מורכב ומסובך מאוד שלא נעשה בקלות. פענוח של תוכניות מודרניות דורשת לא רק מומחיות טכנית רבה, אלא גם תוכנה ייעודית ממש טובה. ואכן בשוק האזרחי קיימות תוכנות רבות עוצמה להנדסה הפוכה. אך לא כל התוכנות נולדו שוות. יש הבדל משמעותי בין תוכנות אזרחיות לבין תוכנות צבאיות/ממשלתיות להנדסה הפוכה. הצבאיות, בהן משתמשות סוכנויות ביון, נשמרו עד כה מאחורי מעטה של סודיות ולא שוחררו לציבור מכל הסיבות המובנות: תוקפים יכולים להשתמש בהן לגילוי חולשות באינספור מערכות המשמשות את כולנו: החל ממערכת ההפעלה, דרך האנטי-וירוס ואפילו אפליקציות של משחקים. ממשלות בכלל, וממשלת ארצות הברית בפרט, שמרו על התוכנות שלהן בקנאות רבה. כל זה היה נכון, עד שלפני כשבועיים שחררה ה-NSA את תוכנת ההנדסה ההפוכה שלהם באופן פומבי וגלוי. ואף יותר מכך – הסוכנות הצהירה על הכוונה לשחרר את התוכנה המלאה בקוד פתוח – כלומר שמפתחים מכל העולם יוכלו לתרום קוד לתוכנה בעצמם. מדובר ברעידת אדמה ממשית בתחום. רעידת האדמה המדוברת היא לא רק ביכולות של הכלי הספציפי (כפי שיוסבר פה בהמשך), אלא בעצם שחרור כלי של ה-NSA לקהילה. מה הסיבות של "8200-האמריקאית" לנקוט בצעד כזה? אנשים מטעם הסוכנות ציינו כמה: הראשונה היא רצון שחוקרים ומתכנתים בכל העולם יוכלו לתרום ל"גידרה", באמצעות הקוד הפתוח. תוכנות בקוד פתוח נחשבות עמידות ומאובטחות יותר מכיוון שבמקום צוות פיתוח בודד ישנו פוטנציאל למיליוני מתכנתים שיסקרו את הקוד, יעירו ויאירו על בעיות אבטחה – ויכתבו שיפורים, תוספות ואפילו תיעוד לתוכנה. הסיבה השניה היא שחוקרים שיתחילו לעבוד בעתיד ב-NSA כבר יכירו את התוכנה הזו לעומק ולא יצטרכו לעבור הכשרה מקיפה לאחר ההצטרפות לארגון. בנוסף, מבחני הכניסה לסוכנות יוכלו להתבצע על גבי התוכנה. הסיבה השלישית היא שחוקרי אבטחת מידע "טובים" – כלומר אלו שחובשים את הכובע הלבן – יוכלו להיעזר בתוכנה הזו כדי להילחם בתוכנות מזיקות, ובראשן תוכנות הכופר. בעוד שבעולם לא מעט ממשלות וארגונים משחררים תוכנות פנימיות אל הקוד הפתוח ועושות שימוש בעצמן בתוכנות קוד פתוח – בישראל הממשלה (שלא לדבר על הצבא) אינה עושה זאת. לממשלת ישראל יש חיבה יתרה לשימוש בתוכנות קנייניות שעולות כסף. כך למשל מאוד מקובל למצוא אתרי ממשלה שמשתמשים בשיירפוינט (SharePoint) של מייקרוסופט כתשתית. לא רק שזה עולה הון עתק עבור הרשיונות, אלא שגם השימוש בשיירפוינט עלול להיות מאוד לא מאובטח (כפי שהאקטיביסט נעם רותם הראה בפרצות האחרונות לאתר השב"ס). בעוד שממשלות רבות בעולם עברו לשימוש בתוכנות קוד פתוח לאתרים, כמו וורדפרס הפופולרית, בישראל נותרו מאחור. על שחרור קוד שנוצר בידי מתכנתים בממשלה אין על מה לדבר בכלל. בזמן שיותר ויותר חברות מסחריות וממשלות בעולם נשענות על קוד פתוח ותורמות לו – הממשלה בישראל לא עושה את זה. יותר מכך – כשפעיל הרשת גיא זומר אילץ את משרד הבריאות לחשוף קוד שהוא כתב, המשרד הדפיס את הקוד (על נייר), סרק אותו ופרסם בקבצי PDF, תוך השחרת חלקים ממנו. יש ניצנים של שינוי כמובן, אבל יש לנו עוד דרך ארוכה. *** הערה חשובה: מסיבה מסוימת, ה-NSA לא מאפשרת כרגע הורדה של "גידרה" לאנשים שאינם מארצות הברית. הפעלה של ה-VPN המובנה בדפדפן אופרה (או שימוש ב"תור", או כל VPN אחר) מאפשרת את ההורדה הזו בלי בעיה. הורדה של התוכנה, יחד עם הוראות להתקנה (כולל סרטון!) נעשות דרך האתר הזה. 