گزارش شفاف‌سازی واحدهای Mainline در Android

«گزارش شفاف‌سازی ماژول‌های Mainline در Android» از ساختارهای داده قابل‌تأیید برای اطمینان از یکپارچگی ماژول‌های Mainline استفاده می‌کند.

کاربرد گزارش‌های شفاف‌سازی توسط پروژه‌هایی مثل شفاف‌سازی دودویی Pixel و شفافیت گواهینامه اثبات شده است.

گزارش‌های شفاف‌سازی براساس درخت‌های مرکل ساخته شده‌اند. این صفحه فرض می‌کند که شما دانش عمومی درباره درخت‌های مرکل و شفافیت دودویی دارید. برای نمای کلی درخت‌های Merkle، به ساختارهای داده قابل‌تأیید مراجعه کنید و برای نمای کلی تلاش‌های شفاف‌سازی دودویی در Android، به صفحه اصلی مراجعه کنید.

پیاده‌سازی گزارش

«دفتر ثبت شفافیت ماژول‌های Mainline در Android» بااستفاده از Tessera پیاده‌سازی شده است و از مشخصات tlog-tiles با ارتفاع کاشی ۸ (هر کاشی یا بسته حداکثر حاوی ۲۸ = ۲۵۶ مورد است) پیروی می‌کند.

ریشه محتوای گزارش در اینجا ارائه می‌شود: https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/entries/

ریشه محتوای کاشی در اینجا ارائه می‌شود: https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/

توجه داشته باشید که این نشانی‌های وب صفحه‌های وب استاندارد نیستند. درعوض، ورودی‌های گزارش در زیرفهرست‌های راهنمای آن باید به‌صورت برنامه‌نویسی‌شده بااستفاده از ابزارهایی مثل Tessera یا کتابخانه Golang SumDB Tlog قابل‌دسترسی باشند.

  • کاشی‌های درختی: درهم‌سازی‌های گره برگ و داخلی درخت مرکل تحت tile/<level>/<path> (مثلاً tile/0/000، tile/1/000) ارائه می‌شوند.
  • دسته‌های ورودی: محموله‌های برگ گزارش در دسته‌های ورودی تحت tile/entries/<path> (مثلاً tile/entries/000،‏ tile/entries/001) سازمان‌دهی می‌شوند، و هر دسته حداکثر ۲۵۶ ورودی به‌هم‌پیوسته را نگه می‌دارد.

برای شرح محتوای هر ورودی، به محتوای گزارش مراجعه کنید.

درهم‌سازی ریشه درخت مرکل از گزارش، که در نقطه وارسی قرار دارد، در 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-----

گزارش بایگانی‌شده (نسخه ۱)

پیش‌از به‌روزرسانی سه‌ماهه سوم ۲۰۲۶، گزارش تحت پیاده‌سازی قبلی نسخه ۱ بااستفاده از امضاهای ECDSA (NIST P-256 با SHA-256) کار می‌کرد. گزارش V1 بایگانی‌شده و فقط خواندنی است، اما برای تأیید ورودی‌های قدیمی همچنان به‌صورت عمومی دردسترس است:

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

چون ماژول‌های Mainline شبیه APK هستند، روش‌های درستی‌سنجی شرح‌داده‌شده در صفحه درستی‌سنجی Google APK در اینجا نیز اعمال می‌شود. می‌توانید از روش‌های موجود در آنجا برای درستی‌سنجی ادعاهای مطرح‌شده در مدل مدعی استفاده کنید.