--- 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 перед добавлением подписи