- •Введение
- •Глава 1 формирование технического задания на составную часть эскизного проекта
- •Глава 2 краткие теоретические основы
- •Глава 3 разработка и описание функциональной семы микропроцессорной криптографической системы
- •Глава 4 разработка программного обеспечения микропроцессорного устройства
- •4.1 Описание алгоритмов и блок-схем
- •4.2 Описание основного программного обеспечения
- •4.3 Демонстрационное программное обеспечение и отладка
- •Глава 5 анализ результатов работы программного обеспечения микропроцессорного устройства
- •5.1 Оценка корректности функционирования программного обеспечения
- •5.2 Надежность и устойчивость работы
- •5.3 Выводы по результатам анализа
- •Заключение
- •Список использованных источников
- •Приложение а техническое задание
- •1. Наименование, шифр, основание, исполнитель и сроки выполнения эскизного проекта
- •2 Цель разработки, наименование и обозначение изделия
- •2.1 Цель разработки
- •3 Технические требования к изделию
- •4 Технико-экономические требования
- •5 Требования к видам обеспечения
- •11 Этапы выполнения эскизного проекта
- •12 Порядок выполнения и приемки этапов эскизного проекта
- •Приложение б текст основной программы шифрования
- •Приложение г текст дополнительной программы для демонстрации выполения заданных функций мпкс
- •Приложение д инструкция по работе с мпкс
Глава 4 разработка программного обеспечения микропроцессорного устройства
4.1 Описание алгоритмов и блок-схем
Для работы криптосистемы необходимо сгенерировать ключи. Так как в данном курсовом проекте не рассматривается генерация ключей, они были сгенерированы отдельно вне программы (см. приложение В).
В программе используются прерывания порта SPORT0 RX/TX. Блок схема прерываний SPORT 0 изображена на рисунке 7.
Рисунок 7 - Блок-схема прерывающих подпрограмм SPORT0 для приёма (RX) и передачи (TX)
При входе в прерывание происходит сохранение контекста процессора (переключение на вторичный набор регистров). Для приема данных выполняется копирование из кольцевого буфера порта в рабочий массив и установка флага got_fl. Для передачи (tx_cb) — копирование готового результата из рабочего массива выходных данных в буфер порта.
Для шифрования/расшифрования по алгоритму Эль-Гамаля в расширенных полях Галуа необходимо произвести расчёты, связанные с возведением в степень и умножением.
На рисунке 8 представлена
блок-схема операции умножения двух
полиномов по модулю неприводимого
полинома. Алгоритм реализует метод
сдвига и сложения (по модулю 2, операция
XOR), совмещенный с приведением по модулю
порождающего полинома
на каждом шаге сдвига.
Операция возведения в степень, необходимая для алгоритма Эль-Гамаля, является наиболее ресурсоемкой. Для её оптимизации в разработанном ПО применяется метод, использующий предварительно вычисленный банк степеней [4, с. 29-30].
Алгоритм, показанный на рисунке 9, реализуется в два этапа:
Формирование банка степеней (подпрограмма bank_fill): Вычисляются значения
путем последовательного возведения в
квадрат предыдущего значения. Эти 16
значений сохраняются в кольцевом
буфере bank_step.Вычисление результата (подпрограмма UMN_step): Производится перебор битов показателя степени
.
Если текущий бит равен 1, то текущее
значение результата умножается на
соответствующее значение из банка
степеней (
).
Рисунок 8 - Блок-схема алгоритма операции умножения в расширенных полях Галуа
Рисунок 9 – Блок-схема подпрограмм возведения в степень и формирования банка степеней
Основная программа после инициализации переходит в бесконечный цикл ожидания флага got_fl. Как только прерывание устанавливает этот флаг, запускается процедура шифрования ENCRYPT.
Рисунок 10 – общая блок-схема кода и подпрограмма шифровки
4.2 Описание основного программного обеспечения
Полный листинг основной программы приведен в Приложении Б. Программа состоит из секций объявления переменных (.SECTION/DM vars) и исполняемого кода (.SECTION/PM program). Ключевые элементы ПО:
Инициализация: Настройка регистров управления прерываниями (IMASK, ICNTL), конфигурация портов SPORT0 для работы в многоканальном режиме с автобуферизацией и генерация сеансовых ключей.
Основной цикл (MAIN): Опрашивает переменную got_fl. При её установке вызывает подпрограмму шифрования.
Подпрограммы UMN_gf_n и UMN_step: Реализуют умножение в поле Галуа и возведение в степень используя банк степеней (bank_step).
Подпрограмма ENCRYPT: Выполняет алгоритм Эль-Гамаля: вычисляет обратный элемент и производит умножение текста на ключ шифрования.
