mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-08 16:57:14 +01:00
100 lines
10 KiB
Markdown
100 lines
10 KiB
Markdown
---
|
||
title: Проверка подписи в PDF
|
||
description: Проверьте цифровые подписи в PDF-файлах. Инструмент оценивает действительность сертификата, личность подписавшего, целостность документа и цепочку доверия.
|
||
---
|
||
|
||
# Проверка подписи в 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-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](./digital-sign-pdf): подписывайте PDF своим сертификатом
|
||
- [Сведение документа](./flatten-pdf): сведите PDF перед подписанием, чтобы предотвратить изменения после подписи
|
||
- [Удаление метаданных](./remove-metadata): очистите PDF перед добавлением подписи
|