Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦСП_КП_ЭльГамаль_Расш_поля_Галуа_Шифрование.docx
Скачиваний:
0
Добавлен:
04.02.2026
Размер:
919.17 Кб
Скачать

Глава 4 разработка программного обеспечения микропроцессорного устройства

4.1 Описание алгоритмов и блок-схем

Для работы криптосистемы необходимо сгенерировать ключи. Так как в данном курсовом проекте не рассматривается генерация ключей, они были сгенерированы отдельно вне программы (см. приложение В).

В программе используются прерывания порта SPORT0 RX/TX. Блок схема прерываний SPORT 0 изображена на рисунке 7.

Рисунок 7 - Блок-схема прерывающих подпрограмм SPORT0 для приёма (RX) и передачи (TX)

При входе в прерывание происходит сохранение контекста процессора (переключение на вторичный набор регистров). Для приема данных выполняется копирование из кольцевого буфера порта в рабочий массив и установка флага got_fl. Для передачи (tx_cb) — копирование готового результата из рабочего массива выходных данных в буфер порта.

Для шифрования/расшифрования по алгоритму Эль-Гамаля в расширенных полях Галуа необходимо произвести расчёты, связанные с возведением в степень и умножением.

На рисунке 8 представлена блок-схема операции умножения двух полиномов по модулю неприводимого полинома. Алгоритм реализует метод сдвига и сложения (по модулю 2, операция XOR), совмещенный с приведением по модулю порождающего полинома  на каждом шаге сдвига.

Операция возведения в степень, необходимая для алгоритма Эль-Гамаля, является наиболее ресурсоемкой. Для её оптимизации в разработанном ПО применяется метод, использующий предварительно вычисленный банк степеней [4, с. 29-30].

Алгоритм, показанный на рисунке 9, реализуется в два этапа:

  1. Формирование банка степеней (подпрограмма bank_fill): Вычисляются значения  путем последовательного возведения в квадрат предыдущего значения. Эти 16 значений сохраняются в кольцевом буфере bank_step.

  2. Вычисление результата (подпрограмма UMN_step): Производится перебор битов показателя степени  . Если текущий бит равен 1, то текущее значение результата умножается на соответствующее значение из банка степеней ( ).

Рисунок 8 - Блок-схема алгоритма операции умножения в расширенных полях Галуа

Рисунок 9 – Блок-схема подпрограмм возведения в степень и формирования банка степеней

Основная программа после инициализации переходит в бесконечный цикл ожидания флага got_fl. Как только прерывание устанавливает этот флаг, запускается процедура шифрования ENCRYPT.

Рисунок 10 – общая блок-схема кода и подпрограмма шифровки

4.2 Описание основного программного обеспечения

Полный листинг основной программы приведен в Приложении Б. Программа состоит из секций объявления переменных (.SECTION/DM vars) и исполняемого кода (.SECTION/PM program). Ключевые элементы ПО:

  1. Инициализация: Настройка регистров управления прерываниями (IMASK, ICNTL), конфигурация портов SPORT0 для работы в многоканальном режиме с автобуферизацией и генерация сеансовых ключей.

  2. Основной цикл (MAIN): Опрашивает переменную got_fl. При её установке вызывает подпрограмму шифрования.

  3. Подпрограммы UMN_gf_n и UMN_step: Реализуют умножение в поле Галуа и возведение в степень используя банк степеней (bank_step).

  4. Подпрограмма ENCRYPT: Выполняет алгоритм Эль-Гамаля: вычисляет обратный элемент и производит умножение текста на ключ шифрования.