ข้ามไปที่เนื้อหาหลัก

การตรวจสอบเฟิร์มแวร์ OneKey Pro ด้วยโค้ดโอเพนซอร์ส

อัปเดตแล้ววันนี้

บทความนี้จะแนะนำคุณเกี่ยวกับกระบวนการตรวจสอบว่าเฟิร์มแวร์ที่ติดตั้งบนฮาร์ดแวร์วอลเล็ต OneKey Pro ของคุณตรงกับเฟิร์มแวร์โอเพนซอร์สที่เผยแพร่บน GitHub ของ OneKey หรือไม่ โดยการเปรียบเทียบ SHA-256 Checksum คุณสามารถรับรองได้ว่าเฟิร์มแวร์มาจากแหล่งที่เชื่อถือได้และรับประกันความปลอดภัยของอุปกรณ์ของคุณ


Checksum คืออะไร?

Checksum เป็นวิธีการตรวจสอบความสมบูรณ์ของข้อมูล โดยคำนวณลำดับตัวอักษรและตัวเลขที่มีความยาวคงที่จากไฟล์ ซึ่งสามารถใช้เพื่อยืนยันว่าไฟล์นั้นถูกดัดแปลงหรือไม่


⚠️ หมายเหตุสำคัญ

  • ชิป Secure Element ภายในฮาร์ดแวร์วอลเล็ต OneKey ทุกเครื่องถูกโหลดไว้ล่วงหน้าจากโรงงานด้วยการยืนยันแบบ Multi-signature อย่างเป็นทางการ

  • หากอุปกรณ์ถูกแฟลชด้วยเฟิร์มแวร์ที่ไม่เป็นทางการ อุปกรณ์จะแสดง "Unofficial Firmware" เมื่อเริ่มต้นทำงาน

  • บทความนี้ให้ขั้นตอนเพิ่มเติมเพื่อยืนยันว่าเฟิร์มแวร์ปัจจุบันตรงกับเวอร์ชันที่เผยแพร่บน GitHub อย่างแน่นอนหรือไม่


กระบวนการตรวจสอบ

ขั้นตอนที่ 1: ดาวน์โหลดและติดตั้งเฟิร์มแวร์อย่างเป็นทางการล่าสุด

  1. เชื่อมต่อฮาร์ดแวร์วอลเล็ต OneKey ของคุณกับคอมพิวเตอร์โดยใช้สาย USB

  2. เว็บไซต์จะตรวจจับข้อมูลอุปกรณ์ของคุณโดยอัตโนมัติ จากนั้นคุณสามารถเลือกและติดตั้งเฟิร์มแวร์ล่าสุดได้

  3. ทำตามคำแนะนำบนหน้าจอและยืนยันการติดตั้งบนฮาร์ดแวร์วอลเล็ตของคุณ


ขั้นตอนที่ 2: ดึง Checksum ของเฟิร์มแวร์อุปกรณ์

  1. บนฮาร์ดแวร์วอลเล็ตของคุณ ให้ไปที่ System Settings → About Device

  2. ในส่วนข้อมูลเฟิร์มแวร์ คุณจะเห็นเวอร์ชันเฟิร์มแวร์และ Checksum

    • ตัวอย่าง: 4.9.0[fccbac8-5ff2c88]

      • fccbac8 → ID เวอร์ชันเฟิร์มแวร์

      • 5ff2c88 → เจ็ดอักขระแรกของ Checksum เฟิร์มแวร์


ขั้นตอนที่ 3: คำนวณ Checksum ของเฟิร์มแวร์จาก GitHub

  1. ค้นหาเวอร์ชันเฟิร์มแวร์ที่ตรงกับอุปกรณ์ของคุณ และดาวน์โหลดไฟล์ .bin ภายใต้ Assets

⚠️ หมายเหตุ: ไฟล์ .bin ประกอบด้วยหลายส่วน:

  • MCU (เฟิร์มแวร์ตัวควบคุมหลัก)

  • เฟิร์มแวร์ Secure Element (SE) หนึ่งส่วนหรือมากกว่า

  • ข้อมูลลายเซ็น

สำหรับการตรวจสอบ คุณจำเป็นต้องแยกเฉพาะ เฟิร์มแวร์ MCU เท่านั้น


การแยกเฟิร์มแวร์

บันทึกสคริปต์ต่อไปนี้เป็น 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 (ส่วนเนื้อหาเฟิร์มแวร์ MCU)


คำนวณ Checksum

เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัลของคุณ:

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

นี่จะแสดงผล SHA-256 hash ที่ยาวออกมา เช่น:

abcdef1234567890-

นำ เจ็ดอักขระแรก เช่น abcdef1


ขั้นตอนที่ 4: เปรียบเทียบผลลัพธ์

  • เปรียบเทียบ เจ็ดอักขระแรกของ Checksum ที่คำนวณได้ กับ Checksum ที่แสดงบนอุปกรณ์ของคุณ

  • หากตรงกัน แสดงว่าเฟิร์มแวร์ของคุณเหมือนกับโค้ดโอเพนซอร์สที่เผยแพร่บน GitHub


✅ ทำไมสิ่งนี้จึงสำคัญ

  • คุณสามารถมั่นใจได้ว่าอุปกรณ์ของคุณกำลังทำงานด้วยเฟิร์มแวร์ที่สร้างขึ้นโดยตรงจากคลังโค้ดโอเพนซอร์สอย่างเป็นทางการของ OneKey

  • ควบคู่ไปกับการยืนยันแบบ Multi-signature ที่มีอยู่ใน Secure Element สิ่งนี้จะช่วยให้มั่นใจใน ความสมบูรณ์และความปลอดภัยของเฟิร์มแวร์ฮาร์ดแวร์วอลเล็ตของคุณ

นี่ไม่ใช่คำตอบที่ต้องการใช่ไหม