Блог · Стандарти ДСТУ

«Купина» (ДСТУ 7564:2014): що це за геш-функція і чому вона замінює ГОСТ 34.311-95

Опубліковано

Україна має власний сучасний стандарт гешування — «Купину». Розповідаємо, навіщо підпису геш-функція, чим «Купина» краща за попередницю з 1995 року і чому правильна стратегія сьогодні — підтримувати обидві.

Опубліковано 7 серпня 2026


Коротка відповідь. «Купина» — це українська криптографічна геш-функція, стандартизована як ДСТУ 7564:2014. У кваліфікованому електронному підписі (КЕП) вона виконує ту саму роль, що раніше виконував ДСТУ ГОСТ 34.311-95: стискає документ у короткий «відбиток», який і підписується ключем ДСТУ 4145. «Купина» спроєктована за сучасними криптографічними принципами і поступово замінює ГОСТ у складі національних систем. У DSTUcrypt вона підтримується з коробки — вмикається однією опцією digest:'kupyna-256'.

Навіщо підпису взагалі геш-функція

Електронний підпис ніколи не «підписує» документ цілком — це було б повільно й математично незручно. Замість цього документ спершу пропускають крізь геш-функцію, яка перетворює файл будь-якого розміру на короткий відбиток фіксованої довжини (для «Купини-256» — 256 біт). Уже цей відбиток підписується особистим ключем за ДСТУ 4145.

Тому стійкість підпису залежить від двох алгоритмів одразу: від самого підпису і від геш-функції. Якщо для геш-функції навчаться підбирати два різні документи з однаковим відбитком (колізію), зловмисник зможе «переклеїти» чинний підпис з одного документа на інший. Саме тому застарілу геш-функцію в підписі рано чи пізно треба міняти — навіть якщо алгоритм підпису досі надійний.

Звідки взялася «Купина»

До 2014 року в українському КЕП використовувалася геш-функція ДСТУ ГОСТ 34.311-95 — адаптований міждержавний стандарт іще радянської криптографічної школи, побудований на блоковому шифрі ГОСТ 28147-89. Для свого часу це було добротне рішення, але конструкції 1990-х не розраховувалися на сучасні методи криптоаналізу: опубліковані дослідження показали, що реальна стійкість ГОСТ 34.311-95 нижча за номінальну.

У 2014 році Україна ухвалила власний сучасний стандарт — ДСТУ 7564:2014 «Купина» (чинний з 2015-го). Його розробили українські криптографи з урахуванням підходів, перевірених у міжнародному конкурсі SHA-3: в основі — AES-подібні перетворення з великим запасом криптографічної міцності. Стандарт визначає варіанти з різною довжиною відбитка — найуживаніший у КЕП «Купина-256», а також «Купина-384» і «Купина-512» для задач, де потрібен довший геш.

«Купина» проти ГОСТ 34.311-95

«Купина» (ДСТУ 7564:2014) ДСТУ ГОСТ 34.311-95
Рік стандартизації 2014 (чинний з 2015) 1995
Довжина відбитка 256 / 384 / 512 біт 256 біт
Конструкція сучасна, на AES-подібних перетвореннях (покоління SHA-3) на базі блокового шифру ГОСТ 28147-89
Відомий криптоаналіз атак, що загрожують практичній стійкості, не опубліковано показано, що реальна стійкість нижча за номінальну
Статус у нацсистемах цільовий стандарт, впроваджується підтримується для сумісності; саме його сьогодні приймають держвалідатори

«Купина», «Калина», ДСТУ 4145: як стандарти працюють разом

Сучасний український криптографічний стек — це три стандарти з різними ролями:

  • ДСТУ 4145-2002 — власне електронний підпис на еліптичних кривих. Це те, чим є ваш ключ КЕП.
  • ДСТУ 7564:2014 «Купина» — геш-функція: готує відбиток документа для підпису.
  • ДСТУ 7624:2014 «Калина» — блоковий шифр: шифрує самі дані (наприклад, у CMS EnvelopedData).

Важливий практичний наслідок: «Купина» не вимагає нового ключа. Ключ — це ДСТУ 4145; геш-функція лише «пристібається» до нього при кожному підписі. Тому перехід із ГОСТ 34.311 на «Купину» — це зміна одного параметра підпису, а не перевипуск ключів усім користувачам.

Чому держвалідатори досі приймають ГОСТ — і що це означає для вас

Перехід великої державної інфраструктури на новий стандарт — процес поступовий. Станом на сьогодні держвалідатори (застосунок Дія, центральний засвідчувальний орган) приймають пару «підпис ДСТУ 4145 + геш ДСТУ ГОСТ 34.311-95» — саме тому вона лишається безпечним замовчуванням для документів, які підуть у державні системи.

Для інтегратора це означає просту стратегію: за замовчуванням підписувати з ГОСТ 34.311, а «Купину» вмикати явно там, де приймальна сторона вже її підтримує (внутрішній документообіг, B2B-обмін, власні системи перевірки). Рішення, яке підтримує обидва геші, готове і до сьогоднішніх вимог, і до майбутнього переходу.

Як це зроблено в DSTUcrypt

У DSTUcrypt — сервісі вбудовуваних віджетів КЕП — обидві геш-функції доступні з коробки, а вся криптографія виконується у браузері користувача (WebAssembly): ключ і пароль ніколи не потрапляють ні на ваш сервер, ні до нас. Вибір геша — одна опція:

підпис із гешем «Купина» — одна опція

import { embed } from 'https://dstucrypt.io/embed/dstucrypt-embed.mjs';

const signer = await embed('sign', { mount: 'modal' });
const { signature } = await signer.sign(fileBytes, {
  format: 'CAdES-T',
  digest: 'kupyna-256', // «Купина» ДСТУ 7564; без опції — ГОСТ 34.311
});

Разом із гешем сервіс автоматично бере узгоджений алгоритм підпису ДСТУ 4145 — жодних додаткових налаштувань. Це працює в усіх 16 підтримуваних форматах, включно з XML-підписом: XAdES з українськими ключами ДСТУ 4145 підтримує і ГОСТ 34.311, і «Купину-256». А коли держсистеми перейдуть на «Купину», зміна дефолту у вашій інтеграції — один рядок коду, без перезбирання й оновлень на вашому боці.

Чому це рідкість. Більшість криптобібліотек для вебу або взагалі не знають українських стандартів, або реалізують лише старий ГОСТ. DSTUcrypt працює на криптоядрі — перевіреній нативній C/C++-бібліотеці, скомпільованій у WebAssembly, яка роками працює в українській PKI. Це production-рішення з підтримкою повного стека оновлених нацстандартів: «Купина», «Калина», ДСТУ 4145.

Покрокову інструкцію з прикладами для всіх форматів дивіться у статті «Як підписати документ КЕП з гешем «Купина» у браузері».

Поширені запитання

Чи потрібен новий ключ КЕП, щоб підписувати з «Купиною»?

Ні. Ключ КЕП — це ключ підпису ДСТУ 4145, а «Купина» лише замінює геш-функцію в парі з ним. Якщо ваш ключ підтримує сучасні алгоритми, достатньо увімкнути опцію digest:'kupyna-256' при підписі.

Чи приймуть підпис із гешем «Купина» у Дії та державних реєстрах?

Сьогодні держвалідатори (Дія, ЦЗО) приймають пару «підпис ДСТУ 4145 + геш ДСТУ ГОСТ 34.311-95», тому саме вона є безпечним замовчуванням. «Купину» варто вмикати явно там, де приймальна сторона її підтримує. Коли держсистеми перейдуть на «Купину», зміна зводиться до одного рядка коду.

Чим «Купина» відрізняється від «Калини»?

«Купина» (ДСТУ 7564:2014) — геш-функція: стискає документ у контрольний відбиток для підпису. «Калина» (ДСТУ 7624:2014) — блоковий шифр: шифрує самі дані. Це два різні стандарти, які разом із підписом ДСТУ 4145 складають сучасний український криптографічний стек.

Чи вважається ГОСТ 34.311-95 зламаним?

Практичних атак на повний ГОСТ 34.311-95 не продемонстровано, але опубліковані криптоаналітичні роботи показують, що його реальна стійкість нижча за номінальну, а сама конструкція 1990-х не відповідає сучасним вимогам. Саме тому Україна ухвалила сучасний стандарт — ДСТУ 7564:2014 «Купина».

Читайте також

КЕП із «Купиною» на вашому сайті — за 10 хвилин

Готові віджети підпису, перевірки та шифрування за ДСТУ. Ключ і пароль не покидають браузер користувача. На кожному новому домені — 7 днів безкоштовно.

Живе демоЯк підключити

Спробуйте КЕП на своєму сайті

Готові віджети підпису, перевірки та входу за ДСТУ. На кожному новому домені — 7 днів безкоштовно.