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

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

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

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

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

Произведем оценку частоты появления битов 0 и 1 на одинаковых позициях от чисел, полученных умножением чисел из диапазона [0…232].

Рисунок 3.6. Частота появления битов 1 в 64-ех разрядном числе, полученном операцией умножение 32-ух разрядных чисел, на определенных позициях.

Рисунок 3.7. Частота появления битов 0 в 64-ех разрядном числе, полученном операцией умножение 32-ух разрядных чисел, на определенных позициях.

Таким образом можно предположить что на результаты тестов, предложенных Национальным институтом стандартов и технологий (NIST) мог повлиять тот факт, что при реализации алгоритма маскирования (операция умножение), использовавшаяся операции ?.?N перемешивания битов 2N-битного слова с получением в результате N-битного слова реализовывалась по следующей схеме: из 2N-битного слова выделяется блок из N бит (младшая часть блока 2N), но как показала оценка частоты появления битов 0 и 1 на одинаковых позициях от числа, полученных умножением чисел из диапазона [0…232], данная реализация операции ?.?N плохо осуществляет перемешивание. Выходом из сложившийся ситуации может быть реализация операции ?.?N следующим образом: из 2N-битного слова выделяется блок из N бит, [16…48] разряд, которые побитно перемножаются по модулю два с оставшимися N-битами исходного 2N-битного слова.

Табл. 3.15 Результаты тестирования модифицированного алгоритма маскирования (операция умножение) с помощью тестов из пакета тестов NIST.

Название теста

Параметры

тестирования

Результаты

Умножение(модифицированное)

1

Частотный тест

n = 1280000 бит

Ssum = -550;

Sobs = 1.7393;

P-значение = 0.0820;

Т.к. P-значение ? 0.01, принимаем последовательность случайной.

2

Тест на самую длинную серию единиц в блоке.

n =6272 бита

М = 128 - длина блока;

К = 5 - число степеней свободы;

N = 49 - число блоков;

= 6; = 13;

= 8; = 0;

= 5; = 3;

= 11,2925;

P-значение =0.0459;

Т.к. P-значение ? 0.01, принимаем последовательность случайной.

3

Тест ранга двоичных матриц

n = 99328 бит

М = 32 - число столбцов в матрице;

Q = 32 - число строк в матрице;

N = 97 - число матриц;

FM = 97,

FM-1 = 0,

N - FM - FM-1= 0,

= 238.8726;

P-значение = 1,3473*10 -52;

Т.к. P-значение<?0.01, последовательность не является случайной.

4

Тест с дискретным преобразованием Фурье (Спектральный Тест)

n = 12800 бит

N1 = 6055,

N0 = 6080,

d = -1.4338,

P-значение = 0.1516.

Т.к. P-значение ? 0.01, считаем последовательность случайной.

5

Универсальный статистический тест Маурэра

n = 470016 бит

L = 6

Q = 640

K = 77696

c = 0.5689,

у = 0.0035,

sum = 405630,

fn = 5.2208,

Ожидаемое_Значение =5.2177052,

varianse(L ) = 2.954,

P-значение = 0.382,

Т.к. P-значение? 0.01, считаем последовательность случайной.

6

Тест линейной сложности

n = 1 000 000 бит

M = 1000 - длина одного блока в битах;

K = 6 - число степеней свободы.

v0 = 6; v1 = 25;

v2 = 116; v3 = 508;

v4 = 260; v5 = 60;

v6 = 25;

.

Р-значение = 0.5099.

Т.к. P-значение? 0.01, считаем последовательность случайной.

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

Спектральный тест

Для спектрального теста построены графики ДПФ последовательностей:

Преобразование Фурье последовательности, выработанной с помощью алгоритма маскирования (операция Xor), изображено на рис.3.8, где показаны первые 2000 отсчётов:

Рис. 3.8 ДПФ последовательности, выработанной с помощью алгоритма маскирования (операция Xor)

Преобразование Фурье последовательности, выработанной с помощью алгоритма маскирования (операция умножение) изображено на рис.3.9, где показаны первые 2000 отсчётов:

Рис. 3.9 ДПФ последовательности, выработанной с помощью алгоритма маскирования (операция умножение)

Преобразование Фурье последовательности, выработанной с помощью алгоритма маскирования (операция умножение (мод)) изображено на рис.3.10, где показаны первые 2000 отсчётов:

Рис. 3.10 ДПФ последовательности, выработанной с помощью модифицированного алгоритма маскирования (операция умножение)

Тест линейной сложности

Последовательность длиной 1000000 бит, выработанная с помощью алгоритма маскирования (операция Xor), была протестирована с помощью теста линейной сложности (The Linear Complexity Test) из пакета тестов национального института стандартов и технологий (НИСТ).

Линейная сложность последовательности - это минимальное число секций сдвигового регистра с линейной обратной связью (LFSR), который генерирует последовательность.

Для вычисления линейной сложности в тесте используется алгоритм Berlekamp-Massey.

Параметры тестирования:

n = 1000000 - длина последовательности в битах.

M = 1000 - длина одного блока в битах.

K = 6 - число степеней свободы.

Полученные результаты:

Рис. 3.11 Линейные сложности для 1000 блоков последовательности.

Как показывает рис. 3.11, большинство линейных сложностей имеют значения в окрестности 500, что говорит о том, что тестируемая последовательность очень близка к случайной, т.к. для случайной конечной последовательности длиной n линейная сложность близка к n/2.

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

Тестовая статистика .

Предполагается, что распределение частоты Ti (в ) должно быть пропорционально .

Р-значение = 0.7230.

Т.к. P-значение? 0.01, считаем последовательность случайной.

Для наиболее полного представления о характере генерируемой алгоритмом маскирования (операция Xor) последовательности, построим профиль линейной сложности.

Профиль линейной сложности определяет линейную сложность последовательности по мере её удлинения. Для случайной конечной последовательности длиной n линейная сложность близка к n/2, что можно видеть рис. 3.12.

Рис. 3.12 Профиль линейной сложности для алгоритма маскирования (операция Xor).

Аналогичный тест был проведен для последовательности, выработанной с помощью алгоритма маскирования (операция умножение).

Параметры тестирования:

n = 1000000 - длина последовательности в битах.

M = 1000 - длина одного блока в битах.

K = 6 - число степеней свободы.

Полученные результаты:

Рис.3.13 Линейные сложности для 1000 блоков последовательности.

Как показывает Рис. 3.13, большинство линейных сложностей также имеют значения в окрестности 500, что говорит о том, что тестируемая последовательность очень близка к случайной, т.к. для случайной конечной последовательности длиной n линейная сложность близка к n/2.

Тестовая статистика .

Р-значение = 0.2515.

Т.к. P-значение? 0.01, считаем последовательность случайной.

Рис. 3.14 Профиль линейной сложности для алгоритма маскирования (операция умножение).

Аналогичный тест был проведен для последовательности, выработанной с помощью модифицированного алгоритма маскирования (операция умножение).

Параметры тестирования:

n = 1000000 - длина последовательности в битах.

M = 1000 - длина одного блока в битах.

K = 6 - число степеней свободы.

Полученные результаты:

Рис.3.15 Линейные сложности для 1000 блоков последовательности.

Как показывает Рис. 3.15, большинство линейных сложностей также имеют значения в окрестности 500, что говорит о том, что тестируемая последовательность очень близка к случайной, т.к. для случайной конечной последовательности длиной n линейная сложность близка к n/2.

Тестовая статистика .

Т.к. P-значение? 0.01, считаем последовательность случайной.

Рис. 3.16 Профиль линейной сложности для алгоритма маскирования (операция умножение).

3.Технологический раздел

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

Введение

Надежность, правильность работы программного обеспечения зависит от реализованного в нем алгоритма, насколько он корректно разработан и насколько качественно реализован.

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

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

Таким образом, особое внимание уделяется именно вопросу тестирования алгоритма маскирования данных.

Общие принципы тестирования

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

Существует два основных подхода к тестированию:

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

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

Общие методики оценки качества алгоритма маскирования данных

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

Для исследования алгоритма маскирования данных применяются две группы тестов.

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

· Оценочные тесты. Статистические свойства последовательностей определяются числовыми характеристиками. На основе оценочных критериев делаются заключения о степени близости свойств анализируемой и истинно случайной последовательностей.

Графические тесты

К данной категории можно отнести, например, следующие тесты:

· гистограмма распределения элементов последовательности;

· распределение на плоскости;

· проверка серий;

· проверка на монотонность;

· автокорреляционная функция;

· профиль линейной сложности;

· графический спектральный тест.

Гистограмма распределения элементов

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

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

Пример 4.1

Вход:

е = 0 1 2 1 3 2 1

Тест:

Преобразуем исходную последовательность байтов в последовательность ASCII - значений символов:

е = 48 49 50 49 51 50 49;

теперь подсчитаем, сколько раз встречается каждое значение:

n48 = 1,

n49 = 3,

n50 = 2,

n51 = 1.

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

Рис. 4.1. Примеры гистограмм:

а - результат положительный;

б - результат отрицательный;

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

Рис. 4.2. Пример гистограммы последовательности с законом распределения символов, близким к нормальному

Распределение на плоскости

Данный тест предназначен для определения зависимостей между элементами исследуемой последовательности.

Построение распределения на плоскости осуществляется следующим образом. На поле размером (2r - 1) * (2r - 1) (R - разрядность чисел исследуемой последовательности) наносятся точки с координатами (еi; еi+1), где еi- элементы исследуемой последовательности е, i = 1, (n-1), n - длина последовательности.

Пример 4.2

Вход:

е = 2 3 5 4 3.

Тест:

Получаем точки:

точка 1 (2;3),

точка 2 (3;5),

точка 3 (5;4),

точка 4 (4;3).

Далее анализируется полученная картина. Если между элементами последовательности отсутствуют зависимости, то точки на поле расположены хаотично (рис. 4.3, а). Если на поле присутствуют зависимости, наблюдаются «узоры» - последовательность не является случайной (рис. 4.3, б). Для последовательностей большой длины хорошим результатом является абсолютно черное поле (рис. 4.4).

Рис. 4.3. Распределение на плоскости:

а - результат положительный

б - результат отрицательный

Рис. 4.4 Распределение на плоскости (положительный результат для последовательности большой длины)

Проверка серий

Данный тест позволяет оценить равномерность распределения символов в исследуемой последовательности на основе анализа частоты появления нулей и единиц и серий, состоящих из k бит.

Построение осуществляется следующим образом. Подсчитывается, сколько раз встречаются нули, единицы, серии-двойки (00, 01, 10, 11), серии-тройки (000, 001, 010, 011, 100, 101, 110, 111) и т. д. в битовом представлении исследуемой последовательности е. Полученные результаты представляются в графическом виде.

Пример 4.3.

Вход:

е= 2 6 4 7 1 8 3.

Тест:

Представляем исходную последовательность в битовом виде:

е=0010 0110 0100 0111 0001 1000 0011;

подсчитываем число единиц и нулей:

е=0010011001000111000110000011;

n 0 = 17,

n 1 = 11;

Подсчитываем число серий - пар каждого вида:

е=00 10 01 10 01 00 01 11 00 01 10 00 00 11;

n 00 = 5,

n 01 = 4,

n 10 = 3,

n 11 = 2;

Подсчитываем число серий - троек каждого вида (последний бит отбрасывается, так как он не входит в состав тройки):

е=001 001 100 100 011 100 011 000 001 1;

n 000 = 1,

n 001 = 3,

n 010 = 0,

n 011 = 2;

n 100 = 3,

n 101 = 0,

n 110 = 0,

n 111 = 0.

У последовательности, чьи статистические свойства близки к свойствам истинно случайной последовательности, разбросы между числом появлений нулей и единиц, между числом появлений серий-пар каждого вида и между числом появлений серий-троек каждого вида должны стремиться к нулю (рис. 4.5, а). В противном случае последовательность не является случайной (рис. 4.5, б).

Проверка на монотонность

Данный тест позволяет оценить равномерность распределения символов в исследуемой последовательности на основе анализа длин участков невозрастания и неубывания элементов последовательности.

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

У последовательности, чьи статистические свойства близки к свойствам истинно случайной последовательности, вероятность появления участка невозрастания (неубывания) определенного размера зависит от его длины: чем больше длина, тем меньше вероятность (рис. 4.6, а). В противном случае последовательность не является случайной (рис. 4.6, б).

Пример 4.3.

Вход:

е= 1 2 3 4 5 5 5 4 4 3 2 2 2 1 2 3 4 5.

Тест:

Разобъем последовательность на участки невозрастания и неубывания:

е= 1234555 4432221 2345.

Получаем участок неубывания длиной 6, затем участок невозрастания длиной 7 и вновь участок неубывания длиной 4.

а

б

Рис. 4.5. Проверка серий графическая:

а - результат положительный

б - результат отрицательный

Рис. 4.6. Проверка на монотонность графическая;

а - результат положительный

б - результат отрицательный

Оценочные тесты

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

В таблице 4.1 приведена информация по наиболее известным подборкам статистических тестов, применяемых для анализа криптоалгоритмов.

Таблица 4.1. Наборы статистических тестов.

Автор

Где описан или где реализован

Д. Кнут. (Стэнфордский Университет)

Исскуство программирования . Том 2. Получесленные алгоритмы

Дж. Марсалья

DIEHARD

Ч. Густафсон

CRYPT-S

А. Менезис

Руководство по прикладной криптографии

А. Рухин

Руководство по статистическому тестированию генераторов ПСП

Методы тестирования алгоритма маскирования данных

Система оценки статистических свойств

Различные статистические тесты могут применяться к программной реализации алгоритма маскирования информационных данных, для того чтобы сравнить выходные данные с истинно случайной последовательностью. Случайность - вероятностное свойство; это означает, что свойства случайной последовательности могут быть охарактеризованы и описаны в терминах вероятности. Вероятный результат статистических тестов, применяемых к истинно случайной последовательности, известен априорно и может быть описан в вероятностных терминах. Существует много статистических тестов, оценивающих присутствие или отсутствие «образца», который при обнаружении указал бы, что последовательность неслучайна. Поскольку существует так много тестов, оценивающих, является ли последовательность случайной или нет, никакой определенный конечный набор тестов не считают «законченным». Кроме этого, результаты статистического теста должны интерпретироваться с некоторой осторожностью и предостережением, чтобы избежать неправильных заключений.

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

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

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

Тестовая статистика использует вычисление Р-значение, где Р-значение есть вероятность того, что совершенный генератор случайных чисел произвел бы последовательность менее случайную, чем исследуемая, для типа неслучайности, проверяемого тестом. Если Р-значение для теста равно 1, то последовательность абсолютно случайна. Р-значение, равное 0, указывает, что последовательность абсолютно неслучайна. Для теста следует выбрать уровень значимости б. Если Р-значение больше или равно б, то принимается нулевая гипотеза (H0 - гипотеза о том, что проверяемая последовательность является случайной), т.е. последовательность кажется случайной. Если Р-значение меньше б, то нулевая гипотеза отклоняется, т.е. последовательность кажется неслучайной. Параметр б обозначает вероятность ошибки 1-ого рода.

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

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

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

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

В таблице 4.2 даны общие характеристики статистических тестов.

Таблица 4.2. Набор статистических тестов.

Статистический тест

Определяемый дефект

1.

Частотный тест

Слишком много нулей или единиц

2.

Проверка кумулятивных сумм

Слишком много нулей или единиц в начале последовательностей

3.

Проверка «дырок» в подпоследовательностях

Отклонение в распределении подпоследовательностей единиц

4.

Проверка «дырок»

Большое (малое) число подпоследовательностей нулей и единиц свидетельствуют, что колебание потока бит слишком быстрое (медленное)

5.

Проверка рангов матриц

Отклонение распределения рангов матриц от соответствующего распределения для истинно случайной последовательности, связанное с периодичностью подпоследовательностей

6.

Спектральный тест

Периодические свойства последовательностей

7.

Проверка непересекающихся шаблонов

Непериодические шаблоны встречаются слишком часто

8.

Проверка пересекающихся шаблонов

Слишком часто встречаются m-битные последовательности единиц

9.

Универсальный статистический тест Маурера

Сжимаемость (регулярность) последовательности

10.

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

Отклонение от распределения числа появлений подпоследовательностей определенного вида

11.

Разновидность проверки случайных отклонений

Отклонение от распределения числа появлений подпоследовательностей определенного вида

12.

Проверка аппроксимированной энтропии

Неравномерность распределения m -битных слов. Малые значения означают высокую повторяемость

13

Проверка серий

Неравномерность распределения m-битных слов

14.

Сжатие при помощи алгоритма Лемпела -Зива

Большая сжимаемость, чем истинно случайная последовательность

15.

Линейная сложность

Отклонение то распределения линейной сложности для конечной длины (под) строки

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

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

Номер шага

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

Комментарии

1.

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

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

2.

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

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

3.

Вычисляем Р -значение

Р -значение [0;1]

4.

Сравнение Р -значения с

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

Если Р -значение> - тесты пройдены

Оценка результатов тестирования

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

Рис. 4.7. Алгоритм технологического процесса исследования статистических свойств выходной последовательности алгоритма маскирования данных

Генерация последовательностей для тестирования

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

Длина последовательности n выбирается таким образом, чтобы все тесты могли быть пройдены.

Исполнение набора статистических тестов

Каждая из m -последовательностей проверяется каждым из t тестов набора. Результатом работы каждого теста является вычисление тестовой статистики s(obs). Таким образом, после проверки всех последовательностей получается mt тестовых статистик, как показано в табл. 4.4.

Табл. 4.4. Результаты выполнения набора статистических тестов

Последовательность

Тест1

Тест2

………

Тест t

………

………

………

………

………

………

………

………

Анализ прохождения статистических тестов

Анализ прохождения статистических тестов начинается с анализа тестовой статистики. Существует три варианта оценки тестовой статистики.

· Пороговые значения. Если тестовая статистика больше (меньше) порогового значения, последовательность считается неслучайной.

· Фиксированные интервалы. Если тестовая статистика выходит за пределы заданного интервала, последовательность считается неслучайной.

· Вероятностные значения. Для тестовой статистики вычисляется Р -значение. Под Р -значение понимается вероятность того, что совершенный генератор случайных чисел произвел бы последовательность менее случайную, чем исследуемая, для типа неслучайности, проверяемого тестом. Для теста выбирается уровень значимости б. Если значение Р -значение больше либо равно б, то последовательность считается случайной.

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

Таким образом, вычисляются Р -значения для тестовых статистик s(obs) как показано в табл. 4.5.

Табл.4.5.Результаты вычисления Р -значения для тестовых статистик s(obs)

Последовательность

Тест1

Тест2

………

Тест t

………

………

………

………

………

………

………

………

Оценить прохождение последовательностями i -го теста, i =1…t можно следующим образом:

Анализ Р -значения. Подсчитывается доля последовательностей, прошедших данный тест (т. е доля последовательностей, для которых Р -значение б). Значение этой доли должны лежать в интервале

.

Результаты тестирования набора из m - последовательностей каждым из t тестов могут быть сведены в таблицу 4.6.

Табл. 4.6. Результаты тестирования m- последовательностей набором из t статистических тестов.

Последовательность

Тест1

Тест2

………

Тест t

прошла /

не прошла

прошла /

не прошла

………

прошла /

не прошла

прошла /

не прошла

прошла /

не прошла

………

прошла /

не прошла

………

………

………

………

………

прошла /

не прошла

прошла /

не прошла

………

прошла /

не прошла

Результат проверки алгоритма маскирования

прошел /

не прошел

прошел /

не прошел

………

прошел /

не прошел

Не прохождение какого-либо теста свидетельствует о статистических слабостях в структуре алгоритма маскирования данных.

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

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

4.Организационно-экономический раздел

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

Введение

В современном обществе компьютер играет огромную роль. Универсальность, способность решать практически любые задачи управления, возможность обрабатывать данные огромных размеров, всё это обеспечило широкое внедрение вычислительной техники в нашу жизнь. Если раньше компьютер будущего представлялся набором аппаратных средств, множество мигающих ламп, то сегодня можно с уверенностью утверждать, что это будет, прежде всего, мощное высокоинтеллектуальное программное обеспечение.

Аппаратные средства уже рассматриваются как некоторая упаковка к программному продукту. Так, если в 70-е годы на долю ПО приходилось около 40% стоимости вычислительных средств, то в 80-егоды около 80% стоимости, а сейчас этот показатель достигает 90%. Темпы роста объема производства ПО значительно выше аналогичного показателя для экономики в целом. Для примера, стоимость ПО, разработанного в США в 1980 году, составила 2% стоимости валового национального продукта, а в 1990 году уже около 13% того же показателя. Из динамики роста производства ПО можно сделать два важных вывода:

1. Программное обеспечение является сложным изделием и стоимость его все более возрастает.

2. Программное обеспечение оказывает значительное и всевозрастающее воздействие на общественное благосостояние.

Теоретическая часть

Оценка затрат на разработку ПО

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

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

2) Трудность обеспечения разумных компромиссов между аппаратурой и ПО при создании программно-аппаратных комплексов;

3) Невозможность контроля за ходом разработки ПО из-за отсутствия обоснования сроков и бюджетов для каждого этапа разработки ПО в отдельности и всех вместе.

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

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

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

Человек склонен не использовать опыт предыдущих разработок;

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

Составляющие затрат на программный продукт

Цель составления любых программ состоит в получении определенных результатов в процессе эксплуатации и оценивается эффективностью программного средства. Уточним применяемое далее понятие эффективности процесса разработки программного средства. Выбор адекватных показателей эффективности программных средств зависит от их назначения, области применения, а также от ряда характеристик программ, проявляющихся при их применении. Поэтому, для выбора технических решений могут использоваться различные критерии. Целесообразно подразумевать под эффективностью процесса разработки минимум затрат на разработку программ при заданной экономической эффективности применения и качества программных средств. Минимизация затрат на обеспечение жизненного цикла комплекта программ в некоторой степени эквивалентны максимизации разности эффекта и затрат, если предположить, что экономический эффект от применения программ зафиксирован и стабилен. Затраты в жизненном цикле ПО определяются не только этапом разработки, но и этапами эксплуатации и сопровождения, причем затраты на этих этапах могут значительно превосходить затраты на этапе проектирования и разработки и характеризуются своими особыми закономерностями. Неодновременность групп затрат не учитывается, и предполагается, что абсолютная величина и влияние затрат со временем не изменяется.

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

Э = Эо - Сs

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

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

Снижение эффективности Э на величину Сs происходит прежде всего вследствие затрат на разработку, производство, сопровождение и эксплуатацию программ, а так же вследствие различных сбоев программ и оборудования.

В соответствии с этапами жизненного цикла ПО основные затраты Сs, снижающие идеальную эффективность за цикл жизни Тж, можно представить следующими составляющими:

1) совокупные затраты на эксплуатацию программ и обеспечение решения заданных функциональных задач, в том числе на технологическое обеспечение и аппаратуру ЭВМ при разработке ПО, в течение времени Тр - Ср;

2) затраты на эксплуатацию программ и аппаратных средств ЭВМ, реализующих ПО, а также совокупные потери эффективности за время Тэ, вследствие ограниченных характеристик ЭВМ и не идеальности программ - Сэ;

3) затраты на сопровождение ПО за время Тс, включающие затраты на хранение и контроль состояния, проведение модернизаций и исправление ошибок, тиражирование версий - Сс;

4) накладные расходы Сн;

В результате, совокупную реальную эффективность функционирования ПО за весь жизненный цикл длительностью Тж можно представить в виде:

Составляющие затрат на разработку программ Ср.

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

Наибольшее значение в составе Ср при разработке сложных комплексов программ ( КП ) имеют следующие составляющие затрат:

на непосредственное проектирование, программирование, отладку и испытания программ в соответствии с требованиями пользователя или заказчика - С;

на изготовление опытного образца КП как продукции производственно-технического назначения - С;

на разработку, подготовку и применение технологии программных средств автоматизации разработки программ - С;

Затраты на технологию и программные средства автоматизации разработки КП, эксплуатацию ЭВМ в процессе разработки - С;

на подготовку и повышение квалификации специалистов-разработчиков - С.

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

Затраты на непосредственную разработку КП

Затраты на непосредственную разработку комплекса программ С являются важнейшей составляющей в жизненном цикле КП. Наибольшее влияние на них оказывает объем КП. Затраты на разработку С и объем программ Пк связаны через показатель интегральной средней производительности труда разработчиков Р. Для учета влияния на С различных факторов удобно пользоваться коэффициентами изменения трудоемкости ( КИТ ) - Сij, учитывающими зависимость i-ой составляющей совокупных затрат от j-го фактора. Непосредственные затраты на разработку можно представить как частное от объема КП и производительность труда, корректируемое произведением коэффициентов изменения трудоемкости:

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

факторы, отражающие особенности создаваемого комплекса программ как объекта разработки, и требования к его общим характеристикам;

факторы, характеризующие технологическую и программную оснащенность средствами автоматизации процесса разработки программ;

факторы, отражающие оснащенность процесса создания КП аппаратурными средствами, на которых базируются системы автоматизации разработки;

факторы, определяющие оснащенность процесса разработки программ и его обеспечение квалифицированными специалистами.

Для каждого фактора может быть выделен параметр, наиболее полно отражающий его содержание численными значениями. Для большинства факторов произведены оценки диапазона возможного изменения относительных затрат на разработку одной команды в КП при варьировании соответствующего параметра в указанном диапазоне (см. табл. 5.1). Эти изменения затрат характеризуются коэффициентами Сij изменения усредненной трудоемкости разработки строки текста программы за весь цикл создания КП при варьировании j-го фактора i-ой группы. Кроме оценок предельных значений КИТ, приводятся их средние значения.

Табл. 5.1 Факторы, влияющие на затраты С и параметры факторов.

Факторы объекта разработки

Параметры фактора

Диапазон изменения параметра

Диапазон КИТ

Среднее значение КИТ

1.Сложность КП - С11.

Число операторов в тексте программ на ассемблере Пк.

104 - 107

1 - 4

2 - 3

2.C12 - изменение трудоемкости при изменении базы данных.

3.Надежность функционирования КП - С13.

-

Часы проработки на отказ программ Тн.

-

1 - 103

-

1 - 5

-

2-2.5

4.Ограничение ресурсов производительности и оперативной памяти реализующей ЭВМ - С14.

Процент использования памяти и производительности Р.

50-95

1 - 3

1.3-1.5

5.Длительность предполагаемой эксплуатации - С15.

Годы эксплуатации Тэ.

1 - 20

1 - 3

1.3-1.5

6.Предполагаемый тираж - С16.

Число предполагаемых экземпляров.

1 - 1000

1 - 3

1.3-1.5

7.Мобильность использования компонент КП из других разработок - С17.

Процент возможного использования компонент.

0 - 80

1 - 1.4

1.1-1.2

8.Мобильность использования КП для других разработок - С18.

Процент возможного использования компонент.

0 - 80

0.4 - 1

0.5-0.7

Факторы КП как объекта проектирования, влияющие на непосредственные затраты при разработке сложных программ.

Эта группа факторов отличается наибольшим влиянием на затраты и производительность труда.

Сложность комплекса программ

Наиболее активно в качестве показателя сложности программ используется ее объем, выраженный числом операторов на ассемблере или строк на языке программирования высокого уровня. Объем программ является одной из наиболее достоверно измеряемых характеристик КП. Логично предположить, что по мере увеличения объема КП возрастает относительная трудоемкость разработки каждой команды в программе. Такая зависимость может быть описана логарифмической функцией:

Изменение трудоемкости при изменении базы данных в нашей разработке не учитываем (C12 не учитываем).

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

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

С13 = lg(ТНЧ10) .(5.2.5.2)

Ограничение ресурсов производительности и оперативной памяти реализующей ЭВМ.

При использовании создаваемым КП производительности и памяти реальной ЭВМ менее чем на 50% можно не учитывать эти ограничения, однако в нашем случае ресурсы ЭВМ используются практически полностью.

Длительность предполагаемой эксплуатации КП изменяется от нескольких месяцев до нескольких лет. По экспертным оценкам, увеличение предстоящей длительности эксплуатации КП на порядок от 1 до 10 лет приводит к увеличению КИТ С15 примерно в 1.5-2 раза. Такую зависимость можно описать логарифмической функцией:

Предполагаемый тираж программ.

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

Мобильность (переносимость) использования компонентов КП для других разработок приводит к необходимости их проектирования как автономных комплектующих изделий. В результате может быть достигнута возможность сборочного программирования. Для обеспечения сборочного программирования КИТ на строку в программе С17 увеличивается в среднем на 10-20%. В нашем случае требуется обеспечить переносимость 80% компонент, что повышает затраты на 30-40%.

Мобильность (переносимость) использования КП из других разработок позволяет снижать затраты при сборочном программировании новых КП. При этом относительное повышение производительности труда ( КИТ - С18) пропорционально доле использования в новом КП. При сборочном программировании кроме 10-20% затрат на создание новых программных компонент, необходимы ресурсы на комплексирование нового КП, его комплексную отладку, испытания и документирование. В результате суммарные затраты заметно возрастают и эквивалентное повышение производительности труда С18 может составлять 2.5-3 раза. Необходимо учитывать затраты, которые требуются на создание адаптируемых компонент и всего первичного КП. В результате программная мобильность с учетом затрат на ее подготовку в среднем дает снижение КИТ на 30-50%.

Факторы технологической и программной оснащенности процесса разработки КП, влияющие на непосредственные затраты при разработке сложных программ.

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

Применение современных методов разработки КП.

При создании КП в рамках дипломного проекта использовалась пошаговая разработка компонентов КП с контролируемыми этапами технологии и поэтапным контролем результатов работ. В этом случае интегральная оценка эффективности метода более-менее стабильна и характеризуется повышением производительности труда приблизительно на 50% ( С31 = 0.6-0.7).

Уровень автоматизации разработки КП рассматривается прежде всего как фактор, влияющий на С и на производительность труда специалистов.

В нашем случае С32 = 1.

Уровень языков программирования КП. При разработке программной реализации алгоритма использовалась среда программирования C++Builder 6, язык которой в части программирования математических вычислений богаче других универсальных языков программирования высокого уровня) дал увеличение производительности на 30% ( С33 = 0.7).

Тираж системы автоматизации разработки.

С34 = 1.

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

При анализе фактора аппаратурной оснащенности процесса разработки программ целесообразно учитывать интегральные характеристики всех вычислительных средств, использующих при создании данного КП. При разработке данного КП применяется только реализующая ЭВМ для отладки и испытаний КП в реальном масштабе времени.

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

Относительное быстродействие ЭВМ на одного специалиста, участвующего в разработке КП, определяет доступный уровень автоматизации разработки программ. Плохое обеспечение машинным временем может увеличивать затраты на непосредственную разработку КП в 1.5-2 раза. Однако в среднем влияние недостаточного обеспечения машинным временем на полные затраты при создании сложных КП можно оценить на уровне 20-30%. В нашем же случае разработчик был хорошо обеспечен машинным временем, поэтому считаем низким влияние недостаточного обеспечения машинным временем, принимаем снижение производительности труда на 10% ( С41 = 0.9).

Относительный объем оперативной памяти на одного специалиста, участвующего в разработке КП, может также проявиться как заметный фактор, изменяющий производительность труда разработчиков. В нашем случае недостаточный объем памяти вызвал снижение производительности труда на 10-20% (С42 = 0.8-0.9).

Факторы организации процесса разработки КП, влияющие на непосредственные затраты при создании сложных программ

Индивидуальные особенности специалистов могут приводить к изменению производительности труда во много раз. В среднем тематическую и технологическую квалификацию можно считать выше среднего( С51 и С52 = 0.7).

Программистская квалификация и опыт работы с языками проектирования составил 2 года ( С53 = 0.93).

Уровень квалификации заказчика высок, и техническое задание на разработку было сформировано без доработок ( С54 = 1.1).

Затраты на изготовление опытного образца как продукции производственно-технического назначения.

Затраты на изготовление опытного образца КП как продукции производственно-технического назначения - С определяется необходимостью обеспечить отчуждение всего комплекса программ от его непосредственных разработчиков. Для изготовления КП как продукции производственно-технического назначения необходимо:

изготовить и оформить опытный образец КП на носителях данных;

разработать комплект документации, обеспечивающий квалифицированную эксплуатацию КП.

При разработке сложных КП затраты на изготовление носителей программ опытного образца КП ( С2р1) находятся на уровне процента и далее мной не учитываются.

Затраты на создание комплекта документации

С2р2 = а2ЧДЧПк, где(5.2.8.1)

Д - 50-100 страниц документации на тысячу команд

...

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

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