Ir para conteúdo principal

Verificando o firmware OneKey Pro com código-fonte aberto

Este artigo irá guiá-lo no processo de verificação de que o firmware instalado na sua carteira de hardware OneKey Pro corresponde ao firmware de código aberto publicado no repositório oficial da OneKey no GitHub. Ao comparar o Checksum SHA-256, você pode garantir que o firmware provém de uma fonte confiável e assegurar a segurança do seu dispositivo.


O que é um Checksum?

Um checksum é um método de verificação da integridade dos dados. Ele calcula uma sequência alfanumérica de comprimento fixo a partir de um arquivo, que pode ser usada para confirmar se o arquivo foi alterado.


⚠️ Observações importantes

  • O chip do elemento seguro em cada carteira de hardware OneKey é pré-carregado na fábrica com verificação oficial de múltiplas assinaturas.

  • Se o dispositivo for gravado com firmware não oficial, o dispositivo exibirá "Firmware não oficial" ao iniciar.

  • Este artigo fornece etapas adicionais para confirmar se o firmware atual corresponde exatamente à versão publicada no GitHub.


Processo de verificação

Passo 1: Baixar e instalar o firmware oficial mais recente

  1. Conecte sua carteira de hardware OneKey ao seu computador usando um cabo USB.

  2. O site detectará automaticamente as informações do seu dispositivo. Você pode então selecionar e instalar o firmware mais recente.

  3. Siga as instruções na tela e confirme a instalação na sua carteira de hardware.


Passo 2: Obter o checksum do firmware do dispositivo

  1. No seu dispositivo, navegue até Configurações do sistema → Sobre o dispositivo.

  2. Na seção de informações do firmware, você verá a versão do firmware e seu checksum.

    • Exemplo: 4.9.0[fccbac8-5ff2c88]

      • fccbac8 → ID da versão do firmware

      • 5ff2c88 → primeiros sete caracteres do checksum do firmware


Passo 3: Calcular o checksum do firmware a partir do GitHub

  1. Localize a versão do firmware que corresponde ao seu dispositivo e baixe o arquivo .bin em Assets.

⚠️ Observação: O arquivo .bin contém várias partes:

  • MCU (firmware do controlador principal)

  • Um ou mais firmwares do Secure Element (SE)

  • Informações de assinatura

Para verificação, você precisa extrair apenas o firmware MCU.


Extraindo o firmware

Salve o script a seguir como split_firmware.sh (para macOS/Linux):

#!/bin/bash

if [ $# -ne 1 ]; then
echo "Usage: $0 <binary_file>"
exit 1
fi

INPUT_FILE="$1"


TOTAL_FILE_SIZE=$(stat -f %z "$INPUT_FILE")

MAGIC=$(dd if="$INPUT_FILE" bs=1 count=4 2>/dev/null)

calculate_total_size() {
local offset=$1
local size_bytes=$(dd if="$INPUT_FILE" bs=1 skip="$offset" count=4 2>/dev/null | od -An -tu4)
echo $((size_bytes + 1024))
}

if [[ "$MAGIC" == "TRZF" ]]; then
TOTAL_SIZE=$(calculate_total_size 12)
elif [[ "$MAGIC" == "OKTV" ]]; then
HEAD1_SIZE=$(dd if="$INPUT_FILE" bs=1 skip=4 count=4 2>/dev/null | od -An -tu4)
HEAD1_SIZE=$(echo $HEAD1_SIZE)
FILE_SIZE_BYTES=$(dd if="$INPUT_FILE" bs=1 skip=$((HEAD1_SIZE + 12)) count=4 2>/dev/null | od -An -tu4)
TOTAL_SIZE=$((HEAD1_SIZE + 1024 + FILE_SIZE_BYTES))
else
echo "Unknown file format"
exit 1
fi

dd if="$INPUT_FILE" bs=1 count="$TOTAL_SIZE" of=firmware.bin 2>/dev/null

REMAINING_SIZE=$((TOTAL_FILE_SIZE - TOTAL_SIZE))
if [ $REMAINING_SIZE -gt 0 ]; then
SECOND_HEADER=$(dd if="$INPUT_FILE" bs=1 skip="$TOTAL_SIZE" count=4 2>/dev/null)
if [[ "$SECOND_HEADER" == "TF89" ]]; then
dd if="$INPUT_FILE" bs=1 skip="$TOTAL_SIZE" of=se.bin 2>/dev/null
echo "Split successfully: firmware.bin and se.bin extracted."
else
echo "Extra data exists but second file header is not 'TF89'. Only firmware.bin is extracted."
fi
else
echo "No extra data, only firmware.bin extracted."
fi

Execute o script:

chmod +x split_firmware.sh ./split_firmware.sh onekey-firmware.bin

Após a execução, você obterá o arquivo firmware.bin (o corpo do firmware MCU).


Calcular o checksum

Execute o seguinte comando no seu terminal:

tail -c +2561 firmware.bin | shasum -a 256 -b

Isso exibirá um hash SHA-256 longo, por exemplo:

abcdef1234567890... -

Pegue os primeiros sete caracteres, por exemplo abcdef1.


Passo 4: Comparar os resultados

  • Compare os primeiros sete caracteres do checksum calculado com o checksum exibido no seu dispositivo.

  • Se corresponderem, isso significa que o seu firmware é idêntico ao código aberto publicado no GitHub.


✅ Por que isso importa

  • Você pode ter certeza de que seu dispositivo está executando um firmware compilado diretamente a partir do repositório oficial de código aberto da OneKey.

  • Juntamente com a verificação de múltiplas assinaturas incorporada ao elemento seguro, isso garante a integridade e a segurança do firmware da sua carteira de hardware.

Isto respondeu à sua pergunta?