כדי להגביר את האמון באפליקציות של Google, אנחנו מתחייבים עכשיו לרשום כל אפליקציית מוצר של Google ביומן השקיפות שלנו. פרסמנו את יומן השקיפות כדי לאמת באופן ציבורי את הטענות שלנו לגבי קובצי ה-APK האלה.
מודל איומים
אפשר להשתמש במערכות שקיפות כדי לזהות מתקפות על שרשרת האספקה, וכך למנוע אותן. הנה כמה דוגמאות.
נניח שתוקף משנה באופן זדוני אפליקציית Google ואפילו מצליח לחתום עליה באמצעות מפתח החתימה שמשמש להפצה דרך Google Play. בעזרת יומן שקיפות בינארי, כל מי שמקבל קובץ APK מפוקפק יכול להשתמש בו כמקור אמין שאפשר לאמת כדי לוודא שהקובץ אותנטי. הם יראו ש-Google לא הוסיפה את המטא-נתונים של ה-APK המתאים ליומן, וידעו שלא כדאי לסמוך על ה-APK שנפרץ.
הפרסום ביומן הוא תהליך נפרד מתהליך השחרור עם חתימה (כפי שמודגם בתרשים המערכת האקולוגית), ולכן הוא מעלה את הרף עבור התוקף מעבר לפריצה של המפתח.
אנחנו מתכננים לשלב את היומן הזה גם ברשת ציבורית של עדים באמצעות פרוטוקול עדים סטנדרטי. אנחנו ממליצים לצדדים חיצוניים ועצמאיים לעקוב אחרי השלמות של היומן הזה שזמין לכולם. הגורמים האלה יכולים לאשר שהיומן הוא רק להוספה, ולדווח על כל שינוי לא מורשה.
הקיום של מערכת שקיפות כזו והאפשרות הנוספת לגלות מתקפות מרתיעים פעילות זדונית. אם קובץ APK נפרץ אבל המשתמשים בוטחים רק בקבצים שמופיעים ביומן, קובץ ה-APK שנפרץ צריך להיות חשוף לציבור. כך גדל הסיכוי לגלות שקובץ ה-APK שנפרץ קיים, ואפשר לפעול להסרת ההפצה שלו.
מודל המתלונן
מודל התובע הוא מסגרת שמשמשת להגדרת תפקידים וארטיפקטים במערכת שניתן לאמת. במקרה של שקיפות באפליקציות של צד ראשון של Google, הטענה שלנו היא שהגיבוב של קובץ APK שמתועד ביומן הזה מייצג גרסה ספציפית של אפליקציית Google רשמית שמיועדת לשימוש הציבור.
- ClaimGoogleApp: (I, Google, claim that
$hashAppis for$googleApp), where:-
$hashAppהוא גיבוב קריפטוגרפי (למשל SHA256) של קובץ ה-APK (כולל חבילות APK מפוצלות) של גרסה ספציפית של$googleApp. -
$googleAppהיא חבילת Android (APK) שמרכיבה אפליקציה ש-Google יוצרת ומפיצה.
-
כל מי שיש לו עותק של $googleApp יכול לאמת את הטענה הזו, ותיאור מלא של התהליך מופיע בדף האימות.
תוכן היומן
כש-Google מפרסמת גרסה חדשה של APK, היא מוסיפה רשומה תואמת ליומן השקיפות של חבילות APK של צד ראשון של Google.
כל רשומה ביומן הזה מכילה ארבעה פריטי מטא-נתונים:
- הגיבוב של קובץ ה-APK של אפליקציה שחתמה עליה Google. זהו גיבוב SHA256 של הקובץ כולו, שמוצג כמחרוזת הקסדצימלית.
- תיאור של סוג הגיבוב הקודם. זו מחרוזת.
- שם החבילה של ה-APK. זו מחרוזת.
- מספר הגרסה (versionCode) של ה-APK. הערך הזה חייב להיות מספר שלם שאינו אפס.
הפורמט של רשומה ביומן הוא שרשור של ארבעת פריטי המידע עם תו של שורה חדשה (\n), כמו בדוגמה הבאה:
hash\nSHA256(APK)\npackage_name\npackage_version\n
מכיוון שאנחנו מודדים את קובץ ה-APK כולו, תיאור הגיבוב מוגדר כ-SHA256(APK). כך מתקבל כיסוי מקיף של התוכן בכל קובץ, וקל יותר למשתמשים לקבל את המדידה הזו.
תרשים של המערכת האקולוגית
