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

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

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

Введение

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