ירון נשען על מסעד הכורסה המרופדת והעיף מבט חטוף בשעונו. השעה היתה חמש דקות אחרי ארבע. "אם הדיון יהיה תכליתי" הרהר בספקנות, "אולי נצליח לצאת בשעה נורמאלית מהמפעל".
שמיל לגם באדישות מהכוס שבידו וריקי הביטה במיכה שהכין את מקרן השקפים.
"שימו לב" אמר מיכה, מנסה בלא הצלחה להפעיל את המקרן.
ריקי קמה ממקומה והעבירה את הכבל החשמלי לשקע אחר. המכשיר התעורר לחיים וסכמה מלבנית של מערכת, ששורטטה ביד בלתי מיומנת, הוקרנה על המסך המוכסף.
"מה התוכנית, מיכה, כמה זמן זה יימשך?" חקר ירון.
* DF = Direction Finder
מערכות אוטומטיות לגילוי כיוון של מקורות שידורי רדיו.
** מכ"ם = מגלה כיוון - מרחק (Radar)
* שפת מכונה שפת התכנות הבסיסית ביותר, אשר כתובה בקודים בינאריים שמחשב מבצע
***ROM = Read Only Memory
רכיב זיכרון המורכב במעגלים האלקטרוניים של מכשירים מבוקרי מחשב. ברכיב זה צרובות תוכניות המחשב - אלגוריתם המכשיר.
מיכה התרחק מעט מהמקרן וניסה ליישר את שערו באצבעותיו. "ראשית, רציתי להציג את שילוב 'אלון ירוק' במערך ההגנה הכולל, כדי להדגיש את נקודות התורפה הרגישות שאהוד העלה. לאחר מכן הכנתי תסריט של השתלת וירוס במערכת ולבסוף נקיים דיון פתוח שבמהלכו ננסה לבחון את האפשרות המעשית של פגיעה במערך ההגנה על ידי וירוס".
"לכמה זמן תכננת את הסקירה?" הקיש שמיל.
"לא יותר מרבע שעה, אם לא יהיו שאלות" השיב.
"זאת אומרת" חישב ירון, "אם הדיון יידחה למחר, כדי לאפשר לנו 'לבשל' את הרעיון, נצא מכאן בזמן".
"מיכה, אתה מוכן להתחיל?" בקשה ריקי בחוסר עדינות מופגן.
מיכה נשם נשימה עמוקה ואמר: "מערך ההגנה כולל אמצעי התראה מסוגים שונים שאמורים לזהות שיגור טילים מבסיסם או התקרבות כלי טיס לעבר הגבול. מערכות DF* ומערכות מכ'מ** מתוחכמות כמו אלון..."
שמיל קטע את רצף דבריו בחוסר סבלנות בולט. "הסיפור הזה לא חדש לנו... חבל על הזמן... נסה להתמקד בנושא העיקרי..."
מיכה השליך בשמיל מבט נעלב במקצת, החליף שקף שהציג את התרשים המלבני של מערכת 'אלון ירוק' והמשיך.
"יחידת ה - Elint של 'אלון ירוק' עלולה להתגלות כנקודת תורפה במערך ההגנה. מיד אסביר מדוע" מיהר מיכה להגיב למבטי התמיהה שנשקפו מעיני הנוכחים. "למי שהספיק לשכח, Elint היא קיצור למושג הטכני ELectronic INTelligence המקובל בחוג אנשי המודיעין. כפי שאתם יודעים, יחידה זו אוספת מידע ביון אלקטרוני לצורך ניתוח. בהמשך היא מציגה באופן פשוט ובהיר מגוון של נתונים טכניים המהווים בסיס לקבלת החלטות בזמן קרב. במלים אחרות, מידע סיפרתי כמו בתקשורת מחשבים למשל, יכול גם הוא להיות משודר על ידי האוייב. יחידת ה - Elint קולטת תקשורת כזו ושומרת את המידע שנקלט בזיכרון שלה לצורך ניתוח והסקת מסקנות".
מיכה הפסיק לרגע את שטף דיבורו, הביט בנוכחים והמשיך. "זו בדיוק החוליה החלשה במערך ההגנה, כי האוייב יכול לשדר גם אלגוריתם של וירוס. 'אלון ירוק', אם כן, יכול לשמור בקרבו וירוס שנקלט בתדר רדיו". הנוכחים המשיכו לבהות בשקף שהוקרן על המסך. "כאשר וירוס כבר קיים בזיכרון" המשיך מיכה בקול צרוד, "הוא יכול לנטרל את מערכת המכ'מ המקומית או במקרה הגרוע יותר, לעבור אל מרכז קבלת ההחלטות של כל מערך ההגנה ולשבש אותו ברגע הרצוי לאויב".
מיכה החזיר את השקף שמתאר את מערך ההגנה ושירטט קו דמיוני בעזרת הסרגל שבידו. קו שחיבר תחנה אחת של 'אלון ירוק' דרך תחנת ממסר אזורית, אל מלבן המציין את מרכז קבלת ההחלטות.
"זהו, יש שאלות?"
שום דבר לא זז. אף לא אחד הגיב לשאלה.
"אם הכל מובן, נעבור לשלב הבא" הציע מיכה.
דממה מוחלטת הדהדה בחדר. זמזום המזגן לא נשמע, פעולתו הופסקה בשעה חמש, מטעמי חסכון. החום והלחות החלו להציק. האוויר בחדר הדיונים לא נע. פניו של מיכה להטו, לחייו היו סמוקות וחולצתו היhתה ספוגה בזעה.
"החום הזה בלתי נסבל" העירה ריקי כששינתה את תנוחת ישיבתה. "זה מחיר השעות הנוספות" השיב ירון, ונפנף בחולצתו כדי לצנן מעט את גופו המיוזע.
שמיל הסיט את כורסתו באיטיות והתרומם. בהילוך איטי קרב אל הדלת ופתח אותה לרווחה. זרימת האוויר המרעננת לה ציפו לא הגיעה, אך רעש מנוע התנור לבדיקות טמפרטורה פלש אל חלל החדר. באכזבה סגר שמיל את הדלת ושב למקומו.
"איך אפשר לחשוב בתנאים כאלה?" שאל ירון. "הרי אנחנו יכולים לתבוע את תע'צ על התעללות בבני אדם. איך אפשר לתפקד בחום הזה? מי נתן הוראה כל כך חסרת התחשבות לכבות את המזגנים? מה עם כל ה'פריירים' שנשארים שעות נוספות?"
"הפסקת שתייה ודאי לא תזיק" הצהירה ריקי וקמה ממושבה.
שמיל אך שמח לפסק זמן.
בתום הפסקת התרעננות קצרה, תפס מיכה את מקומו בראש השולחן והניח שקף על המקרן. תרשים זרימה הוצג על המסך. "התסריט שעליו חשבנו... אהוד ואני" אמר בקול בוטח, "התבסס על אפשרות של שידור וירוס בתחום תקשורת הנתונים, כשהיעד הוא להשתמש ביחידת ה - Elint... כי זו להערכתנו, 'הבטן הרכה' של מערך ההגנה. פעולתו של וירוס, בשיחזור שבצענו בבוקר, מבוצעת בששה שלבים.
שלב א': באחד מתדרי העבודה של 'אלון ירוק', משדר האוייב תוכנית וירוס. כל תוי התוכנית משודרים לחלל, בזה אחר זה. התוכנית המשודרת כתובה בשפת מכונה* כך שהיא יכולה, באופן עקרוני, להתחיל לפעול מייד כשהיא תמצא בזיכרון המחשב.
"מדהים" הרהר ירון. "איך אנשים חכמים כאלה יכולים להעלות רעיון מטופש כזה?" והשים עצמו כמתעניין.
שלב ב': יחידת ה - Elint קולטת את התוכנית ושומרת אותה בזיכרון המחשב כרצף של נתונים, לצורך ניתוח, כפי שהיא עושה לכל שדר אחר שנקלט.
שלב ג': כאשר כל מרכיבי הוירוס שמורים כבר במחשב, אז הוירוס יתחיל לנשום... כלומר להתמקם במקום בטוח בזיכרון של 'אלון ירוק'. במלים אחרות, הוא ישכפל את עצמו במקומות שונים בדיסק הקשיח".
מיכה שתק לרגע ומייד הוסיף: "אני לא יודע בדיוק איך תהליך כזה יכול להתרחש, לכן כל כך רצינו שירון יקח חלק בדיון.
"תהליך כזה פשוט לא יכול להתרחש" חייך ירון לעצמו, "אבל ניתן לו להמשיך לפנטז..."
"בשלב ד' ימתין הוירוס להוראה מרחוק. אין שום סיבה נראית לעין שהוא יתגלה בשלב הזה, משום שהוא כמעט לא יפעל ולכן גם לא יפריע למערכת לתפקד. כי מתחילים לחשוד רק כאשר קיימות הפרעות בלתי מוסברות במערכת..."
"מה פרוש 'כמעט' לא יפעל?" שאל שמיל.
"וואו" התפלא ירון. "מה, שמיל לוקח אותו ברצינות?"
"נניח..." המשיך מיכה. "נניח רק שבכל פעם שייקלט נתון חדש דרך ערוץ הרדיו על ידי יחידת ה-Elint, אז גם הוירוס יבדוק את כל השדרים, אבל לא יעשה דבר עם זה... ככה זה צריך לעבוד, לדעתי" הסביר.
שמיל הנהן בראשו בהבנה ומיכה המשיך.
"שלב ההמתנה יכול להיות מאוד ממושך. הוירוס צריך לפעול רק במלחמה!"
ריקי הביטה בעניין במיכה, שהמשיך לדבר בהתלהבות.
"שלב ה': בשעת קרב, ברגע הקריטי ביותר, ישדר האוייב צופן מסויים אשר גם הוא ייקלט על ידי יחידת ה - Elint של תחנת המכ'מ ויישמר בזיכרון, כפי שנעשה תמיד. הפעם יזהה הוירוס את הצופן שהמתין לבואו בסבלנות כה רבה... ואז תפרוץ המפלצת מהמחבוא ותשבש את פעילות תחנת המכ'מ... בקלות... ממש כמו שוירוס 'יום שישי השחור' ידע לעשות".
מיכה התכופף מעט ונשען בכפות ידיו על השולחן, קרב באופן זה את פניו לנוכחים ובמבט רב משמעות, באיטיות המכוונת, כדי להרשים, הוסיף: "די בשיבוש של עשר דקות כדי לאפשר חדירה של מטוסים או טילים אל מעבר למערך ההגנה, וכך לקבוע את תוצאות הקרב... או המלחמה, אם תרצו... רק תזכרו את תוצאות מלחמת ששת הימים... תוצאות שנקבעו לאחר חיסול צי ה..."
"מכירים, מכירים" קטעה ריקי את דבריו.
מיכה יישר את גבו, ניגב את מצחו המיוזע בגב ידו והמשיך. "בשלב הששי והאחרון משמיד הוירוס את עצמו, כדי שלא להשאיר עקבות".
בתום המתנה קצרה, שבמהלכה איש מהנוכחים לא הגיב, אמר: "אני סיימתי, עכשיו אני מצפה לתגובות" פלט אנחה והתיישב על הכורסה.
"מעניין אותי מדוע חשבתם דווקא על יחידת ה - Elint שמנתחת אותות אנלוגיים. הרי כל מכשיר שמטפל ב COMINT - (COMmunication INTelligence)" המשיך בחיוך, "זה תרגום בגוף הסרט... במיוחד לך" חייך שמיל לעבר ירון, "באמצעות כמעט כל מכשיר או מערכת COMINT אפשר להזריק Data אל זיכרון המחשב של מערכת הקשר, שקולטת נתונים סיפרתיים ושומרת אותם. אולי יותר נכון לנתח יחידת COMINT ולא יחידת ELINT כי שם הנתונים מוצפנים בצורה פחות מחשידה?"
"באופן עקרוני אתה צודק" מיהרה ריקי להשיב, אבל אני לא רואה את הנקודה הזו כעקרונית. לצורך העניין נגיד שקיימת איזו מערכת, שקשורה לערוץ רדיו... שקולטת תקשורת ספרתית ומאכסנת אותה בזיכרון. עובדה זו בלבד יכולה לשמש בסיס לדיון שלנו... השאלה שעומדת עכשיו על הפרק היא אחרת לגמרי... השאלה היא לא אם וירוס יכול להכנס אל מחשב מהסוג שקיים ב'אלון ירוק', אני ממש לא רואה איך דבר כזה יכול להתקיים, בלי אלגוריתם שיחכה לרצף שאתה מדבר עליו, כדי לשתול אותו במקום המתאים. זו לא השאלה, כי זה בכלל לא מעשי... אני צודקת?" שאלה והביטה בירון.
ירון בלע חיוך נבוך, הניע את ראשו מעט והרים גבה כאומר: "וודאי" ומלמל בחוסר נוחות: "את צודקת, אבל תמשיכי... תמשיכי..."
וריקי המשיכה: "השאלה המעניינת היא מה הוירוס שכבר שמור בזיכרון של 'אלון ירוק' יכול לעשות בנקודת זמן מסוימת... אבל לפני כן חשבתי על משהו אחר... נניח שהצליחו לשתול וירוס במערכת המחשוב של 'אלון ירוק'... בינתיים לא חשוב איך... וצריך למצוא דרך כדי לברר אם קיים בכלל קטע כזה בזיכרון. אז לדעתי צריך להיות קל מאוד לאתר אותו כי מרבית הזמן הוא פשוט לא עובד. זה הדבר שמייחד אותו. הרי הוא ממתין לטריגר שיפעיל אותו ובינתיים הוא לא פעיל. נכון?" מבלי להמתין לתשובה, המשיכה. "אם תכתב איזו תוכנית קטנה שתעקוב אחר פעילות התוכנה ב'אלון ירוק', היא תוכל לאתר יחידות תוכנה שאינן פעילות ולהתריע על כך שהן חשודות כוירוס. אם התאוריה הזו נכונה, אין בעייה. וירוס לא יכול ולא צריך להפחיד אותנו..."
עיני הנוכחים חקרו את תגובותיו של ירון בסקרנות.
"הרעיון הזה מוכר לי מאיזה שהוא מקום" שטפו מחשבות את מוחו. "כמובן... הו, כן, ודאי..." הרהר ירון בלגלוג. "לפני יושבת חובבת מדע בדיוני. אלה הם מקורות המידע שלך?" כמעט פרצה השאלה הפוגעת מגרונו, אך הוא עצר בעצמו. "שיטת מציאת הוירוס בספר 'SOFTWAR', שנכתב על ידי שני צרפתים, התבססה על השיטה שהציעה זה עתה ריקי, אבל כמובן, אין לרעיון זה בסיס מעשי" חשב ירון. חיוך התפשט על שפתיו כשהחל לדבר בקול בוטח.
"בתוכניות תעשייתיות ועל אחת כמה וכמה בתוכניות צבאיות, בממוצע שבעים עד שמונים אחוזים מהתוכנה מטפלים דווקא באירועים בלתי רצויים בעוד שהחלק הפעיל בתוכנה, חלק התוכנה שפועל בשיגרה, מהווה פלח קטן מאוד מהיקף כל התוכנה. את תופסת את העניין? כנגד כל עשר שורות CODE שמטפלות במטלת תוכנה מסויימת, חייבים לכתוב עוד כארבעים שורות CODE בממוצע, כדי למנוע סיבוכים בהפעלת התוכנית, במקרה שמשהו לא רצוי יתרחש".
"לא צפוי" תיקן אותו מיכה.
"אילו האירוע היה בלתי צפוי, לא היו חושבים עליו מראש, בעת תכון התוכנה" תיקן ירון, בעודו שומר על הבעה אדישה. "האירוע דווקא כן צפוי, לכן התחשבו בו בשעת כתיבת האלגוריתם, אבל הוא בלתי רצוי כי הוא עלול להפריע למהלך התקין של התוכנית".
מיכה הניד ראשו בהבנה והמשיך: "זאת אומרת שאם יתרחש אירוע בלתי צפוי, אז התוכנה הקיימת לא תדע לטפל בו, כי הוא בלתי צפוי... ואם האירוע מספיק חמור, אז האירוע עלול לגרום לנפילת התוכנה... לשיבוש פעולת המערכת".
"נכון מאוד" חייך ירון מבלי להביט לעברו, לגם מכוס הקפה והמשיך: "במלים אחרות, מרבית התוכנה מיועדת לטיפול באירועים בלתי רצויים שעלולים להתרחש ולכן החלקים האלה בדרך כלל, פשוט לא מופעלים".
"זה נשמע קצת אבסורדי" גיחך מיכה. אתה רוצה לומר ששמונים אחוזים מהתוכנה, שמשקיעים בה הון עתק, לא בשימוש?"
"את זה אני לא אמרתי" השיב ירון, "סוג התוכנה ומורכבות תנאי ההפעלה, קובעים את אופי הפעילות. בממוצע, כשמונים אחוזים מהתוכנה עומדים במצב היכון, למקרה של תקלה או קליטה שגוייה של נתון, שעלולה לשבש את המערכת".
"זה לא מגוחך?" שאל מיכה, בפנותו אל ריקי. "את מנתחת מערכות... את מקבלת את..."
"אולי דוגמאות יכולות להסביר את הנקודה הזו" ניסתה ריקי בדרכה. "במקרה הפשוט ביותר, כל קלט שמתקבל ממפעיל חייב להבדק על ידי 'תוכנית טובה'. מה זו 'תכנית טובה'?" שאלה ולא המתינה לתשובה. " 'תכנית טובה' היא... אם נניח שהמחשב מצפה לקבל מספר תעודת זהוי והמפעיל מסר לו בטעות את הגיל של אחותו, מה יהיה אז???" שאל באירוניה בלתי מוסוית.
"תפסיק, תפסיק להתבדח, הנושא רציני" לא יכול היה מיכה להמנע מתגובה.
"אני רצינית מאוד" השיבה ריקי, "מספר תעודת הזיהוי מורכב משש או שמונה ספרות? ומה אם המפעיל יגדיר בטעות חמש ספרות? מה יקרה כאשר המפעיל יטעה בספרה אחת ויקליד 8 במקום 9, אז צריך ספרת ביקורת? אם כן... אז צריך גם אלגוריתם שיבדוק את נכוֹנוּת הקלט שהוקלד... וזה המקרה הפשוט! כל זמן שהמפעיל לא טועה, קטע האלגוריתם שמציג הודעת שגיאה, אינו פועל. אם לא תהייה טעות אנושית, יתכן שקטע התוכנית שמציג את הודעת השגיאה לא יפעל לעולם..."
"עדיין אני לא רואה למה שמונים אחוזים מהתוכנה מטפלים רק באירועים בלתי רצויים..." הקשה מיכה. "ממתי הודעות שגיאה הם שמונים אחוזים מהתוכנה?"
"בסדר, אתן לך דוגמא מהתחום שאתה מכיר... מתחום האלקטרוניקה" חייכה ריקי. "ממ.. ביחידת המכ'מ שלך קיימים מעגלים אלקטרוניים שמשמשים להגנת מרכיבי מערכת רגישים במיוחד או יקרים במיוחד. אלגוריתמים מתאימים תומכים במעגלי ההגנה האלה. עד כאן זה בסדר?"
"אני איתך" מלמל.
"Good" אמרה והמשיכה: " אז אתה בודאי מכיר את הנושא. במקרים כאלה ברור שקיים איזה שהוא Driver זאת אומרת יחידת תוכנה קטנטנה שמופעלת רק כאשר אירוע מסויים מתרחש. נניח כשמתח היציאה של ספק כוח מסויים יורד מתחת לערך מוגדר. מעגל אלקטרוני שקרוי Comparator מזהה את הירידה הזו, מתחת לגבול הקריטי המותר, ומפיק פולס קצר שנקרא לו, נניח, Interrupt. ה - Interrupt הזה מעורר קטע תוכנית רדום, אלגוריתם שלא הופעל עד כה, כי לא היה צורך בהפעלה שלו. האלגוריתם הזה יכול להיות מורכב מאוד. למשל, אם ירידה במתח עלולה למחוק נתונים, אז קטע התוכנית ה'מתעוררת' מנטרל מעגלים אחרים צרכני זרם, כדי למתן את קצב ירידת המתח של ספק הכוח ובשלב הבא, מעתיק במהירות נתונים רגישים וקריטיים לזיכרון בלתי מחיק. יתכן שהתוכנית הזו, שלא היתה פעילה עד אז, מיועדת להפצת הודעות שגיאה למפעיל המערכת או למחשב המרכזי. התוכנית מסוגלת לבצע אלף ואחד דברים נוספים. אלגוריתם כזה יכול להיות גדול מאוד ולמרות חשיבותו הרבה, הוא יכול לנוח בשקט במשך שנים, מבלי לפעול אם ספק הכוח של המערכת מספיק אמין. שיכנעתי?" שאלה ריקי בחיוך.
מיכה הסתפקה בחיוך נבוך וירון שאל: "עכשיו אני יכול להמשיך?"
מיכה סימן לו בעיניו והוא המשיך: "ברשותכם, אתייחס לנקודה שהודגשה פחות הן על ידי אהוד והן על ידי מיכה... סוכן... כשאהוד הציג את חששותיו, חשבתי על ד'ר עבד אל-קאדר חילמי".
"אני רואה שאתה מתמצא בריגול התעשייתי" חייכה ריקי. "אתה התכוונת למומחה הטילים הערבי שנתפס באמצע שנת 1988 על ידי ה -CIA?"
"עליו בדיוק חשבתי. זהו מקרה קלאסי, לדעתי, של ביון שמבוצע על ידי אנשי חומרה".
"היי..." שסע מיכה את ירון בהתעניינות, "על איזה מרגל אתם מדברים? מה היה שם?"
"ביוני 1988" הסביר ירון, "נעצר ד'ר חילמי באשמת ייצוא מידע וחומרים אסטרטגיים מתקדמים למדינות זרות, בלא אישורו של משרד החוץ האמריקני. האיש הזה, נשוי ואב לשני ילדים זכה, אגב, באזרחות אמריקנית שנה קודם שנתפס. הוא עבד כמומחה לטילים בחברה אמריקנית רגישה בשם AEROJET GENERAL CORPORATION. חילמי הוא מהסוג הרגיל של סוכנים שעוסקים בריגול תעשייתי. תפקידו של חילמי היה להעביר מידע מסווג וחומרים מיוחדים שאי אפשר היה להעביר באופן רשמי למדינות ערב. זו דוגמא של סוכן זר שהשתלב בתפקיד בכיר, כפי הנראה, באיזה שהוא צוות טכני. אני מניח שההיסטוריה של הריגול התעשייתי, מוצפת בדוגמאות כאלה. לכן, סוכן שמצליח להתברג אל צוות 'אלון ירוק' עלול לגרום נזק הרבה יותר חמור מכל שידור מתוחכם של האוייב. סוכן שהוא גם איש תוכנה, מסוכן אלף מונים מכל סוכן אחר שיהיה המומחה הגדול ביותר, בתחום טכני שונה מתוכנה. דרך אגב, ד'ר חילמי הזה נחשב לאחד מחמשת המומחים הגדולים ביותר בעולם לטילים..."
"אני לא מבינה איך הדוגמא שהבאת, שייכת לעניין" העירה ריקי, "עד כמה שאני זוכרת, הוא העביר חומרים ונוסחאות סודיות ביותר של חומרים חדישים, שמשמשים כהגנה מפני החום שנוצר בזמן כניסת טילים לאטמוספירה. ריגול בנושאי אלקטרוניקה ותוכנה מבוצע באופן שונה לחלוטין..."
"זו לא הנקודה" השיב ירון. "הפואנטה החשובה שרציתי להדגיש היא שסוכן זר שהוא איש חומרה, מפחיד אותי פחות. אדם כזה לא יכול לשתול מעגל אלקטרוני על כרטיס, מכיוון שמיד יראו את המעגל הנוסף. בסופו של דבר זו תוספת פיסית שניראית בעין בלתי מזויינת. ישאלו שאלות ויבדקו את המעגל משום שרואים אותו, אפשר למשש אותו באצבעות... תפקידו של איש ביון המתמחה בחומרה יכול להסתכם אך ורק בדווח מדוייק על התקדמות הפרוייקט או משהו כזה...".
"זה הכול?" מלמל שמיל כאילו לעצמו. "מי יכול להעריך את הנזק שעלול להגרם כתוצאה משליחת שרטוטים... מגניבת רעיונות... מ..."
ירון הרים את קולו מעט, מתעלם מהערה. "סוכן כזה מסתכן בהעברת חומר מודיעיני במיוחד כשמדובר במפעל בטחוני שמור והוא עלול ליפול בפח בדיוק כמו אותו ד'ר חילמי. המקרה הזה ממש לא דומה להשתלה של יחידת תוכנה קטנטונת שאפשר להסתיר היטב בתוכנה אשר בלאו הכי לא מספיק ברורה אפילו לאנשי הצוות עצמו... מצד שני, סוכן שהוא מומחה תוכנה, סוכן שהוא חלק מצוות פיתוח, יכול לשתול בקלות רבה מאוד, כמעט בלי סיכון, 'סוס טרויאני' קטן שאינו מבצע דבר בזמני רגיעה. בתהליך ייצור המערכת, משכפלים את הסוס הטרויאני יחד עם כל שאר מרכיבי המערכת האחרים כי האלגוריתם הזה צרוב עמוק עמוק בתוך איזה ROM*** שהוא זיכרון המיועד לקריאה בלבד. המקום הזה הוא ממש לא סביר, בעיני המתכנתים כמובן, שיישמר וירוס!!! נכון? סביר מאוד להערכתי, שאדם טכני בר דעת לא יחשוד שדווקא ב - ROM חבוי וירוס. כלומר, סוס טרויאני, כמובן... כי... כי ברור לכולם ש - ROM מיועד לקריאה בלבד!!! אם כך כיצד ייצרב בו אלגוריתם זר? לכאורה זה נשמע לא מעשי... זה לא כמו וירוס יום שישי השחור של אהוד"
"יופי" קפצה ריקי מכסאה, "חכיתי בקוצר רוח לרגע הזה. עכשיו תסביר לי מה זה בדיוק הסוס הטרויאני הנורא הזה. אהוד איננו".
"סתם תוכנית קצרה, שלא מתפשטת - בשונה מוירוס - אלא תקועה במקום אחד בלבד במערכת המחשב וממתינה לטריגר שיעיר אותה".
"מה עושה סוס טרויאני כשהוא מתעורר?" המשיכה ריקי.
"וואו... זה תלוי בדמיונו הפרוע של האדם שכתב אותו... אבל מהבחינה הזו, אין הבדל בין וירוס, סוס טרויאני או Worm Program. שלושת סוגי התוכניות האלה פועלים כמו כל תוכנית מחשב אחרת. ההבדל בא לידי ביטוי רק באופן ההתפשטות או האחסון בזיכרון. בהזדמנות, ריקי, בסדר? אני אצלם לך איזה מאמר בנושא אבל... תני לי רק לסיים את עניין הסוכן".
ריקי נאנחה ונשענה על הכורסה.
"בקיצור, כל מה שרציתי לומר, מתבסס על העובדה שביקורת איכות התוכנה מבוצעת, בעיקרה, ברמה פונקציונלית בלבד".
"?So What" שאל שמיל בסקרנות.
"בבדיקה פונקציונלית של מודולי התוכנה, מתייחסים אל יחידת תוכנה כמו אל קופסא שחורה ואטומה - Black Box, זאת אומרת שהבוחן בכלל לא מתעניין בתוכן יחידת התוכנה שנבדקת או איך היא בדיוק כתובה. מה שמעניין אותו, בזמן הבדיקה, זה אם יחידת התוכנה פועלת על פי דרישות האפיון. כי הרי קובעים את הבדיקות על פי אפיון בלבד של תיפקודי יחידת התוכנה. אם מוֹדוּל מתוכנן לבצע שלוש פעולות, אז יבדקו את שלוש הפעולות האלה בלבד, במקרה הטוב!!! אם השתילו פונקציה נוספת במודול התוכנה שנבדק, אף לא אחד ידע את זה, מכיוון שהפונקציה הנוספת הזו לא תבדק... לעולם!!! לעולם!!! כי אותה לא איפיינו... אתם מבינים? היא לא נמצאת במסמכי האפיון וגם לא במסמכי התכנון"
"אם כך, אנחנו בְּמִלְכּוּד". אמר מיכה.
"לא בדיוק" השיב ירון, "אפשר לבצע בדיקות קפדניות יותר למערכת. לא רק בדיקות פונקציונליות אלא ברמה של קופסא שקופה, כפי שהן נקראות בעגה מקצועית... זאת אומרת 'White Box Testing'. בבדיקות כאלה, נבחנת איכות ה - Code ויעילות האלגוריתם. הבדיקות ברמה של קופסא שקופה מתייחסות לרמת התיעוד, איכות התיעוד ונקודות חלשות אחרות שבדרך כלל לא נבדקות, אלא בצורה מדגמית... כאשר בודקים ברמה כזו... קיים סיכוי קטן יותר שישתרבב אלגוריתם לא ידוע... וירוס או סוס טרויאני אם תרצו".
מיכה חייך בספקנות. "כסף... כסף... אתה הרי יודע מה משמעות בדיקות כאלה... מי יכול לעמוד בזה?"
"אז אם נחזור לעניננו" קטעה ריקי את דבריו, "סוכן מושתל בפרוייקט הוא עניין חמור, אבל בדיקות שיטתיות יכולות למנוע סינון של אלגוריתם בלתי רצוי... נכון, ירון?"
"נכון מאוד" מיהר ירון להשיב, "הייתי רק רוצה שתחושו מעט את הסכנה... הרי אם הסוכן כן מצליח לשלב סוס טרויאני באיזה ROM במערכת של 'אלון ירוק', זה כאילו שהסוס הטרויאני הושתל בחומרה שלו!!! במקרה כזה, זה יהיה ממש אסון! הסוס הטרויאני ישוכפל בכל דגמי הייצור וישולב בכל מערך ההגנה... סוס כזה ימתין לשעת כושר לשבש את כל מערך ההגנה בעת ובעונה אחת... על האוייב בסך הכל לשדר את הצופן המתאים שישמש כטריגר... אלה הן הסכנות כפי שאני רואה בסוכן זר המשולב בצוות פיתוח".
"אז איך אפשר להתגונן מפני מצב כזה? נתחיל ברמה העקרונית..." זרק מיכה שאלה.
"ובכן" מיהר שמיל להשיב, "מבחני המיון לתע'צ מצמצמים את הסיכוי להשתלת סוכן רוסי, אז אנחנו פתורים מהנושא הזה..."
"פתורים?" שאלה ריקי. "חייבים להיות עירניים כל הזמן..."
"אנחנו צריכים..." ניסה ירון להחזיר את נושא השיחה. "לא, לא, לא... רק רגע... למעשה, עומדות בפנינו שתי אפשרויות מעשיות... שאנחנו כן יכולים לשלוט בהן... ראשית, חייבים לכתוב יחידות תוכנה קטנות ככל האפשר... עקרון 'הסתרת המידע' של דָּוִד פָּרְנָס, צריך להנחות אותנו... צריך לתכנן את יחידות התוכנה בהתאם. ושנית... חייבים, אבל חייבים לבצע בדיקות ברמה של 'קופסא שקופה' על כל התוכנה". אף לא אחד הגיב לדברי ירון. כולם הכירו את עמדתו ואת מלחמות ה'דון קישוט' שנהג לערוך וגם הוא ידע שאין תכלית לנבואות הזעם שלו.
"ובכן" המשיך, "בלי כל קשר לכל מה שנאמר עד כה, אני רוצה להציג כמה עובדות שיכולות לסתור את הרעיון של וירוס שנקלט על ידי המערכת בקשר הרדיו. לצורך זה כדאי להכיר יותר את התכונות של תוכנית וירוס או סוס טרויאני או סתם Worm Program, ואת הדרך בה תוכניות כאלה פועלות..."
"ירון, ירון..." הרימה ריקי את ידה, "הזכרת שלושה סוגים של אלגוריתמים. שמעתי מעט מאוד עליהם. אולי באמת זו ההזדמנות להבין קצת יותר את הנושא?"
ירון הציץ בחטף בשעונו, עיקם את אפו והשיב: "אבל בקיצור".
ריקי התרווחה על הכורסה, כמו לפני שמיעת סיפור הרפתקאות מרתק ומיכה נותר שקט ומתוח. שמיל חייך.
ירון גירד את פדחתו ואמר. "Worm program היא תוכנית שיודעת לשכפל את עצמה במרחב הזיכרון, באמצעות יצירת העתק של עצמה על ידי שימוש בפקודת Copy. תוכנית מסוג זה מופיעה בזיכרון המחשב כקובץ הפעלה - Executable File, בניגוד לוירוס שה - Code שלו משולב בתוך תוכנית קיימת אחרת, כמו תמלילית, גליון אלקטרוני וכדומה. תוכניות Worms 'מתגנבות' אל כל שכבות מערכת המחשב בדיסק הקשיח, כמו שהן... אפשר לזהות אותן משום שיש להן שם ידוע. MAY.EXE, למשל, יכולה להיות Worm program".
"נו, באמת ירון, אתה מוכן לפרט פחות?" ביקש מיכה, "צריך לסיים את הדיון היום ולהגיע למסקנות... איך תמיד אנחנו מצליחים לגלוש לנושאים שוליים..."
"בכל מקרה לא נוכל לסיים את הניתוח היום, אלא אם אתה רוצה להחליט על משהו בחופזה, בצורה לא רצינית" השיב שמיל, "אהוד ביקש מסקנות ראשוניות עד סוף השבוע..."
"להמשיך?" שאל ירון.
"כן, כן..." מיהרה ריקי להשיב, "זה דווקא מעניין..."
"Logical viruses, בניגוד לסוג הקודם, הן תוכניות שאינן עצמאיות. הן חייבות להיות חלק מתוכנית אחרת. בתור שכאלה, תהליך ההתרבות שלהן דומה מאוד לתהליך ההתרבות של וירוס ביולוגי, מכאן גם נגזר שמן. אם תרצו, אוכל להציג את הדמיון שבין שני סוגי הוירוסים, אבל לא עכשיו, נכון?" שאל בפנותו אל מיכה.
"נכון מאוד" היתה התשובה הצפוייה.
"ובכן, אלגוריתם של וירוס, כאילו 'מוזרק' או 'מוחדר' אל תוך קובץ קיים של Executable file, מסוג *.EXE או *.COM, זו היא התוכנית המארחת... נניח שהוא מתווסף לסופה של התוכנית או במקום קטע אחר של האלגוריתם המקורי. כאשר מפעילים את התוכנית הנגועה, רק אז הוירוס יכול לפעול. הסוג השלישי מסידרת המזיקים, הוא סוס טרויאני שהספקתם כבר להכיר. זה הכל בקיצור. עכשיו לעניננו..." אמר ירון וקרץ בחביבות לעבר מיכה.
מבטי שביעות הרצון עודדו את ירון להמשיך.
"אז אתם כבר יודעים שוירוס הוא תוכנית מחשב קטנה אשר פועלת כמו כל תוכנית מחשב אחרת, רק שהיא משולבת בתוך תוכנית אחרת, גדולה יותר. לכן, המגבלות שקיימות על תוכנית מחשב רגילה, חלות גם על וירוס. כלומר... ושימו לב לנקודה הזו! שפת המכונה חייבת להיות מותאמת לחומרה של המחשב המארח ולמערכת ההפעלה שלו. אם וירוס נכתב עבור PC, והוא מותאם למערכת הפעלה DOS, הוא לא יוכל לפעול על מחשב VAX עם מערכת הפעלה VMS כי זה פשוט עולם אחר".
"במלים אחרות" אמר מיכה בקול מהוהר, "אתה רוצה להגיד שאם החומרה שלנו ב'אלון ירוק' מבוססת על מיקרו-פרוססור של אינטל מסוג 80586 ומערכת ההפעלה היא RMX-586 אז רק וירוס שנכתב עבור סביבה כזו יוכל לתפקד בה..."
"נכון מאוד! אי אפשר להפעיל תוכנית שנכתבה על PC של מחשב Apple במחשב IBM בדיוק מאותה סיבה".
"משהו לא ברור לי" קטע מיכה את דבריו. "אתה ניסית לשכנע אותנו לעבוד בשפת ADA כאשר ציינת במפורש שזו שפה המותאמת למיקרו-פרוססורים רבים. האם קרה משהו במשך הזמן הזה לתכונה החשובה הזו שקרוייה Compatibility, תכונה שכל כך התלהבת ממנה? אמרת גם שאם נמשיך לכתוב בשפת PLM, נשאר תקועים עם אינטל, אבל אם מחר נרצה להמשיך ולפתח עם משפחת המיקרו-פרוססורים של מוטורולה בשל סיבה זו או אחרת, נוכל לעשות זאת בקלות יחסית כאשר הפיתוח יעשה באמצעות ADA. במקרה כזה, אמרת, שלא יהיה צורך לשנות את התוכנה".
"שום דבר לא השתנה..." השיב ירון, כשניצני חיוך מקשטים את זויות פיו. "כדי להעביר תוכנית מסביבה אחת לאחרת, לא מעבירים את
ה - Executable File אלא מעבירים את קובץ המקור לסביבה החדשה ושם, בעזרת ה - Compiler שמותאם למחשב המארח, יוצרים Executable File אחר אשר מכיר את החומרה ואת מערכת ההפעלה של המחשב החדש. לכן, למשל, לשפת ADA יש Compilers רבים, לכל סוג מחשב... לכן גם וירוס, שמעתיק את עצמו כ - Executable File, חייב להיות מותאם לסביבה מסויימת מאוד, שמוכרת בצורה אינטימית לתוכניתן שכתב אותו... את הוירוס, כמובן...
וירוס 'יום שישי השחור' כמו וירוס ה'פינג פונג' המפורסם או כמו וירוס ה'שגיעות', הוירוס ה'פקיסטני', ה'ישראלי', או הוירוס ה'ספרדי' הם וירוסים המותאמים למחשבים אישיים מסוג IBM או תואמיהם, שעובדים עם מערכת הפעלה DOS. לכן הם יכולים היו להתפשט, לעבור מ - PC אחד לשני, באופן כל כך פשוט. זה מחיר השימוש ב'גונבה', למשל... אותם וירוסים שהזכרתי, לא פגעו, למשל, במחשבי Apple ותואמיהם כוון שמדובר בחומרה שונה... הם גם לא יוכלו לפגוע ב - VAX שלנו, מאותה סיבה..."
"רק רגע" קטע שוב מיכה את דבריו, "נניח, לצורך העניין, שהאוייב מתכנן הוירוס, הפעיל סוכן שהעביר תאור מדוייק של סביבת העבודה שלנו. אנחנו הרי מנסים שלא להמציא את הגלגל מחדש. לכן מערכת ה - Elint שלנו מבוססת על 80586 שהוא פרוססור של אינטל, שמוכר בעולם המערבי והמזרחי כאחת. אנחנו עובדים עם מערכת הפעלה לא פחות מוכרת ולכן אפילו לא צריך להכשיר אנשים מיוחדים לכתיבת הוירוס, כך שיותאם לסביבה שלנו... מה הלאה??? התנאים הראשונים להפעלת הוירוס כבר קיימים, לא?"
"ובכן, מיכה, לומר לך שאתה טועה במאה אחוז? קשה לי קצת... ככל שאני חושב על הנושא הזה יותר, כך אני מוצא אותו מעניין יותר..." אמר ירון, כשקצה קצהו של היסוס מתחיל להשמע בקולו. "אבל... עדיין קיימת בעייה. אלגוריתם הוירוס יכול להיות מופעל רק אם הוא שמור ב - Executable File כלומר, שמור בקובץ בעל שם עם סיומת EXE, למשל. MICHA.EXE הוא דוגמא מצויינת".
מיכה חייך. הוא נראה פחות מתוח יחסית לתחילת הדיון. "התכוונת ל - Worm Program, כמובן, לא לוירוס, נכון? אני מתכוון כשנתת שם לתוכנית הרסנית אז דיברת על Worm Program".
"כמובן" השיב ירון בחיוך והמשיך. "על פי התסריט שתארת, האלגוריתם שנקלט בקשר הרדיו, שמוּר בזיכרון לא כקטע תוכנית שמוכנה להפעלה... כי זה לא מעשי... הרי לאחר שמחשב ה - Elint קלט את האלגוריתם, רק הוא יחליט היכן לשמור את הצרוּף שנקלט. המחשב שומר אותו בסך הכל כנתון, בתוך טבלת נתונים גדולה... הגורם ששידר את הוירוס לא יכול לומר למחשב המארח, ה'נגוע', היכן בדיוק וכיצד לרשום את השדר שנקלט. המחשב המקומי בלבד, המיקרו-פרוססור של יחידת ה - Elint שולט בזיכרון שלו... בינתיים... אז כדי לסכם את הנקודה הזו, תרשו לי להדגיש שוב שהוירוס או אם תרצו, ה - Worm Program בסופו של דבר, משולב בתוך מאגר המידע ולא כתוכנית, או כחלק מתוכנית שניתנת להפעלה. עכשיו, גבירותי ורבותי, כדי להפעיל את הוירוס חייב מישהו מתוך המערכת, לגלות שהאלגוריתם אמנם מצוי בתוך מאגר המידע של המחשב ואז הוא ורק הוא צריך להעתיק אותו אל קובץ אחר שיהיה בר הפעלה. כלומר, שם הקובץ צריך להיות נניח MIRI.COM, איך זה נשמע???"
"מפחיד" אמר שמיל.
"זה ממש לא מפחיד" חייכה ריקי. "וזה יקרה, אם בכלל, כשהרצף שייקלט יהיה 'Worm program' ".
"יפה..." אמר ירון.
"ואם הכוונה להפעיל אותו כוירוס, אז ברור שצריך לצרף אותו אל תוך קובץ שצרוּב בתוך ROM שהוא זיכרון לקריאה בלבד" הוסיפה ריקי.
"מצויין", התלהב ירון.
"אז זה לא יכול לפעול בצורה כזאת" אמרה ריקי בהרימה מעט את קולה.
"מדוע?" החרה שמיל, "אי אפשר להפעיל תוכניות מתוך הדיסק הקשיח?"
ריקי נשענה שוב על מסעד הכורסה ושמיל המשיך "זה עדיין נשמע מפחיד!".
"לא כל כך" מיהר ירון להרגיע. "האם סביר שבכל תחנת מכ'מ של 'אלון ירוק' או בכל מקום שבו נקלטים אותות לצורך עיבוד, ישב סוכן אוייב, שיבדוק מדי פעם את הזיכרון כדי לזהות את הצרוף המתאים, ויעתיק אותו אל קובץ כל שהוא כתוכנית להפעלת וירוס?"
היתה שתיקה. כולם נראו מרותקים, למרות החום שעדיין לא פג. לפתע נצצו עיניו של שמיל. "לא צריך סוכן בכל תחנת מכ'מ. די בסוכן בודד באחת מהתחנות כדי שיזהה שהגיע וירוס. תפקידו יהיה לשלוף את הוירוס ממאגר הנתונים, ולהעביר אותו אל... לא חשוב לאן... את יתרת העבודה יעשה כבר הוירוס בעצמו. הוא ישכפל את עצמו, ישלח העתק של עצמו אל תחנת המימסר ומשם אל מרכז קבלת ההחלטות..."
"אם כך, למה צריך לשדר את הוירוס?" שאלה ריקי, "לא הרבה יותר פשוט לתת לאותו סוכן את תוכנית הוירוס בדיסקט כדי שישתול אותו במו ידיו? זה לא פשוט יותר להעביר אותו ב-Internet, למשל?"
מיכה חש כי כל התאוריה שלו עומדת להתנפץ בשל איזו טעות קטנה, לכן מיהר להגיב: "מעבר לקוי האוייב, ישקוד צוות פיתוח של מומחי וירוסים על פיתוח הזן המתאים ביותר... המכאיב ביותר... לצוות הפיתוח יהיה שפע של זמן והזדמנויות כדי לבדוק את האלגוריתם ולשכלל אותו. קצת לפני הקרב המתוכנן, ישודר הוירוס הטוב ביותר שלהם. שיטה זו לא תעמיד אדם בודד במבחן של תכנון וירוס בשטח שלנו. זה מסוכן... אני מתכוון לסוכן, כמובן... הוירוס יגיע ישירות למחשב, ללא מגע יד אדם..."
"בסדר, יכול להיות שאתה צודק" השיב שמיל, "את הוירוס אמנם יפתח צוות מומחים אבל למה אי אפשר למסור את האלגוריתם לידי הסוכן שישתול אותו ישירות במחשב? שידור תוכנית עלול להיות עסק מסובך, בעייתי מבחינה טכנולוגית..."
"מה הבעייה בזה?" שאלה ריקי בתמהון. "שידור הוירוס הוא החלק הקל. גם קליטת הוירוס זה לא בעייה".
"בדיוק כך" המשיך שמיל ביבושת: "די באדם אחד שיזהה את הוירוס בטבלה, ללא קשיים מיוחדים, הוא פשוט יחפש רצף מאוד מסויים שמצביע על תחילת אלגוריתם הוירוס... די בכך כדי להעתיק את החלקים הרלוונטים לקובץ EXE. וזהו..."
ריקי נראתה מהורהרת מעט. "אתם יודעים מה?" שאלה, כשהיא קמה ממקומה, נרגשת.
מבטי הנוכחים ננעצו בה בסקרנות.
"אנחנו חושבים עקום" אמרה בחצי חיוך. "מדוע צריך לשתף את כל תחנות המכ'מ כדי לשכפל במרחב הזיכרון שלהם את הוירוס. הרי אם הם יצליחו לנטרל את מרכז קבלת ההחלטות, המשחק שלנו אבוד. זה אומר שמטרתם צריכה להיות העברת הוירוס אל המחשב המרכזי. תחנות המכ'מ תשמשנה אך ורק אמצעי העברה. הוירוס ישודר אל תחנות 'אלון ירוק' ומשם הוא יועבר אל המרכז. המפלצת תשבש שָׁם את מערך ההגנה... שָׁם קיים מידע מחיישנים רבים יותר, לא רק מתחנות מכ'מ מִסְכֵּנוֹת, אלא..."
"פנטסטי" התלהב מיכה, כאילו עסק בתכנון וירוסים בעצמו, "אבל עדיין צריך להשתמש בשרותיו של סוכן שישלוף את הוירוס מהטבלה הזו, איך קראת לה? TAB_IN, כדי להפכה לתוכנית שניתנת להפעלה..."
"רק רגע..." קפץ לפתע שמיל ממקומו כנשוך נחש. "אני חושש שעליתי על משהו הרבה יותר חמור... מיכה, מגיע לך פרס על עירנותך... כל הכבוד... כל הכבוד..."
מיכה קימר את גבות עיניו בסקרנות.
"נו, תגיד כבר..." ניסתה ריקי לזרז את שמיל.
"למעשה... למעשה אין צורך כלל בסוכן חשאי..."
"איך זה?"
"ובכן, הרעיון שאני עומד להעלות עכשיו קצת משוגע, אבל... לא... לא חשוב..."
"דבר! דבר כבר!" דרשה ריקי, "כל הדברים המשוגעים הם המוצלחים ביותר..."
"תנו לי לחשוב על זה מעט" ביקש שמיל, "כבר אחרי שש וכפי הנראה אני מתחיל להתעייף, והחום המחניק הזה..."
"אנחנו מאוד סקרנים" אמרה ריקי בעיניים נוצצות.
"תארו לכם, רק תארו... לא..."
שמיל קם מכורסתו בהתרגשות, נשם נשימה עמוקה והתיישב שוב.
"אתם יודעים מי כתב את מערכת ההפעלה של אינטל, את RMX-586 שאנחנו משתמשים בה? אתם יכולים לעלות בדעתכם אילו אנשים כתבו את מערכת ההפעלה Windows שיושבת במחשב ה - PC של יחידת ה - Elint הסודית שלנו, או VMS של Digital, שגם בהם אנחנו משתמשים? הרי התוכניות הרגישות האלה נכתבו במפעלים אזרחיים... האם, לדעתכם, בצוותים כאלה יכולים להשתלב סוכנים ממדינות אוייב? אתם הרי יודעים בדיוק כמוני - בקלות... אתם, למשל, יודעים אילו בדיקות ערכו למערכות ההפעלה האלה? אלהים אדירים, מה שאני עומד להגיד, זה פשוט איום ונורא. תנו לי זמן לחשוב על זה, אולי לא עומד מאחורי זה דבר, סתם דמיון פרוע".
"שמיל, שמיל, הרגע" ניסתה ריקי בחיוך סלחני, "אנחנו בסך הכל מנתחים מצב היפוטטי..."
"איזה היפוטטי על ראשך" אמר שמיל בעיניים בורקות, "ראשית דעי לך, שמרגע שאת משתמשת במוצרי תוכנה של חברה אחרת, ואין לך את כל התעוד המפורט של התוכנית, את ה - Code, אז את מסתכנת. את מסתכנת משום שאינך יודעת מה חבוי בתוך ה - Code". שמיל השתהה לרגע, שולח מבט שואל לעבר ירון.
"אתה צודק עד כה" העיר ירון, "אז מה פסול בכך?" הוסיף, במטרה למשוך אותו בלשונו.
"נו... תמשיך..." האיצה בו ריקי.
"איך בודקים תוכנה, אתם יודעים?" שאל שמיל וניצוץ נדלק בעיניו.
"נו, באמת..." אמרה ריקי "אולי תתן לנו כאן הרצאה בנושא בדיקות תוכנה? אתה רוצה לגזול את עבודתו של ירון?"
"תקשיבי טוב, ריקי. הקשיבי בתשומת לב!!!" היטיב את ישיבתו על הכורסה והמשיך: "מעולם, אבל מ ע ו ל ם לא בדקו את כל התוכנה של מוצר מסויים. נכון ירון?"
"לא צריך להגזים..." ציחקקה ריקי.
"אני מתכוון לפרוייקטים עתירי תוכנה, עם כמה מאות אלפי שורות Code".
"מערכת הפעלה אינה תוכנית של כמה מאות אלפי שורות Code" העיר ירון, "אולי כמה אלפים בודדים של שורות, אבל באופן עקרוני אתה צודק, כמובן".
"ריקי הרצינה שוב ואמרה "OK, תמשיך".
"מעולם לא נערכו כל הבדיקות האפשריות, משום שזה יקר מדי, אומרים שפי שלוש או יותר ממחיר פיתוח התוכנה עצמה... בנוסף לכך, לא מעשי לבדוק את כל התוכנה, את כל האפשרויות שלה..."
"תמשיך!" האיצה בו ריקי, "כבר קיבלתַ חיזוקים מירון".
"אין צורך להמשיך, הרעיון ברור בהחלט. ירון הזכיר את זה לפני כמה דקות. חישבו לרגע, אם שולב סוכן זר בצוות שפיתח את מערכת ההפעלה RMX-586 בחברת אינטל... בחברה האזרחית הענקית הזאת... הוא בהחלט יכול היה לשתול תוכנית קטנטונת שאף אחד לא ידע על קיומה... כי היא תופעל רק בתנאים מאוד מאוד מסויימים שלא יתקבלו בחיי היום יום, נכון?"
"ככל שמערכת ההפעלה תהיה גדולה יותר, כך הסיכוי להשתלת סוס טרויאני מבלי שיתגלה, יהיה גבוה יותר. כן אני בהחלט מסכימה איתך, אבל לפני שנסתכסך עם אינטל, אולי כדאי לשאול אותם כיצד הם בודקים את..."
"הרשו לי להעיר הערה קטנה" התערב ירון. "הערה שאולי תחזק מעט את התאוריה ההולכת ונבנית של שמיל, למרות שאני לא ממש בטוח שאני מקבל אותה... לפחות שתרשם בפרוטוקול שמיכה מכין בשקדנות כה רבה" הוסיף וקרץ בעינו בחביבות למיכה.
"תן לסיים" ביקש שמיל.
"חצי דקה... טוב?" ומבלי להמתין להסכמה, המשיך ירון: "כמעט אין תוכנה, שהתוכניתן שפיתח אותה, לא השאיר בה איזה פתח, איזה אמצעי לשימוש מאוחר יותר... שרק הוא מכיר... קשה לי להזכר במערכת, שאינה כוללת תוכנית דיאגנוסטיקה ניסתרת, קטנה כזו, שמאפשרת לתוכניתן להכנס בקלות לתוכנה, כדי לבצע כל מיני דברים בשלב התחזוקה, כשהמוצר ה'מוגמר' So Called כבר מופעל על ידי הלקוח. רק המֵפַתֵח יודע על קיום מעין דלת אחורית מוסתרת כזו... ואתם יודעים מה? יש לה אפילו שם: Back door. אולי גם הממונה על התוכניתן מכיר את ה - Back door הזו, אם הוא ירצה לשתף אותו... אבל במקרים רבים, הלקוח כלל אינו מודע לקיומה של דלת אחורית כזו במערכת שלו... האלגוריתם הזה לא מוגדר במסמך האפיון, כמובן... וגם לא במסמכי התכנון... וזה נכון לגבי כל מערכת תוכנה, כולל התוכנות הצבאיות שאנחנו מפתחים כאן".
"זה מוקש" העירה ריקי. "והוא יכול להיות קריטי במערכות מכל סוג. גם מערכות אזרחיות שקשורות לרשת הטלפונים, למשל".
"בעגה המקצועית מקובל לקרוא למוקשים כאלה בשם פצצת תוכנה, או 'Software Bomb'" גיחך ירון.
"למזלנו, תע'צ לא קשורה למערכת הטלפונים הציבורית בדיוק מהסיבה הזו" העיר שמיל.
"לא מדוייק" תיקן ירון. "החשש היה מצעירים שינסו להכנס אל קבצי מחשב באמצעות המחשב הביתי שלהם".
"בזמנו ניסו להפעיל לחץ על אהוד, שיאפשר לתוכניתנים לעבוד מהבית" הזכיר שמיל, "אבל הוא חשש להתחבר לרשת הטלפונים בדיוק מהסיבה הזו".
"תארו לעצמכם מפעל תעשייתי שמשלב תוכנה מתוחכמת בקו הייצור שלו" אמרה ריקי. "בתוכנה כזו יכולה להחבא פצצת תוכנה שממתינה לטריגר באמצעות הטלפון. טריגר כזה עלול להשלח במקרה שמתגלה סכסוך או ניגוד אינטרסים, בין המפעל התעשייתי לבין משרד התוכנה שכתב עבורו את התוכנה. הרי אין לזה סוף".
"זה יכול להיות אמצעי לחץ לגביית כספים" העיר שמיל. "משבשים קצת את קו הייצור ואלה ממהרים להכנע לדרישות..."
"זה אמצעי בלתי חוקי" אמר ירון.
"חבר'ה, חבר'ה, מספיק להתלהב" ניסה שמיל להסותם בהרמת קולו. "ירון כבר אמר שבדיון כזה עלולה להפתח תיבת פנדורה. הדיון מתנהל במישור העקרוני, נכון?" ומבלי להמתין לתשובה, המשיך. "נחזור, ברשותכם לנושא שלנו. נניח כי השדר שיגיע מהאוייב מתחיל בצרוף משוגע ובלתי הגיוני, שההסתברות לקליטתו נמוכה ביותר. שמיל התקרב אל הלוח, נטל גיר בידו ושירבט:
_______*U{io%bc#yW=å~W;ldh?Y4tאl^mdED+qRx!&aÕA_______
"זה רעש... נכון?" שאל והשתתק לרגע. "ונניח שאחרי הצרוף הבלתי הגיוני הזה, יופיע מספר שיציין את גודל האלגוריתם. כלומר, את מספר הסימנים שמרכיבים את הרצף... ורק אחר כך ישודרו כל הסימנים, אחד אחר השני, סימנים שאם נעביר אותם לקובץ מתאים, הם יהפכו לוירוס... הוירוס יכול להיות משודר, כמובן, בכל צורה אחרת, אבל נניח, רק נניח למען הפנטזיה שלנו, שבאופן כזה צריך להראות המידע אשר יישמר על ידי יחידת ה - Elint שלנו. להמשיך?"
"תן לי להמשיך" ביקש מיכה בהתרגשות.
"בבקשה..." חייך שמיל.
"נגיד שבמערכת ההפעלה Windows שרכשנו" ניסה מיכה את כוחו, "מצוי אלגוריתם קטן, כמו תוכנית הדיאגנוסטיקה הקטנה שירון הזכיר, כזה שבודקת בצורה מחזורית כל שהיא, את תוכן זיכרון המחשב. התוכנית הזעירה הזו הרי יודעת את גבולות הזיכרון כי היא בסופו של דבר חלק ממערכת ההפעלה... שמכירה היטב את החומרה של המחשב... ובכן, היא תבדוק אם קיים הצרוף ההוא שהזכרת. בדיקה כזו תתבצע, נניח אחת ליום".
ירון הניד ראשו בהסכמה והביט באחרים. ניכר היה כי כולם מרותקים ועוקבים בעירנות אחר השינויים בתסריט. שמיל נראה מאוד מרוצה מעצמו.
"אם הצרוף המשוגע הזה לא יימצא בזיכרון, דבר לא יתרחש ו'אלון ירוק' ימשיך לתפקד כרגיל. אבל... אם הצרוף הזה כן יימצא, תבצע התוכנית המושתלת הקטנה הזו דבר נוסף: היא תעתיק את חלק האלגוריתם של הוירוס מהטבלה TAB_IN אל מקום אחר בזיכרון של הדיסק הקשיח. היא תעתיק אותו אל קובץ, כתוכנית שניתנת להרצה... זהו..."
"טוב מאוד, מיכה" אישר שמיל את דבריו, "הרשה לי רק להוסיף עוד משהו, כדי לחזק את התובנות שלך. אמנם אנחנו רק אלקטרונאים..." אמר והביט בירון במבט רב משמעות... "אבל מבינים מעט גם במחשבים... נניח שהאלגוריתם הקטן הזה, שמושתל במערכת ההפעלה, יהפוך את הרצף שנקלט ונשמר ל - Executable File כמו שאמרת, או כ- Worm Program, אבל בנוסף גם יעניק לקובץ הזה כמה תכונות שיקשו על גילויו או על מחיקתו בטרם עת. בקלות רבה יכול האלגוריתם המושתל במערכת ההפעלה להעניק לתוכנית הוירוס כל מיני תכונות שיגדילו את כושר ההישרדות שלה בסביבה החדשה. ראשית, הקובץ שיכיל את הוירוס, צריך להיות נסתר, זאת אומרת שהוא לא יוצג ברשימת הקבצים כתגובה לפקודת DIR, למשל. שנית, הוא צריך להיות מוגן מפני מחיקה".
"מה מיוחד בזה? הרי כל אחד יוכל לשנות את התכונות הללו של הקובץ" העירה ריקי.
"כן, בתנאי שידעו על קיומו..." מלמל שמיל.
"אתם מפתחים תאוריות מסמרי שער" ניסה ירון להתערב בשיחה, "אבל אין בהן ממש".
"מצאת פגם בשיטה של שמיל?" שאל מיכה. "הרי אתה היית הראשון שהעלה את אפשרות השתלת אלגוריתם בתוכנה, מבלי שניתן יהיה להבחין בו..."
"שכחתם את תוכניות ה - Debug הקיימות. האם ראיתם מערכת שנמצאת בתהליך פיתוח, שאינה מופעלת בשלבים? האם אנשי תוכנה יהיו עיוורים ולא יבחינו בפניות בלתי מוסברות אל הדיסק הקשיח תוך כדי ביצוע Debugging? הרי בתהליך פיתוח 'אלון ירוק' או כל פרוייקט אחר, נבדק כל 'פיפס'. אין ספק שתוכנית כזו, אם תושתל במערכת ההפעלה, היא תתגלה מהר מאוד על ידי אנשי הפיתוח... שכחתם כאלקטרונאים שבאמצעות כל תוכנית אמולציה, יזהו מהר מאוד פניות כאלה לזיכרון?"
שמיל הביט במיכה בחיוך נבוך.
"התאוריה נפלה..." העיר. "טוב, זו השעה והחום".
"אין דבר" הוסיפה ריקי "מאוד נהניתי. היה מרתק".
"אינטל ומיקרוסופט ניצלו" חייך מיכה וקם מכסאו. "אני מציע שלמרות מסקנת הביניים הזו, אולי תחשבו קצת בבית על אפשרויות נוספות".
"אבל סוכן מושתל כן יכול לעשות את זה, אסור לזלזל באפשרות הזאת" הוסיף שמיל בפנים רציניים.
"איך אפשר להמנע מזה?" שאלה ריקי.
"וואו... קיימות כל כך הרבה דרכים שהנדסת התוכנה מציעה" השיב ירון, "כבר דברנו עליהם לא פעם. פשוט צריך להקנות חשיבות גדולה יותר לנושא התוכנה. ישנן שיטות, קיימות טכניקות..."
"שטויות" ביטל אותו שמיל בהנף יד, "אם ראש צוות יחליט לשתול מודול קטנטן כזה, חמודון כזה שהוא כתב בעצמו, כסוכן מושתל, מישהו יעלה על זה?"
"אני חוזר שוב על דברי" השיב ירון, מתאפק שלא להרים את קולו. "אם ייחסו חשיבות גדולה יותר לביקורת איכות תוכנה, לא חמישה אנשים שעל שכמם מוטל לבדוק תוכנה של מאות תוכניתנים, כדי לסבר את אוזנו של הלקוח התמים, כדי שאפשר יהיה להצהיר שיש ביקורת איכות במפעל... אם צוות בדיקות התוכנה יהיה גדול יותר, ולא יבצעו בדיקות מדגמיות למודולים, אלא יבדקו את כל התוכנה..."
"באיזה מחיר?" שאל שמיל באירוניה, "לא, אל תענה לי! תרשה לי לפרט" השיב. "תהיה פגיעה בלוח הזמנים, תקציבי הפרוייקט ירקיעו שחקים... הרי את הדיון הזה ערכנו לא פעם ולא פעמיים..."
"נושאים כאלה אפשר לסכם עם הלקוח מבעוד מועד" הרים ירון את קולו. "כשכל הקלפים מונחים על השולחן, כשכולם יודעים מה ההשלכות של כל דבר... רק אז אפשר להחליט... להחליט על בסיס של ידע ולא על בסיס של אינטואיציה... ואם לקוח ירצה מוצר אמין, גם מבחינה ביטחונית, הוא צריך להבין שיש לזה מחיר. אפשר, כמובן, למכור מוצר זול, אבל לא תמיד מעדיפים את האפשרות הזאת. ואתה.." פנה לעברו. "אתה תוכל לענות בכנות כמה כסף וזמן משקיעים בבדיקות החומרה של 'אלון ירוק'? כמה כסף וכמה זמן משקיעים בפיתוח ובייצור כדי לעמוד בדרישות MIL-STD-883 או כל מיני תקנים אחרים? כמה משקיעים בבדיקות טמפרטורה, לחות, זעזועים, הרעדות, הקפצות. בדיקות גשם, בדיקה של השפעת קרינה אלקטרומגנטית על המכשיר, בדיקת זליגה של קרינה ממכשירים ועוד כל מיני המצאות כאלה. למה, לכל הרוחות, מוכנים להשקיע כל כך הרבה דווקא בבדיקות האלה?"
"כי זה פשוט חשוב" השיב שמיל בקול שקט כשחיוך של שביעות רצון עולה ומכסה את פנין, "הלקוח רוצה מערכת אמינה. זה הכול...".
"זה נכון באופן חלקי בלבד" השיב ירון, "החלק הנוסף הוא כי הלקוח, ומרבית מקבלי ההחלטות האחרים הם אנשי חומרה, אלקטרונאים... שמכירים בבעיתיות שנובעת מתנאי סביבה קשים. הם מוּדעים להשפעת הטמפרטורה, הלחץ, הקרינה או הזעזועים על אמינות המערכות. אתה יודע מה הוא המכנה המשותף לכל אלה? אני אגלה לך. אלה הם דברים פיסיים, אלה הם דברים שאפשר לחוש בהם... לראות אותם... לכן קל יותר לחשוב עליהם ולהזהר מפניהם... צריך לבדוק אותם בקפדנות גם אם זה עולה הון עתק למפעל. תוכנה? זה דבר מופשט וגם סכנותיו מופשטות... למרות שבינינו... ברור כי לא פעם, דווקא התוכנה היא צוואר הבקבוק של פיתוח מערכת. לא פעם, התוכנה מכשילה פרוייקטים. דווקא התוכנה היא צואר הבקבוק בתהליכי הפיתוח... והייצור... ו... אני יודע, אל תספר לי... אני יודע שקיימת מוּדעות לבעיות התוכנה, אבל כולנו גם יודעים מה היחס שבין המוּדעות לבעיות המוחשיות של החומרה לבין המוּדעות לבעיות המופשטות של תוכנה ולכן גם ההשקעה בבדיקות התוכנה היא בהתאם..."
שמיל לא נותר חייב. "ראשית, הפלח היחסי בתקציבי הפרוייקטים, התקציב המיועד לפיתוח ולבדיקות תוכנה, תופחת בהתמדה. שנית, גם בדיקות החומרה הן מדגמיות. לא תמיד מבצעים בדיקות של כל מאה האחוזים... ודבר שלישי, בכל מקרה זה ויכוח עקר".
"בדיקות מדגמיות של חומרה, מבוצעות בקו הייצור" תיקן ירון. "את החומרה של האב-טיפוס בודקים לִפְנַי וְלִפְנִים, כשמפתחים אותו... כל פרט נבדק שם. זה לא נכון ביחס לתוכנה... אין צורך לבדוק את ה - Code של התוכנה בקו הייצור כי מספיק שבודקים אותו פעם אחת בלבד... זה כאילו שבדקת את התוכנה בכל המכשירים... לכן המשמעות של בדיקת תוכנה מדגמית, היא שנותרים חלקים בתוכנה שלא נבדקו מעולם..."
בשתיקה רועמת אישרו הנוכחים את דבריו.
הסוכן הזר, המושתל בצוות הפיתוח, נותר תלוי, חבוי אי שם בתודעתם של הארבעה, בין בדיקות התוכנה ברמה של "קופסא שקופה" לבין תקציבי המפעל המצומצמים...
"ירון, אתה מוכן לעיין בסיכום הדיון לפני שאעביר אותו לאהוד?" שאל מיכה.
"בשמחה" השיב ירון. "מתי אתה מתכוון להעביר אותו אלי?"
"הערב" השיב, כאילו היה זה מובן מאליו...
המשך בפרק 12 - שמור על קשר! אה?