Langkau ke kandungan utama

Sahkan Ketekalan Fail Firmware dengan kod sumber terbuka yang dikeluarkan oleh OneKey

Dikemas kini semalam

Dompet perkakasan OneKey menampilkan firmware sumber terbuka sepenuhnya. Anda boleh melihat kod sumber terbuka firmware untuk produk yang berkaitan di repositori GitHub OneKey. Sebelum fail firmware yang bertujuan untuk pengeluaran besar-besaran dikeluarkan secara rasmi, pasukan OneKey menggunakan alatan Automasi Bina GitHub (GitHub CI) untuk menyusun dan membina kod sumber firmware daripada repositori firmware masing-masing. Fail kemudiannya ditandatangani oleh pasukan OneKey sebelum dikeluarkan secara rasmi.

Artikel ini menyediakan kaedah pengesahan kendiri, dengan membandingkan checksum fail sebelum dan selepas multi-sig rasmi pasukan, untuk mengesahkan ketekalan antara fail firmware dan kod sumber terbuka.

Untuk kaedah cara mengesahkan ketekalan data sumber fail yang berbeza menggunakan fungsi hash kriptografi SHA-256 (membandingkan Checksums), rujuk artikel ini.

Repositori Firmware Sumber Terbuka

OneKey Pro

OneKey Classic 1S

OneKey Classic

OneKey Touch

OneKey Mini

Untuk menghasilkan semula keluaran firmware OneKey, ikut tutorial video di bawah

Proses Keluaran Firmware

Apabila firmware standard rasmi atau firmware Bluetooth sedia untuk dikeluarkan, pasukan OneKey akan melaksanakan Tindakan repositori yang sepadan untuk menyusun kod sumber. Selepas penyusunan berjaya, fail dimuat naik ke storan Artefak GitHub, menunggu pasukan melengkapkan multi-sig dalaman sebelum ditempatkan pada CDN OneKey. Selepas mengemas kini fail config.json, pemberitahuan kemas kini ditolak melalui Apl OneKey dan laman web kemas kini firmware OneKey, menggesa pengguna untuk menaik taraf firmware mereka. Rujuk rajah di bawah untuk proses khusus.

onekey github verifiy.png

Sasaran

  1. Sahkan bahawa "Fail Firmware Bertanda Tangan Pasukan OneKey" berasal daripada "Fail Firmware Bertanda Tangan CI GitHub" dalam repositori sumber terbuka OneKey.

  2. Sahkan ketekalan antara "Fail Firmware Bertanda Tangan Pasukan OneKey" dan "Fail Firmware Disimpan CDN Rasmi OneKey."

Prasyarat

Firmware Sistem Firmware Bluetooth

✔ Muat turun Fail Firmware Bertanda Tangan CI GitHub (Tidak Bertanda Tangan)

github action.png
  • Klik pada nama firmware di bawah Artefak untuk memuat turun (log masuk ke GitHub diperlukan).

2.png

✔ Muat turun Fail Firmware Bertanda Tangan Pasukan OneKey (Bertanda Tangan)

github release bin.png

✔ Muat turun Fail Firmware Disimpan CDN Rasmi OneKey (Bertanda Tangan)

  • Navigasi ke fail CDN OneKey: https://data.onekey.so/config.json

  • Cari versi firmware yang anda ingin sahkan.

  • Salin pautan di bawah medan "url".

  • Buka dalam tetingkap penyemak imbas baharu untuk muat turun automatik fail bin.

3.png

✔ Muat turun Fail Firmware Bluetooth Bertanda Tangan CI GitHub (Tidak Bertanda Tangan)

pro-bluetooth-firmware-github-ci.png
  • Klik pada nama firmware di bawah Artefak untuk memuat turun (log masuk ke GitHub diperlukan).

pro-bluetooth-firmware-github-ci-bin.png

✔ Muat turun Fail Firmware Bluetooth Bertanda Tangan Pasukan OneKey (Bertanda Tangan)

pro-bluetooth-firmware-github-release-signed.png

✔ Muat turun Fail Firmware Bluetooth Disimpan CDN Rasmi OneKey (Bertanda Tangan)

  • Navigasi ke fail CDN OneKey: https://data.onekey.so/config.json

  • Cari versi firmware yang anda ingin sahkan.

  • Salin pautan di bawah medan "ble" - "webUpdate".

  • Buka dalam tetingkap penyemak imbas baharu untuk muat turun automatik fail bin.

pro-ble-firmware-cdn.png

✔ Muat turun dan Pasang Python

Langkah-langkah

Di bawah adalah langkah pengesahan untuk dua sasaran yang ditetapkan sebelum ini:

Firmware Sistem Firmware Bluetooth

Proses Pengesahan dengan firmware pra-tandatangan CI GitHub (Sistem)

  • Buka Terminal.

  • Jalankan arahan di bawah (Fail Firmware Bertanda Tangan Pasukan OneKey):

    • tail -c +1024 /path/to/(laluan fail) | shasum -a 256

  • Jalankan arahan di bawah (Fail Firmware Bertanda Tangan CI GitHub):

    • tail -c +1024 /path/to/(laluan fail) | shasum -a 256

  • Bandingkan Checksums yang dijana oleh kedua-dua arahan. Jika keputusan sepadan, ia boleh disahkan bahawa "Fail Firmware Bertanda Tangan Pasukan OneKey" berasal daripada "Fail Firmware Bertanda Tangan CI GitHub" dalam repositori sumber terbuka OneKey.

7.png

Untuk firmware sistem, hasil tanda tangan 1024 bait ditambah pada versi CI firmware, yang disahkan oleh bootloader semasa permulaan peranti.

Proses Pengesahan dengan Fail Firmware Disimpan CDN Rasmi OneKey (Sistem)

  • Buka Terminal.

  • Jalankan arahan di bawah (Fail Firmware Bertanda Tangan Pasukan OneKey):

    • shasum -a 256 (laluan fail)

  • Jalankan arahan di bawah (Fail Firmware Disimpan CDN Rasmi OneKey):

    • shasum -a 256 (laluan fail)

  • Bandingkan Checksums yang dijana oleh kedua-dua arahan. Jika keputusan sepadan, ketekalan kod bagi kedua-dua fail firmware disahkan.

6.png

Proses Pengesahan dengan firmware pra-tandatangan CI GitHub (Bluetooth)

  • Cari fail ota.bin dalam folder Firmware Bluetooth Pra-Tandatangan CI GitHub yang anda muat turun.

  • Buka terminal dalam folder yang sama dengan ota.bin.

  • Panggil Python dengan arahan: python3

  • Jalankan arahan di bawah untuk mendapatkan checksum firmware Bluetooth Pra-Tandatangan CI GitHub.

    • 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""")

checksum-github-ci-ble.png
  • Jalankan arahan yang sama dengan Fail Firmware Bluetooth Bertanda Tangan Pasukan OneKey.

    • Nota: sila tukar ota.bin dalam arahan kepada nama Fail Firmware Bluetooth Bertanda Tangan Pasukan OneKey.

checksum-github-release.png
  • Bandingkan Checksums yang dijana oleh kedua-dua arahan. Jika keputusan sepadan, ia boleh disahkan bahawa "Fail Firmware Bertanda Tangan Pasukan OneKey" berasal daripada "Fail Firmware Bertanda Tangan CI GitHub" dalam repositori sumber terbuka OneKey.

Proses Pengesahan dengan Fail Firmware Disimpan CDN Rasmi OneKey (Bluetooth)

  • Buka terminal dalam folder yang sama dengan Fail Firmware Bluetooth Bertanda Tangan Pasukan OneKey.

  • Panggil Python dengan arahan: python3

  • Salin arahan di bawah:

    • 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""")

  • Tukar ota.bin kepada nama Fail Firmware Bluetooth Bertanda Tangan Pasukan OneKey yang anda muat turun.

  • Jalankan arahan untuk mendapatkan checksum.

  • Ulangi langkah di atas dengan Fail Firmware Bluetooth Disimpan CDN Rasmi OneKey yang anda muat turun.

  • Bandingkan Checksums yang dijana oleh kedua-dua arahan. Jika keputusan sepadan, ketekalan kod bagi kedua-dua fail firmware disahkan.

compare-ble-checksum.png
Adakah ini menjawab soalan anda?