בשנים האחרונות המודעות לעולם אבטחת המידע עולה באופן תדיר. העיסוק בתחום מתרחב, במיוחד לאור הטכנולוגיה שמתפתחת בקצב פסיכי וזולגת כמעט לכול חלקה שהכרנו עד היום – נוצר צורך ממשי באנשים שיבדקו את אמינות החידושים שיוצאים, אותם חידושים שלעיתים ינהלו אספקטים חשובים בחיינו (רכב אוטונומי) או ישמרו על החומרים הרגישים ביותר שלנו. האנשים שיבדקו את האמינות של אותם מוצרים מוגדרים כקבוצה מאוד גדולה, תחת השם “אנשי אבטחת מידע”, והם עוסקים בעשרות תתי־תחומים מרתקים שאולי עוד יצא לי לסקור פה בעתיד.
בואו נדמיין שאתם חוזרים הביתה אחרי יום עמוס בעבודה, ומתים לדעת מה השתנה באתר החביב עליכם, “וואלה! כיף” (או בקיצור: “וואלאכ”). המחשב כבר דלוק, ואתם נכנסים לאינטרנט דרך ה־WiFi בבית, מתחברים לחשבון ומשחקים במשחק ההו־כה־ממכר “פלאפי בלתי אפשרי”. כעבור 5 דק’ אתם מקבלים הודעה להוטמייל שהחשבון שלכם בוואלאכ נפרץ וכל ה־Highscore שלכם נמחק.
הו לא.
ננסה לנתח מה קרה, ומה מנע מזה לקרות עד היום. כאמור, יש כמות עצומה של טכנולוגיות שם בחוץ, ביניהן כמה מגניבות שמספקות לכם שכבת הגנה מאנשים רעים שפורצים חשבונות רנדומליים. אני אנסה להתמקד בעיקר, ובפוסט הזה ניגע בקצה המזלג של 2 מהן.
ברשותכם, אתפלצן לשנייה. אינטרנט אלחוטי זה דבר מדהים ומשוגע בעיניי, עם כמה שזה נראה לנו טריוויאלי היום. הרעיון הזה שאנחנו כבני אדם מנצלים את הידע שלנו כדי להעביר מידע מגה מורכב בכמויות משוגעות דרך גלי רדיו, זה לגמרי מסוג הקסמים האלו שאתם משתמשים בו ביום־יום ומדי פעם עוצרים לחשוב כמה מגניב העולם שיש לו פיצ’רים כאלו.1
לצד התמונה הפסטורלית והמחשבות הפילוסופיות בשקל הללו, דמיינו לרגע את המחשב שלכם כערס תימהוני שיכור וכעוס שצועק לכל עבר “איצקו, תתחבר לי ל־Facebook!!! השם משתמש שלי זה BarburMehatabur והסיסמה שלי זה Malgeza123”.
זה בערך מה שקורה בתקשורת אלחוטית סטנדרטית, כשאתם מתחברים לרשת אלחוטית פתוחה לא מאובטחת במיוחד (החינמיות האלו, אלו שמוגדרות כ־Open כשאתם בוחרים לאיזו רשת להתחבר באמצע הביס להמבורגר במקדונלד’ס). המחשב שלכם מפיץ את המידע לכל מי שרק מוכן לשמוע, ואם מישהו רק ינסה להאזין, הוא יוכל לקבל את ההודעה שהפצתם לכל עבר. בהחלט לא סימפטי, ולא מה שהתכוונתם לעשות, כנראה.
מהסיבות הללו בדיוק פותחו במהלך השנים דרכים שונות ליצור סביבה בטוחה לתקשורת עם המקור שמפיץ את הרשת האלחוטית. יתכן שכבר שמעתם קללות כמו WEP, שהייתה לאחת משיטות האבטחה הראשונות להצפין תקשורת אלחוטית, WPA שהחליפה אותה לזמן קצר כשהתגלו ב־WEP פרצות משמעותיות או WPA2 שנמצאת איתנו (עם שינויים קלים) מאז 2004. הבעיה בכל השיטות האלו – האנשים הרעים מחפשים דרכים לעקוף אותן, ולהשיג את המידע שלכם בכל זאת.
כדי לשבור קצת את המתח, אגיד שאם אתם מתחברים לרשת WEP, כבר היום יש דרך פשוטה ממש למצוא את הסיסמה של הרשת האלחוטית, וגם להאזין לכל התעבורה שלכם. ב־WPA2, לעומת זאת, יוכלו להאזין לתעבורה שלכם רק אם יש לתוקף את הסיסמה של הרשת האלחוטית שלכם2.
נשים בצד את מה שלמדנו עד עכשיו, ונעבור לגזרה אחרת לרגע. בואו נדבר על תקשורת “מאובטחת” מול אתרים, או בשם הכאילו־מפחיד־וטכני: TLS/SSL.
נדמיין שאתם מנסים לשלוח מכתב אובר־מסווג מכם לידידתכם הטובה שגרה ביפן. אתם כותבים את המכתב, סוגרים את העטיפה, מדביקים בול ומשלשלים לתיבת הדואר. יש לכם מזל שמדובר בדואר ישראל וכנראה זה לעולם לא יגיע לשום מקום! אחרת אתם יודעים כמה ידיים היו יכולות לקרוא את המכתב המסווג בדרך?! ממייני מכתבים מרחבי הגלובוס, מפיצים, מחלקים…
נדמיין שאתם מנסים להתחבר לחשבון ה־Facebook שלכם מהעבודה. מאחורי הקלעים, אחרי שלחצתם על כפתור “התחבר”, המחשב שלכם ינסח הודעה שמיועדת לשרתי Facebook עם כל פרטי ההתחברות שלכם (כולל הסיסמה), בצורה מוסכמת מראש שהשרתים של Facebook מסוגלים לקרוא, וישלח אותה אליהם. תחשבו כמה ידיים ההודעה הזו, שמיועדת ל־Facebook במקור, הולכת לעבור: המחשב שלכם יעביר אותה לנתב (ראוטר) המקומי של המשרד, שבתורו יעביר אותה לספקית שלכם, ורק אז הספקית שלכם תעביר אותה לשרתים של Facebook3.
יש מצב שכבר הצלחתם לזהות למה אני לא מרוצה: כל אחד בשרשרת הזו יכול להציץ בהודעה, ולראות את הסיסמה המביכה שלי ל־Facebook! אם מישהו יפרוץ לנתב ויראה את ההודעה? גרוע מכך – אם גורם כזה או אחר יפרוץ לספקית שלי, הוא יוכל לראות את סיסמאות כל הלקוחות של אותה ספקית?
הפתרון, שהוחל לראשונה בדפדפנים על־ידי Netscape בשנת 1994, נקרא פרוטוקול HTTPS. מדובר סך הכל על המנעול החביב שמופיע לכם לעתים בשורת הכתובות,4 ליד אתרים שהכתובת אליהם מתחילה ב־https. הוא מציין שהתקשורת שלכם עם האתר בטוחה, ברוב המקרים (אם תציצו עכשיו בשורת הכתובות, תגלו מנעול ירוק שכזה. אני מקווה), ולמעשה נותן לכם בקצרה הבטחה די מדהימה: אתם והאתר שאתם מדברים איתו הגדרתם ביניכם “מילת קוד” שאף אחד לא יודע, ובעזרתה אתם מצפינים את ההודעות ביניכם. אף אחד חוץ ממך ומשרתי אתר היעד לא יכול לקרוא אותן, גם אם הן עברו דרכו.
הפרטים של הרעיון סבוכים לאללה, אבל הוא כל־כך גאוני שאני עוד אכתוב על זה יום אחד פוסט מפורט5. עד אז, פשוט תאמינו לי שיש דרך מופלאה, ששולי דף זה צרים מלהכילה, לדבר בצורה מוצפנת עם אתרים ברחבי האינטרנט, באופן שגם מאמת את זהותם וגם מאפשר לכם לתקשר בצורה שאף אחד אחר לא יוכל להאזין בדרך. זו בחירה של האתרים האם להשתמש או לא להשתמש ב־HTTPS, ולמרבה הצער חלק גדול מהאתרים הישראליים מיושנים ומעאפנים ובוחרים שלא להשתמש ב־HTTPS, בגלל בורות טכנולוגית, עצלנות או ניסיון לחסוך מעט כסף.
ראיתי את המבט הסקרן הזה. אז לא, “וואלה! כיף” לא משתמש ב־HTTPS כברירת מחדל.
סיכום ביניים! (אומג אתם עדיין פה)
נניח שאתם מיחידי הסגולה שהצליחו לשרוד עד פסקה שכוחת אל זו. הייתם רציניים, עשיתם שיעורי בית, התקנתם את התוסף HTTPS Everywhere6 בדפדפן שלכם ואתם גולשים רק ברשתות WPA2. האם אפשר לקפל את קפוצ’ון הסייבר וללכת הביתה?
לא, כמובן שלא. לכל הגנה שצוינה פה יש פרצות, שלחלק גדול מהן יש תיקונים, וזה יכול להמשך לנצח. אחרי כל זה, זה בדיוק הזמן לדבר על מה שכולנו התכנסנו כאן בשבילו: KRACK! (לא כזה, אימא, לא לדאוג)
KRACK היא חולשה שנמצאה אי שם בשלהי 2016, אבל פורסמה וגררה הדים רק לפני ימים אחדים, באוקטובר 2017. זו פרצה די פסיכית שמאפשרת לאנשים לראות ולהתערב בתעבורה בכל רשת WPA2 שהיא – משמע: לקרוא את הנתונים ששלחתם, סיסמאות, פרטי חיוב וסתם כל דבר שגלשתם אליו, או לשלוח דברים בשמכם. הפסקאות הקרובות תכלולנה מעט פרטים טכניים. מי שיש לו חשק בלתי נשלט להבין את הפרצה מוזמן, ומי שלא – תודה שקראתם, היה כיף :)
החלק הראשון שאתם צריכים להכיר כדי להבין את המתקפה, הוא עצם הרעיון שאנחנו מצפינים כל הודעה לפני שהיא יוצאת מכם לכיוון מקור הרשת האלחוטית (נניח מעכשיו שמדובר בנתב). במקרה שלנו, יש חוק אחד חשוב: אסור להשתמש באותו מפתח עבור הצפנת מספר הודעות שונות, שכן זה מאפשר לקורא צד שלישי לגלות את המפתח.7
החלק השני נקרא “Four way handshake”. כשלקוח כלשהו מנסה להצטרף לרשת אלחוטית עם WPA2 פעיל, הוא מבצע שיחה בת ארבעה שלבים עם הנתב, שמטרתה לבדוק שהסיסמה שהוא הזין נכונה, ולבחור מפתח להצפנת השיחה בין הלקוח לנתב. השיחה הולכת (בערך) ככה:
- “היוש אני נתב. בוא נסכים על מפתח להצפין איתו. קח מידע אקראי שהגרלתי ואמור לעזור לך לחולל מפתח.”
- “היוש אני לקוח. תודה לך אדון נתב, הנה מידע אקראי שהגרלתי ואמור לעזור לך לחולל מפתח.”
- הצדדים עכשיו מערבבים את 2 חלקי המידע יחד עם סיסמת ההתחברות לנתב, ויוצרים מזה מפתח חד פעמי.
- “כנתב, אני מאשר שהסכמנו על מספיק מידע כדי ליצור את המפתח הסודי עבור שיחה בינינו.”
- “תודה אלוף. יאללה, נדבר.”
ההודעה השלישית (שכתוב לידה 4) נשלחת מהנתב ללקוח. הלקוח שומר אצלו את המפתח, ומאותו רגע אותו מפתח ישמש להצפנת הודעות בינו ובין הנתב. הטריק המגניב של האנשים הרעים שמנסים לתקוף את החיבור שלנו, הוא לאסוף את ההודעה השלישית ולשלוח אותה שוב ושוב ללקוח, מה שיגרום לו לאתחל את המפתח שלו כל פעם *לאותו מפתח*. אבל רגע! אסור להצפין כמה הודעות עם אותו מפתח!
אז מה, אכלנו אותה? אפשר לקרוא את כל מה שאנחנו מעבירים בכל WiFi בעולם?! האנושות אבודה לנצח?!?!
למזלנו הגדול לא, מכמה סיבות. הסיבה הראשונה היא שאתם ככל הנראה מוגנים: המתקפה מתבצעת על מחשב קצה ולא על נקודות הגישה שלכם (נניח: על מערכת ההפעלה שלכם, ולא על הנתב שלכם), ועבורם ככל הנראה כבר יצא עדכון שתוכלו להתקין ממש בקלות, אם הוא לא מותקן אוטומטית. הסיבה השנייה היא זו שלמדנו עליה ממש כמה פסקאות למעלה – גלישה באתר ב־HTTPS מאפשרת לכם גלישה נוחה, ותקשורת שמוצפנת קצה לקצה ביניכם לבין אתר היעד… לרוב.
בונוס למתעניינים: גם HTTPS לאו־דווקא בטוח. יש אתרים שמשתמשים ב־HTTPS, וכשמשתמש נכנס בעזרת HTTP הם מנסים להפנות אותו לתקשורת באמצעות HTTPS. הבעיה מתחילה כשתוקף מצליח להתערב בתקשורת שבין המשתמש לאתר, ורואה שהמשתמש נכנס ב־HTTP. במקרה הזה הנתקף יחשוב שהוא מדבר עם האתר, בזמן שהוא בפועל מדבר עם התוקף שמתחזה לאתר. התוקף יגיד למשתמש להמשיך לדבר איתו ב־HTTP (למרות שהאתר ביקש לדבר ב־HTTPS), בזמן שהתוקף עצמו “יתרגם” את הבקשות מהלקוח ל־HTTPS, ישלח אותן בצורה מוצפנת לאתר ויעביר את התשובות ללקוח. כך המשתמש יחשוב שהוא מדבר עם האתר, אבל בפועל כל התקשורת שלו תעבור לא מוצפנת דרך התוקף.
נכון, אתם יכולים להגיד שהיה לפני זה רדיו ובלה בלה בלה. בואו נזכור שגם זו טכנולוגיה שקיימת כולה קצת יותר מ־100 שנה. ↩︎
הסתייגות קלה: בד"כ אתם משתמשים ב־WPA2-PSK, שפשוט מבקש מכם סיסמה. מפתח ההצפנה של התקשורת בינכם ובין מקור האינטרנט מבוסס על הסיסמה, ולכן אם לעוד מישהו יש את הסיסמה הוא יכול לדעת מה המפתח ולהאזין לתקשורת שלכם. יש פרוטוקול נוסף שנקרא WPA2-Enterprise שהרבה פחות נוח להתקין (ולא מיועד למשתמשים ביתיים), שמאפשר לכם להגדיר שמות־משתמשים וסיסמאות, ואז מן הסתם המצב הוא שונה. ↩︎
מצטער על הפישוט, אבל אם נכנס למצב מדעי גרידא ולא נתמקד במה שמעניין זה לא יגמר. במחילה. ↩︎
עדכון מאוחר לפוסט: חלק מהדפדפנים הורידו את סימן המנעול בשלהי 2023, מתוך הנחה שכמעט כל האתרים באינטרנט כיום משתמשים ב־HTTPS. ברירת המחדל עברה להיות אזהרה עבור אתרים שלא משתמשים בפרוטוקול. ↩︎
ממליץ בנתיים על מאמר ב־DigitlaWhisper לטכנולוגים, או לסקרנים באמת, חפשו באינטרנט, יש המון חומר. ↩︎
אוקיי, אני קצת משקר בהסבר הזה ומאחד מושגים כדי להוריד סיבוכיות. זה יהיה מגה מסורבל לדחוף בפוסט הזה גם הסבר על IV ועל CCM ועל Stream Ciphers, למרות שממש הייתי רוצה לעשות את זה. זה מעביר את הקונספט בצורה סבירה ומשיג את המטרה שלו. אל תשנאו אותי. ↩︎