Reprodukovateľné zostavenia VPN aplikácií: čo dokazuje zhoda
Zhodné prestavenie spája distribuovaný binárny súbor s deklarovaným zdrojovým kódom a nástrojmi. O službe VPN za týmto súborom ani o jej záznamoch nehovorí nič.
Reprodukovateľnosť je vlastnosť dodávateľského reťazca: tie isté deklarované vstupy musia vytvoriť ten istý artefakt. Pre VPN klienta toto tvrdenie spája stiahnutý inštalátor so zdrojovým kódom a nástrojovým reťazcom, ktorý môže ktokoľvek prestaviť. O službe, ku ktorej sa klient pripája, nehovorí nič.
Užitočná otázka je preto úzka a má odpoveď. Zverejňuje projekt postup a zodpovedá mu práve váš artefakt?
Kde zostavenie prestáva byť deterministické
Kompilátory vkladajú časové značky, absolútne cesty a názvy hostiteľov zostavenia, ak im to výslovne nezakážete. Archívy zaznamenávajú poradie súborov a časy zmien, linkery menia výstup podľa verzie nástrojového reťazca a paralelná kompresia môže preskupiť bloky. Čokoľvek z toho spôsobí, že sa dve zostavenia toho istého zdrojového kódu líšia v bajtoch, bez toho aby sa stalo niečo zlovestné. Determinizmus sa do zostavenia vkladá inžiniersky, nikdy sa nededia automaticky.
Projekt, ktorý tvrdí reprodukovateľnosť, musí pomenovať normalizáciu, ktorú uplatňuje: pevné časové značky, mapované cesty, zoradené položky archívu, pripnuté verzie kompilátora a závislostí. Bez tohto zoznamu nemožno odchýlku interpretovať, pretože priestor legitímnej variácie nie je definovaný.
Deklarované vstupy tiež musia byť úplné. URL úložiska bez značky nie je revízia, zamykací súbor bez hashu nie je sada závislostí a skript zostavenia, ktorý sťahuje nástroj za behu, má vstup, ktorý nikto nedokáže pripnúť. Každá medzera sa neskôr zmení na rozdiel. Pred porovnaním čohokoľvek zoznam doplňte, pretože neúplný zoznam nemôže zlyhať spôsobom, ktorý niečo znamená.
| 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 |
Čo porovnanie skutočne kontroluje
Nezávislá strana prestaví v deklarovanom prostredí a porovná výstup so zverejneným artefaktom. Bitová zhoda je silná forma; dokumentovaný krok normalizácie, pri ktorom sa zaznamenaný rozdiel zvráti a výsledky potom sedia, je slabšia, ale stále užitočná forma.
Porovnanie sa týka binárneho súboru. Podpis odpovedá na inú otázku: spája vydanie s kľúčom a kľúč s identitou a projekt môže mať platné podpisy nad artefaktmi, ktoré nikto neprestavil. Obe kontroly sa sčítavajú, namiesto toho aby sa nahrádzali.
sha256sum wireguard-installer.msi gpg --verify wireguard-installer.msi.sig wireguard-installer.msi
Spustite obe pred inštaláciou a porovnajte hash s tým zverejneným pre to isté vydanie a platformu. Hash, ktorý zodpovedá stránke dodávateľa, dokazuje, že prevzatie dorazilo neporušené; prestavený binárny súbor, ktorý zodpovedá zverejnenému hashu dodávateľa, dokazuje niečo silnejšie o tom, ako vznikol.
Prečo odchýlka nie je dôkazom manipulácie
Väčšina odchýlok pochádza zo vstupu, ktorý nikto nekontroloval. Iné vydanie záplaty kompilátora, cesta zostavenia, ktorá unikla do ladiacich symbolov, lokalita, ktorá zmenila poradie triedenia, alebo krok balenia použitý po porovnaní, to všetko vytvára iný hash ako poctivá práca.
Preto treba odchýlku čítať proti dokumentovanému postupu, kým sa z nej nestane príbeh. Ak postup pripína všetko a rozdiel zostáva nevysvetlený, je to skutočný nález, ktorý stojí za to oznámiť projektu. Ak postup o balení mlčí, rozdiel môže byť úplne očakávaný.
Symetria je tu tiež dôležitá: zhoda nedokazuje, že zdrojový kód je bez chýb, iba že mu binárny súbor zodpovedá. Dobre auditovaný kód a reprodukovateľný kód sú rôzne vlastnosti a projekt môže mať jednu bez druhej.
Čo tvrdenie hovorí o službe za aplikáciou
Klient je program vo vašom zariadení; služba sú servery, systémy účtov a zásady uchovávania inde. Reprodukovateľnosť obmedzuje prvé a o druhom nehovorí nič, akokoľvek starostlivo sa inštalátor overuje.
Konfigurácia koncového bodu sa môže zmeniť aj po inštalácii, a to vzdialeným nastavením alebo profilom riadeným poskytovateľom. Tie zmeny prichádzajú po sieti a nepokrýva ich žiadny hash, ktorý ste vypočítali pred pripojením.
Čítajte tvrdenie v jeho skutočnom rozsahu a potom samostatne preverte susednú otázku: čo poskytovateľ zaznamenáva a podľa akej jurisdikcie odpovedá na žiadosti. Overený binárny súbor a neoverená služba môžu existovať vedľa seba, a presne takýto prípad má kontrola dodávateľského reťazca zviditeľniť, nie opraviť.