
- •«Защита программ и данных»
- •2. Анализ и исследование алгоритмов несимметричной цифровой подписи
- •2.1 Цель работы
- •2.2 Методические указания к организации самостоятельной работы студентов
- •2.3 Краткие сведения из теории.
- •2.4 Порядок выполнения работы и методические указания по ее выполнению
- •3.1 Краткие сведения из теории по системе Эль-Гамаля
- •3.2.1 Алгоритм формирования эцп
- •3.2.2 Алгоритм проверки эцп.
- •3.4. Порядок выполнения работы и методические указания по ее выполнению
- •1.5. Содержание отчета
- •1.6. Контрольные вопросы и задания
3.2.1 Алгоритм формирования эцп
1. Вычислить (по алгоритму md5, sha1) хэш-функцию сообщения H(M) длиной 256 бит. Если H(M) ( mod Q ) = 0, то H(M)=1.
2. Выработать (генераторами случайных чисел или аппаратно) случайное число K, 0 < K < Q.
3. Вычислить:
R = AK ( mod P );
R' = R ( mod Q ).
Если R'=0, перейти к шагу 2.
4. С использованием секретного ключа X вычислить значение
S = ( X•R' + K•H(M) ) ( mod Q ).
• - знак умножения
5. Если S = 0, перейти к шагу 2, иначе завершить работу алгоритма.
Подписью для сообщения M будет являться вектор (R', S).
(R', S) – отдельные файлы или единое целое большое число.
3.2.2 Алгоритм проверки эцп.
Проверка целостности и подлинности сообщения и подписи производится при наличии открытого ключа Y отправителя.
1. Проверить условия 0 < S < Q и 0 < R' < Q.
Если хотя бы одно из этих условий не выполняется, то подпись считается недействительной.
2. Вычислить хэш-функцию H(M1) принятого сообщения M1.
Если H(M1) ( mod Q ) = 0, то H(M1) = 1.
3. Вычислить значение
V = H(M1) Q-2 ( mod Q ).
4. Вычислить значения
Z1 = S•V ( mod Q );
Z2 = (Q-R') •∙V ( mod Q ).
• - знак умножения
5. Вычислить значение
U = (AZ1 ∙YZ2 ( mod P)) ( mod Q ).
6. Проверить условие R'=U. Если условие выполняется, то получатель принимает решение о том, что полученное сообщение подписано данным отправителем и в процессе передачи не нарушена целостность сообщения, т.е. M = M1. В противном случае подпись считается недействительной.
3.4. Порядок выполнения работы и методические указания по ее выполнению
1. Создайте файл конфигурации системы цифровой подписи. Файл конфигурации должен находиться в рабочем каталоге системы и должен иметь расширение CFG. Имя файла конфигурации может быть любым.
Структура файла конфигурации:
строка 1 – имя пользователя (любая строка длиной до 16 символов)
строка 2 – имя файла секретного ключа X
строка 3 – имя файла открытых ключей Y
строка 4 – имя файла общесетевых параметров A, P, Q.
Пример файла конфигурации:
USER1
x.key
y.key
apq.key
2. Сформируйте общесетевые параметры с помощью программы FORM_APQ.EXE.
Формат командной строки программы:
FORM_APQ –nИМЯ_ПОЛЬЗОВАТЕЛЯ
Определите время генерации.
В файле PROTOKOL.TXT будут записаны значения общесетевых параметров.
3. Сформируйте рабочие ключи, запустив программу FORM_KEY.EXE. Определите время генерации.
Формат командной строки программы:
FORM_KEY –nИМЯ_ПОЛЬЗОВАТЕЛЯ –pПАРОЛЬ
В файле PROTOKOL.TXT будут записаны значения сгенерированных ключей. Регистро-зависимое – имя пользователя и пароль
4. Создайте какой-нибудь файл и сформируйте для него цифровую подпись с помощью команды:
SIGN -s –nИМЯ_ПОЛЬЗОВАТЕЛЯ –pПАРОЛЬ –iИМЯ_ИСХОДНО-ГО_ФАЙЛА -jИМЯ_ФАЙЛА_С_ПОДПИСЬЮ
Параметр -j является необязательным.
В файле PROTOKOL.TXT будут записаны значения промежуточных результатов вычислений.
Определите характер зависимости времени формирования подписи от длины файла.
5. Выполните проверку цифровой подписи с помощью команды:
SIGN -h –nИМЯ_ПОЛЬЗОВАТЕЛЯ –iИМЯ_ИСХОДНОГО_ФАЙЛА -jИМЯ_ФАЙЛА_С_ПОДПИСЬЮ
Параметр -j является необязательным.
В файле PROTOKOL.TXT будут записаны значения промежуточных результатов вычислений.
Определите характер зависимости времени проверки подписи от длины файла.
Исследуйте структуру цифровой подписи (пробовать менять исходный файл и файл с подписью).
6. Исследуйте алгоритм формирования и проверки подписи при различных угрозах (искажение файла, искажение подписи, неправильный пароль и т.д.).
7. Выполните обмен сообщениями между двумя пользователями:
1) Сформируйте два файла конфигурации.
2) Сформируйте общесетевые параметры ТОЛЬКО ДЛЯ ПЕРВОГО ПОЛЬЗОВАТЕЛЯ. Скопируйте файл с общесетевыми параметрами второму пользователю.
3) Сформируйте рабочие ключи пользователей.
4) Выполните обмен открытыми ключами с помощью команд
SIGN -a –nИМЯ_ПОЛЬЗОВАТЕЛЯ_1 –tИМЯ_ПОЛЬЗОВАТЕЛЯ_2 –yИМЯ_ФАЙЛА_С_КЛЮЧОМ_Y_ПОЛЬЗОВАТЕЛЯ_2
SIGN -a –nИМЯ_ПОЛЬЗОВАТЕЛЯ2 –tИМЯ_ПОЛЬЗОВАТЕЛЯ_1 -yИМЯ_ФАЙЛА_С_КЛЮЧОМ_Y_ПОЛЬЗОВАТЕЛЯ_1
5) Выполните формирование подписи для первого пользователя и проверку подписи для второго пользователя. Исследуйте поведение системы при различных угрозах.