Электронная подпись (ЭП) проверяется не «по документу вообще», а по точной последовательности байтов файла. Если после подписания файл был изменён хотя бы на один байт — добавлен пробел, перекодирован текст, пересохранён редактором или перепакован архиватором — криптографическая проверка подписи завершится ошибкой. Архивирование как раз относится к операциям, которые часто незаметно меняют файл, поэтому именно на этом этапе у многих организаций «внезапно перестают проверяться» ранее корректно подписанные документы.
Главный принцип, который стоит запомнить: подпись гарантирует целостность конкретного файла в конкретном виде. Любое преобразование файла после подписания — даже внешне безобидное — разрывает эту связь. Ниже разберём, почему так происходит, какие операции с архивами безопасны, а какие нет, и как организовать хранение, чтобы подписи оставались проверяемыми годами.
- Как работает проверка подписи и почему она чувствительна к изменениям
- Три типовые ситуации, когда архив ломает проверку подписи
- Ситуация 1. Подписан файл внутри архива, а проверяют файл после распаковки
- Ситуация 2. Подписан сам архивный контейнер, а затем архив пересоздан
- Ситуация 3. Подпись хранится отдельно от файла и «теряет связь» при переносе
- Почему «файл выглядит так же», а подпись не проходит
- Что безопасно, а что нет: сравнение операций с архивами
- Долговременное архивирование: отдельная проблема — срок действия подписи
- Порядок действий, если подпись не проверяется после архивирования
- Как организовать архивирование, чтобы подписи оставались проверяемыми
- Типичные ошибки и их последствия
- Практический итог
Как работает проверка подписи и почему она чувствительна к изменениям
Электронная подпись — это криптографический отпечаток (хеш) содержимого файла, зашифрованный закрытым ключом подписанта. Проверяющая сторона выполняет обратную операцию: вычисляет хеш текущего содержимого файла и сравнивает его с тем, что зашифровано в подписи. Если значения совпадают — файл не изменялся с момента подписания и подпись признаётся действительной.
Отсюда следствие: подпись не «привязана» к смыслу документа, к его названию или к бумажной копии. Она привязана к байтам. Два внешне одинаковых файла с разной кодировкой, разным порядком символов перевода строки или разным наличием конечного пробела — это с точки зрения криптографии два разных файла.
Именно поэтому архивирование, которое кажется простым «упаковыванием в контейнер», может повлиять на результат проверки. Вопрос лишь в том, какой именно объект был подписан и что с ним произошло при упаковке.
Три типовые ситуации, когда архив ломает проверку подписи
Ситуация 1. Подписан файл внутри архива, а проверяют файл после распаковки
Если документ был подписан, а затем упакован в архив (ZIP, RAR, 7z и т. п.), сам файл внутри архива обычно остаётся неизменным — архиваторы по умолчанию хранят исходное содержимое, лишь сжимая его. Распакованный файл побайтово совпадает с исходным, и подпись проверяется.
Проблемы начинаются, когда:
- архиватор настроен на дополнительную обработку файлов (перекодирование имён, нормализацию текста, конвертацию переводов строк — некоторые архиваторы и файловые менеджеры делают это для текстовых файлов);
- при распаковке файл был открыт и пересохранён в редакторе — даже без видимых изменений редактор мог изменить кодировку, добавить или удалить конечный перевод строки, обновить внутренние метаданные формата;
- файл передавался через систему, которая «на лету» преобразует содержимое (например, почтовый сервер с перекодированием вложений).
Ситуация 2. Подписан сам архивный контейнер, а затем архив пересоздан
Если подписан весь архив как файл, то любое изменение контейнера уничтожает подпись. Пересоздание архива с теми же файлами, но другим порядком файлов, другой степенью сжатия, другой версией архиватора или другими метаданными (время создания, комментарии, атрибуты) даёт другой набор байтов. Внешне архив «тот же», но подпись уже не пройдёт проверку.
Типичный сценарий: сотрудник подписал архив, затем кто-то добавил в него ещё один файл «для полноты» и пересохранил. Подпись стала недействительной, причём формально это не взлом и не подделка — просто подписанный объект больше не существует в исходном виде.
Ситуация 3. Подпись хранится отдельно от файла и «теряет связь» при переносе
Во многих форматах (например, отсоединённая подпись в стандартах семейства CMS/CAdES) подпись хранится отдельным файлом рядом с документом. Проверка требует наличия обоих файлов: документа и файла подписи. При архивировании или переносе на другой носитель часто переносят только документ, а файл подписи остаётся в старой папке. Проверка без подписи невозможна в принципе — система сообщит об ошибке, хотя документ цел.
Аналогичная ситуация возникает с электронными документами, у которых подпись встроена в XML- или PDF-контейнер: если система хранения выгружает не исходный контейнер, а его «представление» (например, PDF, пересобранный просмотрщиком, или XML, переформатированный при экспорте), подпись перестаёт проверяться.
Почему «файл выглядит так же», а подпись не проходит
Визуальная идентичность и байтовая идентичность — разные вещи. Вот операции, которые внешне не меняют документ, но меняют его байты:
- пересохранение в текстовом редакторе: смена кодировки (UTF-8 с BOM и без, Windows-1251), замена переводов строк (CRLF на LF), добавление или удаление конечного перевода строки;
- открытие и пересохранение PDF: обновление метаданных, встраивание шрифтов, пересборка структуры файла;
- перекодирование при передаче: почтовые системы и мессенджеры могут преобразовывать вложения;
- работа «прозрачного шифрования» и синхронизации: некоторые системы корпоративного хранения при выгрузке отдают не исходный файл, а результат его расшифровки или конвертации;
- перепаковка архива с другими настройками сжатия или другой версией архиватора.
Поэтому первое, что стоит сделать при ошибке проверки подписи, — выяснить, какой именно файл был подписан и совпадает ли текущий файл с ним побайтово. Если сохранился исходный экземпляр (например, у отправителя), сравнение хеш-сумм двух файлов сразу покажет, в документе проблема или в процедуре проверки.
Что безопасно, а что нет: сравнение операций с архивами
| Операция | Влияние на подписанный файл внутри архива | Влияние на подпись самого архива |
|---|---|---|
| Упаковка подписанного файла в архив без обработки | Файл не меняется, подпись сохраняется | Не применимо (архив ещё не подписан) |
| Распаковка архива без изменений | Файл восстанавливается побайтово, подпись проверяется | Не применимо |
| Пересохранение распакованного файла в редакторе | Байты могут измениться, подпись, вероятно, сломается | Не применимо |
| Добавление файла в подписанный архив с пересохранением | Не применимо | Подпись становится недействительной |
| Перепаковка архива другой версией архиватора | Обычно файлы не меняются | Подпись становится недействительной |
| Перенос архива целиком на другой носитель | Файл не меняется | Подпись сохраняется |
Отдельный нюанс — имена файлов. Большинство криптопровайдеров и средств проверки не включают имя файла в подписываемые данные, поэтому переименование обычно не влияет на результат. Но полагаться на это не стоит: поведение зависит от конкретного ПО и формата подписи, и в отдельных реализациях имя или путь учитываются. Надёжная практика — не переименовывать подписанные файлы и их файлы подписи, особенно не менять расширения.
Долговременное архивирование: отдельная проблема — срок действия подписи
Даже если байты документа сохранены идеально, со временем может перестать проверяться сама подпись. Причины две:
- Истечение срока сертификата. Подпись, созданная сертификатом, срок действия которого истёк, по умолчанию проверяется как недействительная, если в момент подписания не была зафиксирована доказательство того, что подпись создана в период действия сертификата.
- Устаревание криптографии. Алгоритмы и длины ключей, считавшиеся надёжными при подписании, со временем могут быть признаны слабыми. Проверяющее ПО на новых настройках может отказываться принимать старую подпись.
Для документов, которые должны храниться годами (кадровые, бухгалтерские, договорные), это критично. Решение — использование форматов с меткой времени и доказательствами (например, усовершенствованные форматы подписи, где в подпись встраивается подтверждение доверенного источника времени и цепочка сертификатов). При организации архива стоит заранее уточнить у ответственных за электронный документооборот, поддерживает ли используемый формат долговременную проверку, и как именно система хранения сохраняет сопутствующие данные.
Порядок действий, если подпись не проверяется после архивирования
- Зафиксируйте текст ошибки и то, каким средством выполнялась проверка. Разные программы проверки дают разные формулировки, и это помогает понять, на каком этапе сбой.
- Определите, что именно было подписано: отдельный файл, архив целиком, документ со встроенной подписью или пара «файл + файл подписи».
- Проверьте комплектность: если подпись отсоединённая, рядом должен лежать её файл с тем же базовым именем.
- Найдите исходный экземпляр документа — у отправителя, в системе электронного документооборота, в почте как вложение до пересохранения.
- Сравните хеш-суммы текущего и исходного файла. Совпадение означает, что проблема в процедуре проверки (сертификаты, настройки, отсутствие данных); несовпадение — что файл действительно изменён.
- Если файл изменён при распаковке или пересохранении, повторите распаковку из исходного архива без промежуточного редактирования и проверьте подпись заново.
- Если исходного файла нет, документ придётся переподписывать: недействительную подпись «восстановить» невозможно, это принципиальное свойство криптографии, а не недостаток программы.
Как организовать архивирование, чтобы подписи оставались проверяемыми
Практические правила, которые снимают большинство проблем:
- Подписывайте финальную версию документа и после подписания не открывайте его в редакторе «просто посмотреть с сохранением».
- Храните документ и файл подписи вместе, в одной папке, с согласованным именованием; при переносе переносите пару целиком.
- Архивируйте подписанные файлы «как есть», без перекодирования, конвертации и пересохранения; распаковку выполняйте тем же путём — без промежуточных правок.
- Не подписывайте архивы, которые планируется дополнять; если нужен пополняемый архив, подписывайте файлы внутри него, а не контейнер.
- Для долговременного хранения используйте форматы подписи с меткой времени и сохраняйте все сопутствующие данные, которые требует формат.
- Периодически выборочно проверяйте подписи в архиве — это позволяет обнаружить системную проблему (например, неудачную миграцию хранилища) до того, как документ понадобится для спора или проверки.
- Зафиксируйте регламент: кто и как упаковывает подписанные документы, где хранятся файлы подписи, какое ПО используется для проверки. Большинство инцидентов — следствие того, что каждый сотрудник делает это по-своему.
Типичные ошибки и их последствия
Пересохранение «для порядка». Сотрудник открывает документ, чтобы убедиться, что он на месте, и нажимает «Сохранить». Байты меняются, подпись ломается. Альтернатива: просматривать документы в режиме только для чтения или копии.
Перенос только документа. При пересылке или загрузке в новую систему берут файл документа, забывая файл отсоединённой подписи. Проверка невозможна, документ приходится запрашивать повторно. Альтернатива: архивировать пару файлов вместе или использовать форматы со встроенной подписью.
Подпись архива «с запасом». Архив подписывают, чтобы потом добавить туда ещё файлы. Первое же дополнение обнуляет подпись. Альтернатива: подписывать содержимое по отдельности.
Игнорирование срока сертификата при долгом хранении. Через несколько лет документ цел, но подпись не подтверждается из-за истёкшего сертификата и отсутствия метки времени. Альтернатива: закладывать долговременные доказательства сразу при подписании, а не когда возник спор.
Практический итог
Архивирование влияет на проверку подписи не само по себе, а через изменение байтов подписанного объекта или потерю связанных данных: файла подписи, метки времени, сертификатов. Сама упаковка подписанного файла в архив при корректных настройках безопасна; опасны пересохранения, перепаковки подписанных контейнеров и разлучение документа с подписью.
Что делать дальше: проверьте, как именно в вашей организации подписанные документы попадают в архив, и убедитесь, что документ и файл подписи переносятся вместе и без преобразований. Если подписи уже не проверяются — ищите исходный экземпляр файла и сравнивайте хеш-суммы; если исходника нет, документ придётся подписать заново. Для документов с длительным сроком хранения заранее уточните у ответственных за ЭДО, поддерживает ли используемый формат подписи долговременную проверку.
Материал носит информационный характер и описывает общие принципы работы электронной подписи. Требования к форматам подписи, срокам хранения документов и порядку их архивирования зависят от законодательства, отрасли и внутренних регламентов организации; перед принятием решений уточняйте актуальные требования и консультируйтесь со специалистами по электронному документообороту.
