Проверка подписи в PDF
Загрузите подписанный PDF, и инструмент извлечёт все цифровые подписи, определит подписавшего, проверит действительность сертификата и сообщит, изменялся ли документ после подписания. Можно также указать доверенный сертификат для проверки цепочки подписи.
Как это работает
- Загрузите подписанный PDF-файл. Проверка начнётся автоматически.
- Инструмент покажет сводку: сколько найдено подписей и сколько из них действительны.
- Для каждой подписи отображается карточка с именем подписавшего, издателем, датами и статусом.
- При желании загрузите доверенный сертификат (.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-521 | Web 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 добавляются инкрементальные обновления (например, вторая подпись), которые создают частичный охват.
- Загрузите корневой или промежуточный сертификат вашей организации как доверенный, чтобы получить проверку цепочки доверия.
Связанные инструменты
- Цифровая подпись PDF: подписывайте PDF своим сертификатом
- Сведение документа: сведите PDF перед подписанием, чтобы предотвратить изменения после подписи
- Удаление метаданных: очистите PDF перед добавлением подписи