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

Лекция 13. Алгоритм вычисления квадратного корня в простом поле.

13.1. Зависимость алгоритма от свойств модуля.

Данный алгоритм предназначен для решения относительно сравнения вида по простому модулю .

Перед тем как приступить к вычислениям, необходимо убедиться в разрешимости сравнения, т.е. в том, что .

Далее. Алгоритм разбивается на 3 случая, в зависимости от представления в виде , , (можно убедиться, что любое нечетное простое число представляется одним из указанных способов).

В алгоритме существенно используется критерий Эйлера, который для разрешимого сравнения дает: .

Случай . Имеем . Умножим на левую и правую часть сравнения, получим: . Поскольку показатель справа четный, то можно непосредственно извлечь квадратный корень из правой части, следовательно, одно из решений . Поскольку решений не может быть более двух, то окончательный ответ: .

Случай . Поскольку , то .

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

Если верно , то, очевидно, .

Иначе, .

Воспользуемся тем, что если обе части последнего сравнения умножить на число в известной четной степени, то квадратный корень из его левой части легко записать явно. Мы подберем указанный множитель так, чтобы, кроме того, изменился знак у правой части сравнения.

Таким множителем может быть число , поскольку . Следовательно,

Последний случай, , наиболее сложный. Прежде всего, для работы алгоритма необходимо наличие (любого) квадратичного невычета по модулю .

Чтобы его найти, приходится выбирать наугад число, скажем, и проверять соотношение . Предположим, что некоторый квадратичный невычет нам известен.

Уточним представление числа : , где - нечетно и, очевидно, .

Основная идея алгоритма – построить соотношение вида .

В случае успеха, достаточно умножить обе части сравнения на и извлечь корень из обеих частей (учитывая, что число четно).

Исходя из сравнения , мы будем строить соотношения, в которых показатель при будет снижаться вдвое, пока не станет равным .

Деление показателей на двойки это - последовательное извлечение квадратных корней, в нашем случае – квадратных корней из единицы. Будем снижать показатели так, чтобы правая часть некоторого сравнения все время была равна единице.

На каждом шаге может получиться лишь один из корней: 1 или . При этом у нас будет достаточно данных, чтобы выяснить, какой случай реально имеет место. Изменять знак у мы будем с помощью умножения частей сравнения на степени числа , причем так, чтобы показатель степени в произведении таких дополнительных множителей всегда оставался четным.

Перейдем к алгоритму.

Очевидно, . Более того, т.к. квадратичный вычет, то и мы можем снизить показатель в два раза: .

Если мы второй раз разделим показатель на два, то нам известно лишь, что в правой части получится . Однако все необходимые числа даны и мы можем выбрать истинный вариант, проверяя варианты сравнения непосредственно.

Если в правой части получается 1, то двигаемся дальше. Заметим, что в правой части может получиться не ранее чем на втором шаге, т.е. при показателе и ниже. Предположим, что в правой части при указанном показателе получилась : .

Поскольку - квадратичный невычет, то и, кроме того, показатель при больше показателя при . (Последнее означает, что когда показатель при станет равным , показатель при все еще будет четным).

Умножим обе части сравнения на , получим .

Из левой части сравнения легко выражается квадратный корень, т.е. .

Как и ранее, легко уточнить, какой из вариантов имеет место на самом деле и, при необходимости, умножить сравнение на и т.д., пока показатель при не окажется равным . После последнего шага, показатель при будет известным и четным, как сумма четных чисел.

В итоге, получим сравнение вида , откуда, умножив обе части на , получим: .

13.2. Методика применения алгоритма.

Пример. Решить сравнение .

Выясним, прежде всего, является ли сравнение разрешимым. Это действительно так, поскольку .

Далее выясним, какой из трех случаев представления имеет место. Очевидно, имеет место случай . Записав, получим , .

Найдем квадратичный невычет по модулю . Можно выбрать , поскольку . Приступим к извлечению корня, учитывая, что .

По теореме Эйлера, имеем . Можно извлечь квадратный корень, разделив показатель на два. При этом значение корня равно 1, т.к. - квадратичный вычет и, следовательно, . Показатель можно разделить на два снова, но необходимо выяснить какому числу (1 или –1) равно значение квадратного корня. Итак, . Поскольку , то .

Нам необходимо добиться значения 1 в правой части сравнения. Умножим обе части на , получим . Как и следовало ожидать, показатель при тройке четный.

Нам остался один шаг, чтобы снизить показатель при восьмерке до . Делим показатели на два и вычисляем значение левой части: , , т.е. .

Нам вновь необходимо умножить обе части сравнения на , что дает .

Показатель при восьмерке равен . Переходим к выписке результата. Умножив обе части сравнения на 8, получим , что позволяет записать квадратный корень из 8 в виде . Проверка: .

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

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

.

Соседние файлы в папке Лекции по криптологии