
- •Министерство цифрового развития, связи и массовых коммуникаций российской федерации
- •Московский технический университет связи и информатики
- •Введение
- •1. Формирование технического задания на составную часть эскизного проекта
- •2. Краткие теоретические основы
- •2.1 Математический аппарат
- •2.2 Распространение ключей в симметричных криптосистемах по алгоритму Диффи-Хелмана
- •3. Разработка и описание функциональной схемы микропроцессорного устройства
- •4. Разработка программного обеспечения микропроцессорного устройства
- •4.1 Генерация ключей
- •4.2 Программный код генерации ключей
- •4.3 Вывод программы генерации ключей
- •4.4 Разработка подпрограммы передачи ключей для абонента c
- •4.5 Программный код для Диффи-Хелмана 3 абонента
- •Программный код 2 – Программный код передачи ключей по потоку e1
- •4.6 Вывод программы Генерации ключей:
- •5. Анализ результатов работы программного обеспечения микропроцессорного устройства
- •Список использованной литературы
- •Приложение 1
- •2 Цель разработки, наименование и обозначение изделия
- •2.1 Цель разработки
- •3 Технические требования к изделию
- •4 Технико-экономические требования
- •5 Требования к видам обеспечения
- •11 Этапы выполнения эскизного проекта
- •12 Порядок выполнения и приемки этапов эскизного проекта
- •Приложение 2
2. Краткие теоретические основы
2.1 Математический аппарат
Для реализации в работе нашего алгоритма мы используем поля Галуа.
Также это поле называют конечным, его суть заключается в том, что данное поле состоит из конечного числа элементов. В полях Галуа используются все математические операции, поэтому вычисления происходит строго по всем математическим нормам. Для работы с алгоритмами мы будем использовать данную формулу:
В данной работе мы используем расширенные поля Галуа, следовательно, все вычисления по полю n будут схожи с простыми полями. Только есть некие особенности, заключающиеся в использовании примитивных полиномов и замены сложения и вычитания на XOR
2.2 Распространение ключей в симметричных криптосистемах по алгоритму Диффи-Хелмана
В симметричных криптосистемах должно быть реализовано:
1. В криптоалгоритмах должна быть обеспечена секретность ключа.
2. Срок защиты исчисляется в зависимости от первого использования ключа.
3. Ключи должны сменяться синхронно.
Для этого должен быть обеспечен либо закрытый канал передачи ключей, либо закрытое хранение банка ключей.
Одним из методов организации закрытого канала передачи ключей является алгоритм Диффи – Хелмана.
Алгоритм Диффи – Хелмана основан на значительно более высокой сложности операции определения целочисленных логарифмов в конечных полях в сравнении с вычислительной сложностью операции возведения в степень.
Данный алгоритм решает задачу формирования общего секретного ключа для двух и более количества абонентов.
Процесс взаимодействий при формировании осуществляется в следующем порядке:
Выбирается число n, которое является полиномом и достаточно большим в нашем случае, чтобы мы могли работать в 16 разрядном поле.
Выбирается число g, которое соответствует диапазону:
Числа g и n являются открытыми, поэтому и могут передаваться по каналам. Число g формируется на вход программы.
Далее каждый из абонентов формирует большое целое число.
Генерация ключей выполняется отдельно от программы распределения ключей. Каждый абонент формирует ключ с помощью генератора на Python. Далее уже выполняется распределение. В генераторе мы определяем открытый ключ n, который является модулем поля, а также индивидуальный ключ для каждого из абонентов: x, y или z.
Абонент А формирует целое число x и вычисляет:
Абонент B формирует целое число y и вычисляет:
Абонент C формирует целое число z и вычисляет:
Далее
каждый из абонентов передаёт свои
сообщения по кругу, согласно решению
самих абонентов. Например,
После передачи абоненты продолжают вычисления с новыми числами, формируя новые:
И последней итерацией их обмена становятся вычисления:
Секретным сообщением для абонентов A, B и C является ключ:
3. Разработка и описание функциональной схемы микропроцессорного устройства
Микропроцессорная криптосистема представляет собой универсальное аппаратно-программное решение для защиты информации с возможностью “разрывного” подключения к первичному цифровому потоку E1. Рисунок 1 показывает функциональную схему микропроцессорной криптосистемы абонента А, основанной на сигнальном процессоре ADSP-2181.
Рисунок 1 - Функциональная схема микропроцессорного устройства абонента А
В микропроцессорной криптосистеме программные инструкции выполняются сигнальным процессором, а само программное обеспечение хранится в энергонезависимой памяти, так как при каждом отключении питания содержимое памяти процессора стирается. При перезапуске система должна была бы снова программировать процессор. При перезагрузке программа автоматически считывается из энергонезависимой памяти во внутреннее ОЗУ процессора и начинается выполнение программы. Взаимодействие с энергонезависимой памятью обеспечивается через микроконтроллер.
Трансивер первичного цифрового потока представляет собой специализированный микропроцессор, ориентированный на работу с цифровым потоком E1, поступающим на его вход. Входное сопротивление каждого трансивера согласуется с сопротивлением линии посредством включения трансформаторов Тр. Параметры работы трансивера управляются микроконтроллером.
Архитектура включает два последовательных порта (SPORT0 и SPORT1), которые используются для взаимодействия с внешними устройствами в последовательном режиме. Этот режим предполагает вывод информации через один провод и одновременный ввод через другой провод, бит за битом, на предварительно заданной скорости или управляемый внешним генератором.
Передача и прием информации через последовательные порты ADSP-2181 начинается со старшего бита, в отличие от последовательных портов, используемых в микроконтроллерах для связи с компьютерами. Функциональная схема последовательных портов представлена на Рисунке 2:
Рисунок 2 – Схема включения микропроцессора в поток E1
В этой курсовой работе мы будем использовать последовательные порты. Сообщения будут передаваться через последовательные порты SPORT0, которые предназначены для соединения с потоком E1. В этом проекте SPORT0 используется для шифрования и дешифрования. На Рисунке 3 показана типовая функциональная схема включения последовательного порта ADSP-2181 для разрыва одного из каналов передачи потока E1 с использованием приемопередатчика.
Рисунок
3 - Функциональная схема включения
микропроцессора в поток Е1
На этом рисунке обозначены следующие выводы приемопередатчика ПП:
RTIP, RRING – вход по потоку Е1;
TTIP, TRING - выход по потоку Е1;
RSER – выход принимаемого сигнала в коде БВН(NRZ);
TSER – вход передаваемого сигнала в коде БВН(NRZ);
RCLK – выход тактового синхросигнала тракта приема;
TCLK – вход тактового синхросигнала тракта передачи; SYSCLK - выход циклового синхросигнала.
Вывод циклического сигнала на SYSCLK можно программировать и устанавливать активное значение его логического уровня. По умолчанию циклический сигнал SYSCLK установлен как активный логический уровень (1).
Обработка сигнала группы канальных интервалов (в данном случае КИ1...КИ31) потока Е1 подразумевает использование функции автобуферизации для приема/передачи, что позволяет использовать циклическую обработку. Для связи с потоком можно использовать многоканальную функцию порта SPORT 0, при этом все операции приема/передачи отдельных канальных интервалов будут выполняться аппаратно и не потребуют реакции программы.
Программа будет реагировать на прерывания «передатчик пуст» SPORT0 ПД (адрес 0х10) и «приемник полон» SPORT0 ПМ (адрес 0х14).
Прием и передача данных через порт осуществляются синхронно. Прерывание «передатчик пуст» будет генерироваться раньше, чем «приемник полон». Интервал времени между этими прерываниями примерно равен длительности одного канального интервала 3,9мкс.
Обновление информации в буферах портов происходит при приеме/передаче канальных интервалов. В случае обращения к информации программой в произвольный момент времени, не гарантируется получение обновленного значения или запись в буфер с потерей данных. Для избежания таких ситуаций рекомендуется использовать принцип двойного буферирования, как показано на рис. 4.
Рисунок 4 – Буферирование с помощью SPORT0
Функция автобуферирования использует буферы rx_buf и tx_buf для приема и передачи текущих отсчетов потока через регистры ГАД I0 и I1 соответственно. Для двойного буферирования также используются буферы vhod и vihod в программе обработки.
По окончании цикла формируется запрос на прерывание "передатчик пуст". Подпрограмма обработки должна немедленно переписать результаты обработки из буфера vihod в буфер tx_buf.
Через 3,9 мкс формируется запрос на прерывание "приемник полон". Подпрограмма должна немедленно переписать содержимое буфера rx_buf (канальные интервалы КИ1..КИ31) в буфер vhod.