Тест Соловея — Штрассена

Матеріал з testwiki
Версія від 11:28, 17 лютого 2023, створена imported>АтаБот (виправлення за допомогою AWB)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Тест Соловея — Штрассена — імовірнісний тест простоти, відкритий у 1970-х роках Робертом Мартіном Соловеем спільно з Фолькером Штрассеном.[1] Тест завжди коректно визначає, що просте число є простим, але для складених чисел з деякою ймовірністю він може дати неправильну відповідь. Основна перевага тесту полягає в тому, що він, на відміну від тесту Ферма, розпізнає числа Кармайкла як складені.

Історія

У 17 столітті Ферма довів твердження, назване пізніше малою теоремою Ферма, що слугує основою тесту Ферма на простоту:

Якщо n — просте і a не ділиться на n, то an11(modn).

Ця перевірка для заданого n не вимагає великих обчислень, однак твердження, протилежне цьому, є невірним. Так, існують числа Кармайкла, які є складеними, для яких твердження, наведене в малій теоремі Ферма, виконується для всіх цілих чисел взаємнопростих з заданим числом. У 1994 році було показано, що таких чисел нескінченно багато.[2] У зв'язку з виявленим недоліком тесту Ферма, актуальності набуло завдання збільшення достовірності ймовірнісних тестів. Першим тест, що відсіює числа Кармайкла як складені, запропонував Леманн. Цей недолік відсутній також у тестах Соловея — Штрассена і Міллера — Рабіна за рахунок більш сильного критерію відсіву, ніж мала теорема Ферма. Незалежно від один одного Д. Лемер в 1976 році і Р. Соловей спільно з Ф. Штрассеном в 1977 році довели, що аналога чисел Кармайкла, які є складеними і одночасно ейлеровими псевдопростими, немає.Шаблон:Sfn На основі цього і був запропонований тест Соловея — Штрассена на простоту, він був опублікований в 1977 році, доповнення до нього в 1978 році.

Обґрунтування

Тест Соловея — Штрассена спирається на малу теорему Ферма і властивості символу ЯкобіШаблон:Sfn:

  • Якщо n — непарне складене число, то кількість цілих чисел a, взаємнопростих з n і менших n, що задовольняють порівнянню a(n1)/2(an)(modn)не перевищує n2.

Складені числа n, що задовольняють цьому порівнянню називаються псевдопростими Ейлера-Якобі за основою a.

Алгоритм Соловея — Штрассена

Алгоритм Соловея — ШтрассенаШаблон:Sfn параметризується кількістю ітерацій k. У кожній ітерації випадковим чином вибирається число a < n. Якщо НСД(a,n) > 1, то виноситься рішення, що n - складене. Інакше перевіряється справедливість порівняння a(n1)/2(an)(modn). Якщо воно не виконується, то виноситься рішення, що n — складене. Якщо це порівняння виконується, то a є свідком простоти числа n. Далі вибирається інше випадкове a і процедура повторюється. Після знаходження k свідків простоти в k ітераціях виноситься висновок, що n є простим числом з імовірністю 12k.

На псевдокоді алгоритм може бути записаний наступним чином:

 Ввід: n > 2, непарне натуральне число, що тестується;
      k, параметр, що визначає точність тесту.
Вивід: складене, означає, що n точно складене;
       ймовірно просте, означає, що n ймовірно є простим.

for i = 1, 2, ..., k:
   a = випадкове ціле від 2 до n1, включно;
   якщо НСД(a, n) > 1, тоді:
       вивести, що n — складене, і зупинитися.
   якщо a(n1)/2≢(an)(modn), тоді: 
       вивести, що nскладене, і зупинитися.

інакше вивести, що nпросте  зі ймовірністю 12k, і зупинитися.

Приклад застосування алгоритму

Перевіримо число n = 19 на простоту. Виберемо параметр точності k = 2.

 k = 1
 Виберемо довільне число a = 11; 2 < a < n - 1
 Перевіримо умову НСД(a,n)>1
 НСД(11,19)=1; отже, перевіряємо виконання порівняння a(n1)/2(an)(modn)  
 r=(an)=(1119)=1
 s=a(n1)/2=11(191)/2(mod19)=1
 Отримали, що r=s, тому переходимо до наступної ітерації
 k = 2
 Виберемо довільне число a = 5; 2 < a < n - 1
 Перевіримо умову НСД(a,n)>1
 НСД(5,19)=1; отже, перевіряємо виконання порівняння a(n1)/2(an)(modn)  
 r=(an)=(519)=1
 s=a(n1)/2=5(191)/2(mod19)=1
 r=s і це була остання ітерація, звідси робимо висновок, що 19 - просте число з імовірністю 122

Обчислювальна складність і точність

  • Точність у порівнянні з іншими ймовірнісними тестами на простоту (тут k — число незалежних ітерацій)
назва тесту ймовірність (що число складене)[3] примітки
Ферма 2k не розпізнає числа Кармайкла як складені
Леманна 2k
Соловея — Штрассена 2k
  • Теоретична складність обчислень всіх наведених у таблиці тестів оцінюється як O(log3n).Шаблон:Sfn
  • Алгоритм вимагає O(klog2m) операцій над довгими цілими числами.
  • При реалізації алгоритму, для зниження обчислювальної складності, числа a вибираються з інтервалу 0 < a < c < n, де c — константа рівна максимально можливому значенню натурального числа, що міститься в одному регістрі процесора.Шаблон:Sfn

Застосування

Ймовірнісні тести застосовуються в системах заснованих на проблемі факторизації, наприклад RSA або схема Рабіна. Однак на практиці ступінь достовірності тесту Соловея — Штрассена не є достатньою, замість нього використовується тест Міллера — Рабіна. Більш того, використовуються об'єднані алгоритми, наприклад пробний поділ і тест Міллера — Рабіна, при правильному виборі параметрів можна отримати кращі результати, ніж при застосуванні кожного тесту окремо.

Поліпшення тесту

У 2005 році на Міжнародній конференції Bit+ «Informational Technologies -2005» А. А. Балабанов, А. Ф. Агафонов, В. А. Рику запропонували модернізований тест Соловея — Штрассена. Тест Соловея — Штрассена заснований на обчисленні символу Якобі, що займає час, еквівалентний log2n. Ідея поліпшення полягає в тому, щоб у відповідності з теоремою квадратичного закону взаємності Гаусса, перейти до обчислення величини (na),що є оберненою символу Якобі, що є більш простою процедурою.[4].

Див. також

Примітки

Шаблон:Reflist

Література

  1. Шаблон:Книга
  2. Шаблон:Книга
  3. Шаблон:Книга
  4. Шаблон:Книга

Шаблон:Алгоритми теорії чисел

  1. Шаблон:Cite journal
  2. Шаблон:Cite journal
  3. Б. Шнайер Прикладная криптография — М. : ТРИУМФ, 2002 . — Глава 11.
  4. Балабанов А. А.,Агафонов А. Ф.,Рыку В. А.Алгоритм быстрой генерации ключей в криптографической системе RSA. — Вестник научно-технического развития, 2009 № 7(23). — С. 11.