Сертификат первичности - Primality certificate

В математике и информатике , сертификат на простоту или на простоту доказательства является кратким, формальным доказательством того, что число является простым. Сертификаты первичности позволяют быстро проверить первичность числа без необходимости запускать дорогостоящий или ненадежный тест на первичность . «Краткость» обычно означает, что доказательство должно быть не более чем полиномиально больше, чем количество цифр в самом числе (например, если число имеет b битов, доказательство может содержать примерно b 2 битов).

Сертификаты простоты ведут непосредственно к доказательствам , что такие проблемы, как тестирование на простоту и дополнение в целое факторизациях лежат в NP , класс задач , поддающихся проверке в полиномиальное время данного решения. Эти проблемы уже тривиально лежат в co-NP . Это было первым убедительным доказательством того, что эти проблемы не являются NP-полными , поскольку, если бы они были, это означало бы, что NP является подмножеством co-NP, что, по широко распространенному мнению, является ложным; фактически, это была первая демонстрация проблемы в NP, пересекающейся со-NP, которая, как известно, в то время не была в P.

Создание сертификатов для задачи дополнения, чтобы установить составное число, несложно: достаточно указать нетривиальный делитель. Стандартные вероятностные тесты на простоту , такие как тест Бэйли-PSW на простоту , на тест ферма , и тест на простоту Миллера-Рабина также производят композитность сертификаты в случае , когда входной является составным, но не дают сертификаты для простых входов.

Сертификаты Pratt

Исторически концепция сертификатов первичности была введена сертификатом Пратта, изобретенным в 1975 году Воаном Праттом , который описал его структуру и доказал, что он имеет полиномиальный размер и поддается проверке за полиномиальное время. Он основан на тест на простоту Лукаса , который , по существу, обратный из малой теоремы Ферма с дополнительным условием , чтобы сделать это верно:

Теорема Лукаса : предположим, что у нас есть целое число a такое, что:
  • a n - 1 ≡ 1 (mod n ),
  • для любого простого множителя q числа n - 1, это не тот случай, когда a ( n  - 1) / q ≡ 1 (mod n ).
Тогда n простое.

Учитывая такое a (называемое свидетелем ) и разложение на простые множители n  - 1, просто быстро проверить вышеуказанные условия: нам нужно только выполнить линейное число модульных возведений в степень, поскольку каждое целое число имеет меньше простых множителей, чем битов, и каждое из них может быть выполнено возведением в степень путем возведения в квадрат умножений O (log n ) (см. обозначение big-O ). Даже с целочисленным умножением в начальной школе это только время O ((log n ) 4 ); используя алгоритм умножения с наиболее известным асимптотическим временем выполнения, алгоритм Шёнхаге-Штрассена , мы можем уменьшить это время до O ((log n ) 3 (log log n ) (log log log n )) времени, или используя обозначение soft-O Õ ((журнал п ) 3 ).

Однако можно обманом заставить проверяющего принять составное число, задав ему «разложение на простые множители» n  - 1, которое включает составные числа. Например, предположим, что мы утверждаем, что n  = 85 является простым числом, предоставляя a  = 4 и n  - 1 = 6 × 14 в качестве «разложения на простые множители». Затем (используя q  = 6 и q  = 14):

  • 4 взаимно просто с 85,
  • 4 85−1 ≡ 1 (мод 85),
  • 4 (85-1) / 6 16 (мод 85), 4 (85-1) / 14 ≡ 16 (мод 85).

Мы могли бы ошибочно заключить, что 85 - простое число. Мы не хотим просто заставлять проверяющую множить число, поэтому лучший способ избежать этой проблемы - предоставить сертификаты примитивности для каждого из простых множителей n  - 1, которые являются лишь меньшими экземплярами исходной проблемы. . Мы продолжаем рекурсивно таким образом, пока не достигнем числа, известного как простое, например 2. В итоге мы получим дерево простых чисел, каждое из которых связано со свидетелем a . Например, вот полный сертификат Pratt на номер 229:

  • 229 ( а  = 6, 229 - 1 = 2 2  × 3 × 19),
    • 2 (известное простое число),
    • 3 ( а  = 2, 3 - 1 = 2),
      • 2 (известное простое число),
    • 19 ( а  = 2, 19 - 1 = 2 × 3 2 ),
      • 2 (известное простое число),
      • 3 ( а  = 2, 3 - 1 = 2),
        • 2 (известное простое число).

Можно показать, что это дерево доказательств содержит не более двух значений с помощью простого индуктивного доказательства (основанного на теореме 2 Пратта). Результат верен для 3; в общем, возьмем p > 3 и пусть его дочерними элементами в дереве будут p 1 , ..., p k . По предположению индукции, дерево с корнем p i содержит не более значений, поэтому все дерево содержит не более

поскольку k ≥ 2 и p 1 ... p k = p  - 1. Поскольку каждое значение имеет не более log n битов, это также демонстрирует, что сертификат имеет размер O ((log n ) 2 ) бит.

Поскольку существует O (log n ) значений, отличных от 2, и каждое требует не более одного возведения в степень для проверки (и возведения в степень доминируют во времени выполнения), общее время составляет O ((log n ) 3 (log log n ) (log log log n )) или Õ ((log n ) 3 ), что вполне возможно для чисел в диапазоне, с которым обычно работают теоретики вычислительных чисел.

Однако, хотя это полезно в теории и легко проверить, на самом деле создание сертификата Pratt для n требует факторизации n  - 1 и других потенциально больших чисел. Это просто для некоторых специальных чисел, таких как простые числа Ферма , но в настоящее время намного сложнее, чем простая проверка простоты для больших простых чисел общего вида.

Сертификаты Аткина – Гольдвассера – Килиана – Морейна

Чтобы решить проблему эффективного создания сертификатов для большего числа пользователей, в 1986 году Шафи Голдвассер и Джо Килиан описали новый тип сертификата, основанный на теории эллиптических кривых . Это, в свою очередь, было использовано AOL Аткином и Франсуа Мореном в качестве основы для сертификатов Аткина-Голдвассера-Килиана-Морейна, которые представляют собой тип сертификатов, генерируемых и проверяемых системами доказательства простоты эллиптической кривой . Так же, как сертификаты Пратта основаны на теореме Лукаса, сертификаты Аткина – Гольдвассера – Килиана – Морейна основаны на следующей теореме Гольдвассера и Килиана (лемма 2 «Почти все простые числа могут быть быстро сертифицированы»):

Теорема : Предположим, нам даны:
  • положительное целое число n, не делимое на 2 или 3;
  • M x , M y , A, B в (целые числа по модулю n ), удовлетворяющие M y 2 = M x 3 + AM x + B и с 4A 3 + 27B 2, взаимно простыми с n ;
  • прайм .
Тогда M = (M x , M y ) - неединичная точка на эллиптической кривой y 2 = x 3 + Ax + B. Пусть k M будет M, добавленным к самому себе k раз, используя стандартное сложение эллиптических кривых. Тогда, если q M - единичный элемент I, то n простое число.

Технически эллиптическая кривая может быть построена только над полем и является полем только в том случае, если n простое, поэтому мы, кажется, предполагаем результат, который пытаемся доказать. Сложность возникает в алгоритме сложения эллиптических кривых, который принимает обратные значения в поле, которое может не существовать в . Однако можно показать (лемма 1 «Почти все простые числа могут быть быстро сертифицированы»), что если мы просто выполняем вычисления, как если бы кривая была четко определена, и ни в какой точке не пытаемся инвертировать элемент без инверсии, результат все еще действителен; если мы встретим элемент без инверсии, это означает, что n составное.

Чтобы получить сертификат из этой теоремы, мы сначала кодируем M x , M y , A, B и q , затем рекурсивно кодируем доказательство простоты для q < n , продолжая, пока не достигнем известного простого числа. Этот сертификат имеет размер O ((log n ) 2 ) и может быть проверен за время O ((log n ) 4 ). Более того, можно показать, что алгоритм, который генерирует эти сертификаты, ожидает полиномиальное время для всех, кроме небольшой доли простых чисел, и эта доля экспоненциально уменьшается с размером простых чисел. Следовательно, он хорошо подходит для генерации сертифицированных больших случайных простых чисел - приложения, которое важно в криптографических приложениях, таких как генерация доказуемо действительных ключей RSA .

Сертификаты на основе Поклингтона

Доказуемая генерация простых чисел, основанная на вариантах теоремы Поклингтона (см. Тест на простоту Поклингтона ), может быть эффективным методом для генерации простых чисел (стоимость обычно меньше вероятностной генерации) с дополнительным преимуществом встроенных сертификатов простоты. Хотя они могут показаться особыми простыми числами, обратите внимание, что каждое простое целое число может быть сгенерировано с помощью алгоритма доказуемой генерации на основе Поклингтона.

Тесты поклингтона на примитивность

Пусть где где - различные простые числа с целым числом больше нуля и свидетель такой, что:

1.

 

 

 

 

( 1 )

2. для всех .

 

 

 

 

( 2 )

Тогда P простое, если выполняется одно из следующих условий:

а) (см.) или эквивалентно

 

 

 

 

( )

б) (см.) или эквивалентным образом и
  • с ,
  • такой, что и существует такое маленькое простое число , что .

 

 

 

 

( б )

Сертификат Pocklington Primality

Сертификат на простоту Pocklington состоит из простого P, набор простых чисел делящихся , каждый со своим собственным Поклингтона простого сертификата или достаточно малы , чтобы быть известным премьер, и свидетель .

Биты, необходимые для этого сертификата (и порядок вычислительных затрат), должны варьироваться от приблизительно для версии ( b ) до версии ( a ).

Небольшой пример

Пусть . Обратите внимание , что и , .

  • При использовании «свидетеля» 2 уравнение 1 удовлетворяется, а 2 - при использовании и .
  • Для версии a требуется только сертификат .
  • для версии b требуется только сертификат , но есть еще кое-что, что нужно сделать:
    • и
    • Использование не удается:
    • Успешное использование :, и простое.

Влияние «ПРИМЕР в П»

"PRIMES is in P" было прорывом в теоретической информатике. Эта статья, опубликованная Маниндрой Агравалом , Нитином Саксеной и Нираджем Каялом в августе 2002 года, доказывает, что известная проблема проверки простоты числа может быть решена детерминированно за полиномиальное время. За эту работу авторы получили премию Гёделя 2006 года и премию Фулкерсона 2006 года .

Поскольку проверка простоты теперь может выполняться детерминированно за полиномиальное время с использованием проверки простоты AKS , простое число само по себе может считаться сертификатом своей собственной простоты. Этот тест выполняется за Õ ((log n ) 6 ) раз. На практике этот метод проверки дороже, чем проверка сертификатов Pratt, но не требует каких-либо вычислений для определения самого сертификата.

использованная литература

  1. ^ Воан Пратт. «У каждого прайма есть емкий сертификат». SIAM Journal on Computing , vol. 4. С. 214–220. 1975. Цитаты , Полнотекстовый .
  2. ^ Голдвассер, С. и Килиан, Дж. «Почти все простые числа могут быть быстро сертифицированы». Proc. 18-й STOC. С. 316–329, 1986. Полный текст .
  3. ^ Аткин, О.Л . ; Морейн, Ф. (1993). «Эллиптические кривые и доказательство простоты» (PDF) . Математика вычислений . 61 (203): 29–68. DOI : 10.1090 / s0025-5718-1993-1199989-х . JSTOR  2152935 . Руководство по ремонту  1199989 .
  4. ^ Поклингтон, Генри К. (1914–1916). «Определение простого или составного характера больших чисел по теореме Ферма». Труды Кембриджского философского общества . 18 : 29–30.
  5. ^ Crandall, Ричард; Померанс, Карл. «Простые числа: вычислительная перспектива» (2-е изд.). "Springer-Verlag, 175 Fifth Ave, New York, New York 10010, USA, 2005".
  6. ^ Бриллхарт, Джон ; Lehmer, DH ; Селфридж, Дж. Л. (апрель 1975 г.). «Новые критерии первичности и факторизации 2 м ± 1» (PDF) . Математика вычислений . 29 (130): 620–647. DOI : 10.1090 / S0025-5718-1975-0384673-1 . JSTOR  2005583 .
  7. ^ Агравал, Маниндра ; Каял, Нирадж ; Саксена, Нитин (сентябрь 2004 г.). «ПРИМЕР в П» (PDF) . Анналы математики . 160 (2): 781–793. DOI : 10.4007 / анналы.2004.160.781 . JSTOR  3597229 . Руководство по ремонту  2123939 .

внешние ссылки