Кліент VPN з адкрытым кодам: што код даказвае і чаго ён не можа
Адкрыты рэпазіторый — гэта доказ пра зыходны код, а не пра зборку, якую вы ўсталявалі, ці пра серверы за ёй. Супастаўце выпуск, потым пашырце агляд.
Крынічны код апублікаваны, ліцэнзія чыстая, а злучэнне ўсё яшчэ немагчыма праверыць ад пачатку да канца. Гэтая прага — звычайная справа, і гэта не скандал. Публікацыя кода робіць адзін кампанент даступным для праверкі людзьмі, якіх не запрашалі, і гэта рэальная і незвычайная ўласцівасць. З гэтага не вынікае, што бінарны файл, які вы ўсталявалі, паходзіць з таго кода, ці што нешта, што пастаўшчык запускае на іншым баку, наогул праглядалася.
Аддзяліце кампанент ад прадукту
Чатыры рэчы могуць несці ярлык адкрытага кода, і рэдка калі ўсе яны адкрытыя. Кліенцкая праграма — гэта тое, што маюць на ўвазе людзі. Рэалізацыя пратакола пад ёй — іншы артэфакт, часам бібліятэка, а часам код у дрэве. Сервернае праграмнае забеспячэнне — трэцяе, а ўласная інфраструктура пастаўшчыка, партал уліковага запісу і інструменты падтрымкі — чацвёртае. Кожнае можа быць адкрытым або закрытым незалежна.
Таму такія сцверджанні, як "наша праграма з адкрытым кодам", апісваюць першы пункт і пакідаюць астатняе без адказу, што ёсць не хлуснёй, а хутчэй зрухам катэгорыі. Карыснае пытанне: які рэпазіторый, на якім тэгу, адпавядае кампаненту, на які вы спадзяецеся.
Гэтае адрозненне таксама тлумачыць, чаму два прадукты з аднолькавымі адкрытымі кліентамі могуць даваць вельмі розныя гарантыі. Кліент — гэта частка, якую вы можаце праверыць; паводзіны аператара — частка, якую трэба ацэньваць іншымі сродкамі.
Супастаўце ўсталяваную зборку з апублікаваным тэгам
Рэпазіторый — гэта запіс намераў; бінарны файл на вашым дыску — гэта тое, што выконваецца. Зачыніць гэтую прагу — механічная праца, і яна пачынаецца з дакладнага вызначэння таго, што ўсталявана, а не таго, што рэкламавала старонка спампоўкі.
| 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 |
Метаданыя пакета паведамляюць версію і паходжанне, што выключае просты выпадак састарэлага або падмененага пакета. Яны не паведамляюць, як гэты пакет быў скампіляваны, а менавіта на гэтае пытанне існуюць узнаўляльныя зборкі. Узнаўляльныя зборкі дазваляюць незалежнаму боку перасабраць з той жа крыніцы і параўнаць вынік байт за байтам, так што разыходжанне робіцца доказам, а не падазрэннем.
Нават ідэальнае супадзенне даказвае менш, чым спадзяюцца людзі. Яно паказвае, што артэфакт адпавядае крыніцы і рэцэпту зборкі, а не што крыніца без дэфектаў, і не што выкарыстаны ланцуг інструментаў быў надзейным. І тое і другое варта ведаць, але гэта розныя сцверджанні.
dpkg -S /usr/bin/wg
apt-cache policy wireguard-tools
sha256sum /usr/bin/wgДзе звычайна пачынаецца сімптом
Скарга, якая выклікае гэтае чытанне, рэдка бывае "код закрыты". Звычайна гэта канкрэтная назіранне: кліент, што звоніць некуды нечакана, версія, што адрозніваецца ад нататак да выпуску, або працэс падтрымкі, які просіць больш, чым патрэбна тунэлю. Кожны з гэтых пунктаў паказвае на іншы кампанент.
Нечаканы сеткавы трафік ад кліента — пытанне зыходнага кода кліента, і на яго можна адказаць, чытаючы шлях кода, які адкрывае злучэнне. Разыходжанне версій — пытанне ўпакоўкі. Працэс падтрымкі, які запытвае дакументы, што пасведчаюць асобу, — пытанне сістэмы ўліковых запісаў, і ніякі аўдыт кліента гэтага не вырашыць.
Называнне кампанента ператварае неакрэсленае недавер’е ў канкрэтную праверку. На канкрэтную праверку можна адказаць, паспрачацца або яе закрыць. Альтэрнатыва — пастаяннае падазрэнне без наступнага кроку.
Чаго агляд не дасягае і што рабіць замест гэтага
Захаванне на серверах пастаўшчыка — па-за межамі кліента. Таксама як паводзіны плацежнага партала, пастаўшчыка праверкі на махлярства ці службы падтрымкі, якая захоўвае далучэнні. Агляд кліента, расцягнуты да "мы правялі аўдыт сэрвісу", робіць сцверджанне, якога доказы не падтрымліваюць.
Чытайце, што аператар публікуе пра захаванне і запыты, адзначайце дату і стаўцеся да гэтага як да заявы зацікаўленага боку, а не як да вымярэння. Гэта слабейшая форма доказаў, і яснасць наконт розніцы карыснейшая за павышэнне яе статусу пры пераказе.
Затым выкарыстайце тое, што маеце, як адзін з некалькіх уваходаў: ідэнтычнасць усталяванага выпуску, ці падтрымліваецца праграмнае забеспячэнне, як наладжаны кліент і што аператар кажа пра свае сістэмы. Адкрыты код умацоўвае гэтую ацэнку ў адным пункце. Ён не замяняе астатняй яе часткі.
Сцверджанне пра аўдыт павінна заўсёды называць свае кампаненты і версіі. Калі справаздача не можа сказаць, які рэпазіторый і якую зборку яна даследавала, яна апісвае намер, а не прадукт.