![](/user_photo/2706_HbeT2.jpg)
- •Теоретико-числовые методы в криптографии
- •Аннотация.
- •Предисловие
- •Введение
- •Глава 1. Основы теории чисел. §1. Теория делимости.
- •1.1. Основные понятия и теоремы.
- •1.2. Наибольший общий делитель.
- •1.3 Нок (наименьшее общее кратное)
- •1.4. Простые числа
- •Решето Эратосфена
- •1.5. Единственность разложения на простые сомножители.
- •1.6. Асимптотический закон распределения простых чисел.
- •§2. Функция Эйлера.
- •2.1. Мультипликативные функции.
- •2.2. Функция Эйлера.
- •§3. Теория сравнений
- •3.1. Свойства сравнений:
- •3.2. Полная система вычетов.
- •3.3. Приведенная система вычетов
- •3.4. Обратный элемент.
- •3.5. Алгебраические структуры на целых числах.
- •3.6. Теоремы Эйлера и Ферма. Тест Ферма на простоту.
- •Тест Ферма на простоту
- •3.7. Применение теоремы Эйлера в rsa:
- •§4. Сравнения с одним неизвестным
- •4.1. Сравнения первой степени.
- •4.2. Система сравнений первой степени. Китайская теорема об остатках.
- •4.3. Применения китайской теоремы об остатках.
- •4.4. Сравнения любой степени по простому модулю.
- •4.5. Сравнения любой степени по составному модулю.
- •§5. Теория квадратичных вычетов
- •5.1. Квадратичные вычеты по простому модулю.
- •5.2. Символ Лежандра. Символ Якоби.
- •Свойства символа Лежандра:
- •Свойства символа Якоби:
- •5.3. Тест на простоту Соловея-Штрассена.
- •Тест Соловея-Штрассена:
- •5.4. Решение квадратичных сравнений по простому модулю.
- •5.5. Квадратичные сравнения по составному модулю.
- •5.6. Тест на простоту Миллера-Рабина.
- •5.7. Связь задач извлечения квадратных корней и факторизации по модулю rsa. Криптосистема Рабина.
- •5.8. Квадраты и псевдоквадраты.
- •5.9. Числа Блюма.
- •§6. Первообразные корни и индексы. Порождающий элемент и дискретный логарифм.
- •6.1. Основные понятия и теоремы.
- •6.2. Существование первообразных корней по модулю p.
- •6.3. Первообразные корни по модулям pα, 2pα.
- •6.4. Нахождение первообразных корней по простому модулю.
- •6.5. Существование и количество первообразных корней.
- •6.6. Дискретные логарифмы.
- •6.7. Проблема Диффи-Хеллмана.
- •6.8. Условная стойкость шифра Эль Гамаля.
- •§7. Построение доказуемо простых чисел общего и специального вида.
- •7.1. Теорема Сэлфриджа и доказуемо простые числа общего вида на основании полного разложения (n—1).
- •7.2. Теорема Поклингтона и доказуемо простые числа общего вида на основании частичного разложения (n—1).
- •7.3. Числа Ферма. Теорема Пепина.
- •7.4. Числа Мерсенна.
- •7.5. Теорема Диемитко и процедура генерации простых чисел заданной длины гост р 34.10-94.
- •Глава 2. Алгебраические основы теории чисел.
- •§1. Основные понятия алгебры.
- •1.1. Начальные понятия.
- •1.2. Делимость в кольцах.
- •1.3. Деление с остатком.
- •1.4. Основная теорема арифметики.
- •§2. Конечные поля и неприводимые многочлены.
- •§3. Кольца многочленов.
- •3.1. Кольца многочленов.
- •3.2. Кольцо многочленов Zp[X].
- •3.3. Конечные поля многочленов.
- •Глава 3. Алгоритмы в криптографии и криптоанализе. §1. Элементы теории сложности.
- •§2. Алгоритмы факторизации.
- •2.1. Метод пробных делений.
- •2.2. Метод Ферма.
- •2.3. Метод квадратичного решета.
- •2.6. Методы случайных квадратов.
- •§3. Алгоритмы дискретного логарифмирования.
- •3.1. Метод прямого поиска.
- •3.2. Шаг младенца – шаг великана.
- •3.4. Алгоритм Полига-Хеллмана.
- •3.5. Алгоритм исчисления порядка (index-calculus algorithm).
- •Задачи и упражнения.
- •Упражнения к Главе 2.
- •Ответы к упражнениям.
- •1. Пояснительная записка
- •1.1. Цели и задачи дисциплины
- •1.2. Требования к уровню освоения содержания дисциплины
- •2. Объем дисциплины и виды учебной работы
- •3. Тематический план изучения дисциплины
- •4. Содержание разделов дисциплины
- •6. Вопросы к экзаменам
- •7.Литература основная:
- •Дополнительная:
- •Оглавление
1.2. Наибольший общий делитель.
Далее будем рассматривать лишь положительные делители чисел.
Общим делителем
чисел a1,
a2,…,an
называется
число d:
d\ai
.
Наибольший из всех общих делителей чисел a1, a2,…,an называется их наибольшим общим делителем (НОД) и обозначается НОД(a1, a2,…,an) или (a1, a2,…,an).
Если (a1, a2,…,an)=1, то числа a1, a2,…,an называются взаимно простыми.
Если (ai,aj)=1
,i≠j
, то числа a1,
a2,…,an
называются попарно
простыми.
Утверждение
Если числа a1, a2,…,an – попарно простые, то они взаимно простые. (Очевидно.)
Теорема 1
Если b\a
совокупность общих делителей a
и b
совпадает с совокупностью делителей
b.
В частности, (a,b)=b.
Доказательство:
b\a
a=ba1,
тогда
d:
d\b
справедливо d\a
(т.е. любой делитель b
является
также делителем a).
Если l\a, но l не делит b, то l не является общим делителем a и b.
То есть совокупность общих делителей a и b совпадает с совокупностью делителей b. А поскольку наибольший делитель b есть b, и b\a , то (a,b)=b.
□
Теорема 2
Если a=bq+c, то совокупность общих делителей a и b совпадает с совокупностью общих делителей b и c.
В частности, (a,b)=(b,c)
Доказательство:
Пусть m\a,
m\b
m\c
(в силу a=bq+c
и теоремы 2
п.1), а значит m
– общий делитель b
и c.
Пусть l\b,
l\c
l\a
(в силу a=bq+c
и теоремы 2
п.1), а значит
l
- общий делитель a
и b.
Получили совпадение совокупности общих делителей a и b и общих делителей b и c.
Пусть теперь
d=(a,b)
d\a,
d\b,
а значит, по доказанному выше, d\c.
В силу совпадения совокупностей общих
делителей и того, что d
– наименьший изо всех делителей a
и b,
не может существовать d1:
d1>d,
d1\b,
d1\c.
Поэтому d=(b,c)
(a,b)=
(b,c).
□
Алгоритм Евклида (отыскания НОД 2-х чисел)
Пусть a>b. Тогда в силу теоремы делимости находим ряд равенств:
a=bq1+r1, 0<r1<b
b=r1q2+r2, 0<r2<r1
r1=r2q3+r3, 0<r3<r2
...…………………
rn-2=rn-1qn+rn, 0<rn<rn-1
rn–1=rnqn+1.
Получение последнего равенства (то есть равенства с разложением без остатка) неизбежно, т.к. ряд b, r1, r2, …. – ряд убывающих целых чисел, который не может содержать более b положительных чисел, а значит рано или поздно в этом ряду возникнет «0».
Видим, что общие
делители
a
и b,
b
и r1,
r1
и r2,...,
rn–1
и rn
совпадают с делителями числа rn
(a,b)=(b,r1)=(r1,r2)=…=(rn-1,rn)=
rn.
Таким образом, (a,b)=rn.
Вышеизложенная идея нахождения НОД может быть реализована в виде алгоритма. Ниже приведены несколько вариантов реализации алгоритма Евклида.
Реализация алгоритма Евклида (вариант алгоритма с вычитанием)
Вход: a, b>0.
Если a>b
Шаг 3
если a<b
Шаг 2
если a=b
Шаг 5 (выход)
Меняем местами a и b.
a:=a–b
Возвращаемся на Шаг 1.
5. Выход: a – НОД
Ниже приведен пример использования этой реализации алгоритма.
Пример
a=603, b=108
Преобразования алгоритма записаны в таблицу, верхняя строка которой содержит значение переменной a, нижняя – содержимое переменной b. Каждый столбец таблице соответствует состоянию процесса на отдельном шаге.
a |
603 |
495 |
387 |
279 |
171 |
63 |
108 |
45 |
63 |
18 |
45 |
27 |
9 |
18 |
9 |
b |
108 |
108 |
108 |
108 |
108 |
108 |
63 |
63 |
45 |
45 |
18 |
18 |
18 |
9 |
9 |
Ответ: НОД (603,108)=9.
Реализация алгоритма Евклида (вариант алгоритма с делением с остатком)
Вход: a, b >0.
1. Находим разложение a=bq+r, 0≤r<b
2. если r=0
Шаг 5 (выход)
3. a:=b; b:=r.
4. Возвращаемся на Шаг 1
5. Выход: b – НОД.
Пример
a=603, b=108
-
a
603
108
63
45
27
18
b
108
63
45
27
18
9
603=5·108+63
108=1·63+45
63=1∙45+27
45=1∙27+18
27=1∙18+9
18=2∙9+0
Ответ: НОД (603,108)=9.
Бинарный алгоритм Евклида
Этот вариант создан специально для реализации на ЭВМ. В нем учитывается, что операция деления на число 2 или на любую степень двойки является весьма быстрой и простой операцией (в двоичной системе счисления операция деления на 2 есть всего лишь битовый сдвиг вправо).
Учтем, что (2k∙a,2s∙b)=2min(k,s)(a,b).
Алгоритм:
Вход: a, b>0.
Представим a и b в виде:
;
, гдеa1, b1 – нечетные числа.
k:=min(k1,k2).
Если a1>b1
Шаг 4
a1<
b1Шаг
3
a1=
b1
Шаг 6
Меняем местами a1 и b1.
c:=a1–b1=2s∙c1 (c1 - нечетное число)
(Заметим, что
с
обязательно будет четным, а значит
)
5. a1:= b1 , b1:=c1 . Возвращаемся на Шаг 1.
6. Выход: (a,b)=2k∙a1 .
Пример
a=603, b=108
-
a1
603
27
9
b1
27
9
9
c1
9
9
–
1. a1=603,
k1=0;
b=108=4∙27=22∙27
k2=2,
b1=27,
k=0
2. a1=603>
b1=27
Ш4
4. c=603-27=56=64∙9, c1=9
5. a1=27;
b1=9
Ш1
1. a1=27; b1=9
2. a1>
b1Ш4
4. c=a1–b1=18=2∙9, c1=9
5. a1=9, b1=9
1. a1=9, b1=9, k=0
2. a1=
b1
Ш6
6. (a,b) = 2º∙9=9
Для НОД справедливы следующие свойства:
1) (am,bm)=m(a,b)
Доказательство:
Доказательство строится, умножая почленно соотношения алгоритма Евклида на m.
2) d
– общий
делитель чисел a
и b
(в частности,
).
Доказательство:
Учитывая, что
и
– целые числа, из свойства НОД №1
получаем соотношение
,
что и требовалось.
□
3) (a,b)=1
(ac,b)=(c,b)
Доказательство:
a,
b,
c
выполняется (ac,b)\ac,
(ac,b)\b
(ac,b)\bc
(ac,b)\(ac,bc).
По условию теоремы,
в силу взаимной простоты a
и b
(ac,bc)=c,
то есть получили (ac,b)\с.
Но
(ac,b)\b
(ac,b)\(c,b).
С другой стороны,
(c,b)\ac,
(c,b)\b.
(c,b)\(ac,b).
Таким образом,
числа (ac,b)и (c,b).
взаимно делят друг друга
(ac,b)=(c,b).
□
4) (a,b)=1,
b\ac
b\c.
Доказательство:
Из теоремы №1 о
НОД в силу b\ac,
(ac,b)=b.
из свойства НОД
№ 3
b=(c,b)и
тогда из теоремы №1 о НОД b\c.
□
5) Если (ai,
bj)=1
для
,
(
,
)=1.
Доказательство:
имеем (
,
)
= (
,
)
= (
,
)
= … =
.
Аналогично, используя полученное соотношение,
(,
)
= (
,
)
= … = (
,
)
= 1.
□