Página de detalles técnicos de transparencia binaria de Pixel

El Registro de transparencia binaria de Pixel usa la tecnología de registro de transparencia.

La utilidad de los registros de transparencia está comprobada con Certificado de transparencia, una que requiere que las autoridades certificadoras publiquen los certificados que a los registros públicos de Transparencia de certificados. Este proceso redujo significativamente la emisión de certificados errónea, lo que aumenta la seguridad del a Internet. Muchos operadores de registros del Certificado de transparencia dependen de una implementación de registros de transparencia que se encuentran en transparency.dev.

Los registros de transparencia se implementan con los árboles Merkle. En esta página, se supone que el conocimientos sobre los árboles Merkle y la transparencia binaria. Consulta Estructuras de datos verificables para obtener una descripción general de los árboles Merkle y la página de destino para obtener una descripción general de los objetos binarios para mantener la transparencia de la organización.

Implementación de registros

El registro de transparencia binaria de Pixel se implementa como Árbol Merkle basado en mosaicos. La raíz del contenido de mosaicos se entrega en https://developers.google.com/android/binary_transparency/tile. Nota: Este es no una página web normal; las entradas de registro contenidas en sus subdirectorios deben se leerán de forma programática con Golang SumDB biblioteca TLog y no a través de un navegador.

Consulta Registrar contenido para ver un descripción de lo que contienen las entradas.

El hash de raíz del árbol de Merkle de un registro, contenido en un punto de control, se entrega en https://developers.google.com/android/binary_transparency/checkpoint.txt. Se presenta en el formato de punto de control. Las hojas de este árbol Merkle se muestran en https://developers.google.com/android/binary_transparency/image_info.txt. La firma del punto de control se puede verificar con la siguiente clave pública:

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

El proceso de verificación lee el punto de control y los mosaicos que contiene las entradas del registro.

Proceso de verificación

Se implementa un registro de transparencia con un árbol de Merkle compuesto por hashes. R nodo de hoja contiene datos, y un nodo superior contiene el hash de sus elementos secundarios.

Se realizan dos cálculos en el árbol de Merkle para verificar la manipulación evidente Propiedad de los registros de transparencia: la prueba de inclusión y la de coherencia. El primero demuestra que el registro incluye una entrada que corresponde a la versión de una imagen es decir, La entrada de registro incluye los Resumen de VBMeta, un hash que representa las imágenes de SO, que se pueden mostrar desde un dispositivo. El la segunda prueba que cuando se agregan nuevas entradas al árbol, el nuevo punto de control coherentes con la versión anterior del árbol.

Para verificar la imagen de tu Pixel, realiza la prueba de inclusión. Realizar el el cálculo de la prueba de coherencia es opcional, ya que los terceros al hacerlo.

Si quieres familiarizarte con los conceptos de verificación en Pixel Transparencia binaria, puedes seguir las instrucciones que aparecen a continuación para usar la imagen que se ejecuta en tu dispositivo Pixel. Si quieres ejecutar el firmware de Pixel con la versión grado de confianza, consulta el proceso de verificación en Verificación completa de transparencia binaria de Pixel.

Requisitos previos

Asegúrate de que las siguientes dependencias estén disponibles:

  • Golang: La herramienta de verificación debe compilarse con Go 1.17 o una versión posterior, y estar disponible. en el sitio de Go.
  • Android Debug Bridge (adb): Se comunica con un dispositivo Android para inspeccionar. la imagen, disponible en la Sitio web de las herramientas de la plataforma del SDK de Android
  • Verificador de prueba de inclusión: Se conecta con el registro para verificar que el dispositivo Pixel está en el registro de transparencia binaria.
# Source code for the inclusion proof verifier is found at avb/tools/transparency/verify
git clone https://android.googlesource.com/platform/external/avb

Prueba de inclusión

Un propietario de Pixel puede verificar que su imagen esté en el registro extrayendo primero metadatos relevantes y, luego, compara su hash raíz recalculado con el hash raíz contenidos en la punto de control publicado. Si coinciden, el propietario del Pixel puede contar con algunas protecciones. se ejemplifican en el Modelo de Amenazas.

Para comprobar que la imagen de un dispositivo Pixel está en el registro de transparencia, sigue estos pasos: conectarte al dispositivo con adb. Luego, ejecuta los siguientes 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

La primera estrofa recupera los metadatos de un dispositivo Pixel en el formato de entrada de registro y la guarda en /tmp/log_payload.txt.

La segunda estrofa ejecuta el verificador de pruebas de inclusión publicado en la Repositorio de inicio verificado de Android. Esta herramienta calcula el hash de la entrada de registro candidata, recupera el otro hash necesarios para volver a calcular el punto de control desde el registro y lo compara con el punto de control publicado por el registro.

El resultado del comando se escribe en stdout:

  • OK si la imagen se incluye en el registro
  • Es FAILURE si no lo es.

Prueba de coherencia (opcional)

Dado que Google lanza versiones nuevas de la imagen de fábrica del Pixel periódicamente, el del registro de transparencia crece continuamente. Un testigo comprueba que el árbol crece de forma consistente con sus hojas anteriores. El testigo lleva un registro hash de raíz de árbol y calcula el siguiente hash de raíz de candidato solicitando el nuevo hash de hojas del árbol. Para que un registro de transparencia sea manipulado, debe se verifiquen de forma continua para garantizar la coherencia.

El comportamiento de solo agregar del registro de transparencia se verifica activamente en terceros terceros y, por lo tanto, la mayoría de los usuarios no necesitan hacerlo por su cuenta, pero es posible para que cualquiera supervise la coherencia del registro. Google publicó un sitio web de código abierto la implementación de un testigo en esta Repositorio de GitHub. Es necesario usa el configuración específica del registro de Transparencia Binaria (PixelBT) de Pixel.