Перейти к содержимому

Проверка подписи в PDF ​

Загрузите подписанный PDF, и инструмент извлечёт все цифровые подписи, определит подписавшего, проверит действительность сертификата и сообщит, изменялся ли документ после подписания. Можно также указать доверенный сертификат для проверки цепочки подписи.

Как это работает ​

  1. Загрузите подписанный PDF-файл. Проверка начнётся автоматически.
  2. Инструмент покажет сводку: сколько найдено подписей и сколько из них действительны.
  3. Для каждой подписи отображается карточка с именем подписавшего, издателем, датами и статусом.
  4. При желании загрузите доверенный сертификат (.pem, .crt, .cer, .der), чтобы проверить подпись относительно конкретного корня доверия. Повторная проверка запустится автоматически.

Что проверяется ​

Разбор подписи ​

Инструмент извлекает из PDF объекты подписи PKCS#7, декодирует структуру ASN.1 и получает сертификат X.509 подписавшего вместе с цепочкой сертификатов, встроенной в подпись.

Действительность сертификата ​

  • Срок действия: находится ли сертификат сейчас в пределах срока действия?
  • Определение самоподписанного сертификата: является ли сертификат собственным издателем?
  • Цепочка доверия: если указан доверенный сертификат, восходит ли к нему сертификат подписавшего?

Криптографическая проверка ​

  • Инструмент восстанавливает байты, охваченные /ByteRange подписи, вычисляет их хеш алгоритмом, заявленным подписавшим, и сравнивает результат с атрибутом messageDigest внутри подписи.
  • Затем он повторно сериализует подписанные атрибуты как DER SET и проверяет подпись по открытому ключу сертификата подписавшего.
  • Подпись считается действительной, только если пройдены все эти проверки. Если байты PDF были изменены после подписания или встроенная подпись не соответствует ключу подписавшего, статус будет «Недействительна: криптографическая проверка не пройдена» с указанием конкретной причины.

Поддерживаемые алгоритмы подписи ​

АлгоритмПуть проверки
RSA (PKCS#1 v1.5)node-forge publicKey.verify, с резервным вариантом через Web Crypto
RSA-PSS (RSASSA-PSS)Web Crypto verify({name: 'RSA-PSS', saltLength})
ECDSA P-256/P-384/P-521Web Crypto verify({name: 'ECDSA', hash}) после преобразования подписи DER → IEEE P1363

Если подпись использует алгоритм не из этого списка (например, Ed25519, SM2 или RSA с необычным OID дайджеста), карточка покажет жёлтым «Не проверена: неподдерживаемый алгоритм подписи» с конкретным OID или причиной. Это намеренное разделение на три состояния:

  • Действительна: подпись криптографически проверена по открытому ключу подписавшего.
  • Недействительна: проверка выполнена и дала отрицательный результат (байты изменены, ключ не совпадает).
  • Не проверена: инструмент не смог выполнить проверку для этого алгоритма. Данные сертификата по-прежнему показываются, но подпись следует считать «неизвестной» и проверить её в Adobe Acrobat или через openssl cms -verify.

Небезопасные алгоритмы дайджеста ​

  • Подписи с MD5 или SHA-1 отклоняются как недействительные и помечаются статусом «Небезопасный хеш». Для обоих алгоритмов опубликованы атаки на коллизии, поэтому подпись по хешу SHA-1 или MD5 не гарантирует целостность.
  • SHA-224, SHA-256, SHA-384 и SHA-512 принимаются.

Охват документа ​

  • Полное покрытие: подпись охватывает весь PDF-файл, то есть после подписания байты не добавлялись и не менялись.
  • Частичное покрытие: подпись охватывает только часть файла. Это может указывать на изменения после подписания (не обязательно злонамеренные: инкрементальные сохранения дают частичный охват).

Сведения о подписи ​

Каждая карточка подписи содержит:

  • Подписано: общее имя, организация и адрес электронной почты из сертификата подписавшего
  • Издатель: центр сертификации, выдавший сертификат подписавшего
  • Дата подписания: отметка времени, встроенная в подпись
  • Действителен с / Действителен до: срок действия сертификата
  • Причина: зачем документ был подписан (если указана)
  • Место: где он был подписан (если указано)
  • Статус охвата: полный или частичный
  • Значок доверия: доверенный или не входит в цепочку доверия (только если указан собственный сертификат)

Технические сведения ​

Разверните раздел технических сведений, чтобы увидеть:

  • Серийный номер сертификата подписавшего
  • Алгоритм дайджеста (SHA-256, SHA-512 и т. д.)
  • Алгоритм подписи (RSA с SHA-256, ECDSA с SHA-256 и т. д.)
  • Сообщения об ошибках для недействительных подписей

Сценарии использования ​

  • Проверка подписанного цифровой подписью договора перед его встречным подписанием
  • Аудит подписанных документов, чтобы убедиться, что они не были подделаны
  • Проверка, не истёк ли сертификат с момента подписания документа
  • Проверка подписей по корневому сертификату вашей организации
  • Изучение сведений о подписи в государственных или юридических документах

Советы ​

  • Самоподписанный сертификат не означает, что подпись недействительна: он означает, что личность подписавшего нельзя подтвердить через доверенную третью сторону. Для внутренних документов это обычное дело.
  • Частичное покрытие не всегда говорит о подделке. Во многих процессах работы с PDF добавляются инкрементальные обновления (например, вторая подпись), которые создают частичный охват.
  • Загрузите корневой или промежуточный сертификат вашей организации как доверенный, чтобы получить проверку цепочки доверия.

Связанные инструменты ​

Двойное лицензирование: AGPL-3.0 и коммерческая лицензия.