Тесты числа на простоту играют важнейшую роль в теории чисел, т.к. они связаны с задачей факторизации числа. Самый первый алгоритм на простоту числа был придуман Эратосфеном для того, чтобы эффективно генерировать множество простых чисел от 1 до п за время O(nloglogn). В следствии развития области информационной безопасности и криптографии, в частности криптографии с открытым ключом, важность поиска больших простых чисел возросла. Используя идеи теоремы Ферма, Соловей и Штрассен в 1977 году, и Миллер и Рабин в 1980 году разработали вероятностные тесты простоты. Несмотря на то, что ответ в этих тестах не всегда верен, данные алгоритмы были использованы в криптографии с открытым ключом для построения множества криптосистем таких как RSA, протокол Диффи-Хеллмана, схемы Эль-Гамаля.
Алгоритм Гольдвассер-Килиана использует эллиптические кривые для того, чтобы свести вопрос о простоте числа р, к вопросу о простоте числа q, которое в свою очередь много меньше р. Итерации схемы алгоритма генерируют сертификат, который может быть использован любым, кто хочет удостоверится в простоте числа р.
Цель магистерской диссертации - улучшить алгоритм Гольдвассер- Килиана. Для того чтобы достичь данной цели необходимо решить следующие задачи:
1) Проанализировать теоретический материал, начиная с элементарных понятий из теории чисел.
2) Исследовать алгоритмы для проверки простоты числа.
3) Изучить материал по теории эллиптических кривых, эллиптической арифметике.
4) Выявить основные алгоритмы для вычисления порядка эллиптических кривых.
5) Реализовать алгоритм Гольдвассер-Килиана с использованием алгоритма Шенкса-Местре для подсчета точек на эллиптических кривых.
6) Модифицировать алгоритм Шенкса-Местре.
7) Сравнить и проанализировать «стандартную» и «модифицированную» версии алгоритма.
Новизна работы состоит в следующем:
1) Впервые использован алгоритм Шенкса-Местре в теле алгоритма Г ольдвассер-Килиана
2) Разработана модификация алгоритма Шенкса-Местре
3) Проведено сравнение реализаций
В данной работе были рассмотрены теоретические и практические вопросы реализации Гольдвассер-Килиана. Разработано консольное приложение, с использованием языка c++, в котором производится тестирование входного числа на простоту методом Гольдвассер-Килиана. Для вычисления порядка кривых был использован алгоритм Шенкса-Местре, который обеспечивает достаточно хорошую сходимость для чисел средней длины. Дополнительно была рассмотрена и реализована модификация алгоритма. Было проведено сравнение и профилирование обеих версий алгоритма с помощью утилиты valgrind. Результаты экспериментов представлены в графическом виде.
Дальнейшим направлением исследования может быть сокращение времени работы алгоритма, затрачиваемого на одну итерацию схемы Гольдвассер-Килиана. Возможные решения: раскрытие внутренних вызовов функций, использование более эффективного алгоритма для вычисления результата скалярного умножения на эллиптической кривой.
1. Ишмухаметов Ш.Т., Латыпов Р.Х., Рубцова Р.Г., Столов Е.Л., Введение в теорию чисел и теорию кодирования: учебное пособие - Казань: Казан. ун. 2014. 65 с.
2. Ишмухаметов Ш.Т., Рубцова Р.Г., Математические основы защиты информации - Казань: Казан. ун. 2012. 138 с.
3. Ишмухаметов Ш.Т., Методы факторизации натуральных чисел - Казань: Казан. ун. 2011. 201 с
4. Atkin, A.O.L., Morain, F., Elliptic Curves and Primality Proving, 1993, 40с.
5. Crandall, R., Pomerance, C., Prime numbers. A computational perspective, Springer, Second edition, 2001, 603 c.
6. Goldwasser, S., Kilian, J., Almost all primes can be quickly certified - STOC. 1986. 316-329 с.
7. McGee, John J., Rene Schoof's Algorithm for Determining the Order of the Group of Points on an Elliptic Curve over a Finite Field, 2006, 84 c.
8. Rabin, M., Probabilistic algorithm for testing primality, 11 c.
9. Ritzenthaler, C., Point counting on elliptic curves, 2009. 28 c.
10.Sundriyal S., Counting points on elliptic curve over Zp, 2008. 69 c.
11. Uzunukol, O., Atkin's ECPP (Elliptic curve primality proving) algorithm, 2004. 124 c.
12. Gentle introduction to elliptic curve cryptography http://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a- gentle-introduction/
13. Lagrange's Theorem (group theory) https://en.wikipedia.org/wiki/Lagrange's theorem %28group theory%29