Материал: Разработка аппаратно-программного комплекса для безопасной передачи сообщения, с использованием алгоритмов шифрования и электронно-цифровой подписи

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рис. 3. Классификация протоколов распределения ключей.

Так как сообщение будет шифроваться с помощью симметричного алгоритма AES, следует выбрать протокол, основанный на асимметричной криптосистеме. В этом случае у нас получится гибридная криптосистема, не требующая защищенного канала, так как асимметричные схемы используют пару ключей: открытый и закрытый.

Также следует учесть то, что для каждого сообщения должен быть свой уникальный ключ, который будет невозможно восстановить по предыдущем сеансам, поэтому наш протокол должен обладать динамическим распределением.

Таким образом, учитывая эти два критерия, для решения поставленной задачи подходят протоколы Диффи-Хеллмана, Эль-Гамаля, MTI, STS, Gunther. Далее проведем сравнительный анализ выбранных протоколов (табл. 7).

Таблица 7.

Сравнительный анализ протоколов распределения ключей

Параметры

Диффи-Хеллман

Эль-Гамаль

MTI

STS

Аутентификация сторон

-

-

-

Взаимная

Подтверждение ключа

-

-

-

-

Уязвимость к пассивным/активным атакам

+/-

+/-

+/-

+/-

Дополнительный обмен сообщениями

+

+

+

+

Дополнительно

Удобно использовать вместе с симметричными шифрами

Для получения ключа использует схему Диффи-Хеллмана

Есть неявная аутентификация ключа

В алгоритме используется цифровая подпись


Основываясь на данной таблице, схема Эль-Гамаля не подходит, так как ключ вычисляется так же, как в протоколе Диффи-Хеллмана, а сообщение шифруется путем умножения его на полученный ключ [5]. Протокол STS более защищенный, чем остальные, но в данной работе уже поставлена задача реализации цифровой подписи. Целесообразно выбрать протокол Диффи-Хеллмана, несмотря на то, что он менее всего защищен. Данный протокол прост в реализации, а недостатки защиты компенсирует цифровая подпись.

Протоколы транспортного уровня

По поставленной задаче необходимо реализовать соединение между двумя ПК, чтобы они могли обмениваться сообщениями. Для соединения и обмена данными между двумя устройствами, подключенных к сети, используются сетевые протоколы. Данные протоколы определяют правила, по которым должны работать подключенные к сети устройства. Сетевые протоколы описывает модель OSI, представленная на рис. 4.

Рис. 4. Модель OSI.

Транспортный уровень предназначен для доставки данных. Примерами таких протоколов являются TCP и UDP. Сравнительная характеристика [1] данных протоколов представлена на рис. 5.

Рис. 5. Сравнительная характеристика UDP и TCP [1].

Таким образом, были выбраны соответствующие поставленной задачи решения. В качестве алгоритма для шифрования/расшифровки сообщений будет использован алгоритм AES, для получения ключа для алгоритма шифрования/расшифровки будет использован протокол Диффи-Хеллмана, а доставка данных будет реализована с помощью протокола TCP.

Описание комплекса

Имеется 3 устройства. С помощью открытого распределения ключей формируется секретный ключ для шифрования и расшифровки сообщения на ПК(1) и ПК(2), соответственно. На ПК(1) генерируется или задается пользователем сообщение, которое в дальнейшем шифруется с помощью секретного ключа по алгоритму AES. Потом происходит отправка толькозашифрованного сообщения на ПЛИС через UART. После получения зашифрованного сообщения ПЛИС с помощью алгоритма RSA и закрытого ключа, хранящегося на ПЛИС, формирует ЭЦП и отправляет зашифрованное сообщение и ЭЦП на ПК(2). ПК(2) получает сообщение и ЭЦП от ПЛИС, проверяет ЭЦП с помощью открытого ключа и расшифровывает сообщение с помощью секретного ключа, полученного в результате открытого распределения ключей. В данной работе размер ключа для алгоритма AES составляет 256 бит, для алгоритма RSA 256 бит Комплекс показан на рис. 6.

Рис. 6. Схема комплекса.

Уязвимости комплекса

Секретный ключ, хранящийся на ПК(1) и ПК(2)никак не защищен от взлома. Если его узнает враг он сможет расшифровать сообщение, а так же подменить и послать его в ПЛИС по каналу(1). ПЛИС не имеет возможности проконтролировать данные на входе, поэтому подпишет измененные данные врагом и отправит в ПК(2), из-за чего ПК(2) примет неправильные данные, но убедится в правильности ЭЦП (так как процесс шифрования сообщения не зависит от ПЛИС) и расшифрует злонамеренную информацию.

Преимущества

ЗК(2) враг не может узнать в любом случае, так как он хранится только на ПЛИС и в других участках он не фигурирует. Не имея ЗК(1) и ЗК(2), проникнув в канал(1) или канал(2), увидит: в первом случае зашифрованное сообщение, однако расшифровать он его не сможет; во втором случае зашифрованное сообщение и ЭЦП. Подменить сообщение или ЭЦП он не сможет, так как ПК(2) проверит ЭЦП и выявит подмену.

Состав и параметры технических средств

Выбор ПЛИС

Для выполнения данной работы использовались 2 отладочные платы. Первой отладочной платой является TerasicDE1-SoC. Её структурная схема показана на рис. 7.

Рис. 7. Схема De1-SoC.

Для конфигурации «зашивки» ПЛИС на плате имеются:- EPCQ256 onFPGA (Интерфейс для сохранение «зашивки» на ПЛИС при потере электропитания).BoardUSBBlasterII (NormaltypeBUSBconnector) (Интерфейс для передачи файла «зашивки» с ПК на ПЛИС).

Память, имеющаяся на отладочной плате:

MB (32Mx16) Память на ПЛИС.

GB (2x256Mx16) Память DDR3 на микропроцессоре.разъем на микропроцессоре.

Периферия, имеющаяся на отладочной плате:

Altera Cyclone® V SE 5CSEMA5F31C6N ПЛИС

4 пользовательскихкнопки.

свитчей.

пользовательских светодиодов.

7-сегментных индикаторов.

50МГц источников синхроимпульсов.

-битный аудиокодек с линейным входом, выходом и микрофонным входом..декодер./2 вход для мыши/клавиатуры.приемник и IR эмиттер.

40-пиновых пользовательских входов/выходов./D конвертер, 4-разрядный SPI интерфейс для ПЛИС. (Hard Processor System)

Двух ядерный ARMCortex-A9 MPCore процессор с частотой 800МГц.

Гбайт DDR3 память(32-разрядная шина данных)

Гигабитный Ethernet с RJ-45 разъемом.

-портовый USB сервер.SD разъем.

Акселерометр (I2C интерфейс + прерывания).

UART-USB, USB Mini-B.

Сигнал Reset для процессора.

Одна пользовательская кнопка и один пользовательский светодиод. 2x7 выход.

Структурная схема DE1-SoC показана на рис. 8.

Рис. 8. Структурная схема DE1-SoC.

Следует отметить, что в данной работе необходимо передавать пакеты по Ethernet, а на DE1-SoC разъем Ethernet подключен только к микропроцессору и напрямую из ПЛИС получить к нему доступ невозможно.

Вторая отладочная плата разработана и изготовлена в АО «Концерн «Автоматика». Ячейка имеет рабочее название ММ693 и не является секретной. Её схема показана на рис. 9. Схема расположения пинов платы находится в приложении.

Рис. 9. Схема MM693.

На ячейке находятся 4 трансивера AFBR-5701Z, 2 трансивера AFBR-5705Z, два чипа TLK2211, питание, 8 пользовательских светодиодов, 4 пользовательских свитча и ПЛИС марки AlteraCyclone 5.

Два трансивера подключены напрямую в ПЛИС дифференциальными парами для приема и передачи. Скорость приема/передачи равна 1.25Гбит в секунду. Следует заметить, что трансивер подключается к ПК через оптоволокно и медиаконвертер, а не напрямую через кабель RJ-45. Два других трансивера подключены к двум чипам TLK2211 соответственно. Схема чипа TLK2211 показана на рис. 10.

Рис. 10. Чип TLK2211.

Так как ячейка разработана для экспериментов и не будет участвовать в дальнейшей разработке аппаратуры было принято решение подключить трансиверы к чипу, хотя на практике на этой ячейке это не имеет большой пользы, можно получать/отправлять данные напрямую в трансивер с ПЛИС минуя чип, следовательно, в данной работе будет использоваться только трансивер AFBR-5701Z, который напрямую подключен к ПЛИС.

Два последних трансивера имеют на входе два оптоволоконных кабеля и в работе рассматриваться не будут.

Так же на плате установлены кварцевые генераторы синхроимпульсов:3 генератора на 25МГц, 2 генератора на 100Мгц.

Выбор коммутационного оборудования

Для связи двух ПК с ПЛИС необходимы различные транспортные кабели, питание для ПЛИС, оборудование для «прошивки» ПЛИС и тд.

Для открытого распределения ключей необходима гигабитная сетевая карта на обоих ПК. Так же, для связи ПК(2) с ПЛИС необходима еще одна сетевая карта. Для таких задач вполне подходит стандартная сетевая карта, Realtek PCIe GBE Family Controller, например RTL8111B.

Для открытого распределения ключей и связи ПЛИС с ПК(2) необходимо два кабеля RJ-45. Схема кабеля показана на рис. 11.

Рис. 11. Структура кабеля RJ-45.

Для приема сообщений с ПК(1) на ПЛИС необходим кабель последовательного приемо-передатчика UART. Для данной задачи был выбран кабель FT-232. Структура кабеля показана на рис. 12.

Рис. 12. Сигналы FT-232.

На DE1-SoC находится коннектор USBBlasterII, который позволяет «прошивать» ПЛИС с ПК, подключив её кабелем USB-AMBM. Для MM693 необходим программатор AlteraUSBBlaster, который подключается к ПЛИС и к ПК с помощью кабеля MiniUSB.

Средства разработки и отладки

является основным программным продуктом фирмы Altera. Именно с помощью него разрабатываются проекты под ПЛИС. Программный пакет обладает не только средствами для синтеза проекта и его непосредственной «зашивки» в ПЛИС, но и имеет большое количество средств для отладки и верификации. Окно проекта показано на рис. 13.

Рис. 13. Рабочее окно QuartusII.

Для моделирования проекта предполагается использовать ModelSim. ModelSim довольна мощная среда для симуляции и отладки программ на HDL языках. При своей относительно скромной ресурсоемкости эта среда отлично подходит для разработки описаний алгоритмов работы цифровых устройств, при этом она может быть подключена к системам проектирования на ПЛИС и использована как мощный отладчик, вместо, довольно скромных по возможностям, встроенных симуляторов. Пример окна ModelSim показан на рис. 14.

Рис. 14. ModelSim

В состав комплекта ПО Altera QuartusII входит логический анализатор SignalTap. Его использование возможно только с микросхемами FPGA, которые имеют встроенные блоки памяти. На самом деле SignalTap предоставляет огромные возможности по отладке проектов. По сути дела он позволяет заглянуть внутрь микросхемы и посмотреть на временные диаграммы интересующих нас сигналов. В DE1-SoC и в ММ693 установлены крайне производительные и мощные кристаллы, следовательно использование SignalTap вместе с ModelSim вполне оправдано. Окно SignalTap показано на рис. 15.

Рис. 15. Окно AlteraSignalTap.

Для написания приложения для отправки/приема шифрования/расшифрования была выбрана среда разработки VisualStudio 2015. VisualStudio позволяет писать приложения на нескольких языках программирования (Basic, C#, C++, F#, Jscript), имеет встроенный отладчик, который отлаживает и коды высокого уровня и машинные коды. Так же VisualStudio имеет возможность использовать WindowsForms, выступать в роли редактора баз данных, веб редактора и т.д. Пример окна VisualStudio показан на рис. 16.

Рис. 16. Окно VisualStudio.

Описание решения поставленной задачи

Шифрование и расшифровка сообщения

Путем анализа существующих алгоритмов шифрования для данной работы был выбран алгоритм AES. Данный алгоритм используется Агентством национальной безопасности США. Длина ключа для секретной информации составляет 128 бит, а для особо секретной информации используется ключ с длиной 192 или 256 бит [14]. Таким образом для нашей задачи будет достаточно длины ключа в 128 бит.

Перед тем, как приступить к описанию алгоритма необходимо ввести некоторые обозначения: - это массив байтов, являющийся промежуточным результатом шифрования. Массив имеет 4 стройки и Nb колонок. Каждая ячейка массива State содержит в себе значение размером в 1 байт.- число столбцов State. Для AES данное значение регламентировано, Nb = 4.- длина ключа в 32-х битных словах. В зависимости от размера ключа, Nk = 4, 6, 8. Соответственно, для нашего ключа (128 бит) Nk = 4.- количество раундов. Nr также зависит от длины ключа и может принимать значения: 10, 12 или 14. Для 128-битного ключа Nr = 10.

Алгоритм имеет четыре трансформации, работающих над массивом State: SubBytes(), ShiftRows(), MixColumns(), AddRoundKey() [15]. Массив State заполняется входными данными по колонкам, то есть State[r][c] = input[r + 4c], где r = 0, 1 … 4; c = 0, 1 … Nb. Пример заполнения Stateприведен на рис.17. Теперь рассмотрим схемы работы каждой из четырех трансформаций.

Рис. 17. Пример заполнения State.

()

Данная трансформация оперирует с константной таблицей Sbox (рис. 18). На данном этапе каждое значение массива State заменяется на соответствующий элемент таблицы Sbox.

Рис. 18. Константная таблица Sbox.

Каждый элемент из State может быть представлен в виде {xy}. Тогда замена происходит на элемент таблицы Sbox, стоящий на пересечении строки x и столбца y. Например, {0x6f} будет заменено на {0xa8}, {0x20} будет заменено на {0xb7}.()

В данной трансформации производится циклический сдвиг влево строк State. В нулевой строке сдвига не происходит, в первой строке происходит сдвиг на 1 элемент, во второй на 2 элемента и в третьей строке сдвиг на 3 элемента. Схема работы данной трансформации представлена на рис. 19.

,

Рис. 19. Схема работы трансформации ShiftRows().

()

В ходе данной трансформации каждая колонка State представляется в виде многочлена и перемножается в поле Галуа GF(28) по модулю x4 + 1 с фиксированным многочленом 3x3 + x2 + x + 2.

Каждый байт таблицы State является элементом конечного поля GF(28). Элементами этого поля являются многочлены с максимальной степенью 7. Например, байт {1, 0, 1, 1, 0, 0, 1, 1} соответствует элементу поля 1x7 + 1x5 + 1x4 + 1x1 + 1. Так как мы работает с элементами этого поля, то стандартные правила сложения и умножения не работают. Приведем правила, необходимые для нашей трансформации:

Сложение эквивалентно операции XOR.

При умножении на {0x01} умножаемое не изменяется.