Korduvdatavad ehitused VPN-rakendustele: mida vastavus tõestab
Sobiv ümberehitus seob levitatava binaarfaili deklareeritud lähtekoodi ja tööriistadega. See ei ütle midagi selle faili taga oleva VPN-teenuse ega selle logide kohta.
Korduvdatavus on tarneahela omadus: samad deklareeritud sisendid peavad andma sama artefakti. VPN-kliendi puhul seob see väide allalaaditud paigaldaja lähtekoodi ja tööriistaketiga, mille saab igaüks uuesti ehitada. Teenuse kohta, millega klient ühendub, ei ütle see midagi.
Kasulik küsimus on seega kitsas ja vastatav. Kas projekt avaldab protseduuri, ja kas sinu konkreetne artefakt vastab sellele?
Kus ehitus lakkab olemast deterministlik
Kompilaatorid põimivad ajatempleid, absoluutseid teid ja ehitushostide nimesid, kui neile pole seda keelatud. Arhiivid registreerivad failide järjekorra ja muutmise ajad, linkijad muudavad väljundit tööriistaketi versiooni järgi ning paralleelne pakkimine võib plokke ümber järjestada. Ükskõik milline neist teeb kaks sama lähtekoodi ehitust baitides erinevaks, ilma et midagi kurjakuulutavat juhtuks. Determinism ehitatakse ehitusse sisse, seda ei pärita kunagi vaikimisi.
Projekt, mis väidab korduvdatavust, peab nimetama rakendatava normaliseerimise: fikseeritud ajatemplid, kaardistatud teed, sorditud arhiivikirjed, kinnitatud kompilaatori ja sõltuvuste versioonid. Ilma selle loendita ei saa kõrvalekallet tõlgendada, sest lubatud variatsiooni ruum on määratlemata.
Deklareeritud sisendid peavad samuti olema täielikud. Hoidla URL ilma sildita ei ole revisjon, hashita lukustusfail ei ole sõltuvuste hulk ning ehitusskript, mis laadib tööriista käitusajal alla, omab sisendit, mida keegi ei saa kinnitada. Iga lünk muutub hiljem erinevuseks. Enne millegi võrdlemist lõpetage loend, sest puudulik loend ei saa ebaõnnestuda viisil, mis midagi tähendab.
| 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 |
Mida võrdlus tegelikult kontrollib
Sõltumatu osapool ehitab deklareeritud keskkonnas uuesti ja võrdleb väljundit avaldatud artefaktiga. Bitikaupa identsus on tugev vorm; dokumenteeritud normaliseerimissamm, kus registreeritud erinevus pööratakse tagasi ja tulemused seejärel kattuvad, on nõrgem, kuid siiski kasulik vorm.
Võrdlus puudutab binaarfaili. Allkiri vastab teisele küsimusele: see seob väljalaske võtmega ja võtme identiteediga, ning projektil võivad olla kehtivad allkirjad artefaktidel, mida keegi pole ümber ehitanud. Kaks kontrolli kuhjuvad, selle asemel et teineteist asendada.
sha256sum wireguard-installer.msi gpg --verify wireguard-installer.msi.sig wireguard-installer.msi
Käivitage mõlemad enne paigaldamist ja võrrelge räsi sellega, mis on avaldatud sama väljalaske ja platvormi jaoks. Tarnija lehega kattuv räsi tõestab, et allalaadimine saabus tervelt; ümberehitatud binaarfail, mis kattub tarnija avaldatud räsiga, tõestab midagi tugevamat selle kohta, kuidas see tehti.
Miks kõrvalekalle ei ole rikkumise tõestus
Enamik kõrvalekaldeid tuleb sisendist, mida keegi ei kontrollinud. Teistsugune kompilaatori paigaväljalase, silumissümbolitesse lekkinud ehitustee, sortimisjärjekorda muutnud lokaat või pärast võrdlust rakendatud pakkimissamm annavad kõik ausast tööst erineva räsi.
Seetõttu tuleb kõrvalekallet lugeda dokumenteeritud protseduuri vastu enne, kui sellest saab lugu. Kui protseduur kinnitab kõik ja erinevus jääb seletamata, on see tõeline leid, mida tasub projektile esitada. Kui protseduur vaikib pakkimisest, võib erinevus olla täiesti oodatav.
Sümmeetria loeb ka siin: vastavus ei tõesta, et lähtekood on defektideta, vaid ainult et binaarfail vastab sellele. Hästi auditeeritud kood ja korduvdatav kood on erinevad omadused ning projekt võib omada üht ilma teiseta.
Mida väide ütleb rakenduse taga oleva teenuse kohta
Klient on programm sinu seadmes; teenus on serverid, kontosüsteemid ja säilituspoliitikad mujal. Korduvdatavus piirab esimest ega ütle teise kohta midagi, ükskõik kui hoolikalt paigaldajat kontrollitakse.
Lõpp-punkti konfiguratsioon võib samuti pärast paigaldamist muutuda, kaugseadete või teenusepakkuja juhitava profiili kaudu. Need muudatused saabuvad võrgu kaudu ja neid ei kata ükski räsi, mille arvutasite enne ühendamist.
Lugege väidet selle tegelikus ulatuses ja seejärel kontrollige eraldi kõrvalküsimust: mida teenusepakkuja registreerib ja millise jurisdiktsiooni all ta päringutele vastab. Kontrollitud binaarfail ja kontrollimata teenus võivad eksisteerida kõrvuti ning täpselt see on juhtum, mille tarneahela kontroll on mõeldud nähtavaks tegema, mitte parandama.