ДСТУ 4145-2002 (полное название: «ДСТУ 4145-2002. Информационные технологии. Криптографическая защита информации. Цифровая подпись, основанная на эллиптических кривых. Формирование и проверка») — украинский стандарт, описывающий алгоритмы формирования и проверки электронной цифровой подписи, основанные на свойствах групп точек эллиптических кривых над полями и правилах применения этих правил к сообщениям, которые пересылаются по каналами связи и/или обрабатываются в компьютеризованных системах общего назначения.
Принят и введён в действие приказом государственного комитета Украины по вопросам технического регулирования и потребительской политики от 28 декабря 2002 года № 31. Текст стандарта есть в открытом доступе.
В стандарте по умолчанию используется хеш-функция ГОСТ 34.311-95, и генератор случайных последовательностей с использованием алгоритма ДСТУ ГОСТ 28147:2009.
Согласно приказу Минцифры Украины от 30 сентября 2020 года № 140/614, с 1 января 2021 года стандарт должен использоваться совместно с ДСТУ 7564:2014 (хеш-функция «Купина»), но использование стандарта совместно с ГОСТ 34.311-95 разрешено до 1 января 2022 года.
Основной алгоритм Основными процедурами алгоритма цифровой подписи, установленными ДСТУ 4145-2002 являются вычисление предподписи, вычисление подписи, и проверка цифровой подписи.
Общие параметры цифровой подписи
степень расширения - простое число (параметр поля ) неприводимый полином степени , определяющий операции в коэффициенты эллиптической кривой вида , где . Рекомендованные для использования эллиптические кривые для полиномиального базиса и оптимального нормального базиса указаны в Приложении к стандарту базовая точка эллиптической кривой , порождающая подгруппу группы порядок базовой точки (простое число) длина представления числа в двоичном виде идентификатор используемой хеш-функции длина цифровой подписи
Дополнительные условия на параметры
порядок циклической подгруппы должен удовлетворять условию должно выполняться MOV условие (условие Менезеса-Окамото-Венстоуна): для
Формирование цифровой подписи Цифровая подпись вычисляется на основе сообщения и предподписи.
Входные данные
общие параметры цифровой подписи личный ключ цифровой подписи сообщение длины хеш-функция с длиной хеш-кода и идентификатором длина цифровой подписи , которая выбирается для группы пользователей:
Вычисление цифровой предподписи Вычисление предподписи состоит в выборе первой координаты секретной, случайно выбранной точки из орбиты точки . После использования цифровой предподписи её сразу уничтожают вместе с соответствующим рандомизатором.
Входные данные
общие параметры цифровой подписи
Алгоритм вычисления предподписи
выбор рандомизатора на основе криптографического генератора псевдослучайных чисел вычисление точки эллиптической кривой проверка значения координаты ( если , то повторить процедуру выбора рандомизатора) иначе принять . (иное обозначение: )
Результат
цифровая предподпись
Алгоритм вычисления подписи
проверка корректности общих параметров, ключей, и выполнения условий и ограничений относительно значений промежуточных величин в соответствии с определенными стандартом процедурами вычисление хеш-кода на основе сообщения получение элемента основного поля из хеш-кода по установленной стандартом процедуре. Если при этом получается , то принимают выбор рандомизатора вычисление цифровой предподписи вычисление элемента основного поля (произведение является элементом ) (фактически, ) получение целого числа из элемента основного поля по установленной стандартом процедуре (в случае выбирается новый рандомизатор) вычисление целого числа (если , выбирается новый рандомизатор) на основе пары целых чисел записывается цифровая подпись как двоичный ряд длины : в младших разрядах левой половины битов размещается значение , в младших разрядах правой половины битов размещается значение , оставшиеся разряды заполняются нулями
Результат
подписанное сообщение в виде (, , ), где - цифровая подпись
Проверка цифровой подписи
Входные данные
общие параметры цифровой подписи открытый ключ цифровой подписи , подписанное сообщение (, , ) длины хеш-функция
Алгоритм вычисления подписи
проверка корректности общих параметров, ключей, и выполнения условий и ограничений относительно значений промежуточных величин в соответствии с определенными стандартом процедурами проверка идентификатора хеш-функции : если данный идентификатор не используется в заданной группе пользователей, то принимается решение "подпись недействительна" и проверка завершается на основании определяется длина хеш-кода проверка условий . Если хотя бы одно из них не выполняется, то принимается решение "подпись недействительна" и проверка завершается проверка наличия текста сообщения и его длины . В случае отсутствия текста либо при принимается решение "подпись недействительна" и проверка завершается вычисление хеш-кода на основе сообщения получение элемента основного поля из хеш-кода по установленной стандартом процедуре. Если при этом получается , то принимают выделение пары чисел из двоичной записи цифровой подписи проверка условий и . Если хотя бы одно из них не выполняется, то принимается решение "подпись недействительна" и проверка завершается вычисление точки эллиптической кривой вычисление элемента основного поля получение целого числа из элемента основного поля по установленной стандартом процедуре если , то принимается решение "подпись действительна", иначе - "подпись недействительна"
Результат
принятое решение: "подпись действительна" либо "подпись недействительна"
Криптостойкость Криптостойкость цифровой подписи основывается на сложности дискретного логарифмирования в циклической подгруппе группы точек эллиптической кривой.
Используемые вспомогательные алгоритмы
Получение целого числа из элемента основного поля
Входные данные
элемент основного поля порядок базовой точки эллиптической кривой
Результат
целое число , удовлетворяющее условию
Алгоритм вычисления
если элемент основного поля равен 0, то , конец алгоритма нахождение целого числа принимается и находится , соответствующий наибольшему индексу , при котором . Если такого индекса нет, принимают и заканчивают выполнение алгоритма двоичный ряд длины является двоичным представлением выходного числа алгоритма
Ссылки
Додаток до Вимог до формату посиленого сертифіката відкритого ключа. Опис генератора випадкових послідовностей
Программные реализации — Библиотека с открытым исходным кодом для генерации ключей, создания и проверки ЭЦП по стандарту ДСТУ 4145-2002. Bouncy Castle — Библиотека с открытым исходным кодом на языке Java. Реализует JCA интерфейс cryptonite - библиотека, принадлежащая акционерному обществу Приватбанк с открытым программным кодом на C (язык), имеет экспертный вывод UA.14360570.00001-01 90 01-1 по результатам государственной экспертизы в области криптографической защиты информации Jkurwa - библиотека с открытым исходным кодом на языке JavaScript ТОВ НВЦ "Бітіс" — лицензированная реализация стандарта на Java, C++, Object Pascal
Примечания Категория:Стандарты Украины Категория:Стандарты криптографии Категория:Электронная подпись Категория:Эллиптические кривые