Registro de transparencia del APK de los servicios del sistema de Google

El registro de transparencia del APK de los servicios del sistema de Google aprovecha la tecnología de registro de transparencia.

La utilidad de los registros de transparencia se demostró en proyectos como Pixel Binary Transparency y Certificate Transparency.

Los registros de transparencia se implementan con árboles Merkle. En esta página, se supone que tienes conocimientos generales sobre los árboles de Merkle y la transparencia binaria. Consulta Estructuras de datos verificables para obtener una descripción general de los árboles de Merkle y la página principal para obtener una descripción general del esfuerzo de transparencia binaria en Android.

Implementación de registros

El registro de transparencia del APK de los servicios del sistema de Google se implementa como un árbol Merkle basado en mosaicos. La raíz del contenido de la segmentación se entrega en https://developers.google.com/android/binary_transparency/google1p/tile/. Ten en cuenta que no se trata de una página web normal: las entradas de registro que se encuentran en sus subdirectorios se deben leer de forma programática con la biblioteca Tlog de SumDB de Golang y no a través de un navegador. Indicamos el vínculo aquí para mayor claridad.

Consulta Contenido del registro para obtener una descripción de lo que contiene cada entrada.

El hash raíz del árbol de Merkle de un registro, que se incluye en un punto de control, se entrega en https://developers.google.com/android/binary_transparency/google1p/checkpoint.txt en el formato de punto de control. Las hojas de este árbol de Merkle se publican en https://developers.google.com/android/binary_transparency/google1p/package_info.txt. La firma del punto de control se puede verificar con la clave pública que se describe en el siguiente certificado.

-----BEGIN CERTIFICATE-----
MIICPzCCAeWgAwIBAgIUAV4UWNut89Vj0EIwMTUlOYclCMMwCgYIKoZIzj0EAwIw
dDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1v
dW50YWluIFZpZXcxFDASBgNVBAoMC0dvb2dsZSBJbmMuMRAwDgYDVQQLDAdBbmRy
b2lkMRAwDgYDVQQDDAdBbmRyb2lkMCAXDTI0MDkyNTIzNTYwOVoYDzIwNTQwOTE4
MjM1NjA5WjB0MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQG
A1UEBwwNTW91bnRhaW4gVmlldzEUMBIGA1UECgwLR29vZ2xlIEluYy4xEDAOBgNV
BAsMB0FuZHJvaWQxEDAOBgNVBAMMB0FuZHJvaWQwWTATBgcqhkjOPQIBBggqhkjO
PQMBBwNCAASofcYuVig/lsWwIfwMfLk22mMltFDDd8k1IBNKajw6VdQynSh7XapH
Ace10/uT1ceUmwJinyOPR1Bpj431+18vo1MwUTAdBgNVHQ4EFgQUwHSDZ/iAB8Go
Rt1oDkVktxyizhYwHwYDVR0jBBgwFoAUwHSDZ/iAB8GoRt1oDkVktxyizhYwDwYD
VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAgNIADBFAiEAleFB+Arfv1KW0r6TbSEX
EfvBnJMPqRNAIVPd8LrVhw0CIAX56Txqs8H5XWdMoNF21w8Z0PmUNvLLtZtM+25O
wjq8
-----END CERTIFICATE-----

La misma clave pública también se puede encontrar en el bloque de claves públicas de PGP de Android Security en https://services.google.com/corporate/publickey.txt, identificada por CFAB31BE8DD7AC42FC721980ECA5C68599F17322 si prefieres PGP.

En la página de verificación, se describe con más detalle cómo se usan los distintos componentes del registro para verificar las afirmaciones realizadas en el Modelo de solicitante.

Una prueba de concepto no intencional

La entrada en el índice 39 de este registro es una entrada de prueba errónea. Su existencia continua es la garantía de la integridad de nuestro registro. No podemos borrarla, lo que demuestra que nadie puede ocultar entradas maliciosas. Consulta la página de fe de erratas para obtener detalles específicos.