La billetera de hardware OneKey presenta un firmware completamente de código abierto. Puedes consultar el código del firmware de código abierto para productos relevantes en el repositorio de GitHub de OneKey. Antes de que los archivos de firmware destinados a la producción en masa se publiquen oficialmente, el equipo de OneKey utiliza las herramientas de automatización de compilación de GitHub (GitHub CI) para compilar y construir el código fuente del firmware de los respectivos repositorios de firmware. Luego, los archivos son firmados por el equipo de OneKey antes de ser publicados oficialmente.
Este artículo proporciona un método de autoverificación, comparando las sumas de comprobación de los archivos antes y después de la firma múltiple oficial del equipo, para verificar la consistencia entre los archivos de firmware y el código fuente abierto.
Para conocer los métodos sobre cómo verificar la consistencia de los datos de origen de diferentes archivos utilizando la función hash criptográfica SHA-256 (comparando sumas de comprobación), consulta este artículo.
Repositorios de Firmware de Código Abierto
OneKey Pro
⚙ Firmware del sistema: github.com/OneKeyHQ/firmware-pro
Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-pro
OneKey Classic 1S
⚙ Firmware del sistema: github.com/OneKeyHQ/firmware-classic1s
Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Classic
⚙ Firmware del sistema: github.com/OneKeyHQ/firmware/tree/bixin_dev
Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Touch
⚙ Firmware del sistema: github.com/OneKeyHQ/firmware (rama: touch)
Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-touch
OneKey Mini
⚙ Firmware del sistema: github.com/OneKeyHQ/firmware/tree/mini
Para reproducir la versión de firmware de OneKey, sigue el tutorial en video a continuación.
Proceso de Lanzamiento del Firmware
Cuando el firmware estándar oficial o el firmware Bluetooth estén listos para su lanzamiento, el equipo de OneKey ejecutará la Acción del repositorio correspondiente para compilar el código abierto. Después de una compilación exitosa, los archivos se cargan en el almacenamiento de Artefactos de GitHub, esperando que el equipo complete la firma múltiple interna antes de colocarlos en la CDN de OneKey. Después de actualizar el archivo config.json, las notificaciones de actualización se envían a través de la aplicación OneKey y el sitio web de actualización de firmware de OneKey, lo que solicita a los usuarios que actualicen su firmware. Consulta el diagrama a continuación para ver el proceso específico.
Objetivos
Verificar que el "Archivo de Firmware Firmado por el Equipo OneKey" se deriva del "Archivo de Firmware Pre-firmado por GitHub CI" en el repositorio de código abierto de OneKey.
Verificar la consistencia entre el "Archivo de Firmware Firmado por el Equipo OneKey" y el "Archivo de Firmware Almacenado en la CDN Oficial de OneKey".
Prerrequisitos
Firmware del Sistema Firmware Bluetooth
✔ Descargar Archivo de Firmware Pre-firmado por GitHub CI (No Firmado)
Navega a la versión oficial de firmware de hardware de OneKey en GitHub: https://github.com/OneKeyHQ/firmware/releases
Encuentra la versión de firmware que deseas verificar y haz clic en el enlace de GitHub Action.
Haz clic en el nombre del firmware en Artefactos para descargarlo (se requiere iniciar sesión en GitHub).
✔ Descargar Archivo de Firmware Firmado por el Equipo OneKey (Firmado)
Navega a la versión oficial de firmware de hardware de OneKey en GitHub: https://github.com/OneKeyHQ/firmware/releases
Encuentra la versión de firmware que deseas verificar.
Haz clic para descargar el archivo bin bajo Assets.
✔ Descargar Archivo de Firmware Almacenado en la CDN Oficial de OneKey (Firmado)
Navega al archivo CDN de OneKey: https://data.onekey.so/config.json
Encuentra la versión de firmware que deseas verificar.
Copia el enlace bajo el campo "url".
Abre en una nueva ventana del navegador para descargar automáticamente el archivo bin.
✔ Descargar Archivo de Firmware Bluetooth Pre-firmado por GitHub CI (No Firmado)
Navega a la versión oficial de firmware Bluetooth de hardware de OneKey
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
Encuentra la versión de firmware que deseas verificar y haz clic en el enlace de GitHub Action.
Haz clic en el nombre del firmware en Artefactos para descargarlo (se requiere iniciar sesión en GitHub).
✔ Descargar Archivo de Firmware Bluetooth Firmado por el Equipo OneKey (Firmado)
Navega a la versión oficial de firmware Bluetooth de hardware de OneKey
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
Encuentra la versión de firmware que deseas verificar.
Haz clic para descargar el archivo bin bajo Assets.
✔ Descargar Archivo de Firmware Bluetooth Almacenado en la CDN Oficial de OneKey (Firmado)
Navega al archivo CDN de OneKey: https://data.onekey.so/config.json
Encuentra la versión de firmware que deseas verificar.
Copia el enlace bajo el campo "ble" - "webUpdate".
Abre en una nueva ventana del navegador para descargar automáticamente el archivo bin.
✔ Descargar e Instalar Python
Navega a: https://www.python.org/downloads/
Descarga e instala la última versión de Python.
Pasos
A continuación se detallan los pasos de verificación para los dos objetivos establecidos previamente:
Firmware del Sistema Firmware Bluetooth
Proceso de Verificación con firmware pre-firmado por GitHub CI (Sistema)
Abre la Terminal.
Ejecuta el siguiente comando (Archivo de Firmware Firmado por el Equipo OneKey):
tail -c +1024 /path/to/(ruta del archivo) | shasum -a 256
Ejecuta el siguiente comando (Archivo de Firmware Pre-firmado por GitHub CI):
tail -c +1024 /path/to/(ruta del archivo) | shasum -a 256
Compara las sumas de comprobación generadas por los dos comandos. Si los resultados coinciden, se puede confirmar que el "Archivo de Firmware Firmado por el Equipo OneKey" se deriva del "Archivo de Firmware Pre-firmado por GitHub CI" en el repositorio de código abierto de OneKey.
Para el firmware del sistema, se agrega un resultado de firma de 1024 bytes a la versión CI del firmware, que es verificado por el gestor de arranque al iniciar el dispositivo.
Proceso de Verificación con Archivo de Firmware Almacenado en la CDN Oficial de OneKey (Sistema)
Abre la Terminal.
Ejecuta el siguiente comando (Archivo de Firmware Firmado por el Equipo OneKey):
shasum -a 256 (ruta del archivo)
Ejecuta el siguiente comando (Archivo de Firmware Almacenado en la CDN Oficial de OneKey):
shasum -a 256 (ruta del archivo)
Compara las sumas de comprobación generadas por los dos comandos. Si los resultados coinciden, se confirma la consistencia del código de los dos archivos de firmware.
Proceso de Verificación con firmware pre-firmado por GitHub CI (Bluetooth)
Encuentra el archivo ota.bin en tu carpeta de firmware Bluetooth pre-firmado por GitHub CI descargada.
Abre una terminal en la misma carpeta que ota.bin.
Invoca Python con el comando: python3
Ejecuta el siguiente comando para obtener la suma de comprobación del firmware Bluetooth pre-firmado por 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""")
Ejecuta el mismo comando con el Archivo de Firmware Bluetooth Firmado por el Equipo OneKey.
Nota: por favor, cambia ota.bin en el comando al nombre del Archivo de Firmware Bluetooth Firmado por el Equipo OneKey.
Compara las sumas de comprobación generadas por los dos comandos. Si los resultados coinciden, se puede confirmar que el "Archivo de Firmware Firmado por el Equipo OneKey" se deriva del "Archivo de Firmware Pre-firmado por GitHub CI" en el repositorio de código abierto de OneKey.
Proceso de Verificación con Archivo de Firmware Almacenado en la CDN Oficial de OneKey (Bluetooth)
Abre una terminal en la misma carpeta con el Archivo de Firmware Bluetooth Firmado por el Equipo OneKey.
Invoca Python con el comando: python3
Copia el siguiente comando:
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""")
Cambia ota.bin al nombre de tu Archivo de Firmware Bluetooth Firmado por el Equipo OneKey descargado.
Ejecuta el comando para obtener la suma de comprobación.
Repite los pasos anteriores con tu Archivo de Firmware Bluetooth Almacenado en la CDN Oficial de OneKey descargado.
Compara las sumas de comprobación generadas por los dos comandos. Si los resultados coinciden, se confirma la consistencia del código de los dos archivos de firmware.
