Ana içeriğe geç

OneKey tarafından yayınlanan açık kaynak kod ile aygıt yazılımı dosyalarının tutarlılığını doğrulayın

Bugün güncellendi

OneKey donanım cüzdanı, tamamen açık kaynaklı aygıt yazılımına (firmware) sahiptir. İlgili ürünlerin açık kaynak aygıt yazılımı kodunu OneKey'in GitHub deposunda görüntüleyebilirsiniz. Seri üretim için hazırlanan aygıt yazılımı dosyaları resmi olarak yayınlanmadan önce, OneKey ekibi ilgili aygıt yazılımı depolarından kaynak kodu derlemek ve oluşturmak için GitHub'ın Build Automation araçlarını (GitHub CI) kullanır. Dosyalar, resmi olarak yayınlanmadan önce OneKey ekibi tarafından imzalanır.

Bu makale, aygıt yazılımı dosyaları ile açık kaynak kodu arasındaki tutarlılığı doğrulamak için resmi ekibin çoklu imzasından (multi-sig) önceki ve sonraki dosya sağlama toplamlarını (checksum) karşılaştıran bir kendi kendine doğrulama yöntemi sunar.

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

Açık Kaynak Aygıt Yazılımı Depoları

OneKey Pro

OneKey Classic 1S

OneKey Classic

OneKey Touch

OneKey Mini

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

Aygıt Yazılımı Yayın Süreci

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 kodu derlemek için ilgili deponun Action özelliğini çalıştırır. Derleme başarılı olduktan sonra dosyalar, OneKey'in CDN'ine yerleştirilmeden önce ekibin dahili çoklu imza sürecinin tamamlanmasını beklemek üzere GitHub Artifacts deposuna yüklenir. config.json dosyası güncellendikten sonra, güncelleme bildirimleri OneKey Uygulaması ve OneKey aygıt yazılımı güncelleme web sitesi aracılığıyla gönderilerek kullanıcılara aygıt yazılımlarını yükseltmeleri hatırlatılır. Belirli süreç için aşağıdaki şemaya başvurun.

onekey github verifiy.png

Hedefler

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

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

Ön Koşullar

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

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

  • Resmi OneKey donanım aygıt yazılımı GitHub Sürüm sayfasına gidin: https://github.com/OneKeyHQ/firmware/releases

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

github action.png
  • İndirmek için Artifacts altındaki aygıt yazılımı adına tıklayın (GitHub girişi gereklidir).

2.png

✔ OneKey Ekibi Tarafından İmzalanmış Aygıt Yazılımı Dosyasını İndirin (İmzalı)

  • Resmi OneKey donanım aygıt yazılımı GitHub Sürüm sayfasına gidin: https://github.com/OneKeyHQ/firmware/releases

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

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

github release bin.png

✔ OneKey Resmi CDN'inde Depolanan Aygıt Yazılımı Dosyasını İndirin (İmzalı)

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

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

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

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

3.png

✔ GitHub CI ile Önceden İmzalanmış Bluetooth Aygıt Yazılımı Dosyasını İndirin (İmzasız)

pro-bluetooth-firmware-github-ci.png
  • İndirmek için Artifacts altındaki aygıt yazılımı adına tıklayın (GitHub girişi gereklidir).

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

✔ OneKey Ekibi Tarafından İmzalanmış Bluetooth Aygıt Yazılımı Dosyasını İndirin (İmzalı)

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

✔ OneKey Resmi CDN'inde Depolanan Bluetooth Aygıt Yazılımı Dosyasını İndirin (İmzalı)

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

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

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

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

pro-ble-firmware-cdn.png

✔ Python'ı İndirin ve Yükleyin

Adımlar

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

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

GitHub CI ile önceden imzalanmış aygıt yazılımı ile doğrulama süreci (Sistem)

  • Terminali açın.

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

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

  • Aşağıdaki komutu çalıştırın (GitHub CI ile Önceden İmzalanmış Aygıt Yazılımı 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ış Aygıt Yazılımı Dosyası"nın, OneKey açık kaynak deposundaki "GitHub CI ile Önceden İmzalanmış Aygıt Yazılımı Dosyası"ndan türetildiği doğrulanabilir.

7.png

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

OneKey Resmi CDN'inde Depolanan Aygıt Yazılımı Dosyası ile doğrulama süreci (Sistem)

  • Terminali açın.

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

    • shasum -a 256 (dosya yolu)

  • Aşağıdaki komutu çalıştırın (OneKey Resmi CDN'inde Depolanan Aygıt Yazılımı 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 aygıt yazılımı dosyasının kod tutarlılığı doğrulanmış olur.

6.png

GitHub CI ile önceden imzalanmış bluetooth aygıt yazılımı ile doğrulama süreci (Bluetooth)

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

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

  • Python'ı şu komutla çalıştırın: python3

  • GitHub CI ile Önceden İmzalanmış Bluetooth aygıt yazılımının 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
  • Aynı komutu OneKey Ekibi Tarafından İmzalanmış Bluetooth Aygıt Yazılımı Dosyası ile çalıştırın.

    • Not: Lütfen komuttaki ota.bin dosya adını, OneKey Ekibi Tarafından İmzalanmış Bluetooth Aygıt Yazılımı 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ış Aygıt Yazılımı Dosyası"nın, OneKey açık kaynak deposundaki "GitHub CI ile Önceden İmzalanmış Aygıt Yazılımı Dosyası"ndan türetildiği doğrulanabilir.

OneKey Resmi CDN'inde Depolanan Bluetooth 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.

  • Python'ı şu komutla çalıştı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""")

  • ota.bin ifadesini 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.

  • Yukarıdaki adımları indirdiğiniz OneKey Resmi CDN'inde Depolanan Bluetooth Aygıt Yazılımı Dosyası ile tekrarlayın.

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

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