יש בצה"ל גדוד שלא תמצאו באף מבנה ארגוני רשמי,
אין לו מספר יחידה,
אין לו דרגת סיווג,
אין לו קיום רשמי,
אבל כל קצין מכיר אותו בשמו:
"חפ"ק מבצעי",
קבוצת הווטסאפ שבה עוברות
ההוראות באמת.
וזה לא רק צה"ל,
רופאים מעבירים קבצי רנטגן,
מנהלי בנק מאשרים הלוואות,
עורכי דין שולחים חוזים,
כולם יודעים שזה לא אמור לקרות,
כולם עושים את זה בכל זאת.
בשנת 2014 פייסבוק משלמת 19 מיליארד דולר
על אפליקציית מסרים שמנוהלת על ידי
50 מהנדסים בלבד,
המתחרים צחקו,
האנליסטים אמרו
שצוקרברג השתגע שוב,
אבל הם לא ראו את מה שהוא ראה:
האפליקציה שעלתה אז דולר לשנה לכל משתמש
בזמן שהמתחרים הוציאו הון על תשתיות.
כל מתכנת Backend,
כולל אני, שואל בעצם איך,
איך מערכת שמחזיקה
2.9
מיליארד משתמשים בחודש
לא קורסת תחת העומס של עצמה?
איך ההצפנה עובדת?
ואיפה באמת
איפה שיעזור לי האל
נשמר כל סטיקר של שבת שלום
וכל תמונה של ילד מנוזל בגן.
התשובה הקצרה היא Erlang,
התשובה הארוכה יותר היא ארכיטקטורה שבזה למוסכמות
של עמק הסיליקון המודרני.
כן,
בזמן שכל הסטארטאפים רצו לכתוב ב-Node או Go,
המהנדסים של Whatsapp הלכו אחורה בזמן,
הם בחרו ב-Erlang, שפה שפותחה באריקסון בשנות ה-80
עבור מתגים טלפוניים,
שפה שמבטיחה דבר אחד:
להיות בלתי-הריגה תחת עומס של מיליוני חיבורים מקביליים.
ארלנג, ספציפית BEAM או ה-Virtual Machine של Erlang, מאפשר לתהליכים (Actors)
לקרוס בלי להשפיע על אף אחד אחר,
עיקרון שזכה לכינוי Let it crash.
ארלנג מעולה בסקייל,
בפוסט "מיליון אחד זה כל כך 2011"
חשפה וואטסאפ שרת בודד שמטפל ב-2 מיליון חיבורים פתוחים,
מספר דמיוני במונחים של שרת HTTP רגיל
וגם Hot Reload, אפשרות לדחוף גרסה חדשה לשרת
בזמן שהוא משרת אמהות לא אוגרות.
זה קריטי כשיש לך צוות הנדסה זעיר יחסית לכמות המשתמשים,
בערב המכירה 50 מהנדסי וואטסאפ מטפלים ב-450 מיליון משתמשים
יחס של אחד ל-9 מיליון
לעומת אחד ל-20,000 בפייסבוק.
וואטסאפ גם לא רצה על Linux סטנדרטי כמו כולם,
הבחירה שלה היא במערכת ההפעלה
FreeBSD
שמאפשרת לה לנצל את החומרה עד הקצה.
השרתים של וואטסאפ הם bare metal שמנים במיוחד
עם עשרות ליבות וזיכרון RAM עצום.
ולקינוח,
בסיס הנתונים Mnesia,
מסד נתונים מבוזר המובנה בתוך Erlang
ששומר את ה-מי,
מה,
מתי,
קרוב מאוד ללוגיקה העסקית,
בלי שיהוי או פנייה לדאטהבייס חיצוני.
הארכיטקטורה הזו אפשרה לוואטסאפ להישאר רזה,
הם לא היו צריכים צבא של אנשי DevOps,
הם היו צריכים רק קוד חכם.
אבל,
וזה אבל גדול,
הארכיטקטורה הזו מותאמת להעברת הודעות,
לא לאחסון שלהן.
עד לא מזמן הטלפון שלכם היה
"מקור האמת".
זוכרים שבלי קליטה או סוללה
לא היה וואטסאפ במחשב?
המעבר ל-Multi-Device חייב את וואטסאפ להמציא את הגלגל מחדש
ולאמץ את פרוטוקול Signal,
סטנדרט הזהב להעברת מסרים מוצפנים
מקצה לקצה,
פרוטוקול שמבוסס על X3DH או Extended Triple Diffie-Hellman.
מעין לחיצת יד ראשונית בין מישהו שרוצה
לשלוח לי הודעה
לבין השרת שמחזיק צרור מפתחות
(PreKeys) שהמכשיר שלי יצר
כשאתם שולחים לי הודעה ראשונה אתם לוקחים מפתח מהשרת,
מערבבים אותו עם המפתח שלכם ויוצרים בינינו תעלה מוצפנת
גם אם אני בכלל בטיסה בלי אינטרנט.
אבל זה רק המפתח הראשוני,
ב-Signal המפתח זז קדימה
בשיטת
Double Ratchet,
כמו המפתח ברגים הזה עם
השקשוק שמהדק רק לצד אחד,
כל הודעה מסובבת את המפתח קדימה.
טיק אחד.
מה קורה גבר?
טיק.
מה שמעתי הפלת פרודקשן,
טיק,
ה-Forward Secrecy הזה יוצר מפתח חדש בכל פעם,
גם אם
גנבו את המפתח של היום
הם לא יכולים לפענח את ההודעות של אתמול,
אבל אמרנו Double Ratchet,
גם אם המוסד גנבו את המפתח של היום,
המערכת תחלים בעצמה
עם סט חדש שדדי ברנע
לא מכיר.
איך?
מספיק שהנמען יענה
משהו כדי שהמפתחות יתערבבו מחדש.
דאבל ראצ'ט,
אחד מגן על העבר,
השני על העתיד,
המפתח ברגים הזה
שומר על 100 מיליארד הודעות וואטסאפ ביום,
הצפנה מקצה לקצה ברמה של ממשלות
נמצאת בטלפון שלי,
שלך
ושל ההורים שלנו.
אבל רגע,
אמרנו Multi-Device,
איך מבטיחים הצפנה מקצה לקצה כשיש לי
יותר ממכשיר אחד?
איך השרת יכול לשכפל הודעה ליתר המכשירים שלי
כשהוא לא יודע מה התוכן?
התשובה היא מאוד וואטסאפית: "השרת שלנו? לא עושה כלום,
המכשיר שלכם עושה את זה!",
זה נקרא Client Fanout וכשאתם שולחים הודעה לנופר
המכשיר שלכם בודק מול השרת אילו עוד מכשירים יש לנופר
ואילו מכשירים נוספים יש לכם
הוא מצפין את ההודעה בנפרד עבור כל אחד מהמכשירים האלה
ושולח צרור הודעות מוצפנות לשרת
והשרת?
מפיץ אותן ליעדם כמו דוור עיוור.
במילים אחרות,
העומס החישובי של ההצפנה
נופל עליכם,
זה מה שמאפשר ל-Meta לחסוך
ולהמשיך לטעון:
"אנחנו לא יכולים לקרוא את ההודעות שלכם גם אם נרצה,
גם אם יכריחו אותנו".
אוקיי זה מצוין, אבל בקבוצת "אבות לא אוספים" יש 256 אנשים
אם הייתי צריך להצפין כל הודעה 256 פעמים
הטלפון היה מתחמם כמו מתבגר מול פוסטר של סמנתה פוקס
והסוללה
הייתה נגמרת בשעה עשר.
הפתרון הוא Sender Key,
מפתח אחד שנוצר עבורך ברגע ההצטרפות לקבוצה,
מוצפן ונשלח פעם אחת עבור כל משתמש,
כל הודעה שלך מוצפנת רק עם המפתח הזה והשרת שולח עותק שלה
לכל המשתתפים,
זה סקיילבילי לאלפי חברים אבל
לא מושלם,
אם מישהו חדש מצטרף הוא לא רואה היסטוריה,
אם מישהו עוזב הוא לא רואה עתיד.
אוקיי,
על הנייר וואטסאפ מבצר.
בפועל היא גבינה שוויצרית,
לא בגלל ההצפנה,
אלא בגלל כל מה שמסביב.
נתחיל מזה שאם מותקנת לכם רוגלה למכשיר למשל
פגסוס של NSO או גרפייט של פאראגון,
אז קודם כל עשיתם משהו ממש רע לביטחון המולדת
אם מותקנת לכם רוגלה
אז
זה Game Over, היא יכולה לקרוא את כל מה שכתבתם
וכל מה שקיבלתם כי היא פשוט קוראת את המסך והמקלדת, שום הצפנה לא תעזור לכם.
ולפעמים זה לא רוגלה,
אלא חולשה כמו CVE-2019-3569
שאיפשרה לשיחת טלפון בוואטסאפ
לדרוס אזור בזיכרון
ולהריץ על המכשיר קוד מרחוק,
גם פה ההצפנה יכולה להיות מושלמת אבל אם האפליקציה כתובה
ב-C/C++
ויש בה באג של ניהול זיכרון
אז כל המרכלים בקבוצת "גן מרגנית - בלי הגננת"
אכלו אותה.
לפעמים זה סתם באג מזלזל כמו זה שגילה הישראלי טל בארי בפיצ'ר View Once
שאפשרה צפייה חוזרת.
הבעיה טופלה מאז אבל המשמעות נשארה.
כשאתם שולחים משהו
אתם סומכים על היושרה של הצד השני,
על האפליקציה שהוא מריץ
והגרסה שלו
לאמון.
וכמובן הגיבויים,
הגדלתם את האחסון באפל או גוגל כדי לשמור
עותק של כל ההודעות,
אבל לא סימנתם להצפין את העותק הזה?
ברכותיי,
נתתם לאפל או גוגל
עותק גלוי של כל השיחות,
גיבוי שהם יכולים להעביר לגופי חוק
או שהאקרים יכולים פשוט להוריד.
אבל מכת המדינה בוודאות היא השתלטות על חשבונות וואטסאפ,
לא דרך שבירת ההצפנה
אלא דרך טיפשות מערכתית
והנדסה חברתית.
זה הולך ככה:
התוקף מתקין וואטסאפ ומזין את המספר שלכם, הוא מבקש את
קוד האימות בשיחה קולית לרוב באמצע הלילה כשאתם נוחרים,
השיחה עוברת לתא הקולי,
אותו הוא פורץ בקלות עם הסיסמה הדיפולטית,
מאזין להודעה עם הקוד,
ומשתלט על החשבון.
אבל זו רק המערכה הראשונה,
עכשיו הוא ינסה להשתלט על החשבונות של כל אנשי הקשר שלכם.
וזה הרבה יותר קל,
כי אלו אנשים שמאמינים שזה אתה,
הוא ישלח להם הודעה בסגנון:
"חיים שלי,
שכחתי את הסיסמה לוואטסאפ,
יכול להעביר לי את הקוד ששלחו אליך?"
האקרים מתים על וואטסאפ גנוב כי זה מגיע עם המון ערך:
הזהות שלך,
אנשי הקשר שסומכים על הזהות הזו,
היסטוריית השיחות כולל חומרים סודיים,
גישה לקבוצות,
חלקן פרטיות
ובארצות מסוימות,
וואטסאפ הוא גם אמצעי תשלום.
הם ישתמשו בערך הזה כדי לבקש כסף או הלוואה,
כדי לאפס סיסמאות גישה,
להרוס לך מערכות יחסים
או לחסל אותך פוליטית.
גורמים רעים יקבלו הצצה
לסושיאל גרף שלך,
למי אתה מחובר,
מה אתה מתכנן
ואיך אפשר לסחוט אותך
בעולם האמיתי.
מפחיד,
אבל בשליטתכם,
אל תעבירו קוד הבטחה לעולם,
גם אם זה למישהו שאתם מאוד אוהבים.
טוב בוא נדבר קצת AI,
מארק צוקרברג בבעיה,
הוא רוצה שוואטסאפ תהיה סייעת AI חכמה
כמו צ'אט GPT
אבל הוא הבטיח שההודעות מוצפנות ושהוא לא יכול לקרוא אותן בשרת,
הוא גם לא יכול להריץ מודל שפה של 70 מיליארד פרמטרים
במכשיר עצמו.
הפתרון לבעיה Private Processing,
כשהטלפון שלכם שולח שאלה ל-Meta AI
הוא לא פונה ישירות לשרת של מטה,
הוא משתמש בשרת צד שלישי,
השרת הזה רואה את המזהה שלכם אבל לא את התוכן,
שרת של מטה רואה את התוכן אבל לא את המזהה,
כך
מנתקים את "מי שאל" ל"מה נשאל".
והשרת שכן רואה את התוכן
רץ בתוך Trusted Execution Environment, מעין מובלעת
מאובטחת במעבד,
אזור שמוצפן
ברמת החומרה,
מקום שגם מנהל השרת של מטה עם הרשאות Sudo
לא יכול לגשת אליו,
בשרת הזה גם לא נשמרים לוגים וברגע שהתשובה נוצרה
היא נמחקת מהזיכרון לגמרי.
זה וואחד הישג הנדסי, אבל הוא דורש מאיתנו להאמין
בשני דברים:
קודם כל במעבדים של אינטל או AMD
אבל גם במטה שבעצם אומרת:
"אנחנו
כן מריצים AI על ההודעות שלכם אבל
תסמכו עלינו שזה בארון סגור עם מנעול כפול".
ומשם לאירופה, חוק השווקים הדיגיטליים
הכריז על וואטסאפ כשומרת סף שחייבת לאפשר למשתמשים אחרים
תאימות תפעולית או הזכות להעביר הודעות בין אפליקציות.
זה נשמע יפה על הנייר אבל סיוט טכני להטמיע,
בעיקר עם פרוטוקולי הצפנה
שונים.
צריך להסכים על הגשר שיחבר בין מערכות
מבלי לבצע עטיפה מחדש של ההודעות
וגם לפתור בעיה קשה של מזהים ייחודיים,
חלקם אנונימיים או דורשים להישאר אנונימיים.
וואטסאפ לא אומרת לא לאירופאים,
היא פשוט הגישה מסמך דרישות של מאות עמודים
ומקווה שרוב המתחרים פשוט יסרבו להתחבר בתנאים האלה.
וואטסאפ נכון להיום,
נשארת גן סגור.
אבל
איך וואטסאפ עושה כסף?
המנכל שלה אז יאן קום מתחייב:
No Ads,
No Games,
No Gimmicks.
יאן הקים את וואטסאפ מתוך אידיאולוגיה אמיתית של פרטיות,
הוא לא רצה לאסוף דאטה ובטח שלא לעשות כסף ממודעות,
אבל
מכר את וואטסאפ
לחברה שכל המודל העסקי שלה הוא מעקב לתוככי הנשמה,
לאסוף כל מה שאפשר
כדי להציג פרסומות.
אבל כשהמידע מוצפן מקצה לקצה,
מה מטה תאסוף?
את המטא,
דאטה.
ההודעה שלי לשירות של תמי 4
מוצפנת אבל לא המעטפה,
מספר הטלפון שלי,
מספר הטלפון של תמי 4,
מתי שלחתי,
כמה וכמה מהר ענו לי,
הם חלק מהמטאדאטה שמטה שומרת
וזה
המון מידע שאפשר להסיק ממנו.
אותה תמי 4 גם משלמת על ההודעות במסגרת Whatsapp for Business
מודל שגובה יותר אם העסק פנה למשתמש,
פחות אם המשתמש פנה לעסק
וממש בזול אם העסק ענה ללקוח תוך 24 שעות.
זה דוחף עסקים להיות יעילים והופך את וואטסאפ למערכת CRM
מהגדולות בעולם.
וואטסאפ גם אחראית לערוץ סופר צומח של מטה בפרסום,
כפתור ה-Click to WhatsApp פותח צ'אט עם העסק מתוך המודעה
כך שכל האינטראקציה קורית בתוך אותה
Ecosystem,
מהלך שגם עוקף את מגבלת המעקב
במכשירי אפל.
החזון
של צוקרברג הוא להיות
WeChat מערבי.
הדרך לשם היא לדאוג שוואטסאפ היא גם הבנק.
500 מיליון הודים ומספר דומה של ברזילאים
יכולים כבר היום לקנות ירקות בשוק
ולשלם לעסקים בוואטסאפ.
איזה בזבוז בישראל שמשלמת בביט ופייבוקס
תשעים אחוז מהגולשים לפי בזק משתמשים בוואטסאפ זה
נתון מטורף,
אנחנו מכורים.
אז מה למדנו? שוואטסאפ היא פלא הנדסי, שסיגנל היא הצפנה מופתית אבל היא דלת פלדה
על בית מקרטון,
בעיות אבטחה
קיימות במכשיר הקצה
בגיבויים לענן
ובהנדסה החברתית.
העתיד
גם הוא ברור:
AI וכסף.
מטא תעשה הכל כדי להכניס סוכנים חכמים לתוך השיחות שלכם
תוך כדי אקרובטיקה טכנולוגית
ושכנוע
שזה עדיין פרטי.
ממש בקצרה על המתחרות הגדולות:
סיגנל האפליקציה
יותר קיצונית בפרטיות שומרת פחות מטאדאטה
אבל גם פחות נפוצה או נוחה,
טלגרם
לא באמת מוצפנת מקצה לקצה רק בהודעות שביקשת
ולא בקבוצות השרתים שלה רואים הכל
והצפנת הבסיס שלה
לא סטנדרטית,
ו-iMessage
עושה הכל מעולה רק
שהיא נעולה לאפל.
ואפל היא לא שומרת סף טובה יותר.
האם אמשיך להתכתב בוואטסאפ? בטח,
כולנו,
אין באמת
ברירה,
אבל לפחות עכשיו,
כשאתם שולחים נשיקות או הודעה מתעניינת.
אתם יודעים איזה מסע מטורף היא עוברת
עד שהיא נוחתת אצל הצד השני.
עד הפעם הבאה
תהיו טובים ותמשיכו להיות סקרנים.
יאללה ביי.