Исходный код опубликован, лицензия чиста, а соединение по-прежнему нельзя проверить от начала до конца. Этот разрыв обычен и не является скандалом. Публикация кода делает один компонент доступным для проверки людьми, которых не приглашали, и это реальное и необычное свойство. Из этого не следует, что установленный вами бинарный файл происходит из этого кода, или что что-либо, что провайдер запускает на другой стороне, вообще проверялось.

Отделите компонент от продукта

Четыре вещи могут нести ярлык открытого кода, и редко все они открыты. Клиентское приложение — это то, что имеют в виду люди. Реализация протокола под ним — другой артефакт, иногда библиотека, а иногда код в дереве. Серверное программное обеспечение — третье, а собственная инфраструктура провайдера, портал учётной записи и инструменты поддержки — четвёртое. Каждое может быть открытым или закрытым независимо.

Поэтому утверждения вроде "наше приложение с открытым кодом" описывают первый пункт и оставляют остальное без ответа, что не столько нечестность, сколько смещение категории. Полезный вопрос: какой репозиторий, на каком теге, соответствует компоненту, на который вы полагаетесь.

Это различие также объясняет, почему два продукта с одинаковыми открытыми клиентами могут давать совершенно разные гарантии. Клиент — это часть, которую вы можете проверить; поведение оператора — часть, которую нужно оценивать другими средствами.

Сопоставьте установленную сборку с опубликованным тегом

Репозиторий — это запись о намерении; бинарный файл на диске — то, что исполняется. Закрыть этот разрыв — механическое упражнение, и оно начинается с точного определения того, что установлено, а не того, что обещала страница загрузки.

ComponentWhat inspection can showWhat it leaves untouched
Client sourceHow profiles, packets and optional telemetry are handledWhether the shipped binary matches that source
Build outputWhether a declared build reproduces a matching artefactWhether the source is correct or the toolchain is clean
Server softwareWhat the implementation is capable of loggingWhat the operator actually configures and retains
Account and support systemsAlmost nothing, unless they are separately publishedEverything about how those systems treat your data

Метаданные пакета сообщают версию и происхождение, что исключает простой случай устаревшего или подменённого пакета. Они не говорят, как этот пакет был скомпилирован, и именно на этот вопрос отвечают воспроизводимые сборки. Воспроизводимые сборки позволяют независимой стороне пересобрать из того же исходника и сравнить результат побайтово, так что расхождение становится доказательством, а не подозрением.

Даже идеальное совпадение доказывает меньше, чем люди надеются. Оно показывает, что артефакт соответствует исходнику и рецепту сборки, но не то, что исходник без дефектов, и не то, что использованная цепочка инструментов была надёжной. И то и другое стоит знать, но это разные утверждения.

dpkg -S /usr/bin/wg
apt-cache policy wireguard-tools
sha256sum /usr/bin/wg

Откуда обычно начинается симптом

Жалоба, из-за которой возникает это чтение, редко звучит как "код закрыт". Обычно это конкретное наблюдение: клиент, который звонит куда-то неожиданно, версия, отличающаяся от примечаний к выпуску, или процесс поддержки, запрашивающий больше, чем нужно туннелю. Каждый из этих пунктов указывает на другой компонент.

Неожиданный сетевой трафик от клиента — это вопрос исходного кода клиента, и на него можно ответить, прочитав путь кода, который открывает соединение. Расхождение версий — вопрос упаковки. Процесс поддержки, запрашивающий документы, удостоверяющие личность, — вопрос системы учётных записей, и никакой аудит клиента этого не решит.

Называние компонента превращает смутное недоверие в конкретную проверку. На конкретную проверку можно ответить, с ней можно спорить или её закрыть. Альтернатива — постоянное подозрение без следующего шага.

Чего проверка не может достичь и что делать вместо этого

Хранение на серверах провайдера находится вне досягаемости клиента. То же касается поведения платёжного портала, поставщика проверки на мошенничество или службы поддержки, которая хранит вложения. Проверка клиента, растянутая до "мы провели аудит сервиса", делает утверждение, которое доказательства не поддерживают.

Прочитайте, что оператор публикует о хранении и запросах, отметьте дату и относитесь к этому как к заявлению заинтересованной стороны, а не как к измерению. Это более слабая форма доказательства, и прямо сказать о разнице полезнее, чем повышать её статус при пересказе.

Затем используйте то, что у вас есть, как один из нескольких входов: идентичность установленного выпуска, поддерживается ли программное обеспечение, как настроен клиент и что оператор говорит о своих собственных системах. Открытый код усиливает эту оценку в одном пункте. Он не заменяет остальное.

Утверждение об аудите всегда должно называть свои компоненты и версии. Если отчёт не может сказать, какой репозиторий и какую сборку он изучил, он описывает намерение, а не продукт.

Похожие статьи