Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_4_АлгоритмRSA.doc
Скачиваний:
14
Добавлен:
21.11.2019
Размер:
1.99 Mб
Скачать

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

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

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

Существуют различные вероятностные тесты, определяющие с заданной степенью достоверности факт простоты числа. Если «степень достоверности» будет достаточна, то такие тесты достаточно надежны. Причем, если по какой-то причине понадобится большая достоверность простоты числа, можно установить меньший уровень вероятности ошибки. С другой стороны, если установить вероятность ошибочного прохождения теста составным числом в 300 миллионов раз меньшей вероятности выигрыша главного приза в государственной лотерее, о возможности ошибки можно не беспокоиться.

Одним из широко используемых является следующий относительно простой алгоритм, разработанный Майклом Рабином (Michael Rabin). Вероятность прохождения этого теста составным числом убывает с ростом числа итераций. Гарантируется, что три четверти возможных значений а окажутся свиде­телями простоты числа. Это означает, что составное число ошибочно пройдет t тестов с вероятностью не более (1/4)t, где t - число итераций.

Алгоритм rsa

Алгоритм RSA был предложен тремя изобретателями – Роном Ривестом (Ron Rivest), Ади Шамиром (Adi Shamir) и Леонардом Адлеманом (Leonard Adlenman) и является полноценным алгоритмом с открытым ключом, который можно использовать и для шифрования, и для создания цифровых подписей.

Безопасность алгоритма RSA основана на трудоемкости разложения на множители (факторизации) больших чисел. Открытый и закрытый ключи являются функциями двух больших простых чисел разрядностью 100 - 200 десятичных цифр или даже больше. Предполагается, что восстановление открытого текста по шифротексту и открытому ключу равносильно разложению числа на два больших простых множителя.

Для генерации двух ключей применяются два больших случайных простых числа р и q. Для максимальной безопасности р и q должны иметь равную длину. Рассчитывается произведение

n=pq

Затем случайным образом выбирается ключ шифрования е, такой что е и (p-1)(q-1) являются взаимно простыми числами. Затем, с помощью расширенного алгоритма Евклида вычисляется ключ расшифрования d такой, что

.

Другими словами,

.

Заметим, что d и e также взаимно простые числа. Числа е и n - это открытый ключ, а число d - закрытый. Два простых числа p и q больше не нужны. Они могут быть отброшены, но не должны быть раскрыты.

При шифровании сообщение т сначала разбивается на цифровые блоки, размерами меньше п (для двоичных данных выбирается самая большая степень числа 2, меньшая п). То есть, если p и q являются 100-разрядными простыми числами, то п будет содержать около 200 разрядов, и каждый блок сообщения т должен быть около 200 разрядов в длину. Зашифрованное сообщение с будет состоять из блоков с той же самой длины. Формула зашифрования выглядит следующим образом:

.

При расшифровке сообщения для каждого зашифрованного блока вычисляется

.

Так как

, все операции по (mod n), то формула восстанавливает сообщение. Сказанное выше суммировано в табл. 1.

Таблица 1.

Шифрование RSA

Открытый ключ:

n – произведение двух простых чисел p и q (p и q должны храниться в секрете)

e – число, взаимно простое с (p-1)(q-1)

Закрытый ключ:

Зашифрование:

.

Расшифрование:

Точно также сообщение может быть зашифровано с помощью d, а расшифровано с помощью е, тут возможен любой выбор.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]