УДК 004.3
РЕАЛИЗАЦИЯ ГЕНЕРАТОРА СЛУЧАЙНЫХ ЧИСЕЛ НА БАЗЕ ЗВУКОВОЙ КАРТЫ
Д.Б. Беспалов, С.В. Белим
Работа посвящена созданию аппаратного генератора случайных последовательностей на основе интегрированной звуковой карты. Проводится тестирование генерируемых последовательностей.
Введение
Потребности в последовательностях случайных чисел возникают в самых разных областях знаний. Основные из них - моделирование, численный анализ, программирование, теория принятия решений и теория игр. Для всех этих целей вполне пригодным оказывается метод генерации псевдослучайных чисел, который способен выдавать последовательности с внушительной величиной периода и распределением, сколь угодно близким к заданному. Случайные числа находят свое применение и в криптографии. С их помощью происходит генерация ключей в большинстве криптопротоколов, случайных параметров сеансов связи в протоколах аутентификации, значений параметров многих систем ЭЦП и т. д. В этом случае накладывается дополнительное ограничение независимости в совокупности всех получаемых значений случайных чисел, что фактически означает невозможность (или вычислительную неэффективность) получения новых значений случайных чисел по известной части последовательности. Лишь немногочисленный класс генераторов ПСП удовлетворяет этому требованию; как правило, такие генераторы по-прежнему обладают строго детерминированным алгоритмом, однако функция генерации необратима, что затрудняет нахождение зависимостей внутри последовательности. В подобных ситуациях предпочтительнее использовать генератор истинно случайных чисел, реализуемый с помощью некоторого источника внешней энтропии. Под таким источником мы будем понимать некий физический процесс, параметры которого в каждый момент времени очень сложно предсказать. Известно множество реализаций таких аппаратных генераторов, в том числе достаточно остроумных, среди них плата с шумящим диодом, ПЗС-матрица в затемненной камере, датчик радиоактивного фона и многие другие. Одним из недостатков аппаратных генераторов является их относительно высокая стоимость, связанная с покупкой и обслуживанием необходимого оборудования; программные же генераторы
Copyright (с
Омский государственный университет им. Ф.М. Достоевского. E-mail: [email protected]
лишены этих неудобств. Одной из базовых задач данного исследования являлся поиск аппаратных средств, входящих в состав большинства типовых конфигураций персональных и рабочих компьютеров по умолчанию и являющихся источником некоторой внешней энтропии, В данном случае стоимость генератора случайных чисел состояла бы исключительно из стоимости ПО для калибровки устройства и считывания значений, В качестве такого оборудования была выбрана звуковая карта, в интегрированном варианте присутствующая на абсолютном большинстве материнских плат. Источником энтропии в данном случае является шум на ее линейном входе. Основной задачей исследования являлось считывание этого шума и изучение его статистических характеристик, позволяющих сделать заключение о пригодности данного генератора для конкретных целей,
1. Реализация генератора случайных последовательностей
В качестве источника внешней энтропии рассматривается линейный вход звуковой карты [1]. Этот разъем предназначен для подключения источников аналогового звукового сигнала (таких как синтезатор или обычный кассетный магнитофон); такой сигнал, принятый на входе звуковой карты, переводится в последовательность байтов с помощью аналого-цифрового преобразователя, К действию полезного сигнала постоянно добавляется шум, вызванный электромагнитными наводками от других элементов цепи, тепловым шумом в цепях питания и прочими флуктуациями в подсистеме аналогового входа, С позиции поиска источника энтропии интерес представляет именно шум, а потому рассматривается линейный вход звуковой карты, на который не поступает никакого полезного сигнала. Считывание данных можно проводить с помощью любого интерфейса взаимодействия с устройством, например силами компонента DireetSound из коллекции DirectX, Так как мощность шума существенно ниже мощности полезного сигнала, предполагается, что в считываемых данных будут задействованы в основном младшие биты, причем максимальная битовая глубина шума напрямую зависит от качества устройства.
Для считывания данных с линейного входа звуковой карты была написана программа SoundRandom, Программа позволяет составить список устройств звукового захвата, действующих на компьютере, и выбрать в качестве источника любое из них, В качестве основных параметров считываемой последовательности можно задавать ее длину, а также количество младших битов, используемых для генерации. Программа позволяет провести базовую оценку равномерности распределения значений с помощью описательной статистики: среднее, сумма, дисперсия, эксцесс и пр. Код программы разделен на два отдельных модуля, отличающихся по функциональному назначению. Модуль взаимодействия с устройством реализует алгоритм считывания данных с линейного входа, используя функции DireetSound, среда разработки - Microsoft Visual C++ 6,0 [2]. Модуль графического интерфейса обеспечивает взаимодействие с пользователем, установку параметров, вывод графиков и отображение результатов, среда
разработки - Borland С----Builder 6,
■*$1 Внешний источник энтропии
Устройство захвата (SoundMAX Digital Audio Длина последовательности fl'ooo"
Количество случайных битов Учитывать знак
(Временная развертка
Размерность пространства Степени свободы Параметр V
"51
_-13]х]
Описательная статистика Среднее значение |11.7
Стандартная ошибка среднего Стандартное отклонение Дисперсия
Медиана
Мода
Эксцесс
Асимметричность
Интервал
Минимум
Максимум
Сумма
Количество
1024
|Ю48576 13355443 1244.736 |1811.06 139160.1 |1173862 | 3741434
0.242590189
7.671375365
58.84999999
10
-0.750834241
0.454785234
32'
11700
1000
Рис. 1. Интерфейс программы БоипсШапЛот
Алгоритм модуля взаимодействия с устройством состоит из функций, инициализирующих интерфейсы обращения к устройствам захвата и буферам записи, а также из функций, обрабатывающих начало и конец записи и очередное переполнение буфера. Интерфейс считывает но 44100 звуковых сэмплов в секунду, результат передается в вызывающий модуль, где дня формирования последовательности используется необходимое количество младших битов сэмпла.
Функции, реализующие функционал модуля:
// Определение доступных устройств звукового захвата
НИЕБиЬТ \У1ХАР1 DirectSoundCaptureEnumerate(
ЬРББЕХиМСАЬЬВАСК 1рБ8ЕпитСа11Ьаск,
ЬРУОГО 1рСоп1ех1
);
// Создание объекта дня взаимодействия с устройством
ШЕБЕКТ ¥/1ХАР1 DirectSoundCaptureCreate(
ьрсего 1Рсит,
ЬРБШЕСТЗОиХБСАРТийЕ *1р1рБ8С,
ЬРиХКХО'УУ’Х рЕпкОигег
);
// Создание буфера дня считывания данных
HEESULT CreateCaptureBuffer(
LPDSCBUFFEEDESC lpDSCBufferDese,
LPLPDIRECTSOUNDCAPTUREBUFFER lplpDirectSoundCaptureBuffer, LPUNKNOWN pUnkOuter
);
// Разметка буфера для определения переполнения HEESULT SetNotifieationPositions(
DWOED ePositionNotifies,
LPCDSBPOSITIONNOTIFY IpePositionNotifies
);
2. Тестирование случайных последовательностей
Опираясь на данные одной лишь описательной статистики, нельзя утверждать, что полученная последовательность является равномерно распределенной случайной последовательностью (РРСП), Поэтому встает вопрос о проверке результатов с помощью ряда статистических критериев. Статистический критерий - это некая процедура, применяемая к количественным данным выборки. Каждый тест предназначен для проверки гипотезы Н: «Заданная последовательность имеет равномерно распределенную случайную структуру». Для этого рассчитывается определенная статистика (своя для каждого теста), которая сравнивается с соответствующей статистикой РРСП, Величина отклонения полученного параметра от эталонного служит мерой «подозрительности» результата; начиная с некоторого предела отклонения последовательности отвергаются как неслучайные (или же распределенные иначе). Прохождение одного теста не гарантирует совпадения всех параметров последовательности с параметрами РРСП, поэтому очень важно прохождение целого набора тестов. Количество уже разработанных критериев велико, в сущности, их можно изобрести сколь угодно много. Хорошо зарекомендовавшими себя являются алгоритмы, описанные в «Искусстве программирования» Д, Кнута [1], а также тесты из большого набора «DieHard Test Battery» Д, Мареалья [4], Опробовав полученные последовательности на достаточном количестве критериев, можно сделать вывод о ее пригодности к применению в криптостойких алгоритмах.
Для анализа статистических свойств сгенерированных числовых последовательностей создана программа Analizer, Она содержит набор из шести статистических критериев и механизм для обработки с их помощью последовательностей при любом заданном уровне группировки элементов [5,6], По расчетным критериям программа представляет результат о прохождении данного теста и о категории, в которую попала тестируемая последовательность.
Критерии, реализованные в приложении: критерий хи-квадрат, критерий Колмогорова-Смирнова, критерий интервалов, покер-критерий, критерии распределения на плоскости и в пространстве.
Файл Критерии
Степени свободы [39 Проценты Хи • квадрат распределения
25% 50% 75% 95% 99% 25.64 32.68 38.33 44.58 54.61 62.53
Величина V (40.9111 Результат теста: Удовлетворительный (50-75%)
Формат | Последовательность Группировка |-
Границы диапазона[ТО
Рис. 2. Интерфейс программы SoundRandom
-Jn|x|
Файл Критерии
0 0
1 7 2
■ 2 4
1 4 6 _
If; 8 -
! ь 10
1 3 12
16
1 12 1В
1 14 20
22 -
1 16 24
1 18 26
і . 28
1 20 30
Формат | Последовательность Группировка f^"
Рис. 3. Интерфейс программы SoundRandom
Испытания проводились па нескольких типах звуковых карт, все экземпляры были в интегрированном исполнении. Отсутствие сигнала па линейном входе карты контролировалось, С каждого устройства было считано но три последовательности длиной 100000 бит. Результаты применения тестов приведены в таблице; критерии, выдавшие неоднозначный ответ, отмечены цветом. Как видно, большинство тестов проходятся благополучно.
Картам в таблице присвоены следующие номера: 1) Realtek ALC662, 2)
СMI8738/С3DX PCI, 3) SoundMax Digital Audio, 4) VIA AC97 Audio Chipset,
5) ADI AD1986A HD Audio, Набор тестов: T1 - хи-квадрат, T2 - критерий
Колмогорова-Смирнова, ТЗ - критерий интервалов, Т4 - покер-критерий. Па-
раметры группировки: (1) - но 1 биту, (2) - но 2 бита, (3) - но 3 бита, (4) - но 4
бита.
Ф Анализатор случайных последовательностей
*5) Анализатор случайных последовательностей
Таблица 1. Результаты проверки критериев
поел Т1(1) Т2 (1) Т3(1) Т4(1) Т1(2) Т2(2) Т3(2) Т4(2)
1 -1 4.17 0 1.02 13.34 0.48 6.79 0 0.76 36.35 5.3
1 - 2 2.48 0.79 0 24.64 0.14 2.85 0.54 0 33.25 7.79
1 - 3 0 0.03 0 19.8 0.65 0.12 0.08 0.02 39.19 6.18
2 - 1 0 0 0.01 64.46 2.07 0.49 0.04 0.16 35.87 6.99
2 - 2 1.35 0 0.58 18.29 5.13 5.04 0 0.68 82.71 1.94
2 - 3 1.49 0 0.61 16.36 0.42 2.47 0 0.48 40.23 8.1
3 - 1 2.12 0 0.73 9.44 2.14 3.95 0 0.57 18.56 4.77
3 - 2 2.06 0.72 0 27.16 0.47 4.13 0.58 0 24.95 2.7
СО 1 СО 0.92 0.48 0 15.77 1.49 1.1 0.29 0 74.64 2.3
4 - 1 1.78 0 0.67 39.81 7.96 8.02 0.28 0.39 70.75 13.24
4 - 2 2.72 0 0.85 19.17 4.25 7.25 0 0.79 16.89 4.31
1 СО 1.63 0 0.64 15.43 2.92 3.72 0 0.57 60.39 0.4
5 - 1 0.16 0 0.2 16.2 0.21 0.63 0.02 0.22 11.24 6.14
5 - 2 0.81 0 0.45 19.01 10.01 10.1 0.3 0.75 65.13 5.99
5 - 3 0.1 0.16 0 2.4 5.41 1.17 0.28 0.03 23.95 2.85
поел Т1(3) Т2(3) Т3(3) Т4(3) Т1 (4) Т2(4) Т4(4)
1 -1 8.48 0 0.58 112.87 9.66 16.08 0 0.5 17.62
1 - 2 5.09 0.4 0 62.23 5.68 24.95 0.47 0.19 4.38
1 - 3 4.04 0.1 0.35 34 6.85 19.57 0.26 0.14 4.31
2 - 1 11.92 0.18 0.52 67.17 1.63 20.37 0.32 0.25 1.87
2 - 2 6.14 0.04 0.48 31.78 2.99 19.09 0.28 0.44 8.11
2 - 3 4.82 0.05 0.33 26.13 7.05 14.21 0 0.47 5.07
3 - 1 14.94 0.24 0.82 158.96 8.3 23.15 0.24 0.39 3.12
3 - 2 8.2 0.3 0.14 32.7 3.6 12.4 0.33 0.1 2.06
СО 1 СО 14.94 0.48 0.23 35.22 3.53 16.07 0.32 0.08 6.58
4 - 1 13.76 0.14 0.54 251.39 10.57 30.49 0.25 0.53 3.35
4 - 2 13.55 0.07 0.64 75.7 7.28 22.51 0.22 0.34 2.56
1 СО 5.2 0 0.37 50.83 1.79 19.02 0.13 0.45 1.71
5 - 1 4.97 0.26 0.18 64.59 6.57 16.22 0.16 0.27 3.87
5 - 2 13.36 0.37 0.38 66.44 5.25 43.13 0.45 0.37 2
5 - 3 3.74 0.24 0.11 40.26 1.43 15.98 0.43 0.15 5.31
В результате проведенных исследований был сделан вывод о том, что аналоговый вход звуковой карты обладает большим потенциалом в плане конструирования генераторов «истинно» случайных чисел. Основной положительный фактор в данном вопросе - цена построения работающего устройства; пользователь платит лишь за ПО, в аппаратной же части ему не нужно докупать никаких дополнительных приспособлений, В то же время генерируемые последовательности выдерживают все тесты на случайность и равномерность распределения, а потому годятся для применения в областях с повышенными требованиями к случайным числам. Также данный способ отличается большой стойкостью к возможным компрометациям со стороны конкурентов и недоброжелателей в случае, если будет предпринята попытка доказать прогнозируемое! ь получаемой последовательности. Скомпрометировать генератор возможно только на специальным образом сконфигурированной системе, либо явно вмешавшись в его работу, С другой стороны, соблюдая определенные требования (спецификацию) , можно быть уверенными в достаточной непредсказуемости генерируемых случайных чисел.
Литература
1. Юрьев Л. Генерация истинно случайных чисел на основе шума звуковых карт. URL: http://leo.vuriev.ru/114 (дата обращения: 01.02.2010).
2. Горнаков С.Г. DirectX 9: Уроки программирования на C++. Спб.: БХВ-Петербург, 2005. 400 с.
3. Кнут Д. Э. Искусство программирования. Том 2. Случайные числа. М.: Вильямс, 2002. 720 с.
4. Ylonen Т. Introduction to Cryptography.
URL: http://algolist.manual.ru/defence/intro.php (дата обращения: 10.02.2010).
5. Иванов М.А., Чугунков И.В. Теория, применение и оценка качества генераторов псевдослучайных последовательностей. М: КУДИЦ-ОБРАЗ, 2003. 240 с.
6. Marsaglia G. DIEHARD Statistical Tests. URL: http://stat.fsu.edu/ geo/diehard.html (дата обращения: 01.02.2010).