Генерация пар «открытый/закрытый ключ» метода RSA

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

и варианты заданий

К ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ

ЛАБОРАТОРНАЯ РАБОТА № 1

Название работы. Реализация в среде Excel алгоритма RSA шифрования с открытым ключом.

Цель. Ознакомиться с аппаратом программирования на языке Visual Basic for Applications, примерами программ для решения простых задач. Разработать и написать в среде Excel программу выработки пар «открытый/закрытый» ключ по методу RSA. Выполнить шифрование конфиденциальных данных.

Программно-аппаратные средства.Компьютерная лаборатория, пакет Microsoft Office.

Задание на лабораторную работу

1. Изучить теоретический материал по данной лабораторной работе.

2. Ознакомиться с указаниями по программированию в на языке VBA в среде Excel.

3. Разработать программный комплекс в среде Excel генерации параметров метода RSA, шифрования/расшифровки данных.

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

5. Ответить на контрольные вопросы в конце задания.

Указания к выполнению лабораторной работе.

Лабораторная работа 1 состоит из четырех частей, каждая из которых выполняется в одном и том же рабочем листе Excel.

Uml; В первой части следует составить программу на языке Visual Basic для реализации расширенного алгоритма Евклида.

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

Uml; В третьей части надо реализовать шифрованию/расшифровку текстов, вводимых с клавиатуры.

Uml; В заключительной части необходимо реализовать взлом метода RSA, считая известным открытый ключ RSA. Для разложения числа на множители использовать метод Полларда.

ВАРИАНТЫ ЗАДАНИЙ

№ варианта Алгоритм проверки простоты чисел Диапазон выбора простых чисел (для 1-о и 2-о чисел) Открытый ключ (N,E) и шифр сообщения для взлома
Метод пробных делений [50;100], [75; 125] (N,e)=(78937, 19) M={44389, 31974, 50020, 41406, 29866}
Метод Ферма [70;120], [90; 140] (N,e)=(55357, 37) M={13389, 33602, 11685, 33602, 40522, 47755, 10459, 15507, 33602}
Тест Миллера-Рабина [40;90], [80; 130] (N,e)=(41869, 23) M={21618, 16457, 36520, 31771, 22233, 32135 }
Метод пробных делений [70;120], [60; 110] (N,e)=(111557, 113) M={49096, 63084, 8557, 3743, 4162, 63084, 8557}
Метод Ферма [30;70], [70; 120] (N,e)=(96091,113) M={61768, 80113, 95437, 80113, 53070, 75177, 82879}
Тест Миллера-Рабина [60;100], [110; 150] (N,e)=(139331, 113) M={84929, 101535, 89665, 31645, 48847, 48310, 101535, 89665}
Метод пробных делений [70;120], [60; 110] (N,e)=(85039, 113) M={30454, 11454, 54678, 37720, 28540, 13779, 22807, 63035}
Метод Ферма [40;80], [70; 120] (N,e)=(150737, 113) M={104318, 143945, 19327, 69783, 112451, 105094}
Тест Миллера-Рабина [70;110], [120; 150] (N,e)=(94697,113) M={10546, 67178, 84721, 4306, 78944, 1251, 27204}
Метод пробных делений [75;110], [100; 130] (N,e)=(156031,113) M={29152, 59889, 6814, 115388, 93780, 105567, 31230, 108149}
Метод Ферма [35;70], [80; 120] (N,e)=(157379, 113) M={113065, 45393, 45393, 77288, 102351, 90053, 4109, 122125}
Тест Миллера-Рабина [75;100], [120; 160] (N,e)=(65041, 113) M={11965, 10878, 61241, 39494, 43796, 59735, 10878}
Метод пробных делений [60;90], [90; 140] (N,e)=(95371, 113) M={73636, 91819, 93589, 82293, 75385, 63153, 27478}
Метод Ферма [70;100], [1200; 150] (N,e)=(103861, 113) M={31152, 63308, 38428, 91454, 4476, 10515, 70086, 63308, 84514, 83370}
Тест Миллера-Рабина [65;100], [105; 140] (N,e)=(169921, 113) M={39823, 108107, 55814, 75107, 158616, 145959, 18054}

Теоретический материал

Односторонняя (однонаправленная) функция (one way function) - это функция f, осуществляющая отображение X->Y, где X и Y - произвольные множества, и удовлетворяющая следующим условиям:

1. Для каждого x из области определения функции Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru легко вычислить Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru . Понятие «легко» обычно означает, что существует алгоритм, вычисляющий функцию f(x) за полиномиальное время от длины аргумента x.

2. Задача нахождения прообраза Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru для произвольного y, принадлежащего области значений функции Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru , является вычислительно сложной задачей. Последнее означает, что не существует алгоритма, вычисляющего Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru существенно быстрее, чем алгоритм полного перебора.

Задача разложения натурального числа N на простые множители (факторизация N) явлется задачей вычисления односторонней функции: зная сомножители p и q, нетрудно вычислить их произведение N=p • q, но обратная задача нахождения делителей p и q по известному N является сложной задачей, решение которой требует значительных вычислительных ресурсов.

На вычислительной сложности решения этой задачи построен один из самых известных асимметричных методов криптографии – метод RSA. В 1977 году, когда создатели этого метода Ривест, Шамир и Адлеман объявили о новом методе криптографии, основанном на задаче факторизации, наиболее длинные числа, разложимые на множители, имели длину 40 десятичных цифр, что соответствует, примерно, 132-битовому двоичному числу (число 40 надо домножить на Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru ). Создатели RSA предложили широкой публике расшифровать некую фразу английского языка. Для этого предварительно требовалось факторизовать 129-значное десятичное число N (длины 428 в битовом представлении), про которое было известно, что оно представимо в виде произведения двух простых сомножителей p и q, которые имели длину 65 и 64 десятичных знака.

С тех пор был достигнут значительный прогресс в этой области. Число, предложенное создателями RSA, было разложено в 1994 году с помощью нового мощного метода факторизации – метода квадратичного решета (Quadratic Sieve Factoring), разработанного Карлом Померанцем и реализованного Аткинсом, Граффом, Ленстрой и Лейлендом. В работе участвовало около 600 добровольцев, задействовано в сети около 1700 компьютеров, которые работали в течение 7 месяцев.

Параллельно с этим методом Джоном Поллардом, известным специалистом по криптографии и теории алгоритмов, был разработан еще более быстрый метод, получивший название метода решета числового поля (Generalizad Number Field Sieve - GNFS), который является наиболее быстрым методом и на сегодняшний день. Текущий рекорд, установленный немецкими исследователями, на июнь 2008 года, составляет 1000-бит. Это делает небезопасными ключи RSA длины 1024, которые являются на сегодняшний день, самыми распространенными.

Генерация пар «открытый/закрытый ключ» метода RSA.

1. Выбираются два простых числа p и q. Для нашего примера числа p и q должны находится в интервале от 100 до 200. В этом случае их произведение N=p • q будет иметь длину 10 – 12 бит. В реальных задача длина N выбирается равной 512, 768 или 1024 бита (иногда 2048 для самых ответственных задач).

2. Вычисляем их произведение N=p • q.

3. Вычисляем функцию Эйлера Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru . Значение Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru равно числу натуральных чисел, меньших N, взаимно простых с Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru (т.е. числу всех k < N таких, что наибольший общий делитель НОД(N; k)=1).

4. Выбираем параметр e, входящий в открытый ключ RSA, равным произвольному числу, меньшему N, но взаимно простому с Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru . При реальном шифровании длина e выбирается приблизительно равной L/3, где L – длина N. Можно взять e равным произвольному простому числу, меньшему N и отличному от p и q, проверив при этом условие того, что Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru не делится на е ( Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru ).

5. Находим параметр d, являющийся секретным параметром метода RSA, из условия Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru . Для вычисления d необходимо воспользоваться расширенным алгоритмом Евклида, который описан ниже. Расширенный алгоритм Евклида по входным натуральным числам A и B находит их наибольший общий делитель C=НОД(А,В), а также числа x и y такие, что выполнено равенство Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru . Для нахождения параметра d подставим в расширенный алгоритм Евклида входные числа Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru и е. Их наибольший общий делитель C=НОД( Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru ,е) равен 1. Если это не так, то параметр е выбран неверно. Выполнив вычисления по алгоритму Евклиду мы найдем числа x и y такие, что Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru . Применив операцию Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru к обеим частям последнего равенства, получим Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru . Значит, можно взять значение параметра d равным коэффициенту y из метода Евклида. Однако, коэффициент y может принимать как положительные, так и отрицательные значения, а параметр d обязательно должен положительным, поэтому в случае если y < 0, следует взять Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru

Генерация параметров RSA завершена. Пара (N, e) объявляется открытым ключом, а параметры Генерация пар «открытый/закрытый ключ» метода RSA - student2.ru и d закрытыми параметрами (d – закрытый ключ).

Наши рекомендации