บทความนี้จะแนะนำคุณตลอดกระบวนการยืนยันว่าเฟิร์มแวร์ที่ติดตั้งอยู่บนฮาร์ดแวร์วอลเล็ต OneKey Pro ของคุณตรงกับเฟิร์มแวร์โอเพนซอร์สที่เผยแพร่บน GitHub ของ OneKey อย่างเป็นทางการหรือไม่ ด้วยการเปรียบเทียบ SHA-256 Checksum คุณสามารถมั่นใจได้ว่าเฟิร์มแวร์มาจากแหล่งที่เชื่อถือได้และรับประกันความปลอดภัยของอุปกรณ์ของคุณ
Checksum คืออะไร?
Checksum เป็นวิธีการตรวจสอบความสมบูรณ์ของข้อมูล โดยจะคำนวณลำดับตัวอักษรและตัวเลขที่มีความยาวคงที่จากไฟล์ ซึ่งสามารถนำไปใช้เพื่อยืนยันว่าไฟล์นั้นถูกแก้ไขหรือไม่
⚠️ หมายเหตุสำคัญ
ชิป Secure Element ภายในฮาร์ดแวร์วอลเล็ต OneKey ทุกเครื่องได้รับการโหลดล่วงหน้าที่โรงงานด้วยการยืนยัน Multi-Signature อย่างเป็นทางการ
หากอุปกรณ์ถูกแฟลชด้วยเฟิร์มแวร์ที่ไม่เป็นทางการ อุปกรณ์จะแสดง "Unofficial Firmware" เมื่อเริ่มต้นระบบ
บทความนี้ให้ขั้นตอนเพิ่มเติมเพื่อยืนยันว่าเฟิร์มแวร์ปัจจุบันตรงกับเวอร์ชันที่เผยแพร่บน GitHub อย่างแน่นอน
กระบวนการยืนยัน
ขั้นตอนที่ 1: ดาวน์โหลดและติดตั้งเฟิร์มแวร์อย่างเป็นทางการล่าสุด
เชื่อมต่อฮาร์ดแวร์วอลเล็ต OneKey ของคุณเข้ากับคอมพิวเตอร์โดยใช้สาย USB
เว็บไซต์จะตรวจจับข้อมูลอุปกรณ์ของคุณโดยอัตโนมัติ จากนั้นคุณสามารถเลือกและติดตั้งเฟิร์มแวร์ล่าสุดได้
ทำตามคำแนะนำบนหน้าจอและยืนยันการติดตั้งบนฮาร์ดแวร์วอลเล็ตของคุณ
ขั้นตอนที่ 2: ดึง Checksum ของเฟิร์มแวร์อุปกรณ์
บนฮาร์ดแวร์วอลเล็ตของคุณ ไปที่ System Settings → About Device
ในส่วนข้อมูลเฟิร์มแวร์ คุณจะเห็นเวอร์ชันเฟิร์มแวร์และ Checksum ของเฟิร์มแวร์
ตัวอย่าง:
4.9.0[fccbac8-5ff2c88]fccbac8→ ID เวอร์ชันเฟิร์มแวร์5ff2c88→ เจ็ดอักขระแรกของ Checksum เฟิร์มแวร์
ขั้นตอนที่ 3: คำนวณ Checksum เฟิร์มแวร์จาก GitHub
ค้นหาเวอร์ชันเฟิร์มแวร์ที่ตรงกับอุปกรณ์ของคุณ และดาวน์โหลดไฟล์
.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 ที่ยาวออกมา เช่น:
abcdef1234567890-
นำ เจ็ดอักขระแรก เช่น abcdef1
ขั้นตอนที่ 4: เปรียบเทียบผลลัพธ์
เปรียบเทียบ เจ็ดอักขระแรกของ Checksum ที่คำนวณได้ กับ Checksum ที่แสดงบนอุปกรณ์ของคุณ
หากตรงกัน แสดงว่าเฟิร์มแวร์ของคุณเหมือนกับโค้ดโอเพนซอร์สที่เผยแพร่บน GitHub
✅ ทำไมสิ่งนี้จึงสำคัญ
คุณสามารถมั่นใจได้ว่าอุปกรณ์ของคุณกำลังรันเฟิร์มแวร์ที่สร้างขึ้นโดยตรงจากคลังโอเพนซอร์สอย่างเป็นทางการของ OneKey
ควบคู่ไปกับการยืนยัน Multi-Signature ในตัวของ Secure Element สิ่งนี้จะช่วยให้มั่นใจใน ความสมบูรณ์และความปลอดภัยของเฟิร์มแวร์ฮาร์ดแวร์วอลเล็ตของคุณ
