
- •§ 1 Понятия теории чисел
- •Алгоритм Евклида нахождения наибольшего общего делителя
- •Сравнения и их свойства
- •Функция Эйлера1
- •§ 2 Генераторы псевдослучайных чисел. Линейный конгруэнтный генератор
- •§ 5 Алгоритм последовательного возведения в квадрат
- •Алгоритм последовательного возведения в квадрат
- •§ 8 Дискретный логарифм
- •Переборный алгоритм нахождения дискретного логарифма
- •Алгоритм больших - малых шагов (Шенкса)
- •Алгоритм Нечаева – Поллига - Хеллмана
- •§ 10 Группы
- •Множество Zn
- •Свойства образующих (примитивных) элементов мультипликативной группы Zn*
- •Подгруппы
- •§ 11 Кольца. Поля Кольца
- •Конечные поля – поля Галуа2
- •§ 12 Эллиптические кривые в криптографии
- •Алгоритм вычисления точек эллиптической кривой
- •Алгоритм вычисления порядка группы точек эллиптической кривой
- •Литература
§ 5 Алгоритм последовательного возведения в квадрат
(http://granitnayki.com/?cat=6)
Пусть необходимо вычислить
y = ax mod n,
где a – неотрицательное целое число, меньшее n ( a< n ), x 0.
Для вычисления y = ax mod n применяем
Алгоритм последовательного возведения в квадрат
Если
, то
закончить работу алгоритма.
,
, где
- длина x в битах.
Для i от k до 0 выполнить шаги 4 и 5.
.
Если i-й бит x=1, то
.
Закончить работу алгоритма.
Этот алгоритм называется также SX-алгоритмом (http://granitnayki.com/?cat=6). Смысл такого названия состоит в следующем: считаем, что S(squaring) соответствует операции возведения в квадрат, а X – операции умножения на основание. К примеру, возведем основание a в степень 23 по модулю p. Запишем 23 в двоичной системе счисления как 10111. Далее, пропуская самый левый бит, который всегда равен 1 запишем под каждой цифрой 1 SX, а под каждой цифрой 0 – X.
1 |
0 |
1 |
1 |
1 |
|
S |
SX |
SX |
SX |
Двигаясь слева направо, получим определяющую строку SSXSXSX. Помня, что S – это возведение в квадрат, а X – умножение на основание, получаем следующую последовательность операций:
(((((((((((a2mod n)2)mod n)*a) mod n)2 mod n)*a) mod n)2 modn)*a) mod n)=a23 mod n,
что соответствует действительности.
Пример. Вычислить 218 mod 13, параметры: a = 2, k = 18, n =13.
x = 24 +21 ( 1, 0, 0, 1, 0 )
1. y:=2
2. k:=3
3(4-5). i = 3 x3 = 0 y:=22 mod 13 = 4
i = 2 x2 = 0 y:=42 mod 13 = 3
i = 1 x1=1 y:=32 mod 13 = 9 y:=y*2 mod 13=5 y=5
i = 0 x0=0 y:=52 mod 13 = 12
6. y = 12
Таким образом, 218 mod 13 = 12.
Контрольные вопросы
Опишите алгоритм последовательного возведения в квадрат.
В каких криптографических алгоритмах необходимо вычислять степени числа по модулю?
§ 8 Дискретный логарифм
Задача дискретного логарифмирования: при заданных значениях параметров a, b и p, p – простое число, 1 < a, b < p, найти x , удовлетворяющий сравнению
b = a x mod p .
Определение. Дискретным логарифмом l числа b при основании a по модулю p называется степень, в которую нужно возвести число a, чтобы получить число b :
b = a l mod p .
Другое название дискретного логарифма l – индекс числа b при основании a по модулю p .
Принятые обозначения : log a b и ind a b .
Определение. Наименьшая степень, в которую нужно возвести число a по модулю p , чтобы получить 1 , называется порядком числа a . Обозначение - ord a .
Утверждение. Пусть p – простое число. Максимальный порядок числа по модулю p равен p – 1.
Утверждение. Пусть p – простое число, параметры a, b удовлетворяют неравенствам 1<a, b<p. Тогда сравнение b = a x mod p имеет единственное решение относительно x, если порядок числа a равен p – 1.