491 / 691REPRO

Reproducible Firmware Build

Build firmware yang dapat direproduksi

Build independen memungkinkan perbandingan firmware yang diterbitkan dengan hasil dari kode sumber dan lingkungan yang ditentukan. Kecocokan memperjelas pemeriksaan asal berkas biner; kecocokan saja tidak membuktikan keamanan kode atau keaslian perangkat.

Reproducible Firmware Build adalah build yang menghasilkan keluaran identik per bita dan ditentukan sebelumnya dari kode sumber, lingkungan, serta petunjuk yang sama. Versi, model perangkat, dan lingkup perbandingan harus disebutkan, terutama jika rilis memuat tanda tangan tambahan.

Klaim berlaku untuk keluaran tertentu, misalnya citra firmware, bukan otomatis untuk setiap berkas atau log. Fungsi program yang sama tidak cukup: pemeriksaan mencari bita yang sama, biasanya melalui hash kriptografis. Kode sumber terbuka tanpa build yang dapat diulang tidak dengan sendirinya membuktikan hubungan ini dengan biner yang diterbitkan. [Reproducible Builds — Definition] [Reproducible Builds — Build infrastructure threats]

Catat commit yang tepat, dependensi dan versinya, compiler, opsi build, variabel lingkungan yang relevan, serta model sasaran. Nama proyek atau cabang yang terus berubah saja tidak cukup. Informasi untuk mengulang build harus diterbitkan atau dicatat saat build; jika tidak, perbedaan tidak dapat dinilai secara andal. [Reproducible Builds — Definition] [Reproducible Builds — Recording the environment]

Compiler dapat memasukkan jalur direktori kerja ke dalam informasi debug. Dua lokasi untuk sumber yang sama kemudian dapat menghasilkan berkas berbeda. Jalur dapat ditetapkan sebelumnya atau dinormalisasi melalui prosedur yang didukung. Aturan itu harus menjadi bagian dari resep; menghapus perbedaan yang tidak diketahui setelahnya akan merusak nilai pemeriksaan. [Reproducible Builds — Build paths]

Tanda tangan yang valid menghubungkan rilis dengan kunci penandatangan terkait dalam model kepercayaan yang digunakan. Build independen memeriksa hubungan antara sumber dan keluaran biner. Berkas resmi bertanda tangan dapat memuat data yang tidak dimiliki build lokal tanpa tanda tangan. Perbandingan sederhana atas seluruh berkas kemudian belum tentu menjadi pengujian yang tepat untuk reproduktibilitas yang dinyatakan. [Trezor — Reproducible build verification]

Dokumentasi Trezor memilih versi dan model, membangun citra dalam lingkungan yang ditentukan, lalu membandingkannya dengan rilis resmi. Sebelum perbandingan, dokumentasi menjelaskan pengisian nol pada kolom tanda tangan yang ditentukan secara tepat; header juga berbeda pada format lama. Tata letak bergantung pada model dan versi. Karena itu, prosedur untuk satu citra tidak boleh diterapkan begitu saja pada citra lain, dan pemeriksaan tanda tangan asli harus dipisahkan. [Trezor — Reproducible build verification]

Pertama, periksa kesesuaian revisi, model, varian firmware, dependensi, serta perubahan citra yang dinyatakan. Simpan berkas asli dan catatan perbedaannya. Ketidakcocokan dapat berasal dari kesalahan resep atau lingkungan, tetapi juga dari perubahan biner yang didistribusikan; ketidakcocokan saja tidak menentukan penyebabnya. Jangan menyatakan keluaran terverifikasi sampai perbedaannya dijelaskan dan pemeriksaan diulang. [Reproducible Builds — Definition] [Reproducible Builds — Build infrastructure threats]

Sumber yang cacat atau berbahaya dapat direproduksi dengan sempurna. Compiler tak tepercaya yang digunakan bersama dapat menyisipkan perubahan yang sama ke semua hasil; mengulang alat yang sama bukan audit independen terhadap compiler. Bagian biner tertutup membatasi apa yang dapat dibangun ulang dari sumber yang tersedia. Kecocokan berkas juga tidak memverifikasi keaslian perangkat keras atau apa yang benar-benar dimuat pada perangkat tertentu. [Wheeler — Countering Trusting Trust] [Reproducible Builds — Definition]

Catatan yang berguna menyebutkan siapa yang melakukan build, dari commit mana, menurut resep apa, untuk model mana, dan berkas apa yang dibandingkan. Sertakan algoritma hash, hasil, dan pengecualian yang tepat untuk data tanda tangan. Pelaku build independen tambahan mengurangi ketergantungan pada satu penerbit, tetapi tidak menggantikan pemeriksaan sumber, proses pembaruan, dan keamanan perangkat secara keseluruhan. [Reproducible Builds — Recording the environment] [Reproducible Builds — Build infrastructure threats]

Contoh · REPRO

Kode sama, area tanda tangan berbeda

Dua pelaku build menggunakan commit, model, dan lingkungan yang sama. Citra lokal mereka memiliki SHA-256 yang sama, sedangkan citra resmi bertanda tangan memiliki hash berbeda. Jika dokumentasi menentukan kolom tanda tangan secara tepat, mereka membandingkan salinan setelah perubahan yang diwajibkan itu. Kecocokan kemudian berlaku untuk konten yang ditentukan dengan cara tersebut; tanda tangan asli diverifikasi terpisah. Mereka tidak boleh sekadar menghapus perbedaan lain.

Untuk gambaran yang lebih utuh, baca entri ini bersama Hardware Wallet, Kunci Privat, Cold Storage, Secure Element. Entri ini juga dirujuk dari COLDCARD RNG Incident (2026).

01Apakah kecocokan hash cukup untuk menyimpulkan bahwa firmware aman?

Tidak. Kecocokan membuktikan hasil perbandingan tertentu, bukan ketiadaan kesalahan. Sumber berbahaya atau compiler tak tepercaya yang digunakan bersama dapat menghasilkan keluaran identik. Pemeriksaan build, pemeriksaan sumber, dan kepercayaan pada perangkat harus dipisahkan.

02Apakah hash rilis bertanda tangan yang berbeda otomatis berarti serangan?

Tidak. Citra bertanda tangan dapat memiliki kolom tanda tangan atau header berbeda yang sudah dijelaskan sebelumnya. Pertama, periksa versi, model, dan prosedur perbandingan yang benar. Namun, ketidakcocokan yang belum dijelaskan tidak boleh dinyatakan sebagai verifikasi berhasil atau diakali dengan menghapus bita sembarangan.

DOC · 001Reproducible Builds — DefinitionDokumentasi ↗DOC · 002Reproducible Builds — Recording the environmentDokumentasi ↗DOC · 003Reproducible Builds — Build pathsDokumentasi ↗DOC · 004Reproducible Builds — Build infrastructure threatsDokumentasi ↗DOC · 005Trezor — Reproducible build verificationDokumentasi ↗DOC · 006Wheeler — Countering Trusting TrustSumber primer ↗
Utamakan sumber · Bukan nasihat investasi