Malfermfonta VPN-kliento: kion la kodo pruvas kaj kion ĝi ne povas
Publika deponejo estas pruvo pri fontkodo, ne pri la konstruaĵo, kiun vi instalis, nek pri la serviloj malantaŭ ĝi. Kongruigu la eldonon, poste vastigu la revizion.
La fonto estas publikigita, la permesilo estas pura, kaj la konekto ankoraŭ ne estas pruvebla de fino al fino. Tiu manko estas ordinara, kaj ĝi ne estas skandalo. Publikigi kodon igas unu komponanton inspektebla de homoj, kiuj ne estis invititaj, kaj tio estas reala kaj nekutima eco. El tio ne sekvas, ke la binara dosiero, kiun vi instalis, venas el tiu kodo, nek ke io ajn, kion la provizanto funkciigas aliflanke, estis entute reviziita.
Apartigu la komponanton disde la produkto
Kvar aferoj povas porti la etikedon malfermfonta, kaj malofte ĉiuj estas malfermaj. La klienta aplikaĵo estas tio, kion homoj celas. La protokola efektivigo sub ĝi estas alia artefakto, foje biblioteko kaj foje kodo ene de la arbo. La servila programaro estas la tria, kaj la propra infrastrukturo de la provizanto, la konta portalo kaj la subtenaj iloj estas la kvara. Ĉiu povas esti malferma aŭ fermita sendepende.
Sekve, asertoj kiel "nia aplikaĵo estas malfermfonta" priskribas la unuan eron kaj lasas la reston sen traktado, kio ne estas malhonesteco tiom kiom kategorioglito. La utila demando estas, kiu deponejo, ĉe kiu etikedo, respondas al la komponanto, sur kiu vi fidas.
Tiu distingo ankaŭ klarigas, kial du produktoj kun identaj malfermaj klientoj povas oferti tre malsamajn certigojn. La kliento estas la parto, kiun vi povas kontroli; la konduto de la funkciiganto estas la parto, kiun vi devas taksi per aliaj rimedoj.
Kongruigu la instalitan konstruaĵon kun la publikigita etikedo
Deponejo estas registro de intenco; la binara dosiero sur via disko estas tio, kio ruliĝas. Fermi tiun mankon estas mekanika ekzerco, kaj ĝi komenciĝas per identigo de tio, kio estas precize instalita, ne per tio, kion reklamis la elŝuta paĝo.
| 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 |
Pakaĵaj metadatenoj diras al vi la version kaj la devenon, kio ekskludas la trivialan kazon de malnova aŭ anstataŭigita pakaĵo. Ili ne diras al vi, kiel tiu pakaĵo estis kompilita, kaj ĝuste tiun demandon ekzistas reprodukteblaj konstruoj por respondi. Reprodukteblaj konstruoj permesas al sendependa partio rekonstrui el la sama fonto kaj kompari la eligon bajton post bajto, tiel ke malkongruo fariĝas pruvo anstataŭ suspekto.
Eĉ perfekta kongruo pruvas malpli ol homoj esperas. Ĝi montras, ke la artefakto respondas al la fonto kaj al la konstrua recepto, ne ke la fonto estas sendifekta, kaj ne ke la uzita ilaro estis fidinda. Ambaŭ indas scii, sed temas pri malsamaj asertoj.
dpkg -S /usr/bin/wg
apt-cache policy wireguard-tools
sha256sum /usr/bin/wgKie simptomo kutime komenciĝas
La plendo, kiu kaŭzas ĉi tiun legadon, malofte estas "la kodo estas fermita". Kutime ĝi estas konkreta observo: kliento, kiu telefonas al ie neatendita, versio, kiu diferencas de la eldonnotoj, aŭ subtena procezo, kiu petas pli ol la tunelo bezonus. Ĉiu el tiuj punktoj indikas alian komponanton.
Neatendita reta trafiko de la kliento estas demando pri la klienta fonto, kaj ĝi estas respondebla legante la kodvojon, kiu malfermas la konekton. Malkongruo de versio estas demando pri pakado. Subtena procezo, kiu postulas identigajn dokumentojn, estas demando pri la konta sistemo, kaj neniu klienta revizio solvos ĝin.
Nomante la komponanton, vi turnas vagan malfidon en konkretan kontrolon. Konkretan kontrolon oni povas respondi, disputi aŭ fermi. La alternativo estas konstanta suspekto sen sekva paŝo.
Kion la revizio ne povas atingi, kaj kion fari anstataŭe
Retenado sur la serviloj de la provizanto estas ekster la atingopovo de la kliento. Same la konduto de faktura portalo, de provizanto de fraŭdkontrolo aŭ de subtena prizorgo, kiu konservas aldonaĵojn. Klienta revizio, kiu etendiĝas al "ni reviziis la servon", faras aserton, kiun la pruvoj ne subtenas.
Legu tion, kion la funkciiganto publikigas pri retenado kaj petoj, notu la daton, kaj traktu ĝin kiel deklaron de interesita partio, ne kiel mezuron. Tio estas pli malforta formo de pruvo, kaj esti eksplicita pri la diferenco estas pli utila ol plibonigi ĝin en la rerakonto.
Poste uzu tion, kion vi havas, kiel unu el pluraj enigoj: la identecon de la instalita eldono, ĉu la programaro estas prizorgata, kiel la kliento estas agordita, kaj kion la funkciiganto diras pri siaj propraj sistemoj. Malferma kodo fortigas tiun taksadon ĉe unu punkto. Ĝi ne anstataŭigas la reston.
Revizia aserto devus ĉiam nomi siajn komponantojn kaj versiojn. Se raporto ne povas diri, kiun deponejon kaj kiun konstruaĵon ĝi ekzamenis, ĝi priskribas intencon anstataŭ produkton.