Kebolehhasilan semula ialah sifat rantaian bekalan: input diisytiharkan yang sama mesti menghasilkan artifak yang sama. Bagi klien VPN, pernyataan itu mengikat pemasang yang anda muat turun kepada sumber dan rantaian alat yang boleh dibina semula oleh sesiapa sahaja. Ia tidak mengatakan apa-apa tentang perkhidmatan yang disambungkan oleh klien.

Oleh itu soalan yang berguna adalah sempit dan boleh dijawab. Adakah projek menerbitkan prosedur, dan adakah artifak khusus anda sepadan dengannya?

Di mana binaan berhenti menjadi deterministik

Pengkompil menyematkan cap masa, laluan mutlak dan nama hos binaan melainkan diberitahu supaya tidak berbuat demikian. Arkib merekodkan susunan fail dan masa ubahan, penaut mengubah output mengikut versi rantaian alat, dan pemampatan selari boleh menyusun semula blok. Mana-mana satu daripadanya menyebabkan dua binaan daripada sumber yang sama berbeza dalam bait tanpa apa-apa yang mencurigakan berlaku. Determinisme direka bentuk ke dalam binaan, tidak pernah diwarisi secara lalai.

Projek yang mendakwa kebolehhasilan semula mesti menamakan penormalan yang digunakan: cap masa tetap, laluan dipetakan, entri arkib diisih, versi pengkompil dan kebergantungan yang dipinkan. Tanpa senarai itu, ketidakpadanan tidak dapat ditafsirkan, kerana ruang variasi sah tidak ditakrifkan.

Input yang diisytiharkan juga mesti lengkap. URL repositori tanpa tag bukan semakan, fail kunci tanpa hash bukan set kebergantungan, dan skrip binaan yang memuat turun alat pada masa jalan mempunyai input yang tiada siapa boleh pin. Setiap jurang menjadi perbezaan kemudian. Lengkapkan senarai sebelum membandingkan apa-apa, kerana senarai yang tidak lengkap tidak boleh gagal dengan cara yang bermakna.

InputHow it driftsWhat pins it
SourceBranch moves after releaseCommit hash in the build metadata
ToolchainCompiler patch level differsContainer image digest
PackagingArchive order and mtimes varyNormalised archive settings

Apa yang sebenarnya diperiksa oleh perbandingan

Pihak bebas membina semula dalam persekitaran yang diisytiharkan dan membandingkan output dengan artifak yang diterbitkan. Kesamaan bit ialah bentuk kuat; langkah penormalan yang didokumenkan, di mana perbezaan direkodkan diterbalikkan dan hasilnya kemudian sepadan, ialah bentuk yang lebih lemah tetapi masih berguna.

Perbandingan adalah tentang binari. Tandatangan menjawab soalan lain: ia mengaitkan keluaran dengan kunci dan kunci dengan identiti, dan projek boleh mempunyai tandatangan sah ke atas artifak yang tiada siapa membina semula. Kedua-dua pemeriksaan bertindan dan bukannya menggantikan satu sama lain.

sha256sum wireguard-installer.msi
gpg --verify wireguard-installer.msi.sig wireguard-installer.msi

Jalankan kedua-duanya sebelum memasang, dan bandingkan hash dengan yang diterbitkan untuk keluaran dan platform yang sama. Hash yang sepadan dengan halaman vendor membuktikan muat turun tiba utuh; binari yang dibina semula yang sepadan dengan hash terbitan vendor membuktikan sesuatu yang lebih kuat tentang cara ia dibuat.

Mengapa ketidakpadanan bukan bukti gangguan

Kebanyakan ketidakpadanan datang daripada input yang tiada siapa kawal. Keluaran tampalan pengkompil yang berbeza, laluan binaan yang bocor ke simbol nyahpepijat, lokasi yang mengubah susunan isihan, atau langkah pembungkusan yang digunakan selepas perbandingan semuanya menghasilkan hash berbeza daripada kerja jujur.

Sebab itu ketidakpadanan mesti dibaca terhadap prosedur yang didokumenkan sebelum ia menjadi cerita. Jika prosedur memin semua perkara dan perbezaan kekal tidak dijelaskan, itu penemuan sebenar yang wajar dikemukakan kepada projek. Jika prosedur berdiam tentang pembungkusan, perbezaan itu mungkin sepenuhnya dijangka.

Simetri juga penting di sini: padanan tidak membuktikan sumber bebas daripada kecacatan, hanya bahawa binari sepadan dengannya. Kod yang diaudit dengan baik dan kod boleh hasil semula ialah sifat berbeza, dan projek boleh memiliki satu tanpa yang lain.

Apa yang didakwa oleh tuntutan tentang perkhidmatan di sebalik aplikasi

Klien ialah program pada peranti anda; perkhidmatan ialah pelayan, sistem akaun dan dasar penyimpanan di tempat lain. Kebolehhasilan semula mengekang yang pertama dan tidak mengatakan apa-apa tentang yang kedua, walau sejauh mana pemasang disahkan.

Konfigurasi titik akhir juga boleh berubah selepas pemasangan, melalui tetapan jauh atau profil yang dikawal oleh pembekal. Perubahan itu tiba melalui rangkaian dan tidak diliputi oleh mana-mana hash yang anda kira sebelum menyambung.

Baca tuntutan itu pada skop sebenarnya, kemudian periksa soalan bersebelahan secara berasingan: apa yang direkodkan oleh pembekal, dan di bawah bidang kuasa mana ia menjawab permintaan. Binari yang disahkan dan perkhidmatan yang tidak disahkan boleh wujud bersama, dan itulah tepat kes yang direka untuk ditampilkan oleh pemeriksaan rantaian bekalan, bukan untuk diperbaiki.

Artikel berkaitan