ЛАБОРАТОРНАЯ РАБОТА 5 ИЗУЧЕНИЕ ТЕСТОВ НА ПРОСТОТУ И ОЗНАКОМЛЕНИЕ С АЛГОРИТМАМИ

реклама
ЛАБОРАТОРНАЯ РАБОТА 5
ИЗУЧЕНИЕ ТЕСТОВ НА ПРОСТОТУ И ОЗНАКОМЛЕНИЕ С АЛГОРИТМАМИ
ГЕНЕРАЦИИ КЛЮЧЕЙ ДЛЯ АСИММЕТРИЧНОЙ КРИПТОСХЕМЫ ТИПА RSA
ЦЕЛЬ РАБОТЫ:
генерация
ключей
для
использования
в криптосистемах типа RSA,
изучение характеристик вероятностных тестов на простоту, практическое ознакомление с
системами защиты информации.
Введение
В работе рассматривается схема шифрования с открытым ключом по методу RSA. Блок
послания M представляется числом из интервала [0,n-1] и шифруется с помощью вычисления
экспоненты
C = M**e mod n.
Блок M восстанавливается с помощью той же операции, но с другой степенью
M = C**d mod n.
Здесь пара чисел (e,n) называется ключом зашифрования или открытым ключом, пара чисел
(d,n) называется ключом расшифрования или секретным ключом.
В схеме RSA модуль n является произведением двух больших простых чисел p и q:
n = pq.
Числа e и d подбираются таким образом, чтобы
ed = 1 mod (p-1)(q-1).
Тогда практически для любого M из множества [0,n-1]
M**ed mod n = M.
Для лучшего противостояния криптоаналитическим атакам на ключ схемы RSA числа
(p-1) и (q-1) должны содержать большие простые делители. Для обеспечения этого условия
генерацию простого числа p проводят в два этапа: сначала вырабатывается простое p', а затем
тестируются на простоту числа вида p=ip'+1 для i=2,4,6,... до тех пор, пока p не будет признано
простым.
Основной
процедурой
при
создании
ключей
в схеме RSA является процедура
выработки больших (сотни бит) простых чисел. Для этого генерируют случайные числа
необходимого размера и подвергают их вероятностному тесту на простоту. Для обеспечения
действительной случайности используют, как правило, неравномерности в интервалах между
нажатиями на клавиши оператором ЭВМ.
В качестве критерия на простоту для числа P используются вероятностные тесты типа
тестов Соловея-Штрассена, Лемана Миллера-Рабина и их модификации. Так, тест Лемана
заключается в следующем:
если для некоторого числа a величина (a**((p-1)/2) mod p)
отлична от 1 или -1, то p не простое. Испытывая таким образом число p для нескольких
значений a, можно определить с достаточной степенью уверенности, является ли p простым
числом. Количество испытаний, которым должно
удовлетворять
p, является параметром
метода и изменяется в пределах от 5 до 10.
Эмпирическая
проверка
работы
теста
показывает,
что используемый критерий
бракует практически все большие составные числа (количество бит больше 100) числа за одно
испытание. В скобках заметим, что в литературе указывается, что вероятность отбраковки
теоретически составляет 3/4.
Испытания больших чисел на простоту являются весьма трудоемкими, поскольку
приходится осуществлять операции возведения в степень по очень большому модулю p.
Поэтому перед трудоемким, но весьма строгим тестом Лемана, используется предварительный
отсев чисел, которые заведомо не являются простыми. Для этой цели используется базовое
множество малых простых чисел (с числом бит не более 16).
Базовое множество нарабатывается заранее и хранится в памяти компьютера. Обозначим
его p1,p2,...,pN.
Сначала
вырабатывается
случайное
число
P с требуемым количеством бит. Для
выработанного числа P вычисляется таблица остатков от деления P на каждое простое число pi
из базового множества простых чисел (i=1,2,...,N). Таким образом мы получаем таблицу
остатков r1,r2,...,rN.
Далее производится перебор чисел вида P+Pdelta, где Pdelta = 0,2,4,... Если для
некоторого i=1,...,N число ri+Pdelta сравнимо с 0 по модулю pi, то это означает, что P+Pdelta
заведомо не может быть простым. В этом случае продолжается поиск вероятного простого
числа при следующем значении Pdelta.
В случае, если для всех i=1,...,N ri+Pdelta не сравнимо с 0
по модулю pi, то число P+Pdelta объявляется прошедшим предварительный отсев и
подвергается более срогому (и соответственно гораздо более трудоемкому) тесту на простоту.
Отличительной особенностью данного алгоритма является то, что основные операции
производятся над 16-битовыми целыми числами (наиболее быстрые операции для процессора
intel 286).
1. Рабочее задание
1.1. Выработать ключи для схемы RSA размера 75, 90 и 105 десятичных знаков на
программе IRIS. По сообщениям, выдаваемым программой, определить вид вырабатываемых ею
простых чисел (см. введение).
1.2. Отметить число тестов алгоритма
выработки
простых чисел и общее время
выработки ключа каждого размера.
1.3. Выработать ключи для схемы RSA размера 255 и 512 бит с помощью программы
PGP (алгоритм выработки простых чисел с предварительным отсевом).
1.4. Отметить число тестов
алгоритма
выработки простых чисел и общее время
выработки ключа каждого размера.
1.5. Сохранить
полученные с помощью программы PGP ключи в файлах для
последующего использования.
1.6. Сравнить результаты работы программ IRIS и PGP.
1.7. Подготовить отчет в файле Result_5.
Создать электронную подпись для файла с отчетом на выработанном в пункте 1.3. ключе
размера 512 бит.
2. Выполнение задания
2.1. Стартовать программу IRIS.EXE
Появится приглашение для ввода команд IRIS-cmd>
Ввести команду
GENKEY /KEYLENGTH=30
На запрос
Enter P0 seed
ввести
произвольные числа
до звукового
сигнала (наработка случайных параметров для
датчика случайных чисел). Аналогично вводить случайные числа для P2, Q0, Q2 и E. После
звукового сигнала нажать клавишу Enter и записать время начала выработки ключа. В процессе
выработки простых чисел после гудка
отмечать число проделанных алгоритмом проб
случайных чисел на простоту. Аналогично выработать ключи размером 50 и 70 десятичных
знаков.
Отметить время выработки ключа каждого размера.
2.2. Стартовать программу PGP.EXE -kg
На запрос о длине ключа в битах ввести 384.
На запрос о идентификаторе ключа (user ID) введите свою фамилию и размер ключа,
например, IVANOV 384.
На запрос о пароле (pass phrase) введите свою фамилию только заглавными буквами,
например, IVANOV.
Далее потребуется аклавиатуры до звукового сигнала, после чего начинается процесс
выработки простых чисел с предварительной отбраковкой по базовому множеству (см.
введение).
Отметьте число проделаных алгоритмом проб случайных чисел на простоту
по
критерию Лемана (точкой на экране отмечается невыполнение критерия, а плюсом выполнение одной итерации критеиря)
Аналогично выработайте ключи размером 450 и 512 бит.
3. Контрольные вопросы
1. Проанализируйте результаты работы программы IRIS, экстраполируйте временную
диаграмму и вычислите приблизительное время выработки ключа размера 115 знаков
(384 бита), 153 знака (512 бит) и 307 знаков (1024 бита).
2. Проанализируйте результаты работы программы PGP, экстраполируйте временную
диаграмму и вычислите приблизительное время выработки ключа размером 1500 и 3000
бит.
3. Сравните временные характеристики программ IRIS и PGP, сделайте выводы о работе
промежуточного критерия по базовому множеству.
4. Числа какой длины (в битах) потребуется тестировать на простоту для выработки ключей
схемы RSA с модулем длиной 3000 бит?
4. Оформление отчёта
Отчет должен быть представлен в виде файла с именем RESULT_5.TXT (образец
прилагается).
Файл RESULT_5.TXT должен содержать электронную подпись, выполненную с
помощью программы PGP на выработанном в п.2.5 ключе:
PGP -s RESULT_5.TXT
В качестве отчета преподавателю передаются следующие файлы:
RESULT_5.PGP - файл отчета с электронной подписью.
PUBRING.PGP - список выработанных открытых ключей.
В отчёте должны содержаться ответы на контрольные вопросы. Содержимое файлов
RESULT_5.PGP и PUBRING.PGP должно быть отпечатано на бумажном носителе.
Скачать