Скачиваний:
13
Добавлен:
17.06.2023
Размер:
246.39 Кб
Скачать

24 Алгоритм rsa

Описание схемы RSA приведем в упрощенном варианте с изложением минимально необходимых сведений из теории чисел.

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

Вычисление ключей

1. Выбираются p,q - большие простые числа (см. замечание).

Определение: целое число Р>1 называется простым, если его делителями являются только числа 1 и Р.

2. Вычисляется произведение n=pq.

3. Вычисляется n)=(p-1)(q-1) - функция Эйлера от n.

4. Выбирается целое число e (1<e<n)) - такое, что

НОД (e, n))=1 (это означает, что e и n) - взаимнопросты).

Определение: говорят, что положительное целое число С является наибольшим общим делителем чисел А и В, если:

а) С является делителем А и В;б) любой делитель А и В является делителем С.

Проще всего это сделать, выбрав из таблицы простых чисел число, которое меньше n) и не является его делителем.

5. Из уравнения ed 1 mod n) находится целое число d.

Определение: если А является целым, а N - положительным целым, то A mod N определяется как остаток от деления A на N.

Определение: говорят, что два целых числа А и В являются сравнимыми по модулю N, если (A mod N)=(B mod N). Это записывается в следующем виде: AB mod N.

Таким образом, уравнение ed 1 mod n) означает, что надо найти такое d, чтобы произведение ed и 1 были сравнимы по модулю n), т.е. чтобы выполнялось равенство ed mod n) = 1 mod n) .

Нетрудно видеть, что ed можно найти из уравнения ed =kn)+1 , подбирая значения целого k, чтобы d оставалось целым и меньшим n).

6. Формируем открытый ключ: это два числа n и e. KU={e,n}

7. Формируем секретный ключ: это два числа n и d. e. KU={d,n}

Пример: n=209, d=103

Замечание: Величина n во многом определяет стойкость алгоритма RSA к расшифрованию. Зная n, можно разложить его на множители, найти n)=(p-1)(q-1), а затем, зная открытый ключ e, найти d из соотношения ed 1 mod n).

Приведем рекомендации по выбору чисел p и q, позволяющие избежать получение легко разлагаемого на множители n:

разумный выбор длины ключа (n) – это диапазон от 1024 до 2048 бит.

значения p и q должны различаться по длине всего на несколько разрядов, например, попадать в диапазон от 1075 до 10100.

как (p-1), так и (q-1) должны содержать в своих разложениях достаточно большой простой множитель.

НОД (p-1, q-1) должен быть достаточно малым.

Процедура зашифрования

1. Отправитель разбивает свое сообщение на блоки, равные k=[log2(n)] бит, где квадратные скобки обозначают взятие целой части от дробного числа (т.е. схема RSA представляет собой блочный шифр).

Подобный блок может быть интерпретирован как число из диапазона (0;2k-1). В простейшем случае в качестве блока можно взять один символ сообщения. Тогда числа, соответствующие символам открытого текста, должны быть меньше n-1.

Пример: n=209, значит, используя полученные ключи и посимвольное кодирование можно зашифровать открытый текст, содержащий символы из набора до 209 символов. Перед шифрованием надо поставить в соответствие каждому символу открытого текста некоторое число. Пусть мы зашифровываем только символы кириллицы от а до я (соответствующие числа от 0 до 32).

2. Для каждого числа открытого текста (mi) вычисляется выражение

ci= (mi)e mod n.

Числа ci и есть зашифрованное сообщение.

Пример: шифруем символ г, для наших допущений ему соответствует число mi=3.

ci= (37) mod 209 = 97

Замечание: Поскольку криптосистема работает с очень большими числами и выполняет такие "трудные" действия, как возведение в степень, то быстродействие криптосистемы невысоко.

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

В этом случае, наиболее простой выход состоит в замене операции возведения в степень k на операцию перемножения k-раз, а при перемножении здесь можно воспользоваться свойствами арифметики в классах вычетов:

Более оптимальный выход: весь текст сообщения кодировать обычным симметричным блочным шифром (намного более быстрым), но с использованием ключа сеанса, а сам ключ сеанса шифровать асимметричным алгоритмом с помощью открытого ключа получателя и помещать его в начало файла.

Процедура расшифрования

Для каждого числа закрытого текста (ci) число открытого текста mi определяется из соотношения:mi= (ci)d mod n.

Пример: Расшифровываем число ci=97mi= 97103 mod 209 = 3 (поверьте на слово, без вычислений на компьютере, все равно не сможете проверить)

Соседние файлы в предмете Информационная безопасность