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


ИССЛЕДОВАНИЕ И РЕАЛИЗАЦИЯ ТЕСТОВ НА ПРОСТОТУ: ГОЛЬДВАССЕРА-КИЛИАНА, МИЛЛЕРА-РАБИНА, СОЛОВЕЯ-ШТРАССЕНА

Работа №40699

Тип работы

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

Предмет

информатика

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

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


ВВЕДЕНИЕ 3
Глава 1. Теоретические основы разработки тестов на простоту 5
1.1 Основные понятия и классификация тестов на простоту 5
1.2 Теоретические основы разработки теста на простоту Миллера-
Рабина 6
1.3 Теоретические основы разработки тестов на простоту Соловея-
Штрассена 9
1.4 Теоретические основы разработки теста на простоту
Гольдвассера-Киллиана 10
Глава 2. Практическая реализация тестов на простоту 14
2.1 Выбор языка программирования 14
2.2 Практическая реализация теста на простоту Гольдвассера-
Киллиана 15
2.3 Практическая реализация теста на простоту Миллера-Рабина.... 18
2.4 Практическая реализация теста на простоту Соловея-Штрассена
23
Глава 3. Анализ эффективности тестов на простоту 28
3.1 Методика анализа эффективности тестов на простоту 28
3.2 Анализ эффективности теста на простоту Миллера-Рабина 31
3.3 Анализ эффективности теста на простоту Соловея-Штрассена .. 38
3.4 Анализ эффективности теста на простоту Гольдвассера-Киллиана 46
СПИСОК ЛИТЕРАТУРЫ 56
ПРИЛОЖЕНИЕ 60


В современном мире большинство государственных и коммерческих услуг можно получить в электронном виде. Для доступа к данным услугам в большинстве случаев используется электронная цифровая подпись, которая полностью идентифицирует человека в мире электронного документооборота.
Очевидно, что качество защиты электронной цифровой подписи, а также все аспекты, связанные с её выпуском и использованием, играют очень важную роль в обеспечении информационной безопасности современного человека.
С момента изобретения метода шифрования с открытым ключом, используемого при шифровании информации, а также в алгоритмах электронной цифровой подписи, в области информационной безопасности широко применяются простые числа. На сегодняшний день по стандартам размер простых чисел, которые используются при формировании цифровой подписи с помощью алгоритмов, использующих эллиптические кривые, в соответствии с ГОСТ Р 34.10-2012 составляет не менее 256 бит. Для чисел такого размера крайне важным является вопрос определения простоты, так как такому простому методу, как метод перебора, необходимо чрезвычайно много вычислительных ресурсов, время его работы слишком велико.
Простые числа используются в алгоритме шифрования RSA. В ходе работы алгоритма необходимо сформировать модуль, найти функцию Эйлера, сформировать открытый и закрытый ключ. Криптостойкость этого алгоритма основана на вычислительной сложности задачи факторизации, поэтому для большей криптостойкости необходимо наличие двух больших простых чисел.
Существуют детерминированные и вероятностные тесты. В рамках этой работы мы рассматриваем вероятностные тесты Миллера-Рабина и Соловея-Штрассена и детерминированный тест Г ольдвассера-Килиана. Есть много исследований тестов на простоту, данная тема пользуется большой популярностью.
Таким образом, использование эффективного теста простоты является одним из главных способов формирования ключей большого размера в алгоритме RSA и ему подобных, что влечет увеличение криптостойкости используемой схемы шифрования. Этим обусловлена актуальность темы.
Целью данной работы является реализация и исследование тестов на простоту: Гольдвассера-Киллиана, Миллера-Рабина, Соловея-Штрассена.
Для достижения данной цели необходимо решить следующие задачи:
1) провести обзор литературы по существующим алгоритмам и классификации тестов на простоту;
2) рассмотреть теоретические основы работы тестов на простоту, исследование которых является целью данной работы;
3) выбрать язык программирования для практический реализации данных тестов;
4) реализовать рассмотренные тесты на выбранном языке программирования;
5) разработать методику анализа эффективности работы тестов на простоту;
6) провести анализ эффективности работы реализованных тестов на простоту согласно разработанной методике;
7) сделать выводы о возможности применения реализованных тестов к задачам определения простоты чисел.
Проведенные исследования имеют теоретическую и практическую значимость.
Глава 1. Теоретические основы разработки тестов на простоту
1.1 Основные понятия и классификация тестов на простоту
По определению число P является простым в том случае, если оно не имеет нетривиальных делителей, то есть, делится только на само себя и на единицу [1].
Задача определения, является ли число N - простым числом, одна из важнейших в области криптографии и информационной безопасности, так как многие криптографические алгоритмы используют простые числа в ходе работы. Алгоритмы, целью которых является решение данной задачи, называются тестами на простоту.
Большинство алгоритмов, предназначенных для тестирования чисел на простоту, можно разделить на две больших группы, у каждой из которых есть свои достоинства и недостатки [2-3]:
- вероятностные алгоритмы - алгоритмы, которые определяют является число простым или нет с некоторой вероятностью, которая зависит от числа итераций;
- детерминированные алгоритмы - такие алгоритмы, для которых при прохождении числом N теста простота числа определяется достоверно.
Исходя из приведенной выше классификации, может показаться, что детерминированные алгоритмы являются наилучшими. Тем не менее, их использование в практических приложениях сильно ограничено [4].
В связи с тем, что криптостойкость многих алгоритмов шифрования увеличивается с размером простого числа, то достаточно быстрая проверка больших чисел на простоту является одной из ключевых проблем в данной области. Вероятностные тесты на простоту при использовании в данных приложениях показывают по сравнению с детерминированными тестами большую простоту выражения и эффективность использования.
В качестве примеров вероятностных алгоритмов будут рассмотрены следующие три алгоритма:
- тест Миллера - Рабина;
- тест Соловея - Штрассена;
- тест Гольдвассера - Килиана.


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

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

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


В работе рассмотрены основы работы тестов на простоту Миллера- Рабина, Соловея-Штрассена и Г ольдвассера-Киллиана, а также разработаны их реализации на языке программирования С++.
Для оценки эффективности работы разработанного программного обеспечения создана методика анализа эффективности работы программного обеспечения, на основе которой проведен анализ эффективности работы программного обеспечения, реализующего рассматриваемые тесты на простоту. В результате анализа сделаны следующие выводы:
- наибольшая точность достигается при использовании алгоритма Гольдвассера-Киллиана, так как с помощью данного теста на простоту простые и составные числа определяются без ошибок;
- наибольшая скорость достигается при применении тестов на простоту Миллера-Рабина и Соловея-Штрассена, при этом тест Миллера-Рабина уже при малых значения параметра к практически не допускает ошибок, а тест Соловея-Штрассена безошибочно работает только при больших значениях данного параметра.
Таким образом, в процессе выполнения работы решены следующие задачи:
- проведен обзор литературы по существующим алгоритмам и классификации тестов на простоту;
- рассмотрены теоретические основы работы наиболее часто встречающихся алгоритмов работы тестов на простоту;
- выбран язык программирования С++ для практический реализации данных тестов;
- рассмотренные тесты реализованы на выбранном языке программирования;
- разработана методика анализа эффективности работы тестов на простоту;
- проведен анализ эффективности работы реализованных тестов на простоту согласно разработанной методике;
- сделаны выводы о возможности применения реализованных тестов к задачам определения простоты чисел.
Таким образом, в результате выполнения работы достигнута её основная цель - реализованы и исследованы тесты на простоту: Гольдвассера-Киллиана, Миллера-Рабина, Соловея-Штрассена.


1. Тимошин, П. А. Перспективы развития и использования систем электронной цифровой подписи [Текст] / П.А. Тимошин. - М.: Синергия, 2017. - 740 с.
2. Рассел, Джесси Быстрая цифровая подпись [Текст] / Джесси Рассел. - М.: VSD, 2017. - 569 с.
3. Бернет С., Пейн С. Криптография. Официальное руководство RSA Security. [Текст] / М.: Бином-Пресс, 2002. - 392 с.
4. Федеральный закон от 10.01.2002 г. № 1-ФЗ «Об электронной цифровой подписи» (в ред. от 23. 06.2005 г.) [Текст] // Российская газета. - 12.01.2002. - 20с.
5. Нестеренко А. Введение в современную криптографию. Теоретико-числовые алгоритмы [Текст] / 2011. — С. 79 - 90. — 190 с.
6. Х. К. А. ван Тилборг. Основы криптологии [Текст] / Москва: «Мир», 2006. - 519 с.
7. Коблиц Н. Курс теории чисел и криптографии [Текст] / — 2ое. — М.: Научное издательство ТВП, 2001. — С. 149 - 160.
8. Саломаа А. Криптография с открытым ключом [Текст] / Пер. с англ. И.А. Вихлянцева. — М.: Мир, 1995. — С. 176 - 184.
9. Lawrence C. Washington. Elliptic Curves: Number Theory and Cryptography [Текст] / New York: Chapman & Hall/CRC, 2003. — Т. 50. — (Discrete Mathematics and its applications). - 213 с.
10. Черемушкин А. В. Лекции по арифметическим алгоритмам в криптографии [Текст] / М.: МЦНМО, 2001. — С. 42 - 59.
11. Ю. В. Нестеренко. Глава 4.4. Как отличить составное число от простого [Текст] // Введение в криптографию / Под ред.
В. В. Ященко. — Санкт-Петербург, 2001. — 288 с.
12. Menezes A. J., Oorschot P. v., Vanstone S. A. Handbook of Applied
Cryptography [Текст] / CRC Press, 1996. — 816 с.
56
13. Miller G. Riemann's Hypothesis and Tests for Primality [Текст] // STOC '75: Proceedings of seventh annual ACM symposium on Theory of computing — New York, NY, USA: ACM, 1975. - С. 234239.
14. Rabin M. O. Probabilistic algorithm for testing primality [Текст] // J. Number Theor. / D. Goss — Elsevier, 1980. — Vol. 12, Iss. 1. —
с. 128-138.
15. R. Schoof. Counting Points on Elliptic Curves over Finite Fields [Текст] // J. Theor. Nombres Bordeaux. — 1995. — Вып. 7. — С. 219-254.
16. Josefsson, S.; Liusvaara, I. (January 2017). Edwards-Curve Digital Signature Algorithm (EdDSA). Internet Engineering Task Force [Текст] / Retrieved 2017-07-3Daniel J. Bernstein; Marc Joye; Tanja Lange; Peter Birkner; Christiane Peters, Twisted Edwards Curves. 432 с.
17. Campbell Parallel Programming with Microsoft® Visual C++® [Текст] / Campbell. - Москва: Гостехиздат, 2011. - 784 c.
18. Альфред, В. Ахо Компиляторы. Принципы, технологии и инструментарий [Текст] / Альфред В. Ахо и др. - Москва: Высшая школа, 2015. - 882 c.
19. Балена, Франческо Современная практика программирования на Microsoft Visual Basic и Visual C# [Текст] / Франческо Балена , Джузеппе Димауро. - М.: Русская Редакция, 2015. - 640 c.
20. Боровский, А. C++ и Pascal в Kylix 3. Разработка интернетприложений и СУБД [Текст] / А. Боровский. - М.: БХВ- Петербург, 2015. - 544 c.
21. Давыдов, В. Visual C++. Разработка Windows-приложений с помощью MFC и API-функций [Текст] / В. Давыдов. - М.: БХВ- Петербург, 2014. - 576 c.
22. Довбуш, Галина Visual C++ на примерах [Текст] / Галина Довбуш , Анатолий Хомоненко. - М.: БХВ-Петербург, 2012. - 528 с.
23. Зиборов, В. MS Visual C++ 2010 в среде .NET [Текст] / В. Зиборов. - М.: Питер, 2012. - 320 с.
24. Кетков, Юлий Практика программирования: Visual Basic, C++ Builder, Delphi. Самоучитель [Текст] / Юлий Кетков , Александр Кетков. - М.: БХВ-Петербург, 2012. - 464 c.
25. Мешков, А. Visual C++ и MFC [Текст] / А. Мешков, Ю. Тихомиров. - М.: БХВ-Петербург, 2013. - 546 c.
26. Неформальное введение в C++ и Turbo Vision [Текст] - Москва: ИЛ, 2010. - 384 c.
27. Панюкова, Т. А. Языки и методы программирования. Создание простых GUI-приложений с помощью Visual С++ [Текст] / Учебное пособие / Т.А. Панюкова, А.В. Панюков. - Москва: Мир, 2015. - 144 c.
28. Пахомов, Б. C/C++ и MS Visual C++ 2010 для начинающих [Текст] / Б. Пахомов. - М.: БХВ-Петербург, 2011. - 736 c.
29. Пахомов, Борис C/C++ и MS Visual C++ 2012 для начинающих [Текст] / Борис Пахомов. - Москва: СИНТЕГ, 2015. - 518 c.
30. Пахомов, Борис С/С++ и MS Visual C++ 2012 для начинающих [Текст] / Борис Пахомов. - М.: "БХВ-Петербург", 2013. - 502 c.
31. Полубенцева, М. C/C++. Процедурное программирование [Текст] / М. Полубенцева. - М.: БХВ-Петербург, 2014. - 448 c.
32. Поляков, А. Методы и алгоритмы компьютерной графики в примерах на Visual C++ [Текст] / А. Поляков, В. Брусенцев. - М.: БХВ-Петербург, 2011. - 560 c.
33. Понамарев, В. Программирование на C++/C# в Visual Studio .NET 2003 [Текст] / В. Понамарев. - М.: БХВ-Петербург, 2015. - 917 c.
34. Роберт, С. Сикорд Безопасное программирование на C и C++ [Текст] / Роберт С. Сикорд. - Москва: РГГУ, 2014. - 496 с.
35. Секунов, Н. Программирование на C++ в Linux [Текст] / Н. Секунов. - М.: БХВ-Петербург, 2016. - 425 с.
36. Сидорина, Татьяна Самоучитель Microsoft Visual Studio C++ и MFC [Текст] / Татьяна Сидорина. - М.: "БХВ-Петербург", 2014. - 848 c.
37. Генри С. Уоррен, мл. Глава 16. Формулы для простых чисел [Текст] // Алгоритмические трюки для программистов = Hacker’s Delight. — М.: Вильямс, 2007. — 288 с.
38. Джек Фолк, Сэм Канер, Енг. Кек Нгуен. Тестирование программного обеспечения [Текст] / Издательство ДиаСофт, 2001. - 206 с.
39. Рекс Блек. Ключевые процессы тестирования [Текст] / М.: Издательство Лори, 2014. - 544 с.
40. Савин Роман. Тестирование DOT COM [Текст] / Издательство Дело, 2007. - 302 с.


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



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


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