Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теоретико-числовые методы в криптографии и криптопротоколах. Учебное пособие.pdf
X
- •ПРЕДИСЛОВИЕ
- •1. ОСНОВНЫЕ АЛГЕБРАИЧЕСКИЕ КОНСТРУКЦИИ
- •1.1. Группы
- •1.2. Кольца
- •2. ЭЛЕМЕНТЫ ТЕОРИИ ЧИСЕЛ, КОНЕЧНЫХ ПОЛЕЙ И ЭЛЛИПТИЧЕСКИХ КРИВЫХ
- •2.1. Элементы теории сложности алгоритмов
- •2.2. Свойства кольца
- •2.3. Конечные поля
- •2.4. Группа точек эллиптической кривой
- •3.2. Примеры асимметрических криптосистем
- •3.3. Электронная подпись
- •3.4. Примеры криптопротоколов
- •4. АЛГЕБРАИЧЕСКИЕ ОПЕРАЦИИ В КОНЕЧНЫХ КОЛЬЦАХ И ПОЛЯХ
- •4.1. Вычисления в кольцах
- •4.2. Решение квадратных уравнений в кольцах
- •5.1. Вычисления в поле Галуа
- •6. АСИММЕТРИЧЕСКИЕ КРИПТОСИСТЕМЫ И КРИПТОПРОТОКОЛЫ
- •6.1. Криптосистема RSA
- •6.2. Криптосистема Эль-Гамаля
- •6.3. Криптосистема Хора – Ривеста
- •6.4. Протоколы электронной подписи
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК

Здесь и далее, если не оговорено противное, символ p означает не-
2
3 mod 7x =
2
2 mod 7x =
3x = ±
2
2 mod 11x =
2
3 mod 11x =
5x = ±
0a ≠
0 mod ap=
p
a
p
a ∈
a
p
1, ;
0, 0;
1 .
a квадратичный вычет
a
a
p
a квадратичный невычет
−
= =
−−
1
a
p
+
p
∗
четное простое число.
Примеры. Уравнение
диться прямым перебором, уравнение
. Уравнение
имеет два решения:
Очевидно, что если при
то будет и еще одно решение, отличающееся знаком. При
решений не имеет, как можно убе-
имеет два решения:
решений не имеет, уравнение
.
решение уравнения (2.24) существует,
су-
ществует одно нулевое решение.
Как показывают рассмотренные примеры, для одного значения
разных значениях параметра
решения могут существовать, а могут и не
при
существовать. Поэтому первый вопрос, который возникает: имеет ли
уравнение (2.24) решение?
Для ответа на этот вопрос вводят понятие квадратичного вычета.
Определение 14. Элемент
называется квадратичным выче-
том, если уравнение (2.24) имеет решение, и невычетом в противном
случае.
Определение 15. Символ Лежандра
определяется равенством
Используя данное определение, вычислим количество решений квад-
ратного уравнения (2.24) как
.
Утверждение 9. В мультипликативной группе
четов и половина невычетов.
ровно половина вы-
61

Доказательство. Согласно утверждению 8 группа
p
∗
θ
( )
1pϕ−
1p −
2 j
a = θ
( )
0 12jp≤< −
k
x = θ
22
mod
lj
p
θ=θ
( )
2 2 mod 1lk p= −
(
)
0 12
lp≤< −
lj=
2
j
a = θ
( )
12p −
21
ja+
= θ
( )
0 12jp≤< −
k
x = θ
2 21
mod
lj
p
+
θ=θ
( )
2 2 mod 1lk p= −
(
)
0 12lp
≤< −
lj<
( )
02 1 1jl p< − +< −
( )
21
=1 mod
jl
p
−+
θ
lj>
( )
02 1 1lj p< − −< −
( )
21
=1 mod
ljp−−
θ
21
j
a
+
= θ
( )
12p −
( )
12
mod
p
a
ap
p
−
=
циклична,
в ней есть примитивный элемент
элементов), имеющий порядок
(на самом деле
примитивных
, и элемент a, являющийся степенью
элемента θ. В зависимости от четности этой степени может возникнуть
две ситуации.
Пусть
,
, т. е. степень четная. Любой элемент x
из равенства (2.24) также является степенью примитивного элемента:
. Тогда
, где
,
(результат приведения четного числа по модулю четного числа есть чет-
ное число). Очевидно, что
– решение, т. е. когда
– четная степень примитивного элемента, то a – квадратичный вычет и таких элементов
.
Пусть теперь
Тогда
,
, т. е. степень нечетная,
, где по-прежнему
.
Пусть
тиворечит примитивности элемента θ. Аналогично при
, тогда
и
и
, что про-
имеем
, что также противоречит прими-
тивности элемента θ. Полученное противоречие означает, что предположение о существовании элемента x, удовлетворяющего равенству (2.24),
не верно. Таким образом, в случае, когда
– нечетная степень
примитивного элемента, решений квадратного уравнения нет, элемент a
является квадратичным невычетом и таких элементов
.
.
,
Утверждение 10 (Критерий Эйлера). Справедливо равенство
. (2.25)
62

Доказательство. Пусть
0a =
2 j
a = θ
p
∗
( ) ( )
( )
12 1
1
mod mod mod 1 1 1
j
p jp
pj
ap p p
−−
−
=θ=θ===
1
a
p
= −
21j
a
+
= θ
(
)
( )
( )
( ) ( )
( )
12 2 1 12 1 12 12 mod
mod mod mod
p j p jp p p p
ap p p b
− +− − − −
=θ =θθ =θ ≡
(
)
( )
2
1 mod 1 1 0 mod b pb b p= ⇔ − +=
1b = ±
1b =
1b = −
mod aa p
pp
=
1
1
p
=
( )
( )
12
1
1
pp−
−
= −
, тогда левая и правая часть фор-
мулы (2.25) равны нулю, т. е. это равенство выполняется.
Пусть теперь a – квадратичный вычет, т. е. левая часть фор-
мулы (2.25) равна 1. Из доказательства предыдущего утверждения следу-
ет, что в этом случае
, где θ – примитивный элемент группы
Посчитаем правую часть выражения (2.25):
что означает равенство обоих частей формулы (2.25).
Рассмотрим случай, когда a – квадратичный невычет,
:
Для введенного элемента b справедливо равенство
.
,
,
.
.
Так как в поле нет делителей нуля, то
чит условию примитивности элемента θ, поэтому
. Случай
противоре-
, что доказывает
формулу (2.25).
Основываясь на критерии Эйлера, можно доказать следующее утвер-
ждение.
Утверждение 11 (Свойства символов Лежандра).
1.
2.
,
;
;
63

3.
ab a b
p pp
=
2
ab a
pp
=
(
)
11
22
1
pq
pq
qp
−−
⋅
= −
( )
2
1
8
2
1
pp−
= −
( )
2
18p −
21pk= +
( )( ) ( )
2
11 1
1
88 2
p p kk
p
−+ +
−
= =
( ) ( )
52238538 2 26119269 26119269
св-во 3 св-во 6
86294753 86294753 86294753 86294753
= = = = =
( )
( )
( )
9 2902141 2902141
св-во 3 св-во 4 св-во 3
86294753 86294753 86294753
= = = = = =
(
) ( )
11 263831 86294753 263831
св-во 5 св-во 1
86294753 86294753 11 86294753
= = = = =
( )
( )
6 263831 2 3 263831
св-во 3 св-ва 6, 5
11 86294753 11 11 86294753
= = = = =
;
4.
;
5. Свойство взаимности Гаусса:
четное простое число;
6.
.
Прокомментируем последнее свойство:
ло. Действительно,
,
, где q – не-
– всегда целое чис-
,
и из двух соседних чисел одно всегда четное.
Пример 27.
64

( )
(
)
11 263831 1 263831
св-во 1 св-во 2
3 86294753 3 86294753
−
= = = = =
( )
(
)
263831 193 1367
св-во 3 св-ва 5, 5
86294753 86294753 86294753
=−==− ==
( )
( )
86294753 86294753 14 144
св-во 1 св-во 3
193 1367 193 1367
=− ==−==
( )
2
2 7 12 193
св-ва 6, 5, 4
193 193 1367 7
=− = =−=
( ) ( )
4
св-во 1 св-во 4 1
7
= =−= =−
1
1
k
k
np p
α
α
=
a
n
1
1
k
k
aa a
np p
α
α
=
np=
1
a
n
=
2
mod xa n=
.
Как мы видим, самая сложная операция при вычислении символа Лежандра, для которой не существует эффективного алгоритма, это разложение нечетного числа на сомножители. Чтобы обойти эту проблему, вводят понятие символа Якоби.
Определение 16. Пусть
Символ Якоби
определяется выражением
– нечетное составное число.
. (2.26)
Символ Якоби определяется через символы Лежандра, стоящие в правой части равенства (2.26), и является обобщением символа Лежандра,
с которым совпадает, когда
– простое число.
Отметим, что если для составного нечетного числа n символ Якоби
равен 1:
, то это совсем не значит, что уравнение
65

имеет решение. Однако, используя китайскую теорему об остатках, можно
1
a
n
= −
mod
aa n
nn
=
1
1
n
=
( )
( )
12
1
1
nn−
−
= −
ab a b
n nn
=
2
ab a
nn
=
( )
11
22
1
nm
mn
nm
−−
⋅
= −
( )
2
1
8
2
1
n
n
−
= −
a
p
показать, что если
, то это уравнение решений не имеет. Позже
мы еще вернемся к этому уравнению.
Для символов Якоби справедливы те же свойства, что и для символов
Лежандра.
Утверждение 12 (Свойства символов Якоби).
1.
2.
3.
,
;
;
;
4.
5. Свойство взаимности:
;
, где m – нечетное
число;
6.
Пусть требуется посчитать символ Лежандра
.
. Мы смотрим на
него как на символ Якоби, вычисляем его, пользуясь свойствами символа
Якоби. В конце, получив значения символа Якоби, мы тем самым получаем значение символа Лежандра.
Символы Якоби вычисляются значительно легче чем символы Ле-
жандра. Общий алгоритм вычисления символа Якоби следующий: выде-
66

ляем из «числителя» максимальное количество двоек и применяем свой-
2826498
8307223
( )
(
)
2826498 2 1413249 1413249
св-во 3 св-во 6
8307223 8307223 8307223 8307223
= = = = =
(
)
( ) ( )
8307223 172271 172271
св-во 5 св-во 1 св-во 2
1413249 1413249 1413249
−
= = = = = = =
( ) (
)
( )
1413249 35081 172271
св-во 5 св-во 1 св-во 5
172271 172271 35081
= = = = = = =
( ) ( ) ( )
3134 1567 35081
св-во 1 св-ва 2, 6 св-во 5
35081 35081 1567
−
= = = = = = =
( ) (
) ( )
607 1567 254
св-во 1 св-во 5 св-во 1
1567 607 607
−
= == =−= =− =
( ) ( ) ( )
2
127 607 99 3 11
св-ва 2, 6 св-во 5 св-во 1
607 127 127 127
⋅
= = = =−= =−=− =
( ) ( ) ( )
11 127 6 3
св-во 4 св-во 5 св-во 1
127 11 11 11
= =− = = = ==−=
( ) ( ) ( )
11 1
св-во 5 св-во 1 св-во 2 1
33
−
= = = = = −
ства 6 и 4. Потом, когда у нас «числители» и «знаменатели» нечетные, используем свойство взаимности 5, а потом свойство 1. На этом итерация
заканчивается. Значения «числителя» и «знаменателя» к следующей итерации уменьшаются как минимум вдвое. Через логарифмическое число
итераций приходим к ответу.
Пример 28. Посчитаем символ Лежандра
:
.
67

Возникает вопрос, зачем нам для вычисления символа Лежандра ис-
( )
3
ON
[ ]
2
logNp=
(
)
2
ON
p
3 mod 4p =
1
a
p
=
( )
12
1 mod
p
ap
−
=
( )
12
mod
p
a ap
+
=
34pk= +
22
mod
k
a ap
+
=
( )
14
1
mod mod
k
xa pa p
+
+
=±=±
5 mod 8p =
58
pk= +
mod 4 3p =
5 mod 8p =
пользовать свойства символа Якоби, когда можно воспользоваться критерием Эйлера (2.25). эффективный алгоритм возведения в степень мы уже
обсуждали в разделе 2.1.3 (формула (2.1)). Однако сложность этого алго-
ритма оценивается как
пользующий свойства символа Якоби, имеет сложность
(
), в то время как алгоритм, ис-
.
Перейдем к обсуждению алгоритма решения квадратного уравне-
ния (2.24) в конечном простом поле
Разберем сначала случай
.
. Любое нечетное число, приве-
денное по модулю 4, в остатке может давать 1 или 3, поэтому 50 % простых чисел относится к этому случаю.
Прежде чем решать уравнение (2.24) убедимся, что решение суще-
ствует, т. е.
. Согласно критерию Эйлера (2.25) это означает, что
. (2.27)
Умножив правую и левую часть формулы (2.27) на a, получим
вид
. Для выбранных чисел
. Легко видеть, что
это равенство примет
(2.28)
является решением (2.24) и других решений нет.
Разберем теперь случай
, что эквивалентно
.
По модулю 8 возможны остатки 1, 3, 5, 7. Остатки 3 и 7 относятся
к предыдущему случаю, так как для таких чисел
половина из оставшихся простых чисел относится к случаю
. Поэтому
.
68

Так как a – вычет, то имеет место равенство (2.27), которое для рас-
( )
22 1
1 mod
k
ap
+
=
21
mod
k
ca p
+
=
(
)(
)
2
1 mod 1 1 0 mod 1c p c c pc
= ⇔ − + = ⇔=±
1с =
(
)
2
21 22 1
1 1 mod mod mod
kk k
c a pa apa ap
++ +
=⇔= ⇒= ⇔ = ⇒
(
)
38
1
mod mod
k
xa pa p
+
+
⇒=± =±
1
с = −
( )
12
42
1 mod 1 mod
p
k
b pb p
−
+
=− ⇔=−
( ) ( )
21 22 22 42
1 1 1 mod 1 mod
k k kk
c a pa a pa b
+ + ++
=−⇔ ⋅− = ⇔ ⋅− = ⇒ ⋅ =
( ) ( )
38 14
1 21
mod mod mod
pp
kk
a pxab pa b p
+−
++
= ⇒=± ⋅ =± ⋅
1
2
100
1
2
2
3 mod 61x =
7k =
15
3 mod 61 1c = = −
10b =
8 15
3 10 mod 71 8x =±⋅ =±
сматриваемого простого числа принимает вид:
чим
Случай
, тогда
:
.
Случай
:
Пусть b – произвольный невычет, что эквивалентно равенству
.
. Обозна-
.
Тогда
.
Для реализации этого алгоритма нам потребовалось найти произвольный квадратичный невычет b. Строго говоря, пока неизвестен детерминированный полиномиальный алгоритм нахождения квадратичного невычета, представленный алгоритм также нельзя считать полиномиальным. Однако, с практической точки зрения, в силу утверждения 9 с вероятностью
мы его найдем случайным выбором (вероятность не найти невычет за
100 попыток равна
).
Пример 29. Решим уравнение:
. Выберем невычет
и выпишем ответ
. Здесь
.
69
,

Алгоритм Тонелли – Шенкса
21
t
pm= +
2t ≥
3 mod 4p
=
1 mod
sz
ab p⋅=
( )
( )
2
12
2
mod
s
z
a b ap
+
⋅=
( )
12
2
mod
s
z
xa b p
+
=±⋅
( )
12
1
mod
p
ra p
=
( )
12sp= −
2
1r
=
0z =
12
mod r rr p= ⋅
1r ≠
( )
: 12zz p=+−
( )
12
2
mod
s
z
xa b p
+
=±⋅
:2
ss=
:2zz=
1
mod
s
ra p=
2
mod
z
rb p=
1
±
( )
12
1 mod
p
bp
−
= −
1t −
113p =
4t =
7m =, 2a =
3b =
56
1
2 mod 113 1r = =
56s =
2
1
r
=
0z =
11 1r =⋅=
0z =
56s =
28s =
0z =
28
1
2 mod 113 1r = =
2
1r =
Перейдем к общему случаю, где b – по-прежнему обозначает квадра-
тичный невычет. Простое число p имеет структуру
нечетное,
(иначе
– уже рассмотренный случай). Если мы
сумеем найти такое нечетное число s и четное z, что
, т. е.
. Представим алго-
ритм нахождения таких s, z и решения x.
1. Полагаем
2. Вычисляем
3. Если
, то переопределяем
,
,
,
.
.
.
4. Проверяем четность числа s. Если число s нечетно, то работа ал-
горитма заканчивается и выводится ответ:
5. При четном s переопределяем переменные:
,
, где m –
, то
.
,
,
и возвращаемся на шаг 2.
На каждом проходе цикла мы извлекаем квадратный корень из 1, полу-
чая один из двух возможных ответов
. Если ответ (–1), то умножаем на
, получая опять 1. Далее цикл повторяется. В начале рабо-
ты алгоритма число s – четное в степени
, на каждой петле цикла степень четности этого числа уменьшается, и через t проходов цикла работа
алгоритма заканчивается. Заметим, что степень четности у числа z всегда
больше, чем у числа s, и поэтому к окончанию работы число z – четное.
Пример 30. Пусть
1.
2.
.
3. Число z не меняется:
,
,
,
,
,
,
.
.
.
4.
5.
– четное.
,
,
70
,
.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
