Il log della trasparenza binaria di Pixel sfrutta la tecnologia dei log di trasparenza.
L'utilità dei log di trasparenza è stata dimostrata con Certificate Transparency, un servizio internet protocollo che richiede alle autorità di certificazione di pubblicare i certificati che ai log pubblici di Certificate Transparency. Questo processo ha notevolmente ridotto errori di emissione dei certificati, con conseguente aumento della sicurezza Internet. Molti operatori di log di Certificate Transparency si basano di log di trasparenza disponibili all'indirizzo transparency.dev.
I log di trasparenza sono implementati con alberi Merkle. Questa pagina presuppone che siano generali conoscenza degli alberi di Merkle e della trasparenza binaria. Consulta Strutture di dati verificabili per una panoramica degli alberi di Merkle e pagina di destinazione per una panoramica del codice binario e trasparenza.
Implementazione dei log
Il log della trasparenza binaria di Pixel è implementato come albero di Merkle basato su riquadri. La radice dei contenuti dei riquadri vengono pubblicati https://developers.google.com/android/binary_transparency/tile. Nota: non una normale pagina web; le voci di log contenute nelle sue sottodirectory devono essere letta in modo programmatico con Golang SumDB libreria TLog e non tramite una del browser.
Consulta Registra contenuti per descrizione di ciò che contengono le voci.
L'hash radice dell'albero Merkle di un log, contenuto in un checkpoint, viene pubblicato in https://developers.google.com/android/binary_transparency/checkpoint.txt. È presentato nel formato checkpoint. Le foglie di questo albero di Merkle sono pubblicate all'indirizzo https://developers.google.com/android/binary_transparency/image_info.txt. La firma del checkpoint può essere verificata con la seguente chiave pubblica:
-----BEGIN CERTIFICATE-----
MIICPDCCAeOgAwIBAgIVAPooxISw/nFF/dPwmCUaV36Z4s3hMAoGCCqGSM49BAMCMHQxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYD
VQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAgFw0y
MTA3MTkyMjQxNDFaGA8yMDUxMDcxOTIyNDE0MVowdDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC0dvb2dsZSBJbmMuMRAw
DgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQDEwdBbmRyb2lkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
QgAEU83uXNUiTYE53c2TfdWmqpW20bBXy4KEf5Ff8dV8GLKlVAXKHyjw3Lp9J3E0yCRJ/39XKeuA
AMF7KzSvhD248KNQME4wDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUHRpvuNkzjtBY213BWgUyWWHm
3VYwHwYDVR0jBBgwFoAUHRpvuNkzjtBY213BWgUyWWHm3VYwCgYIKoZIzj0EAwIDRwAwRAIgZsZb
CNBXRkCKLS+LG/41VWj1cTszt9QCdJQNuy7aT94CIDPgn7v5b1ykBVUTuLgRSofxAzHg9R4dg1oA
7tTFAuDg
-----END CERTIFICATE-----
La procedura di verifica legge il checkpoint e i riquadri contenente le voci di log del log.
Procedura di verifica
Viene implementato un log di trasparenza con un albero Merkle composto da hash. R foglia contiene dati, mentre un nodo padre contiene l'hash dei relativi figli.
Vengono eseguiti due calcoli sull'albero di Merkle per verificare la presenza di eventuali manomissioni proprietà dei log di trasparenza: la prova di inclusione e la prova di coerenza. La Il primo dimostra che il log include una voce corrispondente a una versione immagine, ossia. La voce di log include Sintesi VBMeta, un hash che rappresenta le immagini del sistema operativo, che possono essere restituite da un dispositivo. La Quest'ultima prova che quando vengono aggiunte nuove voci all'albero, il nuovo checkpoint viene coerente con la versione precedente dell'albero.
Per verificare l'immagine di Pixel, esegui la prova di inclusione. L'esecuzione il calcolo della prova di coerenza è facoltativo perché le terze parti in questo modo.
Se vuoi familiarizzare con i concetti della verifica su Pixel Trasparenza binaria, puoi seguire le istruzioni riportate di seguito per utilizzare l'immagine in esecuzione sul tuo Pixel. Se vuoi eseguire il firmware Pixel con il grado di affidabilità, consulta la procedura di verifica su Verifica completa di Binary Transparency per Pixel.
Prerequisiti
Assicurati che siano disponibili le seguenti dipendenze:
- Golang: lo strumento di verifica deve essere creato con Go 1.17 o versioni successive, disponibile dal sito di Go.
- Android Debug Bridge (adb): comunica con un dispositivo Android per l'ispezione l'immagine, disponibile nel Sito web di Android SDK Platform Tools.
- Strumento di verifica della prova di inclusione: si interfaccia con il log per controllare che lo smartphone Pixel l'immagine è nel log della trasparenza binaria.
# Source code for the inclusion proof verifier is found at avb/tools/transparency/verify
git clone https://android.googlesource.com/platform/external/avb
Prova di inclusione
Un proprietario di Pixel può verificare che la propria immagine sia nel log estraendo prima i metadati pertinenti, confrontando l'hash radice ricalcolato con l'hash radice contenuti nei checkpoint pubblicato. Se corrispondono, il proprietario di Pixel può avere la certezza di alcune protezioni esemplificato nel Modello di minaccia.
Per verificare che l'immagine su un dispositivo Pixel sia presente nel log della trasparenza: connettersi al dispositivo tramite ADB, quindi esegui questi comandi:
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
La prima stanza recupera i metadati da un dispositivo Pixel nel formato
voce di log e la salva in /tmp/log_payload.txt.
La seconda stanza esegue lo strumento di verifica dell'inclusione pubblicato Repository di Avvio verificato di Android. Questo strumento calcola l'hash della voce di log candidata, recupera l'altra gli hash necessari per ricalcolare il checkpoint dal log e confrontarlo con al checkpoint pubblicato dal log.
L'output del comando viene scritto su stdout:
OKse l'immagine è inclusa nel log,FAILUREse non lo è.
Prova di coerenza (facoltativo)
Dal momento che Google rilascia periodicamente nuove versioni dell'immagine di fabbrica di Pixel, il e trasparenza del log è in continua crescita. Un testimone controlla che l'albero cresce in modo coerente con le foglie precedenti. Il testimone tiene traccia l'hash radice dell'albero e calcola il successivo hash radice candidato richiedendo il nuovo gli hash di foglie dall'albero. Affinché un log di trasparenza sia evidente a livello di manomissione, deve per verificarne la coerenza.
Il comportamento di sola aggiunta del log di trasparenza viene verificato attivamente parti e quindi la maggior parte degli utenti non deve farlo autonomamente, ma è possibile per consentire a chiunque di monitorare la coerenza del log. Google ha pubblicato uno script open source di una testimonianza Repository GitHub. È necessario utilizza la di configurazione specifiche del log Binary Transparency (PixelBT) di Pixel.