Reproducibilnost je svojstvo lanca snabdijevanja: isti deklarisani ulazi moraju proizvesti isti artefakt. Za VPN klijenta ta tvrdnja vezuje instalater koji ste preuzeli za izvor i alatni lanac koji svako može ponovo izgraditi. O servisu na koji se klijent povezuje ne govori ništa.

Korisno pitanje je zato usko i ima odgovor. Objavljuje li projekat postupak i odgovara li mu vaš konkretni artefakt?

Gdje gradnja prestaje biti deterministička

Kompajleri ugrađuju vremenske oznake, apsolutne putanje i imena graditeljskih hostova, osim ako im se to ne zabrani. Arhive bilježe redoslijed fajlova i vremena izmjene, linkeri mijenjaju izlaz s verzijom alatnog lanca, a paralelna kompresija može presložiti blokove. Bilo šta od toga čini da se dvije gradnje istog izvora razlikuju u bajtovima, a da se pritom ne dogodi ništa zlokobno. Determinizam se ugrađuje u gradnju, nikada se ne nasljeđuje podrazumijevano.

Projekat koji tvrdi reprodukcibilnost mora navesti normalizaciju koju primjenjuje: fiksne vremenske oznake, preslikane putanje, sortirane arhivske unose, prikovane verzije kompajlera i zavisnosti. Bez tog spiska odstupanje se ne može protumačiti, jer je prostor legitimne varijacije nedefinisan.

Deklarisani ulazi takođe moraju biti potpuni. URL repozitorija bez oznake nije revizija, datoteka zaključavanja bez heša nije skup zavisnosti, a skripta za gradnju koja preuzima alat u vrijeme izvršavanja ima ulaz koji niko ne može prikovati. Svaka praznina kasnije se pretvara u razliku. Dopunite spisak prije nego što bilo šta uporedite, jer nepotpuni spisak ne može pasti na način koji nešto znači.

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

Šta poređenje zapravo provjerava

Nezavisna strana ponovo gradi u deklarisanom okruženju i upoređuje izlaz sa objavljenim artefaktom. Bit-identičnost je jaka forma; dokumentovan korak normalizacije, u kojem se zabilježena razlika poništi i rezultati se zatim poklope, slabija je ali još uvijek korisna forma.

Poređenje se tiče binarnog fajla. Potpis odgovara na drugo pitanje: povezuje izdanje s ključem, a ključ s identitetom, i projekat može imati važeće potpise nad artefaktima koje niko nije ponovo izgradio. Dvije provjere se slažu jedna na drugu umjesto da se zamjenjuju.

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

Pokrenite obje prije instalacije i uporedite heš s onim objavljenim za isto izdanje i platformu. Heš koji se poklapa sa stranicom dobavljača dokazuje da je preuzimanje stiglo neoštećeno; ponovo izgrađeni binarni fajl koji se poklapa s objavljenim hešom dobavljača dokazuje nešto jače o tome kako je napravljen.

Zašto odstupanje nije dokaz neovlaštenog mijenjanja

Većina odstupanja dolazi od ulaza koji niko nije kontrolisao. Drugačije izdanje zakrpe kompajlera, putanja gradnje koja je procurila u simbole za otklanjanje grešaka, lokalitet koji je promijenio redoslijed sortiranja ili korak pakovanja primijenjen nakon poređenja, svi daju drugačiji heš od poštenog rada.

Zato se odstupanje mora čitati uz dokumentovani postupak prije nego što postane priča. Ako postupak prikiva sve, a razlika ostane neobjašnjena, to je stvarno otkriće koje vrijedi saopštiti projektu. Ako postupak ćuti o pakovanju, razlika može biti potpuno očekivana.

Simetrija je ovdje takođe važna: podudaranje ne dokazuje da je izvor bez defekata, već samo da binarni fajl odgovara izvoru. Dobro revidiran kod i reprodukcibilni kod su različita svojstva, a projekat može imati jedno bez drugog.

Šta tvrdnja kaže o servisu iza aplikacije

Klijent je program na vašem uređaju; servis su serveri, sistemi računa i politike čuvanja negdje drugdje. Reprodukcibilnost ograničava prvo i ne govori ništa o drugom, koliko god pažljivo instalater bio provjeren.

Konfiguracija krajnje tačke može se promijeniti i nakon instalacije, putem udaljenih postavki ili profila koji kontroliše provajder. Te promjene stižu preko mreže i nisu obuhvaćene nijednim hešom koji ste izračunali prije povezivanja.

Pročitajte tvrdnju u njenom stvarnom obimu, pa onda odvojeno provjerite susjedno pitanje: šta provajder bilježi i po kojoj jurisdikciji odgovara na zahtjeve. Provjereni binarni fajl i neprovjeren servis mogu postojati zajedno, i upravo je to slučaj koji provjera lanca snabdijevanja treba da učini vidljivim, a ne da ga popravi.

Povezani članci