- •А.М. ГОЛИКОВ
- •Учебное пособие:
- •Томск 2018
- •Учебное пособие
- •История развития криптографии
- •Основные характеристики открытого текста
- •Классификация шифров
- •Шифры перестановки
- •Шифр Хилла
- •Шифры сложной замены
- •Линейный конгруэнтный генератор
- •Регистр сдвига с линейной обратной связью
- •Блочные и поточные системы шифрования
- •Принципы построения блочных шифров
- •Основной шаг криптопреобразования.
- •Базовые циклы криптографических преобразований.
- •Основные режимы шифрования.
- •Простая замена
- •Гаммирование
- •Гаммирование с обратной связью
- •Выработка имитовставки к массиву данных.
- •Американский стандарт шифрования данных DES
- •Основные режимы шифрования
- •Блочный криптоалгоритм RIJNDAEL и стандарт AES
- •Математические предпосылки
- •Сложение
- •Описание криптоалгоритма
- •Раундовое преобразование
- •Атака “Квадрат”
- •Предпосылки
- •Базовая атака “Квадрат” на 4 раунда
- •Добавление пятого раунда в конец базовой атаки “Квадрат”
- •Добавление шестого раунда в начало базовой атаки “Квадрат”
- •Поточные системы шифрования
- •Поточные режимы блочных шифров
- •Строительные блоки поточных шифров
- •Регистры сдвига с обратной связью
- •Регистры сдвига с линейной обратной связью
- •Генераторы на основе LFSR
- •Регистры сдвига с нелинейной обратной связью
- •Регистры сдвига с обратной связью по переносу
- •Поточный шифр HC-128
- •Инициализация
- •Генерация ключевого потока
- •Поточный шифр Rabbit
- •Инициализация
- •Поточный шифр Salsa20
- •Хеш-функция Salsa20
- •Инициализация
- •Функция шифрования Salsa20
- •Поточный шифр SOSEMANUK
- •SERPENT и его производные
- •Инициализация
- •Генерация ключевого потока
- •Поточный шифр F-FCSR-H
- •Генерация ключевого потока
- •Инициализация
- •Поточный шифр Grain-128
- •Генерация ключевого потока
- •Инициализация
- •Поточный шифр MICKEY-128
- •Инициализация
- •Генерация ключевого потока
- •Поточный шифр Trivium
- •Инициализация
- •Генерация ключевого потока
- •Гаммирование
- •Гаммирование с обратной связью
- •Блочный шифр AES в поточном режиме
- •Функция зашифрования
- •Расширение ключа
- •Функция расшифрования
- •Режим обратной связи по шифртексту (CFB)
- •Режим обратной связи по выходу (OFB)
- •Режим счетчика (Counter mode)
- •Методы оценки качества алгоритмов поточного шифрования
- •1. Период
- •2. Криптоанализ шифров
- •3. Линейная сложность
- •4. Исчерпывающий поиск ключа
- •5. Time-memory-data trade-off атака
- •6. Корреляционная атака
- •Быстрая корреляционная атака
- •Алгебраическая атака
- •Атака различением
- •Статистический анализ гаммы шифров
- •Статистические свойства
- •Тестирование
- •Набор статистических тестов НИСТ
- •Частотный тест
- •Частотный тест внутри блока
- •Тест последовательностей
- •Тест наибольших последовательностей единиц в блоке
- •Тест рангов двоичных матриц
- •Спектральный тест
- •Тест сравнения непересекающихся шаблонов
- •Тест сравнения пересекающихся шаблонов
- •Тест сжатия алгоритмом Зива-Лемпела
- •Тест линейной сложности
- •Тест серий
- •Энтропийный тест
- •Тест совокупных сумм
- •Тест случайных отклонений
- •Вариант теста случайных отклонений
- •Анализ результатов тестирования
- •Исследование производительности шифров
- •Rabbit
- •Salsa20/12
- •Salsa20/12
- •Sosemanuk
- •Выводы
- •Цель работы Изучить криптографический стандарт шифрования ГОСТ 28147-89 и его особенности, познакомиться с различными режимами блочного шифрования.
- •Порядок выполнения работы
- •Контрольные вопросы
- •Интерфейс учебно-программного комплекса
- •Главное окно
- •Пункт меню “Файл”
- •Пункт меню “AES”
- •Режимы ECB, CBC, CFB, OFB
- •Режим ECB (Electronic Code Book – режим электронной кодовой книги)
- •Режим CBC (Ciphertext Block Chaining – режим сцепления блоков шифротекста)
- •Режим CFB (Ciphertext Feedback – обратная связь по шифротексту)
- •Режим OFB (Output Feedback – режим обратной связи по выходу)
- •Описание алгоритма
- •Безопасность
- •Программная реализация
- •Заключение
- •Общее описание лабораторной работы
- •Общий вид окна учебной программы
- •Требования к размещению файлов
- •Необходимые знания
- •Загрузка варианта
- •Выбор вероятных составляющих
- •Нахождение вероятной части ключа
- •Определение положения отводов
- •Поиск начального заполнения
- •Получение гаммы
- •Получение открытого текста
- •Отчет о проделанной работе
- •Сообщения выдаваемые в процессе работы
- •Сообщения об ошибках
- •Сообщения-вопросы
- •Критические ошибки
- •Пример
- •Асимметричные криптосистемы [8 -14]
- •Предпосылки появления асимметричных криптосистем
- •Обобщенная схема асимметричной крипосистемы
- •Алгебраическая обобщенная модель шифра
- •Односторонние функции
- •Факторизация
- •Дискретный логарифм
- •Криптосистема RSA
- •Основные определения и теоремы
- •Алгоpитм RSA
- •Процедуры шифрования и расшифрования в криптосистеме RSA
- •Криптосистема Эль-Гамаля
- •Комбинированный метод шифрования
- •Метод экспоненциального ключевого обмена Диффи-Хеллмана
- •Алгоритмы практической реализации криптосистем с открытым ключом
- •Возведение в степень по модулю m
- •Алгоритм Евклида вычисления НОД
- •Вычисление обратных величин в кольце целых чисел
- •Генерация простых чисел
- •Атаки на алгоритм RSA
- •Практическая часть
- •Лабораторная работа 1
- •Ход работы
P(S>t, H0 истинно) = P(H0 отклоняется/H0 истинно) – вероятность ошибки 1-го рода, P(S t, H0 ложно) = P(H0 принимается/H0 ложно) – вероятность ошибки 2-го рода, где S – значение тестовой статистики, t – критическое значение.
Тестовая статистика используется для вычисления значения P-тест,value, которое суммирует силу доказательств против нулевой гипотезы H0. Другими словами P-тест,value – это вероятность того, что совершенный генератор случайных чисел произведет последовательность менее случайную, чем тестируемая. Если P-тест,value = 1, то тестируемая последовательность считается абсолютно случайной. Если P-тест,value = 0, то тестируемая последовательность считается абсолютно неслучайной.
Для теста выбирается уровень значимости . Если P-тест,value , то нулевая гипотеза H0 принимается, т.е. последовательность считается случайной. Если P-тест,value < , то нулевая гипотеза H0 отвергается, т.е. последовательность считается неслучайной. Обычно выбирается из диапазона [0,001;0,01]. Значение = 0,01 означает, что одна последовательность из 100 будет отвергнута тестом, при том, что эта последовательность действительно случайна. P-тест,value 0,01 означает, что последовательность будет считаться случайной с уверенностью 99%. P-тест,value < 0,01 означает, что последовательность будет считаться неслучайной с уверенностью 99%.
Набор статистических тестов НИСТ
Как уже отмечалось выше, набор статистических тестов НИСТ содержит 16 тестов. Рассмотрим каждый из них подробнее.
Частотный тест
Цель частотного (монобитного) теста (frequency test) – определить является ли число единиц и нулей в последовательности приблизительно таким же, как и в случайной последовательности. Другими словами этот тест оценивает близость доли единиц к 1/2, т.е. число единиц и нулей в тестируемой последовательности должно быть примерно одинаковым.
Для тестируемой двоичной последовательности длиной n бит вычисляется тестовая статистика sobs
sobs Snn ,
где Sn – разница между числом появления единиц и нулей в тестируемой двоичной последовательности.
Затем вычисляется значение P-тест,value
228
P-тест,value = erfc sobs ,
2
где erfc x |
2 |
|
|
|
|
e x2 dx – дополнительный интеграл вероятностей [53_Корн]. |
|||
|
|
|
||
|
|
|||
|
|
|
x |
Малое значение P-тест,value (< 0,01) указывает на то, что в тестируемой последовательности либо слишком много единиц, либо наоборот – слишком много нулей.
Частотный тест внутри блока
Цель частотного теста внутри блока (frequency test within a block) – определить, равно ли число единиц в M-битовом блоке примерно M/2, как в случайной последовательности. При M = 1 этот тест вырождается в частотный тест.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
Тестируемая |
двоичная |
последовательность длиной n бит разбивается на |
N |
|
|
|||||||||||||
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
M |
|
непересекающихся блоков длиной M бит каждый. Оставшиеся биты отбрасываются. |
|
|
|
|||||||||||||||
Вычисляется тестовая статистика |
|
|
|
|
||||||||||||||
|
2 |
|
|
N |
|
1 |
|
2 |
|
|
|
|
|
|
||||
|
obs 4M i |
2 |
|
, |
|
|
|
|
|
|
||||||||
|
|
|
|
i 1 |
|
|
|
|
|
|
|
|
|
|
||||
где i – доля единиц в каждом M-битовом блоке. |
|
|
|
|||||||||||||||
Затем вычисляется значение P-тест,value |
|
|
|
|||||||||||||||
|
|
|
igamc N |
, |
2 |
obs |
|
|
|
|
||||||||
P-тест,value = |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
, |
|
|
|
|
|||
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|||||
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|||
где igamc(a, x) = a |
|
|
|
– неполная гамма-функция, |
|
|
|
|||||||||||
x |
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
1 |
|
|
|
e |
t t a 1dt |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a e t t a 1dt – гамма-функция.
0
Малое значение P-тест,value (< 0,01) указывает на большое отклонение от равной порции единиц и нулей по крайней мере в одном из блоков.
Тест последовательностей
Цель теста последовательностей (the runs test) – определить равно ли количество серий единиц и нулей различной длины количеству аналогичных серий в случайной последовательности.
229
Для тестируемой двоичной последовательности длиной n бит сначала вычисляется доля
12
единиц. Если 2 n , то считается, что тестируемая последовательность
провалила тест последовательностей. Вычисляется тестовая статистика
|
|
n 1 |
|
|
|
|
|
|
|
|
|
|
Vn obs r k 1, |
|
|
|
|
|
|||||||
|
|
k 1 |
|
|
|
|
|
|
|
|
|
|
где |
|
0, ïðè |
|
k |
k 1 |
, k – k-ый элемент тестируемой последовательности. |
||||||
|
1, ïðè |
k |
k 1 |
|||||||||
|
r k |
|
|
|
|
|
|
|
|
|
||
Затем вычисляется значение P-тест,value |
||||||||||||
|
|
|
|
Vn obs |
2n 1 |
|
|
|
|
|||
|
|
|
|
|||||||||
P-тест,value = erfc |
|
|
|
|
|
|
|
|
|
. |
||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
||||||
|
|
|
|
2 2n 1 |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|||||
Большое |
значение |
тестовой статистики Vn(obs) означает, что колебания (изменения |
единицы на ноль и наоборот) в последовательности слишком быстрые, маленькое значение тестовой статистики Vn(obs) наоборот означает, что колебания слишком медленные.
Тест наибольших последовательностей единиц в блоке
Цель теста наибольших последовательностей единиц в блоке (test for the longest-run-of- ones in a block) – определить совпадает ли длина самой длинной серии единиц в тестируемой последовательности с аналогичной длиной в случайной последовательности. Отклонение от нормы в ожидаемом размере самой длинной серии единиц означает, что такое же отклонение есть в ожидаемом размере самой длинной серии нулей. Поэтому можно ограничиться только тестом для единиц.
|
|
n |
|
Тестируемая двоичная последовательность длиной n бит разбивается на |
N |
|
|
|
|||
|
|
M |
|
непересекающихся блоков длиной M бит каждый. |
|
|
|
Составляется таблица (таблица 2.15), содержащая частоты появления vj серий единиц
длиной l. |
|
|
|
|
|
|
|
|
|
|
Таблица 2.15 |
|
|
|
|
|
|
|
vi |
M = 8 |
M = 128 |
M = 104 |
|
|
v0 |
l 1 |
l 4 |
l 10 |
|
|
v1 |
l = 2 |
l = 5 |
l = 11 |
|
|
v2 |
l = 3 |
l = 6 |
l = 12 |
|
|
v3 |
l 4 |
l = 7 |
l = 13 |
|
|
v4 |
|
l = 8 |
l = 14 |
|
|
v5 |
|
l 9 |
l = 15 |
|
|
v6 |
|
|
l 16 |
|
Вычисляется тестовая статистика
230
K |
vi N i |
2 |
|
2 obs |
|
. |
|
N i |
|
||
i 0 |
|
|
Значения для i можно найти в [6].
Значения величин Kи N определяются значением M в соответствии с таблицей 2.16.
|
|
|
|
|
|
|
|
|
|
|
Таблица 2.17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
M |
K |
N |
|
|
|
|
|
|
|
|
|
8 |
3 |
16 |
|
|
|
|
|
|
|
|
|
128 |
5 |
49 |
|
|
|
|
|
|
|
|
|
104 |
6 |
75 |
|
Затем вычисляется значение P-тест,value |
|
|
|
||||||||
|
igamc K |
, |
2 |
obs |
|
|
|
|
|||
P-тест,value = |
|
|
|
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
2 |
|
|
|
|
||||
|
2 |
|
|
|
|
|
|
|
|
|
Большие значения χ2 указывают на то, что в тестируемой последовательности есть скопления единиц.
Тест рангов двоичных матриц
Цель теста рангов двоичных матриц (the binary matrix rank test) – исследовать линейную зависимость между подстроками (фиксированной длины) тестируемой последовательности.
Тестируемая двоичная последовательность длиной n бит разбивается на |
|
n |
|
N |
|
|
|
|
|||
|
|
MQ |
непересекающихся блоков длиной M Q бит каждый. Каждый M Q-бит блок представляется в виде матрицы размером M Q. Каждая строка матрицы последовательно заполняется Q- битовыми блоками тестируемой последовательности.
Для каждой матрицы вычисляется ранг Rl, l = 1, …, N. Вычисляется тестовая статистика
2 obs |
FM 0,2888N 2 |
|
FM 1 0,5776N 2 |
|
N FM FM 1 0,1336N 2 |
, |
|
0,2888N |
0,5776N |
0,1336N |
|||||
|
|
|
|
где FM равно количеству матриц с рангом Rl = M (полный ранг), FM–1 равно количеству матриц с рангом Rl = M–1, (N – FM – FM–1) – количество остальных матриц.
Затем вычисляется значение P-тест,value
|
igamc |
1, |
2 |
obs |
||
P-тест,value = |
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
2 |
|||
|
|
|
|
|
|
Большие значения χ2(obs) (и, следовательно, маленькие P-тест,value) будут указывать на отклонение распределения рангов от соответствующего случайной последовательности.
231