יומן השקיפות של מודולים ראשיים ב-Android

יומן השקיפות של מודולי Mainline ב-Android משתמש במבני נתונים שניתנים לאימות כדי להבטיח את תקינות המודולים של Mainline.

התועלת של יומני שקיפות הוכחה בפרויקטים כמו שקיפות בינארית של Pixel ושקיפות אישורים.

יומני השקיפות מבוססים על עצי מרקל (Merkle trees). ההנחה היא שיש לכם ידע כללי על עצי מרקל ועל שקיפות בינארית. במאמר מבני נתונים שניתנים לאימות מופיעה סקירה כללית של עצי מרקל, ובדף הראשי מופיעה סקירה כללית של המאמצים לשקיפות בינארית ב-Android.

הטמעת יומן רישום

יומן השקיפות של מודולי Mainline ב-Android מיושם באמצעות Tessera, והוא תואם למפרט tlog-tiles עם גובה משבצת של 8 (כל משבצת או חבילה מכילה לכל היותר 28 = 256 פריטים).

השורש של תוכן היומן מוצג בכתובת: https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/entries/

התוכן של המשבצת הראשית מוצג בכתובת: https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/

חשוב לשים לב שכתובות ה-URL האלה הן לא דפי אינטרנט רגילים. במקום זאת, צריך לגשת לרשומות ביומן בספריות המשנה באופן פרוגרמטי באמצעות כלים כמו Tessera או ספריית Tlog של Golang SumDB.

  • אריחי עץ: ערכי הגיבוב של הצומת הפנימי וצומת העלה של עץ Merkle מוצגים בכתובת tile/<level>/<path> (למשל, tile/0/000, tile/1/000).
  • חבילות של רשומות: המטענים הייעודיים של עלי היומן מאורגנים בחבילות של רשומות בנתיב tile/entries/<path> (למשל, tile/entries/000,‏ tile/entries/001), וכל חבילה מכילה עד 256 רשומות משורשרות.

במאמר תוכן היומן מוסבר מה מכילה כל רשומה.

ה-hash של שורש עץ Merkle של היומן, שכלול בנקודת ביקורת, מוצג בכתובת https://www.gstatic.com/android/binary_transparency/mainline/2026/02/checkpoint בפורמט של נקודת ביקורת. מקור נקודת הבדיקה הוא android.transparency.goog/mainline/modules/2026/1.

החתימות של נקודות הבדיקה נוצרות באמצעות אלגוריתם החתימה Ed25519. אפשר לאמת את החתימה של נקודת הבדיקה באמצעות המפתח הציבורי הבא, בפורמט של מאמת הערות (כפי שמוגדר ב-golang.org/x/mod/sumdb/note) או בפורמט PEM רגיל:

  • פורמט של מאמת הערות (<name>+<key_hash>+<public_key_bytes>):
android.transparency.goog/mainline/modules/2026/1+1a8e4064+AfwnHm59rNQTJICchMd7a2W5PQa7nC5h2gTEfq3fhCEI
  • פורמט PEM‏ (SubjectPublicKeyInfo):
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA/Ccebn2s1BMkgJyEx3trZbk9BrucLmHaBMR+rd+EIQg=
-----END PUBLIC KEY-----

יומן שהועבר לארכיון (גרסה 1)

לפני העדכון ברבעון השלישי של 2026, היומן פעל לפי הטמעה קודמת של גרסה 1 באמצעות חתימות ECDSA (NIST P-256 עם SHA-256). היומן של גרסה 1 הועבר לארכיון והוא במצב קריאה בלבד, אבל הוא עדיין נגיש לכולם כדי לאמת רשומות היסטוריות:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr6nPds8eKCYU42avidXNM1GDCtQ/
66GjGuIpUcZjqQNngwRFVCFZDpWuvDnqXzhJRxqccL9lbeEVVZGpa4x6pg==
-----END PUBLIC KEY-----

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