ЛАБОРАТОРНАЯ РАБОТА 7 ИЗУЧЕНИЕ ПАКЕТА ДЛЯ ТЕОРЕТИКО-ЧИСЛОВЫХ РАСЧЕТОВ "UBASIC" И

advertisement
ЛАБОРАТОРНАЯ РАБОТА 7
ИЗУЧЕНИЕ ПАКЕТА ДЛЯ ТЕОРЕТИКО-ЧИСЛОВЫХ РАСЧЕТОВ "UBASIC" И
ПОСТРОЕНИЕ НА ЕГО ОСНОВЕ АЛГОРИТМА ЦИФРОВОЙ ПОДПИСИ ЭЛЬ-ГАМАЛЯ
ЦЕЛЬ РАБОТЫ:
практическое
освоение
пакета для теоретико-числовых расчетов
"UBASIC" и построение на его основе алгоритма цифровой подписи Эль-Гамаля.
Введение
Пакет
"UBASIC"
приспособленную
представляет
собой
версию
языка программирования
Basic,
для написания теоретико-числовых программ. Особенностью пакета
является возможность работы с большими ?до 2600 десятичных знаков% числами и наличие
встроенных функций, реализующих модульные операции с числами большой размерности. Эти
особенности делают пакет "UBASIC" очень удобным для
реализации криптографических
алгоритмов открытого распределения ключей и цифровой подписи. Кроме того, в состав
пакета включены такие полезные для криптографа программы, как программы тестирования
целых чисел на простоту, факторизации целых чисел и многочленов. К достоинствам пакета
относится также довольно большая скорость реализации операций модульной арифметики с
большими числами.
Пакет
"UBASIC"
представляет
интерес
для криптографа, поскольку позволяет
опробовать на практике криптографические алгоритмы,
довольно сложно
обычными средствами программирования. С
его помощью можно,
криптографическое
для
реализующего
ядро
предлагаемого
открытое распределение ключей
реализуемые
например, проверить
эксплуатации программного
и цифровую
подпись, на
продукта,
соответствие
аннонсируемому криптографическому алгоритму.
Для
запуска программы
наберите "UB.bat".
При этом при нажатии
"Ctrl"+"
В процессе лабораторной работы предлагается для освоения простейших
навыков
высвечивается подсказка по основным командам языка.
работы с пакетом создать программу, реализующую основные криптографические элементы
схемы цифровой подписи.
Краткое описание схемы цифровой подписи по Эль-Гамалю
Общая информация:
P - простое число, a - произвольное целое число 1<a<P;
абонент 1 имеет информацию:
секретную
I1 - секретный идентификатор;
пароль - обеспечивает доступ к ключевой дискете;
открытую
R2=a**I2 mod P - открытый идентификатор абонента 2;
абонент 2 имеет информацию:
секретную
I2 - секретный идентификатор;
пароль - обеспечивает доступ к ключевой дискете;
открытую
R1=a**I1 mod P - открытый идентификатор абонента 1;
абонент 1 подписывает сообщение M и посылает абоненту 2:
1) вырабатывает случайный разовый ключ Y, 1<Y<P,
(Y,P-1)=1;
2) вычисляет открытый разовый ключ
E=a**Y mod P;
3) вычисляет значение Хэш-функции от сообщения M:
m=H(M);
4) вычисляет значение цифровой подписи сообщения M:
S=(1/Y)*(m-I1*E) mod (P-1);
5) передает по каналу связи сообщение M, открытый разовый ключ E, значение
Хэш-функции m и собственно значение цифровой подписи S, при этом предполагается, что у
получателя сообщения есть
открытый идентификатор абонента 1 для проверки цифровой
подписи;
абонент 2 проверяет подпись сообщения [M,E,m,S], полученного от абонента 1:
1) V1=a**m mod P;
2) V2=(R1**E)*(E**S) mod P;
3) проверяет на равенство числа V1 и V2.
1. Рабочее задание
Написать программу на языке "UBASIC", реализующую алгоритм цифровой подписи
по Эль-Гамалю. Для упрощения задания не нужно высчитывать значения Хэш-функции и
задавать случайные значения Y.
2. Выполнение задания
2.1. Составить программу в любом текстовом редакторе. Файл с программой должен
иметь расширение UB, например, PROG.UB .
Каждое предложение должно быть пронумерованно, например, чтобы задать в качестве
P простое число Мерсена 2**521-1 и в качестве числа A значение 2^500-1, следует записать
10 P=2^521-1
20 A=2^500-1
При реализации алгоритма используйте встроенные функции языка, осуществляющие
модульные операции:
Y=MODINV(X,P) возвращает обратное по модулю P;
Y=MODPOW(A,X,P) возвращает Y=A**X mod P.
Для вывода значения X на экран используется команда
PRINT X
В качестве начальных значений алгоритма используйте
P=2^521-1
A=2^500-1
Y=2^127-1
m=77777
В качестве секретного идентификатора I1 используйте первые 5 букв Вашей фамилии,
замененные по порядковому коду (А=1, Б=2, В=3, ...), при этом не нужно высчитывать значения
Хэш-функции и задавать случайные значения Y.
2.2. После написания программы войти в "UBASIC":
UB.BAT .
2.3. Набрать команду load "PROG".
2.4. Запустить программу на обработку командой run.
2.5. Не забудьте сохранить текст программы командой
save "PROG".
В качестве контрольного примера используйте значение идентификатора
I1=12345
Вы должны получить результат:
ъ)Р S=440<14311611.....
V1=V2=335718450299…..
2.6. Выход в DOS осуществляется командой system.
2.7. Написать отчет.
3. Оформление отчета
В качестве отчета представить текст программы и значения
I1 = ?
S=?
для начальных значений из п.2.1.
Download