Цифровая подпись — это электронный аналог печати разработчика на файле. Она подтверждает две вещи: кто именно выпустил программу и не был ли файл изменён после подписания. Проверить подпись в Windows можно за минуту без сторонних программ: откройте свойства файла, вкладку «Цифровые подписи» (в Windows 11 — «Общие» → «Безопасность») и посмотрите, кто подписал файл и действителен ли сертификат. Если подписи нет вообще или она помечена как недействительная — это серьёзный повод не запускать файл.
Ниже разберём все рабочие способы проверки, объясним, что означает каждый статус подписи, какие ограничения у этой проверки и что делать, если подпись отсутствует или вызывает сомнения.
- Зачем проверять подпись и что она реально гарантирует
- Способ 1. Свойства файла — самый быстрый вариант
- Способ 2. PowerShell — подробная информация о сертификате
- Способ 3. signtool — проверка для продвинутых случаев
- Что делать с результатом проверки
- Подпись действительна и принадлежит ожидаемому издателю
- Подпись есть, но файл изменён после подписания
- Подпись отсутствует
- Сертификат отозван или истёк
- Типичные ошибки при проверке подписи
- Частые вопросы
- Почему у известной бесплатной программы нет подписи?
- Что значит «подписано от имени» одной компании, а программа другой?
- Можно ли подделать цифровую подпись?
- Нужно ли проверять подпись каждого файла большой программы?
- Что запомнить
Зачем проверять подпись и что она реально гарантирует
Подпись работает так: разработчик получает сертификат у удостоверяющего центра, специальной утилитой вычисляет хеш файла (его «отпечаток») и шифрует его своим ключом. Windows при проверке расшифровывает этот отпечаток открытым ключом из сертификата, заново считает хеш файла и сравнивает значения. Совпало — файл не менялся с момента подписания. Не совпало или сертификат недействителен — система предупредит.
Из этого следуют важные ограничения, о которых часто забывают:
- Подпись подтверждает издателя, но не его добросовестность. Злоумышленник тоже может купить сертификат и подписать вредоносную программу своим именем. Поэтому важно смотреть, кому выдан сертификат, а не просто наличие подписи.
- Подпись не гарантирует отсутствие уязвимостей или нежелательного поведения: реклама, сбор телеметрии и агрессивные установщики могут быть легально подписаны.
- Если подпись стоит на установщике, это не значит, что все компоненты внутри тоже подписаны тем же издателем.
Тем не менее для типичного пользователя проверка подписи остаётся самым быстрым фильтром: большинство массовых угроз распространяется через неподписанные или подделанные файлы, а легитимные крупные разработчики подписывают дистрибутивы почти всегда.
Способ 1. Свойства файла — самый быстрый вариант
Подходит для любой версии Windows и не требует ничего устанавливать.
- Найдите файл программы (обычно .exe, .msi или .dll).
- Щёлкните по нему правой кнопкой мыши и выберите «Свойства».
- Откройте вкладку «Цифровые подписи». В Windows 11 путь может отличаться: список подписей иногда показывается прямо на вкладке «Общие» рядом со строкой безопасности.
- Выберите подпись в списке и нажмите «Сведения».
В окне сведений вы увидите имя издателя, дату подписания и статус проверки. Обратите внимание на три вещи:
- Имя подписавшего. Оно должно соответствовать известному вам разработчику. Если файл называется «photo-editor-setup.exe», а подписан он малоизвестной компанией с другим названием — это само по себе подозрительно.
- Статус сертификата. Формулировка «Этот сертификат действителен» — норма. Предупреждение о том, что сертификат отозван или истёк, требует внимания.
- Отметка «файл изменён после подписания». Это худший сценарий: целостность нарушена, файл трогать нельзя.
Если вкладки «Цифровые подписи» нет вовсе — файл не подписан. Это не всегда признак вируса: небольшие open-source проекты часто распространяют сборки без подписи, потому что сертификаты стоят денег. Но именно в этом случае нужно дополнительно сверить файл другими способами, о которых ниже.
Способ 2. PowerShell — подробная информация о сертификате
Когда нужно увидеть больше деталей — срок действия, цепочку доверия, назначение сертификата — удобнее командная строка PowerShell.
- Откройте PowerShell (можно без прав администратора).
- Выполните команду, подставив свой путь:
Get-AuthenticodeSignature «C:\Downloads\program.exe» | Format-List
- Посмотрите поле Status.
Основные значения поля Status и их смысл:
| Статус | Что означает | Что делать |
|---|---|---|
| Valid | Подпись корректна, сертификат действителен, файл не изменён | Файл цел; оцените, доверяете ли издателю |
| HashMismatch | Файл изменён после подписания | Не запускать; скачать заново из официального источника |
| NotSigned | Подписи нет | Искать альтернативный источник или проверять хеш вручную |
| UnknownError | Windows не смогла проверить цепочку сертификатов | Возможна проблема с корневыми сертификатами системы; обновите Windows и повторите |
| NotTrusted | Сертификат отозван или не входит в доверенные | Не запускать до выяснения причин |
Дополнительно можно посмотреть объект целиком: команда (Get-AuthenticodeSignature «C:\path\file.exe»).SignerCertificate покажет издателя, срок действия и серийный номер сертификата. Сравните срок действия с датой подписания: если программа подписана давно, а сертификат уже истёк, это нормально при наличии отметки времени — Windows учитывает её при проверке.
Способ 3. signtool — проверка для продвинутых случаев
Утилита signtool входит в состав Windows SDK и позволяет проверить подпись глубже, включая вложенные подписи и отметку времени. Команда выглядит так: signtool verify /pa /v «C:\path\file.exe». Ключ /pa включает проверку по политике Authenticode (как это делает Windows), /v выводит подробный отчёт.
Этот способ нужен редко: например, когда вы разбираете инсталлятор с несколькими подписями или хотите убедиться, что отметка времени присутствует. Для повседневных задач достаточно свойств файла и PowerShell.
Что делать с результатом проверки
Подпись действительна и принадлежит ожидаемому издателю
Файл цел, и ответственность за его содержимое несёт конкретная компания. Дальнейший риск связан уже не с подделкой, а с доверием к самому издателю. Если компания вам незнакома, потратьте пару минут: найдите официальный сайт разработчика, убедитесь, что название в сертификате совпадает с ним, и почитайте независимые отзывы о программе.
Подпись есть, но файл изменён после подписания
Такое случается по двум причинам. Безобидная: некоторые разработчики пересобирают или «доклеивают» данные к файлу после подписания (например, добавляют метаданные). Опасная: файл был модифицирован злоумышленником — внедрён вредоносный код. Различить их дистанционно сложно, поэтому безопасное правило одно: удалите файл и скачайте его заново из официального источника. Если новая копия снова окажется «изменённой после подписания», напишите разработчику — возможно, это особенность его процесса сборки.
Подпись отсутствует
Отсутствие подписи само по себе не приговор. Действуйте так:
- Убедитесь, что скачали файл с официального сайта проекта, а не с зеркала или файлообменника.
- Если проект публикует контрольные суммы (SHA-256), сверьте хеш своего файла с опубликованным. В PowerShell это делается командой Get-FileHash «C:\path\file.exe» -Algorithm SHA256.
- Прогоните файл через онлайн-сервисы анализа вроде VirusTotal: они проверят файл десятками антивирусных движков и покажут, подписан ли он.
- Запускайте неподписанную программу сначала в ограниченной среде: без прав администратора, желательно на виртуальной машине, если файл получен из сомнительного источника.
Сертификат отозван или истёк
Отзыв сертификата означает, что удостоверяющий центр аннулировал его — например, из-за компрометации ключа. Запускать такой файл рискованно: теоретически он мог быть подписан скомпрометированным ключом. Истёкший сертификат без отметки времени тоже проблема: невозможно установить, когда именно файл был подписан. В обоих случаях ищите более свежую версию программы у разработчика.
Типичные ошибки при проверке подписи
- Доверять любому наличию подписи. Сертификат может принадлежать неизвестному издателю или даже мошеннической компании. Читайте имя подписавшего, а не только галочку «подписано».
- Проверять ярлык вместо файла. Ярлык (.lnk) не содержит подписи программы. Проверяйте сам исполняемый файл, обычно лежащий в Program Files или папке установки.
- Игнорировать предупреждение SmartScreen. Если Windows блокирует запуск малоизвестного файла, это дополнительный сигнал, а не досадная помеха. Не отключайте защиту ради одного запуска, пока не проверили файл иначе.
- Сверять хеш с суммой с того же сайта, откуда скачали файл. Если сайт скомпрометирован, там будет и заражённый файл, и «правильная» сумма для него. Ориентируйтесь на суммы из репозитория исходного кода или независимых источников.
- Считать подписанный установщик гарантией чистоты всех компонентов. Крупные пакеты содержат десятки библиотек; подпись главного исполняемого файла не покрывает их автоматически.
Частые вопросы
Почему у известной бесплатной программы нет подписи?
Кодовые сертификаты стоят заметных денег и требуют юридического оформления, поэтому одиночные разработчики и небольшие open-source проекты нередко распространяют сборки без подписи. В таком случае опирайтесь на контрольные суммы, репутацию репозитория (например, официальные каналы проекта) и результаты антивирусной проверки.
Что значит «подписано от имени» одной компании, а программа другой?
Иногда подписывает материнская компания, подрядчик или отдельное подразделение. Если связь между ними понятна (например, бренд принадлежит крупному холдингу), это нормально. Если связи нет — уточните у разработчика, почему файл подписан посторонним именем.
Можно ли подделать цифровую подпись?
Саму криптографию подделать практически невозможно, но злоумышленники обходят проверку: используют украденные или купленные сертификаты, эксплуатируют ошибки в проверке цепочки доверия или маскируют вредоносный файл под подписанный загрузчик. Поэтому подпись — необходимый, но недостаточный признак безопасности.
Нужно ли проверять подпись каждого файла большой программы?
Для быстрой оценки достаточно проверить основной исполняемый файл и установщик. Глубокий аудит всех компонентов имеет смысл только при расследовании инцидента или работе с критичной инфраструктурой.
Что запомнить
Главный принцип: подпись отвечает на вопрос «цел ли файл и кто за него отвечает», но не на вопрос «безопасна ли программа». Начинайте с вкладки «Цифровые подписи» в свойствах файла: действительная подпись узнаваемого издателя — хороший знак, изменённый после подписания файл — однозначный стоп-сигнал, отсутствие подписи — повод перепроверить источник и хеш. Если файл пришёл не с официального сайта, не полагайтесь ни на один из признаков по отдельности: сверьте сумму SHA-256, прогоните файл через многодвижковый онлайн-сканер и запускайте без прав администратора, пока не убедитесь в его происхождении.
