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

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

Первый шаг: Скачайте с канала, который называет проект

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

Файл, названный в честь проекта, ничего не доказывает. Переименовать установщик — операция на секунду, и именно имя результат поиска показывает первым.

Второй шаг: Проверьте подпись по известной личности

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

# macOS: who signed this app, and is the signature intact?
codesign -dv --verbose=4 /Applications/Tunnel.app
spctl -a -vvv -t install /Applications/Tunnel.app

# Windows: signature and publisher of the installer
Get-AuthenticodeSignature .\tunnel-setup.exe | Format-List Status, SignerCertificate

# Linux: detached signature from the project's release page
gpg --verify tunnel-1.4.2.tar.gz.asc tunnel-1.4.2.tar.gz

Читайте личность, а не слово статуса. Посторонний разработчик с действующим сертификатом создаёт действительную подпись. Операционная система, сообщающая о признанном издателе, сказала вам только то, что кто-то заплатил за сертификат.

Третий шаг: Сравните хеш с независимым источником

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

# Linux and macOS
shasum -a 256 tunnel-1.4.2.dmg

# compare against the value published on the project's own release page
# not against a value copied from the same mirror

Когда проект публикует подписанные контрольные суммы или подписанный манифест выпуска, проверяйте подпись над списком, а не над каждым файлом отдельно. Так один доверенный эталон покрывает весь выпуск.

После установки: Сохраняйте путь обновления

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

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

Два источника, а не один

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

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

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