СОДЕРЖАНИЕ
Введение. 7
1 Анализ существующих систем аутентификации, выбор решения для аутентификации пользователя транспортного средства. 9
1.1 Системы со статическим и динамическим кодом. 9
1.2 Шифрование с открытым ключом. 10
1.3 Схема проверки подлинности ключа. 12
1.4 Вывод. 15
2 Разработка структурной схемы.. 17
2.1 Упрощённая структурная схема системы.. 17
2.2 Структурная схема модуля аутентификации. 19
2.3 Генерация случайной последовательности. 22
2.4 Структурная схема модуля радиоключа. 24
2.5 Вывод. 25
3 Разработка программного обеспечения. 27
3.1 Выбор языка программирования. 27
3.2 Выбор параметров математического метода. 28
3.3 Тестирование скорости выполнения протокола. 30
3.4 Проектирование алгоритма работы системы.. 36
3.5 Разработка общего алгоритма работы системы.. 43
3.6 Проектирование программной части генератора случайных чисел. 45
3.7 Вывод. 50
4 Разработка принципиальной схемы системы.. 52
4.1 Выбор микроконтроллера. 53
4.2 Выбор приёмопередатчика. 55
4.3 Схема понижения напряжения из бортовой сети автомобиля. 57
4.4 Схема генератора случайных чисел. 58
4.5 Выбор источника питания радиоключа. 60
4.6 Проектирование принципиальной схемы радиоключа. 61
4.7 Проектирование принципиальной схемы системы автомобиля. 62
4.8 Вывод. 64
5 Энергосбережение при проектировании систем радиоэлектронной связи. 66
5.1 Анализ энергозатрат при эксплуатации указанных систем. 67
5.2 Поиск инженерно-технических и конструкторско-технологических решений экономии энергозатрат разрабатываемой системы.. 69
5.3 Вывод. 71
6 Технико-экономическое обоснование эффективности разработки системы аутентификации пользователя транспортного средства. 72
6.1 Характеристика программного продукта. 72
6.2 Расчет затрат и отпускной цены программного средства. 73
6.3 Расчет стоимостной оценки результата. 77
6.4 Расчет показателей эффективности использования программного продукта 79
6.5 Вывод. 81
Заключение. 82
Список использованных источников. 83
Приложение А.. 85
Приложение Б. 95
Приложение В.. 97
Приложение Г. 99
ВВЕДЕНИЕ
Системы дистанционного управления замком используются фактически во всех транспортных средствах. В данный момент в большинстве автомобилей используется система, основанная на блочном шифре KeeLoq, однако [3] данная система является уязвимой. В криптографии широко используются и доказали свою надёжность системы аутентификации на основе эллиптических кривых. В данной работе мы разработаем систему дистанционного управления замком, основанную на вычислительной надёжности операции дискретного логарифма в поле эллиптической кривой. Эллиптические кривые – мощный инструмент для создания односторонних функций с лазейкой. Односторонней функцией называется такая функция, вычисление значения которой при произвольном аргументе – задача тривиальная, относительно длины аргумента, но зная значение функции, вычислить аргумент, при котором функция примет это значение – задача сложная, относительно длинны аргумента. Односторонней функцией с лазейкой называется такая функция, для которой существует дополнительная информация, которая сводит вычислительно сложную задачу вычисления обратной функции к тривиальной задаче. Такой функцией является функция вычисления дискретного логарифма в поле эллиптической кривых.
Заранее, ещё на заводе-изготовителе или в автосалоне в ключ, как и в автомобиль, программируются некоторые общие для них переменные: во-первых это непосредственно сама эллиптическая кривая, это может быть одна из рекомендуемых NIST эллиптических кривых, например Curve25519. Далее, необходимо выбрать большое простое число N, по модулю которого будут выполняться операции. Точку-генератор G – это произвольная точка на эллиптической кривой. В качестве секретных данных ключ выбирает произвольное число k. Эллиптические кривые обладают достаточно большой стойкостью при относительно небольших ключах, поэтому для всех вышеуказанных чисел достаточно порядка 256 бит на каждое, что в сумме составит не более 150 байт. Данная цифра показывает удачность выбора алгоритмов на эллиптических кривых для реализации на таком несколько ограниченном устройстве, как автомобильный ключ.
Ключ, в результате нажатия кнопки, посылает на автомобиль запрос на авторизацию и ждёт ответа. Автомобиль, получив запрос на авторизацию, генерирует случайное число r, сопоставимое по длине в битовом представлении с выбранным модулем N. Вычислив секретный параметр транзакции, автомобиль посылает на ключ открытый параметр. Только ключ, зная этот параметр, может вычислить секретный параметр транзакции, зная секретный ключ. Преимущество эллиптических кривых перед вариантом алгоритмов ассиметричного шифрования над полем целых чисел в их скорости. По различным источникам в зависимости от выбранной кривой и конфигурации микроконтроллера основной этап авторизации на стороне ключа требует вычислений длительностью в 5–1000 мс [2]. И таких же вычислений на стороне автомобиля. 2 секунды – это не самый быстрый отклик, по сравнению со стандартными ключами, использующимися на теперешний момент, однако потратив эти две секунды, можно сохранить транспортное средство. Так же, несомненное преимущество перед другими видами ключей, это отсутствие необходимости изменения каких-либо данных в постоянной памяти ключа. Каждая процедура аутентификации инициируется со стороны автомобиля случайной последовательностью, что исключает варианты атак с замещением. Перехват какого-либо количества передаваемых данных не даст злоумышленнику никакой информации для взлома. Единственными возможными атаками остаются атаки при непосредственном контакте с ключом, например измерение энергопотребления ключа или при возможности доступа к схеме внутри автомобиля.
В данной работе был представлен возможный алгоритм аутентификации владельца транспортного средства, были проанализированы временные характеристики алгоритма и энергопотребление. Сделав выводы, можно сказать, что представленный алгоритм вполне пригоден для решения поставленной задачи. Дальнейшие исследования могут быть направленны на уменьшение времени работы трудоёмких операций, расширение алгоритма на поддержание работы нескольких ключей и разработка протокола передачи авторизированных сигналов с ключа на автомобиль.
Разрабатываемая система аутентификации пользователя транспортного средства имеет множество выпускаемых аналогов, однако детали реализации, к сожалению, тщательно скрываются производителями с целью усложнения задачи взлома системы для злоумышленников. В разрабатываемом устройстве мы будем следовать принципу Керкгоффса и не станем скрывать алгоритмы работы системы, что, не смотря ни на что, нисколько не повлияет на стойкость системы перед злоумышленниками.
1 АНАЛИЗ СУЩЕСТВУЮЩИХ СИСТЕМ АУТЕНТИФИКАЦИИ, ВЫБОР РЕШЕНИЯ ДЛЯ АУТЕНТИФИКАЦИИ ПОЛЬЗОВАТЕЛЯ ТРАНСПОРТНОГО СРЕДСТВА
1.1 Системы со статическим и динамическим кодом
Системы со статическим кодом достаточно просты в исполнении, однако не очень надёжны в эксплуатации. В таких устройствах на ключе хранится код, который передаётся на автомобиль, автомобиль, проверяя код, разрешает выполнение какой-либо операции либо не разрешает. Устройства подобного рода слишком уязвимы, так как, перехватив ключ, злоумышленник легко может имитировать его и завладеть автомобилем. Устройства подобного рода без труда взламываются фактически простым прослушивание радио канала и использование данных устройств не рекомендуется на какой либо системе, предполагающей достаточную защиту транспортного средства.
Ключ это секретная информация, используемая криптографическим алгоритмом при шифровании/расшифровке сообщений, постановке и проверке цифровой подписи, вычислении кодов аутентичности (MAC). При использовании одного и того же алгоритма результат шифрования зависит от ключа. Для современных алгоритмов сильной криптографии утрата ключа приводит к практической невозможности расшифровать информацию без обладания какими-либо сторонними данными, как например в некоторых схемах ассиметричной криптографии.
Согласно принципу Керкгоффса, надёжность криптографической системы должна определяться сокрытием секретных ключей, но не сокрытием используемых алгоритмов или их особенностей, хотя на данный момент производители систем подобного рода скрывают детали реализации алгоритмов аутентификации, что усложняет анализ таких систем и подрывает доверие к надёжности используемых алгоритмов.
Второй тип систем усложняет задачу злоумышленнику тем, что генерирует ключ каждый раз при новом выполнении протокола аутентификации. Возможны модификации этого подхода, в которых ключ шифрует записанный на него код неким подобием блочного шифра, дополняя сообщение, пересылаемое на автомобиль его порядковым номером, однако такой подход тоже уязвим к достаточно остроумной атаке.
Опишем атаку на брелок, отправляющий код, зашифрованный блочным шифром. Пользователь транспортного средства нажимает на кнопку брелока сигнализации, чем посылает запрос на автомобиль, но злоумышленник перехватывает этот запрос, запоминает его, записывая в память какого-либо устройства, после чего глушит его, чтобы запрос не дошёл до автомобиля. В итоге нажатие не срабатывает и пользователь с брелоком, ничего не подозревая, опять нажимает на кнопку брелока, злоумышленник повторяет свои действия, такая процедура происходит несколько раз, пользователь транспортного средства в недоумении нажимает на кнопки открытия и закрытия автомобиля, но всё это просто записывается злоумышленников. В какой-то момент злоумышленник решает, что накопилось достаточно информации и посылает на автомобиль самый первый запрос пользователя. Автомобиль открывается. Далее машина преследуется злоумышленником, у которого есть уже достаточно запросов, чтобы закрывать и открывать автомобиль. После того, как водитель покинет транспортное средство, злоумышленник получит полный контроль над машиной.
1.2 Шифрование с открытым ключом
Рассмотрим схему шифрования с открытым ключом (рис. 1.1). На схеме не показан злоумышленник Е. В дальнейшем будем просто предполагать, что сообщения, которыми обмениваются пользователи А и Б, всегда доступны злоумышленнику Е. Пользователи А и Б не применяют один и тот же ключ шифрования. Они используют разные ключи. В этом и состоит революционная идея криптографии с открытым ключом.
Рисунок 1.1 – Общая схема шифрования с открытым ключом
Вначале пользователь Б с помощью специального алгоритма генерирует пару ключей (SB, PB). Это секретный ключ SB и открытый ключ PB . Затем пользователь Б публикует ключ PB. Когда пользователь А хочет послать сообщение пользователю Б, он находит открытый ключ PB , опубликованный пользователем Б. Пользователь А зашифровывает сообщение m с помощью открытого ключа PB и посылает пользователю Б полученный шифрованный текст c. Пользователь Б применяет к полученному тексту свой секретный ключ SB и алгоритм дешифрования, в результате он получает исходное сообщение m. Чтобы этот метод действительно работал, алгоритмы генерации пары ключей, шифрования и дешифрования должны гарантировать, что в процессе расшифровки всегда будет получено исходное сообщение. Другими словами, равенство D(SB, E(PB, m)) = m должно выполняться для всех возможных значений m.
Пользователи А и Б применяют не только разные ключи, но и совершенно разные алгоритмы шифрования и дешифрования. Все схемы шифрования с открытым ключом имеют серьезную математическую основу. Одно из очевидных требований к подобным схемам состоит в том, чтобы на основе открытого ключа нельзя было вычислить соответствующий секретный ключ.
Разрабатываемая система состоит из двух частей. Первая – это брелок-ключ, с помощью которого пользователь транспортного средства осуществляет доступ и аутентификацию таким образом, что никто другой, не обладающий ключом не может получить доступ к транспортному средству. Ключ может поддерживать дополнительные, необходимые пользователю функции. Такие, как, например, ввод пин-кода на самом ключе. При некорректном пин-коде ключ не сможет успешно провести протокол аутентификации.
Так же, к дополнительным функциям можно добавить открытие багажника, обратная связь автомобиля с ключом, в случае попытки злоумышленника завладеть транспортным средством и прочее. Вторая часть – это непосредственно сигнализация автомобиля и система, которая осуществляет проверку ключа и управление доступом к автомобилю. В данной работе не будут рассматриваться принципы построения систем, защиты от физического доступа злоумышленником к автомобилю.
Система с ассиметричным шифрованием – это система, в которой подразумевается, что существует два ключа, один закрытый, второй открытый и закрытый ключ знает только одна сторона. В данном устройстве закрытый ключ известен только брелоку, но в то же время автомобиль может проверить, является ли брелок, запрашивающий доступ к транспортному средству обладателем закрытого ключа, в то же время не раскрывая закрытый ключ. По открытому каналу связи всегда будут передаваться только фактически случайные последовательности и функции от них, так что по функции нельзя вычислить обратную. Более подробное описание алгоритма приведено в пункте 3 данной работы.
1.3 Схема проверки подлинности ключа
Операция проверки аутентичности ключа состоит из нескольких шагов:
1 Ключ, в результате нажатия кнопки, посылает на автомобиль запрос на авторизацию и ждёт ответа.
2 Автомобиль, получив запрос на авторизацию, генерирует случайное число r, сопоставимое в битовом представлении с выбранным модулем N.
3 После чего автомобиль вычисляет R = rG и S’ = rQ. Точка R возвращается на ключ, а точка S’ остаётся в секрете.
4 Ключ, получив R, вычисляет kR = rkG = S и передаёт S на автомобиль.
5 Автомобиль проверяет совпала ли точка S, полученная с ключа с оригиналом S’ и производит разблокировку автомобиля в случае успешной аутентификации.
На рисунке 1.2 можно видеть диаграмму последовательности выполнения протокола аутентификации. Последнее сообщение с вычисленным S может быть дополнено информацией о необходимой операции, которую должен будет выполнить автомобиль, однако это нельзя произвести просто добавив к сообщению номер операции, так как это сделает возможным атаку с подменой операции.
В приведённом протоколе со стороны ключа выполняется только одна операция умножения в поле эллиптической кривой, что является неоспоримым преимуществом данного протокола среди возможных других, так как данная операция является наиболее трудоёмкой и приводит ключ к задержке до 2-3 секунд.
В данном протоколе важно, чтобы случайная последовательность R была действительно гарантированно случайной, сгенерирована надёжным генератором случайных последовательностей. Построение такого генератора описано в данной работе. Модуль генератора является важной составляющей всей системы, так как плохо спроектированный генератор случайных чисел может скомпрометировать безопасность всей системы. Поэтому следует уделить особое внимание работе этого модуля.
Со стороны автомобиля требуется вычисление двух достаточно трудоёмких операций [1], поэтому система, разрабатываемая для той части устройства, которая будет находиться в транспортном средстве должна обладать большими вычислительными возможностями, чем та часть, которая находится в электронном ключе. В то же время стоит продумать возможность предварительного вычисления каких-либо параметров системы и сохранение их на устройство постоянной памяти.
Рисунок 1.2 – диаграмма последовательности процесса аутентификации.
Разрабатываемая система должна производить процедуру аутентификации пользователя транспортного средства посредством проведения «диалога» электронного ключа и автомобиля. Каждый сеанс аутентификации должен быть проинициализирован случайной последовательностью, сгенерированной криптографическим стойким генератором случайных последовательностей. Это позволяет лишить злоумышленника возможности проведения атаки воспроизведения, в которой происходит накапливание сообщений запрос-ответ и воспроизведение их позже. Длина случайной последовательности должна быть достаточной, чтобы свести вероятность её повторения к пренебрежительно малой величине.
Основная задача, поставленная в данной работе это оценка временных параметров алгоритмов, работающих на ключе, так как столь небольшое устройство не может обладать большими вычислительными мощностями. Второй параметр, на который стоит обратить внимание это энергопотребление устройства, интерес к которому так же обуславливается портативностью автомобильного ключа.
Разрабатываемый ключ имеет ряд уникальных характеристик. В устройстве не будет необходимости сохранять какие-либо сеансовые данные. Вся информация, необходимая ключу, программируется в него один раз, на этапе его создания. В результате сеанса аутентификации не возникает необходимости обновления переменных в прошивке ключа. Разрабатываемая система будет осуществлять аутентификацию за счёт вычислений в кольце эллиптической кривой.
Особенность деталей реализации алгоритма в том, что они без какой-либо угрозы для надёжности проектируемого устройства могут быть опубликованы в данной работе. Единственная секретная часть это параметр алгоритма – произвольное число по достаточно большому опять-таки открыто известному модулю. Достаточно большая сложность вычислительных операций оказывает неблагоприятное воздействие на энергопотребление устройства.
Одной из задач данной работы является определение необходимых мер по понижению энергопотребления и увеличения срока службы аккумулятора устройства. Однако характер системы не требует ни постоянной работы ключа, ни постоянной работы автомобильной части сигнализации, что благоприятно влияет на расход аккумулятора автомобиля и батарейки ключа.
Случайная составляющая сеанса аутентификации диктует необходимость со стороны автомобиля в наличии надёжного генератора случайных последовательностей. В данной работе рассмотрено проектирование данного модуля с учётом возможности подключения различных внешних источников энтропии.
Проектируемая система состоит из двух частей. С одной стороны это компактное устройство в виде автомобильного ключа, с другой стороны – это автомобильная сигнализация, производящая аутентификацию пользователя транспортного средства. Автомобильный ключ должен обладать малым энергопотреблением в течение сеанса аутентификации, должен поддерживать достаточно сложные алгоритмы осуществляющие работу протокола связи с автомобилем. В то же время, ключ должен проводить необходимые операции за разумный промежуток времени: от одной до трёх секунд. Слишком большая задержка вызовет дискомфорт у пользователя данной системы. Однако алгоритмы ассиметричного шифрования требуют достаточно сложных вычислительных операций, время работы которых порой измеряется минутами, что непозволительно для проектируемой системы.
Задачей данной работы является произвести анализ временных характеристик выбранных алгоритмов. Произведя анализ временных характеристик, необходимо сделать вывод о целесообразности использования выбранных алгоритмов с учётом специфики требований, выдвигаемых к устройству.
Один из видов атак на подобные устройства является атака, основанная на измерении энергопотребления устройства с целью нахождения секретных параметров алгоритма. В данной работе не будут рассматриваться способы по избеганию уязвимости к подобным видам атак.
Данное устройство должно иметь возможность осуществления полного набора необходимых функций, в том числе дополнительных, повышающих безопасность транспортного средства, таких, как набор пин-кода на ключе автомобиля с целью обезопасить транспортное средство в случае кражи самого ключа. С другой стороны, ряд требований предоставляется к части системы, работающей внутри транспортного средства и осуществляющего проверку запроса с автомобильного ключа, инициализацию протокола аутентификации и управление системами автомобиля.
1.4 Вывод
Целью проектирования данной системы является разработка экономически выгодного решения для аутентификации пользователя транспортного средства. Доказательство уместности использования алгоритмов ассиметричного шифрования на устройстве с ограниченными вычислительными возможностями. Выбор оптимальных параметров и подбор необходимой элементной базы для решения поставленной задачи. Анализ энергопотребления устройства и оценка влияния энергопотребления автомобильной части на расход аккумулятора автомобиля. Моделирование в среде схемотехнического моделирования и оценка временных параметров готового изделия.
Целью данной работы является выявление минимального набора функций, которые необходимы в проектируемом устройстве. В дополнительные функции входят, например, набор пользователем пин-кода на ключе с целью предотвратить возможность вскрытия транспортного средства злоумышленником при краже ключа или функция автоматического старта двигателя.
Задача состоит в том, чтобы предоставить алгоритм работы устройства, помимо таких типичных параметров, как быстродействие и криптографическая стойкость, такие параметры, как влияние на аккумулятор транспортного средства и устойчивость к атакам свойственным только устройствам данного класса.
Проектирование рассмотренного устройства является актуальным и востребованным вопросом. Разработка позволит сделать некоторые важные шаги в области криптографии на устройствах с ограниченными вычислительными возможностями. Анализ существующих источников показал, что к сожалению информация по устройствам, выпускаемым рынком в данный момент является сокрытой, что несомненно можно считать минусом этих выпускаемых устройств. Система же, разрабатываемая в данной работе не подвергается уязвимости при раскрытии деталей реализации алгоритмов, поэтому описание этой системы может быть свободно опубликовано в текущем проекте без опасений в приведении системы в вид, невозможный для реализации в конечном устройстве.
2 РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ
В данном разделе разработана структурная схема проектируемого устройства, описаны ключевые концепты, принципы работы и основные идеи. Разрабатываемая система состоит из двух ключевых составляющих частей. Первая часть – это радиоключ или другими словами автомобильный брелок. Данное устройство автономно и содержит секретные параметры системы.
Радиоключ пользователь транспортного средства держит в сохранности при себе, не давая злоумышленнику завладеть им. Вторая часть проектируемой системы – это непосредственно схема, работающая на автомобиле. Она производит аутентификацию пользователя и подаёт сигнал на схему блокировки автомобиля.
2.1 Упрощённая структурная схема системы
Для начала рассмотрим более простой вариант схемы системы, после чего перейдём к проектированию структурной схемы система на более подробном уровне, рассматривая каждый элемент структурной схемы отдельно.
На рисунке видно, что радиоключ представляет собой отдельное автономное устройство, взаимодействующее по радиоканалу с системой на автомобиле. Принцип работы ключа продиктован существующими устройствами и является проверенным и удобным методом, для подтверждения аутентичности пользователя транспортного средства.
Радиоключ представляет собой одну схему на микроконтроллере с приёмопередатчиком и элементом питания. Ключ так же производит взаимодействие с пользователем путём приёма команд на выполнения через нажатие на кнопки и уведомления пользователя об успешной либо неуспешной операции с помощью светодиодов.
Количество элементов управления радиоключом и их назначение может быть произвольным, так как ключ не изменяет логики своей работы в зависимости от нажатой кнопки. Номер нажатой кнопки передаётся на систему автомобиля в виде кода операции, которая в свою очередь решает, что делать с тем или иным кодом.
Система на автомобиле состоит из трёх основных крупных частей. Главная и основная часть, проектируемая в данной работе – это система аутентификации пользователя. Она представляет собой приёмопередатчик, связанный с микроконтроллером, через который микроконтроллер принимает команды и сообщения протокола аутентификации от пользователя, а так же отправляет сообщения протокола аутентификации и сообщения об успешности той или иной операции. Данный блок связан с двумя другими блоками системы на автомобиле. Первый из них – это блок необходимый для алгоритма аутентификации – блок генератора случайных чисел. С помощью него обеспечивается случайность и уникальность каждого нового протокола аутентификации. Взаимодействие этих двух блоков происходит с помощью протокола USART. Упрощённая структурная схема системы изображена на рисунке 2.1.
Рисунок 2.1 – Упрощённая структурная схема системы
Блок генератора случайных чисел представляет собой отдельную схему на недорогом микроконтроллере, обеспечивающую постоянную генерацию криптографически-надёжной случайной последовательности. Данный блок проектируется отдельно, так как представляет собой самостоятельное устройство.
С помощью механизма программного пула микроконтроллер модул генератора случайных чисел накапливает случайные данные (энтропию) из различных источников, таких, как быстрый счётчик, шумовой диод, шум с датчика АЦП. В данном блоке можно использовать преимущество того, что устройство располагается в автомобиле – устройстве, обладающем множеством различных датчиков и дополнительных источников случайности. Схема генератора случайных чисел позволяет подключение множества разнообразных источников энтропии.
Модуль блокировки автомобиля – это третье важное устройство схемы аутентификации. Данное устройство производит блокировку и разблокировку транспортного средства в зависимости от результата осуществления протокола аутентификации. В данной работе разработка схемы блокировки и разблокировки автомобиля не производится, выход схемы аутентификации представляет собой два сигнала – заблокировать и разблокировать. Переход сигнала из нулевого в положительный уровень (передний фронт) обозначает команду блокировки или соответственно разблокировки автомобиля.
Рассмотрим более подробно структурные элементы схемы аутентификации. Радиоключ представляет собой наиболее простое устройство в данной работе, однако схема аутентификации заключает в себе несколько блоков.
2.2 Структурная схема модуля аутентификации
Модуль аутентификации представляет собой основное устройство проектируемой системы. Он отвечает за проверку подлинности пользователя, посредством проведения диалога с радиоключом пользователя, а так же посылает команды на систему блокировки транспортного средства в случае успешно проведённого протокола аутентификации. Структурная схема модуля аутентификации представлена на рисунке 2.2. Модуль аутентификации представляет собой достаточно простое устройство, состоящее из всего нескольких модулей.
Решающее устройство представляет собой микроконтроллер, который выполняет алгоритмы аутентификации. Микроконтроллер получает питание от бортовой сети автомобиля через понижающий DC-DC преобразователь. Принцип работы микроконтроллера позволяет ему переходить в режим энергосбережения, что позволяет производить экономию энергетических ресурсов.
В случае потери питания система блокировки транспортного средства будет просто заблокирована, что не будет подвергать автомобиль опасности атаки каким-либо образом направленную на отключение питания микроконтроллера. Сам микроконтроллер связан с блоком блокировки транспортного средства только через команды, активный уровень которых воспринимается по переднему фронту сигнала.
Рисунок 2.2 – Структурная схема модуля аутентификации
2.2.1 Схема питания системы аутентификации. Схема питания имеет достаточно простой вид, за счёт того, что транспортное средство предоставляет достаточно надёжный источник питания. Схема представляет собой понижающий DC-DC преобразователь. DC-DC обозначает, что входной сигнал постоянного типа будет преобразован в выходной сигнал так же постоянного типа, но с другими параметрами, в данном случае сигнал 12 вольт, полученный с бортовой системы автомобиля, преобразовывается в сигнал 5 вольт, с помощью которого можно осуществить питание решающего устройства. Модуль DC-DC преобразователя имеет достаточно простое устройство и представлен в проектируемом устройстве одной микросхемой. Однако этот модуль необходим для преобразования напряжения питания, получаемого из бортовой системы автомобиля в напряжение питания, необходимое для цифровых элементов схемы, таких, как микроконтроллеры.
2.2.2 Устройство постоянной памяти. Устройство постоянной памяти необходимо для решающего устройства для того, чтобы уменьшить скорость работы решающего устройства путём сохранения некоторых результатов вычислений для возможности последующего доступа к заранее вычисленным параметрам. Разрабатываемая система спроектирована так, что при потери работоспособности устройства постоянной памяти система аутентификации не теряет свою стойкость перед злоумышленником и ни в коем случае не становится детерминированной, единственный недостаток системы с вышедшей из строя постоянной памятью – это увеличение времени на выполнение процедуры аутентификации. Так как решающее устройство не сможет считать заранее вычисленные параметры алгоритма, придётся вычислять их во время выполнения протокола аутентификации, что несколько увеличит время его работы.
2.2.3 Приёмопередатчик. Приёмопередатчик представляет собой устройство, организующее радиосвязь с брелоком, содержащим секретные параметры, позволяющие аутентифицировать пользователя транспортного средства. Характер устройства предполагает, как приём сообщений через открытый радиоканал, так и передачу. Это обусловлено диалоговым методом аутентификации. Изначально, сообщение, инициирующее протокол аутентификации отправляется со стороны брелока, получив сообщения приёмопередатчик вывод решающее устройство из режима ожидания.
Получив сообщение, инициирующее протокол аутентификации, решающее устройство считывает сохранённые параметры сеанса с устройства постоянной памяти и отправляет сообщение, содержащее вызов для ключа, ответом на это сообщение будет успешное либо неуспешное сообщение-ответ, которое закончит сеанс аутентификации.
Сеанс аутентификации состоит из двух частей. В результате первой части брелок получает сообщение с системы автомобиля, вычислив функцию от полученного параметра, брелок отправляет сообщение на автомобиль. Эти две части не связанны друг с другом и могут выполняться в любом количестве в любой последовательности, что упрощает программную реализацию алгоритмов, однако усложняет возможные атаки на систему. Однако во время протокол аутентификации действия, совершаемые системой предопределены. Действия, выполняемые брелоком являются детерминированными, что упрощает реализацию алгоритма радиоключа, что в то же время позволит реализовать более быстрый алгоритм.
2.3 Генерация случайной последовательности
2.3.1 Предназначение генератора случайных чисел. В любой криптографической системе, чтобы сгенерировать действительно надёжный ключ, нужен генератор случайных чисел (random number generator – RNG). Генерация действительно хорошей случайности – неотъемлемая и к тому же наиболее сложная часть многих криптографических операций. С неформальной же точки зрения случайность можно определить как непредсказуемость значений данных для злоумышленника, даже если тот предпримет активные шаги для борьбы со случайностью. Мера случайности называется энтропией (entropy). В нашей схеме генератор случайных чисел будет получать биты энтропии из нескольких источников. Во-первых, это будет уровень сигнала, полученного с аналого-цифрового преобразователя. 10-разрядный АЦП позволяет получать значение напряжения на одном из своих выводов с достаточно большой точностью, однако самые младшие биты как правило содержат так называемый шум. Генератор случайных чисел будет замерять значение на входе АЦП и полученное 10-разрядное число будет преобразовывать в 1 бит энтропии следующим образом: будет производить сложение по модулю сначала первых двух битов, потом результата и третьего бита, далее результата и третьего бита и так, пока не сложит все 10 битов, то есть просто производит сложение по модулю два 10 битов числа, полученного с АЦП, после чего прибавляет к получившемся биту значение на выводе микроконтроллера, к которому подключен высокочастотный источник импульсов.
При необходимости несложно добавить другие источники энтропии, никакой лишний источник не сделает хуже генератору случайных чисел, но только лучше.
2.3.2 Генератор случайных чисел. Структурную схему программы ГСЧ можно видеть на рисунке 2.3. ГСЧ – устройство, которое, получая с источников энтропии случайные данные, будет генерировать псевдослучайную последовательность, основанную на случайных данных. Устройство будет связанно с главным модулем по протоколу USART, по которому главный модуль будет запрашивать у генератора случайные числа. Генератор при получении запроса на случайные числа, будет, опять-таки по протоколу USART отправлять данные в главный модуль. Данные с источников энтропии будут накапливаться в пул, своеобразный массив случайных данных. Так же модуль ГСЧ будет использовать устройство постоянной памяти, чтобы хранить своё состояние в период, когда на схему не подано питание. Чтобы сделать генератор случайных чисел ещё более надёжным в схему стоит добавить часы реального времени. Каждый раз при старте работы генератор должен считывать текущее время и инициализировать своё состояние на основе этого времени, это позволило бы установить зависимость начального состояния ГПСЧ от текущего времени. Такая система часто используется в персональных компьютерах. При старте программы считывается значение текущего времени и используется для инициализации генератора.
Рисунок 2.3 – Структурная схема генератора случайных чисел
2.3.3 Устройство постоянной памяти. Чтобы каждый раз при старте системы, генератор псевдослучайных чисел не оказывался в одном и том же состоянии, будет использоваться устройство постоянной памяти для хранения состояния генератора случайных чисел. При старте ГПСЧ загружает своё сохранённое состояние из памяти и начинает свою работу уже с того состояния, на котором остановился в предыдущий раз. При особой команде от главного модуля, модуль генератора случайных чисел получит запрос на завершение работы. При этом запросе он остановит свою работу и сохранит своё текущее состояние на устройство постоянной памяти, чтобы в следующий раз можно было инициализировать генератор, считав состояние из памяти.
2.3.4 Источники энтропии. В качестве источников энтропии могут выступать любые источники шумов или случайные процессы, например младшие биты АЦП преобразователя, как правило, содержат шум, так же такие устройства, как шумовой диод или транзистор позволяют получать некоторую порцию случайности, счётчики, работающие на высокой частоте, неопределённое состояние RS-триггера, всё это можно использовать как источники случайных данных. В данной работе мы ограничимся только сигналом с АЦП и битом с быстрого счётчика.
2.4 Структурная схема модуля радиоключа
Радиоключ представляет собой достаточно простое в плане составляющих элементов устройство, структурная схема ключа представлена на рисунке 2.4.
Рисунок 2.4 – Структурная схема модуля радиоключа
Радиоключ системы аутентификации пользователя транспортного средства состоит из двух основных составляющих компонентов. Первый компонент – это приёмопередатчик. Данное устройство предназначено для отправки и получения сообщений с системы автомобиля. Данное устройство представлено одной микросхемой, получающей питание из того же источника, что и микроконтроллера. Приёмопередатчик связан с решающим устройством через шину SPI. Приёмопередатчик обязан обеспечивать проверки битов чётности принятых сообщения, а так же организовывать необходимую модуляцию и подготовку сигнала для передачи по открытому радиоканалу связи. На стороне автомобиля установлен приёмопередатчик, основанный на аналогичной микросхеме, что упрощает проектирование устройства.
Наличие приёмопередатчика, позволяющего выполнять протокол аутентификации по открытому каналу важное требования к системам подобного рода. Данное свойство системы позволяет с одной стороны увеличить удобство использования системы, однако подвергает систему опасности возможности осуществления различных атак по стороннему каналу путём перехвата или подмены сообщений.
2.4.1 Решающее устройство. Второй элемент структурной схемы модуля радиоключа системы аутентификации пользователя транспортного средства – это решающее устройство. Данный элемент представляет собой микропроцессорное устройство. Требования к данному модулю следующие. Во-первых, необходима возможность работы данного микроконтроллера на достаточной частоте, чтобы выполнять алгоритмы протокола аутентификации за минимальное возможное время. В то же время устройство должно обладать достаточно небольшим расходом энергии, что обусловлено автономным характером системы и небольшими размерами конечного устройства. Так же, небольшие размеры устройства диктуют необходимость выбора микроконтроллера небольших габаритных размеров.
Решающее устройство содержит в себе основные алгоритмы работы системы и производит процесс аутентификации пользователя транспортного средства соответственно этим заданным алгоритмам. В данном проекте, система имеет достаточно простой вид в виде структурной или принципиальной схемы. Это обусловлено достаточно объёмной программной составляющей системы.
2.5 Вывод
Собрав воедино разработанные структурные схемы отдельных элементов системы, можно получить схему, изображённую на рисунке 2.5. На изображённом рисунке можно видеть взаимодействие всех модулей разработанной системы. На рисунке представлено три модуля: модуль радиоключа, генератора случайных чисел и модуль аутентификации.
Рисунок 2.5 – Полная структурная схема системы
Модуль радиоключа взаимодействует с модулем аутентификации посредством пересылки сообщения по радиоканалу. Эти два модуля связаны между собой с помощью приёмопередатчиков. Это необходимо потому, что протокол аутентификации реализован с помощью диалогового метода. Модуль аутентификации связан с модулем генератора случайных чисел посредством интерфейса USART, генератор случайных чисел обеспечивает модуль аутентификации случайными данными, которые необходимы, чтобы реализовать действительно безопасный протокол. Каждый новый сеанс аутентификации инициируется уникальной случайной последовательностью. Модуль аутентификации посылает сигнал на устройство блокировки транспортного средства. Данное устройство может различаться в различных автомобилях, то есть интерфейс подключения может варьироваться от одного транспортного средства к другому.
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. Выбранная библиотека является хорошо протестированной и надёжной библиотекой, хорошо зарекомендовала себя как качественная и быстрая реализация алгоритмов криптографии на языке программирования си.
3.3 Тестирование скорости выполнения протокола
Прежде всего, следует провести тестирование скорости выполнения наиболее трудоёмких операций. Проанализировав это можно сделать выводы о целесообразности реализации всей последующей системы. Специфика системы ограничивает максимальное возможное время работы алгоритмов аутентификации. Чрезмерно большое время работы устройства может повлечь за собой дискомфорт со стороны пользователя или даже невозможность пользования спроектированным устройством. В первую очередь необходимо обнаружить наиболее трудоёмкую операцию алгоритма аутентификации.
3.3.1 Обнаружение наиболее вычислительно сложной операции. Приведём достаточно абстрактную версию алгоритма аутентификации. Здесь не указаны процедуры принятия и посылки сообщения ключом и автомобилем, так как эти процедуры неизбежно будут присутствовать в конечном устройстве. В алгоритме рассмотрена исключительно часть системы, ответственная за трудоёмкие криптографические операции и математические процедуры, которые необходимо выполнить устройству для успешного осуществления протокола аутентификации:
1 Ключ посылает на автомобиль запрос на авторизацию и ждёт ответа.
2 Автомобиль генерирует случайное число r. После чего вычисляет R=rG и S=rQ. R возвращается на ключ, точка S остаётся в секрете.
3 Ключ, получив R, вычисляет kR = rkG = S` и передаёт S` на автомобиль.
4 Автомобиль проверяет S=S` и производит разблокировку автомобиля.
Пункт первый алгоритма требует константного времени работы, так как время работы системы для того, чтобы послать запрос постоянно, невелико и не зависит от длины ключа и каких либо сессионных параметров. В общем случае оно не зависит так же от непосредственно самой проектируемой системы.
Второй пункт алгоритма требует от автомобиля сгенерировать случайную последовательность r. Время работы генератора случайных чисел линейно зависит от количества необходимых сгенерированных бит. Однако правильно спроектированный генератор заранее накопит необходимое количество энтропии и сгенерирует случайную последовательность очень быстро. В данной работе был спроектирован генератор, который удовлетворяет этому требованию и время его работы не должно оказать значительного влияния на время работы всей процедуры аутентификации пользователя транспортного средства.
Далее во втором пункте системе на стороне автомобиля необходимо произвести операцию скалярного умножения в поле эллиптической кривой. Это достаточно трудоёмкая операция. Целью данного раздела мы ставим исследование времени выполнения этой операции. Во втором пункте алгоритма таких процедур необходимо выполнить две, однако, вторая процедура может быть выполнена уже после отправки ответа на ключ, поэтому мы исключим задержку вносимую вычислением второго скалярного произведения во втором пункте алгоритма.
В третьем пункте алгоритма ключ принимает данные переданные автомобилем и снова производит трудоёмкую операцию скалярного произведения в поле эллиптической кривой. Это наиболее узкое место системы в плане времени работы, так как достаточно трудно вычислимая процедура выполняется на небольшом устройстве с ограниченной вычислительной мощностью. Положительная сторона приведённого алгоритма в отличие от распространённого алгоритма ECDSA в том, что на ключе выполняется только одна операция скалярного умножения. Выходит, что часть процедуры аутентификации выполняет автомобиль, способный обладать менее ограниченным в вычислительном плане процессорным устройством.
В четвёртом пункте после передачи сообщения, подтверждающего аутентичность ключа на автомобиль, автомобилю остаётся сверить переданную переменную с вычисленной. Данная операция достаточно тривиальна и не занимает значительного времени во всей процедуре работы системы.
Таким образом, две наиболее трудоёмкие операции – это операции скалярного умножения в поле эллиптической кривой. Первая из двух операций выполняется на процессоре транспортного средства, который способен обладать достаточно большой вычислительной мощностью, однако всё-таки следует произвести оценку ожидаемого времени работы этой операции. Вторая операция скалярного умножения выполняется на ограниченном в вычислительном плане устройстве, автомобильном ключе. Это наиболее узкое место системы и необходимо в первую очередь обратить внимание на оценку времени работы этой части системы.
3.3.2 Моделирование в среде схемотехнического моделирования. Для выяснения узких в плане времени работы мест системы, необходимо провести моделирование в среде схемотехнического моделирования. Данная мера позволит оценить целесообразность реализации конечного устройства и возможно некоторые дальнейшие необходимые улучшения, которые важно произвести прежде, чем производить дальнейшее проектирование системы. Изображение модели приведено на рисунке 3.1.
В качестве среды моделирования выберем Proteus. Proteus – среда для проектирования и отладки электронных устройств, в том числе выполненных на основе микроконтроллеров различных семейств. Данная среда позволяет произвести симуляцию работы реального микроконтроллера и получить представление о времени работы проектируемых алгоритмов. Для вывода информации из микроконтроллера используется интерфейса USART, а именно подключенный через него виртуальный терминал.
Рисунок 3.1 – Модель устройства в среде моделирования
Время работы операций на микроконтроллере младших семейств не станет ни значительно больше, ни значительно меньше. Например, если рассмотреть микроконтроллер Atmega 8, не смотря на сильное отличие его от микроконтроллера Atmega 256, микроконтроллер сможет реализовать приведённый алгоритм так же эффективно, как и его более продвинутая версия. Так как набор инструкций на обоих микроконтроллерах одинаковый и разрядность системной шины, как на микроконтроллере Atmega 256, так и на микроконтроллере Atmega 8 равны 8 битам. Для проверки времени выполнения наиболее трудоёмкой операции запустим моделирование с кодом, изображённым на рисунке 3.2.
Рисунок 3.2 – Фрагмент кода программы тестирования скорости выполнения алгоритма в среде разработки Sublime
Данная программа производит умножение базовой точки на скаляр 4 раза, после чего производит умножение произвольной точки на скаляр 4 раза. Результаты времени работы в количестве циклов программа выводит на виртуальный терминал по интерфейсу USART. Данная программа позволяет оценить количество циклов 8-битного микроконтроллера, которое необходимо потратить на вычисление операции умножения точки эллиптической кривой на скаляр. Результаты работы программы приведены на рисунке 3.3.
Рисунок 3.3 – Результаты работы программы
Так же у выбранной библиотеки существует версия, оптимизированная по размеру кода программы. Данная версия предназначена для микроконтроллеров с ограниченными ресурсами памяти. Ниже, на рисунке 3.4, приведены результаты выполнения версии программы, основанной на библиотеке, оптимизированной по размеру.
Как видно на рисунке 3.4, версия программы, оптимизированая для работы на микроконтроллерах с малым объёмом памяти программ выполняется почти за такое же количество циклов, как версия программы оптимизированная исключительно на скорость работы. Это позволяет нам использовать более дешёвые микроконтроллеры с меньшим объёмом памяти программ.
Рисунок 3.4 – Результаты работы упрощённой программы
Зная количество тактов, за которые выполняется алгоритм, можно без труда подсчитать время выполнения этого алгоритма. Для того, чтобы подсчитать время так же нужно знать частоту, на которой будет работать данный микроконтроллер. Ниже приведена таблица, которая показывает время выполнения алгоритма в зависимости от частоты работы микроконтроллера и версии библиотеки для работы с эллиптическими кривыми.
Таблица 3.1 – Время выполнения алгоритма
Частота работы микроконтроллера | 4Мгц | 8Мгц | 16Мгц | 32Мгц |
Первая версия | 3,49с | 1,74с | 0,87с | 0,44с |
Вторая версия | 3,52с | 1,76с | 0,88с | 0,44с |
По приведённой таблице можно сделать предсказуемы вывод, что с ростом частоты микроконтроллера прямо пропорционально уменьшается время работы алгоритма. Естественно было бы выбрать наибольшую частоту, которая сводит время работы алгоритма к минимуму, однако при реализации схемы, работающей на частоте свыше 16 Мгц могут возникнуть трудности. В то же время 0,87–0,88 секунд – это достаточно небольшое время, которое вряд ли вызовет какой-то дискомфорт у пользователя транспортного средства.
Следовательно, в данной работе мы будем полагать, что полное время работы каждого устройства – это приблизительно одна секунда, а полное время работы алгоритма аутентификации составляет порядка двух секунд. Это не идеальное решение, однако это время позволяет реализовать полноценный алгоритм аутентификации на надёжной основе криптографии эллиптических кривых.
Частота работы микроконтроллера – 16 Мгц. Это позволит быстрее выполнять трудоёмкие операции и вызывать меньше дискомфорта у пользователя транспортного средства.
3.4 Проектирование алгоритма работы системы
Выбрав необходимые инструменты и проанализировав параметры системы, мы можем приступать к проектированию программной части. В предыдущий разделах был обоснован выбор в качестве языка программирования язык Си. В качестве микроконтроллера, используемого в системе было выбрано семейство микроконтроллеров Atmega. В качестве эллиптической кривой была выбрана curve25519. Параметры системы не были изменены относительно стандартных, предлагаемых с эллиптической кривой curve25519.
3.4.1 Разработка алгоритма функционирования программы радиоключа. Разрабатываемое устройство должно посылать запрос на автомобиль, после чего принимать с автомобиля последовательность – точку на эллиптической кривой, далее применять к ней операцию скалярного умножения и полученную координату новой точки на кривой посылать на автомобиль. В данной блок-схеме рассмотрен процесс работы алгоритма в результате нажатия пользователем на кнопку радиоключа, нажатие кнопки инициирует работу всего проектируемого устройства.
Начало работы программы микроконтроллера происходит по прерыванию, которое в свою очередь срабатывает по нажатию одной из кнопок брелока. Каждая отдельная кнопка отвечает за отдельную функцию брелока. Это может быть «разблокирование автомобиля», «блокировка автомобиля» или другие необходимые функции. Первым же инициирующим сообщением на автомобиль отправляется номер команды. Злоумышленник может подменить этот номер, так как он никак не защищён, поэтому пользователь транспортного средства должен следить за реакцией автомобиля, например при закрытии автомобиля, сигнализация должна издать уникальный соответствующий звук и произвести световой сигнал об успешной операции блокировки транспортного средства, тогда подмена команды не сможет остаться незамеченной. Однако данная функция не будет проектироваться в данной работе. Выполнение данной функции в данном проекте возлагается на блокирующую систему траспортного средства.
В конечном счёте, весь процесс авторизации необходим для того, чтобы позволить пользователю транспортного средства управлять автомобилем и нет смысла производить авторизацию только ради авторизации. Микроконтроллеры семейства Atmega позволяют назначить прерывание на подачу сигнала на определённый вход микроконтроллера. Это значит, что мы можем спроектировать устройство, которое большую часть времени будет находиться в режиме ожидания и начинать свою работу только при нажатии кнопки, которая будет подавать напряжение на определённый выход микроконтроллера. Алгоритм работы системы представлен на рисунке 3.5.
Рисунок 3.5 – Блок-схема алгоритма работы устройства
Сразу после начала работы устройству необходимо загрузить из памяти в переменные значения параметров системы, а именно секретный ключ k. Этот ключ не будет изменяться во время работы системы, поэтому может быть расположен в read-only памяти и записан туда единожды во время создания брелока. Так же из памяти загружается уникальный идентификатор ключа, который представляет собой 128-битовое число, уникальное для каждого брелока в мире.
Программа должна обязательно запомнить номер нажатой кнопки, чтобы передать его на автомобиль во время процедуры инициализации протокола аутентификации. Сам брелок может не знать, что значит та или иная кнопка, на корпусе брелока может быть человеко-понятное обозначение действия, которое производит кнопка брелока, однако самой программе совершенно бесполезна информация о том, что пытается сделать пользователь транспортного средства. Все действия будут спрятаны за абстрактными номерами. Только автомобиль и пользователь будут знать, что должно происходить при нажатии той или иной кнопки. Однако устройство обязано передать номер именно той кнопки, которая была нажата.
Номер нажатой кнопки передаётся на автомобиль по каналу связи, в данной работе – это радиоканал. Злоумышленник может перехватить эту информацию, однако об этом не стоит беспокоиться, так как, даже не перехватывая номер нажатой кнопки, злоумышленник может просто увидеть со стороны, какое действие производится пользователем, будь то разблокирование автомобиля или установка его в режим работы сигнализации. Сообщение, передаваемое на автомобиль, содержит одно число, обозначающее номер выполняемой операции, а так же уникальный идентификатор ключа. Автомобиль обрабатывает запросы только от ключей, идентификаторы которых зарегистрированы в автомобиле.
Ответ со стороны автомобиля должен прийти достаточно быстро, брелок ожидает прихода ответа в течение 100 мс. Спустя это время ключ проверяет, пришёл ли ответ со стороны автомобиля, и в случае, если ответ не пришёл, сообщает пользователю о невозможности связаться с автомобилем путём зажигания красного светодиода на брелоке. В случае успешного получения ответа с автомобиля брелок приступает к вычислению ответа на сообщение автомобиля, но перед этим уведомляет пользователя с помощью зажигания жёлтого светодиода на брелоке.
Сообщение автомобиля содержит 254-битовую координату точки на эллиптической кривой. Чтобы вычислить ответ, брелок должен вычислить скалярное произведение этой точки на секретный ключ. Это происходит с помощью выбранной в данной работе библиотеки μNaCl. Вычисление скалярного произведения – достаточно трудоёмкая операция и как было показано в данной работе занимает порядка одной секунды. В сообщении автомобиля содержится одно число размером в 254 бита. Это число представляет собой координату X на эллиптической кривой. Используемая в данной работе библиотека не оперирует координатой Y, поэтому в метод API библиотеки необходимо передать только два параметра – это координату X и секретный ключ k. В результате вычисления скалярного произведения, алгоритм получит координату X новой точки на кривой. Эта координата будем отправлена на автомобиль в качестве подтверждения аутентичности ключа.
После описанной выше операции брелок будет ожидать ответа автомобиля 100 мс. Если в течение этого времени ответ не придёт, то брелок повторит отправку уже вычисленного сообщения для автомобиля и опять повторит ожидание в 100мс. Если ответ во второй раз не придёт, брелок выдаст пользователю сигнал ошибки в виде красного светодиода. При получении успешного ответа со стороны автомобиля, брелок уведомляет пользователя с помощью зелёного светодиода и переходит в режим ожидания следующего нажатия кнопки брелока.
3.4.2 Разработка алгоритма работы запирающего устройства. В данном разделе под автомобилем мы понимаем часть системы, расположенную в транспортном средстве, отвечающую за запирающую функцию системы. Автомобилю необходимо принять запрос от брелока, отправить сообщение о начале протокола аутентификации и проверить ответ, полученный с брелока. Блок-схема алгоритма работы схемы автомобиля приведена на рисунке 3.6. В данной блок-схеме рассмотрен процесс работы алгоритма системы транспортного средства, инициированный прерыванием с приёмопередатчика. Приёмопередатчик посылает прерывание на микроконтроллер через внешний вывод.
В начале работы алгоритм системы, расположенной на автомобиле, принимает запрос, полученный с брелока. В первую очередь происходит проверка идентификатора брелока. Это сделано с той целью, чтобы автомобиль не начал обрабатывать запрос от брелока, не принадлежащего данному автомобилю просто по той причине, что автомобиль случайно оказался рядом с другим автомобилем, имеющим подобную систему. В случае несовпадения значения идентификаторов автомобиль система немедленно прекращает свою работу, так, как запрос был явно предназначен для другого автомобиля.
Рисунок 3.6 – Блок-схема алгоритма работы системы автомобиля
В случае совпадения значения идентификатора с одним из зарегистрированных в системе, автомобиль продолжает процесс аутентификации. После проверки идентификатора брелока, в первую очередь при начале процесса аутентификации автомобиль загружает из памяти текущие параметры системы. В качестве памяти для устройства необходимо использовать какую-либо внешнюю память достаточно большого объёма. Записываться и считываться будет не более 1 Кб данных, однако большой объём памяти позволит увеличить срок её службы при многократных операциях записи. Предполагается, что срок службы всей системы будет составлять порядка 10 лет.
После загрузки параметров системы алгоритм системы автомобиля проверяет тип запроса, пришедшего с брелока. Существует два вида запросов. Первый запрос – это запрос координаты точки. В результате этого запроса, автомобиль отправляет на брелок задачу, решив которую, брелок докажет свою аутентичность. Второй тип запроса – это непосредственно получение решения задачи. В случае успешного решения автомобиль выполняет операцию, запрошенную пользователем.
В случае, если этот запрос представляет собой запрос координаты точки, автомобиль производит отправку координаты. Эта координата представляет собой задачу, которую брелок должен решить. Вычислив функцию от этой координаты, брелок отправит результат на систему автомобиля. Если данная координата отправляется в первый раз, то система автомобиля должна запомнить время в которое был данный запрос. Для этого система должна быть снабжена часами реального времени. Часы реального времени так же используются в модуле генератора случайных чисел и могут быть использованы в обоих модулях. После отправки координаты, система автомобиля должна перейти в режим ожидания.
Второй вариант запроса на автомобиль – это предоставление брелоком решения задачи, то есть попытка доказать свою подлинность. В этом варианте запроса система автомобиля в первую очередь проверяет верность вычисления секретного параметра. Если параметр вычислен неверно, то система автомобиля немедленно посылает сигнал о неуспешной попытке авторизации и переходит в режим ожидания. В случае верного вычисления секретного параметра, система переходит к последующей проверке подлинности брелока.
Если на систему автомобиля пришёл верный секретный параметр, то следующим шагом, система проверяет не прошло ли с момента посылки параметра больше одной минуты, в этом случае система генерирует новую задачу и переходит в режим ожидания. Если же прошло меньше минуты, то система переходит к выполнению запрошенной операции.
После успешной процедуры аутентификации, система автомобиля посылает на автомобиль команду выполнения запрошенной операции. После этого необходимо послать ответ на брелок об успешном выполнении операции. Так же, кроме ответа на брелок система сигнализации автомобиля обязана произвести какое-либо визуальное информирование пользователя об успешности операции. Это должен быть звуковой сигнал и световой сигнал посредством габаритных огней транспортного средства. После выполнения операции система автомобиля должна сгенерировать новые параметры системы.
Генерация новых параметров системы представляет собой создание новой задачи, для процесса аутентификации. А именно, с помощью генератора случайных чисел создаётся случайное 254-битовое число и вычисляются точки R и S. После генерации новых параметров системы, параметры записываются на устройство постоянной памяти. После чего система автомобиля переходит в режим ожидания.
3.5 Разработка общего алгоритма работы системы
Разработав алгоритмы работы отдельных систем, можно составить блок-схему алгоритма работы системы в целом. На рисунке 3.7 изображена блок-схема работы всей системы. На этой блок-схеме изображён процесс осуществления протокола авторизации так, как предполагается его работа в реальной жизни.
Данная блок-схема позволяет получить представление о последовательности операций, выполняемых системой в целом, а так же произвести анализ времени работы процесса подтверждения аутентичности пользователя транспортного средства. Начало работы системы связанно с нажатием пользователем кнопки на радиоключе и заканчивается процесс либо удачным завершением протокола либо неудачным.
По данной блок-схеме можно оценить количество трудоёмких операций, выполняющихся на решающих устройствах системы во время выполнения одного протокола аутентификации. Так при принятии задачи от системы автомобиля, радиоключ вычисляет достаточно трудоёмкую операцию скалярного умножения в поле эллиптической кривой. После успешной аутентификации, либо после того, как система определяет, что с момента передачи предыдущей задачи прошло достаточно времени, система автомобиля производит генерацию новой задачи. Это так же достаточно трудоёмкая операция, но алгоритм функционирования системы автомобиля устроен так, что данная операция будет выполняться как правило после успешной аутентификации пользователя, а значит будет незаметна и не будет вызывать дискомфорт у пользователя транспортного средства. Однако возможна ситуация, когда время работы алгоритма автомобиля станет ощутимо.
Рисунок 3.7 – Блок-схема алгоритма работы всей системы
3.6 Проектирование программной части генератора случайных чисел
Для обеспечения криптографической стойкости системы мало использовать достаточно большие ключи, необходимо иметь криптостойкий генератор случайных чисел. Используя только программную часть невозможно построить генератор случайных чисел, программная реализация будет представлять собой генератор псевдослучайных чисел. Для построения криптографически-стойкого ГСЧ необходимо использовать источники энтропии.
3.6.1 Источники энтропии. Существует множество процессов, которые ведут себя случайным образом. Например, младшие биты данных, полученных с АЦП-преобразователя будут всегда содержать фактически случайные значения. В данном проекте мы воспользуемся этим и будем считать АЦП – одним из источников энтропии. По прерыванию окончания АЦП-преобразования программа будет брать число, полученное в результате преобразования и преобразовывать его в один бит энтропии. Так же, если подключить на один вход микроконтроллера источник прямоугольных (вообще, не обязательно прямоугольных) импульсов, работающий на частоте, превышающей частоту микроконтроллера, то чтение состояния этого вывода в произвольные моменты времени будет эквивалентно чтению случайного значения, однако мы не будем надеятся на истинную случайность этих данных и состояние этого вывода будет складываться по модулю два с одним битом энтропии, полученным с АЦП-преобразователя.
Таким образом, каждый раз, когда происходит прерывание АЦП, мы получаем один бит энтропии. Было бы очень неплохо добавить дополнительные источники энтропии, и это не сложно, однако в данной курсовой работе этот вопрос опускается.
Помимо сложности получения истинно случайных данных, существует еще несколько проблем их использования на практике. Во-первых, они не всегда доступны. Еще одна схожая проблема связана с тем, что объем истинно случайных данных всегда ограничен. Если вам понадобится большое количество случайных данных, придется подождать, пока они будут сгенерированы, что совершенно неприемлемо для проектируемой системы. Вторая проблема состоит в том, что источники истинно случайных данных, такие, как физические генераторы случайных чисел, могут сломаться или отказать. Иногда поведение генератора может стать предсказуемым. Поскольку генераторы истинно случайных чисел довольно замысловаты, они могут выходить из строя гораздо чаще, чем классические компоненты микроконтроллера.
3.6.2 Генератор псевдослучайных чисел. Истинно случайные числа будут использоваться нами только для того, чтобы получить начальное число, подающееся на вход генератора псевдослучайных чисел. После того как у нас появится начальное число, генератор сможет произвести на свет любое нужное количество случайных (а точнее, псевдослучайных) чисел. При необходимости мы можем прибавлять истинно случайные числа к начальному числу генератора псевдослучайных чисел. Это гарантирует, что выходные данные последнего никогда не станут полностью предсказуемыми, даже если злоумышленник каким-либо образом узнает начальное число.
Существует теоретическое мнение, что истинно случайные числа лучше, чем псевдослучайные. Для некоторых криптографических протоколов можно доказать, что при использовании истинно случайных чисел определенные типы атак становятся невозможными. Такой протокол называется безусловно защищенным (unconditionally secure). Если же использовать генератор псевдослучайных чисел, протокол будет безопасным только при условии, что злоумышленник не сможет взломать этот генератор случайных чисел.
Такой протокол называется защищенным по вычислениям (computationally secure). Это различие, однако, не совсем обоснованно. Все криптографические протоколы почти всегда основаны на вычислительных приближениях. Устранение такого приближения для одного конкретного типа атак не принесет существенного улучшения. Более того, генерация истинно случайных чисел, необходимых для обеспечения безусловной защищенности, настолько сложна, что попытка использовать такие числа может только ухудшить безопасность системы.
Любое слабое место генератора истинно случайных чисел моментально приведет к потере безопасности. С другой стороны, если использовать истинно случайные числа только для того, чтобы получить начальное число для генератора псевдослучайных чисел, можно позволить себе гораздо более придирчиво выбирать источники энтропии, что, безусловно, повышает наши шансы на создание действительно безопасной системы. Однако кроме инициализации начального состояния генератора, в данном проекте случайные данные используются так же для внесения энтропии в конечные сгенерированные данные во время работы алгоритма генерации псевдо случайной последовательности.
3.6.3 Программный пул. Пул – программный блок памяти, осуществляющий накопление случайных данных перед их использованием в генераторе псевдо случайных чисел.
Чтобы обновить начальное число генератора, события нужно накапливать в пуле. Последний должен быть достаточно большим для того, чтобы злоумышленник не смог перебрать возможные значения содержащихся в пуле событий. Обновление начального числа с помощью “достаточно большого” пула случайных событий сделает бессмысленной всю ту информацию о состоянии генератора, которой мог обладать злоумышленник. В данном проекте был выбран пул на 256 бит, этого достаточно, чтобы перемешать значения состояния ГПСЧ и это не слишком много, чтобы замедлить работу системы.
3.6.4 RC4. RC4 – потоковый шифр, широко применяющийся в различных системах защиты информации в компьютерных сетях (например, в протоколах SSL и TLS, алгоритме безопасности беспроводных сетей WEP).
Алгоритм RC4, как и любой потоковый шифр, строится на основе параметризованного ключом генератора псевдослучайных битов с равномерным распределением. Длина ключа составляет от 40 до 2048 бит.
Основные преимущества шифра – высокая скорость работы и переменный размер ключа. RC4 довольно уязвим, если используются не случайные или связанные ключи, один ключевой поток используется дважды. Эти факторы, а также способ использования могут сделать криптосистему небезопасной.
Внутреннее состояние RC4 представляется в виде массива размером 2n и двух счётчиков. Массив известен как S-блок, и далее будет обозначаться как S. Он всегда содержит перестановку 2n возможных значений слова. Два счётчика обозначены через i и j.
Инициализация RC4 состоит из двух частей: инициализация S-блока и генерация псевдослучайного слова K.
Ядро алгоритма поточных шифров состоит из генератора гаммы , который выдаёт ключевой поток (гамму). Функция генерирует последовательность битов (ki), которая затем объединяется с открытым текстом (mi) посредством суммирования по модулю два. Так получается шифрограмма (ci).
Однако в данном проекте RC4 будет использоваться не как потоковый шифр, а как генератор псевдослучайной последовательности. Гамма, выдаваемая алгоритмом непосредственно является этой последовательностью. Любой криптографический шифр будь то блочный или поточный обязан иметь такую гамму, чтобы каждый следующий бит невозможно было предсказать и на самом деле между ГПСЧ и поточным шифров нет никакой разницы, оба эти понятия взаимозаменяемы. Мы лишь немного модифицируем алгоритм RC4, чтобы ускорить его работу и интегрируем его в нашу систему, добавив функцию перемешивания rc4update.
3.6.5 Устройство постоянной памяти. Как уже упоминалось выше генератору псевдослучайных чисел необходимо иметь устройство постоянной памяти для хранения своего состояния между запусками системы. В данной системе в качестве такого устройства будет использоваться встроенная память eeprom микроконтроллера AtMega8.
Так как память такого типа имеет ограниченное число циклов перезаписи, мы не должны сохранять состояние ГПСЧ слишком часто, поэтому встаёт вопрос. Когда мы должны сохранять состояние? В течении работы всей системы нет необходимости в сохранении состояния. Необходимость возникает после того, как система заканчивает свою работу, поэтому модуль генератора случайных чисел должен уметь узнавать когда главный модуль заканчивает свою работу. Поэтому в протокол связи модулей было введено дополнительное условие. Если главный модуль отправляет на генератор число 2, генератор случайных чисел считает это кодом завершения и останавливает свою работу. Число 2 задано в коде в виде изменяемой константы, поэтому при необходимости его можно заменить на другое число.
Это работает должным образом по одной простой причине. Главный модуль никогда не запрашивает у генератора блок случайных чисел меньше, чем 32, за подобные запросы отвечает функция crandom из модуля main.c, данная функция будет рассмотрена позже. То есть номера запросов от нуля до 31 являются зарезервированными для служебных команд, таких, как например выключение микроконтроллера. Так как выбранный микроконтроллер поддерживает интерфейс SPI, в проектируемую систему был добавлен модуль часов реального времени, что позволяет инициировать внутреннее состояние генератора случайных чисел в зависимости от времени, когда он был запущен. Так при отказе в работе источников энтропии, генератор продолжит генерацию случайных данных, так как основан на достаточно надёжном генератор псевдо случайных чисел, который при каждом запуске системы будет генерировать различные случайные данные, инициализируя своё состояние, основываясь на часах реального времени.
3.6.6 Блок-схема алгоритма модуля генератора случайных чисел. Блок схема конечного алгоритма модуля генератора случайных чисел изображена на рисунке 3.8.
Рисунок 3.8 – Блок-схема алгоритма модуля генератора случайных чисел
Микроконтроллер начинает свою работу с инициализации периферийных модулей и разрешения прерываний, далее он входит в цикл, ожидания накопления данных в пуле, как только в пул накопится достаточное количество данных, микроконтроллере инициализирует состояние ГПСЧ данными из пула, перемешанными с состоянием, считанным из памяти и входит в основной цикл работы. Результаты тестов dieharder генератора случайных чисел представлены на схеме.
В основном цикле микроконтроллер проверяет глобальную переменную bytesToSend, если она не равна нулю, то по интерфейсу USART отправляются случайные числа, сгенерированные генератором псевдослучайных чисел в количестве, которое записано в переменную bytesToSend. На время отправки данный останавливаются все прерывания, чтобы микроконтроллер мог максимально быстро ответить на запрос главного модуля. Далее проверяется не заполнился ли снова пул и, если пул полон, то с помощью него обновляется состояние ГПСЧ.
Прежде чем закончить цикл генерируется одно случайное число впустую, это опять-таки вносит в работу системы долю случайности, потому что выдаваемые случайные числа будут зависеть ещё и от времени обращения к модулю генератора. Так же в системе работают два обработчика прерываний. По событию окончания преобразования АЦП вычисляется случайный бит и добавляется в пул, помимо этого обновляется глобальная переменная, хранящая количество битов в пуле. И по событию приёма данных по интерфейсу USART обновляется глобальная переменная bytesToSend, отвечающая за количество случайных байтов, которое необходимо переслать в главный модуль.
3.6 Вывод
Имея спроектированные блок-схемы алгоритмов и, выбрав подходящую библиотеку для работы с эллиптическими кривыми, был разработан программный код системы на языке Си. Размер файла прошивки для микроконтроллера автомобильного брелока составил 42 килобайта, что позволяет использовать микроконтроллеры младшего семейства, например Atmega 8. Размер прошивки для микроконтроллера системы автомобиля составил 44 килобайта, что так же позволяет использовать микроконтроллеры младшего семейства. В частности можно использовать вычислительное устройство с 32-битной шиной данных, что позволит уменьшить время выполнения программы со стороны автомобиля и уменьшить так же дискомфорт со стороны пользователя транспортного средства.
Вместо реализации криптографических алгоритмов на базе эллиптических кривых в виде программного кода можно использовать готовое устройство фирмы Atmel, например ATECC508A, данное устройство компактно, обладает небольшим энергопотреблением и позволяет эффективно производить криптографические операции в поле эллиптической кривой. Однако данное устройство было выпущено совсем недавно, и на момент начала разработки данного проекта отсутствовала какая-либо документация на это устройство. Однако, в будущем возможно применение этой микросхемы с целью увеличения скорости работы системы, а так же упрощения её разработки.
Разработанный же код был написан с ориентацией на микроконтроллеры Atmega фирмы Atmel. В разделе «Разработка принципиальной схемы системы» обоснован выбор микроконтроллера, а так же спроектирована электрическая схема конечного устройства, как радиоключа, так и запирающей системы автомобиля.
При проектировании программного кода для системы генератора случайных чисел, был спроектирован алгоритм работы программы генератора, позволяющий получение энтропии с различных подключаемых источников. Некоторые источники могут быть не подключены. Соответственно, при проектировании принципиальной схемы устройства необходимо позаботиться, чтобы хотя бы некоторое количество источников случайных данных было обеспечено модулю генератора случайных чисел, иначе спроектированная система окажется уязвимой в связи с отсутствием случайности при осуществлении сеанса протокола аутентификации.
4 РАЗРАБОТКА ПРИНЦИПИАЛЬНОЙ СХЕМЫ СИСТЕМЫ
Требования, излагаемые к принципиальной схеме системы составляют из себя во-первых требования к компактности конечного устройства при проектировании принципиальной схемы автомобильного брелока. Автомобильный брелок по специфики его использования обязан быть небольшим, легко помещаться в карман, не вызывая неудобств у пользователя при обращении с ним. Данный параметр брелока диктует нам по возможности упростить схему брелока, используя наименьший набор составляющих компонентов.
Второе требование – это по возможности наименьшее энергопотребление системы. Так как, как часть системы расположенная на автомобиле, так и радиоключ имеют в качестве источника питания автономную батарею с ограниченной ёмкостью. Необходимо рассчитать энергопотребление системы с целью избегания преждевременного расхода автономного элемента питания.
Специфика работы системы предполагает связь по радиоканалу между радиоключом и системой на автомобиле, следовательно схемы того и другого устройства должны быть снабжены радиопередатчиками. Так как разработанный протокол аутентификации предполагает диалоговый метод, обе разрабатываемые схемы должны иметь в своём составе модули приёмопередатчиков.
Разработанный протокол аутентификации требует от устройств системы вычисления достаточно трудоёмких задач. Следовательно, необходимо наличие решающего устройства. В качестве решающего устройства в данной работе выступает микроконтроллер.
Система на автомобиле получает питание от бортовой сети автомобиля. Бортовая сеть получает питание от встроенного в автомобиль аккумулятора и имеет напряжение в 12 вольт. Так как цифровые устройства разрабатываемых схем требуют меньшего значения напряжения, необходимо разработать схему понижения напряжения бортовой сети автомобиля до допустимого значения. Так же необходимо ввести стабилизацию напряжения, так как цифровые устройства наподобие микроконтроллеров могут быть чувствительны к скачкам питания.
Аппаратная часть данного проекта достаточно мала. Большая часть работы возлагается на программную часть. Это, во-первых выгодно экономически, во-вторых это обусловлено строго математической структурой разработанного алгоритма аутентификации пользователя транспортного средства.
4.1 Выбор микроконтроллера
Как правило, микропроцессорные системы по своей сути являются управляющими системами – основной функцией, реализуемой в них, является управление разнообразными объектами и процессами. Управляющая микропроцессорная система содержит микро ЭВМ, устройства связи с объектом (с датчиками и исполнительными устройствами управляемого объекта) и периферийные устройства.
Такие системы наиболее эффективно могут быть построены с помощью специализированных однокристальных микро ЭВМ, ориентированных на выполнение функций управления, – однокристальных микроконтроллеров (в дальнейшем просто микроконтроллеры). Микроконтроллеры представляют собой приборы, конструктивно выполненные в виде БИС и включающие в себя все составные части обычной микро ЭВМ: микропроцессор, память, а также программируемые интерфейсные схемы для связи с внешней средой. Использование микроконтроллера в управляющих системах обеспечивает достижение высоких показателей эффективности при очень низкой стоимости – во многих применениях система может состоять только из одной БИС микроконтроллера.
Микроконтроллер характеризуется небольшой емкостью памяти, физическим и/или логическим разделением памяти программ (ПЗУ, флэш-память) и памяти данных (ОЗУ), упрощенной и ориентированной на задачи управления системой команд, простыми способами адресации команд и данных, а также специфической организацией ввода/ вывода. Все это определяет область их использования в качестве специализированных вычислителей, включенных в контур управления объектом или процессом.
Структурная организация, набор команд и аппаратно-программные средства ввода/вывода микроконтроллеров лучше всего приспособлены для решения задач управления и регулирования в приборах, устройствах и системах автоматики, а не для решения задач обработки данных. Микроконтроллеры не являются машинами классического фон-неймановского типа, так как память физически или логически разделена на память программ и память данных, что исключает возможность модификации и/или замены прикладных программ микроконтроллеров во время работы.
Функционирование системы на базе микроконтроллера полностью определяется прикладной программой, размещаемой в памяти программ микроконтроллера. Поэтому специализация системы типовой структуры на решение задачи управления конкретным объектом осуществляется путем разработки соответствующих прикладных программ и аппаратуры связи микроконтроллера с датчиками и исполнительными устройствами объекта.
Применение микроконтроллеров в устройствах управления объектами привело к кардинальным изменениям в разработке аппаратных средств микропроцессорных систем. Поскольку микроконтроллер представляет собой функционально-законченную однокристальную микро ЭВМ, то построение микропроцессорного блока полностью определяется выбранным типом микроконтроллера.
Конкретный микроконтроллер допускает очень немного вариантов системного включения, которые приводят к фирменной технической документации. В свою очередь конкретный вариант включения выбранного микроконтроллера полностью определяется решаемой прикладной задачей (точнее методом ее решения). Таким образом, основным вопросом при проектировании микропроцессорного блока является выбор типа используемого микроконтроллера. Внешний вид микроконтроллера, с подписанными функциями выводов изображён на рисунке 4.1.
Рисунок 4.1 – Микроконтроллера Atmel Atmega 8
Микроконтроллер AtMega8 имеет 8 килобайт флэш-памяти, чего достаточно для спроектированного программного обеспечения. Как видно по блок-схеме на рисунке 9, микроконтроллер имеет один модуль USART и встроенный 10-разрядный АЦП-преобразователь, которые отвечают минимальным требованиям, необходимым разрабатываемому проекту. Внешний вид микроконтроллера, с подписанными функциями выводов изображён на рисунке 4.1. На рисунке изображён микроконтроллер в PDIP корпусе. Данный корпус достаточно компактен и прекрасно подходит для использования в проектируемом устройстве.
Микроконтроллер AtMega8 имеет 8 килобайт флэш-памяти, чего достаточно для спроектированного программного обеспечения. Микроконтроллер имеет один модуль USART и встроенный 10-разрядный АЦП-преобразователь. Данные параметры отвечают минимальным требованиям, необходимым разрабатываемому проекту. В данном проекте возможно применение одного из микроконтроллеров младших семейств, однако в целях проведения более тщательного анализа необходимых функций проектируемого устройства, используется именно выбранный микроконтроллер.
Данный микроконтроллер используется в трех модулях проектируемой системы. Наличие модуля SPI необходимо для связи с микросхемой приёмопередатчика в модулях радиоключа и системы автомобиля, в модуле генератора случайных чисел интерфейс SPI необходим для связи со схемой часов реального времени. АЦП-преобразователь используется в модуле генератора случайных чисел для получения случайных данных из бортовой сети автомобиля.
4.2 Выбор приёмопередатчика
На радиоключе и на системе автомобиля необходимо спроектировать приёмопередатчик. Необходимо, чтобы схема приёмопередатчика обладала одним из интерфейсов, присутствующих в микроконтроллере Atmega8: USART, SPI или I2C. Схема приёмопередатчика должна обладать небольшим энергопотреблением во время работы и особенное внимание необходимо уделить энергопотреблению схемы в режиме ожидания.
Рассмотрим приёмопередатчик nRF24L01 фирмы Nordic Semiconductor. Данный приёмопередатчик обладает достаточно доступной ценой и зарекомендовал себя как надёжное средства радиосвязи. Для взаимодействия с микроконтроллером в данном приёмопередатчике присутствует интерфейс SPI. Схема приёмопередатчика изображена на рисунке 4.2.
Рисунок 4.2 – Приёмопередатчик nRF24L01
Документация на nRF24L01 содержит рекомендуемую схему подключения [10]. Данная схема изображена на рисунке 4.3.
На рисунке 4.3 номиналы конденсаторов C1, C2, C3, C4, C5, C6, C7, C8 и C9 составляют 10 нФ, 1 нФ, 22 пФ, 22 пФ, 33 нФ, 1,5 пФ, 1 пФ, 4,7 пФ и 2,2 нФ соответственно. Значения сопротивлений резисторов R1 и R2 составляют 1 МОм и 22 КОм соответственно. Индуктивности катушек L1, L2 и L3 составляют 8,2 нГ, 3,9 нГ и 2,7 нГ. Кварцевый резонатор работает на частоте 16 МГц. При проектировании принципиальной схемы разрабатываемых в данной работе устройств, воспользуемся приведённой рекомендацией для подключения приёмопередатчика nRF24L01, приведённой в документации на данную микросхему. Рекомендованная схема содержит вывод для подключения внешней антенны. В проектируемом устройстве, в схеме радиоключа внешняя антенна реализована, встроенной в устройства, а в схеме запирающей системы автомобиля представлена выводом, к которому подключается внешняя, не входящая в устройство антенна.
Рисунок 4.3 – Рекомендуемая схема подключения приёмопередатчика
Данный приёмопередатчик обладает такими функциями, как повторная отправка сообщения при отсутствии подтверждения о получении сообщения, а так же непосредственно подтверждение получения сообщения. Наличие данных функция позволяет упростить программный код системы, что является несомненным плюсом выбранной микросхемы приёмопередатчика. Данные функции являются настраиваемыми и необязательными, однако могут быть выгодно использованы при расширении функциональности системы.
4.3 Схема понижения напряжения из бортовой сети автомобиля
Для решения задачи стабилизации и понижения напряжения питания, рассмотрим микросхему LM7805. Документация на микросхему LM7805 содержит рекомендацию по подключению микросхемы. Рекомендованная схема подключения [11] изображена на рисунке 4.4.
Изображённые на рисунке 4.4 конденсаторы C1 и C2 имеют ёмкость 470 мкФ и 1 мкФ соответственно. При проектировании принципиальной схемы разрабатываемого проекта воспользуемся рекомендованным методом подключения микросхемы LM7805, приведённым в документации на данную микросхему.
Рисунок 4.4 – Рекомендованная схема подключения микросхемы LM7805
Система автомобиля может получать питание из бортовой сети автомобиля, однако необходимо произвести понижение напряжения питания до 5 вольт. Бортовая сеть транспортного средства имеет напряжения в 12 вольт, однако для работы микроконтроллеров и других цифровых устройств необходимо понизить это напряжение до 5 вольт. В данной работе для нужд преобразования напряжения используется микросхема LM7805. Данная микросхема позволяет получить стабильное напряжение на выходе, компактна и экономически выгодна. Рассмотрев параметры данной микросхемы, можно сделать вывод, что она пригодна для использования в проекте.
4.4 Схема генератора случайных чисел
Внешний вид схемы модуля генератора случайных чисел представлен на рисунке 4.5. Генератор случайных чисел представляет собой часть системы автомобиля, которая обеспечивает уникальность каждого отдельного протокола аутентификации. Модуль генератора случайных чисел построен на базе микроконтроллера Atmega8, как и другие части проектируемой системы. Он представляет собой модифицированный алгоритм ARC4, реализованный в коде программы микроконтроллера, который получает случайные данные из внешних источников энтропии.
Помимо микроконтроллера данный модуль содержит часы реального времени, которые являются дополнительным источником случайных данных и исключают схожесть данных на выходе генератора, запущенного в два разных момента времени.
Рисунок 4.5 – Схема модуля генератора случайных чисел
Сигнал, поданный на вход АЦП, представляет собой ещё один источник случайных данных. Это может быть любой, как аналоговый, так и цифровой сигнал. В проектируемом в данной работе устройстве на вход приёмника случайных данных подключается напряжение из бортовой сети автомобиля уменьшенное в 4 раза. Каждый такт измерения этого сигнала предоставляет внутреннему генератору 1 бит случайных данных, таким образом в любом случае этот бит будет обладать достаточным количеством энтропии, так как биты с низкой энтропией не влияют на исход операции. Однако, возможна проблема коллизии битов, при которой энтропия у битов, имеющих одинаковое значение из-за коллизии будет поглощаться. Чтобы избежать данной проблемы, от значения, полученного с АЦП микроконтроллера предлагается вычислять криптографическую хэш-сумму. Для этих целей достаточно использовать любую достаточно быструю реализацию хэш-суммы.
4.5 Выбор источника питания радиоключа
Радиоключ, как устройство полностью автономное должен обладать собственным элементом питания. Требования к небольшим размерам конечного устройства диктуют выбор соответствующего элемента питания. Для питания радиобрелка в данной работе может использоваться литиевая батарея типа CR2477, имеющая диаметр в 24,5 миллиметра и толщину в 7,7 миллиметров. Такой размер батареи придаст конечному устройству несколько большую величину, однако позволит ему служить на одном элементе питания дольше.
Рисунок 4.6 – Зависимость частоты микроконтроллера от напряжения питания
Батарея типа CR2477 обладает электрическим зарядом в 1000 мА/ч. При грубой оценке такой элемент питания позволит устройству работать на протяжении нескольких лет. Выходное напряжения батареи составляет 3 вольта, чего достаточно для работы микроконтроллера, однако будучи настроенным на работу внутреннего осциллятора на частоте 8 МГц, имея напряжение питания меньше 5 вольт, микроконтроллер Atmega8 не сможет работать точно на этой частоте. Чтобы рассчитать ожидаемую частоту работы микроконтроллера, обратимся к документации. В документации присутствует следующий график, изображённый на рисунке 4.6.
На рисунке видно, что при напряжении питания микроконтроллера в 3 вольта при температуре окружающей среды в 25 градусов микроконтроллер будет работать на частоте 7,3 МГц. Это несколько меньше, чем 8 МГц в нормальных условиях, однако повлияет на время выполнения протокола аутентификации совсем незначительно. По произведённым расчётам это увеличит время выполнения протокола на 200 миллисекунд.
4.6 Проектирование принципиальной схемы радиоключа
Учитывая выбранные параметры системы и, соблюдая рекомендации, описанные в документациях на используемые микросхемы, спроектируем принципиальную схему радиоключа.
Рисунок 4.7 – упрощённая принципиальная схема радиоключа
На рисунке 4.7 часть системы, представляющая приёмопередаточный тракт изображена в виде одного блока. Это возможно, так как помимо микросхемы nRF24L01 изготовитель предоставляет возможность приобрести готовую печатную плату, обладающую всеми необходимыми элементами, однако в данной работе использовать такое готовое решение нельзя, так как это несколько увеличит размер радиоключа и помимо этого поднимет цену разрабатываемого устройства.
Радиоключ получает питание с литиевой батареи GB1, от которой также получает питание схема приёмопередаточного тракта. Напряжения питания микросхемы nRF24L01 составляет 1.9-3.6 вольт. Радиоключ обладает двумя замыкающими элементами – кнопками, подключенными к входу внешнего прерывания микроконтроллера, что позволяет выключать микроконтроллер во время неактивности. По нажатию кнопки сигнал будет передан на микроконтроллер, от чего сработает прерывание и микроконтроллер перейдёт в активный режим. Подключение замыкающих элементов к входам внешних прерываний позволяет переводить микроконтроллер в режим power-down. Упрощённая версия принципиальной схемы радиоключа изображена на рисунке 4.7.
4.7 Проектирование принципиальной схемы системы автомобиля
Ни рисунке 4.8 видно, что в отличии от принципиальной схемы автомобильного радиоключа, принципиальная схема системы автомобиля имеет в своём составе схему понижения и стабилизации напряжения LM7805, что обусловлено тем, что схема автомобиля получает питание от бортовой системы автомобиля, которое имеет напряжение в 12 вольт, а цифровые элементы схемы требуют напряжения питания в 5 вольт.
Так же в системе присутствует модуль генерации случайных чисел. Он необходим системе для генерации случайного параметра протокола аутентификации. Устройство данного модуля рассмотрено в соответствующем разделе данной работы. Данный модуль подключен к главному микроконтроллеру посредством интерфейса USART, помимо этого он получает сигнал питания из главной схемы и сигнал с источников энтропии. В данной работе случайные данные представляют собой колебания напряжения питания, получаемого из бортовой сети автомобиля. Возможно подключение других источников случайных данных, при наличии таковых.
В отличие от микроконтроллера радиоключа, микроконтроллер системы автомобиля имеет подключенный к нему кварцевый генератор, это сделано для увеличения скорости работы системы. Так же это оправданно возможностью несколько большего энергопотребления системы автомобиля за счёт наличия аккумулятора большей ёмкости.
Рисунок 4.8 – Упрощённая принципиальная схема системы автомобиля
Схема приёмопередатчика обладает выводом под внешнюю антенну. Разработанная схема устройства подразумевает возможность подключения внешней антенны с целью увеличения дальности работы системы приёмопередатчика. Документация на приёмопередатчик указывает, что дальность работы устройства на открытой местности составляет порядка 85 метров, что достаточно для удобства пользователя, однако внешняя антенна позволит несколько увеличить дальность, что имеет некоторый смысл, так как некоторые автостоянки имеют больший размер, чем 85 метров по наибольшей стороне, возможно пользователь захочет иметь возможность управления своим транспортным средством с большего расстояния, нежеди, чем 85 метров.
В отличие от схемы радиоключа, схема автомобиля не имеет каких либо элементов коммутации, так как в них отсутствует необходимость. Однако в ходе инженерно-конструкторского проектирования схемы было принято решения разместить на устройстве один элемент сигнализации – светодиод. Светодиод производит оповещение во время корректной работы системы и может быть выведен на любое заметное пользователю место в транспортном средстве.
Так как состояние системы всегда детерминировано, выход сброса системы (RESET) подключен на землю, что означает отсутствие возможности сброса состояния системы. Это оправданно за счёт специфики работы системы.
Схема имеет один вход, через который она получает питание из бортовой сети автомобиля, данный вход представляет собой гнездо, в которое подключается штырь контакта питания. Так же в системе присутствует два выхода на систему блокировки транспортного средства. На них подаётся сигнал в 5 вольт при успешном осуществлении протокола аутентификации. Ожидается, что работу системы под конкретное транспортное средство необходимо будет специально адаптировать.
Итоговая принципиальная схема устройства радиоключа и системы автомобиля представлена в приложении. На полной схеме изображён приёмопередаточный тракт, а так же развёрнуты такие подсхемы, как модуль генератора случайных чисел.
4.8 Вывод
Спроектированная принципиальная схема системы соответствует разработанному программному коду в соответствующей главе данной работы. Каждый модуль конечного устройства содержит решающее устройство в виде микроконтроллера Atmega 8. В данном разделе обоснован выбор этого микроконтроллера. Возможно данное микропроцессорное устройство является в какой-то мере избыточным для решаемых задач, однако оно позволяет хорошо проанализировать работу проектируемого устройства и упрощает задачу написания достаточно высокоуровневых алгоритмов протокола аутентификации за счёт поддержки языка программирования си, который позволяет потратить большие ресурсы на продумывание, разрабатываемых алгоритмов, нежели, чем на написание кода программ.
Так же выбрано и спроектировано устройство схемы радиосвязи, что является важной составляющей проектируемой системы. Устройством приёмопередатчика обладает, как радиоключ, так и запирающая система автомобиля. Выбранная микросхема приёмопередатчика осуществляет множество важных необходимых процедур во время связи по радиоканалу, таких, как проверка сообщения на целостность, модуляция передаваемого сообщения, а так же повторная отправка в случае неуспешной проверки сообщения на целостность.
Так же для запирающей системы была выбрана микросхема, осуществляющая понижение и стабилизацию питания. Данная часть схемы является важным элементом, так как запирающая система осуществляет питание от достаточно нестабильного напряжения бортовой системы транспортного средства. Так же нестабильное напряжение бортовое системы автомобиля используется, как источник энтропии для генератора случайных чисел.
Спроектированный генератор случайных чисел содержит входы для дополнительных источников энтропии, таким образом позволяет уменьшить риски отказа генератора случайных чисел путём подключения каких-либо других источников случайности. Генератор случайных чисел снабжён микросхемой часов реального времени, которая так же хранит информацию о текущей дате, что так же выгодно использовать при инициализации состояния генератора.
5 Энергосбережение при проектировании систем радиоэлектронной связи
В данной работе проектируется система аутентификации пользователя транспортного средства. Данный проект призван заменить сторонние системы с закрытой спецификацией, разработанным протоколом, предоставляющими надёжную защиту транспортного средства. Разработанное устройство позволит защитить транспортное средство от большинства атак по стороннему каналу.
Проектируемая в данной работе система представляет устройство из двух частей, каждая на базе микроконтроллеров. Первая часть, более сложная – это система работающая со стороны транспортного средства. Данная система состоит из модуля аутентификации пользователя и модуля генератора случайных чисел. Оба модуля имеют своим главным компонентом микроконтроллер семейства Atmega.
Питание системы осуществляется за счёт автомобильного аккумулятора. Напряжение с него уменьшается до допустимого с помощью DC-DC преобразователя. Автомобиль является устройством автономным и расход заряда аккумулятора должен быть строго ограничен. Неверно спроектированная система может допустить преждевременный расход аккумулятора, что недопустимо для транспортного средства.
Вторая часть – это радиоключ, часть системы физически отделённая от схемы транспортного средства. Данное устройство так же имеет в своей основе микроконтроллер с ограниченным минимальным током потребления, что необходимо брать в расчёт при анализе энергопотребления и энергосбережения устройства. Радиоключ – так же автономная система, однако в отличие от системы автомобиля питание которой осуществляется от аккумулятора, имеющего достаточно большую ёмкость, питание радиоключа осуществлется от небольшой батареи. Этот фактор обуславливает необходимость внимательного изучения возможностей энергосбережения данного устройства, так как небольшая батарея имеет весьма ограниченный ресурс.
Наиболее уязвимое место в системе в плане ограниченности энергетических ресурсов – это радиоключ. Исходя из этого, а так же того факта, что инженерные и технологические решения для улучшения энергосбережения микроконтроллера радиоключа в том числе будут актуальны для микроконтроллера, работающего на системе автомобиля, можно ограничиться рассмотрением только оптимизации энергосбережения микроконтроллера радиоключа, однако применить найденные решения и для системы автомобиля.
Система автомобиля, хоть и является автономным объектом, имеющим питание от аккумулятора с ограниченным ресурсом, всё-таки обладает гораздо большим запасом энергии, чем небольшой радиоключ, однако при проектировании запирающей системы автомобиля так же необходимо уделить немало внимания энергопотребления, так как расход автомобильного аккумулятора является достаточно важным параметром любой автомобильной системы.
Проектируемая система работает от источника питания в 5 вольт, что исключает возможности поражения пользователя током. Так же система не содержит взрывчатых либо пожароопасных веществ. Передача сообщений по радиоканалу осуществляется на частоте 2,4 ГГц и мощностью передатчика в -85 дБм, что безопасно для человека и домашних животных.
5.1 Анализ энергозатрат при эксплуатации указанных систем
При анализе энергозатрат проектируемой системы следует учитывать тот фактор, что протокол аутентификации построен на базе криптографии эллиптических кривых, представляющей из себя мощный инструмент ассиметричной криптографии, обладающей достаточно немалой трудоёмкостью.
Инструменты ассиметричной криптографии или криптографии с открытым ключом основываются на достаточно трудоёмких математических операциях. Однако криптография на эллиптических кривых гораздо устойчивее в плане выполнения операции раскрытия закрытого ключа, чем другие криптографические системы, такие, как RSA, схема Эль-Гамаля или Дифии-Хелмана.
Свойство трудоёмкости вычисления закрытого ключа в криптографии на эллиптических кривых позволяет использовать ключи меньших размеров, чем в других схемах. Для обеспечения необходимой безопасности достаточно ключей порядка 256 бит, тогда, как в схеме RSA для обеспечения безопасности такого же уровня необходимо использовать ключи размера порядка в 2048 бит. Однако всё же вычисление трудоёмких операций в поле эллиптической кривой является узким местом системы и приводит как к достаточно ощутимому времени выполнения протокола аутентификации, так и к значительному энергопотреблению во время выполнения трудоёмких операций.
Рассчитаем энергопотребление микроконтроллера Atmega8 при токе потребления Ib в 9 мА и стандартном напряжении тока питания U в 5 вольт, как указанно в документации на устройство [1]:
кВт/ч. (5.1)
Так же, второе устройство, потребляющее значительный ток – это приёмопередатчик. В данной работе используется NRF24L01, ток потребления которого составляет 12 мА. Время работы приёмопередатчика ttrans можно рассчитать, зная объём передаваемых данных, который ограничен четырьмя сообщениями длиной lm порядка 64 байт, что равно 512 битам, а так же скорость передачи данных gtrans, составляющую 2000 кбит/с:
мс. (5.2)
Энергопотребление Wt данного устройства во время работы одного сеанса аутентификации можно рассчитать следующим образом:
мВт. (5.3)
При отсутствии нагрузки на микроконтроллер ток потребления Ii падает до 5,2 мА, соответственно энергопотребление микроконтроллера в режиме отсутствия нагрузки составляет:
кВт/ч. (5.4)
В разделе разработка программной части было проведено тестирование времени выполнения алгоритмов. Результаты тестирования показали, что микроконтроллер, работающий на частоте 8 МГц выполняет вычисления, необходимые для совершения протокола аутентификации не более, чем за 2 секунды, соответственно количество энергии, необходимое микроконтроллеру на выполнение протокола аутентификации составляет:
Вт. (5.5)
При использовании системы порядка двух раз в час время работы системы в режиме нагрузки составит 4 секунды, остальное время система будет работать в режиме простоя, итоговое среднее потребление тока системы составит:
мА. (5.6)
При описанной интенсивности использования системы с периодичностью 2 раза в час и при использовании в качестве источника питания две плоских литиевых батарейки, обладающих зарядом E в 250 мАч, получаем время работы системы составляющее:
ч. (5.7)
Как видно из расчёта, время работы устройства составляет 28 часов. Такой параметр работы системы может вызвать некоторый дискомфорт у пользователя [5]. Следовательно необходимо поставить задачу оптимизации данного параметра. Задачей анализа стоит нахождение возможных подходов к увеличению срока жизни батареи, обеспечивающей питание системы.
5.2 Поиск инженерно-технических и конструкторско-технологических решений экономии энергозатрат разрабатываемой системы
В результате анализа, проведённого в предыдущем разделе данной работы, было выяснено, что спроектированная система сможет выполнять свою задачу от одного элемента питания в течении 28 часов. Предполагалось, что микроконтроллер потребляет несколько меньшее количество энергии, находясь в режиме ожидания, то есть ненагруженном какой-либо задачей режиме, однако этого недостаточно для полноценной экономии электроэнергии.
Разрабатываемое устройство имеет определённую специфику. Изучив методы применения подобных устройств в реальной жизни, можно сделать вывод, что большую часть времени система находится в состоянии ожидания, не выполняя никаких задач, следовательно не требуется его работа вообще. Более эффективным методом энергосбережения является перевод микроконтроллера в режим сна или более энергоэффективный метод – перевод микроконтроллера в режим power-down.
Спецификация на микроконтроллер Atmega8 [4] указывает на то, что начало работы микроконтроллера происходит через 258 тактов после внешнего прерывания, это составляет не более миллисекунды задержки после нажатия пользователем на кнопку радилключа. Так как специфика работы алгоритмов не предполагает загрузки каких-либо больших объёмов данных из постоянной памяти, либо каких-либо предварительных вычислений, можно сделать вывод, что задержка, введённая в систему путём перевода микроконтроллера в режим power-down останется едва заметной для пользователя.
Произведём расчёт энергопотребления после введения перевода микроконтроллера в режим power-down. Энергопортебление Ioff микроконтроллера Atmega8 в данном режиме составляет 0.5 мкА, следовательно среднее потребление тока Iao системы, которая запускается два раза в час будет составлять:
мкА. (5.8)
Рассчитанный средний ток потребления системы на несколько порядков меньше тока потребления микроконтроллера, не пееходящего в режим power-down, следовательно можно ожидать увеличения времени работы устройства от одного элемента питания. Произведём расчёт времени работы устройства при использовании в качестве источника питания двух плоских литиевых батарейки, обладающих зарядом E в 250 мАч:
ч. (5.9)
Время работы устройства с применённым методом энергосбережения составил порядка 24 тысяч часов, что составляет 2 года и 8 месяцев. Данный параметр должен вызывать меньше дискомфорта у пользователя, чем изначальное время работы в 28 часов. Оптимизированное время работы устройства является допустимым для устройства подобного рода.
5.3 Вывод
В результате анализа параметров энергосбережения было выявлено то, что при реализации системы аутентификации пользователя транспортного средства нельзя обойтись без анализа энергопотребления системы и поиска путей уменьшения этого параметра.
Изначально спроектированная система вызывала бы дискомфорт у пользователя за счёт излишне малого времени работы от одного элемента питания, частая замена элемента питания во-первых невыгодна для пользователя, во вторых неудобна, в сравнении в с другими имеющимися на рынке системами. В результате поиска инженерно-технических решений был найден подход, позволяющий увеличить время работы устройства более чем до двух лет.
Недостатком данного подхода может быть то, что на выход из режима power-down микроконтроллеру необходимо некоторое время, однако в данном устройстве это время не создаст каких-либо препятствий для корректной работы системы и будет едва заметна пользователю.
Несмотря на то, что проектируемая система состоит из двух схем на микроконтроллерах, расчёт и анализ проводился только для одной схемы, однако найденные инженерно-технические решения для улучшения параметров энергосбережения могут быть применены так же на нерассмотренной системе, так как она принципиально аналогична рассмотренной.
6 ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ ЭФФЕКТИВНОСТИ РАЗРАБОТКИ СИСТЕМЫ АУТЕНТИФИКАЦИИ ПОЛЬЗОВАТЕЛЯ ТРАНСПОРТНОГО СРЕДСТВА
6.1 Характеристика программного продукта
Система аутентификации пользователя транспортного средства предоставляет надёжное и недорогое решение для организации протокола авторизации пользователя, обладающего радиоключом. Данная система позволяет защитить автомобиль от угона и предотвратить получение доступа злоумышленника в салон автомобиля путём совершения атак по стороннему каналу на радиоключ пользователя.
В настоящее время системы подобного рода представляют собой дорогостоящие решения с закрытой спецификацией на устройство. Разрабатываемая система не становится уязвимой при утечке большинства параметров системы и позволяет не скрывать детали реализации алгоритмов, что делает данную систему надёжным средством защиты автомобиля. Система представляет из себя технически достаточно простое устройство, надёжность которого основывается на проверенных временем алгоритмах ассиметричного шифрования.
Разработка и реализация данного протокола позволяет:
– обеспечить надёжный протокол авторизации пользователя транспортного средства;
– предотвратить возможность многих атак на устройства по стороннему каналу;
– обеспечить возможность создания экономически выгодной конечной системы.
Экономическая целесообразность инвестиций в разработку и использование программного продукта осуществляется на основе расчёта и оценки следующих показателей:
− чистая дисконтированная стоимость (ЧДД);
− срок окупаемости инвестиций (ТОК);
− рентабельность инвестиций (Ри).
В результате разработки данного программного продукта увеличится защищенность транспортных средств, обладающих данной системой, а так же пропадёт зависимость от сторонних продуктов, имеющих закрытую спецификацию и неизвестные алгоритмы, что позволит так же производить установку данной системы без каких-либо отчислений в сторонние организации. Так же планируется значительное уменьшение случаев кражи транспортных средств, обладающих данной системой, что позволит пользователям транспортных средств быть более уверенным в сохранности своего транспортного средства.
Фактор защищённости системы при отсутствии необходимости скрытия спецификации алгоритмов позволяет исключить затраты на сокрытие коммерческой тайны, что так же упрощает разработку алгоритмов. Все параметры разрабатываемой системы могут быть открыты для исследования и анализа специалистами.
6.2 Расчет затрат и отпускной цены программного средства
Основная заработная плата исполнителей проекта определяется следующей по формуле:
, (6.1)
где n – количество исполнителей, занятых разработкой ПС;
TЧi – часовая тарифная ставка i-го исполнителя (руб.);
ФЭi – эффективный фонд рабочего времени i-го исполнителя (дней);
ТЧ – количество часов работы в день (ч);
К – коэффициент премирования (1,5).
В настоящий момент тарифная ставка 1-го разряда на предприятии составляет 1700 т. руб. Среднемесячная норма рабочего времени составляет 176 часов. (8 часов в течении 22х рабочих дней).
Часовой тарифный оклад инженера программиста 1-й категории составляет руб. Часовой тарифный оклад инженера программиста 2-й категории составляет руб.
Основная заработная плата данных категорий работников приведена в таблице 6.1. В таблице указаны исполнители проекта в составе двух программистов первой и второй категории, разряд программистов, тарифный коэффициент, месячная тарифная ставка в тысячах рублей, а так же часовая тарифная ставка. Плановый фонд рабочего времени указан в днях, а так же заработная плата программистов указана в тысячах рублей.
Таблица 6.1– Расчет основной заработной платы
Исполнитель | Раз-ряд | Тарифный коэффи-циент | Месячная тарифная ставка, т. руб. | Часовая тарифная ставка, т. руб. | Плановый фонд рабочего времени, дн. | Заработ-ная плата, т. руб. |
Программист 1-й категории | 12 | 2,84 | 4828 | 27,4 | 60 | 19728 |
Программист 2-й категории | 10 | 2,48 | 4216 | 23,9 | 30 | 8604 |
Основная заработная плата | 28332 |
Дополнительная заработная плата исполнителей проекта определяется по следующей формуле:
(6.2)
где НД – норматив дополнительной заработной платы (15%).
Дополнительная заработная плата составит
т. руб. (6.3)
Отчисления в фонд социальной защиты населения и на обязательное страхование (ЗС) определяются в соответствии с действующими законодательными актами по формуле:
, (6.4)
где НСЗ – норматив отчислений в фонд социальной защиты населения и на обязательное страхование (34 +0,6%).
Отсюда, подставив численные значение параметров, можем рассчитать следующее значение:
т. руб. (6.6)
Расходы по статье «Машинное время» (РМ) включают оплату машинного времени, необходимого для разработки и отладки ПС, и определяются по следующей формуле:
, (6.7)
где Цм – цена одного машино-часа;
Тч – количество часов работы в день;
Ср – длительность проекта.
Стоимость машино-часа на предприятии составляет 15000 руб. Разработка проекта займет 90 дней. Определим затраты по статье «Машинное время»:
т. руб. (6.8)
5. Затраты по статье «Накладные расходы» (РН), связанные с необходимостью содержания аппарата управления, вспомогательных хозяйств и опытных , а в том числе экспериментальных производств, а также с расходами на общехозяйственные нужды (РН), определяются по следующей формуле:
, (6.9)
где Нрн – норматив накладных расходов (50%).
Накладные расходы Рн составят
т. руб. (6.10)
Общая сумма расходов по всем статьям сметы (Ср) на ПО рассчитывается по формуле
, (6.11)
получим
т. руб. (6.12)
Кроме того, организация-разработчик осуществляет затраты на сопровождение и адаптацию ПС (РСА), которые определяются по нормативу (НРСА):
, (6.13)
где Нрса – норматив расходов на сопровождение и адаптацию (15%).
откуда находим значение норматива расходов
, (6.14)
где Рса – расходы на сопровождение и адаптацию ПС в целом по организации (руб.);
СР – смета расходов в целом по организации без расходов на сопровождение и адаптацию (руб.).
Подставив числовые значения, рассчитаем
т. руб. (6.15)
Общая сумма расходов на разработку (с затратами на сопровождение и адаптацию) как полная себестоимость ПС (СП) определяется по формуле
(6.16)
откуда находим
т. руб. (6.17)
Прибыль ПС рассчитывается по следующей формуле:
(6.18)
где Ппс – прибыль от реализации ПС заказчику (руб.);
УР – уровень рентабельности ПС (25%);
СП – себестоимость ПС (руб.).
Рассчитаем прибыль ПС:
руб. (6.19)
Прогнозируемая отпускная цена ПС
, (6.20)
откуда находим
руб. (6.21)
6.3 Расчет стоимостной оценки результата
Результатом (Р) в сфере использования программного продукта является прирост чистой прибыли и амортизационных отчислений.
6.3.1 Расчет прироста чистой прибыли. Прирост прибыли за счет экономии расходов на заработную плату в результате внедрения проектируемой системы.
Экономия затрат на заработную плату при использовании ПС в расчете на объем выполняемых работ определяется по формуле:
(6.22)
где Nn - плановый объем работ.;
tc, tн - трудоемкость выполнения работы по установке автомобильной сигнализации до и после внедрения программного продукта, нормо-час;
Тс, Тн - часовая тарифная ставка, соответствующая разряду выполняемых работ до и после внедрения программного продукта, руб./ч (16000 руб.);
Кпр - коэффициент премий, (1,5);
Нд- норматив дополнительной заработной платы, (15%);
Нно - ставка отчислений от заработной платы, включаемых в себестоимость, (34,6%).
До внедрения программного продукта трудоемкость осуществления безопасности транспортного средства составляла 0,5 человека-часа, после внедрения программы – 0,1 человека-часа. В год предприятие проводит около 3000 установок автомобильных сигнализаций.
Экономия на заработной плате и начисления на заработную плату составит
т. руб. (6.23)
Прирост чистой прибыли (ΔПч) определяется по формуле:
, (6.24)
где Нп – ставка налога на прибыль (18%).
Таким образом, прирост чистой прибыли составит
т. руб. (6.25)
6.3.2. Расчет прироста амортизационных отчислений. Расчет амортизационных отчислений осуществляется по формуле:
, (6.26)
где З – затраты на разработку программы, руб.;
НА – норма амортизации программного продукта (20%).
Подставим числовые значения и рассчитаем амортизационные отчисления:
т. руб. (6.27)
6.4 Расчет показателей эффективности использования программного продукта
Для расчета показателей экономической эффективности использования программного продукта необходимо полученные суммы результата (прироста чистой прибыли) и затрат (капитальных вложений) по годам приводят к единому времени – расчетному году (за расчетный год принят 2016 год) путем умножения результатов и затрат за каждый год на коэффициент приведения (ALFAt), который рассчитывается по формуле 6.28, Ен = 25%.
, (6.28)
где Ен – норматив привидения разновременных затрат и результатов;
tp – расчетный год, tp = 1;
t – номер года, результаты и затраты которого приводятся к расчетному (2016-1, 2017-2, 2018-3, 2019-4).
Соответственно коэффициенты приведения ALFAt за каждый год составляют:
, (6.29)
, (6.30)
, (6.31)
. (6.32)
Результаты расчёта показателей эффективности использования программного продукта приведены в таблице 6.2. Проект планируется внедрить в организацию в 2016 году. Значит, прирост прибыли в 2016 году составит 36556 т. руб. В приведённой таблице показан рассчитанный прирост чистой прибыли, прирост амортизационных отчислений и другие экономические параметры проекта.
Таблица 6.2 − Расчет экономического эффекта от использования нового ПС
Наименование показателей | Един. измер | Усл. обоз. | По годам производства | |||
1-й | 2-й | 3-й | 4-й | |||
Результат | ||||||
1. Прирост чистой прибыли | т.руб. | 36556 | 36556 | 36556 | 36556 | |
2. Прирост амортизационных отчислений | т.руб. | 6А | 19786 | 19786 | 19786 | 19786 |
2. Прирост результата | т.руб. | 56342 | 56342 | 56342 | 56342 | |
3.Коэффициент дисконтирования | 1 | 0.80 | 0.64 | 0.51 | ||
4. Результат с учетом фактора времени | т.руб. | 56342 | 45073 | 36056 | 28734 | |
Затраты (инвестиции) | ||||||
5. Инвестиции в разработку программного продукта | т.руб. | Иоб | 98930 | - | - | - |
6. Инвестиции с учетом фактора времени | т.руб. | 98930 | - | - | - | |
7. Чистый дисконтированный доход по годам (п.4 - п.6) | т.руб. | 60866 | 45073 | 36056 | 28734 | |
8. ЧДД нарастающим итогом | т.руб. | 60866 | 15793 | 20362 | 48997 |
Рассчитаем рентабельность инвестиций в разработку и внедрение программного продукта (РИ) по формуле
, (6.33)
где - среднегодовая величина чистой прибыли за расчетный период, которая определяется по формуле
, (6.34)
где - чистая прибыль, полученная в году t, руб.
Исходя из предыдущей формулы рассчитаем среднегодовую величину чистой прибыли.
т. руб. (6.35)
Откуда рассчитаем рентабельность инвестиций в разработку и внедрение программного продукта:
. (6.36)
6.5 Вывод
В результате технико-экономического обоснования применения программного продукта были получены следующие значения показателей их эффективности:
1 Чистый дисконтированный доход за 4 года работы составит 48997 руб.
2 Затраты на разработку продукта окупятся на третий год использования.
3 Рентабельность инвестиций составляет 36,9%.
Таким образом, применение программного продукта системы аутентификации пользователя транспортного средства является эффективным и инвестиции в его разработку осуществлять целесообразно. Вместе с тем, что использование данного устройства улучшит функциональные параметры транспортного средства и обеспечит большую его безопасность, предлагаемое устройство является экономически выгодным и перспективным для реализующего его предприятия.
ЗАКЛЮЧЕНИЕ
В данной работе произведён анализ задачи построения системы аутентификации пользователя транспортного средства. Спроектирован модуль генератора случайных чисел. Разработан алгоритм проведения сеанса аутентификации. Проанализированная литература позволила сделать выводы о пригодности выбранных алгоритмов для реализации на устройстве с ограниченными вычислительными возможностями, таком как автомобильный ключ. Проведённое моделирование показало целесообразность использования выбранного алгоритма в проектируемой системе.
Данный проект позволяет описать пути создания автомобильной сигнализации не доступной для взлома какими-либо цифровыми методами, что ставит угонщиков автомобилей в более сложное положение. Вычислительная сложность алгоритмов на базе эллиптических кривых обуславливает некоторые минусы разработанного устройства. Время работы ключа может несколько увеличиться по сравнению с классическими устройствами, однако данный дискомфорт целиком оправдывается обеспечением большей безопасности транспортного средства. Данное упущение может быть компенсировано дополнением сигнализации средствами предварительного запуска двигателя.
Была спроектирована принципиальная схема устройства аутентификации, как пример возможного конечного устройства. В устройстве продуманны вопросы энергосбережения, а так же радио передача данных в диалоговом режиме, что позволило спроектировать устройство, достаточно продолжительно работающее от одного источника питания и не потребляющее большого количества электроэнергии аккумулятора автомобиля. Диалоговый режим необходим для организации сеанса спроектированного протокола и позволяет надёжно защитить транспортное средство.
Дальнейшие исследования в рамках данной темы следует направить на уменьшение времени работы системы, исследование влияния работы системы на аккумулятор автомобиля, разработка и исследование методов передачи радиосигнала. Так же стоит уделить внимание анализу слабых мест алгоритма аутентификации и рассмотрению возможных неисследованных атак на транспортное средство.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
[1] I. Chatzigiannakis, A. Pyrgelis, P. G. Spirakis, Y. C. Stamatiou. Elliptic Curve Based Zero Knowledge Proofs and Their Applicability on Resource Constrained Devices. CoRR, abs/1107.1626, 2011
[2] M. Hutter, P. Schwabe. NaCl on 8-bit AVR microcontrollers. AFRICACRYPT 2013, volume 7918 of Lecture Notes in Computer Science. Springer, 2013.
[3] M. Kasper, T. Kasper, A. Moradi, C. Paar. Breaking KeeLoq in a Flash: On Extracting Keys at Lightning Speed (2009). AFRICACRYPT 2009, volume 5580 of LNCS. Springer, 2009.
[4] Atmel (2004). 8-bit AVR With 8K Bytes In-System Programmable Flash ATmega8/ATmega8L Data Sheet. Atmel Corp., San Jose, CA, USA.
[5] Володин, В. И. Энергосбережение: учеб. пособие/ В. И. Володин. – Минск: БГУИР, БГТУ, 2001.
[6] Кирвель, И. И. Энергосбережение в процессах теплообмена: метод. пособие для практ. занятий/ И. И. Кирвель, М. М. Бражников, Е. Н. Зацепин. – Минск: БГУИР, 2007.
[7] Miller V. Use of elliptic curves in cryptography //Advances in Cryptology – CRYPTO’85 Proceedings. – Springer Berlin/Heidelberg, 1986. – С. 417-426.
[8] Gura N. et al. Comparing elliptic curve cryptography and RSA on 8-bit CPUs //Cryptographic Hardware and Embedded Systems-CHES 2004. – Springer Berlin Heidelberg, 2004. – С. 119-132.
[9] Коблиц Н. Курс теории чисел и криптографии //М.: ТВП. – 2001. – Т. 270.
[10] Semiconductor N. nRF24L01 single chip 2.4 GHz transceiver product specification //2007]. http://www. nordicsemi. com/eng/Products/2.4 GHz-RF/nRF24L01. – 2007.
[11] Semiconductor F. LM7805 3-Terminal 1A Positive Voltage Regulator.
[12] Johnson D., Menezes A., Vanstone S. The elliptic curve digital signature algorithm (ECDSA) //International Journal of Information Security. – 2001. – Т. 1. – №. 1. – С. 36-63.
[13] Федухин А. В., Сеспедес-Гарсия Н. В. К вопросу о статистическом моделировании надежности //Математичні машини і системи. – 2006. – №. 1. – С. 156-163.
[14] Barker E., Kelsey J. NIST DRAFT Special Publication 800-90b recommendation for the entropy sources. – 2012.
[15] Мордвінов Р. І. Порівняльний аналіз методів та засобів тестування випадкових послідовностей NIST 800 22 ТА NIST 800 90B //Прикладная радиоэлектроника. – 2013. – №. 12,№ 2. – С. 250-253.
[16] Blum M., Micali S. How to generate cryptographically strong sequences of pseudorandom bits //SIAM journal on Computing. – 1984. – Т. 13. – №. 4. – С. 850-864.
[17] Ni X., Shi W., Foo Siang Fook V. AES Security Protocol Implementation for Automobile Remote Keyless System //Vehicular Technology Conference, 2007. VTC2007-Spring. IEEE 65th. – IEEE, 2007.
[18] Cates R. Design considerations for remote keyless entry //WESCON/94. Idea/Microelectronics. Conference Record. – IEEE, 1994.
[19] Biham E. et al. How to steal cars–A practical attack on keeLoq //EUROCRYPT. – 2008. – С. 1-18.
[20] Mason S. Vehicle remote keyless entry systems and engine immobilisers: Do not believe the insurer that this technology is perfect //Computer Law & Security Review. – 2012. – Т. 28. – №. 2. – С. 195-200.
[21] Davis B., DeLong R. Combined remote key control and immobilization system for vehicle security //Power Electronics in Transportation, 1996., IEEE. – IEEE, 1996. – С. 125-132.
[22] Szczechowiak P. et al. NanoECC: Testing the limits of elliptic curve cryptography in sensor networks //Wireless sensor networks. – Springer Berlin Heidelberg, 2008. – С. 305-320.
[23] Blass E. O., Zitterbart M. Towards Acceptable Public-Key Encryption in Sensor Networks //IWUC. – 2005. – С. 88-93.
[24] Kelsey J. et al. Cryptanalytic attacks on pseudorandom number generators //Fast Software Encryption. – Springer Berlin Heidelberg, 1998. – С. 168-188.
[25] Larrondo H. A. et al. Intensive statistical complexity measure of pseudorandom number generators //Physica A: Statistical Mechanics and its Applications. – 2005. – Т. 356. – №. 1. – С. 133-138.
ПРИЛОЖЕНИЕ А
Листинг кода программы системы аутентификации пользователя транспортного средства
/*
main.h заголовочный файл главного файла
*/
#define F_CPU 8000000UL
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <stdint.h>
uint8_t crandom();
/*
main.c главный файл
*/
#include "main.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include "ecc.h"
#include "fatfs/ff.h"
#include "sha256.h"
#include "usart.h"
#include "rc4.h"
#define STOPCODE 2
#define POOLSIZE 256
uint8_t randoms[POOLSIZE];
volatile uint32_t randomsi=0;
FATFS FatFs;
struct rc4state randstate;
uint8_t crandom(){
if(randomsi<(POOLSIZE/8))
USART1_SendByte(POOLSIZE-randomsi);
while(!randomsi);
return randoms[--randomsi]^nextRand(&randstate);
}
ISR(USART1_RX_vect){
if(randomsi<POOLSIZE)
randoms[randomsi++]=UDR1;
}
void sha256file(char* path,uint8_t* code){
FIL fil;
uint8_t buffer[SHABUFLEN];
unsigned temp;
struct sha256state state;
sha256new(&state);
if(f_open(&fil,path,FA_OPEN_EXISTING|FA_READ)==FR_OK){
while(f_read(&fil,buffer,SHABUFLEN,&temp)==FR_OK&&temp)
sha256update(&state,buffer,temp);
sha256end(&state,code);
f_close(&fil);
}
}
void main(void){
int32_t i;
FIL fil;
DIR dir;
FRESULT res;
FILINFO fno;
rc4new(&randstate,__TIME__,sizeof(__TIME__));
// rc4new(&randstate,"a2345",5);
uint8_t code[(NUMLEN>SHACODELEN)?NUMLEN:SHACODELEN];
uint8_t path[256];
//ECC variables
uint8_t e;
uint8_t el[NUMLEN]={};
uint8_t d[NUMLEN];
uint8_t n[NUMLEN];
USART0_init();
USART1_init();
sei();
USART0_SendStr("Starting ECC key generation procedure.\n\n");
getECCkeys(&e,d,n);
el[0]=e;
USART0_SendStr("\n");
USART0_SendStr("Public key exponent:\ne=");
USART0_SendNum(e);
USART0_SendStr("\nPrivate key exponent:\nd=");
bigPrint(d);
USART0_SendStr("Modulus:\nn=");
bigPrint(n);
USART0_SendStr("\n");
USART0_SendStr("Starting signing files.\n\n");
f_mount(&FatFs, "", 0);
f_opendir(&dir,"/code");
while(f_readdir(&dir,&fno)==FR_OK&&fno.fname[0]!=0){
sprintf(path,"/code/%s",fno.fname);
USART0_SendStr("FILE: ");
USART0_SendStr(path);
USART0_SendStr("\nHASH: ");
sha256file(path,code);
USART0_SendArr(code,SHACODELEN);
for(i=SHACODELEN;i<NUMLEN;++i)
code[i]=0;
eccCode(code,d,n);
USART0_SendStr("MAC: ");
bigPrint(code);
eccDecode(code,el,n);
USART0_SendStr("DECR: ");
bigPrint(code);
USART0_SendStr("\n");
}
USART1_SendByte(STOPCODE);
USART0_SendStr("All files processed.");
while(1);
}
/*
ecc.h заголовочный файл ecc.c
*/
#include <stdio.h>
#include "curve"
#define MILLER_RABIN_K 32//Хорошо, если здесь 128, но это долго
#define ECCDEBUG 0
#define ECCDEBUG0 1
int32_t isPrime(uint8_t* num);
int32_t millerRabin(uint8_t* num);
uint8_t crandom();
void getLargePrime(uint8_t* arr,uint32_t to);
uint8_t getOpenExp(uint8_t* num);
void getECCkeys(uint8_t* e,uint8_t* d,uint8_t* n);
void eccCode(uint8_t* message, uint8_t* e, uint8_t* n);
void eccDecode(uint8_t* message, uint8_t* e, uint8_t* n);
/*
ecc.c криптографические функции
*/
#include <stdio.h>
#include <stdint.h>
#include "big_num.h"
#include "ecc.h"
#include "usart.h"
uint8_t small_primes[]={2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251};
// uint8_t_t crandom(){
// return rand();
// }
void eccCode(uint8_t* message, uint8_t* e, uint8_t* n){
bigExp(message,e,n);
}
void eccDecode(uint8_t* message, uint8_t* e, uint8_t* n){
bigExp(message,e,n);
}
int32_t isPrime(uint8_t* num){
int32_t i=0;
for(;i<sizeof(small_primes);++i)
if(bigSMod(num,small_primes[i])==0)
return 0;
return millerRabin(num);
}
int32_t millerRabin(uint8_t* n){
//Most memory requirement part. mem=8*NUMLEN
#if ECCDEBUG==1
USART0_SendStr("Start MR test:\n");
#endif
if(n[0]&1==0)
return 0;
uint32_t t=0;
int32_t i=0,k;
uint8_t temp;
uint8_t s[NUMLEN];
uint8_t a[NUMLEN];
int32_t next=0;
bigCopy(s,n);
s[0]^=1;//s=s-1
while(!s[i]){
++i;
t+=8;
}
temp=s[i];
while((temp&1)==0){
++t;
temp>>=1;
}
bigRShift(s,t);
k=0;
while(k<MILLER_RABIN_K){
#if ECCDEBUG==1
USART0_SendByte('.');
#endif
n[0]|=1;
bigRandom(a,n);
bigExp(a,s,n);//a=a**s mod n
n[0]^=1;
if(!(bigIsOne(a)||bigEqual(a,n))){
next=0;
for(i=0;(i<t-1)&&!next;++i){
n[0]|=1;
bigMul(a,a,n);
if(bigIsOne(a)){
#if ECCDEBUG==1
USART0_SendByte(' ');
#endif
return 0;
}
n[0]^=1;
if(bigEqual(a,n))
next=1;
}
if(!next){
#if ECCDEBUG==1
USART0_SendByte(' ');
#endif
return 0;
}
}
k+=2;
}
#if ECCDEBUG==1
USART0_SendStr("\n");
#endif
n[0]|=1;
return 1;
}
void getLargePrime(uint8_t* arr,uint32_t to){
#if ECCDEBUG0==1
USART0_SendStr("Attempt: ");
#endif
uint32_t k=0;
do{
++k;
bigRandomTo(arr,to);
arr[0]|=1;
#if ECCDEBUG0==1
USART0_SendNum(k);
if(k%20==0)
USART0_SendStr("\n");
else
USART0_SendByte(' ');
USART0_SendByte('\n');
bigPrint(arr);
#endif
}while(!isPrime(arr));
#if ECCDEBUG0==1
USART0_SendStr("\n");
#endif
}
uint8_t getOpenExp(uint8_t* num){
int32_t i=1;
for(;i<sizeof(small_primes);++i){
if(bigSMod(num,small_primes[i])!=0)
return small_primes[i];
}
return 0;
}
void getECCkeys(uint8_t* e,uint8_t* d,uint8_t* n){
uint32_t expected=0.693147*NUMLEN;
uint8_t q[NUMLEN],p[NUMLEN];
*e=0;
while(!*e){
#if ECCDEBUG0==1
USART0_SendStr("Generating ");
USART0_SendNum(PRIMELEN);
USART0_SendStr("-byte primes.\n");
USART0_SendStr("Expected number of attempts: ");
USART0_SendNum(expected);
USART0_SendStr("\n\nGenerating prime (1/2):\n");
#endif
getLargePrime(q,PRIMELEN);
unsigned temp=bigBitLen(q);
USART0_SendStr("===========");
USART0_SendNum(temp);
USART0_SendStr("===========");
#if ECCDEBUG0==1
USART0_SendStr("Generating prime (2/2):\n");
#endif
getLargePrime(p,PRIMELEN);
q[0]&=~1;//q-=1
p[0]&=~1;//p-=1
bigCopy(n,q);
bigMul(n,p,NULL);//n=(q-1)(p-1)=phi(q*p)
if(bigBitLen(n)<=MSGBITLEN)
continue;
q[0]|=1;
p[0]|=1;
*e=getOpenExp(n);
}
bigReverseBS(n,*e,d);
bigCopy(n,q);
bigMul(n,p,NULL);//n=q*p
}
/*
rng.c главный файл генератора случайных чисел
*/
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include "rc4.h"
#define STOPCODE 2
#define POOLSIZE 256
#define USART_BAUDRATE 4800UL
#define BAUD_PRESCALE (((F_CPU/(USART_BAUDRATE*16UL)))-1)
#define EOL 0x0D
struct rc4state state;
uint8_t pool[POOLSIZE];
uint8_t pooli=0;
uint8_t poolBit=0;
volatile uint8_t poolFull=0;
volatile uint32_t bytesToSend=0;
void saveRNGstate(){
eeprom_write_block(0,state->s,256);
}
ISR(USART_RXC_vect){
bytesToSend=UDR;
if(bytesToSend==0)
bytesToSend=256;
}
void USART_init(void){
UBRRL=BAUD_PRESCALE;
UBRRH=BAUD_PRESCALE>>8;
UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE);
}
void USART_SendByte(uint8_t u8Data){
while((UCSRA&(1<<UDRE))==0);
UDR=u8Data;
}
ISR(ADC_vect){
uint32_t temp=ADC;
int32_t i=1;
for(;i<10;++i)
temp^=temp<<i;
temp^=PC1;
pool[pooli]^=temp>>poolBit;
++poolBit;
if(poolBit==8){
if(pooli==POOLSIZE-1)
poolFull=1;
++pooli;
poolBit=0;
}
ADCSRA|=1<<ADSC;
}
void ADC_init(){
// SFIOR=0b00000000;
ADMUX=0b00000000;
ADCSRA=0b11001011;
MCUCR=0b00100100;
}
void main(void){
DDRB=0xff;
USART_init();
ADC_init();
sei();
eeprom_read_block(pool,0,POOLSIZE);
while(!poolFull);
rc4new(&state,pool,POOLSIZE);
poolFull=!poolFull;
while(bytesToSend!=STOPCODE){
if(bytesToSend){
cli(); // Чтобы быстрее отослать данные, а не потому что прерывания могут что-то испортить в переменных
while(bytesToSend){
USART_SendByte(nextRand(&state));
--bytesToSend;
}
sei();
}
if(poolFull){
poolFull=0;
rc4update(&state,pool,POOLSIZE);
}
nextRand(&state);
}
saveRNGstate();
while(1);
}
Похожие материалы
... АРМ, назначение ролей и распечатка предписаний: системному администратору сервера подсистемы, администратору транспортной станции УТП, администратору ключевой системы ЭЦП/КА, администратору информационной безопасности ТЦОИ - на регистрацию пользователя в подсистемах их сферы ответственности. После получения подтверждений о выполнении администраторами смежных подсистем предписанных действий, ...
... для реализации системы бюджетирования Консультационной группы "Воронов и Максимов". Статья о проблемах выбора системы бюджетирования - в проекте "УПРАВЛЕНИЕ 3000". Бюджетный автомат Если вы решитесь на автоматизацию системы бюджетирования компании, перед вами сразу встанут вопросы: что выбрать, сколько платить, как внедрять. Примеряйте! О ЧЕМ РЕЧЬ В “Капитале” на стр. 44, 45 мы рассказали ...
... на любое расстояние в любой точке страны. Поэтому на данный вопрос безопасности Банк России также обращает очень серьезное внимание. Одной из методологических основ совершенствования безопасности банковской системы является планирование бесперебойной деятельности КБ в случае потенциальной угрозы, которая трактуется как, выявление и защита критически важных бизнес-процессов и ресурсов, необходимых ...
... десять радиоканалов. Исходя, из предполагаемого числа абонентов, определим количество абонентов, приходящихся на одну БС: (2.3) где Nзад – общее число абонентов поселка Омчак Магаданской области; М – общее количество БС. Требуемое число радиоканалов для одной БС: , (2.4) 2.2 Расчет интенсивности нагрузки Интенсивность поступающей нагрузки рассчитывается, исходя из количества ...
... информации: в штатном режиме; изменения в штатном режиме работы; нештатный режим (аварийные ситуации). Глава 2. Обоснование способов защиты операционной системы от программных закладок типа троянский конь 2.1 Общие сведения о троянских программах Подсоединение локальных компьютерных сетей организаций к сети Internet приводит к необходимости уделять достаточно серьезное внимание ...
0 комментариев