گزارش شفافیت ماژولهای اصلی اندروید از ساختارهای داده قابل تأیید برای اطمینان از یکپارچگی ماژولهای اصلی استفاده میکند.
کاربرد گزارشهای شفافیت توسط پروژههایی مانند Pixel Binary Transparency و Certificate Transparency اثبات شده است.
گزارشهای شفافیت بر اساس درختهای مرکل ساخته میشوند. این صفحه دانش عمومی در مورد درختهای مرکل و شفافیت دودویی را فرض میکند. برای مرور کلی درختهای مرکل به ساختارهای داده قابل تأیید و برای مرور کلی تلاشهای شفافیت دودویی در اندروید به صفحه اصلی مراجعه کنید.
پیادهسازی لاگ
گزارش شفافیت ماژولهای اصلی اندروید با استفاده از Tessera پیادهسازی شده است و از مشخصات tlog-tiles با ارتفاع کاشی ۸ پیروی میکند (هر کاشی یا بسته حداکثر شامل ۲.۸ = ۲۵۶ آیتم است).
ریشه محتوای لاگ در آدرس زیر ارائه میشود: https://gstatic.com/android/binary_transparency/mainline/2026/02/tile/entries/
ریشه محتوای کاشی در آدرس زیر ارائه شده است: https://gstatic.com/android/binary_transparency/mainline/2026/02/tile/
توجه داشته باشید که این URLها صفحات وب استاندارد نیستند. در عوض، ورودیهای گزارش در زیرشاخههای آن باید به صورت برنامهنویسی شده و با استفاده از ابزارهایی مانند Tessera یا کتابخانه Golang SumDB Tlog قابل دسترسی باشند.
- کاشیهای درخت : هشهای گره داخلی و برگ درخت مرکل در آدرس
tile/<level>/<path>قرار میگیرند (مثلاًtile/0/000،tile/1/000). - بستههای ورودی : دادههای برگ لاگ در بستههای ورودی تحت
tile/entries/<path>(مثلاًtile/entries/000،tile/entries/001) سازماندهی میشوند که هر بسته میتواند تا ۲۵۶ ورودی به هم پیوسته را در خود جای دهد.
برای شرح محتویات هر ورودی، به «محتوای گزارش» مراجعه کنید.
هش ریشه درخت مرکل مربوط به گزارش، که در یک Checkpoint قرار دارد، در آدرس https://gstatic.com/android/binary_transparency/mainline/2026/02/checkpoint با فرمت Checkpoint ارائه میشود. مبدا 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-----
گزارش بایگانیشده (نسخه ۱)
قبل از بهروزرسانی سهماهه سوم سال ۲۰۲۶، این گزارش تحت پیادهسازی V1 قبلی با استفاده از امضاهای ECDSA (NIST P-256 با SHA-256) عمل میکرد. گزارش V1 بایگانی شده و فقط خواندنی است، اما برای تأیید ورودیهای تاریخی، به صورت عمومی در دسترس است:
- ایست بازرسی : https://gstatic.com/android/binary_transparency/mainline/2026/01/checkpoint.txt
- خروج دادهها : https://gstatic.com/android/binary_transparency/mainline/2026/01/module_info.txt
- ریشه کاشی :
https://gstatic.com/android/binary_transparency/mainline/2026/01/tile/ - کلید عمومی (فرمت PEM، ECDSA P-256) :
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr6nPds8eKCYU42avidXNM1GDCtQ/
66GjGuIpUcZjqQNngwRFVCFZDpWuvDnqXzhJRxqccL9lbeEVVZGpa4x6pg==
-----END PUBLIC KEY-----
از آنجا که ماژولهای Mainline مشابه APKها هستند، روشهای تأیید شرح داده شده در صفحه تأیید APKهای گوگل در اینجا نیز اعمال میشوند. میتوانید از روشهای موجود در آنجا برای تأیید ادعاهای مطرح شده در مدل مدعی استفاده کنید.