Добавил:
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. Протоколы электронной подписи
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК

Каждое поле имеет два подполя
{ }
1
0=
2
=
q
(
)
GF q
{ }
0\
∗
=
n
b ∈
β∈
b ⋅β∈
bβ⋅ ∈
b ∈
b ∈
ются несобственными. Все остальные поля называются собственными.
Поле, которое не имеет собственных подполей, называется простым. Существует только одно бесконечное простое поле – это поле рациональных
чисел |. В то же время существует множество различных конечных про-
стых полей, которые играют важную роль в криптографии и примеры
которых будут рассмотрены в следующей главе. Конечное поле, состоя-
и
, которые называ-
щее из q элементов, называется полем Галуа и обозначается как
. Ниже мы подробнее рассмотрим конечные поля.
Итак, поле – это множество с коммутативными операциями сложения
и умножения, а также деления (можно делить на любой элемент, кроме ну-
ля) и, таким образом,
1.2.3. Идеалы и фактор-кольца
Подмножество
раций сложения и умножения само является кольцом, называется под-
кольцом кольца .
множества
(все элементы, кроме 0).
, которое относительно тех же опе-
или
Пример 13. Множество
коммутативное кольцо без единицы, которое является подкольцом
кольца .
Пусть – кольцо с единицей, подкольцо
вым) идеалом, если для любых элементов
условие
образом:
идеал одновременно является и правым, то такой идеал называется дву-
сторонним. Для коммутативных колец любой идеал – двусторонний.
из примера 8, как можно проверить, есть
(
для левого идеала и
). Часто это условие записывается следующим
21
называется левым (пра-
,
для правого. Если левый
справедливо

Пример 14. Подкольцо
n
=
{ }
|aa=+∈
,
ab
∈
ab
−∈
( ) ( )
a b ab a b ab+ ⋅ + =⋅+ + + ⋅ =⋅+
=
n
Zn=
( ) ( )
( )
13 15 11 5 10 7 mod 11 2 4 0 5 1 7 mod 11 8 7 1⋅ − ⋅+ ⋅ = ⋅−⋅+− ⋅ =−=
( ) (
)
9 18 16 3 7 15 mod 13 9 5 3 3 7 2 mod 13⋅ + ⋅−⋅ = ⋅+⋅−⋅ =
(
) ( )
45 9 14 mod 13 6 9 1 mod 13 1= +− = +− =
( )
2
1 10 0 1 2
10
10 10 10
k
kk k−
α= α α αα =α + α + α + + α
09
i
≤α <
mod 0nα=
00
mod 2 mod 2 0 2 |α =α =⇔α
является идеалом кольца .
Обозначим через
ца по аддитивной подгруппе
Элементами аддитивной группы
(согласно формуле (1.3) два элемента
в одном классе тогда и только тогда, когда
– двусторонний идеал, корректна операция умножения классов:
зультатом произведения двух классов объявляется класс, в котором лежит
произведение представителей.
Множество классов с операциями сложения и умножения является
кольцом, называется фактор-кольцом кольца по идеалу
чается
.
фактор-группу аддитивной группы коль-
, где
– двусторонний идеал кольца.
являются смежные классы:
лежат
). Используя то, что
. Иначе говоря, ре-
и обозна-
Пример 15. Фактор-кольцо
вычетов. Разберем конкретные примеры.
Пример 16 (Признаки делимости). Представим натуральное число α
в десятичной записи:
. По определению число α делится на число n тогда и только то-
гда, когда
.
называется кольцом классов
.
;
;
Делимость на 2:
,
т. е. делимость определяется последним разрядом.
22

Делимость на 4:
(
) (
)
( )
0 1 0 1 10
10
mod 4 2 mod 4 10 mod 4 0 4 |
α =α+α =α+ α = ⇔ αα
(
)
( )
2
012 0 1 2
mod 8 2 4 mod 8 10 10 mod 8 0
α =α+ α+ α =α+ α+ α = ⇔
(
)
210
10
8|
⇔ ααα
( )
(
)
2
0 1 2 012
mod 3 1 1 mod 3 mod 3 0
k
α = α + ⋅α + ⋅α + = α +α +α + +α =
[
]
x
[ ]
( )
{ }
2
01 2
|
k
ki
x f x a ax a x a x a= =+ + ++ ∈
0
k
a ≠
( )
degk fx=
т. е. делимость определяется двумя последними разрядами.
Делимость на 8:
,
т. е. делимость определяется тремя последними разрядами.
Делимость на 3:
,
.
Мы получили известную школьную формулу: число делится на 3, если сумма его цифр делится на 3. На самом деле, мы получили более общий результат: остаток от деления числа на 3 есть остаток деления на 3
суммы его цифр. Кроме того, в процессе сложения цифр мы можем приводить по модулю 3 промежуточные суммы.
1.2.4. Кольца многочленов
Существует универсальный способ построения одного кольца из другого. Пусть – некоторое кольцо (для простоты мы будем считать его
коммутативным), символом
формальной переменной x с коэффициентами из кольца . Его элемен-
обозначают кольцо многочленов от
тами являются многочлены:
.
Неотрицательное целое число k (
члена и обозначается
.
23
) называется степенью много-

Степень многочлена обладает очевидными свойствами:
(
)
(
)
(
)
(
)
( )
deg deg deg
f xgx f x gx
=
( ) ( )
( )
( )
( )
{ }
deg max deg ,deg
f x gx f x gx+≤
[ ]
x
( ) ( )
( )
{ }
max ,
00 0
kl
ml
ij i
i j ii
ij i
f x g x ax bx a b x
= = =
+= + = +
∑∑ ∑
( ) ( )
0 0 00
m l kl i
ij i
i j ij j
i j ij
f x g x ax b x a b x
−
= = = =
⋅= ⋅ = ⋅
∑ ∑ ∑∑
0
j
b =
jl>
0
i
a =
ik>
[ ]
x
( ) ( )
[ ]
,fx x xµ∈
( ) ( )
[
]
,qx rx x∈
( ) ( ) ( ) ( )
f x qx x rx= µ+
( ) ( )
deg degrx x<µ
(
)
[
]
2
2 12fx x x x=+ −∈
|
( )
[ ]
5xx xµ = +∈|
( )
3qx x= −
( )
3rx=
x2 + 2x – 12
x + 5
x2 + 5x
x – 3
–3x – 12
–3x – 15
3
,
.
Многочлены нулевой степени есть элементы самого кольца .
Операции сложения и умножения в кольце
дующим образом:
В этих выражениях полагаем:
Кольцо многочленов
сел , относится к классу евклидовых колец – колец, в которых определена
операция деления с остатком. Для любых многочленов
однозначно существуют многочлены
над полем так же, как и кольцо целых чи-
при
и
определяются сле-
,
.
при
, т.ч.
.
,
Пример 17. Поделим с остатком «столбиком» многочлен
на многочлен
В результате получим частное
24
и остаток
.
:
.

Построим подмножество
( )
( )
[ ]
xx
µ⊂
[ ]
x
( )
[ ]
xxµ∈
(
)
( )
x
µ
[ ]
x
[ ]
(
)
(
)
xxµ
[ ]
x
( )
(
)
xµ
[ ]
( )
(
)
xxµ
(
)
degnx= µ
[ ]
(
)
(
)
( )
( )
{ }
1
0
| deg ,
n
i
ii
i
x x f x ax n x a
−
=
µ= = =µ ∈
∑
( )
xµ
( ) ( )
( )
( )
mod f x gx x+µ
( ) ( )
( )
( )
mod f x gx x⋅µ
( )
xµ
(
) (
)
n
xx xµ = −σ
degn = µ
deg 1nσ≤ −
( )
x
µ
( )
xµ
( )
xµ
( ) ( )
(
)
( )
mod f x gx x⋅µ
( )
n
xx→σ
( )
[ ]
3
35
xx x xµ = + −∈|
[ ]
( )
( )
xxµ|
[ ]
( )
( )
{ }
2
| ,,x x ax bx c a b c
µ = ++ ∈||
многочленов, включая в него
все многочлены из кольца
. Нетрудно проверить, что множество
бой идеал кольца
кольцо
многочленов
сы, представителями которых являются все возможные многочлены степени
меньше
Результатами сложения и умножения являются остатки от деления на
многочлен
по идеалу
соответствующих многочленов
, и, следовательно, корректно определено фактор-
, которое называется кольцом классов вычетов кольца
:
, которые делятся на заданный многочлен
представляет со-
. Элементы кольца
.
– клас-
;
.
Заметим, что альтернативой делению «столбиком» при приведении по
модулю можно использовать следующий прием. Представим многочлен
в виде
мы можем поделить многочлен
ни, такая замена
иначе говоря, многочлен
поля ). При вычислении выражения
пользовать подстановку
Пример 18. Пусть
являются многочлены:
не оказывает никакого влияния на результаты,
,
определен с точностью до множителя из
,
на коэффициент при старшей степе-
и ее следствия.
. (При необходимости
следует ис-
, элементами кольца
.
25

Вычислим произведение:
( )( ) ( )
22 3
3 2 2 7 1 mod 3 5xx xx xx+− −− +−=
( )
(
)
43 2 3
2 26 11 2 mod 3 5xx x x x x= −− + + +−=
(
)
(
) ( )
32 3
2 1 26 11 2 mod 3 5xx x x x x= −− + + + − =
( )( )
( ) ( )
2 32
3 5 2 1 26 11 2 mod 3 5 32 24 3x x x x xx x x=−+ −− + + + − =− + −
3
35
xx→− +
.
При вычислении здесь мы совершали замену
Таким образом, в настоящей главе нами были введены два важнейших понятия алгебры: группа и кольцо, а также рассмотрены основные
математические операции над ними.
2. ЭЛЕМЕНТЫ ТЕОРИИ ЧИСЕЛ, КОНЕЧНЫХ ПОЛЕЙ И ЭЛЛИПТИЧЕСКИХ КРИВЫХ
2.1. ЭЛЕМЕНТЫ ТЕОРИИ СЛОЖНОСТИ АЛГОРИТМОВ
2.1.1. Большие числа
.
В описании криптопротоколов и криптосистем часто встречаются
фразы: «Пусть n – большое целое число», «пусть p – большое простое
число» и т. д. Для того чтобы понять и «прочувствовать», что такое большое число в криптографии, рассмотрим «несерьезный» пример.
Предположим, что мы построили специальную криптомашину для
взлома некоторого шифра путем прямого перебора ключей (Brute-force
26

attack). Пусть эта машина перебирает миллион ключей в секунду
6
10
128 38
2 3, 4 10≈×
6 10
3600 24 10 8,6 10×× ≈ ×
14
3, 4 10×
24
10
15
10
222
01 10 11
+=
22 2
11 10 101+=
(
вар/сек). Посчитаем, за какое время эта машина вычислит самый ко-
роткий ключ (его длина равна 128 бит) в современных симметрических
криптосистемах. Всего
реберем
нам потребуется
лет. Если мы построим криптомашину, у которой
ключей. За один год –
вариантов ключей. За сутки мы пе-
. Итого
производительность будет в один миллиард раз больше, то такая машина
справится с задачей за
лет или, иначе, за миллион миллиардов лет.
Для сравнения, возраст Вселенной оценивается в 13,8 миллиарда лет.
Как мы видим, само по себе увеличение быстродействия кардинально
не меняет ситуации. Атака «грубой силой» неэффективна. Чтобы понять,
насколько эффективен алгоритм взлома и какими свойствами должны обладать параметры криптосистемы, производят оценку сложности алгоритма. Более подробно этот вопрос изложен в [4].
2.1.2. Основные классы алгоритмов
Вообще говоря, время работы любого алгоритма, как правило, зависит от конкретных входных данных. Простейший пример сложения двухразрядных чисел:
– две битовые операции,
–
три битовые операции. При оценке сложности алгоритма нас не интересует точное количество битовых операций, как показывает только что рассмотренный пример, оно зависит от конкретных данных. Нас интересует,
как быстро с ростом длины входных данных увеличивается время работы
алгоритма. Функция сложности алгоритма – это функция от длины вход-
ных данных.
Поскольку нас интересует лишь скорость роста, то будем использоваит стандартизированные обозначения для классов функций.
27

Определение 12. Говорят, что функция
( )
fn
( )
( )
Ogn
0C >
( )
( )
limnf n gn C
→∞
≤
( )
( )
33
3 5 10f n n n On= + −∈
( )
( ) ( )
2 9 2 ln2
4 52 6
nn
f n n n O ne= − +∈
( )
On
2
n
( )
2
On
( )
( )
{ }
,
k
P f n On k=∈∈
( )
( )
( )
{
}
exp , , 0,
k
Exp f n O n cn c c k= ∈ ∈ >∈
( )
4
On
Exp
( )
2n
Oe
50n =
100nn
′
→=
4
2 16=
25
e
принадлежит классу
, если существует такая константа
.
Примeры.
Операция сложения двух n-разрядных чисел имеет сложность
Операции умножения двух n-разрядных чисел и деления
числа на n-разрядное число, а также обращение n-разрядного числа имеют
одинаковую сложность и при использовании алгоритма умножения «стол-
биком» равны
Существует множество классов сложности алгоритмов. Нас интере-
суют два диаметрально противоположных класса:
.
,
, что
-разрядного
.
.
– класс полиномиальных алгоритмов
;
– класс экспоненциальных алгоритмов
.
В качестве иллюстрации разницы между этими типами рассмотрим
два гипотетических алгоритма. Пусть первый принадлежит к классу P
и имеет сложность
сложность
воляет решить на компьютере для числа длиной
. Предположим, что применение обоих алгоритмов поз-
, а второй принадлежит к классу
бит задачу за 1 ч.
и имеет
При двойном увеличении размера числа (
ритмом придется решать эту задачу
8,2 млрд лет.
28
) первым алго-
ч, а вторым
ч, или

Алгоритм взлома «грубой силой» имеет сложность
( )
( )
ln2n
OPne
( )
Pn
Exp
– некоторый полином и, таким образом, является экспоненциаль-
ным.
Если криптосистема взломана экспоненциальным алгоритмом, то
увеличение длины ключа и других параметров (если это возможно) снова
делает этот шифр безопасным. Например, авторы первой в мире асимметрической криптосистемы RSA зашифровали некий текст и предложили
премию (1 $) тому, кто его расшифрует. Этот текст был дешифрован спустя 20 лет методом квадратичного решета, имеющего субэкспоненциаль-
, где
ную сложность (промежуточный тип между классами Р и
алгоритм не полиномиален, то увеличение длин всех параметров системы
RSA «спасло» ситуацию, и эта криптосистема используется и в настоящее
время. Наоборот, если криптосистема взломана полиномиальным алгоритмом, то никакое увеличение длин параметров и ключа не «спасает»
криптосистему.
В этой связи алгоритм, имеющий полиномиальную сложность, принято называть эффективным. Все другие алгоритмы называют не эффективными.
2.1.3. Алгоритм возведения в степень
и алгоритм Евклида
). Так как
с точки зрения приложений, вычислительных задач. Практически все эти
интересные задачи не имеют эффективных алгоритмов решения, и лишь
небольшое количество имеет алгоритмы решения полиномиальной сложности. Здесь для нас особенно важны две из них: алгоритм возведения
в степень и алгоритм вычисления наибольшего общего делителя (алгоритм Евклида).
В математике существует большое количество интересных и важных,
29

Рассмотрим сначала алгоритм возведения в степень. Пусть на некото-
aM∈
k ∈
раз
k
k
b a aa a= ≡∗∗ ∗
( )
n
M Mat=
k
ba=
n
M =
mod
k
ba n=
M EC=
разk
b ka a a a
= ≡⊕⊕ ⊕
a EC∈
0
2
i
l
i
i
kk
=
=
∑
2
loglk=
{ }
0,1
i
k ∈
⋅
6.4 6
=
6.9 6=
(
)
( )
0
2
2
00
i
i
l
i
i
i
i
k
ll
k
k
k
i
ii
aa a a
=
= =
∑
= = =
∏∏
2
i
i
aa≡
i
a
2
1ii
aa
+
=
0, , 1il= −
0
aa=
i
a
1
i
k =
2
2log k
ром множестве M задана бинарная ассоциативная операция (*), которую
будем называть умножением, и пусть дан элемент
число
. Выражение
называется возведением эле-
и натуральное
мента a в степень k.
Примеры.
риц,
– возведение матрицы a в степень;
возведение в степень числа по модулю;
липтической кривой,
множество квадратных вещественных мат-
,
– множество точек эл-
– сложение точки
с собой k раз.
Последние два примера для нас особенно важны, поскольку широко
применяются во многих криптопротоколах.
–
Алгоритм возведения в степень
Запишем натуральное число k в двоичной системе:
,
дробной части, например,
Величины
рат l раз:
перемножаются те величины
. (Здесь и далее знак
,
означает отбрасывание
.) Тогда
,
. (2.1)
вычисляются последовательно путем возведения в квад-
,
,
. Далее, согласно формуле (2.1),
, для которых
. На этом этапе нам
необходимо будет выполнить не более l умножений. Таким образом, ал-
,
горитм возведения в степень требует не более
бинарная операция умножения полиномиальна, то и алгоритм возведения
в степень имеет полиномиальную сложность.
умножений. Если
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
