Reproducējamība ir piegādes ķēdes īpašība: vieniem un tiem pašiem deklarētajiem ievadiem jārada viens un tas pats artefakts. VPN klientam šis apgalvojums saista lejupielādēto instalētāju ar pirmkodu un rīku ķēdi, ko ikviens var pārbūvēt. Tas neko nepasaka par pakalpojumu, kuram klients pievienojas.

Tāpēc lietderīgais jautājums ir šaurs un atbildams. Vai projekts publicē procedūru, un vai jūsu konkrētais artefakts tai atbilst?

Kur būvējums pārstāj būt deterministisks

Kompilatori iestrādā laikspiedolus, absolūtos ceļus un būvēšanas resursdatoru nosaukumus, ja vien tiem to neaizliedz. Arhīvi reģistrē failu secību un modificēšanas laikus, saišu veidotāji maina izvadi atkarībā no rīku ķēdes versijas, un paralēlā saspiešana var pārkārtot blokus. Jebkurš no tiem liek diviem viena pirmkoda būvējumiem atšķirties baitos, nenotiekot nekam draudīgam. Determinisms tiek iestrādāts būvējumā inženieriski, tas nekad netiek mantots pēc noklusējuma.

Projektam, kas apgalvo reproducējamību, jānosauc piemērotā normalizācija: fiksēti laikspiedoli, kartēti ceļi, sakārtoti arhīva ieraksti, fiksētas kompilatora un atkarību versijas. Bez šī saraksta neatbilstību nevar interpretēt, jo likumīgas variācijas telpa nav definēta.

Arī deklarētajiem ievadiem jābūt pilnīgiem. Repozitorija URL bez atzīmes nav revīzija, bloķēšanas fails bez hash nav atkarību kopa, un būvēšanas skriptam, kas izpildes laikā lejupielādē rīku, ir ievads, ko neviens nevar fiksēt. Katra nepilnība vēlāk kļūst par atšķirību. Pabeidziet sarakstu pirms kaut kā salīdzināšanas, jo nepilnīgs saraksts nevar neizdoties tā, lai tam būtu nozīme.

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

Ko salīdzināšana patiesībā pārbauda

Neatkarīga puse pārbūvē deklarētajā vidē un salīdzina izvadi ar publicēto artefaktu. Bitu identiskums ir spēcīgā forma; dokumentēts normalizācijas solis, kurā reģistrētā atšķirība tiek apgriezta un rezultāti pēc tam sakrīt, ir vājākā, bet joprojām noderīgā forma.

Salīdzināšana attiecas uz bināro failu. Paraksts atbild uz citu jautājumu: tas saista laidienu ar atslēgu un atslēgu ar identitāti, un projektam var būt derīgi paraksti uz artefaktiem, ko neviens nav pārbūvējis. Abas pārbaudes sakrājas, nevis aizstāj viena otru.

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

Palaidiet abas pirms instalēšanas un salīdziniet hash ar publicēto tam pašam laidienam un platformai. Hash, kas atbilst piegādātāja lapai, pierāda, ka lejupielāde ieradās nebojāta; pārbūvēts binārais fails, kas atbilst piegādātāja publicētajam hash, pierāda ko spēcīgāku par to, kā tas tika izgatavots.

Kāpēc neatbilstība nav viltošanas pierādījums

Lielākā daļa neatbilstību nāk no ievada, ko neviens nekontrolēja. Cita kompilatora labojuma versija, atkļūdošanas simbolos noplūdis būvēšanas ceļš, lokalizācija, kas mainīja kārtošanas secību, vai pēc salīdzināšanas piemērots iepakošanas solis — visi dod citādu hash nekā godīgs darbs.

Tāpēc neatbilstība jālasa pret dokumentēto procedūru, pirms tā kļūst par stāstu. Ja procedūra fiksē visu un atšķirība paliek neizskaidrota, tas ir īsts atradums, ko ir vērts izvirzīt projektam. Ja procedūra klusē par iepakošanu, atšķirība var būt pilnīgi gaidīta.

Simetrija šeit arī ir svarīga: atbilstība nepierāda, ka pirmkodam nav defektu, tikai to, ka binārais fails tam atbilst. Labi auditēts kods un reproducējams kods ir dažādas īpašības, un projekts var būt ar vienu bez otras.

Ko apgalvojums saka par pakalpojumu aiz lietotnes

Klients ir programma jūsu ierīcē; pakalpojums ir serveri, kontu sistēmas un glabāšanas politika citur. Reproducējamība ierobežo pirmo un neko nepasaka par otro, lai cik rūpīgi instalētājs tiktu pārbaudīts.

Galapunkta konfigurācija var mainīties arī pēc instalēšanas, izmantojot attālos iestatījumus vai pakalpojumu sniedzēja kontrolētu profilu. Šīs izmaiņas nāk pa tīklu, un tās neaptver neviens hash, ko aprēķinājāt pirms savienojuma.

Lasiet apgalvojumu tā patiesajā apjomā, pēc tam atsevišķi pārbaudiet blakus jautājumu: ko pakalpojumu sniedzējs reģistrē un saskaņā ar kuru jurisdikciju atbild uz pieprasījumiem. Pārbaudīts binārais fails un nepārbaudīts pakalpojums var pastāvēt līdzās, un tieši tas ir gadījums, kuru piegādes ķēdes pārbaude ir radīta, lai padarītu redzamu, nevis labotu.

Saistītie raksti