ЛАБОРАТОРНАЯ РАБОТА 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.