La reproducibilitat és una propietat de la cadena de subministrament: les mateixes entrades declarades han de produir el mateix artefacte. Per a un client VPN, aquesta afirmació lliga l'instal·lador que heu baixat amb codi font i eines que qualsevol pot tornar a compilar. No diu res sobre el servei al qual es connecta el client.

La pregunta útil és, per tant, estreta i té resposta. El projecte publica un procediment, i el vostre artefacte concret hi coincideix?

On una compilació deixa de ser determinista

Els compiladors incrusten marques de temps, rutes absolutes i noms d'amfitrions de compilació, tret que se'ls digui que no ho facin. Els arxius registren l'ordre dels fitxers i les hores de modificació, els enllaçadors varien la seva sortida segons la versió del conjunt d'eines, i la compressió en paral·lel pot reordenar blocs. Qualsevol d'aquestes coses fa que dues compilacions del mateix codi font difereixin en bytes sense que passi res sinistre. El determinisme s'incorpora a la compilació amb enginyeria, mai no s'hereta per defecte.

Un projecte que afirma reproducibilitat ha de nomenar la normalització que aplica: marques de temps fixes, rutes mapades, entrades d'arxiu ordenades, versions fixades del compilador i de les dependències. Sense aquesta llista, una discrepància no es pot interpretar, perquè l'espai de variació legítima no està definit.

Les entrades declarades també han de ser completes. Una URL de repositori sense etiqueta no és una revisió, un fitxer de bloqueig sense hash no és un conjunt de dependències, i un script de compilació que baixa una eina en temps d'execució té una entrada que ningú no pot fixar. Cada buit es converteix més tard en una diferència. Completeu la llista abans de comparar res, perquè una llista incompleta no pot fallar d'una manera que signifiqui alguna cosa.

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

Què comprova realment la comparació

Una part independent recompila en l'entorn declarat i compara la sortida amb l'artefacte publicat. La identitat bit a bit és la forma forta; un pas de normalització documentat, en què una diferència registrada s'inverteix i els resultats llavors coincideixen, és la forma més feble però encara útil.

La comparació tracta del binari. Una signatura respon una pregunta diferent: associa una versió amb una clau i una clau amb una identitat, i un projecte pot tenir signatures vàlides sobre artefactes que ningú no ha recompilat. Les dues comprovacions se sumen en lloc de substituir-se.

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

Executeu totes dues abans d'instal·lar i compareu el hash amb el publicat per a la mateixa versió i plataforma. Un hash que coincideix amb la pàgina del proveïdor demostra que la baixada ha arribat intacta; un binari recompilat que coincideix amb el hash publicat del proveïdor demostra una cosa més forta sobre com es va fer.

Per què una discrepància no és prova de manipulació

La majoria de discrepàncies vénen d'una entrada que ningú no va controlar. Una versió de pedaç diferent del compilador, una ruta de compilació que es va filtrar als símbols de depuració, una configuració regional que va canviar l'ordre d'ordenació o un pas d'empaquetatge aplicat després de la comparació produeixen tots un hash diferent del treball honest.

Per això una discrepància s'ha de llegir contra el procediment documentat abans que es converteixi en una història. Si el procediment fixa tot i la diferència continua sense explicació, és una troballa real que val la pena plantejar al projecte. Si el procediment calla sobre l'empaquetatge, la diferència pot ser del tot esperada.

La simetria també hi compta: una coincidència no demostra que el codi font estigui lliure de defectes, només que el binari hi correspon. Codi ben auditat i codi reproduïble són propietats diferents, i un projecte pot tenir una sense l'altra.

Què diu l'afirmació sobre el servei darrere de l'aplicació

El client és un programa al vostre dispositiu; el servei són servidors, sistemes de comptes i polítiques de retenció en un altre lloc. La reproducibilitat limita el primer i no diu res sobre el segon, per molt acuradament que es verifiqui l'instal·lador.

La configuració del punt final també pot canviar després de la instal·lació, mitjançant paràmetres remots o un perfil controlat pel proveïdor. Aquests canvis arriben per la xarxa i no queden coberts per cap hash que hàgiu calculat abans de connectar-vos.

Llegiu l'afirmació pel seu abast real i després comproveu per separat la pregunta adjacent: què registra el proveïdor i sota quina jurisdicció respon les sol·licituds. Un binari verificat i un servei no verificat poden coexistir, i aquest és exactament el cas que una comprovació de la cadena de subministrament està dissenyada a fer visible, no a corregir.

Articles relacionats