Biniijiet riproducibbli għall-apps VPN: x'juri qbil
Ergħa bini li jaqbel jgħaqqad binariu distribwit mas-sors u l-għodod iddikjarati. Ma jgħid xejn dwar is-servizz VPN wara dak il-fajl jew id-dokumenti tiegħu.
Ir-riproduċibbiltà hija proprjetà tal-katina tal-provvista: l-istess inputs iddikjarati għandhom jipproduċu l-istess artefatt. Għal klijent VPN, dik id-dikjarazzjoni tgħaqqad l-installer li niżżilt mas-sors u l-katina tal-għodod li kulħadd jista' jerġa' jibni. Ma tgħid xejn dwar is-servizz li miegħu jgħaqqad il-klijent.
Għalhekk il-mistoqsija utli hija dejqa u tista' tiġi mwieġba. Il-proġett jippubblika proċedura, u l-artefatt speċifiku tiegħek jaqbel magħha?
Fejn bini jieqaf milli jkun deterministiku
Il-kompilaturi jdaħħlu timestampijiet, mogħdijiet assoluti u ismijiet ta' hosts tal-bini sakemm ma jingħidilhomx biex ma jagħmlux hekk. L-arkivji jirreġistraw l-ordni tal-fajls u l-ħinijiet tal-bidla, il-linkers ibiddlu l-output tagħhom mal-verżjoni tal-katina tal-għodod, u l-kompressjoni parallela tista' terġa' tordna l-blokki. Kull waħda minn dawn tagħmel żewġ biniijiet tal-istess sors differenti fil-bytes mingħajr ma jiġri xejn ta' ħsara. Id-determiniżmu jiġi inkorporat fil-bini bl-inġinerija, qatt ma jiġi wirt b'mod awtomatiku.
Proġett li jallega riproduċibbiltà għandu jsemmi n-normalizzazzjoni li japplika: timestampijiet fissi, mogħdijiet mappati, entrati tal-arkivju ordnati, verżjonijiet tal-kompilatur u tad-dipendenzi ffissati. Mingħajr dik il-lista, nuqqas ta' qbil ma jistax jiġi interpretat, għax l-ispazju tal-varjazzjoni leġittima mhuwiex definit.
L-inputs iddikjarati wkoll iridu jkunu sħaħ. URL ta' repożitorju mingħajr tag mhuwiex reviżjoni, fajl lock mingħajr hash mhuwiex sett ta' dipendenzi, u skript tal-bini li jniżżel għodda fil-ħin tal-eżekuzzjoni għandu input li ħadd ma jista' jiffissa. Kull vojt isir differenza aktar tard. Imla l-lista qabel ma tqabbel xejn, għax lista mhux kompluta ma tistax tonqos b'mod li jfisser xi ħaġa.
| 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 |
X'inhu verament jivverifika l-paragun
Parti indipendenti terġa' tibni fl-ambjent iddikjarat u tqabbel l-output mal-artefatt ippubblikat. L-identiċità bit ma' bit hija l-forma qawwija; pass ta' normalizzazzjoni dokumentat, fejn differenza rreġistrata tinqaleb u r-riżultati mbagħad jaqblu, hija l-forma aktar dgħajfa iżda xorta utli.
Il-paragun huwa dwar il-binariu. Firma twieġeb mistoqsija oħra: tassoċja rilaxx ma' ċavetta u ċavetta ma' identità, u proġett jista' jkollu firem validi fuq artefatti li ħadd ma reġa' bena. Iż-żewġ verifiki jingħaqdu fuq xulxin minflok ma jissostitwixxu lil xulxin.
sha256sum wireguard-installer.msi gpg --verify wireguard-installer.msi.sig wireguard-installer.msi
Mexxi t-tnejn qabel ma tinstalla, u qabbel il-hash ma' dak ippubblikat għall-istess rilaxx u pjattaforma. Hash li jaqbel mal-paġna tal-fornitur jipprova li t-tniżżil wasal sħiħ; binariu mibni mill-ġdid li jaqbel mal-hash ippubblikat tal-fornitur jipprova xi ħaġa aktar qawwija dwar kif inbena.
Għaliex nuqqas ta' qbil mhuwiex prova ta' manipulazzjoni
Il-biċċa l-kbira tan-nuqqasijiet ta' qbil ġejjin minn input li ħadd ma kkontrolla. Rilaxx ta' garża differenti tal-kompilatur, mogħdija tal-bini li nixxet fis-simboli tad-debug, lokalità li bidlet l-ordni tal-għażla, jew pass tal-ippakkjar applikat wara l-paragun kollha jipproduċu hash differenti minn xogħol onest.
Għalhekk nuqqas ta' qbil irid jinqara kontra l-proċedura dokumentata qabel ma jsir storja. Jekk il-proċedura tiffissa kollox u d-differenza tibqa' mhux spjegata, dik hija skoperta reali li jistħoqqilha titqajjem mal-proġett. Jekk il-proċedura tiskot dwar l-ippakkjar, id-differenza tista' tkun kompletament mistennija.
Is-simmetrija hija importanti hawn ukoll: qbil ma jipprovax li s-sors huwa ħieles minn difetti, biss li l-binariu jaqbel miegħu. Kodiċi awditjat tajjeb u kodiċi riproducibbli huma proprjetajiet differenti, u proġett jista' jkollu waħda mingħajr l-oħra.
X'tgħid id-dikjarazzjoni dwar is-servizz wara l-app
Il-klijent huwa program fuq it-tagħmir tiegħek; is-servizz huwa servers, sistemi ta' kontijiet u politiki ta' żamma band'oħra. Ir-riproduċibbiltà tikkonċerna l-ewwel u ma tgħid xejn dwar it-tieni, kemm jekk l-installer jiġi vverifikat bl-akbar reqqa.
Il-konfigurazzjoni tal-endpoint tista' tinbidel wara l-installazzjoni wkoll, permezz ta' settings remoti jew profil ikkontrollat mill-fornitur. Dawk il-bidliet jaslu minn fuq in-netwerk u mhumiex koperti minn ebda hash li kkalkulajt qabel ma tqabbad.
Aqra d-dikjarazzjoni fl-ambitu reali tagħha, imbagħad iċċekkja l-mistoqsija biswit b'mod separat: x'jirreġistra l-fornitur, u taħt liema ġurisdizzjoni jwieġeb għat-talbiet. Binariu vverifikat u servizz mhux ivverifikat jistgħu jikkoeżistu, u dak huwa eżattament il-każ li verifika tal-katina tal-provvista hija mfassla biex tagħmel viżibbli, mhux biex tiffissa.