ДСТУ 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 условие (условие Менезеса-Окамото-Венстоуна): для

Формирование цифровой подписи[править | править код]

Цифровая подпись вычисляется на основе сообщения и предподписи.

Входные данные[править | править код]

  • общие параметры цифровой подписи
  • личный ключ цифровой подписи
  • сообщение длины
  • хеш-функция с длиной хеш-кода и идентификатором
  • длина цифровой подписи , которая выбирается для группы пользователей:

Вычисление цифровой предподписи[править | править код]

Вычисление предподписи состоит в выборе первой координаты секретной, случайно выбранной точки из орбиты точки . После использования цифровой предподписи её сразу уничтожают вместе с соответствующим рандомизатором.

Входные данные[править | править код]
  • общие параметры цифровой подписи
Алгоритм вычисления предподписи[править | править код]
  1. выбор рандомизатора на основе криптографического генератора псевдослучайных чисел
  2. вычисление точки эллиптической кривой
  3. проверка значения координаты ( если , то повторить процедуру выбора рандомизатора)
  4. иначе принять . (иное обозначение: )
Результат[править | править код]

Алгоритм вычисления подписи[править | править код]

  1. проверка корректности общих параметров, ключей, и выполнения условий и ограничений относительно значений промежуточных величин в соответствии с определенными стандартом процедурами
  2. вычисление хеш-кода на основе сообщения
  3. получение элемента основного поля из хеш-кода по установленной стандартом процедуре. Если при этом получается , то принимают
  4. выбор рандомизатора
  5. вычисление цифровой предподписи
  6. вычисление элемента основного поля  (произведение является элементом ) (фактически, )
  7. получение целого числа из элемента основного поля по установленной стандартом процедуре (в случае выбирается новый рандомизатор)
  8. вычисление целого числа (если , выбирается новый рандомизатор)
  9. на основе пары целых чисел записывается цифровая подпись как двоичный ряд длины : в младших разрядах левой половины битов размещается значение , в младших разрядах правой половины битов размещается значение , оставшиеся разряды заполняются нулями

Результат[править | править код]

  • подписанное сообщение в виде (, , ), где - цифровая подпись

Проверка цифровой подписи[править | править код]

Входные данные[править | править код]

  • общие параметры цифровой подписи
  • открытый ключ цифровой подписи ,
  • подписанное сообщение (, , ) длины
  • хеш-функция

Алгоритм вычисления подписи[править | править код]

  1. проверка корректности общих параметров, ключей, и выполнения условий и ограничений относительно значений промежуточных величин в соответствии с определенными стандартом процедурами
  2. проверка идентификатора хеш-функции : если данный идентификатор не используется в заданной группе пользователей, то принимается решение "подпись недействительна" и проверка завершается
  3. на основании определяется длина хеш-кода
  4. проверка условий . Если хотя бы одно из них не выполняется, то принимается решение "подпись недействительна" и проверка завершается
  5. проверка наличия текста сообщения и его длины . В случае отсутствия текста либо при принимается решение "подпись недействительна" и проверка завершается
  6. вычисление хеш-кода на основе сообщения
  7. получение элемента основного поля из хеш-кода по установленной стандартом процедуре. Если при этом получается , то принимают
  8. выделение пары чисел из двоичной записи цифровой подписи
  9. проверка условий и . Если хотя бы одно из них не выполняется, то принимается решение "подпись недействительна" и проверка завершается
  10. вычисление точки эллиптической кривой
  11. вычисление элемента основного поля
  12. получение целого числа из элемента основного поля по установленной стандартом процедуре
  13. если , то принимается решение "подпись действительна", иначе - "подпись недействительна"

Результат[править | править код]

  • принятое решение: "подпись действительна" либо "подпись недействительна"

Криптостойкость[править | править код]

Криптостойкость цифровой подписи основывается на сложности дискретного логарифмирования в циклической подгруппе группы точек эллиптической кривой.

Используемые вспомогательные алгоритмы[править | править код]

Получение целого числа из элемента основного поля[править | править код]

Входные данные[править | править код]

  • элемент основного поля
  • порядок базовой точки эллиптической кривой

Результат[править | править код]

  • целое число , удовлетворяющее условию

Алгоритм вычисления[править | править код]

  1. если элемент основного поля равен 0, то , конец алгоритма
  2. нахождение целого числа
  3. принимается и находится , соответствующий наибольшему индексу , при котором . Если такого индекса нет, принимают и заканчивают выполнение алгоритма
  4. двоичный ряд длины является двоичным представлением выходного числа алгоритма

Ссылки[править | править код]

Программные реализации

Примечания[править | править код]

  1. 1 2 Інформаційні технології. Криптографічний захист інформації. Цифровий підпис, що ґрунтується на еліптичних кривих. Формування та перевіряння. shop.uas.org.ua. Дата обращения: 13 декабря 2019. Архивировано 5 мая 2019 года.
  2. 1 2 Національні стандарти на які є посилання у нормативно-правових актах | ДП «УкрНДНЦ». uas.org.ua. Дата обращения: 13 декабря 2019. Архивировано 14 мая 2019 года.
  3. Приказ Минцифры Украины от 30 сентября 2020 года № 140/614. Дата обращения: 11 января 2020.