Коротка відповідь. Формат підпису визначають три речі: тип файлу, де живе підпис і наскільки довго він має лишатися перевірюваним. Практичне правило таке: для будь-яких файлів — CAdES (класичний .p7s), для PDF, які читатимуть люди, — PAdES (підпис усередині самого PDF), для XML-обміну між системами — XAdES, а щоб передати оригінал і підпис одним файлом — контейнер ASiC. Криптографія всередині однакова — підпис ДСТУ 4145 плюс геш; різниця лише в «обгортці» та в рівні довговічності. У DSTUcrypt усі чотири родини — 16 форматів — доступні через одну опцію format.
Навіщо взагалі існують різні формати
Коли ключ ставить підпис, він підписує не сам файл, а його короткий відбиток — результат геш-функції (в українському КЕП це ДСТУ ГОСТ 34.311-95 або сучасна «Купина» за ДСТУ 7564:2014). Далі це саме значення підпису треба кудись «покласти» — і ось тут починаються формати. Європейська система стандартів ETSI визначає кілька родин *AdES (Advanced Electronic Signature), і кожна відповідає на три питання по-своєму:
- Який тип файлу підписуємо? Довільний бінарний файл, PDF чи XML — у кожного свій природний формат.
- Де живе підпис? Окремим файлом поруч, усередині самого документа чи в спільному контейнері разом з оригіналом.
- Скільки він має «прожити»? Базовий підпис перевіряється, поки чинний сертифікат; рівні з мітками часу та даними відкликання лишаються доказовими роками.
Відповівши на ці три питання для своєї задачі, ви майже автоматично отримуєте правильний формат.
CAdES (.p7s): універсальний CMS-підпис
CAdES — найстарша і найпоширеніша родина: підпис пакується у структуру CMS (Cryptographic Message Syntax), файл зазвичай має розширення .p7s. Підписати можна що завгодно — документ, архів, зображення, бінарні дані. Саме CAdES найчастіше мають на увазі, коли кажуть просто «файл ЕЦП».
Рівні CAdES історично мають «стару» номенклатуру:
| format | Рівень | Що додає |
|---|---|---|
| CAdES-BES | базовий | підпис без мережі; перевіряється, поки чинний сертифікат |
| CAdES-T | + мітка часу | кваліфікована мітка часу TSP фіксує момент підписання |
| CAdES-C | + референси | посилання на сертифікати й OCSP/CRL для повної перевірки |
| CAdES-XL | + повні дані | самі сертифікати та OCSP/CRL вкладено в контейнер — довгострокова офлайн-перевірка |
Є й архівний рівень CAdES-A (аліас CAdES-LTA) з архівною міткою часу. Зверніть увагу на номенклатуру: у CAdES рівень «з міткою часу» пишеться CAdES-T, а не «CAdES-B-T» — baseline-форму назви вживають лише XAdES і PAdES.
Attached чи detached: де лежать самі дані
CMS-підпис буває двох видів. Вкладений (attached) — документ упаковано всередину .p7s разом із підписом: один файл, який зручно пересилати, але щоб прочитати вміст, потрібен засіб, що вміє його «розпакувати». Відокремлений (detached) — у .p7s лише підпис, а оригінальний файл живе поруч у незмінному вигляді: його можна відкривати як звичайно, але для перевірки валідатору потрібні обидва файли.
У DSTUcrypt це одна булева опція detached: true (діє для CAdES). Практичне правило: якщо одержувач — система, що очікує пару «файл + підпис», беріть detached; якщо документ має мандрувати поштою одним вкладенням — attached або ASiC-контейнер.
PAdES: підпис живе всередині PDF
PAdES — це профіль підпису саме для PDF: значення підпису вбудовується в структуру самого документа. Головна перевага — файл лишається звичайним PDF: його відкриє будь-який переглядач, а засоби на кшталт Adobe Acrobat ще й покажуть панель підписів. Жодних окремих файлів .p7s, які губляться при пересиланні.
Рівні PAdES ідуть за baseline-схемою ETSI: PAdES-B-B (базовий), PAdES-B-T (+ мітка часу), PAdES-B-LT (+ дані для довгострокової перевірки), PAdES-B-LTA (+ архівна мітка часу). Для договорів і документів, які читатимуть люди, PAdES — майже завжди правильний вибір: одержувачу не треба нічого пояснювати, він просто відкриває PDF.
XAdES: підпис для світу XML
XAdES — підпис у розмітці XML (на базі XML-DSig). Це мова систем: електронна звітність, B2B-обмін структурованими документами, інтеграції, де підписаний XML далі парситься автоматично. Рівні аналогічні PAdES: XAdES-BES, XAdES-B-T, XAdES-B-LT, XAdES-B-LTA.
Нюанс, про який часто дізнаються запізно: підтримка українських ключів ДСТУ 4145 у XAdES — рідкість серед бібліотек. У DSTUcrypt вона є з коробки: XML-підпис працює з ключами ДСТУ 4145 у парі з гешем ДСТУ ГОСТ 34.311-95 (за замовчуванням) або «Купиною-256» (ДСТУ 7564:2014) — алгоритмічні пари dstu4145-gost34311 і dstu4145-dstu7564-256.
ASiC-S і ASiC-E: оригінал і підпис в одному контейнері
ASiC (Associated Signature Container) — це ZIP-архів зі стандартизованою внутрішньою структурою: оригінальні файли лежать поруч із підписом. Виходить «конверт», який розв'язує головний біль detached-підписів — файли більше не розлучаються. Бонус: вміст контейнера можна подивитися звичайним архіватором.
| Контейнер | Файл | Вміст | Рівні |
|---|---|---|---|
| ASiC-S (simple) | .asics | один файл + підпис | ASiC-S-BES · ASiC-S-T |
| ASiC-E (extended) | .asice | кілька файлів під одним підписом | ASiC-E-BES · ASiC-E-T |
ASiC зручний для пакетів документів: договір плюс додатки їдуть одним файлом, і підпис накриває їх усі. Ім'я файлу всередині контейнера задається опцією fileName.
Зведена таблиця: задача → рекомендований формат
| Задача | Рекомендований формат | Чому |
|---|---|---|
| Звіт чи документ у держорган | CAdES-T (.p7s) | класична пара «файл + .p7s», геш за замовчуванням ГОСТ 34.311 приймають держвалідатори |
| Договір B2B на роки | CAdES-XL | сертифікати й OCSP/CRL вкладено — перевірка офлайн через роки |
| PDF, який читатимуть люди | PAdES-B-T | підпис усередині PDF, відкривається будь-яким переглядачем |
| XML для звітності чи систем | XAdES-B-T | підпис у самій розмітці, зручний для автоматичної обробки |
| Пакет документів одним файлом | ASiC-E-T | кілька файлів + підпис в одному контейнері |
| Архівне зберігання 10+ років | PAdES-B-LTA / XAdES-B-LTA / CAdES-XL | максимум даних для перевірки після спливу сертифіката |
| Швидкий внутрішній підпис без мережі | CAdES-BES | єдиний рівень, що не потребує онлайн-TSP |
Пам'ятайте головне обмеження рівнів: усе, що вище за BES (T, C, XL, LT, LTA), потребує онлайн-доступу до сервера міток часу TSP у момент підписання.
Як обрати формат у DSTUcrypt: один параметр
У віджеті підпису DSTUcrypt вибір формату — це один рядок. Той самий віджет підписує PDF, XML, довільні файли й збирає ASiC-контейнери:
формат підпису — одна опція format
import { embed } from 'https://dstucrypt.io/embed/dstucrypt-embed.mjs';
const signer = await embed('sign', { mount: 'modal' });
// PDF для людей: підпис вбудовується в сам документ, з міткою часу
const { signature } = await signer.sign(pdfBytes, { format: 'PAdES-B-T' });
signature.download('contract.pdf');
// довгостроковий підпис будь-якого файлу: сертифікати й OCSP — у контейнері
const r = await signer.sign(fileBytes, { format: 'CAdES-XL' });
r.signature.download('document.p7s');
Повний перелік значень format: CAdES — CAdES-BES, CAdES-T, CAdES-C, CAdES-XL; PAdES — PAdES-B-B, PAdES-B-T, PAdES-B-LT, PAdES-B-LTA; XAdES — XAdES-BES, XAdES-B-T, XAdES-B-LT, XAdES-B-LTA; ASiC-S — ASiC-S-BES, ASiC-S-T; ASiC-E — ASiC-E-BES, ASiC-E-T. Віджет перевірки визначає родину автоматично за вмістом файлу: CMS/CAdES, PDF, XML чи ZIP-контейнер.
Чому це зручно саме тут. Усі 16 форматів живуть в одному SDK — не треба збирати зоопарк бібліотек під PDF, XML і CMS. Криптографія виконується в браузері користувача на перевіреній нативній C/C++-бібліотеці, скомпільованій у WebAssembly — ключ і пароль не покидають браузер. Мітки часу TSP та OCSP-статуси вбудовуються прямо в контейнер підпису, тож документи рівнів T/XL/LT/LTA перевіряються офлайн.
Поширені запитання
Чим CAdES відрізняється від PAdES і XAdES?
Криптографічно це той самий підпис ДСТУ 4145 — різниця в «обгортці». CAdES — універсальний CMS-підпис для будь-яких файлів (окремий файл .p7s або контейнер із вкладеними даними). PAdES вбудовує підпис усередину самого PDF — файл лишається звичайним PDF. XAdES — підпис у розмітці XML для систем обміну даними. Обирайте за типом файлу і за тим, хто перевірятиме підпис.
Що таке файл .p7s?
Це контейнер підпису CMS/CAdES. Вкладений (attached) .p7s містить усередині і сам документ, і підпис — достатньо одного файлу. Відокремлений (detached) .p7s містить лише підпис, а оригінальний файл передається поруч, — щоб перевірити такий підпис, валідатору потрібні обидва файли.
Навіщо потрібен ASiC-контейнер?
ASiC — це ZIP-архів зі стандартизованою структурою, в якому оригінальні файли лежать поруч із підписом. Вміст можна відкрити звичайним архіватором, а підпис не «загубиться» під час пересилання. ASiC-S (.asics) містить один файл, ASiC-E (.asice) — кілька файлів, накритих одним підписом.
Який рівень формату обрати для довгострокового зберігання?
Той, що вкладає в контейнер мітку часу та повні дані для перевірки: CAdES-XL для .p7s, PAdES-B-LTA для PDF, XAdES-B-LTA для XML. Мітки часу TSP та OCSP-статуси вбудовуються в сам контейнер, тому підпис перевіряється офлайн і лишається доказовим навіть після завершення строку дії сертифіката підписанта.
Читайте також
- КЕП у PDF: як підписати PDF-документ за стандартом PAdES
- XML-підпис (XAdES) з ключами ДСТУ 4145: для звітності та B2B-обміну
- Довгостроковий електронний підпис: CAdES-XL і PAdES-LTA
Усі 16 форматів підпису на вашому сайті — за 10 хвилин
Готові віджети підпису, перевірки та шифрування за ДСТУ. Ключ і пароль не покидають браузер користувача. На кожному новому домені — 7 днів безкоштовно.
Живе демоЯк підключити