Генерация простого числа

Для алгоритмов с открытыми ключами необходимы обыкновенные числа. Их необходимо огромное количество для хоть какой довольно большой сети. До этого, чем дискуссировать арифметику генерации обычного числа, я отвечу на несколько тривиальных вопросов.

Если каждому пригодится свое обычное число, не иссякнет ли у нас припас? Нет. В реальности существует примерно Генерация простого числа 10151 обычных чисел длино1 до 512 бит включительно. Для чисел, близких n, возможность того, что случаем выбранное число окажется обычным, равна 1/ln n. Потому полное число обычных чисел, наименьших n, равно n/(ln n). Во вселенной всего 1077 атомов. Если б для каждого атома во вселенной с начала времен каждую микросекунду требовался бы млрд Генерация простого числа обычных чисел, пригодилось бы только 10109 обычных чисел, осталось бы еще приблизительно 10151 обычных чисел.

Что если два человека случаем изберут одно и то же обычное число? Этого не случится. При выборе из 10151 обычных чисел возможность совпадения выбора существенно меньше, чем возможность, что ваш компьютер случаем вспыхнет в тот момент, когда вы Генерация простого числа выиграете в лотерею.

Если кто-то создаст базу данных всех обычных чисел, не сумеет ли он использовать эту базу данных для вскрытия алгоритмов с открытыми ключами? Нет. Если б вы хранили один гб инфы на устройстве, весящем один гр, то список обычных чисел размером до 512 бит Генерация простого числа включительно весил бы столько, что масса хранилища превысила бы предел Чандрасекара, и оно сколлапсировало бы в черную дыру ... в любом случае вы не можете извлечь данные.

Но если так трудоемко разложение на множители, как может быть обычной генерация обычных чисел? Фокус в том, что ответить "да" либо "нет" на вопрос "Является Генерация простого числа ли число n обычным?" еще проще, чем ответить на более непростой вопрос "Каковы множители n?"

Генерация случайных чисел с следующей попыткой разложения их на множители - это неверный метод поиска обычных чисел. Есть разные вероятностные проверки на простоту чисел, определяющие, является ли число обычным, с данной степенью достоверности. При условии Генерация простого числа, что эта "степень достоверности" достаточна велика, такие методы проверки довольно неплохи. Я слышал, что обыкновенные числа, генерированные таким макаром именуются "промышленно ординарными числами": эти числа возможно являются ординарными с контролируемой возможностью ошибки.

Представим, что одна проверка из 250 - неверна. Это значит, что с вероятностью 1/1015 проверка объявит обычным составное число. (Обычное число Генерация простого числа никогда не будет объявлено составным при проверке.) Если по некий причине пригодится большая достоверность простоты числа, уровень ошибки можно снизить. С другой стороны, если вы установите возможность того, что число является составным, в 300 миллионов раз наименьшей, чем возможность выиграть главный приз в гос лотерее, вы сможете больше об этом Генерация простого числа не беспокоиться.

Обзоры недавнешних исследовательских работ в этой области можно отыскать в [1256, 206]. Другими необходимыми работами являются [1490, 384, 11, 19, 626, 651, 911].

Solovay-Strassen

Роберт Соловэй (Robert Solovay) и Фолькер Штрассен (Volker Strassen) разработали метод вероятностной проверки простоты числа [1490]. Для проверки простоты числа p этот метод употребляет знак Якоби:

(1) Изберите случаем число a Генерация простого числа, наименьшее p.

(2) Если НОД(a,p) (1, то p не проходит проверку и является составным.

(3) Вычислите j = a(p-1)/2 mod p.

(4) Вычислите знак Якоби J(a,p).

(5) Если j ¹ J(a,p), то число p наверное не является обычным.

(6) Если j = J(a,p), то возможность того, что число p Генерация простого числа не является обычным, не больше 50 процентов.

Число a, которое не указывает, что p наверное не является обычным числом, именуется очевидцем. Если p - составное число, возможность случайного числа a быть очевидцем не ниже 50 процентов. Повторите эту проверку t раз с t разными значениями a. Возможность того, что составное число преодолеет Генерация простого числа все t проверок, не превосходит 1/2t.

Lehmann

Другой, более обычный тест был независимо разработан Леманном (Lehmann) [903]. Вот последовательность действий при проверке простоты числа p:

(1) Изберите случаем число a, наименьшее p.

(2) Вычислите a(p-1)/2 mod p.

(3) Если a(p-1)/2 ¹ 1 либо -1 (mod p), то p не является обычным.

(4) Если a(p-1)/2 º 1 либо Генерация простого числа -1 (mod p), то возможность того, что число p не является обычным, не больше 50 процентов.

И опять, возможность того, что случайное число a будет очевидцем составной природы числа p, не меньше 50 процентов. Повторите эту проверку t раз. Если итог вычислений равен 1 либо -1, но не всегда равен 1, то Генерация простого числа p является обычным числом с вероятностью ошибки 1/2t.

Rabin-Miller

Везде применяемым является обычный метод, разработанный Майклом Рабином (Michael Rabin), отчасти основанным на идеях Гэри Миллера [1093, 1284]. На самом деле, это облегченная версия метода, рекомендованного в предложении DSS proposal [1149, 1154].

Изберите для проверки случайное число p. Вычислите b - число делений p - 1 на 2 (т.е., 2b Генерация простого числа - это большая степень числа 2, на которое делится p - 1). Потом вычислите m, такое что p = 1 + 2b * m.

(1) Изберите случайное число a, наименьшее p.

(2) Установите j = 0 и z = am mod p.

(3) Если z = 1 либо если z = p - 1, то p проходит проверку и может быть обычным числом.

(4) Если j > 0 и z Генерация простого числа = 1, то p не является обычным числом.

(5) Установите j = j + 1. Если j < b и z( p - 1, установите z = z2 mod p и вернитесь на шаг (4). Если z = p - 1, то p проходит проверку и может быть обычным числом.

(6) Если j = b и z ¹ p - 1, то p не является обычным числом.

В Генерация простого числа этом тесте возможность прохождения проверки составным числом убывает резвее, чем в прошлых. Гарантируется, что три четверти вероятных значений a окажутся очевидцами. Это значит, что составное число проскользнет через t проверок с вероятностью не большей (1/4)t, где t - это число итераций. По сути и эти оценки очень пессимистичны Генерация простого числа. Для большинства случайных чисел около 99.9 процентов вероятных значений a являются очевидцами [96].

Есть более четкие оценки [417]. Для n-битового кандидата в обыкновенные числа (где n больше 100), возможность ошибки в одном тесте меньше, чем . И для 256-битового n возможность ошибки в 6 тестах меньше, чем 1/251. Дополнительную теорию можно отыскать в [418].


generatori-postoyannogo-toka.html
generatori-vidoha-ventilyaciya.html
generirovanie-alternativ.html