Passar para o conteúdo principal

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

Atualizado hoje

Este artigo irá guiá-lo pelo 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 é uma Soma de verificação?

Uma soma de verificação é um método para verificar a integridade dos dados. Ela calcula uma sequência alfanumérica de comprimento fixo a partir de um arquivo, que pode então ser usada para confirmar se o arquivo foi alterado.


⚠️ Observações importantes

  • O chip do Secure Element dentro de 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á "Unofficial Firmware" na inicialização.

  • 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 computador usando um cabo USB.

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

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


Passo 2: Recuperar 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 corresponda ao seu dispositivo e faça o download do arquivo .bin na seção 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 seguinte script como split_firmware.sh (para macOS/Linux):

#!/bin/bash

if [ $# -ne 1 ]; then
echo "Uso: $0 <arquivo_binario>"
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 "Formato de arquivo desconhecido"
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 "Divisão concluída com sucesso: firmware.bin e se.bin extraídos."
else
echo "Existem dados extras, mas o cabeçalho do segundo arquivo não é 'TF89'. Apenas firmware.bin foi extraído."
fi
else
echo "Sem dados extras, apenas firmware.bin foi extraído."
fi

Execute o script:

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

Após a execução, você obterá 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 coincidirem, isso significa que seu firmware é idêntico ao código open-source publicado no GitHub.


✅ Por que isso é importante

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

  • Junto com a verificação multi-assinatura integrada ao Secure Element, isso garante a integridade e a segurança do firmware da sua carteira de hardware.

Respondeu à sua pergunta?