- •А.М. ГОЛИКОВ
- •Учебное пособие:
- •Томск 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
- •Ход работы
где переменные x0, x1, x2, x3, x4, x5, x6, x7 и x8 соответствуют позициям сигнала bi+12, si+8, si+13, si+20, bi+95, si+42, si+60, si+79 и si+95 соответственно. Выходная функция определяется как
zi bi j h x si 93 ,
j A
где A = {2,15,36,45,64,73,89}.
Инициализация
Перед генерацией ключевой последовательности шифр должен быть инициализирован с помощью ключа и вектора IV. Пусть биты ключа k будут обозначаться ki, 0 i 127, а биты вектора IV будут обозначаться IVi, 0 i 95. Тогда инициализация ключа и вектора IV выполняется следующим образом. 128 элементов N),ключи).ВFSR заполняются битами ключа, bi = ki, 0i 127, затем первые 96 элементов LFSR заполняются битами IV битами, si = IVi, 0 i 95. Последние 32 бита LFSR заполняются единицами, si = 1, 96 i 127. После загрузки битов ключа и IV, шифр тактируется 256 раз, без производства ключевой последовательности. Вместо выходной функции производится подача назад и сложение по модулю 2 (XOR’тся) со входом и LFSR и N),ключи).ВFSR, см. рисунок 2.29
Рис. 2.29. Инициализация ключа
Поточный шифр MICKEY-128
MICKEY-128 – поточный шифр, ориентированный на аппаратную реализацию. для генерации ключевого потока MICKEY-128 использует 128 битовый ключ [6]. Этот шифр использует нерегулярно тактируемые регистры сдвига с новыми методиками, предназначенными обеспечить баланс между необходимостью в гарантированных периоде и псевдослучайностью и необходимостью избежать определенных криптоаналитических атак.
Инициализация
MICKEY128 2.0 использует два входных параметра: 195
128-битовый секретный ключ K, биты которого обозначаются k0 … k127;
вектор инициализации IV (initialisation variable), длиной от 0 до 128 битов, биты которой обозначаются iv0 … ivIVLEN),ключи).ВGHT–1, где IVLEN),ключи).ВGHT – размер вектора инициализации в битах.
Генератор строится из двух регистров R и S. Каждый регистр длиной 160 разрядов. Биты в регистрах обозначаются r0 … r159 и s0 … s159 соответственно.
Разработчики заявляют, что R – это “линейный регистр”, а S – это “нелинейный регистр”. Инициализация генератора начинается с обнуления всех разрядов регистров R и S. Затем производится загрузка вектора инициализации IV путем тактирования всего генератора IVLEN),ключи).ВGHT раз с помощью операции clock_KG(R, S, Mixing = True, Input_bit = ivi), описанной в п.1.3.8.2. Затем производится загрузка ключа: весь генератор тактируется 128 раз, так же с помощью операции clock_KG(R, S, Mixing = True, Input_bit = ki). Заканчивается процесс инициализации 160 кратным применением операции clock_KG(R, S, Mixing = True,
Input_bit = 0) тактирования всего генератора.
Генерация ключевого потока
После выполнения операции инициализации можно приступить к генерации битов ключевой последовательности z0 … zL–1:
For 0 i L–1:
zi = r0 s0,
clock_KG(R, S, Mixing = False, Input_bit = 0),
где clock_KG(R, S, Mixing, Input_bit)и – операция тактирования всего генератора, которая определяется в соответствии со следующим псевдокодом:
Control_bit_R = s54 r106
Control_bit_S = s106 r53
If Mixing = True,
oclock_R(R, Input_bit_R = Input_bit s80, Control_bit_R = Control_bit)
oclock_S(S, Input_bit_S = Input_bit, Control_bit_S = Control_bit)
If instead Mixing = False,
oclock_R(R, Input_bit_R = Input_bit, Control_bit_R = Control_bit)
oclock_S(S, Input_bit_S = Input_bit, Control_bit_S = Control_bit)
clock_R и clock_S – это операции тактирования регистров R и S соответственно. Операция тактирования регистра R clock_R(R, Input_bit_R, Control_bit_R) определяется
следующим псевдокодом:
196
