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

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,23 Мб
  • Опубликовано:
    2017-09-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Введение

Проблема защиты данных от посторонних лиц волнует человечество с древних времен, история криптографии насчитывает около четырех тысяч лет. До середины 70-х годов XX века использовались шифры, основанные на замене исходного алфавита, а после начался переход к математической криптографии. Настоящим прорывом в области криптографии стало появление нового направления - криптографии с открытом ключом (асимметричное шифрование), что привело кпоявлению новых возможностей в шифровании. С появлением свободного доступа в интернет криптография стала широко использоваться частными лицами.

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

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

Для достижения данной цели поставлены следующие задачи:

Анализ существующих технических решений в области проектирование систем шифрования.

Выбор и обоснование методов решения.

Разработка модуля ввода сообщения для дальнейшего шифрования на ПК (1).

Разработка модуля шифрования сообщения на ПК (1).

Реализация модуля передачи зашифрованного сообщения с ПК (1) на ПЛИС.

Разработка модуля приема зашифрованного сообщения и электронно-цифровой подписи с ПЛИС на ПК (2).

Разработка модуля расшифровки сообщения после проверки подлинности электронно-цифровой подписи с ПЛИС на ПК (2).

Разработка прототипа устройства и программного обеспечения для исследования/тестирования разрабатываемой системы на ресурсозатратность и быстродействие, верификация устройства.

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

Анализ существующих решений

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

Алгоритмы шифрования

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

Основным принципом симметричного шифрования является условие, что контактирующие стороны заранее знают алгоритм шифрования и ключ, который необходимо хранить в секрете, так как для шифрования и расшифровки используется один и тот же ключ. Наглядная схема работы симметричной криптосистемы представлена на рис. 1.

Рис. 1. Схема работы симметричной криптосистемы.

В настоящее время существует два вида симметричных шифров [1]: блочный и поточный. Блочные шифры обрабатывают входной документ блоками (чаще всего по 64 или 128 бит), к каждому блоку применяются определенные преобразования, определенные алгоритмом. Блочным шифрам присущ лавинный эффект - это понятие означает, что изменение битов в исходном тексте или ключе ведет к изменению битов в выходном документе. В поточных шифрах преобразование производится над каждым байтом исходного текста с использованием гаммирования.

Далее рассмотрим следующие алгоритмы: AES, DES, Blowfish, CAST-256, ГОСТ Р 34.12-2015 (Кузнечик).(AES), также известный как Rijndael был создан в 1998 году двумя бельгийскими криптографами Винсентом Рэйменом и Йоаном Дайменом. В 1997 году Национальный институт стандартов и технологий США объявил конкурс для выбора нового криптографического стандарта. В результате конкурса в 2000 году победителем стал Rijndael и впоследствии был объявлен стандартом шифрования [2].

Общие характеристики AES представлены в таблице ниже (табл. 1).

Таблица 1.

Характеристики AES

ПараметрЗначениеТип шифраБлочный, SP-сетьРазмер блока128 битРазмер ключа128/192/256 битЧисло раундов10/12/14 (в зависимости от размера ключа)КриптостойкостьПо состоянию на 2011 год осуществить взлом шифра на практике невозможен [3]СкоростьВысокая [4]

После анализа всех характеристик и особенностей алгоритма, можно сказать, что AES - быстрый и надежный алгоритм с простой математической структурой. Несмотря на то, что он использует простые преобразования, шифр до сих пор взломать не удалось. Недостатки у AES имеются, но они относятся ко всем симметричным алгоритмам - это сложность обмена ключами, так как нужен секретный канал для передачи данных.(DES) был разработан фирмой IBM и утвержден правительством США как официальный стандарт в 1977 году. На данный момент этот алгоритм уже не является государственным стандартом, но по-прежнему широко используется [5].

Общие характеристики DES представлены в таблице ниже (табл. 2).

Таблица 2.

Характеристики DES

ПараметрЗначениеТип шифраБлочный, сеть ФейстеляРазмер блока64 битРазмер ключа56 бит + 8 проверочныхЧисло раундов16КриптостойкостьПри наличии подходящего оборудования шифр может быть взломан за приемлемое время [5, 6]СкоростьНевысокая [4]

Данный алгоритм хорошо изучен и прост в реализации, но его использование не даст надежной защиты, так как он легко взламывается на современных машинах.был разработан Брюсом Шнайером в 1993 году. Данный алгоритм появился по той причине, что все существовавшие на тот момент алгоритмы, были либо секретными, либо недоступными для свободного использования, либо ненадежными. Таким образом, Blowfish стал свободной альтернативой другим алгоритмам.

Характеристики алгоритма представлены в таблице ниже (табл. 3).

Таблица 3.

Характеристики Blowfish

ПараметрЗначениеТип шифраБлочный, сеть ФейстеляРазмер блока64 битРазмер ключаПеременная длина ключа (от 32 до 448 бит)Число раундов16КриптостойкостьПо состоянию на 2012 год успешные атаки возможны только из-за ошибок реализации [7]СкоростьВысокая [4]

У данного алгоритма много достоинств: он быстрый, компактный, прост в реализации, криптостойкий. Данный алгоритм подходит для шифрования важных файлов, но не подходит для систем, где требуется частая смена ключей. Помимо этого, он потребляет много оперативной памяти при работе [8].

Алгоритм CAST-256 (CAST6) был создан Карлайлом Адамсом и Стаффордом Таверсом, специалистами канадской компании EntrustTechnologies, в 1998 году на основе алгоритма CAST-128. Данный алгоритм был опубликован в качестве кандидата на участие в конкурсе AES [1]. CAST-256 доступен для свободного использования в коммерческих и некоммерческих целях.

Характеристики алгоритма представлены в таблице ниже (табл. 4).

Таблица 4.

Характеристики CAST-256

ПараметрЗначениеТип шифраБлочный, сеть ФейстеляРазмер блока128 битРазмер ключа128/160/192/224/256 битЧисло раундов48КриптостойкостьУязвимость не доказана [9]СкоростьСредняя [9]

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

ГОСТ Р 34.12-2015

ГОСТ Р 34.12-2015 («Кузнечик») был разработан Центром защиты информации и специальной связи ФСБ России при участии ОАО «ИнфоТеКС». Данный шифр является стандартом с 1 января 2016 года [1]. Данный алгоритм является усовершенствованным вариантом алгоритма AES [11, 12].

Характеристики алгоритма представлены в таблице ниже (табл. 5).

Таблица 5.

Характеристики «Кузнечика»

ПараметрЗначениеТип шифраБлочный, SP-сетьРазмер блока128 битРазмер ключа256 битЧисло раундов10КриптостойкостьУязвимость не доказана [11]СкоростьВысокая [11]

Данный алгоритм имеет много достоинств: высокая криптостойкость, высокая скорость, меньшее количество итераций по сравнению с AES. С другой стороны, данный алгоритм был опубликован недавно и изучен недостаточно, а также более сложный в реализации.

Исходя из данных, представленных выше, следует, что наиболее подходящий алгоритм шифрования для реализации - AES. Он прост в реализации, имеет высокую скорость и высокую стойкость.

Алгоритм RSA

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

Основой алгоритма RSA является факторизация огромных чисел, что является причиной практической невозможности вычислить обратное значение хэш-функций. Для формирования и верификации электронно-цифровой подписи необходима операция возведения в степень по модулю огромного числа (разрядность > 128 бит).

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

Рассмотрим алгоритм RSA с практической точки зрения. Для начала необходимо сгенерировать открытый и секретные ключи:

Возьмем два больших простых числа p and q.

Определим n, как результат умножения p on q (n= p*q).

Выберем случайное число, которое назовем d. Это число должно быть взаимно простым (не иметь ни одного общего делителя, кроме 1) с результатом умножения (p-1)*(q-1).

Определим такое число е, для которого является истинным следующее соотношение (e*d) mod ((p-1)*(q-1))=1. азовем открытым ключем числа e и n, а секретным - d и n[1].

Для того, чтобы зашифровать данные по открытому ключу {e,n}, необходимо следующее:

Разбить шифруемый текст на блоки, каждый из которых может быть представлен в виде числа M(i)=0,1,2..., n-1( т.е. только до n-1).

Зашифровать текст, рассматриваемый как последовательность чисел M(i) по формуле C(i)=(M(I)^e)mod n.

Чтобы расшифровать эти данные, используя секретный ключ {d,n}, необходимо выполнить следующие вычисления: M(i) = (C(i)^d) mod n. В результате будет получено множество чисел M(i), которые представляют собой исходный текст.

Пример формирования электронно-цифровой подписи показан в табл. 6.

Таблица 6.

Пример формирования ЭЦП

ЭтапОписание операцииРезультат операцииГенерация ключейВыбрать два простых различных числаP = 3557 Q = 2579Вычислить произведениеN = p * q = 9173503Вычислить функцию ЭйлераΦ(n) = (p-1)(q-1)Выбрать открытую экспонентуE = 3Вычислить секретную экспонентуD = e-1 mod φ(n) D = 6111579Опубликовать открытый ключ{e,n} = {3,9173503}Сохранить закрытый ключ{d,n} = {6111579,9173503}Формирование ЭЦПВыбрать текст для формирования ЭЦПM = 111111Вычислить ЭЦПC = E(m) = Me mod n = 4051753Верификация ЭЦППроверить ЭЦП исходного сообщенияM = D(c) = Cd mod n = 111111

Допустим, что имеется два клиента. Первому требуется отправить сообщение второму, которое подтвердится электронной цифровой подписью. Пример приведен на рис. 2.

Рис. 2. Пример Алисы и Боба [1].

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

Одним из самых главных свойств электронно-цифровой подписи является возможность проверки её каждым, у кого есть доступ к открытому ключу ее автора. Любой участник обмена сообщениями после проверки ЭЦП может передать другому клиенту подписанное сообщение и он тоже сможет проверить ЭЦП с помощью своего закрытого ключа.

Протоколы распределения ключей

Протокол распределения ключей регламентируют последовательность действий пользователей, необходимую для создания безопасного канала связи. Основная задача данных протоколов - выработка участниками общего ключа [1].

Протоколы распределения ключей делятся на два класса: протоколы транспортировки ключей и протоколы обмена ключами. В протоколах транспортировки один участник создает или получает ключ и безопасным образом передает его другим участникам. В протоколах обмена ключами общий ключ вырабатывается участниками (двумя или более) на основе информации (открытой), предоставляемой каждым пользователем таким образом, что третья сторона не может определить их общий ключ [13]. Ниже представлена классификация протоколов распределения ключей (рис. 3). В протоколах с предраспределенными ключами получаемый общий ключ зависит от уже полностью определенных начальных данных, в то время как протоколы динамического распределения ключей вырабатывают разные ключи для каждого сеанса.

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

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

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

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

Таблица 7.

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

ПараметрыДиффи-ХеллманЭль-ГамальMTISTSАутентификация сторон---ВзаимнаяПодтверждение ключа----Уязвимость к пассивным/активным атакам+/-+/-+/-+/-Дополнительный обмен сообщениями++++ДополнительноУдобно использовать вместе с симметричными шифрамиДля получения ключа использует схему Диффи-ХеллманаЕсть неявная аутентификация ключаВ алгоритме используется цифровая подпись

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

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

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

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

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

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

Протокол TCP не предоставляет данные без предварительно открытого соединения, и, в отличие от UDP, таким образом гарантируя, что данные не будут отправлены впустую. Также TCP гарантирует доставку и не допускает дублирование данных. Для поставленной задачи необходимо, чтобы не была нарушена очередность доставки сообщений. В протоколе UDP данные поступают в любом порядке, тогда как TCP его не нарушает. У UDP есть свои достоинства, это быстрый и простой протокол, предназначенный в основном для широковещательной передачи и передачи больших по объему данных. В нашей работе требуется поддержания порядка и надежная доставка, поэтому целесообразно выбрать в качестве транспортного протокола TCP.

Таким образом, были выбраны соответствующие поставленной задачи решения. В качестве алгоритма для шифрования/расшифровки сообщений будет использован алгоритм 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} умножаемое не изменяется.

Умножение на {0x02} производится по правилу: если умножаемое меньше {0x80}, оно сдвигается влево на 1 бит. Если больше или равно {80}, то сдвигается влево на 1 бит, а затем к результату применяется операция XOR со значением {0x1b}. Если результат выходит за границы одного байта (то есть значение больше {0xff}), то нужно вернуть остаток от деления на {0x100}.

Умножение на другие константы можно выразить через меньшие константы.

Теперь вернемся к трансформации. Как уже сказано выше, суть трансформации заключается в перемножении каждой колонки с многочленом 3x3 + x2 + x + 2. Данная операция имеет эквивалентную матричную запись (рис. 20). Новый трансформированный столбец получается путем перемножения неизмененного столбца State на матричную запись многочлена (рис. 21).

Рис. 20. Матричная запись перемножения колонки State и фиксированного многочлена.

Рис. 21. Элементы измененного столбца.

()() производит побитовый XOR каждого элемента State с соответствующим элементом RoundKey. RoundKey - это массив, совпадающий размерами с массивом State. Данный массив уникальный для каждого раунда и строится он вспомогательной процедурой KeyExpansion на основе ключа.()

Данная процедура формирует набор ключей для каждого раунда - KeySchedule. KeySchedule - таблица состоящая из Nb*(Nr + 1) столбцов, то есть Nr + 1 блоков, каждый из которых является раундовым ключом (включая ключ для раунда инициализации). Первый блок заполняется секретным ключом по правилу: KeySchedule[r][c] = SecretKey[r + 4c], где r = 0, 1 … 4; c = 0, 1 … Nk. Дальнейшее заполнение таблицы происходит по специальному алгоритму, для которого необходима еще одна константная таблица Rcon (рис. 22):

Так как колонки от 0 до Nk - 1 уже заполнены секретным ключом, работа алгоритма начинается с колонки Nk. Если номер текущей колонки Wiкратен Nk, то:

Выполняем циклический сдвиг влево колонки Wi-1 на один элемент.

Заменяем все элементы той же колонки на соответствующие значения из константной таблицы Sbox.

Выполняем операцию XOR между колонкой Wi-Nk, измененной колонкой Wi-1 и колонкой Rconi/Nk-1.

Результат записывается в колонку Wi.

Если номер текущей колонки не кратен Nk, то:

Выполняем операцию XOR между колонками Wi-Nk и Wi-1.

Записываем результат в колонку Wi.

Данная трансформация самая объемная в реализации. Ключ должен обязательно состоять из 16 элементов (4*Nk, так как ключ 128 бит), поэтому необходимо дополнительно реализовать функцию дозаполнения ключа до необходимого размера на случай, если на вход функции шифрования поступит ключ длиной меньше 16 символов.

Алгоритм шифрования (рис. 11) сообщения полностью состоит из этих трансформаций. За раз может шифроваться только один блок в 128 бит, поэтому, чтобы зашифровать сообщение, которое длиннее 128 бит, необходимо разбить входные данные по блокам в 128 бит и применить алгоритм шифрования к каждому из них.

Рис. 22. Алгоритм шифрования AES-128.

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

Существует такое понятие, как режим шифрования - это метод применения блочного алгоритма, преобразовывающий последовательность блоков исходных данных в блоки зашифрованных данных. Обычно режимы шифрования используются для того, чтобы результат шифрования каждого блока был уникальным. Существует несколько основных режимов. Один из них был описан выше: независимое шифрование каждого отдельного блока. Такой режим называется Electroniccodebook (ECB). Также существуют режимы:(CBC) - режимсцепленияблоков;(PCBC) - режимраспространяющегосясцепленияблоков;(CFB) - режим обратной связи по шифротексту;(OFB) - режим обратной связи по выходу;mode (CTR) - режимсчётчика.

Каждый режим имеет свои достоинства и недостатки. В данной работе будет использован режим шифрования CBC, так как он помогает избежать статических особенностей и скорость обработки блоков постоянна и определяется только эффективностью реализации шифра. Рассмотрим алгоритм работы (рис. 23) этого режима шифрования.

Рис. 23. Алгоритм работы режима шифрования CBC.

Сообщение разбивается на блоки одинакового размера. Для данной работы - 128 бит. Если последний блок меньше этой длины, то его необходимо дополнить до нужного размера. Дополнение проходит следующим образом: в конец добавляется единичный бит, а все остальное заполняется нулями. Таким образом возможно найти конец полезных данных.

Каждый Pi блок сообщения шифруется с использованием предыдущего зашифрованного блока Ci-1. Для блока P1 (первого) не существует зашифрованного блока, поэтому для первого блока C0 - это вектор инициализации IV. Вектор инициализации - это случайное число, размером совпадающее с размером блока. Таким образом, шифрование первого блока, будет производиться по правилу: C1 = Ek (P1 ÅIV, k), где Ek - это функция шифрования, а k - это ключ.

Шифрование следующих блоков производится по правилу: Ci = Ek (Pi Å Ci-1, k), где i - номер блока.

Расшифровка выполняется по правилу: Pi = Ci-1 Å Dk (Ci, k), где Dk - функция расшифровки.

Теперь опишем алгоритм шифрования сообщения, учитывая все дополнительные процедуры:

Получаем исходный текст, ключ, вектор инициализации.

Если ключ меньше 16 символов, то выполняем функцию дополнения ключа, если ключ необходимой длины, то переходим к пункту 3.

Разбиваем исходный текст на блоки по 128 бит.

Проверяем, что размер последнего блока 128 бит, если нет, то выполняем функцию дополнения блока.

Шифруем каждый блок исходного текста с учетом предыдущего по алгоритму шифрования AES.

Выводим результат шифрования: Output[r + 4c] = State[r][c], где r = 0, 1 … 4; c = 0, 1 … Nb.

Далее рассмотрим процедуру расшифровки. Чтобы расшифровать сообщение, необходимо использовать инверсные трансформации, от обычных трансформаций они отличаются незначительно.

Работа InvSubBytes() аналогична SubBytes(). Отличие в том, что для замены используется константная таблица InvSbox, представленная на рис. 24.

Рис. 24. Константная таблица InvSbox.

() производит циклический сдвиг вправо. Как и в ShiftRows(), нулевая строка не сдвигается, первая строка сдвигается на один элемент, вторая сдвигается на два элемента и третья строка сдвигается на три элемента.

В трансформации InvMixColumns() перемножение происходит с многочленом {0b}x3 + {0d}x2 + {09}x + {0e}. Матричная форма представлена на рис. 25, итоговые значения представлены на рис. 26.

Рис. 25. Матричная форма перемножения для трансформации InvMixColumns().

Рис. 26. Итоговые значения для InvMixColumns().

Для трансформации AddRoundKey() никаких изменений не требуется, так как трансформация обратна сама себе. Единственное отличие в том, что раундовые ключи необходимо подставлять в обратном порядке.

Алгоритм расшифровки представлен на рис. 27.

Рис. 27. Алгоритм расшифровки AES-128.

Выработка общего ключа для шифрования/расшифровки сообщения

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

Алгоритм обмена ключами основан на односторонней функции - вычисление по модулю. Основа алгоритма - функция Yx (modP). Обратное преобразование для такой функции почти невозможно. Далее поэтапно опишем алгоритм работы протокола для обеих сторон на примере Алисы и Боба:

Алиса и Боб договариваются о значениях Y и P, либо их вычисляет одна сторона и передает другой. P - простое число, Y - первообразный корень по модулю P.

Алиса выбирает случайное число A и хранит его в тайне. Также Боб выбирает случайное число B и хранит его в тайне.

Алиса подставляет число A в функцию и вычисляет a = YA (modP). Аналогично Боб вычисляет b = YB (modP).

Алиса и Боб обмениваются числами a и b. Это является публичной информацией и может передаваться по незащищенному каналу.

Алиса получает b и вычисляет key = bA (modP). Аналогично Боб вычисляет key = aB (modP).

Оба участника вычислили один и тот же ключ.

Чтобы продемонстрировать, что алгоритм работает и в итоге получается одно и то же число, приведем пример на небольших числах:= 7, P = 11. Функция принимает вид: 7x (mod 11).

A = 3, B = 6.= 73 (mod 11) = 2, b = 76 (mod 11) = 4.= 43 (mod 11) = 9.= 26 (mod 11) = 9.= AlicaKey = BobKey = 9.

Метод передачи данных

Для реализации передачи данных между двумя ПК был выбран протокол TCP. Для программной реализации было использовано пространство имен System.Net.Sockets, которое предоставляет управляемую реализацию сокетов Windows [16]. Из данного пространства имен были выбраны классы TcpListener, TcpClient и NetworkStream. TcpListener отвечает за прослушивание и подтверждение входящих подключений, TcpClient позволяет подключить клиента к удаленному узлу, NetworkStream необходим для организация потока данных.

Для повышения безопасности сессия между двумя ПК завершается сразу после отправки/получения сообщения. Непродолжительное время сессии уменьшает шансы того, что третье лицо успеет произвести вмешательство в обмен данными между двумя ПК.

Решение проблемы имплементации RSA на ПЛИС

Для программирования ПЛИС существует несколько языков программирования. Например, verilog или vhdl. Не все конструкции в Verilog являются синтезируемыми. Синтезируемой конструкцией называется такая конструкция, которую можно представить в виде логических элементов, триггеров, ячеек памяти и так далее. Пример синтеза сумматора с переносом показан на рис. 28.

Рис. 28. Сумматор с переносом.

Конструкция деления и взятия числа по модулю в Verilog не может быть синтезирована. Для этого применяются разнообразные математические алгоритмы. Для основного действия алгоритма RSA (возведение в степень по модулю) необходимо разбить задачу на несколько более простых. Для начала необходимо разобрать алгоритм умножения по модулю. Недостаток большинства алгоритмов в том, что они используют несинтезируемые конструкции Verilog хотя бы раз.

Алгоритм Монтгомери позволяет ускорить выполнение операций умножения и возведения в квадрат, которые необходимы для возведения в степень по модулю, когда модуль очень большой (около нескольких сотен бит). По введенным целым числам a,b<n, r, НОД(r, n) = 1 алгоритм Монтгомери вычисляет MonPro(a,b) = a * b * r-1modn. Положим r = 2k. Определим n-остаток числа a<nкак ā = a * r mod n. Алгоритм Монтгомери использует свойство, что множество {a * r mod n | 0 ≤ a ≤ n - 1} является полной системой вычетов, то есть содержит все числа от 0 до n-1. MonPro вычисляет . Результат является n-остатком от

, так как.

Определим n' так, что. r-1и n' можно вычислить с помощью расширенного алгоритма Евклида. Функция показана на рис. 29. Операции умножения производятся довольно быстро, потому что при r = 2k они являются просто сдвигами регистров бит. Поэтому умножение по Монтгомери быстрее обычного вычисления умножения по модулю. Однако применять алгоритм для однократного произведения двух чисел является нерациональным.

Рис. 29. Умножение по Монтгомери.

Алгоритм Монтгомери для умножения по модулю оправдывает себя для возведения чисел в степень по модулю. Алгоритм показан на рис. 30.

Рис. 30. Возведение в степень по модулю по Монтгомери

Алгоритм Монтгомери для ПЛИС неоправдан, так как в промежуточные вычисления требуют синтезируемых конструкций взятия числа по модулю.

В данной работе использовался двоичный алгоритм умножения и взятия остатка. Он хорошо ложится на ПЛИС, так как состоит полностью из синтезируемых конструкций. Алгоритм показан на рис. 31. Для современных ЭВМ этот метод имеет недостаток. Недостаток заключается в том, что алгоритм не использует многобитовую арифметику. Но для ПЛИС это скорее преимущество, так как увеличивает частоту, с которой синтезируется проект.

Рис. 31. Алгоритм умножения и взятие остатка.

Используя имеющийся алгоритм умножения по модулю, можно использовать алгоритмы, которые используют промежуточные вычисления, которые дает на выходе алгоритм умножения и взятия остатка. Используем бинарную схему справа налево. Ее алгоритм и пример работы показан на рис. 32 и 33 соответственно.

Рис. 32. Алгоритм возведения в степень по модулю.

Рис. 33. Пример работы алгоритма.

Универсальный асинхронный приемопередатчик

В данной работе для приема сообщений с ПК(1) был реализован прием из последовательного порта. Так как предполагается, что ПК(1) и ПЛИС стоят в одной комнате, то нужды в дополнительной реализации более сложного приемника, например Ethernet, нет. UART предназначен для связи между цифровыми устройствами, очень широко используется в системах на кристаллах, таких как микроконтроллеры, бмк, микропроцессоры, ПЛИС.

Передача по UART происходит последовательно по одному биту в одинаковые промежутки времени. Эти промежутки определяются заранее заданной скоростью и измеряется в бодах (количество передаваемых бит в секунду). Кроме битов данных, в UART используются стартовый и стоповый биты. Сначала передается стартовый бит (равен логическому нулю), затем передаются 8 бит данных, а затем передается стоповый бит (равен логической единице). Формат кадра UART показан на рис. 34.

Рис. 34. Форматкадра UART.

Ethernet MAC

Структура подключения ПЛИС с ПК по Ethernet

В данной работе связь ПК(2) и ПЛИС по Ethernet реализована через трансивер, который подключается оптоволоконным кабелем через патчкорд к медиаконвертеру, который, в свою очередь, подключается кабелем RJ-45 к сетевой плате компьютера, поддерживающей скорость, равной 1 Гбит в секунду.

Медиаконвертер - это устройство, которое преобразует информацию, поступающую из оптических кабелей в медные и наоборот. В данной работе использовался медиаконвертер D-LinkDMC-G01LC.


Основной задачей являлось установить связь (линк) между ПЛИС и ПК. Для этого необходимо реализовать MAC уровень только в ПЛИС, так как в сетевых картах он уже реализован и готов к работе. Канальный уровень необходим для передачи данных между узлами локальной сети. Он отвечает за доставку кадров между различными сетевыми устройствами. Заголовок кадра, передаваемого между узлами локальной сети, содержит в себе аппаратные (MAC) адреса получателей и отправителей, что позволяет точно определить, какое устройство послало/приняло тот или иной кадр. Согласно стандарту IEEE 802 канальный уровень разделяется на два уровня: MAC уровень (регулировка доступа к физической среде), LLC уровень (обслуживание сетевого уровня).

Для этой задачи было взято готовое IP ядро фирмы AlteraTripleSpeedEthernetMegaCore. Ядро предоставляется без лицензии на ограниченный промежуток времени. Это значит, что по прошествии часа реального времени ядро отключается и ПЛИС необходимо перепрограммировать. Ядро поддерживает стандарт IEEE 802.3 10/100/1000 Мбит в секунду. Структура MAC уровня ядра показана на рис. 35.

Рис. 35. Структура MAC[27].

Конфигурация ядра MAC

Для того, чтобы ядро заработало корректно, необходимо сконфигурировать его должным образом. Для конфигурации регистров ядра используется шина AvalonMemoryMapped. AvalonMM- простая шинная архитектура, предназначенная для объединения процессоров на кристаллеи внешних устройств этих процессоров в system-on-a-programmable chip (SOPC). Avalon-интерфейс, который определяет подключение порта шины между мастером и подчиненными компонентами, определяет синхронизацию, которой эти компоненты связываются. По адресам 0x00-0x17 находятся базовые регистры, без конфигурации которых, ядро не будет работать корректно. Стоит обратить внимание на адреса 0x03 и 0x04. В них находится MAC-адрес. Это значит, что то значение, которое будет присвоено этим регистрам по заданным адресам, будет являться MAC-адресом ПЛИС. Так же одним из основных регистров является Command_ConfigRegister. Он находится в памяти с адресом 0x02 и, в основном, содержит в себе настройки MAC, такие как: _ENA (Разрешение приема кадров)._GEN (Пауза генерации кадров)._SPEED (Контроль скорости, логическая единица при режиме 1Гбит в секунду)._EN (Разрешение всех пакетов без фильтрации MAC адреса)._FWD (Выбор обсчета контрольной суммы кадров, логический ноль для обсчета КС модулем MAC, логическая единица для обсчета КС пользовательским модулем).

Архитектура стандарта GigabitEthernet

На рис. 36. показана модель OSI и структура GigabitEthernet. В GigabitEthernet не существует универсального кодирования сигналов, например 8б/10б кодирование используется в стандартах 1000Base-LX/SX/CX, а для стандарта 1000Base-T используется кодирование TX/T2. Функция кодирования выполняет подуровень PCS.

Рис. 36. Стандарт GigabitEthernet в модели OSI[1].

В данной работе используется стандарт 1000Base-X. Для реализации 1000BASE-X необходимо реализовать PCS и PMA. Реализация в ядре MAC показана на рис. 37.

Рис. 37. Реализация PMA и PCS[27].

Проведем анализ рис. 36 и 37, показанные выше. Прием кадра осуществляется по дифференциальной паре с трансивера. Кадр идет последовательно с частотой 1250Мгц. Далее он поступает в десериализатор на PMA модуль. Этот модуль преобразует последовательные данные в параллельные. Далее эти данные уходят в PCS модуль. Здесь происходит 8-10 битное кодирование и синхронизация. Далее эти данные конвертируются в параллельный интерфейс SGMII (по заданным настройкам), выполняется подсчет контрольной суммы и передается в буфер памяти FIFO, откуда по шине AvalonST пользовательский модуль получает кадр. AvalonST - это шина потокового интерфейса, отличие от AvalonMM в том, что в AvalonMM имеется адресация, а в AvalonST данные непрерывно проходят пачками. При передаче информации с пользовательского модуля происходит такой же порядок действий, только наоборот.

Входные и выходные сигналы модуля MAC показаны на рис. 38.

Рис. 38. Сигналы MAC модуля.

Разработанные модули для ПЛИС

Модуль приемника UART на ПЛИС

Для приема сообщений с ПК(1) и для дальнейшего формирования ЭЦП был разработан модуль приемника и передатчика UART. Формат стандартен: стартовый бит, 8 бит информационных данных, стоповый бит, без контрольного бита четности. Листинг приемника FT-232 представлен на рис. 39.

Рис. 39. Листинг приемника UART.

Входы и выходы:_PER_BIT - параметр, который отвечает за число тактов, за которое проходит один бит. В данном случае на плате DE1-SoC имеется генератор синхроимпульсов с частотой 50 МГц. Частота UART равна 256000 бод. Делим 50000000 на 256000 и получаем число тактов, за которое в ПЛИС приходит один бит._Clock - Входной тактовый сигнал._RX_Serial - Входной последовательный сигнал UART._RX_DV - Выходной сигнал о принятии пакета._RX_Byte - Выходной 8-разрядный регистр принятых данных.

Так как ячейка ММ693 была изготовлена позже модуля формирования ЭЦП, для отладки использовался модуль передатчика UART. Он проще в отладке, чем модуль Ethernet, а по сложности модуль передатчика Ethernet равноценен имплементации алгоритма RSA. Листинг передатчика FT-232 показан на рис. 40.

Рис. 40. Листинг передатчика

Входы и выходы:

CLKS_PER_BIT._Clock.

I_TX_DV - Входной сигнал о начале передачи._TX_Byte - Входной 8-разрядный регистр данных._TX_Active - Выходной сигнал, означающий активность передачи._TX_Serial - Выходной последовательный сигнал UART._TX_Done - Выходной сигнал, означающий полную передачу пакета._Front_Done -Выходной передний фронт сигнала O_TX_DONE.

Модули формирования электронно-цифровой подписи

Сообщение принимается в виде 32 посылок по 8 бит. Сделано это из-за специфики алгоритма RSA. Модуль и его секретный ключ хранится в ПЛИС изначально. Размер ключа составляет 256 бит. Для формирования ЭЦП было разработано 2 модуля: модуль умножения по модулю и модуль возведения в степень по модулю. Модули являются параметризируемыми, это значит, что размеры ключа могут быть изменены перед синтезом проекта и «зашиты» в ПЛИС. Листинг модуля умножения по модулю показан на рис. 41 и 42.

Рис. 41. Модуль умножения по модулю.

Рис. 42. Основной алгоритм на языке Verilog.

По сигналу приема полного сообщения модуль формирования ЭЦП начинает работу. Сообщение передается в нужный регистр модуля и происходит процесс формирования ЭЦП. Процесс длится 8 мс и на выходе сформированная ЭЦП и исходное сообщение перенаправляются в память по кускам в 32 бита. Листинг модуля показан на рис. 43.

Рис. 43. Листинг модуля формирования ЭЦП.

Модуль передатчика по Ethernet.

После формирования ЭЦП, по сигналу готовности модуля из памяти в модуль передатчика по Ethernet поступает части сообщения и ЭЦП по 32 бита. Первым идет сообщение, затем ЭЦП. По сигналу готовности модуль передатчика формирует сигнал ff_tx_sop и ff_tx_wren. Сигнал ff_tx_sop показывает MAC уровню о том, что пошла первая 32-разрядная пачка и переходит в активное состояние. Сигнал ff_tx_wren активен на всем промежутке передачи данных. После передачи всех 512 бит информации из памяти становится активен сигнал ff_tx_eop. Он становится активным, когда из памяти приходит последняя посылка. Временная диаграмма цикла передачи показана на рис. 44.

Рис. 44. Временная диаграмма передачи по Ethernet.

Заключение

В ходе выполнения дипломной работы были изучены основы криптографии, а именно принципы работы симметричного и асимметричного шифрования, подробно был рассмотрен алгоритм шифрования AES. Также были рассмотрены протоколы распределения ключей и по результатам анализа существующих решений был изучен и реализован протокол Диффи-Хеллмана. Помимо этого, были рассмотрены методы передачи данных в локальной сетиинтернет. Результатом данной работы являются выполненные модули для шифрования и расшифровки, передачи и приема сообщения, а также модуль генерации общего ключа. В дальнейшем для развития и улучшения полученных результатов можно реализовать протокол передачи TCP или STS без использования встроенных библиотек C#, также возможно выбрать более сложный протокол распределения ключей, обеспечивающий более высокую защиту, а для уменьшения количества итераций функций шифрования и расшифровки алгоритм AES можно заменить алгоритмом ГОСТ Р 34.12-2015 [26].

В ходе выполнения данной дипломной работы были изучены преимущества использования криптографических алгоритмов на ПЛИС. Поскольку обычно компании специализирующиеся на криптографической защите информации используют свои алгоритмы защиты (кроме ГОСТ 34.10-2012[24]) использование алгоритма RSA в качестве надежного алгоритма формирования электронно-цифровой подписи, например в структурах государственной оборонной промышленности или космических технологий, нецелесообразно, нотем не менее, для показательного примера преимущества использования ПЛИС в криптографии результат очевиден. Так же с использованием технологий фирмы Altera был реализован физический и канальный уровень модели OSI на ПЛИС. В перспективе предполагается разработка криптографического модулей формирования ЭЦП и хэшфункций на ПЛИС ГОСТ 34.10-2012[24] и ГОСТ 34.11.2012[25], которые одобрены ФСБ Россиии применение этих алгоритмов в АО «Концерн «Автоматика».

Список источников

Блог компьютерного специалиста [Электронный ресурс]. - Режим доступа: #"justify">Национальный открытый университет «ИНТУИТ» [Электронный ресурс]. - Режим доступа: #"justify">Gilmore J. Cracking DES: Secrets of Encryption Research, Wiretap Politics & Chip Design. - 1998.M., Mishra P. A comparative survey on symmetric key encryption techniques //International Journal on Computer Science and Engineering. - 2012. - Т. 4. - №. 5. - P. 877.[Электронный ресурс]. - Режим доступа: #"justify">Панасенко С. П. Алгоритмы шифрования. Специальный справочник. - БХВ-Петербург, 2009. - C. 135 - 141.[Электронный ресурс]. - Режим доступа: #"justify">Информационная безопасность: ФСТЭК, инсайдеры, шифрование, ЭЦП, вирусы, трояны, спам [Электронный ресурс]. - Режим доступа: #"justify">Хабрахабр [Электронный ресурс]. - Режим доступа: https://habrahabr.ru/ (Дата обращения: 15.01.2017).[Электронный ресурс]. - Режим доступа: #"justify">Daemen J., Rijmen V. Rijndael specification //AES specification. - 2004.

MSDN - сеть разработчиков Microsoft [Электронный ресурс]. - Режим доступа: https://msdn.microsoft.com/ru-ru/default.aspx (Дата обращения: 01.02.2017).

Rahman M., Rokon I. R., Rahman M. Efficient hardware implementation of RSA cryptography // 2009 3rd International Conference on Anti-counterfeiting, Security, and Identification in Communication. - IEEE, 2009. - P. 316-319.S. FPGA implementation of RSA encryption system. - 2012. - P. 2-4.C. C., Tseng S. Y. Integrated design of AES (Advanced Encryption Standard) encrypter and decrypter // Application-Specific Systems, Architectures and Processors, 2002. Proceedings. The IEEE International Conference on. - IEEE, 2002. - P. 277-285.R. et al. FPGA Implementation of RSA cryptosystem // World Academy of Science, Engineering and Technology, International Journal of Electrical, Computer, Energetic, Electronic and Communication Engineering. - 2008. - Vol. 2. - No. 8. - P. 1667-1671.D. et al. Implementation of RSA cryptoprocessor based on Montgomery algorithm // Solid-State and Integrated Circuit Technology. Proceedings. IEEE 1998 5th International Conference. - IEEE, 1998. - P. 524-526. S. RSA Securitys Official Guide To Cryptography. - 2001. - P. 98-105.B. Applied cryptography: protocols, algorithms, and source code in C. - John Wiley & Sons, 2007. - P. 384-387.

ГОСТ Р. 34.10 2012 Процессы формирования и проверки электронной цифровой подписи //М.: Изд-во стандартов. - 2012.

Гост Р. Р 34.11-2012: Национальный стандарт Российской Федерации. Информационная технология. Криптографическая защита информации. Функция хэширования. Издание официальное //М. Стандартинформ. - 2012.

ГОСТ Р. Р 34.12-2015 //Информационная технология. Криптографическая защита информации. Блочные шифры. М.: Стандартинформ. - 2015.V. R., Gad R. S., Naik G. M. Implementation of gigabit ethernet standard using fpga //International Journal of Mobile Network Communications & Telematics (IJMNCT). - 2012. - Т. 2. - №. 4.

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

 

Не нашел материал для своей работы?
Поможем написать качественную работу
Без плагиата!