Как проверить цифровую подпись файла: пошаговая инструкция для Windows, macOS и Linux

Скачивая программу из интернета, вы не можете по внешнему виду установщика понять, кто его создал и не подменили ли файл по пути. Цифровая подпись решает обе задачи: она подтверждает, что файл действительно выпущен указанным разработчиком, и гарантирует, что после подписания в него не вносились изменения. В этой статье разберём, как проверить подпись файла на Windows, macOS и Linux, что делать, если подписи нет или она недействительна, и чем цифровая подпись отличается от простой проверки контрольной суммы.

Что на самом деле подтверждает цифровая подпись

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

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

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

Подпись и контрольная сумма: разные инструменты для разных задач

Часто рядом со ссылкой на скачивание публикуют хеш-сумму (например, SHA-256). Это другой механизм проверки, и путать их не стоит:

Критерий Цифровая подпись Хеш-сумма (SHA-256)
Что подтверждает Личность издателя и целостность файла Только целостность файла
Где хранится информация о владельце Внутри самого файла, в сертификате Нигде — нужна отдельная публикация суммы
Можно ли проверить без интернета Да, если сертификат уже в хранилище системы Да, если сумма известна заранее
Слабое место Доверие к удостоверяющему центру и владельцу сертификата Откуда взята сама сумма: если сайт скомпрометирован, подменят и файл, и сумму

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

Проверка подписи в Windows

Способ 1: свойства файла

Самый быстрый путь, доступный без дополнительных программ:

  1. Щёлкните по файлу правой кнопкой мыши и выберите «Свойства».
  2. Откройте вкладку «Цифровые подписи». Если её нет — файл не подписан.
  3. Выберите подпись в списке и нажмите «Сведения».
  4. Посмотрите строку состояния: должно быть написано, что подпись действительна (valid).
  5. Нажмите «Просмотр сертификата» и изучите поле «Кому выдан»: там указано имя издателя.

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

Способ 2: PowerShell

Для более детальной проверки откройте PowerShell и выполните команду:

Get-AuthenticodeSignature «C:\путь\к\файлу.exe» | Format-List

В выводе интересуют поля Status (должно быть Valid), SignerCertificate (издатель и срок действия сертификата) и TimeStamper (служба отметки времени). Отметка времени важна: благодаря ей подпись остаётся действительной даже после истечения срока самого сертификата. Если её нет, подпись «умирает» вместе с сертификатом, и старый файл начнёт показывать ошибки проверки.

Проверка подписи в macOS

В macOS приложения распространяются в виде пакетов .app или образов .dmg, и проверка устроена иначе, чем в Windows. Система Gatekeeper автоматически проверяет подпись при первом запуске, но можно проверить вручную через Терминал:

codesign —verify —deep —strict /Applications/ИмяПриложения.app

Если команда завершилась без сообщений об ошибках, подпись цела. Чтобы увидеть, кто именно подписал приложение, выполните:

codesign -dv /Applications/ИмяПриложения.app

В выводе найдите поля Authority (цепочка сертификатов) и TeamIdentifier (идентификатор команды разработчика). Для приложений из App Store дополнительно работает нотаризация: Apple проверяет такие программы на базовые проблемы перед распространением, и отсутствие нотаризации само по себе не делает приложение вредоносным, но означает, что оно прошло меньший уровень контроля.

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

Проверка подписи в Linux

В мире Linux доминирует модель подписей GPG (GNU Privacy Guard): разработчики подписывают пакеты, репозитории и релизы своими ключами. Типичный порядок проверки выглядит так:

  1. Найдите на официальном сайте проекта открытый ключ разработчика (обычно файл .asc или ссылка на keyserver) и отпечаток ключа — короткую уникальную последовательность символов.
  2. Импортируйте ключ: gpg —import ключ.asc.
  3. Сверьте отпечаток импортированного ключа с опубликованным на сайте проекта. Это критический шаг: именно совпадение отпечатков защищает от подмены ключа.
  4. Проверьте подпись файла: gpg —verify файл.sig файл. Ответ Good signature означает, что файл подписан этим ключом и не изменён.

Предупреждение о том, что ключу «не присвоено доверие» (no indication of trust), нормально при первой проверке: оно лишь говорит, что вы лично ещё не пометили этот ключ как доверенный. Для пакетов из дистрибутива подписи проверяет менеджер пакетов автоматически, вручную обычно проверяют образы ISO и сторонние бинарники.

Если подписи нет вообще

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

  • Убедитесь, что скачиваете файл с официального сайта проекта, а не с зеркала или файлообменника.
  • Проверьте хеш-сумму файла (в Windows: Get-FileHash файл.exe -Algorithm SHA256; в macOS и Linux: shasum -a 256 файл) и сверьте её со значением, опубликованным разработчиком.
  • Прогоните файл через онлайн-сервисы анализа вроде VirusTotal: они проверяют файл десятками антивирусных движков. Помните, что чистый результат не даёт гарантии, а единичное срабатывание может быть ложным.
  • Оцените репутацию источника: как давно существует проект, есть ли у него публичный репозиторий кода, обсуждают ли его независимые пользователи.

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

Типичные ошибки при проверке

  • Доверять имени в окне установщика. Название компании на баннере инсталлятора легко подделать; значима только информация из сертификата, которую проверяет система.
  • Игнорировать расхождение имён. Если сертификат выдан малоизвестной фирме, а файл якобы от крупного вендора, это тревожный признак: иногда злоумышленники подписывают вредоносные файлы собственными сертификатами.
  • Считать предупреждение SmartScreen или Gatekeeper вердиктом о безопасности. Эти механизмы реагируют на отсутствие подписи или низкую распространённость файла, а не на наличие угрозы. Легитимные новые программы тоже попадают под фильтр.
  • Проверять хеш, взятый с того же скомпрометированного сайта. Эталонную сумму ищите на отдельном ресурсе, в официальной документации или рассылке проекта.
  • Отключать защиту системы, чтобы всё-таки запустить файл. Обход предупреждений оправдан только тогда, когда вы независимо подтвердили источник и целостность файла.

Практические сценарии

Вы скачиваете известную программу с официального сайта. Проверьте подпись в свойствах файла: издатель должен совпадать с названием компании, статус — Valid. Этого достаточно в большинстве случаев.

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

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

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

Что делать дальше

Главный принцип прост: подпись превращает вопрос «выглядит ли файл надёжно» в проверяемый факт. Перед запуском любого установщика потратьте минуту: откройте свойства файла или выполните одну команду терминала, посмотрите имя издателя и статус подписи. Если подписи нет — сверьте хеш-сумму с официально опубликованной. Если подпись сломана — не рискуйте и возьмите файл из другого источника. А для программ, которым вы собираетесь дать доступ к важным данным или системе, этих мер недостаточно: дополнительно оцените сам источник и репутацию разработчика.

Материал носит информационный характер и описывает общие принципы проверки файлов. Конкретные команды и поведение системных механизмов зависят от версии операционной системы и настроек безопасности; при работе с файлами, вызывающими серьёзные подозрения, обратитесь к специалисту по информационной безопасности.

PEFile.ru