Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дипломный проект. А.В. Шпак.docx
Скачиваний:
146
Добавлен:
24.02.2016
Размер:
3.35 Mб
Скачать

3 Разработка программного обеспечения

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

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

3.1 Выбор языка программирования

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

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

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

3.2 Выбор параметров математического метода

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

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

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

Рассмотрим распространённую эллиптическую кривую под названием curve25519. Данная эллиптическая кривая используется в большом количестве готовых систем. Это эллиптическая кривая и набор параметров к ней подобранных таким образом, чтобы обеспечить более высокое быстродействие (в среднем, 20–25 %) и избавиться от некоторых проблем с безопасностью у традиционного ECDH.

Кривая curve25519 – это кривая Монтгомери над полем вычетов по модулю простого числа 2255− 19, что и дало название схеме и с использованием базовой точкиx = 9. Схема использует точки в сжатой форме, то есть при произведении вычислений используются только X координаты, позволяя таким образом использовать алгоритм «Лестница Монтгомери», который делает умножение точек за фиксированное время, избавляя нас от атак по времени.

Curve25519 используется как обмен ключами по умолчанию в OpenSSH, I2p, Tor, Tox, операционной системе IOS. Данная эллиптическая кривая очень выгодна за счёт своей простоты в реализации алгоритмов с ней и высокой скорости работы последних. Чтобы сгенерировать новую ключевую пару, алгоритм подает на вход схеме любые 32 случайных байта, которые будут закрытым ключом. Из них мы получаем 32 байта открытого ключа. Затем, как обычно, обмениваемся открытыми ключами и считаем общий. Насколько именно она быстрее классического ECDH с 256-битными кривыми, зависит от реализации. Использование данной кривой выгодно за счёт устойчивости к атакам по времени и за счёт выгодной возможности использовать любые 32байтные массивы в качестве закрытых ключей.

3.2.2 Выбор модуля конечного поля системы.Использование рекомендуемой эллиптической кривой диктует выбор остальных параметров системы согласно рекомендациям. Выбранная в предыдущем пункте эллиптическая кривая curve25519 поставляется с рекомендуемым модулем поля (2255-19). Библиотека на языке си, содержащая реализацию операций в поле эллиптической кривой скрывает эти константы от программиста. При проектировании систем на базе эллиптических кривых стоит придерживаться следующего правила. Количество бит шифруемого сообщения должен быть как минимум в два раза меньше, чем количество битовый размер поля эллиптической кривой. В данной работе используется эллиптическая кривая с размером поля в 255 бит. Следовательно, размер переменной, инициирующей процедуру аутентификации, должен быть порядка 127 бит. Что достаточно для надёжности системы.

3.2.3 Выбор библиотеки для операций над эллиптическими кривыми.Опираясь на сделанный выбор эллиптической кривой, следует выбрать библиотеку, реализующую операции над эллиптическими кривыми. В данной работе остановим свой выбор на библиотеке μNaCl, которая является реализацией библиотеки NaCl – распространённой библиотеки с множеством криптографических функций. Библиотека μNaCl адаптирована для использования на микропроцессорных устройствах. В частности в данной библиотеке есть модуль AvrNaCl – специально адаптированная библиотека для использования на микроконтроллерах семейства Atmel. В данной библиотеке реализованы операции над эллиптическими кривыми, необходимые в данной работе. Наиболее интересующая нас операция – это скалярное умножение в поле эллиптической кривой curve25519. Выбранная библиотека является хорошо протестированной и надёжной библиотекой, хорошо зарекомендовала себя как качественная и быстрая реализация алгоритмов криптографии на языке программирования си.