Atvirojo kodo VPN klientas: ką kodas įrodo ir ko negali
Vieša saugykla yra įrodymas apie šaltinio kodą, o ne apie jūsų įdiegtą kompiliaciją ar už jos esančius serverius. Suderinkite leidimą, tada išplėskite peržiūrą.
Šaltinis paskelbtas, licencija švari, o ryšio vis tiek negalima patikrinti nuo galo iki galo. Šis atotrūkis yra įprastas ir tai ne skandalas. Kodo paskelbimas leidžia vieną komponentą patikrinti žmonėms, kurie nebuvo pakviesti, ir tai yra tikra bei neįprasta savybė. Iš to neišplaukia, kad jūsų įdiegtas dvejetainis failas kilęs iš to kodo, ar kad tai, ką paslaugų teikėjas vykdo kitoje pusėje, apskritai buvo peržiūrėta.
Atskirkite komponentą nuo produkto
Keturi dalykai gali nešti atvirojo kodo žymą, ir retai visi jie yra atviri. Kliento programa yra tai, ką žmonės turi omenyje. Žemiau esantis protokolo įgyvendinimas yra kitas artefaktas, kartais biblioteka, o kartais kodas medyje. Serverio programinė įranga yra trečia, o paties teikėjo infrastruktūra, paskyros portalas ir palaikymo įrankiai yra ketvirta. Kiekvienas jų gali būti atviras arba uždaras nepriklausomai.
Todėl teiginiai kaip "mūsų programėlė yra atvirojo kodo" apibūdina pirmą elementą ir palieka kitus neatsakytus, o tai ne nesąžiningumas, o greičiau kategorijos slydimas. Naudingas klausimas yra, kuri saugykla, prie kurios žymos, atitinka komponentą, kuriuo pasitikiate.
Šis skirtumas taip pat paaiškina, kodėl du produktai su identiškais atvirais klientais gali siūlyti labai skirtingas garantijas. Klientas yra dalis, kurią galite patikrinti; operatoriaus elgsena yra dalis, kurią turite vertinti kitomis priemonėmis.
Suderinkite įdiegtą kompiliaciją su paskelbta žyma
Saugykla yra ketinimo įrašas; dvejetainis failas jūsų diske yra tai, kas vykdoma. Užpildyti šį atotrūkį yra mechaninis pratimas, ir jis prasideda nuo tikslaus nustatymo, kas įdiegta, o ne ką reklamavo atsisiuntimo puslapis.
| 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 |
Paketo metaduomenys nurodo versiją ir kilmę, o tai pašalina paprastą pasenusio ar pakeisto paketo atvejį. Jie nenurodo, kaip tas paketas buvo sukompiliuotas, ir būtent į šį klausimą atsako atkuriamosios kompiliacijos. Atkuriamosios kompiliacijos leidžia nepriklausomai šaliai perkompiliuoti iš to paties šaltinio ir palyginti rezultatą baitas po baito, todėl neatitikimas tampa įrodymu, o ne įtarimu.
Net tobulas sutapimas įrodo mažiau, nei žmonės tikisi. Jis parodo, kad artefaktas atitinka šaltinį ir kompiliavimo receptą, bet ne tai, kad šaltinis be trūkumų, ir ne tai, kad naudota įrankių grandinė buvo patikima. Abi žinios vertingos, bet tai skirtingi teiginiai.
dpkg -S /usr/bin/wg
apt-cache policy wireguard-tools
sha256sum /usr/bin/wgKur paprastai prasideda simptomas
Skundas, dėl kurio imamasi šio skaitymo, retai būna "kodas uždarytas". Paprastai tai konkretus pastebėjimas: klientas, kuris skambina kažkur netikėtai, versija, kuri skiriasi nuo leidimo pastabų, arba palaikymo procesas, kuris prašo daugiau, nei tuneliui reikėtų. Kiekvienas iš šių punktų rodo kitą komponentą.
Netikėtas tinklo srautas iš kliento yra kliento šaltinio kodo klausimas, ir į jį galima atsakyti perskaičius kodo kelią, kuris atveria ryšį. Versijų neatitikimas yra pakavimo klausimas. Palaikymo procesas, prašantis asmens dokumentų, yra paskyrų sistemos klausimas, ir joks kliento auditas to neišspręs.
Komponento įvardijimas paverčia neaiškų nepasitikėjimą konkrečiu patikrinimu. Į konkretų patikrinimą galima atsakyti, ginčytis ar jį uždaryti. Alternatyva yra nuolatinis įtarimas be kito žingsnio.
Ko peržiūra negali pasiekti, ir ką vietoj to daryti
Duomenų saugojimas teikėjo serveriuose yra už kliento ribų. Taip pat elgsena atsiskaitymo portalo, sukčiavimo tikrinimo paslaugų teikėjo ar palaikymo tarnybos, kuri saugo priedus. Kliento peržiūra, ištempta iki "mes atlikome paslaugos auditą", pateikia teiginį, kurio įrodymai nepalaiko.
Perskaitykite, ką operatorius skelbia apie saugojimą ir užklausas, pažymėkite datą ir traktuokite tai kaip suinteresuotos šalies pareiškimą, o ne matavimą. Tai silpnesnė įrodymų forma, ir aiškiai įvardyti skirtumą naudingiau nei pakelti jį perpasakojant.
Tada naudokite tai, ką turite, kaip vieną iš kelių įėjimų: įdiegto leidimo tapatybę, ar programinė įranga palaikoma, kaip sukonfigūruotas klientas ir ką operatorius sako apie savo sistemas. Atviras kodas sustiprina šį vertinimą viename taške. Jis nepakeičia likusios dalies.
Audito teiginys visada turėtų įvardyti savo komponentus ir versijas. Jei ataskaita negali pasakyti, kurią saugyklą ir kurią kompiliaciją ji ištyrė, ji apibūdina ketinimą, o ne produktą.