ДСТУ 4145-2002 сторінка 3 з 9
-
Перетворення елемента основного поля на ціле число
У цьому підрозділі встановлено алгоритм перетворення елемента основного поля хє GF(2m) на ціле число а.
Вхідні дані алгоритму: елемент основного поля хє GF(2m), х=(хтИ,..., х0) і порядок базової точки еліптичної кривої п.
Результат виконання алгоритму — ціле число a = а0), що задовольняє умову
L = Ца)< Цп).
Алгоритм перетворення елемента основного поля на ціле число:
-
Якщо елемент х основного поля дорівнює 0, то ««-0 L = L(«)<-1, кінець алгоритму.
-
Обчислюють ціле число k=L(n)-1.
-
Приймають сі,= х/ для / = 0 /с-1 та знаходять j, що дорівнює найбільшому Індексу і,
при якому а,= 1. Якщо такого індексу нема, то приймають 0 та закінчують виконання алгоритму.
-
Двійковий рядок («;,...,д0) довжини L = L(tf)=y+1 зображує ціле число а, яке є результат виконання алгоритму.
-
Перетворення геш-коду на елемент основного поля
У цьому підрозділі встановлено алгоритм перетворення результату обчислення функції гешування Ло) на елемент основного поля хє GF(2m), x = (xm_1,..., х0).
Вхідні дані алгоритму: геш-код (hLif_b..., h0).
Результат виконання алгоритму— елемент основного поля хє GF(2m), x = (xm_1 х0).
Алгоритм перетворення результату обчислення функції гешування на елемент основного поля:
-
Обчислюють ціле число k = min(m, LH).
-
Приймають Xj = h, для і = 0 k - 1.
-
Якщо k < т, то приймають х, = 0 для І= к,..., т - 1.
-
Двійковий рядок х0) зображує елемент х основного поля, який є результат вико
нання алгоритму.
-
Перетворення пари цілих чисел на цифровий підпис
У цьому підрозділі встановлено алгоритм перетворення пари цілих чисел (r, s), які задовольняють умови 0<г< п, 0<s<n, на цифровий підпис D = Do).
Вхідні дані алгоритму: пара цілих чисел (r, s) у двійковому зображенні: г = г0),
s = (sL(S)_i s0), 0<r<n, 0<s<n, довжина цифрового підпису LD: LD> 2Цп), LD кратне 16.
Результат виконання алгоритму — цифровий підпис D = (Df. -і,..., Do) довжини LD.
Алгоритм перетворення пари цілих чисел на цифровий підпис:
-
Приймають /= Ld/2.
-
Утворюють двійковий рядок R за правилом:
-
Приймають R(:= rt для / = L(r)-1.
-
Приймають = 0 для і-Цг),..., І- 1.
-
-
Утворюють двійковий рядок S за правилом:
-
Приймають S, = s, для /=0,..., L(s)-1.
-
Приймають S, = 0 для /= L(s),..., І - 1.
-
-
Рядок D є конкатенація двох рядків S||R.
-
Двійковий рядок D = (Dt Do) довжини LD є результат виконання алгоритму.
-
Перетворення двійкового рядка на пару цілих чисел
Цей підрозділ встановлює алгоритм перетворення двійкового рядка D парної довжини LD на пару цілих чисел r= (гЦгу_ь..., r0), s = з0).
Вхідні дані алгоритму: двійковий рядок D = парної довжини LD.
Результат виконання алгоритму — пара цілих чисел г = (гцГ)_і,..., г0) і s = з0).
Алгоритм перетворення двійкового рядка на пару цілих чисел:
-
Обчислюють ціле число І - Ld/2 .
-
Приймають r, = D, для /= 0,1.
-
Визначають j як найбільше і, і=0,..., /-1, для якого г, = 1.
-
Якщо такого індексу нема, то г<-О,у = О та переходять до кроку 6.
-
Двійковий рядок (Гцг}_r0), L(r)=/+1, зображає ціле число г.
-
Приймають s,= Dj і t для і- 0,..., ї-1.
-
Визначають індекс / як найбільше і, i=Q Z-1, для якого з,= 1.
-
Якщо такого індексу нема, то s«-0, j=0 та переходять до кроку 10.
-
Двійковий рядок (sqS)_i,..., s0), L(s)=j+ 1, зображає ціле число s.
-
Пара цілих чисел rise результат виконання алгоритму.
-
ОБЧИСЛЮВАЛЬНІ АЛГОРИТМИ
У цьому розділі описано правила реалізації процедур, необхідних для побудови криптографічних алгоритмів, установлених цим стандартом.
-
Генератор випадкових послідовностей
Генератор випадкових послідовностей використовують для отримування випадкових даних, необхідних для побудови загальних параметрів цифрового підпису, обчислення цифрового підпису, а також для побудови відкритих і особистих ключів цифрового підпису.
Як генератор випадкових послідовностей треба використовувати генератор випадкових послідовностей, визначений у додатку А, або будь-який інший генератор випадкових послідовностей, рекомендований уповноваженим органом державної влади у сфері криптографічного захисту інформації.
-
Функція гешування
У цьому стандарті функцію гешування використовують для обчислення й перевіряння цифрового підпису. Функція гешування Н перетворює текст Т довільної довжини LT на двійковий рядок Н(Т) фіксованої довжини LH.
У цьому стандарті треба використовувати функцію гешування, встановлену в ГОСТ 34.311, або будь-яку іншу функцію гешування, рекомендовану уповноваженим органом державної влади у сфері криптографічного захисту інформації. Значення параметра LH однозначно визначається ідентифікатором ІН конкретної функції гешування, яка використовується сумісно з цим стандартом. Параметр іН належить до загальних параметрів цифрового підпису. Таких параметрів у групі користувачів може бути декілька. При цьому LH>160 , Z_(/H)<64. Значення ІН=1, L(iH} = 8 відповідають функції гешування, встановленій в ГОСТ 34.311. Дозволено використовувати геш-функцію за про- мовчанням. При цьому ІН можна випускати.
Якщо використовувана функція гешування накладає обмеження на довжину LT повідомлення, то ці обмеження мають силу і для цього стандарту.
-
Обчислення випадкового цілого числа
У цьому підрозділі встановлено алгоритм обчислення випадкового цілого числа а, такого що Ца}<Цп}. Як генератор випадкових послідовностей треба використовувати генератор випадкових послідовностей, визначений у 6.1.
Вхідні дані алгоритму: порядок базової точки еліптичної кривої п, довжина t випадкової послідовності, що її видає генератор випадкових послідовностей за одне звернення до нього.
Результат виконання алгоритму — випадкове ціле число a. L(<z)<L(n).
Алгоритм обчислення випадкового цілого числа:
-
Обчислюють довжину Цп} двійкового зображення цілого числа л.
-
Обчислюють мінімальне значення к, для якого kt > Цп}- 1.
-
За к звернень до генератора випадкових послідовностей формують випадковий двійковий рядок довжини kt. Перші L(n)-1 елементи цієї послідовності формують випадковий ДВІЙКОВИЙ рядок Рцп)-2 довжини Цп)- 1.
-
Приймають «у = R, для /=0,..., L(n)-2.
-
Знаходять індекс /як найбільше /, для якого д,- = 1; якщо такого індексу нема, то приймають «<—0 та припиняють виконання алгоритму.
-
Випадковий рядок Яцп}-2>---> знищують.
Двійковий рядок зображує випадкове ціле число а, яке є результат виконання алго
ритму.
-
Обчислення випадкового елемента основного поля
У цьому підрозділі встановлено алгоритм обчислення випадкового елемента х основного поля GF(2m). Як генератор випадкових послідовностей треба використовувати генератор випадкових послідовностей, визначений у 6.1.
Вхідні дані алгоритму: степінь т основного поля, довжина t випадкової послідовності, що видається генератором випадкових послідовностей за одне звернення до нього.
Результат виконання алгоритму — випадковий елемент х основного поля.
Алгоритм обчислення випадкового елемента основного поля:
-
За k звернень до генератора випадкових послідовностей формують випадковий двійковий рядок довжини kt > m, де k — мінімальне число з такою властивістю.
-
Перші т елементів цього рядка формують випадковий двійковий рядок (Rm_i, .., Ro)-
-
Приймають Х/=/?/Для / = 0,..., т-1.
-
Випадковий двійковий рядок (Rm_^,..., Ro) знищують.
-
Двійковий рядок (х^,..., х0) зображує випадковий елемент х основного поля.
-
Обчислення сліду елемента основного поля
У цьому підрозділі встановлено алгоритм обчислення сліду елемента х основного поля.
Вхідні дані алгоритму: елемент х основного поля GF(2m).
Результат виконання алгоритму — слід tr(x) елемента х.
Алгоритм обчислення сліду:
-
Приймають t = х.
-
Для і від 1 до т - 1 обчислюють t 12 + х.
-
Результат обчислення сліду tr(x) = t.
-
Обчислення напівсліду елемента основного поля
У цьому підрозділі встановлено алгоритм обчислення напівсліду елемента х основного поля.
Вхідні дані алгоритму: елемент х основного поля GF(2m) непарного степеня т.
Результат виконання алгоритму — напівслід htr(x) елемента х.
Алгоритм обчислення напівсліду:
-
Приймають t = х.
п ■ и m-1 с* *4
-
Для t від 1 до —обчислюють t <- Г + х.
-
Результат обчислення напівсліду: htr(x) = t.
-
Розв’язання квадратного рівняння в основному полі
У цьому підрозділі встановлено алгоритм розв’язування квадратного рівняння z2+ uz = w в основному полі.
Вхідні дані алгоритму: квадратне рівняння z2+ uz = w; и, we GF(2m); m — непарне число.
Результат виконання алгоритму — кількість розв’язків k квадратного рівняння й один з розв’язків цього рівняння, якщо к> 0.
Алгоритм розв’язування квадратного рівняння:
-
Якщо и = 0, то приймають z= w2= , k = 1 і переходять до кроку 8.
-
Якщо w = 0, то приймають z = 0, k = 2, і переходять до кроку 8.
-
Обчислюють елемент основного поля v=wu~2.
-
Обчислюють слід елемента tr(y) згідно з 6.5.
-
Якщо ґг(у)=1, то приймають /с = 0, z = 0, і переходять до кроку 8.
-
Обчислюють напівслід елемента v, згідно з 6.6.
-
Обчислюють елемент основного поля z = tu, приймають к =2.
-
Результат виконання алгоритму: кількість розв’язків квадратного рівняння к та один з розв’язків z, якщо к> 0.
-
Обчислення випадкової точки еліптичної кривої
У цьому підрозділі встановлено алгоритм обчислення випадкової точки еліптичної кривої.
Вхідні дані алгоритму: еліптична крива у2+ ху = х3+ Ах2+ В над полем GF(2m), т — непарне число, А є {0,1}, В* 0.
Результат виконання алгоритму — випадкова точка цієї еліптичної кривої Р = (хр,ур).
Алгоритм обчислення випадкової точки еліптичної кривої:
-
Обчислюють випадковий елемент и основного поля згідно з 6.4.
-
Обчислюють елемент ОСНОВНОГО ПОЛЯ IV = и3+ Аи2+ В.
-
Розв’язують квадратне рівняння z2+ uz= w згідно з 6.7.
-
Якщо кількість розв'язків квадратного рівняння дорівнює 0, то переходять до кроку 1, інакше переходять до кроку 5.
-
Приймають хР= и, yP=z, z — розв'язок квадратного рівняння, отриманий на кроці 3.
-
Результат виконання алгоритму — випадкова точка еліптичної кривої Р з координатами (*Р.Ур)-
-
Стискання точки еліптичної кривої
У цьому підрозділі встановлено алгоритм перетворення точки Р непарного простого порядку еліптичної кривої над GF(2m) з координатами (хР, уР) у стиснене зображення Рє GF(2m), т — непарне число.
Вхідні дані алгоритму: точка еліптичної кривої Р непарного простого порядку п з координатами (хр, ур).
Результат виконання алгоритму — стиснене зображення PeGF(2m) точки Р еліптичної кривої.
Алгоритм стискання точки еліптичної кривої:
-
Якщо хр = 0, то приймають Р=0 та переходять до кроку 3.
-
Якщо Хр^О, ТО обчислюють елемент ОСНОВНОГО ПОЛЯ У = УрХр1 =(Ут-1>" > Уо), обчислюють слід елемента у, /=Гг(у) та приймають Р = (Рт_11 ... , Ро) = (^р.т-і тобто крайній
правий двійковий розряд координати хР замінюють на значення сліду елемента у.
-
Результат виконання алгоритму: Рє GF(2m) — стиснене зображення точки Р еліптичної кривої.
-
Відновлення точки еліптичної кривої
У цьому підрозділі встановлено алгоритм відновлення точки еліптичної кривої Р з її стисненого зображення Р, отриманого згідно з 6.9.
Побачили розбіжність з офіційним текстом?
Дивіться також
Сборник ГОСТ ЕСКД
Збірник із 154 стандартів