כמה מחשבות חשובות על חשיבה (ובמיוחד בעידן הסייבר)

כמה מחשבות חשובות על חשיבה (ובמיוחד בעידן הסייבר)

Print Friendly, PDF & Email

אתה נמצא במקום בו נמצאות מחשבותיך. ודא שמחשבותיך נמצאות במקום בו אתה רוצה להיות. (ר' נחמן מברסלב)

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

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

– טכנולוגיות המבוססות על ספים (Thresholds) חשופות למעשה לסיכון שבו המדד המדובר נמצא מעט מתחת לסף הבעייתי – למשל, אם נחליט שכמות ניסיונות הכניסה של משתמש בשעה הוא המדד המדובר ואם הוא גדול מ-10 הרי שמדובר בניסיון לאיתור הסיסמא (Brute-Force), זה אולי נכון, אבל אם זה 9 ניסיונות בשעה, זה פחות בעייתי? מצד שני, אם זה משתמש תמים שביצע 11 ניסיונות – האם זה בהכרח בעייתי?

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

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

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

מערכות בינה מלאכותית רבות המבוססות על אלגוריתמים "קלאסיים" בנושא למידת מכונה מתבססות בעיקר על אלגוריתמים אשר כוללים אחת או יותר מהתכונות הבאות:

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

המכונה האינטליגנטית ביותר שאנחנו מכירים היא המוח שלכם – עובדה: אתם מצליחים לקרוא ולהבין את הטקסט הזה ללא בעיה מיוחדת. אפילו יותר מזה: כאשר אתם רואים את המשפט הבא:
"לודוויג ואן בטהובן נולד בבון ב-16 בדצמבר 1770"

אתם מבינים מיד את ההבדל בינו לבין משפט הבא:
"Ludwig van Beethoven was born a Baboon in the 16th of December 1770"

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

1. המוח שלנו לא מריץ תהליכי Batch באופן תקופתי לכיוונון התהליכים שבו
2. תאי העצב שבמוחנו מסוגלים לעשות משהו כמו 200 פעולות בשנייה, אם זה נשמע לכם הרבה אז קחו בחשבון שמחשב בסיסי היום מסוגל לבצע באותו זמן מיליארד פעולות !
3. המוח שלנו עובד באופן מקבילי, זה ידוע ונכון. אבל… התאים שלנו איטיים יחסית ולכן, בחצי שנייה המידע שנכנס למוח יכול לעבור בלא יותר מ-100 תאי עצב בלבד. לאנשים, חצי שנייה, כלומר פעילות מקבילית של מקסימום 100 תאים מספיקה לזהות למשל חתול בתמונה לעומת דוב, חזיר או לפת. למחשב – 100 צעדים מספיקים… אולי להזיז תו אחד על המסך…

כנראה שהמוח שלנו חושב אחרת…

אבל מה לכל זה ולעולם הסייבר?

למעשה, בעולם הסייבר, כאשר המתקפות הכי מתקדמות היום תוקפות פעמים רבות את החולשות האנושיות שלנו כגון טווח הקשב (למשל – חלון לוגין שקופץ פתאום ואנחנו מבלי לשים לב ממלאים את שם המשתמש והסיסמה שלנו בתוכו והנתונים מועברים ישר לתוקף) או את החלק הרגשי שבנו באמצעות מתקפות כגון Social Engineering (למשל: https://youtu.be/lc7scxvKQOo) הדבר היחיד שיש לו סיכוי לעזור לנו נגד דברים מהסוג הזה הוא מחשב שיעבוד באופן שדומה לנו במובן השכלי והקר של המילה אבל לא מושפע באופן רגשי כמונו אשר ימדוד כל העת את התנהגותינו ויתריע על חריגות משמעותיות.

ג'ף הוקינס (Jeff Hawkins) האיש שהביא לעולם את מחשב כף היד – ה-Palm חקר לעומק במשך מספר שנים והקים את חברת Numenta אשר אחראית (בין השאר) על פרוייקט קוד פתוח בשם NuPic. פרוייקט זה מממש אלגוריתם אשר מדמה באופן מדוייק מאד את האופן בו הניאוקורטקס שלנו עובד. הניאוקורטקס הוא השכבה החדשה ביותר במונחים אבולוציוניים ואשר מבצעת למעשה את כל מה שאתם מגדירים כחשיבה, יצירתיות, חדשנות, אומנות – ה-כ-ל.

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

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

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

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

לפי כל המחקרים שבוצעו עד כה נראה שהמוח שלנו מקבל את הקלטים מהחושים במבנה מיוחד. ב-Numenta מכנים אותו SDR ראשי תיבות של Sparse Distributed Representation. כולנו יודעים שבמחשב כל דבר שמור כרצף של ביטים שחלקם דולקים וחלקם כבויים, אבל אם נשאל למה האות A שמורה במחשב כ-01000001 התשובה תהיה שזה פשוט מכיוון שמישהו החליט כך. במוח שלנו העניין הזה עובד שונה באופן מהותי. ניקח לדוגמא את חוש השמיעה: באוזן הפנימית שלנו, ישנן שערות רבות אשר נמצאות בתוך השבלול ושקועות בנוזל. כל שערה כזו רגישה לתדר אחר של צליל וכל תנודה של כל אחת "מדליקה" סיבית אחת של מידע שמיעתי. במילים אחרות, כל ביט שדולק מציין תדר מסויים אחד שנתקבל. הרצף הזה בעצם שמור כמערך ענק של עשרות אלפי ביטים כאשר רק אחוז קטן (בדרך כלל 2%) ממנו דולק בכל פעם. כעת, על מנת להשוות בין שני קלטים שהגיעו, אין באמת צורך להשוות את כל הסיביות אחת אחת – שהרי גם אם נשווה חלק מהן – נאמר למשל 50%, גם אם טעינו ורק המחצית הראשונה זהה והשאר לא, עדיין מדובר בוודאות בשני קלטים דומים מאד. כאן גם מתבטא היתרון של מבנה כזה בכך שהסבירות להתאמת שני קלטים אקראיים היא נמוכה באופן אקספוננציאלי שזה למעשה אומר – נמוך מאד מאד מאד.

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

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

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

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

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

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

כמובן, השימוש בספריה זו אינו מוגבל בשום צורה רק לעולם הסייבר – ההיפך הוא הנכון, בזכות תכונותיו הגנריות כל כך של האלגוריתם הזה, בדיוק כמו המוח שלנו, הוא מתאים ליישומים רבים נוספים. להלן מספר דוגמאות רק כדי לשבר את האוזן:
https://youtu.be/M4dD9wCQLkA – שימוש ב-NuPic בכדי לחזות מסלול גיאוגרפי לפי נתוני עבר ולהתריע על חריגות מהנתיב.
https://github.com/ywcui1990/TrafficPrediction – שימוש ב-NuPic לחיזוי עומסי תעבורה.
https://github.com/numenta/nupic.nlp-examples, https://youtu.be/QNF-gONtSmA – שימוש ב-NuPic לניתוח שפה טבעית (NLP)
https://github.com/chetan51/pilot – שימוש ב-NuPic להטסת רחפנים
https://github.com/numenta/nupic.vision – שימוש ב-NuPic לניתוחים ויזואליים
https://www.youtube.com/watch?v=vpAQUHc8_4U – שימוש ב-NuPic לניתוח תעבורה בנמלים
https://www.youtube.com/watch?v=IKPbwldC88c – שימוש ב-NuPic לזיהוי אנומליות בתעבורה אווירית
https://devpost.com/software/htm-drivefailures – שימוש ב-NuPic לזיהוי מקדים של תקלות דיסקים

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

עד לפעם הבאה – להתראות.

השאר תגובה