- •§ 1 Понятия теории чисел
- •Алгоритм Евклида нахождения наибольшего общего делителя
- •Сравнения и их свойства
- •Функция Эйлера1
- •§ 2 Генераторы псевдослучайных чисел. Линейный конгруэнтный генератор
- •§ 5 Алгоритм последовательного возведения в квадрат
- •Алгоритм последовательного возведения в квадрат
- •§ 8 Дискретный логарифм
- •Алгоритм больших - малых шагов (Шенкса)
- •Алгоритм Нечаева – Поллига - Хеллмана
- •§ 10 Группы
- •Переборный алгоритм нахождения дискретного логарифма
- •Множество Zn
- •Свойства образующих (примитивных) элементов мультипликативной группы Zn*
- •Подгруппы
- •§ 11 Кольца. Поля Кольца
- •Конечные поля – поля Галуа2
- •§ 12 Эллиптические кривые в криптографии
- •Алгоритм вычисления точек эллиптической кривой
- •Алгоритм вычисления порядка группы точек эллиптической кривой
- •Литература
Переборный алгоритм нахождения дискретного логарифма
Вычисляем значения a k mod p для k = 1, 2, 3, … до выполнения равенства b = a k mod p .
Значение k, при котором выполняется сравнение b = a k mod p, является дискретным логарифмом.
x := k.
Алгоритм больших - малых шагов (Шенкса)
Пусть n - порядок числа a .
Вычисляем m := n, где n - округление с избытком.
Строим таблицу пар ( j , a j ) для j = 0, 1, 2 , m-1.
Вычисляем t := a – m , решая сравнение a m t = 1 mod p .
:= b .
Цикл по i от 0 до m – 1
проверяем, является ли второй компонентой в таблице п.2
если = a j , то полагаем x = m i + j
:= t.
Алгоритм Нечаева – Поллига - Хеллмана
Пусть n - порядок числа a .
1. Число n представляем в виде n = q r, q – простое число.
2. Вычисляем значения a1 := a r mod p , b1 := b r mod p .
3. С помощью алгоритма больших - малых шагов находим y , решая сравнение
b1 := a1 y mod p , ord a1 = q .
4. Вычисляем t := a – y , решая сравнение a y t = 1 mod p .
5. Вычисляем значения a2 := a q mod p , b2 := b t mod p .
6. С помощью алгоритма больших - малых шагов находим z , решая сравнение
b2 := a2 z mod p , ord a2 = r .
7. x = z q + y
Контрольные вопросы
Дайте определение дискретного логарифма.
Дайте определение порядка числа.
Сформулируйте условия существования дискретного логарифма.
Опишите переборный алгоритм дискретного логарифмирования.
Опишите алгоритм больших - малых шагов.
Опишите алгоритм Нечаева – Поллига - Хеллмана.
В каких криптографических алгоритмах необходимо решать задачу дискретного логарифмирования?
§ 10 Группы
Определение. Группа (G, ) состоит из множества G, на котором определена бинарная операция , удовлетворяющая трем аксиомам:
Операция в группе ассоциативна: для любых элементов a, b, и c из G выполняется равенство
a(bc) = (ab)c.
В множестве G существует такой единичный элемент e, что
ea = ae = a.
Для каждого элемента a G существует обратный элемент a–1
такой,
что
aa–1 = a–1a = e.
Определение. Группа (G, ) называется коммутативной (абелевой), если для любых элементов a, b, и c из G выполняется равенство
ab = ba.
Если в качестве бинарной операции определена операция умножения , то группа называется мультипликативной, единичный элемент e = 1, обратный элемент обозначается a–1 или 1 / a.
Если в качестве бинарной операции определена операция сложения +, то группа называется аддитивной, единичный элемент e = 0, обратный элемент обозначается – a.
Из аксиом группы можно вывести, что в группе существует только один единичный элемент. Можно доказать также и единственность обратного элемента для всякого элемента группы.
Определение. Группа (G, ) называется конечной, если число элементов множества G конечно. В этом случае число элементов множества G называется порядком группы (G, ).
Взаимно однозначные преобразования любого множества образуют группу относительно операции умножения преобразований.
Примеры групп:
Множество всех ненулевых действительных чисел относительно операции умножения – «мультипликативная группа действительных чисел» R*.
Множество всех целых чисел относительно операции сложения – «аддитивная группа целых чисел» Z.
Множество всех векторов в пространстве Rn относительно операции сложения векторов.
Множество всех многочленов с действительными коэффициентами относительно операции сложения многочленов.
Группы в примерах 1-4 имеют бесконечно много элементов.
