- •А.М. ГОЛИКОВ
- •Учебное пособие:
- •Томск 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
- •Ход работы
1.Основной регистр М инициализируется ключом и IV: M := K + 280 IV = (080–v||IV||K)
2.Регистр переносов инициализируется в 0:
C := 0 = (082)
3. FCSR тактируется 160 раз. (На этом шаге выход отбрасывается),
После фазы установки, псевдослучайный поток производится тактированием FCSR и извлечением по одному псевдослучайных байт, используя фильтр F, как описано выше.
Поточный шифр Grain-128
Grain – двоичный аддитивный поточный шифр, ориентированный на аппаратную реализацию. Версия, которая обозначается Grain v.1 [6], предназначена для приложений, которые имеют очень ограниченные аппаратные ресурсы. Grain v.1 поддерживает 80битовый размер ключа.
Версия нифра Grain-128 поддерживает размер ключа – 128 бит и размер вектора IV – 96 битов. Шифр Grain-128 также является очень компактным и легко осуществимым в аппаратных средствах. Кроме того, возможно достаточно просто увеличивать скорость за счет большего количества аппаратных средств. Это является отличительной особенность семейства поточных шифров Grain, и во многих других шифрах явно не обосновано. Grain128 использует линейный регистр сдвига с обратной связью, чтобы гарантировать хорошие статистические свойства и гарантировать нижнюю границу периода ключевой последовательности. Чтобы ввести нелинейность вместе с нелинейным фильтром используется нелинейный регистр сдвига с обратной связью (N),ключи).ВFSR). Нелинейный фильтр берет в качестве входных данных значения от обоих сдвиговых регистров.
Генерация ключевого потока
Краткий обзор различных блоков, используемых в шифре, приведен на рисунке 2.28.
193
zi
Рис. 2.28. Краткий обзор шифра.
Шифр состоит из трех основных строительных блоков, а именно: LFSR, N),ключи).ВFSR и выходной функции. Содержимое LFSR обозначается si, si+1, …, si+127. Аналогичным образом содержание N),ключи).ВFSR обозначается bi, bi+1, …, bi+127. Полином обратной связи LFSR, обозначенный f(x), является примитивным полиномом степени 128. Он определен как
f(x) = 1 + x32 + x47 + x58 + x90 + x121 + x128.
Чтобы избежать любой возможной неопределенности, разработчики в [6] привели соответствующую функцию обновления LFSR:
si+128 = si + si+7 + si+38 + si+70 + si+81 + si+96.
Нелинейный полином обратной связи N),ключи).ВFSR, g(x), является суммой одной линейной и одной нелинейной функций. Он определен как
g(x) = 1 + x32 + x37 + x72 + x102 + x128 + x44x60 + x61x125 + + x63x67 + x69x101 + x80x88 + x110x111 + x115x117.
Аналогично, чтобы избежать любой возможной неопределенности, разработчики также привели в [6] соответствующую функцию обновления N),ключи).ВFSR. В функции обновления, приведенной ниже, бит si, опущенный в полиноме обратной связи, включен и замаскирован со входом N),ключи).ВFSR.
bi+128 = si + bi + bi+26 + bi+56 + bi+91 + bi+96 + bi+3bi+67 + bi+11bi+13 +
+ bi+17bi+18 + bi+27bi+59 + bi+40bi+48 + bi+61bi+65 + bi+68bi+84.
256 элементов памяти в этих двух сдвиговых регистрах представляют состояние шифра. Из этого состояния берется 9 переменных в качестве входа булевой функции h(x). Два входа h(x) берутся из N),ключи).ВFSR, а семь – из LFSR. Эта функция имеет степень 3 и является очень простой. Она определяется как
h(x) = x0x1 + x2x3 + x4x5 + x6x7 + x0x4x8,
194