Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Математические основы криптологии.-2

.pdf
Скачиваний:
11
Добавлен:
05.02.2023
Размер:
8.1 Mб
Скачать

371

Ц32-Р(Ц32-З(T))=T,

где T – произвольный 64-битный блок данных,

ЦX(T) – результат выполнения цикла X над блоком данных T.

Для выполнения этого условия для алгоритмов, подобных ГОСТу, необходимо и достаточно, чтобы порядок использования ключевых элементов соответствующими циклами был взаимно обратным. Из двух взаимно обратных циклов любой может быть использован для зашифрования, тогда второй должен быть использован для расшифрования данных,

однако стандарт ГОСТ28147-89 закрепляет роли за циклами и не предоставляет пользователю права выбора в этом вопросе.

Схемы базовых циклов приведены на рисунках 1.8а, 1.8б. Каждый из них принимает в качестве аргумента и возвращает в качестве результата 64-битный блок данных,

обозначенный на схемах N.

Начало (N)

k = 1 .. 3

j = 0 .. 7

N = Шаг (N,Kj)

j = 7 .. 0

N = Шаг (N,Kj)

N1 N2

Начало (N)

j = 0 .. 7

N = Шаг (N,Kj)

k = 1 .. 3

j = 7 .. 0

N = Шаг (N,Kj)

N1 N2

Конец (N)

Конец (N)

а)

б)

Рис. 3.9. Схемы цикла зашифрования 32-З (а) и расшифрования 32-Р (б)

Символ Шаг(N,X) обозначает выполнение основного шага криптопреобразования для блока N с использованием ключевого элемента X.

В конце базовых циклов шифрования старшая и младшая часть блока результата меняются местами, это необходимо для их взаимной обратимости.

Как уже упоминалось выше, нас интересует шифрование в режиме простой замены.

Зашифрование в режиме простой замены заключается в применении цикла 32-З к блокам открытых данных, расшифрование – цикла 32-Р к блокам зашифрованных данных. Это наиболее простой из режимов, 64-битовые блоки данных обрабатываются в нем независимо

372

друг от друга. Схемы алгоритмов зашифрования и расшифрования в режиме простой замены приведены на рисунках 3.10а и 3.10б соответственно.

 

Начало (То)

 

 

Начало (Тш)

i = 1 .. n

 

i = 1 .. n

 

 

 

 

 

 

 

 

Т iш = Ц32-З(Тiо )

 

 

Тiо = Ц32-Р(Тiш )

 

 

 

 

 

 

 

 

Конец (Тш)

 

 

Конец (То)

 

а)

 

 

б)

Рис. 3.10. Алгоритмы зашифрования (а) и расшифрования (б)

данных в режиме простой замены На рисунке 3.10 используются следующие обозначения:

Tо, Tш – массивы соответственно открытых и зашифрованных данных;

Ti о , Ti ш i-тые по порядку 64-битные блоки соответственно открытых и

зашифрованных данных: Tо = (Tnо , …, T2о , T1о ), Tш = (Tnш , …, T2ш , T1ш ), 1i n;

n – число 64-битных блоков в массиве данных.

Размер массива открытых или зашифрованных данных, подвергающийся соответственно зашифрованию или расшифрованию, должен быть кратен 64 битам: |Tо|=|Tш|=64∙n, после выполнения операции размер полученного массива данных не изменяется.

Перемешивающее преобразование

Перемешивающее преобразование имеет вид hi = (mi, hi–1, si) = 61 (hi–1 (mi 12 (si))),

где j j-я степень преобразования .

Схематически данное преобразование представлено на рисунке 1.10.

mi

si 12

hi–1

61

hi

Рис. 3.11. Перемешивающее преобразование ГОСТ Р 34.11-94

373

Заметим, что si выводится из hi−1 (см. рисунок 1.4).

Функция : {01}256 → {01}256 преобразует слово 16 || 15 || … || 1 {01}16, i =1…16 в

слово 1 2 3 4 13 16 || 16 || 15 || … || 2 (рисунок 1.11).

16

15

4

3

2

1

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

 

Рис. 3.12. Функция ψ перемешивающего преобразования

Функция сжатия финальной итерации

Функция сжатия финальной итерации производит итоговую хэш величину, зависящую от

результата хэширования последовательным методом, контрольной суммы по mod 2 и длины сообщения в битах приведенной по mod 2256:

ml/ hl−1 l Ll hитог,

где ml/ , hl−1, l, Ll {01}256, ml/ – последний набитый нулями блок (если необходимо, см.

рисунок 1.2).

Сначала вычисляется битовая длина последнего (ненабитого) блока сообщения |ml|≤256

бит. Если |ml|<256, то производится его набивка справа нулями до достижения длины 256 бит и получается новый блок ml/ ← {0}256–|ml| || ml. Вычисляются итоговая контрольная сумма l

l–1 ml/ и длина всего сообщения Ll Ll–1 + |ml| (mod 2256). Параллельно выполняется последняя итерация hl = H* (m/, hl–1). Затем вычисляются значения hl+1 H* (l, hl) и hитог H* (Ll, hl+1), давая в результате итоговую хэш величину hитог.

Теперь дадим формальное описание алгоритма:

Вход: двоичное сообщение M, блоки замен для шифрования в режиме простой замены по ГОСТ 28147-89, начальный вектор IV {01}256.

Выход: хэш величина hитог для сообщения M.

1.Инициализация алгоритма: h IV, ← {0}256, L ← {0}256.

374

2.Функция сжатия внутренних итераций: Пока |M| > 256 выполняем следующее:

2.1.h H* (ms, h) (итерация метода последовательного хэширования);

2.2.L L + 256 (mod 2256) (итерация вычисления длины сообщения);

2.3.ms (итерация вычисления контрольной суммы).

3.Иначе (функция сжатия финальной итерации)

3.1.L L + |m| (mod 2256) (вычисление полной длины сообщения);

3.2.m/ ← {0}256–|m| || m (набивка последнего блока);

3.3.m/ (вычисление контрольной суммы сообщения);

3.4.h H* (m/, h);

3.5.h H* ( , h);

3.6.hитог H* (L, h).

4.Выход (hитог).

Российский стандарт ЭЦП ГОСТ Р 34.10-2001

Новый отечественный стандарт цифровой подписи обозначается как ГОСТ Р 34.10-2001.

Внем используются следующие параметры:

простое число p – модуль эллиптической кривой, удовлетворяющее неравенству p>2255. Верхняя граница данного числа должна определяться при конкретной реализации схемы цифровой подписи;

эллиптическая кривая E, задаваемая своим инвариантом J(E) или

коэффициентами a, b Fp;

целое число m – порядок группы точек эллиптической кривой E;

простое число q – порядок циклической подгруппы группы точек эллиптической кривой E, для которого выполнены следующие условия:

m nq, n Z, n 1,

(38)

2254

q 2256;

 

 

 

точка P O эллиптической кривой E, с координатами (xp, yp),

удовлетворяющая равенству qP = O.

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

бит. Хэш-функция определена в ГОСТ Р 34.11, ее алгоритм будет рассмотрен ниже.

Каждый пользователь схемы цифровой подписи должен обладать личными ключами:

375

ключом подписи – целым числом d, удовлетворяющим неравенству 0 <

d < q;

ключом проверки – точкой эллиптической кривой Q с координатами (xq,

yq), удовлетворяющей равенству dP = Q.

На приведенные выше параметры схемы цифровой подписи накладываются следующие требования:

должно быть выполнено условие pt 1 (mod q), для всех целых t = 1, 2,

B, где B удовлетворяет неравенству B 31;

должно быть выполнено неравенство m p;

инвариант кривой должен удовлетворять условию J(E) 0 или 1728.

Для получения цифровой подписи под сообщением M необходимо выполнить

следующие действия (рис. 1.12а):

1.вычислить хэш-значение сообщения M: h = h(M);

2.вычислить целое число , двоичным представлением которого является

вектор h , и определить e (mod q). Если e = 0, то определить e = 1;

3.сгенерировать случайное (псевдослучайное) целое число k, удовлетво-

ряющее неравенству 0 < k < q;

4.вычислить точку эллиптической кривой C = kP и определить r xc (mod

q), где xc - x-координата точки C. Если r = 0, то вернуться к шагу 3;

5.вычислить значение s (rd + ke) (mod q). Если s = 0, то вернуться к шагу

3;

Подпись для сообщения М составит пара чисел (r,s).

Для проверки цифровой подписи под полученным сообщением M необходимо выполнить следующие действия (рис. 1.12б):

1.Если выполнены неравенства 0 < r < q, 0 < s < q, то перейти к следующему шагу. В противном случае подпись неверна;

2.вычислить хэш-значение полученного сообщения М: h = h(M);

3.вычислить целое число , двоичным представлением которого является

вектор h и определить e (mod q). Если e = 0, то определить e = 1;

4.вычислить значение v = e–1 (mod q);

5.вычислить значения z1 sv (mod q), z2 rv (mod q);

6.вычислить точку эллиптической кривой C = z1P + z2Q и определить R

xc (mod q), где xc x-координата точки C;

376

7. если выполнено равенство R = r, то подпись принимается, в противном

случае, подпись неверна.

Начало

Начало Исходные данные

Исходные (M, Q, ) данные (M, d)

h = H(M)

e h mod q

нет

e = 0

да

e = 1

Генерация

случайного числа k

C = kP

r xc mod q

да

r = 0

нет

s (rd + ke) mod q

да

s = 0

нет

Конец

= (r || s)

а)

 

0 < r < q,

 

нет

 

0 < s < q

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h = H(M)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e h mod q

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

e = 0

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v e–1 mod q

z1 sv mod q, z2 rv mod q

C = z1P + z2Q

 

R xc mod q

 

R = r

нет

 

да

 

Конец

Конец

(ЭЦП верна)

(ЭЦП не верна)

б)

Рис. 3.13. Процесс формирования цифровой подписи (а), процесс проверки

цифровой подписи (б).

377

Интерфейс учебного программного комплекса DigitSign

На рисунке 3.14 приведен интерфейс главного окна учебного программного комплекса.

Рис. 3.14. Интерфейс главного окна учебного программного комплекса Пункт меню ―Вычисления‖ содержит следующие опции:

Вычисление хэш-функции.

При выборе данной опции открывается окно ―Вычисление хэш-функции‖

(рисунок 3.15), которое позволяет определить хэш-значение произвольного файла при заданных пользователем начальном хэш-векторе и таблице замен. Полученный результат может быть сохранен в файл. Также пользователь получает информацию о времени хэширования сообщения.

Рис. 3.15. Окно ―Вычисление хэш-функции‖

378

Генератор псевдослучайных чисел.

При выборе данной опции открывается окно ―Генератор псевдослучайных чисел‖ (рисунок 3.16).

Рис. 3.16. Окно ―Генератор псевдослучайных чисел‖ Пользователь имеет возможность ввести параметры своего генератора,

произвести вычисления и сохранить полученный результат в файл.

Вычисление открытого ключа.

При выборе данной опции открывается окно ―Вычисление открытого ключа‖

(рисунок 3.17).

Рис. 3.17. Окно ―Вычисление открытого ключа‖

379

Пользователь имеет возможность вычислить открытый ключ для имеющегося у него секретного ключа и параметров схемы ЭЦП.

Формирование ЭЦП.

При выборе данной опции открывается окно ―Формирование ЭЦП‖ (рисунок

3.18).

Рис. 3.18. Окно ―Формирование ЭЦП‖ Пользователь имеет возможность, после ввода всех необходимых для расчетов

параметров, вычислить цифровую подпись и сохранить полученный результат в файл.

Проверка ЭЦП.

При выборе данной опции открывается окно ―Проверка ЭЦП‖ (рисунок 3.19).

380

Рис. 3.19. Окно ―Проверка ЭЦП‖

Пользователь имеет возможность, после ввода всех необходимых для расчетов параметров, проверить подлинность цифровой подписи.

Пункт меню ―Справка‖ содержит следующие опции:

Задание на лабораторную работу.

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

Справка.

Данная опция позволяет открыть файл справки, содержащий информацию о хэш-функции и цифровых подписях.

О программе.

Пункт меню ―Выход‖ позволяет выйти из программы.