Ana içeriğe geç

OneKey tarafından yayınlanan açık kaynak kod ile üretici yazılım dosyalarının tutarlılığını doğrulama

Bugün güncellendi

OneKey donanım cüzdanı, tamamen açık kaynaklı bir firmware'e sahiptir. İlgili ürünlerin açık kaynaklı firmware kodunu OneKey'in GitHub deposunda görüntüleyebilirsiniz. Seri üretime yönelik firmware dosyaları resmi olarak yayınlanmadan önce, OneKey ekibi ilgili firmware depolarındaki firmware kaynak kodunu derlemek ve oluşturmak için GitHub'ın Derleme Otomasyon araçlarını (GitHub CI) kullanır. Dosyalar daha sonra resmi olarak yayınlanmadan önce OneKey ekibi tarafından imzalanır.

Bu makale, firmware dosyaları ile açık kaynak kod arasındaki tutarlılığı doğrulamak için, resmi ekip tarafından imzalanmadan önceki ve sonraki dosyaların sağlama toplamlarını karşılaştırarak kendi kendine doğrulama yöntemini sunmaktadır.

SHA-256 kriptografik özet fonksiyonunu kullanarak farklı dosyaların kaynak verilerinin tutarlılığını doğrulama (Sağlama Toplamlarını Karşılaştırma) yöntemleri için bu makaleye bakınız.

Açık Kaynak Firmware Depoları

OneKey Pro

OneKey Classic 1S

OneKey Classic

OneKey Touch

OneKey Mini

OneKey'in firmware sürümünü yeniden oluşturmak için aşağıdaki video eğitimini izleyin

Firmware Yayın Süreci

Resmi standart firmware veya Bluetooth firmware yayınlanmaya hazır olduğunda, OneKey ekibi açık kaynak kodu derlemek için ilgili deponun Action'ını çalıştıracaktır. Başarılı derlemeden sonra dosyalar, GitHub CDN'de yerleştirilmeden önce OneKey ekibinin dahili çoklu imza işlemini tamamlamasını bekleyen GitHub Artifacts deposuna yüklenir. config.json dosyasını güncelledikten sonra, OneKey Uygulaması ve OneKey firmware güncelleme web sitesi aracılığıyla güncelleme bildirimleri gönderilir ve kullanıcılara firmware'lerini yükseltmeleri istenir. Belirli süreç için aşağıdaki diyagrama bakın.

onekey github verifiy.png

Hedefler

  1. "OneKey Ekibi Tarafından İmzalanmış Firmware Dosyası"nın OneKey açık kaynak deposundaki "GitHub CI Önceden İmzalanmış Firmware Dosyası"ndan türetildiğini doğrulayın.

  2. "OneKey Ekibi Tarafından İmzalanmış Firmware Dosyası" ile "OneKey Resmi CDN'de Depolanan Firmware Dosyası" arasındaki tutarlılığı doğrulayın.

Önkoşullar

Sistem Firmware'i Bluetooth Firmware'i

✔ GitHub CI Önceden İmzalanmış Firmware Dosyasını (İmzalanmamış) İndirin

github action.png
  • İndirmek için Artifacts altındaki firmware adına tıklayın (GitHub'a giriş yapılması gerekir).

2.png

✔ OneKey Ekibi Tarafından İmzalanmış Firmware Dosyasını (İmzalı) İndirin

github release bin.png

✔ OneKey Resmi CDN'de Depolanan Firmware Dosyasını (İmzalı) İndirin

  • OneKey CDN dosyasına gidin: https://data.onekey.so/config.json

  • Doğrulamak istediğiniz firmware sürümünü bulun.

  • "url" alanı altındaki bağlantıyı kopyalayın.

  • Bin dosyasının otomatik olarak indirilmesi için yeni bir tarayıcı penceresinde açın.

3.png

✔ GitHub CI Önceden İmzalanmış Bluetooth Firmware Dosyasını (İmzalanmamış) İndirin

pro-bluetooth-firmware-github-ci.png
  • İndirmek için Artifacts altındaki firmware adına tıklayın (GitHub'a giriş yapılması gerekir).

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

✔ OneKey Ekibi Tarafından İmzalanmış Bluetooth Firmware Dosyasını (İmzalı) İndirin

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

✔ OneKey Resmi CDN'de Depolanan Bluetooth Firmware Dosyasını (İmzalı) İndirin

  • OneKey CDN dosyasına gidin: https://data.onekey.so/config.json

  • Doğrulamak istediğiniz firmware sürümünü bulun.

  • "ble" - "webUpdate" alanı altındaki bağlantıyı kopyalayın.

  • Bin dosyasının otomatik olarak indirilmesi için yeni bir tarayıcı penceresinde açın.

pro-ble-firmware-cdn.png

✔ Python'u İndirin ve Kurun

Adımlar

Daha önce belirlenen iki hedef için doğrulama adımları aşağıdadır:

Sistem Firmware'i Bluetooth Firmware'i

GitHub CI önceden imzalanmış firmware ile doğrulama Süreci (Sistem)

  • Terminali açın.

  • Aşağıdaki komutu çalıştırın (OneKey Ekibi Tarafından İmzalanmış Firmware Dosyası):

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

  • Aşağıdaki komutu çalıştırın (GitHub CI Önceden İmzalanmış Firmware Dosyası):

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

  • İki komut tarafından oluşturulan Sağlama Toplamlarını karşılaştırın. Sonuçlar eşleşirse, "OneKey Ekibi Tarafından İmzalanmış Firmware Dosyası"nın OneKey açık kaynak deposundaki "GitHub CI Önceden İmzalanmış Firmware Dosyası"ndan türetildiği doğrulanabilir.

7.png

Sistem firmware'i için, cihaz 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 Depolanan Firmware Dosyası ile doğrulama Süreci (Sistem)

  • Terminali açın.

  • Aşağıdaki komutu çalıştırın (OneKey Ekibi Tarafından İmzalanmış Firmware Dosyası):

    • shasum -a 256 (dosya yolu)

  • Aşağıdaki komutu çalıştırın (OneKey Resmi CDN'de Depolanan Firmware Dosyası):

    • shasum -a 256 (dosya yolu)

  • İki komut tarafından oluşturulan Sağlama Toplamlarını karşılaştırın. Sonuçlar eşleşirse, iki firmware dosyasının kod tutarlılığı doğrulanır.

6.png

GitHub CI önceden imzalanmış firmware ile doğrulama Süreci (Bluetooth)

  • İndirilen GitHub CI Önceden İmzalanmış Bluetooth firmware klasöründeki ota.bin dosyasını bulun.

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

  • Komutuyla Python'u çağırın: python3

  • GitHub CI Önceden İmzalanmış Bluetooth firmware'inin sağlama toplamını almak için aşağıdaki komutu çalıştırı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""")

checksum-github-ci-ble.png
  • OneKey Ekibi Tarafından İmzalanmış Bluetooth Firmware Dosyası ile aynı komutu çalıştırın.

    • Not: Komuttaki ota.bin dosyasını OneKey Ekibi Tarafından İmzalanmış Bluetooth Firmware Dosyasının adıyla değiştirin.

checksum-github-release.png
  • İki komut tarafından oluşturulan Sağlama Toplamlarını karşılaştırın. Sonuçlar eşleşirse, "OneKey Ekibi Tarafından İmzalanmış Firmware Dosyası"nın OneKey açık kaynak deposundaki "GitHub CI Önceden İmzalanmış Firmware Dosyası"ndan türetildiği doğrulanabilir.

OneKey Resmi CDN'de Depolanan Firmware Dosyası ile doğrulama Süreci (Bluetooth)

  • OneKey Ekibi Tarafından İmzalanmış Bluetooth Firmware Dosyasının bulunduğu klasörde bir terminal açın.

  • Komutuyla Python'u ç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""")

  • İndirilen OneKey Ekibi Tarafından İmzalanmış Bluetooth Firmware Dosyasının adını ota.bin ile değiştirin.

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

  • İndirilen OneKey Resmi CDN'de Depolanan Bluetooth Firmware Dosyası ile yukarıdaki adımları tekrarlayın.

  • İki komut tarafından oluşturulan Sağlama Toplamlarını karşılaştırın. Sonuçlar eşleşirse, iki firmware dosyasının kod tutarlılığı doğrulanır.

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