Binaan boleh hasil semula untuk aplikasi VPN: apa yang dibuktikan oleh padanan
Binaan semula yang sepadan mengaitkan binari yang diedarkan dengan sumber dan alat yang diisytiharkan. Ia tidak mengatakan apa-apa tentang perkhidmatan VPN di sebalik binari itu atau lognya.
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.
| Input | How it drifts | What pins it |
|---|---|---|
| Source | Branch moves after release | Commit hash in the build metadata |
| Toolchain | Compiler patch level differs | Container image digest |
| Packaging | Archive order and mtimes vary | Normalised 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.