Para aumentar la confianza en las apps y los productos de Google, nos comprometemos a incluir todos los paquetes de productos de Google en nuestro registro de transparencia. Publicamos el registro de transparencia para verificar públicamente las afirmaciones que hacemos con respecto a estos paquetes (APKs y APEXs).
Modelo de amenazas
Los sistemas de transparencia se pueden usar para detectar y, por lo tanto, disuadir los ataques a la cadena de suministro. Ilustramos esto con algunos ejemplos.
Supongamos que un atacante modifica de forma maliciosa una app de Google o un producto de Google y, además, logra firmarlo con la clave de firma que se usa para la distribución a través de Google Play. Con un registro de transparencia binario, cualquier persona que reciba un paquete cuestionable (APK o APEX) puede usarlo como una fuente adicional verificable de verdad fundamental para verificar la autenticidad del paquete. Descubrirá que Google no agregó los metadatos del paquete correspondiente al registro y sabrá que no debe confiar en el paquete vulnerado.
Dado que la publicación en el registro es un proceso independiente del proceso de lanzamiento con firma (como se ilustra en el diagrama del ecosistema), esto eleva el nivel de exigencia para el atacante más allá de solo vulnerar la clave.
Si bien también planeamos integrar este registro en una red pública de testigos mediante un protocolo de testigo estándar, recomendamos a las partes externas e independientes que supervisen la integridad de este registro disponible públicamente. Estas partes pueden dar fe de la propiedad de solo agregar del registro y denunciar cualquier manipulación.
La existencia de un sistema de transparencia de este tipo y la capacidad de descubrimiento adicional de ataques desalientan la actividad maliciosa. Si un paquete se vulnera, pero los usuarios solo confían en los que están en el registro, el paquete vulnerado debería exponerse públicamente. Esto aumenta la probabilidad de descubrir que existe el paquete vulnerado y se pueden tomar medidas para quitar su distribución.
Modelo de solicitante
El modelo de solicitante es un framework que se usa para definir roles y artefactos en un sistema verificable. En el caso de la transparencia de la aplicación de productos de Google, la afirmación que hacemos es que el hash de un archivo de paquete registrado en este registro representa una versión específica de un producto oficial de Google destinado al consumo público.
- ClaimGoogleApp: (Yo, Google, afirmo que
$hashAppes para$googleApp), donde:$hashAppes un hash criptográfico (p.ej., SHA256) del archivo de paquete (incluidos los paquetes de APK y APEX divididos) de una versión específica de$googleApp.$googleAppes un paquete de Android (APK o APEX) que compone una app o un producto que Google crea y distribuye.
Cualquier persona que tenga una copia de $googleApp puede verificar esta afirmación,
y describimos este proceso con todo detalle en la
página de verificación.
Contenido del registro
Cuando Google lanza una versión nueva de un paquete de APK o APEX, agrega una entrada correspondiente al registro de transparencia de la aplicación de productos de Google.
Cada entrada de este registro contiene cuatro elementos de metadatos:
- El hash del archivo APK o APEX de un paquete firmado por Google. Es una cadena hexadecimal del resumen SHA256 de todo el archivo.
- La descripción del tipo del hash anterior. Es una cadena.
- El nombre del paquete. Es una cadena.
- El número de versión (versionCode) del paquete. Es un número entero distinto de cero.
El formato de una entrada de registro es la concatenación de los cuatro elementos de información con un carácter de línea nueva (\n), como se ilustra a continuación:
hash\nhash_description\npackage_name\npackage_version\n
Dado que un producto de Google se puede distribuir como un archivo APK o APEX, la descripción del hash se establece en SHA256(APK) o SHA256(APEX). Esto proporciona una cobertura integral del contenido de cada archivo y facilita a los usuarios obtener esta medición.
Diagrama del ecosistema
