Тип работы:
Предмет:
Язык работы:


ИССЛЕДОВАНИЕ МЕТОДОВ ФАКТОРИЗАЦИИ НАТУРАЛЬНЫХ ЧИСЕЛ

Работа №40611

Тип работы

Дипломные работы, ВКР

Предмет

информатика

Объем работы49
Год сдачи2019
Стоимость3900 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
335
Не подходит работа?

Узнай цену на написание


ВВЕДЕНИЕ 4
Глава 1. Алгоритмы факторизации 7
1.1. Метод Ферма 7
1.2. р-алгоритм Полларда 7
1.3. P-1 алгоритм Полларда 8
1.4. Метод квадратичных форм Шенкса 9
1.5. Метод Лемана 10
1.6. Алгоритм Диксона 10
1.7. Метод непрерывных дробей. Метод Лемера и Пауэрса 11
Глава 2. Реализация алгоритмов 14
2.1. Метод Ферма 14
2.3. Р-1 алгоритм Полларда 14
2.4. Метод квадратичных форм Шенкса 14
2.5. Метод Лемана 15
2.6. Алгоритм Диксона 15
2.7. Метод непрерывных дробей. Вариант Лемера и Пауэрса 16
2.8. Метод непрерывных дробей. Вариант Моррисона и Бриллхарта .. 16
Глава 3. Сравнение алгоритмов 18
3.1. Сравнение экспоненциальных алгоритмов 18
3.1.1. Метод Ферма 18
3.1.2. р-алгоритм Полларда 19
3.1.3. P-1 алгоритм Полларда 19
3.1.4. Метод квадратичных форм Шенкса 20
3.1.5. Метод Лемана 21
3.1.6. Сравнение алгоритмов на интервале 10л2 - 10л3 22
3.1.7. Сравнение алгоритмов на интервале 10Л3 - 10Л4 23
3.1.8. Сравнение алгоритмов на интервале 10Л4 - 10Л5 24
3.1.9. Сравнение алгоритмов на интервале 10Л5 - 10Л6 25
3.1.10. Сравнение алгоритмов на интервале 10Л6 - 10Л7 26
3.1.11. Сравнение алгоритмов на интервале 10Л7 - 10л8 27
3.2. Сравнение субэкспоненциальных алгоритмов 28
3.2.1. Алгоритм Диксона 28
3.2.2. Метод непрерывных дробей(вариант Лемера и Пауэрса) 29
3.2.3. Метод непрерывных дробей(вариант Моррисона и Бриллхарта) 30
3.2.4. Сравнение алгоритмов на интервале 10Л9 - 10Л10 31
3.2.5. Сравнение алгоритмов на интервале 10Л15 - 10Л16 32
3.2.6. Сравнение алгоритмов на интервале 10Л21 - 10Л22 33
ЗАКЛЮЧЕНИЕ 35
СПИСОК ЛИТЕРАТУРЫ 37
ПРИЛОЖЕНИЯ 40

Всю систему шифрования можно поделить на 2 класса: симметричные и ассиметричные алгоритмы шифрования. Суть симметричных алгоритмов состоит в том, что и шифрующий, и дешифрующий человек должны знать алгоритм шифрования, называемый ключом. Самым известным устройством, работающим симметричным методом, была немецкая шифровальная машина «Энигма». Ассиметричные алгоритмы шифрования являются более надежными[1], так как в них используются 2 ключа - открытый и закрытый. Открытый применяется для шифрования информации, а закрытый - для дешифрования. Таким образом, шанс попадания обоих ключей в руки взломщика очень мал. К тому же, зная закрытый ключ, достаточно просто узнать открытый, но из открытого ключа получить закрытый практически невозможно: для подбора закрытого ключа понадобится очень много времени, так как вариантов может быть столько, что даже самый мощный компьютер будет подбирать их несколько десятков лет.
Одним из самых популярных алгоритмов шифрования на сегодняшний день является алгоритм ассиметричного шифрования RSA. В его основе лежит задача факторизации произведения двух больших чисел, результат которой и определяет криптостойкость алгоритма.
Что же такое факторизация? Факторизация - это разложение числа на простые множители[2]. Существует много алгоритмов, которые решают данную задачу, и поиск новых ведется до сих пор. К сожалению, на данный момент совершенного алгоритма пока нет. Несмотря на то, что существуют алгоритмы, способные правильно разложить число на множители, ни один из них не в силах разложить достаточно большое число за разумное время.
Все алгоритмы факторизации делятся на 2 типа: экспоненциальные и субэкспоненциальные. Сложность экспоненциальных алгоритмов зависит от длины входящих параметров, а для субэкспоненциальных алгоритмов сложность принято обозначать L - нотацией[3]:
Ln(a,c) := 0(e((c+o(i))(logn)a(loglogn)1
где n - число, подлежащее факторизации, а 0 < а < 1 и с — некоторые константы.
К экспоненциальным алгоритмам относятся такие алгоритмы, как:
- перебор возможных делителей;
- метод факторизации Ферма;
- р-алгоритм Полларда;
- Р-1 алгоритм Полларда;
- алгоритм Ленстры;
- алгоритм Полларда-Штрассена;
- метод квадратичных форм Шенкса;
- метод Лемана.
К субэкспоненциальным алгоритмам относятся такие алгоритмы, как:
- алгоритм Диксона;
- факторизация методом непрерывных дробей;
- метод квадратичного решета;
- факторизация с помощью эллиптических кривых.
Вопрос о существовании алгоритма с полиномиальной сложностью, который будет работать на обычном компьютере, до сих пор остается открытым и является достаточно важной проблемой. Но также же существует алгоритм с полиномиальной сложностью, работающий на квантовом компьютере - алгоритм Шора[4].
В данной работе рассматривались как экспоненциальные, так и субэкспоненциальные алгоритмы. Из экспоненциальных алгоритмов были выбраны такие как:
- метод факторизации Ферма;
- р - алгоритм Полларда;
- Р-1 - алгоритм Полларда;
- метод квадратичных форм Шенкса;
- метод Лемана.
Из субэкспоненциальных алгоритмов были отобраны следующие алгоритмы:
- алгоритм Диксона;
- метод непрерывных дробей. Метод Лемера и Пауэрса;
- метод непрерывных дробей. Метод Моррисона и Бриллхарта[5]. Целью данной работы является исследование алгоритмов факторизации
и проведения сравнительного анализа.
По ходу работы были выявлены следующие задачи:
- рассмотрение нескольких алгоритмов факторизации натуральных чисел;
- их реализация на языке программирования Python;
- исследование каждого алгоритма и выявление зависимости времени работы от размера факторизуемого числа;
- сравнение времени работы алгоритмов между собой на разных числовых интервалах;
- подведение итогов.
Глава 1. Алгоритмы факторизации
1.1. Метод Ферма
Метод Ферма разложения на множители делит число п на два положительных целых числа а и Ь, которые необязательно являются простыми, так, чтобы п = ab[ 6].
Метод основан на поиске чисел х и у, таких что (х — у)(х + у) = п.
Основная идея:
Метод сводится к поиску чисел а и Ь, близких друг к другу:
1) находится наименьшее целое число х, которое больше ^п;
2) находится такое число у, что у2 = х2 — п;
3) проверяем, является ли х2 — п полным квадратом. Если да, то находим а = х — у и Ь = х + у. Если нет, то повторяем пункт b) до тех пор, пока х2 — п не будет являться полным квадратом, каждый раз меняя значение х на х + 1.
Для каких чисел работает?
Для всех нечетных чисел.
Сложность: О(п) или 0(еп)[1].
Так как метод факторизации Ферма имеет экспоненциальную оценку, он не эффективен на больших числах. Для ускорения алгоритма можно сначала выполнять пробное деление факторизуемого числа п на простые числа от 2 до некоторой константы. Это позволяет исключить все малые делители числа п от 2 до выбранной константы. И только потом применять метод Ферма.
1.2. р-алгоритм Полларда
р-алгоритм Полларда является вероятностным алгоритмом, который находит делитель составного числа п. Сложность данного алгоритма зависит от величины делителя, а не от величины факторизуемого числа п. Его удобно использовать, когда алгоритмы, зависящие от п, становятся неэффективны^].
Основная идея:
Метод сводится к поиску такого р, что р делится на х1 — х2 без остатка, но в то же время х1 — х2 без остатка на п не делится[9]:
1) выбираем случайно х1;
2) вычисляем х2, используя функцию f(x1) такую, чтобы п не делилось без остатка на х1 — х2;
3) считаем Н.О.Д. для х1 — х2 и п. Если результат не равен 1, то это ответ. А если 1, то повторяем пункт b) и находим xi+1. Повторяем до тех пор, пока результат не станет равен 1.


Возникли сложности?

Нужна помощь преподавателя?

Помощь студентам в написании работ!


Факторизацией натурального числа называется его разложение на простые множители. Данная задача имеет очень большую вычислительную сложность. Алгоритм RSA, основанный на трудоемкости задачи факторизации длинных чисел, является одним из самых популярных методов криптографии с открытым ключом[21].
Проведение экспериментов для различных методов, показало, что время выполнения алгоритма напрямую зависит от его типа и вычислительной сложности.
В данной работе были рассмотрены несколько известных алгоритмов для решения задачи факторизации и также было проведено их сравнение.
Была достигнута цель реализовать метод факторизации Ферма, р- алгоритм Полларда, Р-1 алгоритм Полларда, метод квадратичных форм Шенкса, метод Лемана, алгоритм Диксона, метод непрерывных дробей (метод Лемера и Пауэрса) и метод непрерывных дробей (метод Моррисона и Бриллхарта). На основе полученных результатов был проведен сравнительный анализ данных алгоритмов[22].
У каждого алгоритма можно отметить как плюсы, так и минусы:
- метод факторизации Ферма работает вполне эффективно, только если делители числа N находятся близко к друг другу. В противном случае эффективность данного алгоритма падает до сложности полного перебора;
- р-алгоритм Полларда является вероятностным алгоритмом и эффективность данного алгоритма во многом зависит от исходного полинома. Но не смотря на это он мало затратный по памяти, и к тому же его сложность зависит только от величины делителя р, а не входного числа N. То есть главное достоинство этого алгоритма: он применим в тех случаях, когда остальные алгоритмы, зависящие напрямую от числа N, перестают быть эффективными;
- Р-1 алгоритм Полларда работает достаточно быстро на фоне остальных выбранных экспоненциальных алгоритмов. Он быстро находит небольшой простой делитель р, который является степенно-гладким для выбранной границы. Однако выбор правильной границы является сложным дополнением;
- метод квадратичных форм Шенкса довольно легкий в плане реализации, к тому же число итераций первого и второго циклов алгоритма определяется числом сомножителей факторизуемого числа N;
- метод Лемана так же, как и Р-1 алгоритм Полларда, работает достаточно быстро на фоне остальных выбранных экспоненциальных алгоритмов. Это связано с тем, что он развивает идеи, на которых была основана теорема Ферма;
- алгоритм Диксона имеет субэкспоненциальную сложность, но его эффективность для факторизации чисел в рамках моей работы просматривается недостаточно хорошо;
- метод непрерывных дробей (вариант Лемера и Пауэрса) показал лучшие результаты среди остальных субэкспоненциальных алгоритмов благодаря относительной легкости реализации. Здесь не нужно было вычислять факторную базу и вычислять линейно независимые вектора, как для алгоритма Диксона и второго варианта Моррисона и Бриллхарта метода непрерывных дробей.
В итоге благодаря результатам, полученным в ходе экспериментальных работ, получилось еще раз обосновать


1. Панасенко, С.П. Алгоритмы шифрования [Текст]: специальный справочник / С.П. Панасенко. — СПб.: БХВ-Петербург, 2009. — 576 с.
2. Ишмухаметов, Ш.Т. Методы факторизации натуральных чисел
[Текст]: учеб. пособие / Ш.Т. Ишмухаметов — Казань: Казанский
университет, 2011. — 52 с.
3. Василенко, О.Н. Теоретико-числовые алгоритмы в криптографии [Текст] / О.Н. Василенко — М.: МЦНМО, 2003. — 9 с.
4. Ишмухаметов, Ш.Т. Методы факторизации натуральных чисел
[Текст]: учебное пособие / Ш.Т. Ишмухаметов — Казань: Казанский
университет, 2011. — 52 с.
5. Сабирова, Д.Д. Отчет по производственной практике (Практика по получению профессиональных умений и опыта профессиональной деятельности) [Текст] / Казанский государственный университет — Казань, 2019 — 14 с.
6. ИНТУИТ: Национальный открытый университет, курс «Математика
криптографии и теория шифрования», лекция 12: Простые числа
[Электронный ресурс]. — 2011. — URL:
https://www.intuit.ru/studies/courses/552/408/lecture/9368 (дата обращения
12.02.2019) .
7. Василенко, О.Н. Теоретико-числовые алгоритмы в криптографии [Текст] / О.Н. Василенко — М.: МЦНМО, 2003. — 57 с.
8. Ишмухаметов, Ш.Т. Методы факторизации натуральных чисел
[Текст]: учебное пособие / Ш.Т. Ишмухаметов — Казань: Казанский
университет, 2011. — 64 с.
9. ИНТУИТ: Национальный открытый университет, курс «Математика
криптографии и теория шифрования», лекция 12: Простые числа
[Электронный ресурс]. — 2011. — URL:
https://www.intuit.ru/studies/courses/552/408/lecture/9368 (дата обращения
25.02.2019) .
10. Cormen, T.H. Introduction to algorithms [Текст] / T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein — USA: MIT Press, 2001. — 1180 с.
11. Pollard, J. Theorems on factorization and primality testing [Текст]: Mathematical Proceedings of the Cambridge Philosophical Society / J. Pollard — Cambridge University Press, 1974. — 521 с.
12. Ишмухаметов, Ш.Т. Методы факторизации натуральных чисел [Текст]: учебное пособие / Ш.Т. Ишмухаметов — Казань: Казанский университет, 2011. — 53 с.
13. Pollard, J. Theorems on factorization and primality testing [Текст]: Mathematical Proceedings of the Cambridge Philosophical Society / J. Pollard — Cambridge University Press, 1974. — 521 с.
14. Ишмухаметов, Ш.Т. Методы факторизации натуральных чисел [Текст]: учебное пособие / Ш.Т. Ишмухаметов — Казань: Казанский университет, 2011. — 115 с.
15. Черемушкин, А.В. Лекции по арифметическим алгоритмам в криптографии [Текст] / А.В. Черемушкин — М.: МЦНМО, 2001. — 77 с.
16. Панкратова, И.А. Теоретико-Числовые методы в криптографии
[Текст]: учебное пособие / И.А. Панкратова — Томск: Томский
государственный университет, 2009 — 85 с.
17. Ишмухаметов, Ш.Т. Методы факторизации натуральных чисел
[Текст]: учебное пособие / Ш.Т. Ишмухаметов — Казань: Казанский
университет, 2011. — 64 с.
18. Василенко, О.Н. Теоретико-числовые алгоритмы в криптографии [Текст] / О.Н. Василенко — М.: МЦНМО, 2003. — 328 с.
19. Ишмухаметов, Ш.Т. Методы факторизации натуральных чисел
[Текст]: учебное пособие / Ш.Т. Ишмухаметов — Казань: Казанский
университет, 2011. — 120 с.
20. Нестеренко, А. Ю. Теоретико-числовые методы в
криптографии [Текст] / А.Ю. Нестеренко — М.: Московский государственный институт электроники и математики, 2012. — 224 с.
21. Сабирова, Д.Д. Исследование методов факторизации натуральных чисел: курсовая работа [Текст] / Казанский государственный университет — Казань, 2018 — 28 с.
22. Сабирова, Д.Д. Отчет по производственной практике (Преддипломная практика) [Текст] / Казанский государственный университет — Казань, 2019 — 10 с.


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2024 Cервис помощи студентам в выполнении работ