Bỏ qua đến nội dung chính

Xác minh Firmware OneKey Pro với Mã nguồn mở

Đã cập nhật hôm nay

Bài viết này sẽ hướng dẫn bạn quy trình xác minh xem firmware được cài đặt trên ví phần cứng OneKey Pro của bạn có khớp với firmware mã nguồn mở được phát hành trên kho lưu trữ GitHub chính thức của OneKey hay không. Bằng cách so sánh Mã kiểm tra SHA-256, bạn có thể đảm bảo rằng firmware đến từ một nguồn đáng tin cậy và bảo mật cho thiết bị của mình.


Mã kiểm tra là gì?

Mã kiểm tra là một phương pháp để xác minh tính toàn vẹn của dữ liệu. Nó tính toán một chuỗi ký tự chữ và số có độ dài cố định từ một tệp, sau đó có thể được sử dụng để xác nhận xem tệp có bị thay đổi hay không.


⚠️ Lưu ý quan trọng

  • Chip phần tử bảo mật bên trong mọi ví phần cứng OneKey được tải sẵn tại nhà máy với tính năng xác minh đa chữ ký chính thức.

  • Nếu thiết bị được nạp firmware không chính thức, thiết bị sẽ hiển thị "Firmware không chính thức" khi khởi động.

  • Bài viết này cung cấp các bước bổ sung để xác nhận xem firmware hiện tại có khớp chính xác với phiên bản được phát hành trên GitHub hay không.


Quy trình xác minh

Bước 1: Tải xuống và cài đặt firmware chính thức mới nhất

  1. Kết nối ví phần cứng OneKey của bạn với máy tính bằng cáp USB.

  2. Trang web sẽ tự động phát hiện thông tin thiết bị của bạn. Sau đó, bạn có thể chọn và cài đặt firmware mới nhất.

  3. Làm theo hướng dẫn trên màn hình và xác nhận cài đặt trên ví phần cứng của bạn.


Bước 2: Lấy mã kiểm tra firmware của thiết bị

  1. Trên ví phần cứng của bạn, điều hướng đến Cài đặt hệ thống → Giới thiệu về thiết bị.

  2. Trong phần thông tin firmware, bạn sẽ thấy phiên bản firmware và Mã kiểm tra của nó.

    • Ví dụ: 4.9.0[fccbac8-5ff2c88]

      • fccbac8 → ID phiên bản firmware

      • 5ff2c88 → Bảy ký tự đầu tiên của Mã kiểm tra firmware


Bước 3: Tính toán mã kiểm tra firmware từ GitHub

  1. Tìm phiên bản firmware khớp với thiết bị của bạn và tải xuống tệp .bin trong phần Assets.

⚠️ Lưu ý: Tệp .bin chứa nhiều phần:

  • MCU (firmware bộ điều khiển chính)

  • Một hoặc nhiều firmware Phần tử Bảo mật (SE)

  • Thông tin chữ ký

Để xác minh, bạn chỉ cần trích xuất firmware MCU.


Trích xuất Firmware

Lưu tập lệnh sau thành split_firmware.sh (cho 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

Chạy tập lệnh:

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

Sau khi thực thi, bạn sẽ nhận được firmware.bin (nội dung firmware MCU).


Tính toán Mã kiểm tra

Chạy lệnh sau trong terminal của bạn:

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

Lệnh này sẽ xuất ra một mã hash SHA-256 dài, ví dụ:

abcdef1234567890-

Lấy bảy ký tự đầu tiên, ví dụ: abcdef1.


Bước 4: So sánh kết quả

  • So sánh bảy ký tự đầu tiên của Mã kiểm tra đã tính toán với Mã kiểm tra hiển thị trên thiết bị của bạn.

  • Nếu chúng khớp nhau, điều đó có nghĩa là firmware của bạn giống hệt với mã nguồn mở được phát hành trên GitHub.


✅ Tại sao điều này quan trọng

  • Bạn có thể chắc chắn rằng thiết bị của mình đang chạy firmware được xây dựng trực tiếp từ kho lưu trữ mã nguồn mở chính thức của OneKey.

  • Cùng với tính năng xác minh đa chữ ký tích hợp của phần tử bảo mật, điều này đảm bảo tính toàn vẹn và bảo mật của firmware ví phần cứng của bạn.

Nội dung này có giải đáp được câu hỏi của bạn không?