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

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