ДСТУ 4145-2002 (:VMR 4145-2002)
ДСТУ 4145-2002 (полное название: «ДСТУ 4145-2002. Информационные технологии. Криптографическая защита информации. Цифровая подпись, основанная на эллиптических кривых. Формирование и проверка») — украинский стандарт, описывающий алгоритмы формирования и проверки электронной цифровой подписи, основанные на свойствах групп точек эллиптических кривых над полями и правилах применения этих правил к сообщениям, которые пересылаются по каналами связи и/или обрабатываются в компьютеризованных системах общего назначения.
Принят и введён в действие приказом государственного комитета Украины по вопросам технического регулирования и потребительской политики от 28 декабря 2002 года № 31[1]. Текст стандарта есть в открытом доступе[2].
В стандарте по умолчанию используется хеш-функция ГОСТ 34.311-95, и генератор случайных последовательностей с использованием алгоритма ДСТУ ГОСТ 28147:2009.
Согласно приказу Минцифры Украины от 30 сентября 2020 года № 140/614, с 1 января 2021 года стандарт должен использоваться совместно с ДСТУ 7564:2014 (хеш-функция «Купина»), но использование стандарта совместно с ГОСТ 34.311-95 разрешено до 1 января 2022 года[3].
Основной алгоритм
[править | править код]Основными процедурами алгоритма цифровой подписи, установленными ДСТУ 4145-2002 являются вычисление предподписи, вычисление подписи, и проверка цифровой подписи[2].
Общие параметры цифровой подписи
[править | править код]- степень расширения - простое число (параметр поля )
- неприводимый полином степени , определяющий операции в
- коэффициенты эллиптической кривой вида , где . Рекомендованные для использования эллиптические кривые для полиномиального базиса и оптимального нормального базиса указаны в Приложении к стандарту[1]
- базовая точка эллиптической кривой , порождающая подгруппу группы
- порядок базовой точки (простое число)
- длина представления числа в двоичном виде
- идентификатор используемой хеш-функции
- длина цифровой подписи
Дополнительные условия на параметры
[править | править код]- порядок циклической подгруппы должен удовлетворять условию
- должно выполняться MOV условие (условие Менезеса-Окамото-Венстоуна): для
Формирование цифровой подписи
[править | править код]Цифровая подпись вычисляется на основе сообщения и предподписи.
Входные данные
[править | править код]- общие параметры цифровой подписи
- личный ключ цифровой подписи
- сообщение длины
- хеш-функция с длиной хеш-кода и идентификатором
- длина цифровой подписи , которая выбирается для группы пользователей:
Вычисление цифровой предподписи
[править | править код]Вычисление предподписи состоит в выборе первой координаты секретной, случайно выбранной точки из орбиты точки . После использования цифровой предподписи её сразу уничтожают вместе с соответствующим рандомизатором.
Входные данные
[править | править код]- общие параметры цифровой подписи
Алгоритм вычисления предподписи
[править | править код]- выбор рандомизатора на основе криптографического генератора псевдослучайных чисел
- вычисление точки эллиптической кривой
- проверка значения координаты ( если , то повторить процедуру выбора рандомизатора)
- иначе принять . (иное обозначение: )
Результат
[править | править код]- цифровая предподпись
Алгоритм вычисления подписи
[править | править код]- проверка корректности общих параметров, ключей, и выполнения условий и ограничений относительно значений промежуточных величин в соответствии с определенными стандартом процедурами
- вычисление хеш-кода на основе сообщения
- получение элемента основного поля из хеш-кода по установленной стандартом процедуре. Если при этом получается , то принимают
- выбор рандомизатора
- вычисление цифровой предподписи
- вычисление элемента основного поля (произведение является элементом ) (фактически, )
- получение целого числа из элемента основного поля по установленной стандартом процедуре (в случае выбирается новый рандомизатор)
- вычисление целого числа (если , выбирается новый рандомизатор)
- на основе пары целых чисел записывается цифровая подпись как двоичный ряд длины : в младших разрядах левой половины битов размещается значение , в младших разрядах правой половины битов размещается значение , оставшиеся разряды заполняются нулями
Результат
[править | править код]- подписанное сообщение в виде (, , ), где - цифровая подпись
Проверка цифровой подписи
[править | править код]Входные данные
[править | править код]- общие параметры цифровой подписи
- открытый ключ цифровой подписи ,
- подписанное сообщение (, , ) длины
- хеш-функция
Алгоритм вычисления подписи
[править | править код]- проверка корректности общих параметров, ключей, и выполнения условий и ограничений относительно значений промежуточных величин в соответствии с определенными стандартом процедурами
- проверка идентификатора хеш-функции : если данный идентификатор не используется в заданной группе пользователей, то принимается решение "подпись недействительна" и проверка завершается
- на основании определяется длина хеш-кода
- проверка условий . Если хотя бы одно из них не выполняется, то принимается решение "подпись недействительна" и проверка завершается
- проверка наличия текста сообщения и его длины . В случае отсутствия текста либо при принимается решение "подпись недействительна" и проверка завершается
- вычисление хеш-кода на основе сообщения
- получение элемента основного поля из хеш-кода по установленной стандартом процедуре. Если при этом получается , то принимают
- выделение пары чисел из двоичной записи цифровой подписи
- проверка условий и . Если хотя бы одно из них не выполняется, то принимается решение "подпись недействительна" и проверка завершается
- вычисление точки эллиптической кривой
- вычисление элемента основного поля
- получение целого числа из элемента основного поля по установленной стандартом процедуре
- если , то принимается решение "подпись действительна", иначе - "подпись недействительна"
Результат
[править | править код]- принятое решение: "подпись действительна" либо "подпись недействительна"
Криптостойкость
[править | править код]Криптостойкость цифровой подписи основывается на сложности дискретного логарифмирования в циклической подгруппе группы точек эллиптической кривой.
Используемые вспомогательные алгоритмы
[править | править код]Получение целого числа из элемента основного поля
[править | править код]Входные данные
[править | править код]- элемент основного поля
- порядок базовой точки эллиптической кривой
Результат
[править | править код]- целое число , удовлетворяющее условию
Алгоритм вычисления
[править | править код]- если элемент основного поля равен 0, то , конец алгоритма
- нахождение целого числа
- принимается и находится , соответствующий наибольшему индексу , при котором . Если такого индекса нет, принимают и заканчивают выполнение алгоритма
- двоичный ряд длины является двоичным представлением выходного числа алгоритма
Ссылки
[править | править код]- Текст ДСТУ 4145:2002 на сайте ДП «УкрНДНЦ» (укр.).
- dsszzi.gov.ua . — Технические спецификации форматов криптографических сообщений. Защищённые данные. Архивировано из оригинала 26 мая 2012 года.
- Про затвердження вимог до форматів, структури та протоколів, що реалізуються у надійних засобах електронного цифрового підпису (укр.).
- Додаток до Вимог до формату посиленого сертифіката відкритого ключа. Опис генератора випадкових послідовностей
Программные реализации
- Проект ДСТУ 4145-2002 на сайте SourceForge.net — Библиотека с открытым исходным кодом для генерации ключей, создания и проверки ЭЦП по стандарту ДСТУ 4145-2002.
- Bouncy Castle — Библиотека с открытым исходным кодом на языке Java. Реализует JCA интерфейс
- cryptonite - библиотека, принадлежащая акционерному обществу Приватбанк с открытым программным кодом на C (язык), имеет экспертный вывод UA.14360570.00001-01 90 01-1 по результатам государственной экспертизы в области криптографической защиты информации
- Jkurwa - библиотека с открытым исходным кодом на языке JavaScript
- ТОВ НВЦ "Бітіс" — лицензированная реализация стандарта на Java, C++, Object Pascal
Примечания
[править | править код]- ↑ 1 2 Інформаційні технології. Криптографічний захист інформації. Цифровий підпис, що ґрунтується на еліптичних кривих. Формування та перевіряння . shop.uas.org.ua. Дата обращения: 13 декабря 2019. Архивировано 5 мая 2019 года.
- ↑ 1 2 Національні стандарти на які є посилання у нормативно-правових актах | ДП «УкрНДНЦ» . uas.org.ua. Дата обращения: 13 декабря 2019. Архивировано 14 мая 2019 года.
- ↑ Приказ Минцифры Украины от 30 сентября 2020 года № 140/614 . Дата обращения: 11 января 2020.