跳转到主要内容

OneKey Pro 固件的开源代码验证

更新于昨天

本文将指导您如何验证 OneKey Pro 硬件钱包上安装的固件,确保它与 OneKey 官方 GitHub 仓库中发布的开源固件完全一致。通过 SHA-256 Checksum(校验和) 的比对,您可以确认固件来源可靠,保障设备安全。


什么是 Checksum?

Checksum(校验和)是一种数据完整性验证方法。它会对文件进行数学运算,生成一段固定长度的数字/字母组合,用来确认文件是否被篡改。


⚠️ 重要提示

  • OneKey 硬件钱包的安全芯片在出厂时已经烧录了官方的多签名。

  • 如果设备安装了非官方固件,开机时会提示 「非官方固件 (Unofficial Firmware)」

  • 本文流程是让您进一步确认当前固件是否与 GitHub 发布版本一致。


验证流程

步骤一:下载并安装最新官方固件

  1. 用 USB 连接您的 OneKey 硬件钱包。

  2. 网站会自动检测设备信息,您可以选择并安装最新固件。

  3. 按照提示完成安装,并在钱包设备上确认。


步骤二:获取设备固件的 Checksum

  1. 在硬件钱包上进入 系统设置 → 关于设备 (About Device)

  2. 在固件信息中可以看到版本号和 Checksum。

    • 示例:4.9.0[fccbac8-5ff2c88]

      • fccbac8 → 固件版本 ID

      • 5ff2c88 → 固件的 Checksum 前七位


步骤三:从 GitHub 计算固件 Checksum

  1. 找到与设备版本匹配的固件,下载 Assets 下的 .bin 文件。

    • 注意:这个 .bin 文件包含 主控固件 (MCU) + Secure Element(SE) + 签名信息

    • 为了验证,需要用脚本提取主控固件部分。

使用脚本分离固件

将下面脚本保存为 split_firmware.sh(适用于 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

执行方法:

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

执行后会生成 firmware.bin(主控固件本体)。

计算 Checksum

在终端运行:

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

输出结果是一串长长的 SHA-256 哈希值,例如:

abcdef1234567890... -

取其中的前七位,例如:abcdef1


步骤四:比对结果

  • 比较 GitHub 计算出的 Checksum 前七位设备上显示的 Checksum 前七位

  • 如果一致,说明设备固件与开源代码完全匹配,未被篡改。


✅ 验证成功的意义

  • 您可以确认当前设备运行的固件就是 OneKey 官方开源代码构建的。

  • 配合设备安全芯片的多签验证,确保固件的完整性与安全性。

这是否解答了您的问题?