Ponovljivost je lastnost dobavne verige: enaki deklarirani vhodi morajo ustvariti enak artefakt. Za odjemalca VPN ta izjava poveže nameščevalnik, ki ste ga prenesli, z izvorno kodo in orodno verigo, ki jo lahko vsak znova zgradi. Ne pove ničesar o storitvi, s katero se odjemalec povezuje.

Koristno vprašanje je zato ozko in ima odgovor. Ali projekt objavi postopek in ali se vaš konkretni artefakt ujema z njim?

Kje gradnja preneha biti deterministična

Prevajalniki vgradijo časovne žige, absolutne poti in imena gostiteljev gradnje, razen če jim tega ne prepoveste. Arhivi zabeležijo vrstni red datotek in čase sprememb, povezovalniki spreminjajo izhod glede na različico orodne verige, vzporedno stiskanje pa lahko prerazporedi bloke. Vsaka od teh stvari povzroči, da se dve gradnji iste izvorne kode razlikujeta v bajtih, ne da bi se zgodilo kaj zloveščega. Determinizem se v gradnjo vgradi inženirsko, nikoli se ne podeduje privzeto.

Projekt, ki trdi ponovljivost, mora navesti uporabljeno normalizacijo: fiksni časovni žigi, preslikane poti, razvrščeni vnosi arhiva, pripete različice prevajalnika in odvisnosti. Brez tega seznama odstopanja ni mogoče razložiti, ker prostor zakonitega spreminjanja ni določen.

Tudi deklarirani vhodi morajo biti popolni. URL shrambe brez oznake ni revizija, zaklepna datoteka brez hash ni niz odvisnosti, gradbeni skript, ki med izvajanjem prenese orodje, pa ima vhod, ki ga nihče ne more pripeti. Vsaka vrzel pozneje postane razlika. Preden karkoli primerjate, dopolnite seznam, ker nepopoln seznam ne more spodleteti na način, ki bi kaj pomenil.

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

Kaj primerjava dejansko preveri

Neodvisna stran ponovno zgradi v deklariranem okolju in primerja izhod z objavljenim artefaktom. Bitična enakost je močna oblika; dokumentiran korak normalizacije, pri katerem se zabeležena razlika obrne in se rezultati nato ujemajo, je šibkejša, a še vedno koristna oblika.

Primerjava se nanaša na binarno datoteko. Podpis odgovarja na drugo vprašanje: izdajo poveže s ključem in ključ z identiteto, projekt pa ima lahko veljavne podpise nad artefakti, ki jih nihče ni znova zgradil. Preverjanji se seštevata, namesto da bi se zamenjavali.

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

Pred namestitvijo zaženite obe in primerjajte hash z objavljenim za isto izdajo in platformo. Hash, ki se ujema s stranjo ponudnika, dokazuje, da je prenos prispel nepoškodovan; znova zgrajena binarna datoteka, ki se ujema z objavljenim hash ponudnika, dokazuje nekaj močnejšega o tem, kako je nastala.

Zakaj odstopanje ni dokaz poseganja

Večina odstopanj izhaja iz vhoda, ki ga nihče ni nadzoroval. Druga izdaja popravka prevajalnika, pot gradnje, ki je uhajala v simbole za razhroščevanje, nastavitev jezika, ki je spremenila vrstni red razvrščanja, ali korak pakiranja, uporabljen po primerjavi, vsi dajo drugačen hash od poštenega dela.

Zato je treba odstopanje brati ob dokumentiranem postopku, preden postane zgodba. Če postopek pripne vse in razlika ostane nerazložena, je to resnična ugotovitev, ki jo je vredno predstaviti projektu. Če postopek molči o pakiranju, je razlika lahko povsem pričakovana.

Tudi simetrija je tu pomembna: ujemanje ne dokazuje, da je izvorna koda brez napak, le da ji binarna datoteka ustreza. Dobro revidirana koda in ponovljiva koda sta različni lastnosti, projekt pa ima lahko eno brez druge.

Kaj izjava pove o storitvi za aplikacijo

Odjemalec je program na vaši napravi; storitev so strežniki, sistemi računov in pravilniki o hrambi drugje. Ponovljivost omejuje prvo in ne pove ničesar o drugem, ne glede na to, kako skrbno je nameščevalnik preverjen.

Konfiguracija končne točke se lahko spremeni tudi po namestitvi, prek oddaljenih nastavitev ali profila, ki ga nadzira ponudnik. Te spremembe pridejo po omrežju in jih ne pokriva noben hash, ki ste ga izračunali pred povezavo.

Izjavo preberite v njenem resničnem obsegu in nato ločeno preverite sosednje vprašanje: kaj ponudnik zabeleži in pod katero jurisdikcijo odgovarja na zahteve. Preverjena binarna datoteka in nepreverjena storitev lahko obstajata drug ob drugem, in prav to je primer, ki naj bi ga pregled dobavne verige naredil viden, ne pa odpravil.

Sorodni članki