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
⚙ Micrologiciel système : github.com/OneKeyHQ/firmware-pro
Micrologiciel Bluetooth : github.com/OneKeyHQ/bluetooth-firmware-pro
OneKey Classic 1S
⚙ Micrologiciel système : github.com/OneKeyHQ/firmware-classic1s
Micrologiciel Bluetooth : github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Classic
⚙ Micrologiciel système : github.com/OneKeyHQ/firmware/tree/bixin_dev
Micrologiciel Bluetooth : github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Touch
⚙ Micrologiciel système : github.com/OneKeyHQ/firmware (branche : touch)
Micrologiciel Bluetooth : github.com/OneKeyHQ/bluetooth-firmware-touch
OneKey Mini
⚙ Micrologiciel système : github.com/OneKeyHQ/firmware/tree/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.
Cibles
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.
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.
Cliquez sur le nom du micrologiciel sous Artifacts pour télécharger (connexion à GitHub requise).
✔ 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.
✔ 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.
✔ Télécharger le fichier de micrologiciel Bluetooth pré-signé par GitHub CI (non signé)
Accédez à la publication officielle du micrologiciel Bluetooth OneKey sur GitHub
OneKey Classic & Classic 1S : https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
Trouvez la version du micrologiciel que vous souhaitez vérifier et cliquez sur le lien GitHub Action.
Cliquez sur le nom du micrologiciel sous Artifacts pour télécharger (connexion à GitHub requise).
✔ Télécharger le fichier de micrologiciel Bluetooth signé par l'équipe OneKey (signé)
Accédez à la publication officielle du micrologiciel Bluetooth OneKey sur GitHub
OneKey Classic & Classic 1S : https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
Trouvez la version du micrologiciel que vous souhaitez vérifier.
Cliquez pour télécharger le fichier .bin sous Assets.
✔ 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.
✔ Télécharger et installer Python
Accédez à : https://www.python.org/downloads/
Téléchargez et installez la dernière version de 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.
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.
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""")
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.
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.
