שקיפות בבקשות למוצרי Google

כדי להגביר את האמון במוצרים ובאפליקציות של Google, אנחנו מתחייבים לרשום כל חבילת מוצרים של Google ביומן השקיפות שלנו. פרסמנו את יומן השקיפות כדי לאמת באופן ציבורי את הטענות שלנו לגבי החבילות האלה (APKs ו-APEXs).

מודל איומים

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

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

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

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

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

מודל המתלונן

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

  • ‫ClaimGoogleApp: (I, Google, claim that $hashApp is for $googleApp), where:
    • ‫$hashApp הוא גיבוב קריפטוגרפי (למשל SHA256) של קובץ החבילה (כולל קובצי APK מפוצלים וחבילות APEX) של גרסה ספציפית של $googleApp.
    • ‫$googleApp היא חבילת Android ‏(APK או APEX) שמרכיבה אפליקציה או מוצר ש-Google יוצרת ומפיצה.

כל מי שיש לו עותק של $googleApp יכול לאמת את הטענה הזו, ותיאור מלא של התהליך מופיע בדף האימות.

תוכן היומן

כש-Google מפרסמת גרסה חדשה של חבילת APK או APEX, היא מוסיפה רשומה תואמת ליומן השקיפות של אפליקציות למוצרי Google.

כל רשומה ביומן הזה מכילה ארבעה פריטי מטא-נתונים:

  1. הגיבוב של קובץ ה-APK או APEX של חבילה שחתמה עליה Google. זוהי מחרוזת הקסדצימלית של תקציר ה-SHA256 של הקובץ כולו.
  2. תיאור של סוג הגיבוב הקודם. זו מחרוזת.
  3. שם החבילה של החבילה. זו מחרוזת.
  4. מספר הגרסה (versionCode) של החבילה. הערך הזה חייב להיות מספר שלם שונה מאפס.

הפורמט של רשומה ביומן הוא שרשור של ארבעת פריטי המידע עם תו של שורה חדשה (\n), כמו בדוגמה הבאה:

hash\nhash_description\npackage_name\npackage_version\n

מוצר של Google יכול להיות מופץ כקובץ APK או כקובץ APEX, ולכן תיאור הגיבוב מוגדר כ-SHA256(APK) או כ-SHA256(APEX). כך מתקבלת תמונה מקיפה של התוכן בכל קובץ, וקל יותר למשתמשים לקבל את המדידה הזו.

תרשים של המערכת האקולוגית

תרשים של סביבת יומנים שניתנים לאימות