0 Введение
Алгоритм RSA основан на очень простом арифметическом факт: умножая два больших простых чисел очень просто, но факторинг хотят , чтобы их продукт чрезвычайно сложно.
В данной статье рассматриваются соответствующие знания о простых числах.
Испытание 1 на простоту
Вопрос 1: Как определить, является ли большое число простое число
1,1 проба деление
Trial деление: определяется ли п является простым, цикл писать свою способность к делению п от 2 SQRT (п) определяется, если оно не может быть простым числом п.
Если п мало, то с помощью пробного деления , конечно , очень эффективно и быстро. Но когда великое русское время, этот алгоритм не может работать
с RSA1024 например, когда открытым ключом
0x890e23101a542913da8a4350672c9ef8e7b34c2687ce8cd8db3fb34244a791d60c9dc0a53172a56dcc8a66f553c0ae51e9e2e2ce9486fa6b00a6c556bfed139001133cdfe5921c425eb8823b1bd0a4c00920d24bee2633256328502eadbfac1420f9a5f47139de6f14d8eb7c2b7c0cec42530c0a71dadb80c7214f5cd19a3f2f
, Два простых фактора
0xe5a111a219c64f841669400f51a54dd4e75184004f0f4d21c6ae182cfb528652a02d6d677a72b564c505b1ed42a0c648dbfe14eb66b04c0d60ba3872826c32e7
и
0x98cb760764484e29245521be08e7f38edeebfca8427149524ba7f4735e1d5f3a45d585cb3722ff4c07c19165be738311dc346a914966f5b311416fed3b425079
Он был преобразован в десятичную
12026655772210679470465581609002525329245773732132014742758935511187863487919026457076252932048619706498126046597130520643092209728783224795661331197604583
и
8002511426596424351829267099531651390448054153452321185350746845306277585856673898048740413439442356860630765545600353049345324913056448174487017235828857
Это на 155 и 154-значное число цифр, около 511 мощностью 2, которая обычно не рассчитывается!
Конечно, не нет способа, математики всегда некоторые нечестные для нас , чтобы показать путь.
1.2 Маленькая теорема Ферма
малая теорема Ферма является теорема в теории чисел: Если это целое число, р простое число, то ап-а является кратным р, он может быть выражен в виде р ≡a ( по модулю р) , если кратный А не р этой теоремы Она также может быть записана в виде р -1≡1 ( по модулю р)
Следует отметить, что малая теорема Ферма является необходимым условием для оценки , является ли число простым, не является достаточным условием, потому что есть некоторые псевдо-простые числа удовлетворяют малой теоремы Ферма не является простым числом, например, 2 340 ≡ 1 (mod341), но 341 = 11 × 31
1.3 тест ферма
Мы будем рассматривать только случай , когда а = 2, если мы рассмотрим случай , когда а = 3, составное число может быть передан тест при а = 2, результаты расчетов при а = 3 , но исключает возможность простых чисел. Соответственно, он расширяет определение числа псевдопростого числа , удовлетворяющее сказал н- -1modn составного число п = 1 называется число псевдопростого числа (псевдопростым число основывать а) в качестве основани в. Псевдо премьер фронт 1 млрд натуральных чисел 2 и 3 , в то же время, в конце только 1272, только менее четверти этого числа. Это говорит нам о том , что если оба проверить = 2 и = 3 в обоих случаях, вероятностные алгоритмы ошибки вплоть до 0,000025. Легко думать, тем больше выбор , чтобы протестировать, более точный алгоритм. Наш подход , как правило , случайным образом выбирается положительное целое число протестирована в нескольких несколько раз небольшого теста в базе , как, до тех пор , пока человек не проходит тест может определить это число является составным числом.这就是Fermat素性测试。
Тест на простоту 1.4 Миллера-Рабина
Для того, чтобы проверить , является ли N простого числа, N-1 сначала разложить на 2 S D. В начале каждого теста, случайным образом выбирается первый диапазон [1, N-1] из целых чисел а, если после всех r∈ [0, с-1] , когда А Д MODn ≠. 1 и А 2rd MODn ≠ -1, N является составным числом. В противном случае, N 3/4 вероятность простого числа.
Как тест ферма, Миллер-Рабин тест может простоту еще определить число 可能
является простым, но этот метод имеет свои быстрое, эффективный и широко используются.
Мы решили проверить простые числа типа
Детерминированная определение большого целого числа является простым простым методом испытания -AKS
АКС воспламеняет тест (также известный как Агроэлы-Kayal-Саксен воспламеняет тестирование и круговой AKS тест) является решением типа алгоритмов простого тестирования, три из Индийского института компьютерных технологий ученые Канпера, Маниндра Агравал, Neeraj Kayal и Нитин Саксена, 2002 6 августа опубликовал статью под названием PRIMES в P (простое число принадлежит Р) бумаге. Поэтому авторы завоевали множество наград, в том числе гёделевских премий и в 2006 году Фулкерсон премии 2006 года. Этот алгоритм может быть в полиномиальное время, мы решим, является ли данное число является простым числом или составным числом.
2 генерации больших простых чисел
Самый простой способ заключается в случайном порядке искать, например, генерировать 100 больших простых чисел, мы сначала сгенерировать случайную последовательность чисел, а затем с помощью теста на простоту Миллера-Рабина , чтобы проверить это может быть, если не простое число, то случайным образом так цикл продолжается.
Конечно, мы можем использовать случайный метод поиска (полностью отличаются каждый раз , когда он генерирует случайное число), случайный алгоритм поиска увеличиваются (после генерации случайного числа, каждый из которых проходит его 2) может быть использован
на этапе генерирования п-разрядный десятичное большое простое числа следующим образом :
- Генерация
n
случайных чисел битp
и самый старший бит не может0
, - Если младший бит четное, а затем добавить его ,
1
чтобы гарантировать , что число является нечетным числом, чтобы сэкономить время - Число тестов может быть
10000
простое число (меньшее общее1228
число) делится, так что вы можете быстро устранить многие составное число, чтобы сэкономить время - В это генерирует случайное число с, чтобы в нижней части , чтобы быть испытанием на простоту Миллера-Рабина, если р связан в качестве иллюстрации. Если повторный выбор с помощью теста на р. Выбор должен быть выбран в качестве небольшого прайм - тайм, в целях повышения скорости обработки. После того, как приблизительно в пять раз теста на простоту Миллера-Рабина, точность является относительно высоким
2
p-1
a
p
a
- Если
p
каждый тест проходит, то , что р является простым числом. В противном случаеp←p+2
, с повторным тестированием
Большой простой процесс генерации число имеет два ключевых момента, тест на простоту, другое случайное число генерируется. Бывший для обеспечения точности и эффективности, последний должен обеспечивать безопасность, то есть, чтобы создать истинное случайное число
Большинство программ и случайное число (например, C и MATLAB являются) действительно просто псевдослучайным язык. Есть (например, линейной конгруэнтной) с помощью функции можно определить с помощью затравки (например, часы), сгенерированный псевдо-случайное число. Тем не менее, UNIX ядро генератор случайных чисел (/ DEV / случайный), который теоретически может привести к истинным случайным образом. Т.е., генерация случайного чисел, производящая функция независимо друг от друга, или недетерминированные генераторы. Таким образом, в теории, компьютер может генерировать случайные числа статистической значимость.
Ссылка: Open Source библиотеки шифрования Javascript
Последующий
программа Prism
Согласно конфиденциальным документам , предусмотренным Сноуден АНБ бывшего корреспондентом дисплея, NSA с RSA достиг контракт 10 миллионов долларов, бывшего в последней имплантации изъяна в формуле программного обеспечения для шифрования, оставляя «заднюю дверь для себя ". Сообщается , что дефекты программного обеспечения RSA есть формула называется BSAFE, а имя формулы дефекта для двойной эллиптических кривых, разработанный АНБ из него. Содержимое файла отметил, что RSA с 2004 года использует эту формулу изъян в их программном обеспечении.
RSA Security Shi, Ади Шамир и Лен Адлеман в 1982 году, основан изобретатель Рон Ривестом RSA алгоритм, то на 2,1 млрд долларов приобретения корпорации EMC в 2006 году. Алгоритм является наиболее известным из которых является дефект Dual_EC_DRBG, шифровальщики несколько лет назад обнаружил проблему. Алгоритм шифрования можно рассматривать как генератор случайных чисел, но некоторые номера фиксированы, шифровальщики могут осуществляться в качестве мастер - ключа , чтобы прорвать ряд встроенных алгоритмов.
Сам алгоритм RSA не является проблемой, до тех пор, как ваш ключ действительно случайным образом генерируется угадать ключ так же трудно иголку в стоге сена вообще, существующий компьютер, конечно, не может нарушить ваши зашифрованные файлы в цикле замены пароля. Однако, если этот случайный алгоритм является ложным? Если это только ключ, сгенерированный в небольшой коллекции этого? Ваши зашифрованные файлы мгновенно посмотрел на это АНБ делать.