מיליון הורדות ב-4 ימים: כך פותחה ”אפליקציית הקורונה” של משרד הבריאות

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

צילום: גיקטיים

מאת: גיא ברנהרט-מגן

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

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

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

איך מנהלים מעקב בלי לפגוע בפרטיות?

מטרת העל של האפליקציה היא לאפשר למשתמשים לבדוק אם הם היו בקרבת נשאי קורונה. לצורך מטרה זאת רצינו לשמור על מספר יעדים: שקיפות – ע”י שימוש בקוד פתוח נוכל לעבוד ממודל סגור שבו אף אחד לא יודע בדיוק מה האפליקציה עושה, למודל בו אין צורך לסמוך על מומחים אלא ניתן לבדוק את הקוד באופן עצמאי בגרסה הנוכחית ובכל גרסה שתצא בעתיד; אבטחה – בדיקת הקוד ווידוא כי משתמשים ב-Best Practices וכי הארכיטקטורה מאובטחת; פרטיות – שמירה על פרטיות המשתמשים, כך שבשום שלב מידע השייך למשתמשים לא יועבר לאף גורם אחר ללא הסכמת המשתמש; פשטות – רצינו לשמור על המערכת פשוטה ככל האפשר, על מנת למקד אותה בדברים החשובים באמת, ללא פיצ’רים נוספים שיסבכו את האבטחה והפרטיות.

מקור: Profero

מתכננים ארכיטקטורה פשוטה למדי

בסופו של דבר, הארכיטקטורה שנבחרה היא פשוטה למדי.

  1. משרד הבריאות מנהל מבנה נתונים (JSON) המכיל מיקומים פומביים של חולי קורונה מאומתים, ודואג לעדכן אותו אחת לפרק זמן
  2. משרד הבריאות דוחף את מבנה הנתונים המעודכן ל-Azure Object Storage. השימוש בענן כאן הוא על מנת לבודד את משרד הבריאות מהאפליקציה ולנצל את היתירות והמוכנות לעומסים הקיימים בענן.
  3. האפליקציה כתובה ב-React-Native על מנת לפשט את הקוד והתמיכה באנדרואיד ו-iOS
  4. האפליקציה מושכת את מבנה הנתונים בפרקי זמן קבועים מהענן
  5. האפליקציה אוספת נתוני מיקום ממערכת ההפעלה של הטלפון יחד עם מזהה של רשתות ה-WIFI, ושומרת אותם במסד נתונים (SQLite) מקומי. נתוני ה-WIFI עוברים HASH (גיבוב), כלומר המידע שנשמר הינו Hash(WIFI)+MAC
  6. האפליקציה מצליבה בעזרת אלגוריתם מיקום מרחבי בלבד בין הסטוריית המיקומים הלוקאלית לבין המיקומים של חולי הקורונה המאומתים. אם נמצאה התאמה, המשתמש מתבקש לאמת כי זאת אכן התאמה (ולא False Positive)
  7. אם ישנה התאמה, המשתמש מתבקש לפנות (ע”י WebView Link) לאתר משרד הבריאות למלא טופס דיווח על חשיפה לחולה קורונה מאומת

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

איך מקבלים מיקומים אבל עדיין שומרים על פרטיות?

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

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

הדרך שנבחרה על מנת לעשות זאת היא שימוש במזהי ה-WIFI האנונימיים. מזהה ה-WIFI (נקרא SSID, למעשה השם שהנתב מפרסם לעולם כאשר מבצעים סריקה לרשתות במכשיר) עובר תהליך של אנונימיזציה מצד אחד, אך שמירה על מזהה ייחודי כך שניתן יהיה לדעת בעזרת נתוני הזמן, המיקום והמזהה אם אכן הייתה חשיפה או לא.

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

מקור: Pixabay, עיבוד תמונה

מיליון הורדות תוך ימים

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

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

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

בשורה התחתונה – הצלחה שלהם, היא ההצלחה של כולנו. רק בריאות.

הכותב הוא ה-CTO בחברת Profero

Avatar

כתב אורח

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

הגב

17 תגובות על "מיליון הורדות ב-4 ימים: כך פותחה ”אפליקציית הקורונה” של משרד הבריאות"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.

סידור לפי:   חדש | ישן | הכי מדורגים
ארז
Guest

תותחים

אורח
Guest

כל הכבוד, לא חושב שהיה ניתן לעשות את זה יותר טוב

Ttt
Guest

https://ksp.co.il/item/F8170AX זה בדיוק הזמן להזמין הביתה מוצרים איכותיים, ועוד עם הנחות מפתיעות בעגלת הקניות

אורח
Guest

לא רק שזה לא המקום לפרסם דברים כאלה, על אילו הנחות אתה מדבר?

אורח
Guest

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

יהודה
Guest

חבל רק שתומך מאנדרואיד 6 ומעלה. בעלי מכשירים נחותים יותר לא יכולים להשתתף

איתמר
Guest

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

roei
Guest

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

יצחק כהן
Guest

ב”ה

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

מקווה שגם משרדים נוספים ילמדו איך מייצרים מוצר שנותן מענה לציבור בזמן אמת

היפו
Guest

מה הקטע של הגברים עם 2 שמות משפחה??

מונטי
Guest

כל הכבוד, ומסתבר שיש לזה גם המשך
ynet ידיעות אחרונות: פרסום ראשון: איטליה פנתה לישראל לסייע בהפעלת אפליקציית המגן.
https://www.ynet.co.il/articles/0,7340,L-5702645,00.html

חיים
Guest

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

ניר
Guest

חריג לטובה בנוף הישראלי. שאפו, ותודה!

יהונתן
Guest

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

88768
Guest

יפה מאד.
בדברים שחשובים באמת המדינה פונה לאנשים רציניים ולא ל- חברים-של

Agent Doe
Guest

כן, חוץ מבחירות – בחירות זה לא חשוב בכלל.

????????‍♂️

נובאמת
Guest

למה היה מכרז כאן?
הכותב האורח הזה עובד באיזה חברה רצינית?
ושמת לב לשם המשפחה שלו? מגן … אשכרה קראו לאפליקציה בשם של המפתח?!?
ממש רציני… הכי רציני שיש, תוך 4 ימים עאלק מרימים אפליקציה, נו באמת…

wpDiscuz

תגיות לכתבה: