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
⚙ Sistem Firmware'i: github.com/OneKeyHQ/firmware-pro
Bluetooth Firmware'i: github.com/OneKeyHQ/bluetooth-firmware-pro
OneKey Classic 1S
⚙ Sistem Firmware'i: github.com/OneKeyHQ/firmware-classic1s
Bluetooth Firmware'i: github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Classic
⚙ Sistem Firmware'i: github.com/OneKeyHQ/firmware/tree/bixin_dev
Bluetooth Firmware'i: github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Touch
⚙ Sistem Firmware'i: github.com/OneKeyHQ/firmware (dal: touch)
Bluetooth Firmware'i: github.com/OneKeyHQ/bluetooth-firmware-touch
OneKey Mini
⚙ Sistem Firmware'i: github.com/OneKeyHQ/firmware/tree/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.
Hedefler
"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.
"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
OneKey donanım firmware'inin resmi GitHub Sürümüne gidin: https://github.com/OneKeyHQ/firmware/releases
Doğrulamak istediğiniz firmware sürümünü bulun ve GitHub Action bağlantısına tıklayın.
İndirmek için Artifacts altındaki firmware adına tıklayın (GitHub'a giriş yapılması gerekir).
✔ OneKey Ekibi Tarafından İmzalanmış Firmware Dosyasını (İmzalı) İndirin
OneKey donanım firmware'inin resmi GitHub Sürümüne gidin: https://github.com/OneKeyHQ/firmware/releases
Doğrulamak istediğiniz firmware sürümünü bulun.
Assets altındaki bin dosyasını indirmek için tıklayın.
✔ 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.
✔ GitHub CI Önceden İmzalanmış Bluetooth Firmware Dosyasını (İmzalanmamış) İndirin
OneKey Bluetooth firmware'inin resmi GitHub Sürümüne gidin
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
Doğrulamak istediğiniz firmware sürümünü bulun ve GitHub Action bağlantısına tıklayın.
İndirmek için Artifacts altındaki firmware adına tıklayın (GitHub'a giriş yapılması gerekir).
✔ OneKey Ekibi Tarafından İmzalanmış Bluetooth Firmware Dosyasını (İmzalı) İndirin
OneKey Bluetooth firmware'inin resmi GitHub Sürümüne gidin
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
Doğrulamak istediğiniz firmware sürümünü bulun.
Assets altındaki bin dosyasını indirmek için tıklayın.
✔ 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.
✔ Python'u İndirin ve Kurun
Adrese gidin: https://www.python.org/downloads/
Python'un en son sürümünü indirin 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.
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.
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""")
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.
İ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.
