Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания для самостоятельной работы Криптография...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
543.74 Кб
Скачать
  1. Математические основы (теория чисел)

1.1 Простые числа

Простым называют целое число, больше единицы, единственными множителями которого является единица и оно само. Простое число не делится ни на одно другое число. Число 2 – простое число. К простым числам относятся также 11, 2521и 2365347734399.

Количество простых чисел бесконечно велико. В криптографии, особенно в криптографии с открытым ключом, нередко используются большие простые числа (512 бит и даже больше)

Для алгоритмов с открытыми ключами нужны простые числа. Их нужно множество для любой достаточно большой сети. Простых чисел бесконечно много, при длине числа до 512 бит, их приблизительно 10151.

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

Но если так трудоемко разложение на множители , то как может быть простой генерация простых чисел? Дело в том, что установить простоту числа гораздо проще, чем разложить его на множители.

Генерация случайных чисел с последующей попыткой разложения их на множители – это неправильный способ поиска простых чисел. Существуют различные вероятностные проверки на простоту чисел, определяющие, является ли число простым, с заданной степенью достоверности.

Тест Леманна для проверки простоты числа p.

Вот последовательность действий для проверки простоты числа p.

  1. Выберите случайное число a, меньшее чем p.

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

  3. Если z не равно 1 или p-1, то p определенно не простое

  4. Если z равно 1 или p-1, то вероятность того, что число p не простое, не превышает 50%

Повторите этот тест t-раз. Если результат вычислений =1 или p-1, но не всегда равен 1, то p –простое число с вероятностью ошибки 1/2t

Тест Рабина-Миллера

Выберите для тестирования произвольное число p.

Вычислите b- число делений p-1 на 2, затем вычислите m , такое, что

p-1=2b*m

  1. Выберите случайное число a, меньшее p.

  2. установите j=0 и вычислите z=am mod p

  3. Если z=1 или 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 проходит тест и может быть простым числом.

  1. Если j=b и z не равно p-1, то p не относится к простым числам.

Вероятность прохождение этого теста составным числом убывает быстрее, чем в предыдущем тесте. Составное число ошибочно пройдет t тестов с вероятностью не более (¼)t, где t- число итераций.

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

При генерации простых чисел выполняются следующие действия:

  1. Сгенерировать случайное n-битовое число p.

  2. Установить старшие и младшие биты =1

(старший обеспечивает необходимую длину, младший – нечетность p)

  1. Убедитесь, что p не делится на малые простые числа: 3, 5,7 …

  2. Выполнить тест Леманна или Рабина-Миллера для некоторого случайного a. Если число p проходит тест, то сгенерируйте другое число a и проверьте тест заново.

  3. Если p тест не проходит, то сгенерируйте новое значение p и проверьте тест заново. Можно не генерировать новое число, а последовательно перебирать числа, начиная со случайно выбранного числа, пока не найдется простое число.