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

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