הבעיה: אמון עיוור
כשאתם מתקינים אפליקציית מוניטור לתינוק, אתם נותנים לה גישה למקום פרטי מאוד: חדר התינוק שלכם. האפליקציה מאזינה, ולפעמים גם צופה. ובכל זאת, הורים לרוב לא יכולים לדעת מה קורה מאחורי הקלעים: האם השידורים עוברים דרך שרתים של צד שלישי, האם נאספים נתוני שימוש, ומי יכול מבחינה טכנית לגשת למידע?
התשובה הכנה היא שבאפליקציות רבות פשוט אי אפשר לדעת. הקוד סגור, והארכיטקטורה נשארת בגדר טענה. בסופו של דבר, מבקשים מכם להאמין לספק.
קוד סגור, פרצות פתוחות
בשנים האחרונות פורסמו לא מעט דיווחים על מוניטורים לתינוק שנפרצו. זרים יכלו להאזין, להזיז מצלמות או לדבר דרך הרמקולים. ברוב המקרים לא היה מדובר במתקפות מתוחכמות, אלא בכשלים חמורים: חיבורים לא מוצפנים, סיסמאות ברירת מחדל או היעדר אימות.
בתוכנה קניינית, גורמים מבחוץ לרוב מגלים חולשות כאלה רק אחרי שכבר קרה משהו. חוקרי אבטחה, מפתחים עצמאיים והורים בוחנים מוצר מוגמר מבחוץ. עבור מכשיר שנמצא בחדר התינוק, זה מודל חלש.
שקיפות כעיקרון אבטחה
לאבטחת מידע יש כלל ותיק ושימושי: עקרון קרקהופס. אבטחה לא צריכה להיות תלויה בכך שהתכנון נשמר בסוד. מערכת צריכה להישאר מאובטחת גם כשמישהו יודע כיצד היא בנויה.
קוד שמתועד באופן פתוח לא הופך תוכנה לבטוחה בפני עצמו. אבל הוא כן מאפשר לבדוק את הטענות. אנשים שמבינים בתחום יכולים לבחון זרימות נתונים, גזירת מפתחות וכללים, במקום לקרוא טקסט שיווקי.
הגישה של Timmy: ליבת אבטחה נפרדת
ב-Timmy אני מפריד כיום בצורה ברורה מאוד בין החלקים שבאמת קריטיים לאבטחה. לא כל רכיב בממשק המשתמש קובע אם המוצר ראוי לאמון. החלקים המכריעים הם הלוגיקה של צד השרת, מפרטי האיתות, הקריפטוגרפיה של תהליך הצימוד והשאלה אילו נתונים מגיעים לשרת.
לכן ליבת האבטחה נמצאת כעת במאגר הציבורי baby-monitor-timmy-core. כל קוד האפליקציה אינו ציבורי כרגע. אבני הבניין הקריטיות לאבטחה מופרדות מממשק המשתמש ומלוגיקת המוצר, כדי שאפשר יהיה לתעד ולבדוק אותן בפני עצמן.
מה זה אומר בפועל?
- גבולות ברורים: רכיבי האבטחה מופרדים מממשק המשתמש ומלוגיקת המוצר.
- זרימות נתונים שניתן לבדוק: אפשר לתעד בנפרד את תהליך הצימוד, האיתות והממשקים של צד השרת.
- ללא רכיבי מעקב נסתרים: נתיבים קריטיים כוללים רק את מה שנחוץ שם מבחינה טכנית.
- תחזוקה לטווח ארוך: קל יותר לבדוק ליבה נפרדת מאשר מערכת מונוליתית ולא מסודרת.
לסיכום: להורים מגיעה שקיפות
כשלאפליקציה יש גישה לחדר התינוק, היא צריכה לתת תשובות ברורות לשאלות הקריטיות: אילו נתונים נוצרים? לאן הם מגיעים? מי יכול לקרוא אותם? להורים מגיע יותר מתג פרטיות בתחתית העמוד.
Baby Monitor Timmy אמורה להראות שמוצר טוב ואבטחה שניתן לבדוק יכולים להשתלב יחד. מבחינתי, זה לא אומר לפרסם כל חלק באפליקציה. זה אומר לפתוח לבדיקה את החלקים שקובעים את הצימוד, האיתות, הגישה לצד השרת וזרימות הנתונים.