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

3.5 Разработка общего алгоритма работы системы

Разработав алгоритмы работы отдельных систем, можно составить блок-схему алгоритма работы системы в целом. На рисунке 3.7 изображена блок-схема работы всей системы. На этой блок-схеме изображён процесс осуществления протокола авторизации так, как предполагается его работа в реальной жизни.

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

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

Рисунок 3.7 – Блок-схема алгоритма работы всей системы

3.6 Проектирование программной части генератора случайных чисел

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

3.6.1 Источники энтропии. Существует множество процессов, которые ведут себя случайным образом. Например, младшие биты данных, полученных с АЦП-преобразователя будут всегда содержать фактически случайные значения. В данном проекте мы воспользуемся этим и будем считать АЦП – одним из источников энтропии. По прерыванию окончания АЦП-преобразования программа будет брать число, полученное в результате преобразования и преобразовывать его в один бит энтропии. Так же, если подключить на один вход микроконтроллера источник прямоугольных (вообще, не обязательно прямоугольных) импульсов, работающий на частоте, превышающей частоту микроконтроллера, то чтение состояния этого вывода в произвольные моменты времени будет эквивалентно чтению случайного значения, однако мы не будем надеятся на истинную случайность этих данных и состояние этого вывода будет складываться по модулю два с одним битом энтропии, полученным с АЦП-преобразователя.

Таким образом, каждый раз, когда происходит прерывание АЦП, мы получаем один бит энтропии. Было бы очень неплохо добавить дополнительные источники энтропии, и это не сложно, однако в данной курсовой работе этот вопрос опускается.

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

3.6.2 Генератор псевдослучайных чисел. Истинно случайные числа будут использоваться нами только для того, чтобы получить начальное число, подающееся на вход генератора псевдослучайных чисел. После того как у нас появится начальное число, генератор сможет произвести на свет любое нужное количество случайных (а точнее, псевдослучайных) чисел. При необходимости мы можем прибавлять истинно случайные числа к начальному числу генератора псевдослучайных чисел. Это гарантирует, что выходные данные последнего никогда не станут полностью предсказуемыми, даже если злоумышленник каким-либо образом узнает начальное число.

Существует теоретическое мнение, что истинно случайные числа лучше, чем псевдослучайные. Для некоторых криптографических протоколов можно доказать, что при использовании истинно случайных чисел определенные типы атак становятся невозможными. Такой протокол называется безусловно защищенным (unconditionally secure). Если же использовать генератор псевдослучайных чисел, протокол будет безопасным только при условии, что злоумышленник не сможет взломать этот генератор случайных чисел.

Такой протокол называется защищенным по вычислениям (computationally secure). Это различие, однако, не совсем обоснованно. Все криптографические протоколы почти всегда основаны на вычислительных приближениях. Устранение такого приближения для одного конкретного типа атак не принесет существенного улучшения. Более того, генерация истинно случайных чисел, необходимых для обеспечения безусловной защищенности, настолько сложна, что попытка использовать такие числа может только ухудшить безопасность системы.

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