Подпись на файле существует не для красоты: её главная задача — дать возможность любому получателю убедиться, что содержимое не менялось с момента подписания. Если файл изменился хотя бы на один байт, проверка подписи это покажет. В этой статье разберём, как именно работает эта защита, какими способами проверить целостность подписанного файла в разных ситуациях и почему «файл открывается нормально» ещё не значит, что он не изменён.
Главный принцип простой: подпись вычисляется по содержимому файла. При подписании программа берёт данные, рассчитывает от них криптографический хеш (короткий уникальный «отпечаток» содержимого) и шифрует этот отпечаток закрытым ключом подписанта. При проверке файл снова хешируется, а результат сравнивается с тем, что зашифровано в подписи. Совпадение — файл не менялся. Расхождение — файл изменён или подпись повреждена.
- Что происходит при подмене файла
- Способ 1. Проверка электронной подписи специализированным ПО
- Отдельные подписи и встроенные подписи
- Способ 2. Встроенные механизмы операционной системы и приложений
- PDF-документы
- Документы Microsoft Office
- Исполняемые файлы и драйверы Windows
- Пакеты и репозитории Linux
- Способ 3. Сверка хеш-суммы
- Сравнение способов проверки
- Почему «файл открывается» — не аргумент
- Типичные ошибки при проверке
- Что делать, если изменение обнаружено
- Сценарии: как действовать в конкретной ситуации
- Частые вопросы
- Можно ли изменить файл так, чтобы подпись осталась действительной?
- Подпись действительна — значит, файл точно не изменяли?
- Файл изменили, а потом подписали заново. Проверка это покажет?
- Обязательно ли ставить тяжёлое ПО для разовой проверки?
- Главное
Что происходит при подмене файла
Чтобы понимать, что именно покажет проверка, полезно знать механику. Хеш-функция устроена так, что даже минимальное изменение данных даёт совершенно другой результат. Изменили одну букву в договоре, добавили пробел, пересохранили документ в редакторе — хеш станет другим, и сравнение с подписью провалится.
При этом важно различать два разных результата проверки:
- Подпись недействительна из-за изменения содержимого — файл был модифицирован после подписания. Это главный признак подмены.
- Подпись недействительна по другим причинам — истёк сертификат, нет цепочки доверия, отозван сертификат, повреждён сам блок подписи. Содержимое могло остаться неизменным, но юридическая сила подписи под вопросом.
Средства проверки обычно сообщают причину отдельно, и это принципиально: «файл изменён» и «сертификат просрочен» — разные проблемы с разными выводами. Первый случай говорит о возможной подделке, второй — о формальной проблеме с сертификатом.
Способ 1. Проверка электронной подписи специализированным ПО
Самый надёжный путь — проверить подпись тем классом программ, которые для этого предназначены. Для российской квалифицированной электронной подписи (КЭП) стандартный инструмент — КриптоПро CSP вместе с утилитами вроде КриптоПро Office Signature или КриптоАРМ; существуют и другие сертифицированные средства, например ViPNet CSP со своими утилитами. Для подписей в европейском формате (PAdES, XAdES, CAdES) применяются верификаторы DSS-сервисов и отдельные программы.
Типичный порядок действий:
- Откройте программу проверки подписи и укажите исходный подписанный файл.
- Запустите проверку. Программа рассчитает текущий хеш файла и сверит его с зашифрованным значением в подписи.
- Прочитайте результат целиком, а не только фразу «подпись недействительна»: причина указывается в деталях.
- Если проверка требует сертификат подписанта, убедитесь, что используется корректный сертификат — иногда файл подписан несколькими людьми, и нужно проверить все подписи.
Если программа сообщает, что хеш файла не совпадает со значением в подписи, — содержимое менялось после подписания. Это самый прямой ответ на вопрос «изменили ли файл».
Отдельные подписи и встроенные подписи
Файл может быть подписан двумя способами, и это влияет на проверку:
- Отсоединённая подпись — подпись лежит в отдельном файле рядом с основным (например, document.pdf и document.pdf.sig). Проверять нужно оба файла вместе: если основной файл заменили, а подпись оставили старую, расхождение обнаружится сразу.
- Совмещённая (встроенная) подпись — подпись внутри самого файла, как в PDF с цифровой подписью или в подписанном документе Microsoft Office. Здесь проверка идёт по одному файлу, но важно, чтобы средство проверки поддерживало формат.
Способ 2. Встроенные механизмы операционной системы и приложений
Часто ничего дополнительно ставить не нужно — проверка уже встроена туда, где файл открывается.
PDF-документы
Adobe Acrobat Reader и большинство серьёзных PDF-просмотрщиков показывают статус цифровой подписи прямо в документе: панель подписей отображает, действительна ли подпись и не менялся ли документ после подписания. Если после подписи в PDF вносили правки, просмотрщик пометит документ как изменённый. Обращайте внимание на предупреждение вида «документ был изменён после подписания» — это и есть обнаружение подмены.
Документы Microsoft Office
Word, Excel и PowerPoint при открытии файла с цифровой подписью показывают жёлтую панель с информацией о подписи. Если файл редактировался после подписания, подпись помечается как недействительная, а в сведениях о подписи видно, что содержимое изменено.
Исполняемые файлы и драйверы Windows
У цифровых подписей программ есть своя особенность: они подтверждают, что файл выпущен издателем и не изменён. Проверить можно через свойства файла:
- Щёлкните по файлу правой кнопкой мыши и выберите «Свойства».
- Откройте вкладку «Цифровые подписи».
- Выберите подпись и нажмите «Сведения», затем «Просмотр сертификата».
- Ключевая строка — «Эта цифровая подпись действительна». Если вместо неё сообщение о том, что подпись недействительна или файл изменён, исполняемый файл трогали после подписания.
Для более детальной проверки в Windows есть консольная утилита signtool verify (входит в Windows SDK), которая показывает подробности по всем подписям файла.
Пакеты и репозитории Linux
В мире Linux целостность пакетов проверяется менеджерами пакетов автоматически: GPG-подписи репозиториев сверяются при установке. Отдельно скачанные файлы (например, образы ISO) обычно сопровождаются файлом контрольных сумм и подписью к нему — их проверяют утилитами gpg или sha256sum.
Способ 3. Сверка хеш-суммы
Хеш-сумма — это упрощённый вариант той же идеи без криптографии с ключами. Если у вас есть официально опубликованная контрольная сумма файла (например, на сайте разработчика), можно пересчитать её локально и сравнить:
- В Windows: команда certutil -hashfile имя_файла SHA256 в командной строке.
- В Linux и macOS: команды sha256sum или shasum -a 256.
Важное ограничение: сверка хеша подтверждает совпадение с эталоном только если эталон получен из надёжного источника и передан по защищённому каналу. Сам по себе хеш ничего не подписывает — если злоумышленник подменил и файл, и опубликованную рядом сумму, сверка ничего не выявит. Поэтому хеш-суммы используют как вспомогательный инструмент, а электронная подпись остаётся основным средством: она привязана к сертификату владельца и защищена его закрытым ключом.
Сравнение способов проверки
| Способ | Что подтверждает | Когда подходит | Ограничения |
|---|---|---|---|
| Проверка ЭЦП специализированным ПО | Неизменность содержимого и авторство | Юридически значимые документы, договоры, отчётность | Нужно установленное средство криптографии и корректный сертификат |
| Встроенная проверка в PDF/Office | Изменение документа после подписания | Быстрая проверка при открытии документа | Зависит от корректности настроек просмотрщика и доверия к сертификату |
| Свойства файла в Windows | Неизменность программы после подписи издателем | Проверка скачанных программ и драйверов | Не заменяет антивирусную проверку; подпись может быть украденной |
| Сверка хеш-суммы | Совпадение с известным эталоном | Проверка образов, архивов, дистрибутивов | Эталон должен быть из надёжного источника; авторство не подтверждает |
Почему «файл открывается» — не аргумент
Распространённая ошибка — считать, что раз документ открывается и выглядит нормально, он не изменялся. Это неверно по двум причинам.
Во-первых, многие форматы прощают изменения: текстовый документ останется читаемым после правки одной суммы, а именно такие правки и опасны. Во-вторых, часть изменений вообще не видна глазу: метаданные, скрытые слои PDF, вложения, макросы в офисных документах. Подпись же реагирует на любой байт содержимого, поэтому она надёжнее визуального осмотра.
Обратная ситуация тоже встречается: подпись недействительна, но файл не менялся. Например, документ подписали, а потом пересохранили «для порядка» — уже после подписания. Формально это тоже изменение файла, и подпись перестала действовать. Юридически такой документ лучше переподписать, чем спорить о том, были ли правки существенными.
Типичные ошибки при проверке
- Игнорирование деталей результата. Сообщение «подпись недействительна» без чтения причины ведёт к неверным выводам: файл мог быть целым, а проблема — в отозванном сертификате.
- Проверка не того файла. При отсоединённой подписи люди проверяют только файл подписи или только документ. Проверять нужно пару целиком.
- Неправильные настройки времени. Некоторые проверки опираются на метку времени (timestamp). Без неё после истечения срока сертификата подпись может считаться недействительной, хотя на момент подписания всё было в порядке.
- Доверие к скриншотам. Скриншот окна проверки ничего не доказывает: его легко изготовить. Значима только проверка, выполненная вами на своей машине.
- Пересохранение файла до проверки. Открытие и сохранение документа в редакторе может изменить его структуру и «сломать» картину проверки. Проверяйте файл в том виде, в каком получили.
Что делать, если изменение обнаружено
Порядок действий зависит от контекста:
- Зафиксируйте результат. Сделайте снимок экрана с полными деталями проверки и сохраните сам подозрительный файл без изменений.
- Сравните с эталоном. Если у вас есть заведомо неизменённая копия (например, отправленная по другому каналу), сравните их хеш-суммы, чтобы понять, где произошла подмена.
- Свяжитесь с отправителем. Изменение могло произойти случайно — при пересохранении, конвертации почтовым сервером, антивирусом. Не все изменения злонамеренны.
- При признаках подмены в важном документе обратитесь к специалисту по компьютерно-технической экспертизе: для спора понадобится заключение, а не личная проверка.
- Не используйте подозрительные исполняемые файлы. Если изменена подпись программы, запускать её нельзя до выяснения причин.
Сценарии: как действовать в конкретной ситуации
- Получили договор с КЭП по почте. Проверьте подпись в сертифицированном средстве криптографии до подписания со своей стороны. Если хеш не совпадает — запрашивайте файл заново по защищённому каналу.
- Скачали программу с сайта разработчика. Посмотрите свойства файла: подпись должна быть действительна, а имя издателя — соответствовать разработчику. Дополнительно сверьте хеш-сумму, если она опубликована.
- PDF из банка или госоргана показывает «документ изменён». Не полагайтесь на такую копию: запросите оригинал напрямую у организации или проверьте документ через её официальный сервис проверки.
- Архив с контрольными суммами. Пересчитайте сумму локально и сравните. Расхождение означает повреждение при передаче либо подмену — в обоих случаях файл использовать не стоит.
Частые вопросы
Можно ли изменить файл так, чтобы подпись осталась действительной?
Практически нет. Для этого пришлось бы подобрать другой файл с тем же хешем, что требует взлома самой хеш-функции. Современные алгоритмы (SHA-256 и сильнее) этому не поддаются на доступном сегодня уровне вычислений. Теоретические атаки на устаревшие алгоритмы вроде MD5 и SHA-1 существуют, поэтому старые подписи вызывают больше вопросов, чем новые.
Подпись действительна — значит, файл точно не изменяли?
Проверка подтверждает, что содержимое совпадает с тем, что было подписано данным ключом, и что сертификат на момент проверки считается доверенным. Она не подтверждает добросовестность владельца ключа: если закрытый ключ скомпрометирован, злоумышленник мог подписать файл сам. Поэтому важны и репутация подписанта, и статус сертификата.
Файл изменили, а потом подписали заново. Проверка это покажет?
Нет. Новая подпись будет действительна, потому что она соответствует текущему содержимому. Защита здесь организационная: сравнение времени подписания, меток времени, журналов обмена и версии документа. Именно поэтому в критичных процессах фиксируют момент получения файла.
Обязательно ли ставить тяжёлое ПО для разовой проверки?
Для PDF и документов Office достаточно встроенных средств просмотра. Для квалифицированной электронной подписи в российском правовом поле нужна совместимая криптоплатформа — без неё корректную проверку КЭП выполнить не получится. Разовые проверки хешей делаются штатными средствами системы.
Главное
Изменение подписанного файла обнаруживается автоматически при любой корректной проверке подписи: механизм сравнения хешей заложен в саму технологию. Ваша задача — выполнить проверку правильным инструментом и правильно прочитать результат. Запомните три ориентира: проверяйте файл в исходном виде, читайте причину недействительности подписи, а не только итог, и не принимайте скриншоты чужой проверки как доказательство. Если подпись оказалась недействительной из-за изменения содержимого, а документ важен — остановите работу с ним и выясняйте происхождение файла у отправителя, при необходимости с привлечением эксперта.
Материал носит информационный характер и не заменяет консультацию специалиста по информационной безопасности или юриста. Решения о юридической значимости документов и действиях при обнаружении подмены принимайте с учётом конкретных обстоятельств и актуальных требований законодательства.
