跳至主要內容

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 官方開源代碼構建的。

  • 配合設備安全芯片的多簽驗證,確保固件的完整性與安全性。

是否回答了您的問題?