Reproduzéierbar Builds fir VPN-Apps: wat eng Iwwereneestëmmung beweist
Eng iwwereneestëmmend Neiopbau verbënnt en verdeelte binäre Fichier mam deklaréierte Quellcode an den Tools. Si seet näischt iwwer de VPN-Service hannert deem Fichier oder seng Loggen.
Reproduzéierbarkeet ass eng Eegenschaft vun der Supply Chain: déiselwecht deklaréiert Inputen mussen déiselwecht Artefakt produzéieren. Fir e VPN-Client verbënnt dës Ausso den Installater, deen Dir erofgelueden hutt, mam Quellcode an der Toolchain, déi jiddereen nei baue kann. Si seet näischt iwwer de Service, mat deem sech de Client verbënnt.
Déi nëtzlech Fro ass dofir schmuel a beäntwertbar. Publizéiert de Projet eng Prozedur, a passt Ären spezifeschen Artefakt dozou?
Wou e Build ophält deterministesch ze sinn
Compilere bauen Zäitstempel, absolutte Weeër an Nimm vu Build-Hosten an, ausser et gëtt hinnen anescht gesot. Archiven registréieren d'Reiefolleg vun de Fichieren an d'Ännerungszäiten, Linker variéieren hir Ausgab mat der Versioun vun der Toolchain, a parallell Kompressioun kann Bléck ëmstrukturéieren. Jiddereen dovun mécht, datt zwee Builds vum selwechte Quellcode sech a Bytes ënnerscheeden, ouni datt eppes Onheemleches geschitt. Determinismus gëtt an e Build eragebaut, et gëtt ni als Standard geierft.
E Projet, dee Reproduzéierbarkeet behaapt, muss d'Normaliséierung nennen, déi en uwendt: fix Zäitstempel, gemappte Weeër, sortéiert Archiv-Entréeën, festgehalte Compiler- a Dependenzversiounen. Ouni dës Lëscht kann eng Ofwäichung net interpretéiert ginn, well de Raum vun der legitimer Variatioun ondefinéiert ass.
Déi deklaréiert Inputen mussen och komplett sinn. Eng Repository-URL ouni Tag ass keng Revisioun, eng Spärdatei ouni Hash ass kee Set vun Dependenzen, an e Build-Skript, deen e Tool zur Laufzäit eroflued, huet en Input, deen keen op enger Plaz festhale kann. All Lach gëtt méi spéit eng Differenz. Kompletéiert d'Lëscht, ier Dir eppes vergläicht, well eng onkomplett Lëscht net op eng Manéier versoe kann, déi eppes bedeit.
| 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 |
Wat de Verglach tatsächlech kontrolléiert
Eng onofhängeg Partei baut an der deklaréierter Ëmgéigend nei a vergläicht d'Ausgab mam publizéierten Artefakt. Bit-identesch ass déi staark Form; en dokumentéierten Normaliséierungsschrëtt, wou eng fixéiert Differenz ëmgedréint gëtt an d'Resultater duerno iwwerenee stëmmen, ass déi méi schwaach, awer nach ëmmer nëtzlech Form.
De Verglach betrëfft de binäre Fichier. Eng Ënnerschrëft beäntwert eng aner Fro: si verbënnt eng Verëffentlechung mat engem Schlëssel a e Schlëssel mat enger Identitéit, an e Projet kann gëlteg Ënnerschrëfte iwwer Artefakte hunn, déi keen nei gebaut huet. Déi zwou Kontrollen stappelen sech, amplaz sech ze ersetzen.
sha256sum wireguard-installer.msi gpg --verify wireguard-installer.msi.sig wireguard-installer.msi
Féiert béid aus, ier Dir installéiert, a vergläicht den Hash mat deem, dee fir déiselwecht Verëffentlechung an déi selwecht Plattform publizéiert gouf. En Hash, dee mat der Säit vum Hiersteller iwwerenee stëmmt, beweist, datt den Download onbeschiedegt ukomm ass; e nei gebaute binäre Fichier, deen mam publizéierten Hash vum Hiersteller iwwerenee stëmmt, beweist eppes méi Staarkes iwwer wéi en hiergestallt gouf.
Firwat eng Ofwäichung keen Beweis fir Manipulatioun ass
Déi meescht Ofwäichungen kommen vun engem Input, deen keen kontrolléiert huet. Eng aner Compiler-Patch-Verëffentlechung, e Build-Wee, dee bis an d'Debug-Symboler duerchgesickert ass, eng Locale, déi d'Sortéierordrung geännert huet, oder e Verpackungsschrëtt, deen nom Verglach ugewannt gouf, produzéieren alleguer en aneren Hash wéi éierlech Aarbecht.
Dofir muss eng Ofwäichung géint déi dokumentéiert Prozedur gelies ginn, ier se eng Geschicht gëtt. Wann d'Prozedur alles festhält an den Ënnerscheed onerkläert bleift, ass dat eng richteg Entdeckung, déi wäert ass, dem Projet virgeluecht ze ginn. Wann d'Prozedur iwwer Verpackung schweigt, kann den Ënnerscheed komplett erwaart sinn.
D'Symmetrie zielt och hei: eng Iwwereneestëmmung beweist net, datt de Quellcode fräi vu Feeler ass, just datt de binäre Fichier dozou passt. Gudd auditréierte Code a reproduzéierbare Code si verschidden Eegenschaften, an e Projet kann déi eng ouni déi aner hunn.
Wat d'Behaaptung iwwer de Service hannert der App seet
De Client ass e Programm op Ärem Apparat; de Service ass Serveren, Kontosystemer a Späicherpolitike soss anzwousch. Reproduzéierbarkeet begrenzt déi éischt a seet näischt iwwer déi zweet, egal wéi suergfälteg den Installater verifizéiert gëtt.
D'Konfiguratioun vum Endpunkt kann sech och no der Installatioun änneren, duerch Fernasetzungen oder e Profil, dee vum Ubieder kontrolléiert gëtt. Déi Ännerungen kommen iwwer d'Netzwierk an sinn net vun engem Hash ofgedeckt, deen Dir virum Verbannen berechent hutt.
Liest d'Behaaptung an hirem tatsächleche Geltungsberäich a kontrolléiert duerno déi Nopeschfro getrennt: wat den Ubieder registréiert, a ënner wéi enger Juridiktioun en Ufroen beäntwert. En verifizéierte binäre Fichier an en net verifizéierte Service kënnen niefteneen existéieren, an dat ass genau de Fall, deen eng Supply-Chain-Kontroll entworf ass sichtbar ze maachen, net ze fixen.