ฮาร์ดแวร์วอลเล็ต OneKey มีเฟิร์มแวร์โอเพนซอร์สเต็มรูปแบบ คุณสามารถดูซอร์สโค้ดเฟิร์มแวร์โอเพนซอร์สสำหรับผลิตภัณฑ์ที่เกี่ยวข้องได้ที่ GitHub repository ของ OneKey ก่อนที่ไฟล์เฟิร์มแวร์ที่ตั้งใจจะผลิตจำนวนมากจะได้รับการเผยแพร่อย่างเป็นทางการ ทีมงาน OneKey จะใช้เครื่องมือ GitHub's Build Automation (GitHub CI) เพื่อคอมไพล์และสร้างเฟิร์มแวร์ซอร์สโค้ดจากเฟิร์มแวร์ repository ที่เกี่ยวข้อง จากนั้นไฟล์จะถูกลงนามโดยทีมงาน OneKey ก่อนที่จะเผยแพร่อย่างเป็นทางการ
บทความนี้มีวิธีการตรวจสอบด้วยตนเอง โดยการเปรียบเทียบเช็คซัมของไฟล์ก่อนและหลังการลงนามแบบ multi-sig อย่างเป็นทางการของทีม เพื่อยืนยันความสอดคล้องระหว่างไฟล์เฟิร์มแวร์กับซอร์สโค้ด
สำหรับวิธีการตรวจสอบความสอดคล้องของข้อมูลซอร์สโค้ดของไฟล์ต่างๆ โดยใช้ฟังก์ชันแฮชการเข้ารหัส SHA-256 (การเปรียบเทียบ Checksums) โปรดดู บทความนี้
GitHub repositories ของเฟิร์มแวร์โอเพนซอร์ส (Open Source Firmware Repositories)
OneKey Pro
⚙ เฟิร์มแวร์ระบบ (System Firmware): github.com/OneKeyHQ/firmware-pro
เฟิร์มแวร์บลูทูธ (Bluetooth Firmware): github.com/OneKeyHQ/bluetooth-firmware-pro
OneKey Classic 1S
⚙ เฟิร์มแวร์ระบบ (System Firmware): github.com/OneKeyHQ/firmware-classic1s
เฟิร์มแวร์บลูทูธ (Bluetooth Firmware): github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Classic
⚙ เฟิร์มแวร์ระบบ (System Firmware): github.com/OneKeyHQ/firmware/tree/bixin_dev
เฟิร์มแวร์บลูทูธ (Bluetooth Firmware): github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Touch
⚙ เฟิร์มแวร์ระบบ (System Firmware): github.com/OneKeyHQ/firmware (branch: touch)
เฟิร์มแวร์บลูทูธ (Bluetooth Firmware): github.com/OneKeyHQ/bluetooth-firmware-touch
OneKey Mini
⚙ เฟิร์มแวร์ระบบ (System Firmware): github.com/OneKeyHQ/firmware/tree/mini
หากต้องการทำซ้ำการเผยแพร่เฟิร์มแวร์ของ OneKey โปรดทำตามวิดีโอสอนด้านล่าง
กระบวนการเผยแพร่เฟิร์มแวร์ (Firmware Release Process)
เมื่อเฟิร์มแวร์มาตรฐานอย่างเป็นทางการหรือเฟิร์มแวร์บลูทูธพร้อมสำหรับการเผยแพร่ ทีมงาน OneKey จะดำเนินการ Action ของ repository ที่เกี่ยวข้องเพื่อคอมไพล์ซอร์สโค้ด หลังจากคอมไพล์สำเร็จ ไฟล์จะถูกอัปโหลดไปยัง GitHub Artifacts storage เพื่อรอให้ทีมงานดำเนินการ multi-sig ภายในให้เสร็จสิ้นก่อนที่จะนำไปไว้บน CDN ของ OneKey หลังจากอัปเดตไฟล์ config.json การแจ้งเตือนการอัปเดตจะถูกส่งผ่านแอป OneKey และ เว็บไซต์อัปเดตเฟิร์มแวร์ของ OneKey เพื่อแจ้งให้ผู้ใช้ทำการอัปเกรดเฟิร์มแวร์ โปรดดูแผนภาพด้านล่างสำหรับกระบวนการเฉพาะ
เป้าหมาย (Targets)
ยืนยันว่า "ไฟล์เฟิร์มแวร์ที่ลงนามโดยทีม OneKey" (OneKey Team Signed Firmware File) ได้มาจาก "ไฟล์เฟิร์มแวร์ที่ลงนามล่วงหน้าโดย GitHub CI" (GitHub CI Pre-Signed Firmware File) ใน repository โอเพนซอร์สของ OneKey
ตรวจสอบความสอดคล้องระหว่าง "ไฟล์เฟิร์มแวร์ที่ลงนามโดยทีม OneKey" (OneKey Team Signed Firmware File) และ "ไฟล์เฟิร์มแวร์ที่จัดเก็บใน OneKey Official CDN" (OneKey Official CDN Stored Firmware File)
สิ่งที่ต้องมี (Prerequisites)
เฟิร์มแวร์ระบบ (System Firmware) เฟิร์มแวร์บลูทูธ (Bluetooth Firmware)
✔ ดาวน์โหลดไฟล์เฟิร์มแวร์ที่ลงนามล่วงหน้าโดย GitHub CI (ยังไม่ได้ลงนาม) (Download GitHub CI Pre-Signed Firmware File (Unsigned))
ไปที่หน้า GitHub Release ของเฟิร์มแวร์ฮาร์ดแวร์ OneKey อย่างเป็นทางการ: https://github.com/OneKeyHQ/firmware/releases
ค้นหาเวอร์ชันเฟิร์มแวร์ที่คุณต้องการตรวจสอบและคลิกลิงก์ GitHub Action
คลิกที่ชื่อเฟิร์มแวร์ภายใต้ Artifacts เพื่อดาวน์โหลด (ต้องเข้าสู่ระบบ GitHub)
✔ ดาวน์โหลดไฟล์เฟิร์มแวร์ที่ลงนามโดยทีม OneKey (ลงนามแล้ว) (Download OneKey Team Signed Firmware File (Signed))
ไปที่หน้า GitHub Release ของเฟิร์มแวร์ฮาร์ดแวร์ OneKey อย่างเป็นทางการ: https://github.com/OneKeyHQ/firmware/releases
ค้นหาเวอร์ชันเฟิร์มแวร์ที่คุณต้องการตรวจสอบ
คลิกเพื่อดาวน์โหลดไฟล์ bin ภายใต้ Assets
✔ ดาวน์โหลดไฟล์เฟิร์มแวร์ที่จัดเก็บใน OneKey Official CDN (ลงนามแล้ว) (Download OneKey Official CDN Stored Firmware File (Signed))
ไปที่ไฟล์ OneKey CDN: https://data.onekey.so/config.json
ค้นหาเวอร์ชันเฟิร์มแวร์ที่คุณต้องการตรวจสอบ
คัดลอกลิงก์ภายใต้ฟิลด์ "url"
เปิดในหน้าต่างเบราว์เซอร์ใหม่เพื่อดาวน์โหลดไฟล์ bin โดยอัตโนมัติ
✔ ดาวน์โหลดไฟล์เฟิร์มแวร์บลูทูธที่ลงนามล่วงหน้าโดย GitHub CI (ยังไม่ได้ลงนาม) (Download GitHub CI Pre-Signed Bluetooth Firmware File (Unsigned))
ไปที่หน้า GitHub Release ของเฟิร์มแวร์บลูทูธ OneKey อย่างเป็นทางการ
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
ค้นหาเวอร์ชันเฟิร์มแวร์ที่คุณต้องการตรวจสอบและคลิกลิงก์ GitHub Action
คลิกที่ชื่อเฟิร์มแวร์ภายใต้ Artifacts เพื่อดาวน์โหลด (ต้องเข้าสู่ระบบ GitHub)
✔ ดาวน์โหลดไฟล์เฟิร์มแวร์บลูทูธที่ลงนามโดยทีม OneKey (ลงนามแล้ว) (Download OneKey Team Signed Bluetooth Firmware File (Signed))
ไปที่หน้า GitHub Release ของเฟิร์มแวร์บลูทูธ OneKey อย่างเป็นทางการ
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
ค้นหาเวอร์ชันเฟิร์มแวร์ที่คุณต้องการตรวจสอบ
คลิกเพื่อดาวน์โหลดไฟล์ bin ภายใต้ Assets
✔ ดาวน์โหลดไฟล์เฟิร์มแวร์บลูทูธที่จัดเก็บใน OneKey Official CDN (ลงนามแล้ว) (Download OneKey Official CDN Stored Bluetooth Firmware File (Signed))
ไปที่ไฟล์ OneKey CDN: https://data.onekey.so/config.json
ค้นหาเวอร์ชันเฟิร์มแวร์ที่คุณต้องการตรวจสอบ
คัดลอกลิงก์ภายใต้ฟิลด์ "ble" - "webUpdate"
เปิดในหน้าต่างเบราว์เซอร์ใหม่เพื่อดาวน์โหลดไฟล์ bin โดยอัตโนมัติ
✔ ดาวน์โหลดและติดตั้ง Python (Download and Install Python)
ดาวน์โหลดและติดตั้ง Python เวอร์ชันล่าสุด
ขั้นตอน (Steps)
ด้านล่างนี้คือขั้นตอนการตรวจสอบสำหรับเป้าหมายสองประการที่ตั้งไว้ก่อนหน้านี้:
เฟิร์มแวร์ระบบ (System Firmware) เฟิร์มแวร์บลูทูธ (Bluetooth Firmware)
กระบวนการตรวจสอบด้วยเฟิร์มแวร์ที่ลงนามล่วงหน้าโดย GitHub CI (ระบบ) (Verification Process with GitHub CI pre-signed firmware (System))
เปิด Terminal
รันคำสั่งด้านล่าง (ไฟล์เฟิร์มแวร์ที่ลงนามโดยทีม OneKey):
tail -c +1024 /path/to/(file path) | shasum -a 256
รันคำสั่งด้านล่าง (ไฟล์เฟิร์มแวร์ที่ลงนามล่วงหน้าโดย GitHub CI):
tail -c +1024 /path/to/(file path) | shasum -a 256
เปรียบเทียบ Checksums ที่สร้างขึ้นจากสองคำสั่ง หากผลลัพธ์ตรงกัน สามารถยืนยันได้ว่า "ไฟล์เฟิร์มแวร์ที่ลงนามโดยทีม OneKey" ได้มาจาก "ไฟล์เฟิร์มแวร์ที่ลงนามล่วงหน้าโดย GitHub CI" ใน repository โอเพนซอร์สของ OneKey
สำหรับเฟิร์มแวร์ระบบ มีการเพิ่มผลลัพธ์การลงนาม 1024 ไบต์ให้กับเวอร์ชัน CI ของเฟิร์มแวร์ ซึ่งจะถูกตรวจสอบโดย bootloader เมื่ออุปกรณ์เริ่มต้นทำงาน
กระบวนการตรวจสอบด้วยไฟล์เฟิร์มแวร์ที่จัดเก็บใน OneKey Official CDN (ระบบ) (Verification Process with OneKey Official CDN Stored Firmware File (System))
เปิด Terminal
รันคำสั่งด้านล่าง (ไฟล์เฟิร์มแวร์ที่ลงนามโดยทีม OneKey):
shasum -a 256 (file path)
รันคำสั่งด้านล่าง (ไฟล์เฟิร์มแวร์ที่จัดเก็บใน OneKey Official CDN):
shasum -a 256 (file path)
เปรียบเทียบ Checksums ที่สร้างขึ้นจากสองคำสั่ง หากผลลัพธ์ตรงกัน จะยืนยันความสอดคล้องของโค้ดระหว่างไฟล์เฟิร์มแวร์ทั้งสองได้
กระบวนการตรวจสอบด้วยเฟิร์มแวร์ที่ลงนามล่วงหน้าโดย GitHub CI (บลูทูธ) (Verification Process with GitHub CI pre-signed firmware (Bluetooth))
ค้นหาไฟล์ ota.bin ในโฟลเดอร์เฟิร์มแวร์บลูทูธที่ลงนามล่วงหน้าโดย GitHub CI ที่คุณดาวน์โหลด
เปิด terminal ในโฟลเดอร์เดียวกันกับ ota.bin
เรียกใช้ Python ด้วยคำสั่ง: python3
รันคำสั่งด้านล่างเพื่อรับ checksum ของเฟิร์มแวร์บลูทูธที่ลงนามล่วงหน้าโดย GitHub CI:
exec("""\nimport struct, hashlib\nwith open("ota.bin", mode="br") as f:\n f.seek(0x0C)\n codelen = struct.unpack("i", f.read(4))[0] - 512\n f.seek(0x600)\n print("".join(format(x, "02x") for x in hashlib.sha256(f.read(codelen)).digest()))\n""")
รันคำสั่งเดียวกันกับไฟล์เฟิร์มแวร์บลูทูธที่ลงนามโดยทีม OneKey
หมายเหตุ: โปรดเปลี่ยน ota.bin ในคำสั่งเป็นชื่อไฟล์เฟิร์มแวร์บลูทูธที่ลงนามโดยทีม OneKey
เปรียบเทียบ Checksums ที่สร้างขึ้นจากสองคำสั่ง หากผลลัพธ์ตรงกัน สามารถยืนยันได้ว่า "ไฟล์เฟิร์มแวร์ที่ลงนามโดยทีม OneKey" ได้มาจาก "ไฟล์เฟิร์มแวร์ที่ลงนามล่วงหน้าโดย GitHub CI" ใน repository โอเพนซอร์สของ OneKey
กระบวนการตรวจสอบด้วยไฟล์เฟิร์มแวร์ที่จัดเก็บใน OneKey Official CDN (บลูทูธ) (Verification Process with OneKey Official CDN Stored Firmware File (Bluetooth))
เปิด terminal ในโฟลเดอร์เดียวกันกับไฟล์เฟิร์มแวร์บลูทูธที่ลงนามโดยทีม OneKey
เรียกใช้ Python ด้วยคำสั่ง: python3
คัดลอกคำสั่งด้านล่าง:
exec("""\nimport struct, hashlib\nwith open("ota.bin", mode="br") as f:\n f.seek(0x0C)\n codelen = struct.unpack("i", f.read(4))[0] - 512\n f.seek(0x600)\n print("".join(format(x, "02x") for x in hashlib.sha256(f.read(codelen)).digest()))\n""")
เปลี่ยน ota.bin เป็นชื่อไฟล์เฟิร์มแวร์บลูทูธที่ลงนามโดยทีม OneKey ที่คุณดาวน์โหลด
รันคำสั่งเพื่อรับ checksum
ทำซ้ำขั้นตอนข้างต้นกับไฟล์เฟิร์มแวร์บลูทูธที่จัดเก็บใน OneKey Official CDN ที่คุณดาวน์โหลด
เปรียบเทียบ Checksums ที่สร้างขึ้นจากสองคำสั่ง หากผลลัพธ์ตรงกัน จะยืนยันความสอดคล้องของโค้ดระหว่างไฟล์เฟิร์มแวร์ทั้งสองได้
