VPN klijent otvorenog koda: šta kod dokazuje, a šta ne može
Javni repozitorij je dokaz o izvornom kodu, ne o build-u koji ste instalirali ni o serverima iza njega. Uparite izdanje, pa proširite pregled.
Izvorni kod je objavljen, licenca je čista, a veza se i dalje ne može provjeriti od početka do kraja. Taj jaz je uobičajen i nije skandal. Objavljivanje koda čini jednu komponentu provjerljivom ljudima koji nisu bili pozvani, a to je stvarno i neobično svojstvo. Iz toga ne slijedi da binarni fajl koji ste instalirali dolazi iz tog koda, ni da je bilo šta što provajder pokreće na drugoj strani uopšte pregledano.
Odvojite komponentu od proizvoda
Četiri stvari mogu nositi oznaku otvorenog koda i rijetko su sve otvorene. Klijentska aplikacija je ono što ljudi misle. Implementacija protokola ispod nje je drugi artefakt, ponekad biblioteka, a ponekad kod u stablu. Serverski softver je treći, a provajderova vlastita infrastruktura, portal za račune i alati za podršku su četvrti. Svaki može biti otvoren ili zatvoren nezavisno.
Zato tvrdnje poput "naša aplikacija je otvorenog koda" opisuju prvu stavku i ostavljaju ostalo bez odgovora, što nije neiskrenost koliko zamjena kategorije. Korisno pitanje je koji repozitorij, na kojoj oznaci, odgovara komponenti na koju se oslanjate.
Ta razlika objašnjava i zašto dva proizvoda s identičnim otvorenim klijentima mogu nuditi vrlo različita uvjeravanja. Klijent je dio koji možete provjeriti; ponašanje operatera je dio koji morate procijeniti drugim sredstvima.
Uparite instalirani build s objavljenom oznakom
Repozitorij je zapis namjere; binarni fajl na vašem disku je ono što se izvršava. Zatvaranje tog jaza je mehanička vježba i počinje utvrđivanjem šta je tačno instalirano, a ne šta je stranica za preuzimanje reklamirala.
| Component | What inspection can show | What it leaves untouched |
|---|---|---|
| Client source | How profiles, packets and optional telemetry are handled | Whether the shipped binary matches that source |
| Build output | Whether a declared build reproduces a matching artefact | Whether the source is correct or the toolchain is clean |
| Server software | What the implementation is capable of logging | What the operator actually configures and retains |
| Account and support systems | Almost nothing, unless they are separately published | Everything about how those systems treat your data |
Metapodaci paketa govore vam verziju i porijeklo, što isključuje jednostavan slučaj zastarjelog ili zamijenjenog paketa. Ne govore vam kako je taj paket kompajliran, a upravo na to pitanje postoje reproducibilni build-ovi. Reproducibilni build-ovi omogućavaju nezavisnoj strani da ponovo izgradi iz istog izvora i uporedi rezultat bajt po bajt, pa nesklad postaje dokaz, a ne sumnja.
Čak i savršeno podudaranje dokazuje manje nego što ljudi priželjkuju. Ono pokazuje da artefakt odgovara izvoru i receptu za build, ali ne da je izvor bez nedostataka, niti da je korišteni lanac alata bio pouzdan. Oboje vrijedi znati, ali to su različite tvrdnje.
dpkg -S /usr/bin/wg
apt-cache policy wireguard-tools
sha256sum /usr/bin/wgGdje simptom obično počinje
Žalba koja pokreće ovo čitanje rijetko je "kod je zatvoren". Obično je to konkretno zapažanje: klijent koji zove negdje neočekivano, verzija koja se razlikuje od bilješki o izdanju, ili proces podrške koji traži više nego što tunelu treba. Svaka od tih točaka ukazuje na drugu komponentu.
Neočekivani mrežni saobraćaj s klijenta je pitanje klijentskog izvora i na njega se može odgovoriti čitanjem putanje koda koja otvara vezu. Nesklad verzija je pitanje pakovanja. Proces podrške koji traži identifikacione dokumente je pitanje sistema računa i nijedan klijentski audit to neće riješiti.
Imenovanje komponente pretvara nejasno nepovjerenje u konkretnu provjeru. Na konkretnu provjeru se može odgovoriti, s njom raspravljati ili je zatvoriti. Alternativa je trajna sumnja bez sljedećeg koraka.
Šta pregled ne može dosegnuti i šta umjesto toga učiniti
Čuvanje podataka na provajderovim serverima je izvan klijentovog domašaja. Isto vrijedi za ponašanje portala za naplatu, dobavljača za provjeru prevara ili podrške koja čuva priloge. Pregled klijenta koji se rastegne na "auditirali smo uslugu" daje tvrdnju koju dokazi ne podržavaju.
Pročitajte šta operater objavljuje o čuvanju i zahtjevima, zabilježite datum i tretirajte to kao izjavu zainteresovane strane, a ne kao mjerenje. To je slabiji oblik dokaza, a izričitost o razlici korisnija je od podizanja mu vrijednosti u prepričavanju.
Zatim iskoristite ono što imate kao jedan od nekoliko ulaza: identitet instaliranog izdanja, da li se softver održava, kako je klijent konfigurisan i šta operater govori o vlastitim sistemima. Otvoreni kod jača tu procjenu na jednom mjestu. On ne zamjenjuje ostatak.
Tvrdnja o auditu uvijek treba imenovati svoje komponente i verzije. Ako izvještaj ne može reći koji je repozitorij i koji build pregledao, on opisuje namjeru, a ne proizvod.