Ana içeriğe geç

authenticate-the-consistency-of-firmware-files-with-the-open-source-code-released-by-onekey

Dün güncellendi

OneKey donanım cüzdanı, tamamen açık kaynaklı bir aygıt yazılımına sahiptir. İlgili ürünler için açık kaynaklı aygıt yazılımı kodunu OneKey'in GitHub deposunda görüntüleyebilirsiniz. Toplu üretim için amaçlanan aygıt yazılımı dosyaları resmi olarak yayınlanmadan önce, OneKey ekibi ilgili aygıt yazılımı depolarındaki aygıt yazılımı kaynak kodunu derlemek ve oluşturmak için GitHub'ın Otomasyon Araçları'nı (GitHub CI) kullanır. Dosyalar daha sonra OneKey ekibi tarafından resmi olarak yayınlanmadan önce imzalanır.

Bu makale, aygıt yazılımı dosyaları ile açık kaynak kod arasındaki tutarlılığı doğrulamak için, resmi ekibin çoklu imzalarından önce ve sonra dosyaların sağlama toplamlarını karşılaştırarak kendi doğrulama yöntemini sunmaktadır.

SHA-256 kriptografik hash fonksiyonunu (Sağlama Toplamlarını Karşılaştırma) kullanarak farklı dosyaların kaynak verilerinin tutarlılığını nasıl doğrulayacağınıza dair yöntemler için bu makaleye bakın.

Open Source Firmware Repositories

⚙ Sistem Aygıt Yazılımı: github.com/OneKeyHQ/firmware-pro

⚙ Sistem Aygıt Yazılımı: github.com/OneKeyHQ/firmware-classic1s

⚙ Sistem Aygıt Yazılımı: github.com/OneKeyHQ/firmware/tree/bixin_dev

⚙ Sistem Aygıt Yazılımı: github.com/OneKeyHQ/firmware (branch: touch)

⚙ Sistem Aygıt Yazılımı: github.com/OneKeyHQ/firmware/tree/mini

Resmi standart aygıt yazılımı veya Bluetooth aygıt yazılımı yayınlanmaya hazır olduğunda, OneKey ekibi açık kaynak kodunu derlemek için ilgili deponun Actions'ını çalıştıracaktır. Başarılı derlemenin ardından, dosyalar ekibin dahili çoklu imzasını tamamlamasını bekleyen GitHub Artifacts deposuna yüklenir ve ardından OneKey'in CDN'sine yerleştirilir. config.json dosyasını güncelledikten sonra, OneKey Uygulaması ve OneKey aygıt yazılımı güncelleme web sitesi aracılığıyla güncelleme bildirimleri gönderilir ve kullanıcılara aygıt yazılımlarını yükseltmeleri istenir. Belirli süreç için aşağıdaki şemaya bakın.

Firmware Release Process

"OneKey Ekibi Tarafından İmzalanmış Aygıt Yazılımı Dosyası" ile "OneKey Resmi CDN'de Saklanan Aygıt Yazılımı Dosyası" arasındaki tutarlılığı doğrulayın.

onekey github verifiy.png

Targets

✔ GitHub CI Önceden İmzalanmış Aygıt Yazılımı Dosyasını İndirin (İmzalanmamış)

  1. Resmi OneKey donanım aygıt yazılımı GitHub Sürümü'ne gidin: https://github.com/OneKeyHQ/firmware/releases

  2. Doğrulamak istediğiniz aygıt yazılımı sürümünü bulun ve GitHub Action bağlantısına tıklayın.

Prerequisites

  • Doğrulamak istediğiniz aygıt yazılımı sürümünü bulun.

  • Assets altındaki bin dosyasına indirmek için tıklayın.

github action.png
2.png
  • Doğrulamak istediğiniz aygıt yazılımı sürümünü bulun.

  • Find the firmware version you want to verify.

  • Click to download the bin file under Assets.

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

Sistem Aygıt Yazılımı Bluetooth Aygıt Yazılımı

  • Navigate to the OneKey CDN file: https://data.onekey.so/config.json

  • Find the firmware version you want to verify.

  • Copy the link under the "ble" - "webUpdate" field.

  • Open in a new browser window for automatic download of the bin file.

pro-ble-firmware-cdn.png

✔ Download and Install Python

  • Sistem aygıt yazılımı için, aygıt başlatıldığında önyükleyici tarafından doğrulanan CI sürümüne 1024 baytlık bir imza sonucu eklenir.

OneKey Resmi CDN'de Saklanan Aygıt Yazılımı Dosyası ile Doğrulama Süreci (Sistem)

Steps

Terminali açın.

Below are the verification steps for the two targets set previously:

Aşağıdaki komutu çalıştırın (OneKey Ekibi Tarafından İmzalanmış Aygıt Yazılımı Dosyası):​

Verification Process with GitHub CI pre-signed firmware (System)

  • Open the Terminal.

  • Run the command below (OneKey Team Signed Firmware File):

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

  • GitHub CI Önceden İmzalanmış Aygıt Yazılımı ile Doğrulama Süreci (Bluetooth)

    • GitHub CI Önceden İmzalanmış Bluetooth aygıt yazılımı klasörünüzde ota.bin dosyasını bulun.

  • ota.bin ile aynı klasörde bir terminal açın.

7.png

Python'u şu komutla çağırın: python3

Verification Process with OneKey Official CDN Stored Firmware File (System)

  • Open the Terminal.

  • Run the command below (OneKey Team Signed Firmware File):

    • shasum -a 256 (file path)

  • Run the command below (OneKey Official CDN Stored Firmware File):

    • OneKey Resmi CDN'de Saklanan Aygıt Yazılımı Dosyası ile Doğrulama Süreci (Bluetooth)

  • OneKey Ekibi Tarafından İmzalanmış Bluetooth Aygıt Yazılımı Dosyası ile aynı klasörde bir terminal açın.

6.png

Python'u şu komutla çağırın: python3

  • Aşağıdaki komutu kopyalayın: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""")

  • 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'i indirdiğiniz OneKey Ekibi Tarafından İmzalanmış Bluetooth Aygıt Yazılımı Dosyası'nın adıyla değiştirin.

  • Sağlama toplamını almak için komutu çalıştırın.

checksum-github-ci-ble.png
  • Run the same command with OneKey Team Signed Bluetooth Firmware File.

    • Note: please change ota.bin in the command to the name of OneKey Team Signed Bluetooth Firmware File.

checksum-github-release.png
  • Compare the Checksums generated by the two commands. If the results match, it can be confirmed that the "OneKey Team Signed Firmware File" is derived from the "GitHub CI Pre-Signed Firmware File" in the OneKey open-source repository.

Verification Process with OneKey Official CDN Stored Firmware File (Bluetooth)

  • Open a terminal in the same folder with OneKey Team Signed Bluetooth Firmware File.

  • Invoke Python with the command: python3

  • Copy the command below:

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

  • Change ota.bin to the name of your downloaded OneKey Team Signed Bluetooth Firmware File.

  • Run the command to get the checksum.

  • Repeat the above steps with your downloaded OneKey Official CDN Stored Bluetooth Firmware File.

  • Compare the Checksums generated by the two commands. If the results match, the code consistency of the two firmware files is confirmed.

compare-ble-checksum.png
Bu cevap sorunuzu yanıtladı mı?