- •А.М. ГОЛИКОВ
- •Учебное пособие:
- •Томск 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
- •Ход работы
поточный шифр, а в режиме гаммирования с обратной связью – как самосинхронизирующийся.
Строительные блоки поточных шифров
Рассмотрим основные блоки, используемые для построения поточных шифров.
Регистры сдвига с обратной связью
Большинство предложенных до настоящего времени алгоритмов поточного шифрования так или иначе основаны на использовании регистров сдвига с обратной связью.
Регистр сдвига с обратной связью (feedback shift register, FSR) состоит из двух частей: регистра сдвига и функции обратной связи (рисунок 3). Регистр сдвига представляет собой последовательность битов. Длина регистра сдвига выражается числом битов. Если длина регистра равна n битам, регистр называют n-битовым регистром сдвига. При каждом извлечении бита все биты регистра сдвига сдвигаются вправо на 1 позицию. Новый старший бит рассчитывается как функция от всех остальных битов регистра. На выходе регистра сдвига оказывается 1 бит [4, 6].
|
bn–1 |
bn–2 |
bn–3 |
… |
b2 |
b1 |
b0 |
|
||||||
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функция обратной связи
Рис. 2.19. Регистр сдвига с обратной связью
Регистры сдвига с линейной обратной связью
К простейшему типу FSR относится регистр сдвига с линейной обратной связью (linear feedback shift register, LFSR) [4]. Подавляющее большинство предложенных до настоящего времени генераторов поточного шифрования так или иначе основано на LFSR.
На это существует несколько причин:
LFSR хорошо подходят для аппаратной реализации;
LFST могут производить последовательности большого периода;
LFSR могут производить последовательности с хорошими статистическими свойствами;
LFSR могут быть легко проанализированы с помощью алгебраических
техник.
LFSR длины n состоит из n элементов задержки (ячеек) bn–1, bn–2, …, b1, b0, каждый из которых может хранить один бит и имеет по одному входу и выходу.
170
Исходной информацией для построения LFSR является образующий многочлен. Степень этого многочлена определяет разрядность регистра сдвига, а ненулевые коэффициенты – характер обратных связей (номера отводов сигналов обратной связи). В общем случае двоичный образующий многочлен степени n имеет вид [6]:
n
c(x) = ci xi = 1 + c1x + c2x2 + … + cn–1xn–1 + cnxn,
i 0
где cn = c0 = 1, cj {0, 1} для j = 1, …, (n – 1).
В общем случае двоичному образующему многочлену c(x) соответствует две схемы: Фибоначчи (рисунок 4) и Галуа (рисунок 2.20).
bn–1 |
bn–2 |
bn–3 |
… |
b2 |
|
b1 |
b0 |
c0 |
c1 |
c2 |
|
|
cn–2 |
cn–1 |
cn |
…
Рис. 2.20. LFSR, схема Фибоначчи
На каждом такте работы схемы Фибоначчи содержимое регистра сдвигается вправо на один бит, так что bi = bi+1 для i = 0, …, (n – 2), а содержимое 0-ой ячейки b0 поступает на выход LFSR. Новое содержимое (n – 1)-ой ячейки bi–1 рассчитывается как сумма по модулю 2 предыдущих состояний определенных ячеек
n 1
bn 1 cn i bi . i 0
При ci = 1 умножение на ci равносильно наличию обратной связи, при ci = 0 – отсутствию.
Схема Галуа представлена на рисунке 2.21.
bn–1 |
bn–2 |
… |
b1 |
|
b0 |
c0 |
c1 |
|
|
cn–1 |
cn |
…
171
Рис. 2.21. LFSR, схема Галуа
На каждом такте работы схемы Галуа содержимое регистра сдвига сдвигается вправо на 1 бит так, что bi = bi+1 b0cn–i, а содержимое 0-ой ячейки b0 поступает на выход LFSR и в (n – 1) ячейку регистра, т.е. bn–1 = b0.
n-битовый LFSR может находиться в одном из (2n – 1) внутренних состояний. Это значит, что теоретически такой регистр может генерировать псевдослучайную последовательность с периодом (2n – 1) битов. (Это число равно (2n – 1), а не 2n, поскольку заполнение LFSR нулями влечет вывод регистром бесконечной последовательности нулей, что совершенно бесполезно.) Только при определенных последовательностях отводов LFSR циклически пройдет через все 2n – 1 внутренних состояний. Такие регистры называются регистрами LFSR с максимальным периодом. Получившийся выход называют m- последовательностью.
Для обеспечения максимального периода конкретного LFSR, соответствующий многочлен, образованный из последовательности отводов регистра, должен быть примитивным по модулю 2. Степень многочлена является длиной регистра сдвига [4, 6].
Как бы ни был хорошо подобран полином обратной связи, LFSR остается линейным устройством. А такие устройства обычно легко поддаются криптоанализу независимо от того, насколько много параметров сохраняется в тайне. В современной криптографической литературе LFSR сами по себе не рекомендуются в качестве генераторов псевдослучайных шифрующих последовательностей [6].
Регистры LFSR сами по себе являются хорошими генераторами псевдослучайных последовательностей, но они обладают некоторыми нежелательными неслучайными свойствами. Последовательные биты линейны, что делает их бесполезными для шифрования. Внутреннее состояние LFSR длины n определяет следующие n выходных битов генератора. Даже если схема обратной связи хранится в секрете, она может быть определена по 2n выходным битам генератора с помощью высокоэффективного алгоритма Берлекампа-Мэсси [4]. В то же время подавляющее большинство реальных конструкций для поточного шифрования строится на основе LFSR [6].
Генераторы на основе LFSR
Поточные шифры на основе LFSR подразделяют на [4]:
системы с генератором с равномерным движением регистров;
системы с генератором с неравномерным движением регистров.
Вгенераторе с равномерным движением регистров каждый раз для получения нового
172
бита следует однократно сдвинуть LFSR. Выходной бит представляет собой функцию некоторых битов LFSR. Генераторы с равномерным движением в свою очередь делятся на
[4, 5]:
комбинирующий генератор;
фильтрующий генератор.
Комбинирующий генератор (рисунок 6) состоит из нескольких параллельно работающих LFSR, выходы которых поступают на вход некоторой булевой функции f, комбинирующей эти выходы для генерации ключевого потока.
|
|
|
|
|
LFSR-1 |
|
ui1 |
|
|
|
||||||
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
f |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LFSR-2 |
|
ui2 |
ki |
||||||||
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
… |
|
uin |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LFSR-n
Рис. 2.22. Комбинирующий генератор Ключом соответствующего поточного шифра является начальное заполнение каждого
регистра, реже – начальное заполнение и функции обратных связей. Результат работы комбинирующего генератора можно представить в виде ki f ui1 ,ui2 , ,uin ,
где ki – i-ый бит ключевого потока, производимого генератором; n – количество LFSR;
uij – i-ый бит, генерируемый j-ым LFSR.
Фильтрующий генератор (рисунок 2.23) состоит из одного LFSR. Для генерации ключевого потока используется нелинейная функция f, на вход которой подаются значения некоторых ячеек LFSR. Функция f в этом случае называется фильтрующей функцией.
173