5 votes

Vérification de la signature d'une ROM (personnalisée)

Les ROMs Android et les ROMs personnalisées Android sont généralement signées de manière cryptographique.

La plupart des utilisateurs ne s'en rendront compte que s'ils essaient d'installer une ROM et que la vérification de la signature sur l'appareil échoue.

Pour vérifier l'authenticité d'une ROM, il peut être utile de vérifier la signature hors ligne, avant d'installer la ROM et par exemple de comparer le certificat de signature utilisé s'il est celui attendu, par exemple si la ROM est une ROM authentique construite par LineageOS.

Quelle commande devez-vous exécuter pour vérifier la signature d'une ROM (par exemple si vous avez le fichier ZIP) sur un PC ?

4voto

Irfan Latif Points 16863

Afin de vérifier la signature d'un fichier ROM ZIP sur un PC, deux choses sont nécessaires :

  • La clé publique du créateur de la ROM (peut être extraite à partir de /system/etc/security/otacerts.zip si le créateur est le même, par exemple en cas de mise à jour d'une ROM stock).
  • Un outil pour extraire le certificat du commentaire (pied de page) du fichier ZIP et vérifier sa clé de signature par rapport à la clé publique du développeur de la ROM.

Il existe de nombreux outils permettant d'effectuer la deuxième étape, dont celui qui suit. officiellement fourni par LineageOS :

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

DÉTAILS

J'avais une vague idée que les fichiers ZIP des ROMs personnalisées contenaient le code standard de la ROM. Bloc de signatures JAR (ce qui est également le cas avec Schéma de signature APK v1 ). Ainsi, la norme jarsigner -verify pourrait être utilisée pour vérifier l'intégrité d'un fichier JAR/ZIP auto-signé (qu'il n'a pas été altéré depuis sa création), mais pas l'authenticité de la source (qui nécessite le certificat racine, comme c'est le cas avec AVB).

Mais un examen plus approfondi du code source de TWRP indique qu'il utilise le même mécanisme de vérification des signatures utilisé dans la récupération de stock pour la vérification du fichier ZIP OTA (code source aquí ), c'est-à-dire la vérification de l'autorité du créateur du fichier ZIP à l'aide de clés publiques préconstruites stockées dans le fichier /res/keys/ . signapk.jar est utilisé au moment de la compilation pour signer les deux APK ( apksigner est appelé) et les fichiers ZIP OTA. Le même outil ajoute le "signé par SignApk" que vous avez remarqué dans le fichier ZIP.

Ainsi, le /res/keys/ dans le répertoire de récupération doit contenir les clés publiques de tous les créateurs de ROM afin de vérifier leurs fichiers ZIP, ce qui ne semble pas pratique. La restauration d'origine ne contient que la ou les clés publiques de l'équipementier, tandis que la restauration personnalisée contient très probablement les clés de test du SDK officiel. Et c'est pourquoi nous sommes souvent confrontés à l'infâme "La vérification de la signature ZIP a échoué" pour les ROMs et autres fichiers ZIP flashables.

Sur les appareils non-A/B, le paquet OTA (s'il n'est pas téléchargé manuellement par l'utilisateur) est le suivant également vérifié avant de démarrer en mode de récupération. Dans ce cas, les clés préconstruites de otacerts.zip sont utilisés pour la vérification (code source aquí ). Mais avec les mises à jour A/B, la récupération n'intervient pas du tout ( /res/keys/ n'existe plus depuis Android 10) et le paquet peut ne pas être vérifié même une fois (si l'on fait "mises à jour en continu" Pour plus de détails, voir cette réponse ).

En gardant ces points à l'esprit, le mécanisme de vérification utilisé dans la récupération ne semble pas avoir une grande importance. Afin de vérifier l'authenticité d'une ROM, le mieux serait de simplement faire une vérification de la somme de contrôle du fichier téléchargé si possible, comme LineageOS fournit des hachages SHA256 avec leurs fichiers ZIP téléchargeables.

1 votes

Merci pour votre réponse détaillée. En écrivant la question, j'avais par exemple à l'esprit de vérifier une ROM LineageOS originale téléchargée hors de LineageOS (par exemple parce que le téléchargement a déjà été supprimé). Il est maintenant facile de vérifier une telle ROM. Il est également bon de savoir que le fichier ZIP lui-même est signé, ce qui signifie qu'après l'installation la ROM complète ne peut plus être vérifiée (par le bootloader ou par un humain).

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X