mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-08 16:57:14 +01:00
100 lines
9.6 KiB
Markdown
100 lines
9.6 KiB
Markdown
---
|
||
title: Перевірити підпис
|
||
description: Перевіряйте цифрові підписи у файлах 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-файл, тобто після підписання жодних байтів не додавали й не змінювали.
|
||
- **Часткове охоплення**: підпис охоплює лише частину файлу. Це може означати, що після підписання вносилися зміни (не обов'язково зловмисні: інкрементальні збереження дають часткове охоплення).
|
||
|
||
## Відомості про підпис
|
||
|
||
Кожна картка підпису показує:
|
||
|
||
- **Підписав**: загальне ім'я, організацію та email із сертифіката підписанта
|
||
- **Емітент**: центр сертифікації, що видав сертифікат підписанта
|
||
- **Дата підписання**: позначку часу, вбудовану в підпис
|
||
- **Дійсний з / Дійсний до**: період дії сертифіката
|
||
- **Причина**: чому документ підписано (якщо вказано)
|
||
- **Розташування**: де його підписано (якщо вказано)
|
||
- **Статус охоплення**: повне чи часткове
|
||
- **Значок довіри**: довірений чи поза ланцюжком довіри (лише коли надано власний сертифікат)
|
||
|
||
### Технічні подробиці
|
||
|
||
Розгорніть розділ технічних подробиць, щоб побачити:
|
||
|
||
- Серійний номер сертифіката підписанта
|
||
- Алгоритм дайджесту (SHA-256, SHA-512 тощо)
|
||
- Алгоритм підпису (RSA із SHA-256, ECDSA із SHA-256 тощо)
|
||
- Повідомлення про помилки для недійсних підписів
|
||
|
||
## Сценарії використання
|
||
|
||
- Перевірка цифрово підписаного договору перед контрпідписанням
|
||
- Аудит підписаних документів, щоб переконатися, що їх не змінювали
|
||
- Перевірка, чи не закінчився термін дії сертифіката після підписання документа
|
||
- Перевірка підписів за кореневим сертифікатом вашої організації
|
||
- Огляд відомостей про підписання державних чи юридичних документів
|
||
|
||
## Поради
|
||
|
||
- Самопідписаний сертифікат не означає, що підпис недійсний: це означає, що особу підписанта не можна підтвердити через довірену третю сторону. Для внутрішніх документів це звична річ.
|
||
- Часткове охоплення не завжди свідчить про втручання. Багато робочих процесів PDF додають інкрементальні оновлення (наприклад, другий підпис), які створюють часткове охоплення.
|
||
- Завантажте кореневий або проміжний сертифікат вашої організації як довірений, щоб отримати перевірку ланцюжка довіри.
|
||
|
||
## Пов'язані інструменти
|
||
|
||
- [Цифровий підпис](./digital-sign-pdf): підписуйте PDF власним сертифікатом
|
||
- [Сплощити PDF](./flatten-pdf): сплощіть PDF перед підписанням, щоб запобігти змінам після підпису
|
||
- [Видалити метадані](./remove-metadata): очистьте PDF перед накладанням підпису
|