Passer au contenu principal

Vérifier la cohérence des fichiers de micrologiciel avec le code source ouvert publié par OneKey

Mis à jour aujourd’hui

Le portefeuille matériel OneKey est doté d'un micrologiciel entièrement open source. Vous pouvez consulter le code source ouvert du micrologiciel pour les produits concernés sur le dépôt GitHub de OneKey. Avant que les fichiers du micrologiciel destinés à la production de masse ne soient officiellement publiés, l'équipe OneKey utilise les outils d'automatisation de build de GitHub (GitHub CI) pour compiler et construire le code source du micrologiciel à partir des dépôts de micrologiciels respectifs. Les fichiers sont ensuite signés par l'équipe OneKey avant d'être officiellement publiés.

Cet article fournit une méthode d'auto-vérification, en comparant les sommes de contrôle des fichiers avant et après la signature multiple officielle de l'équipe, afin de vérifier la cohérence entre les fichiers du micrologiciel et le code source.

Pour connaître les méthodes de vérification de la cohérence des données source de différents fichiers à l'aide de la fonction de hachage cryptographique SHA-256 (comparaison des sommes de contrôle), consultez cet article.

Dépôts de micrologiciels open source

OneKey Pro

OneKey Classic 1S

OneKey Classic

OneKey Touch

OneKey Mini

Pour reproduire la publication du micrologiciel OneKey, suivez le tutoriel vidéo ci-dessous

Processus de publication du micrologiciel

Lorsque le micrologiciel standard officiel ou le micrologiciel Bluetooth est prêt à être publié, l'équipe OneKey exécutera l'action correspondante du dépôt pour compiler le code source. Après une compilation réussie, les fichiers sont téléchargés dans le stockage GitHub Artifacts, en attendant que l'équipe termine la signature multiple interne avant d'être placés sur le CDN de OneKey. Après la mise à jour du fichier config.json, les notifications de mise à jour sont diffusées via l'application OneKey et le site Web de mise à jour du micrologiciel OneKey, invitant les utilisateurs à mettre à jour leur micrologiciel. Reportez-vous au schéma ci-dessous pour le processus spécifique.

onekey github verifiy.png

Cibles

  1. Vérifier que le « Fichier de micrologiciel signé par l'équipe OneKey » est dérivé du « Fichier de micrologiciel pré-signé par GitHub CI » dans le dépôt open source OneKey.

  2. Vérifier la cohérence entre le « Fichier de micrologiciel signé par l'équipe OneKey » et le « Fichier de micrologiciel stocké sur le CDN officiel OneKey ».

Prérequis

Micrologiciel système Micrologiciel Bluetooth

✔ Télécharger le fichier de micrologiciel pré-signé par GitHub CI (non signé)

  • Accédez à la publication officielle du micrologiciel matériel OneKey sur GitHub : https://github.com/OneKeyHQ/firmware/releases

  • Trouvez la version du micrologiciel que vous souhaitez vérifier et cliquez sur le lien GitHub Action.

github action.png
  • Cliquez sur le nom du micrologiciel sous Artifacts pour télécharger (connexion à GitHub requise).

2.png

✔ Télécharger le fichier de micrologiciel signé par l'équipe OneKey (signé)

  • Accédez à la publication officielle du micrologiciel matériel OneKey sur GitHub : https://github.com/OneKeyHQ/firmware/releases

  • Trouvez la version du micrologiciel que vous souhaitez vérifier.

  • Cliquez pour télécharger le fichier .bin sous Assets.

github release bin.png

✔ Télécharger le fichier de micrologiciel signé par l'équipe OneKey, stocké sur le CDN officiel OneKey (signé)

  • Accédez au fichier CDN OneKey : https://data.onekey.so/config.json

  • Trouvez la version du micrologiciel que vous souhaitez vérifier.

  • Copiez le lien sous le champ "url".

  • Ouvrez dans une nouvelle fenêtre de navigateur pour un téléchargement automatique du fichier .bin.

3.png

✔ Télécharger le fichier de micrologiciel Bluetooth pré-signé par GitHub CI (non signé)

pro-bluetooth-firmware-github-ci.png
  • Cliquez sur le nom du micrologiciel sous Artifacts pour télécharger (connexion à GitHub requise).

pro-bluetooth-firmware-github-ci-bin.png

✔ Télécharger le fichier de micrologiciel Bluetooth signé par l'équipe OneKey (signé)

pro-bluetooth-firmware-github-release-signed.png

✔ Télécharger le fichier de micrologiciel Bluetooth, stocké sur le CDN officiel OneKey (signé)

  • Accédez au fichier CDN OneKey : https://data.onekey.so/config.json

  • Trouvez la version du micrologiciel que vous souhaitez vérifier.

  • Copiez le lien sous le champ "ble" - "webUpdate".

  • Ouvrez dans une nouvelle fenêtre de navigateur pour un téléchargement automatique du fichier .bin.

pro-ble-firmware-cdn.png

✔ Télécharger et installer Python

Étapes

Vous trouverez ci-dessous les étapes de vérification pour les deux cibles définies précédemment :

Micrologiciel système Micrologiciel Bluetooth

Processus de vérification avec le micrologiciel pré-signé par GitHub CI (système)

  • Ouvrez le terminal.

  • Exécutez la commande ci-dessous (Fichier de micrologiciel signé par l'équipe OneKey) :

    • tail -c +1024 /chemin/vers/(chemin du fichier) | shasum -a 256

  • Exécutez la commande ci-dessous (Fichier de micrologiciel pré-signé par GitHub CI) :

    • tail -c +1024 /chemin/vers/(chemin du fichier) | shasum -a 256

  • Comparez les sommes de contrôle générées par les deux commandes. Si les résultats correspondent, il peut être confirmé que le « Fichier de micrologiciel signé par l'équipe OneKey » est dérivé du « Fichier de micrologiciel pré-signé par GitHub CI » dans le dépôt open source OneKey.

7.png

Pour le micrologiciel système, un résultat de signature de 1024 octets est ajouté à la version CI du micrologiciel, qui est vérifié par le bootloader au démarrage de l'appareil.

Processus de vérification avec le fichier de micrologiciel stocké sur le CDN officiel OneKey (système)

  • Ouvrez le terminal.

  • Exécutez la commande ci-dessous (Fichier de micrologiciel signé par l'équipe OneKey) :

    • shasum -a 256 (chemin du fichier)

  • Exécutez la commande ci-dessous (Fichier de micrologiciel stocké sur le CDN officiel OneKey) :

    • shasum -a 256 (chemin du fichier)

  • Comparez les sommes de contrôle générées par les deux commandes. Si les résultats correspondent, la cohérence du code des deux fichiers de micrologiciel est confirmée.

6.png

Processus de vérification avec le micrologiciel pré-signé par GitHub CI (Bluetooth)

  • Trouvez le fichier ota.bin dans votre dossier de micrologiciel Bluetooth pré-signé par GitHub CI téléchargé.

  • Ouvrez un terminal dans le même dossier avec ota.bin.

  • Invoquez Python avec la commande : python3

  • Exécutez la commande ci-dessous pour obtenir la somme de contrôle du micrologiciel Bluetooth pré-signé par GitHub CI.

    • exec("""\nimport struct, hashlib\nwith open("ota.bin", mode="br") as f:\n f.seek(0x0C)\n codelen = struct.unpack("i", f.read(4))[0] - 512\n f.seek(0x600)\n print("".join(format(x, "02x") for x in hashlib.sha256(f.read(codelen)).digest()))\n""")

checksum-github-ci-ble.png
  • Exécutez la même commande avec le fichier de micrologiciel Bluetooth signé par l'équipe OneKey.

    • Remarque : veuillez remplacer ota.bin dans la commande par le nom du fichier de micrologiciel Bluetooth signé par l'équipe OneKey.

checksum-github-release.png
  • Comparez les sommes de contrôle générées par les deux commandes. Si les résultats correspondent, il peut être confirmé que le « Fichier de micrologiciel signé par l'équipe OneKey » est dérivé du « Fichier de micrologiciel pré-signé par GitHub CI » dans le dépôt open source OneKey.

Processus de vérification avec le fichier de micrologiciel stocké sur le CDN officiel OneKey (Bluetooth)

  • Ouvrez un terminal dans le même dossier avec le fichier de micrologiciel Bluetooth signé par l'équipe OneKey.

  • Invoquez Python avec la commande : python3

  • Copiez la commande ci-dessous :

    • exec("""\nimport struct, hashlib\nwith open("ota.bin", mode="br") as f:\n f.seek(0x0C)\n codelen = struct.unpack("i", f.read(4))[0] - 512\n f.seek(0x600)\n print("".join(format(x, "02x") for x in hashlib.sha256(f.read(codelen)).digest()))\n""")

  • Remplacez ota.bin par le nom de votre fichier de micrologiciel Bluetooth signé par l'équipe OneKey téléchargé.

  • Exécutez la commande pour obtenir la somme de contrôle.

  • Répétez les étapes ci-dessus avec votre fichier de micrologiciel Bluetooth stocké sur le CDN officiel OneKey téléchargé.

  • Comparez les sommes de contrôle générées par les deux commandes. Si les résultats correspondent, la cohérence du code des deux fichiers de micrologiciel est confirmée.

compare-ble-checksum.png
Avez-vous trouvé la réponse à votre question ?