5 votos

Verificación de la firma de una ROM (personalizada)

Las ROMs de Android y también las ROMs personalizadas de Android suelen estar firmadas criptográficamente.

La mayoría de los usuarios sólo reconocerán esto si intentan instalar una ROM y la verificación de la firma en el dispositivo falla.

Para verificar la autenticidad de una ROM puede tener sentido verificar la firma fuera de línea, antes de instalar la ROM y, por ejemplo, comparar el certificado de firma utilizado si es el esperado, por ejemplo, si la ROM es una ROM genuina construida por LineageOS.

¿Qué comando hay que ejecutar para verificar la firma de una ROM (por ejemplo, si se tiene el archivo ZIP) en un PC?

4voto

Jack Wade Puntos 231

Para verificar la firma de un archivo ZIP de ROM en un PC, se necesitan dos cosas:

  • La clave pública del creador de la ROM (puede extraerse de /system/etc/security/otacerts.zip si el creador es el mismo, por ejemplo, en el caso de la actualización de la ROM de stock).
  • Una herramienta para extraer el certificado del comentario (pie de página) del archivo ZIP y verificar su clave de firma con la clave pública del desarrollador de la ROM.

Hay múltiples herramientas disponibles para realizar el segundo paso, incluyendo la que proporcionado oficialmente por LineageOS :

update_verifier.py <pubkey> /path/to/zip_file

DETALLES

Tenía una vaga noción de que los archivos ZIP de las ROMs personalizadas contienen el Bloque de firmas JAR (que también es el caso de Esquema de firma APK v1 ). Por lo tanto, la norma jarsigner -verify podría utilizarse para verificar la integridad de un archivo JAR/ZIP autofirmado (que no ha sido templado desde su creación), aunque no la autenticidad de la fuente (que requiere el certificado root, como es el caso de AVB).

Pero una mirada más profunda en el código fuente de TWRP indica que está utilizando el mismo mecanismo de verificación de la firma utilizado en la recuperación de existencias para la verificación de archivos ZIP OTA (código fuente aquí ), es decir, verificar la autoridad del creador del archivo ZIP con las claves públicas preconfiguradas almacenadas en /res/keys/ . signapk.jar se utiliza en el momento de la compilación para firmar ambos APKs ( apksigner se llama) y los archivos ZIP OTA. La misma herramienta añade el "firmado por SignApk" mensaje que ha observado en el archivo ZIP.

Así que el /res/keys/ El directorio en recuperación debe contener las claves públicas de todos los creadores de ROMs para verificar sus archivos ZIP, lo que no parece práctico. La recuperación de stock contiene sólo la(s) clave(s) pública(s) del OEM, mientras que la recuperación personalizada probablemente contiene claves de prueba del SDK oficial. Y es por eso que a menudo nos enfrentamos al infame "Falló la verificación de la firma ZIP" mensaje para las ROMs y otros archivos ZIP flasheables.

En los dispositivos que no son A/B, el paquete OTA (si no es descargado manualmente por el usuario) es también verificado antes de iniciar el modo de recuperación. En este caso, las claves preconstruidas de otacerts.zip se utilizan para la verificación (código fuente aquí ). Pero con las actualizaciones A/B la recuperación no tiene nada que ver ( /res/keys/ ya no existe desde Android 10) y el paquete podría no ser verificado ni siquiera una vez (si se hace "Actualizaciones en streaming" Algunos detalles más en esta respuesta ).

Así que, teniendo en cuenta estos puntos, el mecanismo de verificación utilizado en la recuperación no parece tener mucha importancia. Para verificar la autenticidad de una ROM, lo mejor sería simplemente hacer una verificación de la suma de comprobación del archivo descargado si es posible, como LineageOS proporciona hashes SHA256 con sus archivos ZIP descargables.

1 votos

Gracias por su extensa respuesta. Al escribir la pregunta tenía en mente, por ejemplo, verificar una ROM original de LineageOS descargada no desde LineageOS (por ejemplo, porque la descarga ya ha sido eliminada). Ahora verificar una ROM de este tipo es fácil. También es bueno saber que el propio archivo ZIP está firmado, lo que significa que después de la instalación la ROM completa ya no puede ser verificada (por el bootloader o por un humano).

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X