Інсталятор VPN із дзеркала? Спершу перевірте видавця
Канал завантаження визначає, який код виконується і хто може його оновлювати. Спершу перевірте підпис, джерело контрольної суми та видавця профілю.
Тунель працював, інтерфейс з'явився, і сеанс залишався стабільним цілий тиждень. Ніщо з цього не каже, хто зібрав інсталятор. Клієнт 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
Коли проєкт публікує підписані контрольні суми або підписаний маніфест випуску, перевіряйте підпис над списком, а не над кожним файлом окремо. Так один довірений еталон охоплює весь випуск.
Після встановлення: Зберігайте шлях оновлення
Підтримуваний канал продовжує мати значення після завершення встановлення. Перепаковані збірки можуть нести власний оновлювач, і саме він вирішує, що запуститься наступного місяця. Збірка, яка ніколи не оновлюється, не безпечніша. Вона просто старіша.
Запишіть, як клієнт має оновлюватися і чи відповідає за цей крок система керування. Якщо відповідь — ручне завантаження з форуму, питання ланцюга постачання так і не було по-справжньому закрито.
Два джерела, а не одне
Розробник клієнта й видавець профілю — різні сторони. Офіційний клієнт, що імпортує профіль від стороннього оператора, — звичайна ситуація, і профіль заслуговує на власну перевірку: хто його видав, як його доставлено і чи збігається сертифікат сервера з очікуваним ім'ям.
Тримайте обидва джерела розрізнюваними у своїх нотатках. У момент, коли клієнт замінюють або пристрій відновлюють із резервної копії, саме ці два рядки не дають невідомій збірці чи невідомому профілю повернутися разом з рештою даних.