Разработка генератора случайных чисел для криптографических приложений на основе оценивания магнитометрических данных

Генераторы случайных чисел в криптографии. Математические основы оценивания случайной последовательности. Анализ статических характеристик генератора случайных чисел на основе магнитометра. Разработка программного обеспечения для операционной системы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 12.05.2018
Размер файла 5,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Одной из основных целей нижеописанных тестов является минимизация вероятности ошибки 2-го рода, иначе говоря, минимизация вероятности принятия последовательности, произведенной плохим генератором, за последовательность, произведенную хорошим генератором. Вероятность ? и ? связаны друг с другом и с длиной nпроверяемой последовательности: если два из этих значений определены, третье определяется автоматически. На практике обычно выбирают размер n и значение для ? (вероятности ошибки 1-го рода). Тогда критическая точка для данной статистики выбирается так, чтобы получить наименьшее значение ? (вероятность ошибки 2-го рода).

Каждый тест основан на вычислении значения тестовой статистики, которая является функцией данных. Если значение тестовой статистики есть S, а t - критическое значение, то вероятность ошибки 1-го рода и 2-го рода есть соответственно:

P(S>t||H0 истина) =P(отклонить H0 | H0истинна),

P(S? t || H0ложна) = P(принять H0 | H0 ложна).

Тестовая статистика использует вычисление значения P-value, которое констатирует силу доказательства против нулевой гипотезы, иначе говоря, P-valueесть вероятность того, что совершенный генератор случайных чисел произвел бы последовательность менее случайную, чем исследуемая, для типа неслучайности, проверяемого тестом. Если P-value для теста равно 1, то последовательность абсолютно случайна. P-value, равное 0, указывает, что последовательность абсолютно неслучайна. Для теста следует выбирать уровень значимости ?. Если значение P-value больше или равно ?, то принимается нулевая гипотеза, т.е. последовательность кажется случайной. Если значение P-value меньше?, то нулевая гипотеза отклоняется, т.е. последовательность кажется неслучайной. Параметр ? обозначает вероятность ошибки 1-го рода. Как правило, ? выбирается в интервале [0.001,0.01].

· Значение ?, равное 0.001, говорит о том, что из 1000 случайных последовательностей не прошла бы тест лишь одна. При P-value? 0.001 последовательность рассматривается как случайная с доверительностью 99.9%. При P-value<0.001 последовательность рассматривается как неслучайная с доверительностью 99.9%.

· Значение?, равное 0.01, говорит о том, что из 100 случайных последовательностей не прошла бы тест лишь одна. При P-value? 0.01 последовательность рассматривается как случайная с доверительностью 99%. При P-value<0.01 последовательность рассматривается как неслучайная с доверительностью 99%.

По отношению к исследуемым последовательностям можно сделать следующие предположения.

· Равномерность. В любой точке при генерации последовательности случайных или псевдослучайных битов 0 и 1равновероятны и вероятности их появления равны 1/2. Ожидаемое число нулей (или единиц) равно n/2, где n- длина последовательности.

· Масштабируемость. Любой тест, применимый к последовательности, может также применяться к произвольной подпоследовательности. Если последовательность случайна, то любая ее подпоследовательность должна также быть случайна. Следовательно, любая подпоследовательность должна пройти все тесты на случайность.

· Полнота. Поведение генератора случайных чисел связано с начальным заполнением, поэтому неверно делать заключение о качестве генератора, основываясь на результатах анализа последовательности при каком-то одном начальном заполнении. Аналогично неверно делать заключение о генераторе случайных чисел, основываясь только на результатах анализа одного произведенного им фрагмента последовательности.

Таблица 2 показывает пошаговый процесс, позволяющий оценить конкретную двоичную последовательность.

Таблица 2. Процедура оценки

Номер шага

Пошаговый процесс

комментарии

1.

Постановка гипотезы

Предполагаем, что последовательность является случайной

2.

Вычисление тестовой статистики последовательности

Проводим тестирование на битовом уровне

3.

Вычисление P-value

P-value[0;1]

4.

Сравнение P-valueс ?

Задаем ?, где ?[0.001;0.01].

Если P-value>? - тесты пройдены

3.3.2 Методика тестирования NISTSTS

Методика тестирования включает следующие этапы:

Цель методики - для каждого ГСП оценить и принять решение о том, что он формирует случайные двоичные последовательности.

1. Генератор формирует двоичную последовательность S s1 , s2 ,…, sn, si0,1 произвольной длины n .

2. Для фиксированного значения n формируется множество из m двоичных последовательностей:

S1 = S11, S12, …, S1n

S2 = S21, S22, …, S2n

Sm = Sm1, Sm2, …, Smn, Sij={0,1}, 1? i? m, 1? j?n.

3. Каждую последовательность проверяют с использованием пакета NIST STS. В результате формируется статистический портрет генератора, таблица 3.

Таблица 3. Статистический портрет генератора

№ теста j

1

2

q

№ последовательности i

S1

P11

P12

P1q

S2

P21

P22

P2q

Sm

Pm1

Pm2

Pmq

Либо в матричном виде:

Статистическим портретом генератора является матрица размерностью mq , де m - количество проверяемых двоичных последовательностей, а q - количество статистических тестов, используемых для тестирования каждой последовательности. Элементы матрицы Pij0,1, где i и jпредставляют собой значения вероятности, которая получена в результате тестирования i-ой последовательности j-ым тестом.

4. Согласно полученному статистическому портрету определяют долю последовательностей, которые прошли каждый статистический тест. Для этого задают уровень значимости 0.001, 0.01 и выполняют подсчет значений вероятности, что превышают установленный уровень значимости для каждого из q тестов, то есть определяют коэффициент:

(3.3)

В результате формируется вектор коэффициентов R r1, r2,…, rq, элементы которого характеризуют, в процентах, прохождения последовательности Si всех статистических тестов.

Правило 1. Предполагается, что генератор G прошел тестирование по j-ому тесту, если значение коэффициента rj находится в пределах доверительного интервала rmax, rmin. Границы доверительного интервала определяются в соответствии с выражением:

(3.4)

где

5. Производится статистический анализ статистического портрета. Полученные значения вероятностей Pij подчиняются равновероятному закону распределения на интервале 0, 1 . Для вектора-столбца статистического портрета строится гистограмма частот Fk попадания значений Pij в каждый из k подинтервалов, на которые разбит интервал 0, 1. Равновероятность распределения значений вероятностей Pij, проверяется с использованием критерия x2.Для этого рассчитывается статистика вида:

(3.5)

Которая подчиняется распределению x2 с девятью степенями свободы.

Правило 2. Предполагается, что генератор G прошел тестирование по j-му тесту, если выполняется условие.

6. Предпоследнее решение принимают в соответствии с правилом: предполагается, что генератор G прошел статистическое тестирование пакетом NIST STS, если значение коэффициентов rjдля всех jнаходятся в пределах доверительного интервала rmax, rmin и выполняется условие для всех j.

3.4 Описание тестов NIST

Пакет статистических тестов разработан Лабораторией информационных технологий (англ. Information Technology Laboratory), являющейся исследовательской организацией Национального института стандартов и технологий (NIST). В состав пакета входят 15 статистических тестов, целью которых является определение меры случайности бинарных последовательностей, порождённых либо аппаратными, либо программными генераторами случайных чисел. Эти тесты основаны на различных особенностях, присущих только неслучайным. Во всех тестах, если вычисленное в ходе теста значение P-value < 0.01, то данная двоичная последовательность не является истинно случайной. В противном случае последовательность носит случайный характер.

1. FrequencyTest (Частотный побитовый тест)

Этот тест определяет соотношения между нулями и единицами во всей двоичной последовательности. Цель - выяснить, действительно ли число нулей и единиц в последовательности приблизительно одинаковы, как это можно было бы предположить в случае истинно случайной бинарной последовательности. Тест оценивает, насколько близка доля единиц к 0.5. Таким образом, число нулей и единиц должно быть примерно одинаковым. Все последующие тесты проводятся при условии, что пройден данный тест.

2. Frequency Test within a Block (Частотныйблочныйтест)

Этот тест определяет количество единиц внутри блока длиной M бит. Цель - выяснить, действительно ли частота повторения единиц в блоке длиной M бит приблизительно равна M /2 , как можно было бы предположить в случае абсолютно случайной последовательности. Если принять M=1 , данный тест переходит в тест Frequency (частотный побитовый тест).

3. Cumulative Sums (Cusum) Test (Тесткумулятивныхсумм)

Тест заключается в максимальном отклонении (от нуля) при произвольном обходе, определяемым кумулятивной суммой заданных (-1, +1) цифр в последовательности. Цель данного теста -- определить, является ли кумулятивная сумма частичных последовательностей, возникающих во входной последовательности, слишком большой или слишком маленькой по сравнению с ожидаемым поведением такой суммы для абсолютно случайной входной последовательности. Таким образом, кумулятивная сумма может рассматриваться как произвольный обход. Для случайной последовательности отклонение от произвольного обхода должно быть вблизи нуля. Для некоторых типов последовательностей, не являющихся вполной мере случайными, подобные отклонения от нуля при произвольном обходе будут достаточно существенными.

4. Runs Test (Тест на последовательность одинаковых битов)

Этот тест подсчитывает полное число серий в исходной последовательности, где под серией подразумевается непрерывная подпоследовательность одинаковых битов. Серия длинойk бит состоит из k идентичных битов. Цель данного теста - сделать вывод о том, действительно ли число серий, состоящих из единиц и нулей, с различными длинами соответствует их числу в случайной последовательности. В частности, определяется, быстро либо медленно чередуются единицы и нули в исходной последовательности.

5. TestfortheLongestRunofOnesinaBlock (Тест на самую длинную последовательность единиц в блоке)

В данном тесте определяется самая длинная серия единиц внутри блока длиной m бит. Цель - выяснить, действительно ли длина такой серии соответствует ожиданиям длины самой протяжённой серии единиц в случае абсолютно случайной последовательности. Следует заметить, что из предположения о примерно одинаковой частоте появления единиц и нулей (тест Frequency) следует, что точно такие же результаты данного теста будут получены при рассмотрении самой длинной серии нулей. Поэтому измерения можно проводить только с единицами.

6. Binary Matrix Rank Test (Тест рангов бинарных матриц)

Здесь производится расчёт рангов непересекающихся подматриц, построенных из исходной двоичной последовательности. Целью этого теста является проверка на линейную зависимость подстрок фиксированной длины, составляющих первоначальную последовательность.

7. Discrete Fourier Transform (Spectral) Test (Спектральныйтест)

В данном тесте оценивается высота пиков дискретного преобразования Фурье исходной последовательности. Цель - выявление периодических свойств входной последовательности, например, близко расположенных друг к другу повторяющихся участков. Тем самым это явно демонстрирует отклонения от случайного характера исследуемой последовательности. Идея состоит в том, чтобы число пиков, превышающих пороговое значение в 95 % по амплитуде, было значительно больше 5 %

8. Non-overlapping Template Matching Test (Тест на совпадение неперекрывающихся шаблонов)

В данном тесте подсчитывается количество заранее определённых шаблонов, найденных в исходной последовательности. Цель - выявить генераторы случайных или псевдослучайных чисел, формирующие слишком часто заданные непериодические шаблоны. Как и в тесте № 8 на совпадение перекрывающихся шаблонов для поиска конкретных шаблонов длиной m бит используется окно также длиной m бит. Если шаблон не обнаружен, окно смещается на один бит. Если же шаблон найден, окно перемещается на бит, следующий за найденным шаблоном, и поиск продолжается дальше.

9. Overlapping Template Matching Test (Тест на совпадение перекрывающихся шаблонов)

Этот тест подсчитывает количество заранее определённых шаблонов, найденных в исходной последовательности. Как и в тесте № 7 на совпадение неперекрывающихся шаблонов для поиска конкретных шаблонов длиной m бит, используется окно также длиной m бит. Сам поиск производится аналогичным образом. Если шаблон не обнаружен, окно смещается на один бит. Разница между этим тестом и тестом № 7 заключается лишь в том, что если шаблон найден, окно перемещается только на бит вперед, после чего поиск продолжается дальше.

10. Maurer's “Universal Statistical” Test (Универсальный статистический тест Маурера)

Здесь определяется число бит между одинаковыми шаблонами в исходной последовательности (мера, имеющая непосредственное отношение к длине сжатой последовательности). Цель теста - выяснить, может ли данная последовательность быть значительно сжата без потерь информации. В случае если это возможно сделать, то она не является истинно случайной.

11. ApproximateEntropyTest (Тест приблизительной энтропии)

Как и в тесте на периодичность, в данном тесте акцент делается на подсчёте частоты всех возможных перекрываний шаблонов длины m бит на протяжении исходной последовательности битов. Цель теста - сравнить частоты перекрывания двух последовательных блоков исходной последовательности с длинами m и m+1 с частотами перекрывания аналогичных блоков в абсолютно случайной последовательности.

12. RandomExcursions Test (Тест на произвольные отклонения)

Этот тест подсчитывает число циклов, имеющих строго k посещений при произвольном обходе кумулятивной суммы. Произвольный обход кумулятивной суммы начинается с частичных сумм после последовательности (0,1), переведённой в соответствующую последовательность (-1, +1). Цикл произвольного обхода состоит из серии шагов единичной длины, совершаемых в случайном порядке. Кроме того, такой обход начинается и заканчивается на одном и том же элементе. Цель данного теста - определить, отличается ли число посещений определённого состояния внутри цикла от аналогичного числа в случае абсолютно случайной входной последовательности. Фактически данный тест есть набор, состоящий из восьми тестов, проводимых для каждого из восьми состояний цикла: -4, -3, -2, -1 и +1, +2, +3, +4.

13. Random Excursions Variant Test (Другой тест на произвольные отклонения)

В этом тесте подсчитывается общее число посещений определённого состояния при произвольном обходе кумулятивной суммы. Целью является определение отклонений от ожидаемого числа посещений различных состояний при произвольном обходе. В действительности этот тест состоит из 18 тестов, проводимых для каждого состояния: -9, -8, …, -1 и +1, +2, …, +9. На каждом этапе делается вывод о случайности входной последовательности.

14. Serial Test (Тест на переодичность)

Данный тест подсчитывает частоты всех возможных перекрываний шаблонов длины m бит на протяжении исходной последовательности битов. Целью является определение, действительно ли количество появлений 2m перекрывающихся шаблонов длиной m бит приблизительно такое же, как в случае абсолютно случайной входной последовательности бит. Последняя, как известно, обладает однообразностью, то есть каждый шаблон длиной m бит появляется в последовательности с одинаковой вероятностью. Стоит отметить, что при m=1 тест на периодичность переходит в частотный побитовый тест (Frequency).

15. Linear Complexity Test (Тест на линейную сложность)

В основе теста лежит принцип работы линейного регистра сдвига с обратной связью (англ. Linear Feedback Shift Register, LFSR). Цель - выяснить, является ли входная последовательность достаточно сложной для того, чтобы считаться абсолютно случайной. Абсолютно случайные последовательности характеризуются длинными линейными регистрами сдвига с обратной связью. Если же такой регистр слишком короткий, то предполагается, что последовательность не является в полной мере случайной.

3.5 Выполнение тестов с использованием программы NISTSTS.exe

Средством тестирования NIST STS следует пользоваться из командной строки. Для этого необходимо произвести запуск исполняемого файла NIST_STS.exe, и установить длину исследуемой последовательности. Необходимо исследовать файл размером 251 КБ (251 458 байт), что составит 2011664 бит (такая длина позволяет говорить о 10 последовательностях длиной 25000 бит).

Рисунок 23. Запуск приложения NISTSTS.

После запуска приложения необходимо указать, какие данные необходимо тестировать, «OPTION---->»:

· Тестовые данные находятся в файле, который содержит последовательность, которую необходимо протестировать. Для этого необходимо указать значение 0. В строке «User Prescribed Input File: » вводится имя файла, «output.bin», Рис. 24.

После чего будет предоставлен перечень статистических тестов, которые могут быть применены к тестируемой последовательности. Если исследователь не желает применить существующие тесты к исследуемой последовательности, ему следует ввести в строке «Enter Choise: » цифру 0, в противном случае 1, рис. 25. и нажать клавишу «Enter»

Рисунок 24.. Выбор тестируемой последовательности

Далее программа предложит выбрать, какие именно тесты следует применить к последовательности. Все тесты пронумерованы от 01 до 15. Исследователю следует ввести в нижней строке под номером соответствующего теста цифру 1, если тест следует применить, в противном случае - цифру 0, рис. 25.

Рисунок 25. Выбор множества статистических тестов, которые будут последовательно применяться к исследуемой последовательности

После выбора необходимых тестов, приложение предложит ввести параметры, согласно которым будет производиться тестирование последовательности. Обратим внимание, что существуют параметризированные и не параметризированные тесты.

К не параметризируемым тестам следует отнести:

· Cumulative Sums

· Runs

· Longest Runs of Ones

· Rank

· Spectral DFT

· Random Excursions Variant

· Frequency

Для указанных тестов необходимо указать лишь длину последовательности и их количество. К параметризованным тестам следует отнести (укажем также их параметры):

· Block Frequency - длина блока, по умолчанию - 128 бит.

· NonOverlapping Template - длина блока, по умолчанию - 9 бит.

· Overlapping Template - длина блока, по умолчанию - 9 бит.

· Approximate entropy - длина блока, по умолчанию - 10 бит.

· Serial - длина блока, по умолчанию - 16 бит.

· Linear Complexity - длина блока, по умолчанию - 500 бит.

Кроме того, следует указать в каком формате будут представлены данные в файле:

· «текстовый» - один символ - один бит;

· «двоичный» - один байт содержит 8 бит последовательности.

В строке «How many bitstreams should be generated?» исследователю следует ввести количество тестируемых последовательностей. NIST STS рекомендует число 10 в качестве количества подпоследовательностей.

Рисунок 26. Настройка параметров частотного теста

В строке «Select input mode:» исследователь указывает тип тестируемой подпоследовательности: в случае если последовательность представлена в ASCII формате, следует ввести 0, если в двоичном, то 1, рис. 27.

Рисунок 27. Выбор формата представления последовательности

После ввода типа последовательности приложение выведет сообщение «Statistical Testing In Progress……….», рис. 28.

Рисунок 28. Отображение статуса теста

После завершения работы приложения, все суммарные расчетные данные размещаются в том же каталоге, где находится само приложение, в файле finalAnalysisReport, рис. 29 и рис. 30.

Рисунок 29. Сообщение о завершении теста

За более детальной информацией (промежуточной) следует обращаться в папку experiments, в которой перечислены папки (с названиями соответствующих тестов), будут находиться 2 файла stats и results. Файл stats содержит статистическую информацию по каждому тесту, а также формализованный результат: «Прошел» либо «Не прошел». Файл results содержит лишь значения P -value, которая также указывается в файле stats.

Рисунок 30. Информация о результатах тестирования

3.6 Результаты анализа статистических характеристик ГСЧ

В табл. 4 приведены результаты тестирования, 10 последовательностей длиной 25000 бит. Минимальный порог прохождения для каждого статистического теста, за исключением теста RandomExcursions (Variant), равен 8 из 10. То есть минимально 8 из 10 последовательностей должны пройти каждый из тестов.

Таблица 4. Результаты тестирования ГСЧ

STATISTICAL TEST

P-VALUE

PROPORTION

C1

C2

C3

C4

C5

C6

C7

C8

C9

C10

1

Frequency

0.3504

9/10

2

0

2

0

2

2

0

0

0

2

2

BlockFrequency

0.1223

8/10

3

0

3

1

0

0

1

0

2

0

3.1

CumulativeSums

0.2133

9/10

3

0

1

0

1

3

0

1

1

0

3.2

CumulativeSums

0.5341

9/10

2

1

1

1

3

1

0

0

1

0

4

* Runs

p<0.01

* 0/10

1

0

0

0

0

0

0

0

0

0

5

LongestRun

0.7399

10/10

1

0

1

0

1

1

2

2

0

2

6

Rank

0.2133

10/10

1

2

0

2

0

2

0

3

0

0

7

DFT

0.0351

10/10

0

0

3

1

0

0

4

0

1

1

8.1

NonOverlappingTemplate

0.3504

8/10

3

2

1

0

0

1

2

1

0

0

8.2

NonOverlappingTemplate

0.0351

9/10

4

2

2

0

2

0

0

0

0

0

8.3

NonOverlappingTemplate

0.9114

10/10

1

2

0

1

0

1

1

1

1

2

8.147

NonOverlappingTemplate

0.5341

10/10

2

2

0

0

1

0

1

2

0

2

8.148

NonOverlappingTemplate

0.1223

10/10

0

0

0

3

1

3

0

2

1

0

9

OverlappingTemplate

0.3504

10/10

2

0

3

1

1

2

0

0

0

1

10

Universal

0.0352

10/10

3

0

0

1

0

0

4

0

4

4

11

ApproximateEntropy

0.0203

9/10

3

5

1

0

0

0

1

0

0

0

12.1

RandomExcursions

----

------

0

0

0

0

0

0

0

0

0

0

12.2

RandomExcursions

----

------

0

0

0

0

0

0

0

0

0

0

12.8

RandomExcursions

----

------

0

0

0

0

0

0

0

0

0

0

13.1

RandomExcursionsVariant

----

------

0

0

0

0

0

0

0

0

0

0

13.2

RandomExcursionsVariant

----

------

0

0

0

0

0

0

0

0

0

0

13.18

RandomExcursionsVariant

----

------

0

0

0

0

0

0

0

0

0

0

14.1

Serial

0.7399

10/10

0

2

0

2

1

1

1

2

1

0

14.2

Serial

0.3504

10/10

0

2

0

0

1

0

2

3

1

1

15

LinearComplexity

0.7399

10/10

0

1

1

1

0

2

2

0

1

2

Для того чтобы понять какие из 15 тестов показали положительный результат сравним значиние Pvaluec?, где ?[0.001;0.01]. И если Pvalue> ? то тест успешно пройден. Проанализировав таблицу можно сделать вывод, что тестируемый нами ГСЧ показал отличный результатпрактически на всех тестах, за исключением тестаRunsTest.Это говорит о том, что распределение 1 и 0 в исследуемых нами последовательностях на основе анализа количества появлений «блоков» - подпоследовательностей, состоящих из одних единиц, и «дырок» - подпоследовательностей, состоящих из одних нулей, проверку на равномерность не прошли.

Для того чтобы ГСЧ смог пройти данный тест, создадим новую последовательность другим способом и снова проверим на этих тестах. Возьмем наши исходные данные по координатам x, yи z(считываемые с датчика магнитометра),и просуммируем их создав новую последовательность А (рис.31).

Рисунок 31. Информация о результатах тестирования

Далее найдем математическое ожидание и отнимем его от последовательности А, создав при этом новую последовательность С. Проведем квантование С и получим уникальную двоичную последовательность. Далее разобьем нашу последовательность на 10 отдельных последовательностей (каждая длинной 25000 бит), и снова проведем тестирование при помощи программы NIST_STS.exe. После проделанной работы запишем результаты в таблицу и проведем анализ полученных данных (табл. 5).

Таблица 5. Результаты повторного тестирования ГСЧ

STATISTICAL TEST

P-VALUE

PROPORTION

C1

C2

C3

C4

C5

C6

C7

C8

C9

C10

1

Frequency

0.6756

8/10

2

2

2

0

0

0

0

0

2

2

2

Block Frequency

0.2437

9/10

1

2

1

1

2

1

1

0

1

0

3.1

Cumulative Sums

0.1863

10/10

1

1

1

1

1

2

0

1

1

1

3.2

Cumulative Sums

0.8634

8/10

2

0

2

0

3

1

0

0

1

1

4

Runs

0.4952

8/10

2

0

1

3

0

0

2

0

2

0

5

Longest Run

0.6379

10/10

0

0

1

1

1

1

2

2

1

1

6

Rank

0.2276

10/10

1

1

1

0

2

0

0

3

2

0

7

DFT

0.0267

10/10

2

0

3

1

0

0

2

0

1

1

8.1

Non Overlapping Template

0.0431

10/10

2

2

0

1

0

1

2

2

0

0

8.2

Non Overlapping Template

0.0291

10/10

3

0

1

1

2

0

0

2

0

1

8.3

Non Overlapping Template

0.7932

10/10

1

1

1

1

0

1

1

1

1

2

8.147

Non Overlapping Template

0.2045

10/10

0

2

0

0

3

0

1

2

0

2

8.148

Non Overlapping Template

0.1765

10/10

3

3

0

0

1

0

0

2

1

0

9

Overlapping Template

0.8345

10/10

0

2

0

1

1

2

0

0

0

4

10

Universal

0.0675

10/10

4

4

0

1

0

0

3

0

0

4

11

Approximate Entropy

0.0186

8/10

2

5

2

0

0

0

1

0

0

0

12.1

Random Excursions

----

------

0

0

0

0

0

0

0

0

0

0

12.2

Random Excursions

----

------

0

0

0

0

0

0

0

0

0

0

12.8

Random Excursions

----

------

0

0

0

0

0

0

0

0

0

0

13.1

Random Excursions Variant

----

------

0

0

0

0

0

0

0

0

0

0

13.2

Random Excursions Variant

----

------

0

0

0

0

0

0

0

0

0

0

13.18

Random Excursions Variant

----

------

0

0

0

0

0

0

0

0

0

0

14.1

Serial

0.9632

10/10

1

1

1

1

1

1

3

0

1

0

14.2

Serial

0.4856

9/10

0

1

1

0

1

0

0

5

1

1

15

Linear Complexity

0.8283

10/10

0

2

1

1

0

4

0

0

0

2

Проанализировав полученные данные можно сделать вывод, что новая последовательность показала отличный результат на всех тестах НИСТ.

Вывод по главе

1. Пакет статистических тестов NISTSTS является удобным и гибким инструментов исследования ГСЧ, применяемых в криптографических приложениях. Пакет NISTSTS обладает большой гибкостью, расширяемостью и эффективностью (с точки зрения затрачиваемого времени на осуществление тестирования генератора). Кроме того, пакет NIST STS имеет большую криптографическую направленность, которая достигается путем введения в пакет таких тестов, как проверка линейной сложности и универсального теста Маурера.

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

3. Для улучшения характеристик ГСЧ была получена новая последовательность путем сложения значений трех координат магнитометра. На ее основе была создана новая двоичная последовательность. Анализ статистических свойств которой по критериям НИСТ показал отличный результат на всех 15 тестах. После чего можно уверенно говорить о том, что полученная нами последовательность равномерна и истинно случайна. Следовательно, ГСЧ можно использовать для решения криптографических задач.

ЗАКЛЮЧЕНИЕ

В настоящее время число утечек информации увеличивается с каждым днем, в связи с чем возрастает актуальность криптографических методов защиты. Система криптографической защиты обеспечивает конфиденциальность, целостность и подлинность информации, а качество ее работы обеспечивает генератор случайных чисел.

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

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

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

В итоге исследования можно утверждать, что генератор случайных чисел основанный на показаниях магнитометра в смартфонах генерирует чисто случайную последовательность и может использоваться в криптографических приложениях.

Список использованной литературы

1. Чугунков И.В., Иванов М.А. Теория применение и оценка качества генераторов псевдослучайных последовательностей.: Издательство КУДИЦ-ОБРАЗ, Москва 2003г.

2. Шнайер Б. Прикладная криптография - М.: Диалектика, 2013 - 610 с.

3. Коржик В.И., Просихин В.П., Яковлев В.А. Основы криптографии - СПб.: СПбГУТ. 2014 - 276 с.

4. Зима В.М., Молдовян А.А., Молдовян Н.А. Компьютерные сети и защита информации. - СПб.: Издательство СПбГУ, 1998 - 328 с.

Приложение

Название файла: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.korpu.myapplication2">

<application

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:roundIcon="@mipmap/ic_launcher_round"

android:supportsRtl="true"

android:theme="@style/AppTheme">

<activity android:name=".MainActivity">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

Названиефайла: Main.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:id="@+id/activity_main"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.example.korpu.myapplication2.MainActivity">

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content">

<Button

android:id="@+id/btnWrite"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/write_file"

android:onClick="onclick">

</Button>

<Button

android:id="@+id/btnRead"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/read_file"

android:onClick="onclick">

</Button>

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content">

<Button

android:id="@+id/btnWriteSD"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/write_file_sd"

android:onClick="onclick">

</Button>

<Button

android:id="@+id/btnReadSD"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/read_file_sd"

android:onClick="onclick">

</Button>

</LinearLayout>

</LinearLayout>

<TextView

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/textView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="0"

android:textSize="32dp"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

tools:layout_editor_absoluteY="105dp"

tools:layout_editor_absoluteX="46dp" />

</android.support.constraint.ConstraintLayout>

Названиефайла: colors.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

<color name="colorPrimary">#3F51B5</color>

<color name="colorPrimaryDark">#303F9F</color>

<color name="colorAccent">#FF4081</color>

</resources>

Названиефайла: strings.xml

<resources>

<string name="app_name">My Application2</string>

<string name="write_file">Записать файл</string>

<string name="read_file">Прочесть файл</string>

<string name="write_file_sd">+</string>

<string name="read_file_sd">¦</string>

</resources>

Названиефайла: strings.xml

<resources>

<!-- Base application theme. -->

<style name="AppTheme" parent="Theme.AppCompat">

<!-- Customize your theme here. -->

<item name="colorPrimary">@color/colorPrimary</item>

<item name="colorPrimaryDark">@color/colorPrimaryDark</item>

<item name="colorAccent">@color/colorAccent</item>

</style>

</resources>

Названиефайла: MainActivity.java

case R.id.btnWriteSD:

writeFileSD();

break;

case R.id.btnReadSD:

readFileSD();

break;

}

}

void writeFile() {

try {

// отрываем поток для записи

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(

openFileOutput(FILENAME, MODE_PRIVATE)));

// пишем данные

bw.write("Содержимое файла");

// закрываем поток

bw.close();

Log.d(LOG_TAG, "Файл записан");

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

voidreadFile() {

try {

// открываем поток для чтения

BufferedReader br = new BufferedReader(new InputStreamReader(

openFileInput(FILENAME)));

String str = "";

// читаем содержимое

while ((str = br.readLine()) != null) {

Log.d(LOG_TAG, str);

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

void writeFileSD() {

// проверяем доступность SD

if (!Environment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED)) {

Log.d(LOG_TAG, "SD-карта не доступна: " + Environment.getExternalStorageState());

return;

}

// получаем путь к SD

File sdPath = Environment.getExternalStorageDirectory();

// добавляем свой каталог к пути

sdPath = new File(sdPath.getAbsolutePath() + "/" + DIR_SD);

// создаем каталог

sdPath.mkdirs();

// формируем объект File, который содержит путь к файлу

File sdFile = new File(sdPath, FILENAME_SD);

try {

// открываем поток для записи

BufferedWriter bw = new BufferedWriter(new FileWriter(sdFile));

// пишем данные

bw.write("Содержимое файла на SD");

// закрываем поток

bw.close();

Log.d(LOG_TAG, "Файл записан на SD: " + sdFile.getAbsolutePath());

} catch (IOException e) {

e.printStackTrace();

}

}

void readFileSD() {

// проверяем доступность SD

if (!Environment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED)) {

Log.d(LOG_TAG, "SD-карта не доступна: " + Environment.getExternalStorageState());

return;

}

// получаем путь к SD

File sdPath = Environment.getExternalStorageDirectory();

// добавляем свой каталог к пути

sdPath = new File(sdPath.getAbsolutePath() + "/" + DIR_SD);

// формируем объект File, который содержит путь к файлу

File sdFile = new File(sdPath, FILENAME_SD);

try {

// открываем поток для чтения

BufferedReader br = new BufferedReader(new FileReader(sdFile));

String str = "";

// читаем содержимое

while ((str = br.readLine()) != null) {

Log.d(LOG_TAG, str);

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

Размещено на Allbest.ur


Подобные документы

  • Анализ способов построения генераторов случайных чисел для криптографических задач. Анализ генератора случайных чисел на основе магнитометров. Анализ статистических свойств двоичных последовательностей, полученных путем квантования данных магнитометра.

    дипломная работа [2,5 M], добавлен 06.05.2018

  • Структура и функции генератора случайных чисел. Методы предельного уменьшения ошибки второго рода. Усиление шумового сигнала. Его дискретизация по времени и аналого-цифровое преобразование. Формирование случайной последовательности и ее корреляция.

    курсовая работа [299,4 K], добавлен 11.12.2014

  • Способы получения случайных чисел в программировании и их использование для решения ряда задач. Принцип действия и тестирование работы генератора случайных чисел в Borland C++, его преимущества. Генерация одномерной и двумерной случайной величины.

    лабораторная работа [105,4 K], добавлен 06.07.2009

  • Формирование устойчивой последовательности псевдослучайных чисел с использованием метода "середины квадрата". Разработка программы для определения среднего значения чисел, среднего значения квадратов чисел и дисперсии для последовательности из 20 чисел.

    лабораторная работа [1,4 M], добавлен 21.01.2015

  • Проектирование датчика случайных чисел, пригодного для моделирования случайной последовательности с заданным законом распределения. Методы моделирования. Разработка алгоритма и программы датчика. Исследование свойств выработанной им последовательности.

    лабораторная работа [124,2 K], добавлен 15.06.2010

  • Написание программы для генерации случайных чисел, в которой реализуются возможности генерации абсолютно случайных чисел. Приложение на языке С/С++. Описание узла, содержащего данные; функций и методов работы; чтения данных из памяти и вывода их на экран.

    курсовая работа [172,4 K], добавлен 23.05.2012

  • Характеристика вероятностного алгоритма и особенности его использования. Принцип работы и назначение генератора случайных чисел, сущность псевдослучайных чисел. Рассмотрение и реализация метода середины квадрата, разработка алгоритма и его кодирование.

    курсовая работа [50,3 K], добавлен 18.09.2009

  • Основные подходы при создании Windows приложений. Изучение навыков работы с 2D графикой в Windows приложениях. Методы генерации псевдослучайных чисел. Разработка игры "Сапер" с расположением мин на основе нескольких методов генерации случайных чисел.

    курсовая работа [63,2 K], добавлен 18.02.2009

  • Применение случайных чисел в моделировании, выборке, численном анализе, программировании и принятии решений. Понятие равномерного распределения вероятности. Способы получения последовательности. Правила выбора модуля. Критерий Колмогорова-Смирнова.

    курсовая работа [1,3 M], добавлен 17.03.2011

  • Криптография - наука о методах обеспечения конфиденциальности и аутентичности информации. Этапы развития криптографии. Криптографический протокол и требования к его безопасности. Криптографические генераторы случайных чисел. Основные методы криптоанализа.

    реферат [29,3 K], добавлен 01.05.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.