Página de detalhes técnicos da transparência binária do Pixel

O registro de transparência binária do Pixel aproveita a tecnologia de registro de transparência.

A utilidade dos registros de transparência tem sido comprovada A Transparência dos certificados, protocolo que exige que as autoridades certificadoras publiquem os certificados que para registros públicos da Transparência dos certificados. Esse processo reduziu bastante a emissão errada de certificados, aumentando assim a segurança do Internet. Muitos operadores de registro da Transparência dos certificados dependem de uma implementação de registros de transparência em transparency.dev (em inglês).

Os registros de transparência são implementados com árvores da Merkle. Nesta página, presume-se que conhecimento sobre árvores Merkle e transparência binária. Consulte Estruturas de dados verificáveis para ter uma visão geral das árvores de Merkle e da página de destino para uma visão geral dos binários transparência

Implementação de registros

O registro de transparência binária do Pixel é implementado como um árvore do Merkle baseada em bloco. A raiz do conteúdo do bloco são exibidos https://developers.google.com/android/binary_transparency/tile. Observação: este é não em uma página da Web comum. as entradas de registro contidas nos subdiretórios precisam ser lido programaticamente com o aplicativo Golang SumDB biblioteca TLog e não por uma navegador.

Consulte Conteúdo do registro para descrição do que as entradas contêm.

O hash raiz da árvore Merkle de um registro, contido em um checkpoint, é disponibilizado em https://developers.google.com/android/binary_transparency/checkpoint.txt. Ele é apresentado no formato formato de checkpoint. As folhas dessa árvore de Merkle estão disponíveis em https://developers.google.com/android/binary_transparency/image_info.txt. A assinatura do checkpoint pode ser verificada com a seguinte chave pública:

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

O processo de verificação lê o checkpoint e os blocos. que contém as entradas de registro do registro.

Processo de verificação

Um registro de transparência é implementado com uma árvore Merkle composta de hashes. Um um nó de folha contém dados, e um nó pai contém o hash de seus filhos.

Dois cálculos são executados na árvore de Merkle para verificar se estão invioláveis. dos registros de transparência: as provas de inclusão e consistência. A anterior prova que o registro inclui uma entrada correspondente a uma versão de imagem, ou seja, A entrada de registro inclui Resumo do VBMeta, Um hash que representa as imagens do SO, que podem ser retornadas de um dispositivo. A último prova que, quando novas entradas são adicionadas à árvore, o novo checkpoint consistentes com a versão anterior da árvore.

Para verificar a imagem do Pixel, faça a prova de inclusão. Realizar o cálculo da prova de consistência é opcional, porque terceiros usam continuamente fazer isso.

Se você quiser se familiarizar com os conceitos de verificação no Pixel Transparência binária. Siga as instruções abaixo para usar a imagem em execução no dispositivo Pixel. Se você quiser executar o firmware do Pixel com a versão mais alta grau de confiança, consulte o processo de verificação em Verificação completa da transparência binária do Pixel

Pré-requisitos

Verifique se as seguintes dependências estão disponíveis:

  • Golang: a ferramenta de verificação precisa ser criada com o Go 1.17 ou posterior, disponível no site Go.
  • Android Debug Bridge (adb): se comunica com um dispositivo Android para inspecionar da imagem, disponível Site das Ferramentas da plataforma do SDK do Android.
  • Verificador à prova de inclusão: interfaces com o registro para verificar se o Pixel está no registro de transparência binária.
# Source code for the inclusion proof verifier is found at avb/tools/transparency/verify
git clone https://android.googlesource.com/platform/external/avb

Comprovante de inclusão

Para verificar se a imagem está no registro, o proprietário do Pixel extrai primeiro os metadados relevantes e, em seguida, comparando o hash raiz recalculado com o hash raiz contidas no checkpoint publicado. Se forem iguais, o proprietário do Pixel terá algumas proteções exemplificados no Modelo de ameaça.

Para verificar se a imagem em um dispositivo Pixel está no registro de transparência, Conecte-se ao dispositivo usando o adb. execute os seguintes comandos:

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

A primeira estrofe recupera os metadados de um dispositivo Pixel no formato de um entrada de registro e a salva em /tmp/log_payload.txt.

A segunda estrofe executa o verificador de prova de inclusão publicado na Repositório de Inicialização verificada do Android. Essa ferramenta calcula o hash da entrada de registro candidata, recupera o outro os hashes necessários para recalcular o checkpoint do registro e o compara com o checkpoint publicado pelo registro.

A saída do comando é gravada em stdout:

  • OK se a imagem estiver incluída no registro.
  • FAILURE, se não for.

Comprovação de consistência (opcional)

Como o Google lança periodicamente novas versões da imagem de fábrica do Pixel, a de transparência de dados está em constante crescimento. Uma testemunha verifica se a árvore cresce de forma consistente com as folhas anteriores. A testemunha monitora e calcula o próximo hash raiz candidato ao solicitar a nova hashes de folhas da árvore. Para que um registro de transparência seja inviolável, ele precisa ser verificada continuamente quanto à consistência.

O comportamento somente de anexação do registro de transparência é verificado ativamente por terceiros partes e, portanto, a maioria dos usuários não precisa fazer isso sozinho, mas é possível monitorar a consistência dos registros. o Google publicou um modelo implementação de uma testemunha Repositório do GitHub: É necessário use o método configuração específico do registro do Pixel Binary Transparency (PixelBT).