Halaman Detail Teknis Transparansi Biner Pixel

Log Transparansi Biner Pixel memanfaatkan teknologi log transparansi.

Kegunaan log transparansi telah terbukti dengan Transparansi Sertifikat, internet protokol yang mengharuskan Certificate Authority untuk menerbitkan sertifikat yang mereka masalah ke log Transparansi Sertifikat publik. Proses ini telah banyak mengurangi kesalahan penerbitan sertifikat, sehingga meningkatkan keamanan Internet. Banyak operator log Transparansi Sertifikat bergantung pada penerapan log transparansi yang ada di transparency.dev.

Log transparansi diimplementasikan dengan hierarki Merkle. Halaman ini mengasumsikan pengetahuan tentang pohon Merkle dan transparansi biner. Lihat Struktur Data yang Dapat Diverifikasi untuk ringkasan pohon Merkle dan halaman landing untuk ringkasan tentang biner transparansi.

Penerapan Log

Log Transparansi Biner Pixel diterapkan sebagai pohon Merkle berbasis petak. Akar isi kotak ditampilkan di https://developers.google.com/android/binary_transparency/tile. Catatan: ini adalah bukan laman web biasa; entri log yang ada dalam subdirektorinya harus dibaca secara terprogram dengan Golang SumDB library TLog dan bukan melalui browser.

Lihat Log Konten untuk deskripsi dari apa yang ada dalam entri tersebut.

Hash root pohon Merkle dari sebuah log, yang terdapat dalam checkpoint, ditayangkan di https://developers.google.com/android/binary_transparency/checkpoint.txt. Materi ini disajikan dalam format checkpoint. Daun pohon Merkle ini ditampilkan di https://developers.google.com/android/binary_transparency/image_info.txt. Tanda tangan checkpoint dapat diverifikasi dengan kunci publik berikut:

-----BEGIN CERTIFICATE-----
MIICPDCCAeOgAwIBAgIVAPooxISw/nFF/dPwmCUaV36Z4s3hMAoGCCqGSM49BAMCMHQxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYD
VQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAgFw0y
MTA3MTkyMjQxNDFaGA8yMDUxMDcxOTIyNDE0MVowdDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC0dvb2dsZSBJbmMuMRAw
DgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQDEwdBbmRyb2lkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
QgAEU83uXNUiTYE53c2TfdWmqpW20bBXy4KEf5Ff8dV8GLKlVAXKHyjw3Lp9J3E0yCRJ/39XKeuA
AMF7KzSvhD248KNQME4wDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUHRpvuNkzjtBY213BWgUyWWHm
3VYwHwYDVR0jBBgwFoAUHRpvuNkzjtBY213BWgUyWWHm3VYwCgYIKoZIzj0EAwIDRwAwRAIgZsZb
CNBXRkCKLS+LG/41VWj1cTszt9QCdJQNuy7aT94CIDPgn7v5b1ykBVUTuLgRSofxAzHg9R4dg1oA
7tTFAuDg
-----END CERTIFICATE-----

Proses verifikasi akan membaca checkpoint dan kartu yang berisi entri log dari log.

Proses Verifikasi

Log transparansi diterapkan dengan pohon Merkle yang terdiri dari hash. J node leaf berisi data, dan node induk berisi {i>hash<i} turunannya.

Dua komputasi dilakukan pada pohon Merkle untuk memverifikasi properti log transparansi: bukti penyertaan dan bukti konsistensi. Tujuan yang pertama membuktikan bahwa log itu menyertakan entri yang sesuai dengan versi {i>image<i}, decoder tersebut. Entri log tersebut mencakup Ringkasan VBMeta, {i>hash<i} yang mewakili OS image, yang dapat dikembalikan dari suatu perangkat. Tujuan membuktikan bahwa ketika entri baru ditambahkan ke pohon, {i>checkpoint<i} baru konsisten dengan struktur hierarki sebelumnya.

Untuk memverifikasi gambar Pixel Anda, lakukan bukti penyertaan. Melakukan komputasi bukti konsistensi bersifat opsional, karena pihak ketiga terus-menerus melakukannya.

Jika Anda ingin memahami konsep verifikasi di Pixel Transparansi biner, Anda dapat mengikuti petunjuk di bawah ini untuk menggunakan image yang berjalan di perangkat Pixel. Jika Anda ingin menjalankan firmware Pixel dengan tingkat keyakinan Anda, melihat proses verifikasi di Verifikasi Penuh Transparansi Biner Pixel.

Prasyarat

Pastikan dependensi berikut tersedia:

  • Golang: Alat verifikasi harus dibuat dengan Go 1.17 atau yang lebih baru, tersedia dari situs Go.
  • Android Debug Bridge (adb): Berkomunikasi dengan perangkat Android untuk diperiksa gambar, yang tersedia di Situs Android SDK Platform Tools.
  • Pemverifikasi bukti penyertaan: Antarmuka dengan log untuk memeriksa bahwa Pixel image ini ada dalam log transparansi biner.
# Source code for the inclusion proof verifier is found at avb/tools/transparency/verify
git clone https://android.googlesource.com/platform/external/avb

Bukti Penyertaan

Pemilik Pixel dapat memeriksa apakah gambar mereka ada di log dengan mengekstrak terlebih dahulu metadata yang relevan, lalu membandingkan hash {i>root<i} yang telah dihitung ulang dengan {i>hash<i} root yang terdapat dalam checkpoint yang dipublikasikan. Jika keduanya cocok, pemilik Pixel dapat memperoleh jaminan perlindungan tertentu ditunjukkan dalam Model Ancaman.

Untuk memeriksa apakah gambar di perangkat Pixel ada di log transparansi, menghubungkan ke perangkat dengan adb, lalu jalankan perintah berikut:

FINGERPRINT=$(adb shell getprop ro.build.fingerprint)
VBMETA_DIGEST=$(adb shell getprop ro.boot.vbmeta.digest)
LOG_ENTRY="${FINGERPRINT}\n${VBMETA_DIGEST}\n"
PAYLOAD_PATH="/tmp/log_payload.txt"
echo -e $LOG_ENTRY >> $PAYLOAD_PATH

cd avb/tools/transparency/verify/
go build cmd/verifier/verifier.go
./verifier --payload_path=$PAYLOAD_PATH

Bait pertama mengambil metadata dari perangkat Pixel dalam format entri log, dan menyimpannya ke /tmp/log_payload.txt.

Bait kedua menjalankan pemverifikasi bukti penyertaan yang dipublikasikan dalam Repositori Booting Terverifikasi Android. Alat ini menghitung {i>hash <i}dari entri log kandidat, mengambil ID yang diperlukan untuk menghitung ulang {i>checkpoint<i} dari log, dan membandingkannya dengan {i>checkpoint<i} yang dipublikasikan oleh log.

Output perintah ditulis ke stdout:

  • OK jika gambar disertakan dalam log,
  • FAILURE jika bukan.

Bukti Konsistensi (Opsional)

Karena Google secara berkala merilis versi baru setelan pabrik Pixel, log transparansi terus berkembang. Saksi memeriksa apakah pohon itu telah tumbuh dengan cara yang konsisten dengan daun sebelumnya. Saksi melacak {i>hash root<i} pohon, dan menghitung {i>hash<i} kandidat berikutnya dengan meminta {i>hash <i}daun dari pohon. Agar log transparansi dapat dirusak, log itu harus untuk terus diperiksa konsistensinya.

Perilaku hanya-tambahan pada log transparansi diperiksa secara aktif oleh pihak pihak ketiga, sehingga sebagian besar pengguna tidak perlu melakukan ini sendiri, tetapi mungkin saja bagi siapa pun untuk memantau konsistensi log. Google telah memublikasikan penerapan saksi dalam Repo GitHub. Anda perlu gunakan konfigurasi khusus untuk log Pixel Binary Transparency (PixelBT).