ДСТУ 4145-2002

Материал из testwiki
Версия от 20:22, 11 октября 2024; imported>NapalmBot (Исправление псевдозаголовков (см. Википедия:Доступность#Заголовки))
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

ДСТУ 4145-2002 (полное название: «ДСТУ 4145-2002. Информационные технологии. Криптографическая защита информации. Цифровая подпись, основанная на эллиптических кривых. Формирование и проверка») — украинский стандарт, описывающий алгоритмы формирования и проверки электронной цифровой подписи, основанные на свойствах групп точек эллиптических кривых над полями GF(2m)и правилах применения этих правил к сообщениям, которые пересылаются по каналами связи и/или обрабатываются в компьютеризованных системах общего назначения.

Принят и введён в действие приказом государственного комитета Украины по вопросам технического регулирования и потребительской политики от 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].

Общие параметры цифровой подписи

Дополнительные условия на параметры

  • порядок циклической подгруппы n должен удовлетворять условию nmax(2160,4[2m]+1)
  • должно выполняться MOV условие (условие Менезеса-Окамото-Венстоуна): 2mk1(modn) для k=1,2,...,32

Формирование цифровой подписи

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

Входные данные

  • общие параметры цифровой подписи
  • личный ключ цифровой подписи d
  • сообщение T длины LT>0
  • хеш-функция H(T) с длиной хеш-кода LH и идентификатором iH
  • длина цифровой подписи LD, которая выбирается для группы пользователей: LD2L(n),LD0 (mod  16)

Вычисление цифровой предподписи

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

Входные данные
  • общие параметры цифровой подписи
Алгоритм вычисления предподписи
  1. выбор рандомизатора e на основе криптографического генератора псевдослучайных чисел
  2. вычисление точки эллиптической кривой R=eP=(xR,yR)
  3. проверка значения координаты xR ( если xR=0, то повторить процедуру выбора рандомизатора)
  4. иначе принять FR=xR. (иное обозначение: Fe=π(R))
Результат

Алгоритм вычисления подписи

  1. проверка корректности общих параметров, ключей, и выполнения условий и ограничений относительно значений промежуточных величин в соответствии с определенными стандартом процедурами
  2. вычисление хеш-кода H(T) на основе сообщения T
  3. получение элемента основного поля h из хеш-кода H(T) по установленной стандартом процедуре. Если при этом получается h=0, то принимают h=1
  4. выбор рандомизатора e
  5. вычисление цифровой предподписи Fe
  6. вычисление элемента основного поля y=hFe (произведение является элементом GF(2m)) (фактически, r=y=hπ(R))
  7. получение целого числа r из элемента основного поля y по установленной стандартом процедуре (в случае r=0 выбирается новый рандомизатор)
  8. вычисление целого числа s=(e+dr) mod n (если s=0, выбирается новый рандомизатор)
  9. на основе пары целых чисел (r,s) записывается цифровая подпись D как двоичный ряд длины LD: в младших разрядах левой половины битов размещается значение s, в младших разрядах правой половины битов размещается значение r, оставшиеся разряды заполняются нулями

Результат

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

Проверка цифровой подписи

Входные данные

  • общие параметры цифровой подписи
  • открытый ключ цифровой подписи Q, Q=dP
  • подписанное сообщение (iH, T, D) длины L=L(iH)+LT+LD
  • хеш-функция H(T)

Алгоритм вычисления подписи

  1. проверка корректности общих параметров, ключей, и выполнения условий и ограничений относительно значений промежуточных величин в соответствии с определенными стандартом процедурами
  2. проверка идентификатора хеш-функции iH: если данный идентификатор не используется в заданной группе пользователей, то принимается решение "подпись недействительна" и проверка завершается
  3. на основании iH определяется длина хеш-кода LH
  4. проверка условий LD2L(n),LD0 (mod  16). Если хотя бы одно из них не выполняется, то принимается решение "подпись недействительна" и проверка завершается
  5. проверка наличия текста сообщения и его длины LT=LL(iH)LD. В случае отсутствия текста либо при LT0 принимается решение "подпись недействительна" и проверка завершается
  6. вычисление хеш-кода H(T) на основе сообщения T
  7. получение элемента основного поля h из хеш-кода H(T) по установленной стандартом процедуре. Если при этом получается h=0, то принимают h=1
  8. выделение пары чисел (r,s) из двоичной записи цифровой подписи D
  9. проверка условий 0<r<n и 0<s<n. Если хотя бы одно из них не выполняется, то принимается решение "подпись недействительна" и проверка завершается
  10. вычисление точки эллиптической кривой R=sP+rQ,R=(xR,yR)
  11. вычисление элемента основного поля y=hxR
  12. получение целого числа r~ из элемента основного поля y по установленной стандартом процедуре
  13. если r=r~, то принимается решение "подпись действительна", иначе - "подпись недействительна"

Результат

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

Криптостойкость

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

Используемые вспомогательные алгоритмы

Получение целого числа из элемента основного поля

Входные данные

  • элемент основного поля xGF(2m),x=(xm1,...,x0)
  • порядок базовой точки эллиптической кривой n

Результат

  • целое число a=(aL1,...,a0), удовлетворяющее условию L=L(a)<L(n)

Алгоритм вычисления

  1. если элемент x основного поля равен 0, то a0   L=L(a)1, конец алгоритма
  2. нахождение целого числа k=L(n)1
  3. принимается ai=xi  i=0,...k1 и находится j, соответствующий наибольшему индексу i, при котором ai=1. Если такого индекса нет, принимают a0 и заканчивают выполнение алгоритма
  4. двоичный ряд (aj,...,a0) длины L=L(a)=j+1 является двоичным представлением выходного числа алгоритма

Ссылки

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

Примечания

Шаблон:Криптографические алгоритмы с парой открытый/закрытый ключ