--- 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 перед накладанням підпису