Опубликован: 19.01.2010 | Уровень: специалист | Доступ: свободно
Лекция 13:

Квадратичное сравнение

< Лекция 12 || Лекция 13: 1234 || Лекция 14 >

Пример 13.13

Для какого значения n группа G = \<{Z_{n^*}}, \times \> имеет примитивные корни: 17, 20, 38 и 50?

Решение

a. G = \<{Z_{17^*}}, \times \> имеет примитивные корни, потому что 17 — простое число ( pt, где t равно 1 ).

b. G = \<{Z_{20^*}}, \times \> не имеет никаких примитивных корней.

c. G = \<{Z_{38^*}}, \times \> имеет первообразные корни, потому что 38 = 2 \times 19 и 19 — простое число.

d. G = \<{Z_{50^*}}, \times \> имеет первообразные корни, потому что 50 = 2 \times {5^2}, а 5 — простое число.

Если группа имеет примитивный корень, то обычно она имеет несколько таких корней. Число примитивных корней может быть вычислено как — \varphi (\varphi (n)). Например, число примитивных корней G = \<{Z_{17^*}}, \times \> — это — \varphi (\varphi (n)) = \varphi (16) = 8. Обращаем внимание, что нужно сначала проверить, имеет ли группа какой-либо примитивный корень, прежде чем находить число корней.

Если группа G = < Z n* , x > имеет хотя бы один примитивный корень, то число примитивных корней — \phi ( \phi (n))

Рассмотрим три вопроса:

1. Если дан элемент a и группа G = \<{Z_{n^*}}, \times \>, как можно определить, является ли a примитивным корнем G? Это не такая легкая задача.

а. Мы должны найти \varphi (n), — эта задача по сложности подобна задаче разложения на множители числа n.

б. Мы должны найти ord(a) = \varphi (n).

2. Если дана группа G = \<{Z_{n^*}}, \times \>, как найти все примитивные корни \varphi ? Эта задача более трудная, чем первая задача, потому что мы должны повторить вычисления по п.1.б для всей группы.

3. Если дана группа G = \<{Z_{n^*}}, \times \>, то как выбирать примитивный корень G? В криптографии мы должны найти, по крайней мере, один примитивный корень в группе. Однако в этом случае значение n выбирается пользователем, и пользователь знает \varphi (n). Пользователь пробует последовательно несколько элементов, пока не находит первый из них.

Циклическая группа. Циклические группы уже обсуждались в лекциях 5-6. Обратите внимание на то, что, если группа G = \<{Z_{n^*}}, \times \> имеет примитивные корни, то они циклически повторяются. Каждый примитивный корень — генератор и может использоваться для создания целого набора. Другими словами, если g — примитивный корень в группе, мы можем генерировать набор Zn* как

{Z_n}^* = \{ {g^1},{g^2},{g^3}, \ldots ,{g^{\varphi (n)}}\}

Пример 13.14

Группа G = \<{Z_{10^*}}, \times \> имеет два примитивных корня, потому что \varphi (10) = 4 и \varphi (\varphi (10)) = 2. Можно найти примитивные корни - это 3 и 7. Ниже показано, как можно создать целый набор Z10*, использующий каждый примитивный корень.

g = 3 -> g1 mod 10 = 3   g2 mod 10 = 9   g3 mod 10 = 7   g4 mod 10 = 1
g = 7 -> g1 mod 10 = 7   g2 mod 10 = 9   g3 mod 10 = 3   g4 mod 10 = 1

Обратите внимание, что группа G = \<{Z_{p^*}}, \times \> всегда циклическая, потому что p — простое.

Группа G = < Zn*, x > является циклической группой, если она имеет примитивные корни.
Группа G = < Zp*, x > всегда является циклической.

Идея дискретного логарифма. Группа G = \<{Z_p}^*, \times \> имеет несколько интересных свойств.

  1. Её элементы включают все целые числа от 1 до p – 1.
  2. Она всегда имеет примитивные корни.
  3. Она всегда является циклической. Элементы могут быть созданы с использованием gx, где x — целое число от 1 до \varphi (n) = p - 1.
  4. Примитивные корни можно представлять себе как основание логарифма. Если группа имеет k примитивных корней, то вычисления могут быть сделаны для k различных оснований. Данный x = logg y для любого элемента y в данном множестве, но есть другой элемент x, который является логарифмом y по основанию g. Этот тип логарифма называют дискретным логарифмом. Дискретный логарифм в литературе определяется несколькими различными символами, но мы будем использовать обозначение Lg, чтобы показать, что основание — g (сравнение по модулю).
Решение модульного логарифма с использованием дискретных логарифмов

Теперь рассмотрим, как решаются задачи типа y = ax (mod n), т. е. дано y, а мы должны найти x.

Табулирование дискретных логарифмов. Один из способов решения вышеупомянутой проблемы — использовать таблицу для каждого Zp* и различных оснований. Этот тип таблицы может быть предварительно рассчитан и сохранен. Например, таблица 13.4 показывает значения дискретного логарифма для Z7*. Мы знаем, что мы имеем два примитивных корня или основания в данном множестве.

Таблица 13.4. Дискретный логарифм для G = <Zp*,х>
y 1 2 3 4 5 6
x = L3y 6 2 1 4 5 3
x = L5y 6 4 5 2 1 3

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

Пример 13.15

Найдите x в каждом из следующих случаев:

a. 4 \equiv {3^x}\left( {\bmod {\text{ }}7} \right)

b. 6 \equiv {5^x}\left( {\bmod {\text{ }}7} \right)

Решение

Мы можем легко использовать таблицу 13.4 дискретного логарифма.

a. 4 \equiv {3^x}\left( {\bmod {\text{ }}7} \right) \to {L_3}4\left( {\bmod {\text{ }}7} \right) = 4{\text{ }}\bmod {\text{ }}7

b. 6 \equiv {5^x}\left( {\bmod {\text{ }}7} \right) \to {L_5}6\left( {\bmod {\text{ }}7} \right) = 3{\text{ }}\bmod {\text{ }}7

Использование свойств дискретных логарифмов. Чтобы показать, что дискретные логарифмы ведут себя точно так же, как традиционные логарифмы, в таблице 13.5 приводится несколько свойств обоих типов логарифмов. Обратите внимание, что основание модуля — \varphi (n) вместо n.

Таблица 13.5. Сравнение традиционных и дискретных логарифмов
Традиционные логарифмы Дискретные логарифмы
loga 1 = 0 Lg \equiv 0(mod \phi (n))
loga (x x y) = logax + logay Lg(x x y) \equiv Lgx + Lgy
logaxk = k x logax Lgx \equiv k x Lgx(mod \phi (n))

Использование алгоритмов, основанных на дискретных логарифмах. Таблицы и свойства дискретных логарифмов не могут быть использованы для решения уравнения y = a x (mod n), когда n является очень большим. Для решения этой проблемы были разработаны несколько алгоритмов, в которых используется основная идея дискретных логарифмов. Хотя все эти алгоритмы более эффективны, чем алгоритмы полного перебора, которые мы упоминали в начале этого раздела, но ни один из них не имеет полиномиальную сложность. Большинство этих алгоритмов имеет такой же уровень сложности, как проблема разложения на множители.

Проблема дискретного логарифма имеет такую же сложность, как проблема разложения на множители.
< Лекция 12 || Лекция 13: 1234 || Лекция 14 >
Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Дмитрий Жерлицын
Дмитрий Жерлицын
Украина, г. Донецк, Донецкий национальный университет, 2012