- •А.М. ГОЛИКОВ
- •Учебное пособие:
- •Томск 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
- •Ход работы
s старших бит выходного блока складывается, с помощью операции XOR, с соответствующими долями зашифрованного текста.
При зашифровании в режиме CFB входной блок для каждой функции шифрования (кроме первого) зависит от результата предыдущей функции шифрования, поэтому многократные операции шифрования не могут быть выполнены параллельно. При расшифровании в режиме CFB, необходимые операции шифрования могут быть выполнены параллельно, если из значения IV и зашифрованного текста сначала создать (последовательно) входные блоки.
Режим обратной связи по выходу (OFB)
В режиме обратной связи по выходу (OFB) последовательность выходных блоков генерируется путем последовательного применения операции шифрования к значению IV. Чтобы получить зашифрованный текст открытый текст складывается с помощью операции XOR со сгенерированными выходными блоками и наоборот. Для данного режима шифрования значения IV должны быть случайными, т.е. IV должны быть уникальными для каждого применения режима OFB на данном ключе.
Для зашифрования в режиме OFB, чтобы произвести первый выходной блок, значение IV преобразовывается функцией шифрования. Чтобы произвести первый блок зашифрованного текста первый выходной блок складывается, с помощью операции XOR, с первым блоком открытого текста. Затем, чтобы произвести второй выходной блок, функция шифрования применяется к первому выходному блоку. Второй выходной блок складывается с помощью операции XOR со вторым блоком открытого текста, чтобы произвести второй блок зашифрованного текста. Затем ко второму выходному блоку применяется функция шифрования, чтобы произвести третий выходной блок. Таким образом, последовательные выходные блоки производятся путем применения функции шифрования к предыдущим выходным блокам, а затем выходные блоки складывается с помощью операции XOR с соответствующими блоками открытого текста, чтобы произвести блоки зашифрованного текста. В последнем блоке (который может быть неполным блоком из u бит) для операции XOR используются старшие u бит последнего выходного блока. Оставшиеся (b–u) бит последнего выходного блока отбрасываются.
При расшифровании в режиме OFB чтобы произвести первый выходной блок значение IV преобразовывается функцией шифрования (рисунок 2.39). Чтобы получить первый блок открытого текста первый выходной блок складывается, с помощью операции XOR, с первым блоком зашифрованного текста. Затем первый выходной блок преобразовывается функцией шифрования, чтобы произвести второй выходной блок. Второй выходной блок складывается
211
с помощью операции XOR со вторым блоком зашифрованного текста, чтобы произвести второй блок открытого текста. Второй выходной блок также преобразовывается функцией шифрования, чтобы произвести третий выходной блок. Таким образом, последовательные выходные блоки производятся путем применения функции шифрования к предыдущим выходным блокам, затем выходные блоки складываются, с помощью операции XOR, с соответствующими блоками зашифрованного текста, чтобы получить блоки открытого текста. В последнем блоке (который может быть неполным блоком из u бит) для операции XOR используются старшие u бит последнего выходного блока. Оставшиеся (b–u) бит последнего выходного блока отбрасываются.
IV
|
Входной блок |
Входной блок |
Входной блок |
|
зашифрование |
Шифрование |
Шифрование |
Шифрование |
|
Выходной блок |
Выходной блок |
Выходной блок |
||
Открытый |
Открытый |
Открытый |
||
|
||||
|
текст 1 |
текст 2 |
текст n |
|
|
Шифртекст 1 |
Шифртекст 2 |
Шифртекст n |
|
|
IV |
|
|
|
расшифрование |
Входной блок |
Входной блок |
Входной блок |
|
Шифрование |
Шифрование |
Шифрование |
||
Выходной блок |
Выходной блок |
Выходной блок |
||
Шифр- |
Шифр- |
Шифр- |
||
|
||||
|
текст 1 |
текст 2 |
текст n |
|
|
Открытый текст |
Открытый текст |
Открытый текст |
|
|
|
Рис. 2.39. Режим OFB |
|
|
В режиме OFB и при зашифровании и при расшифровании каждая функция шифрования |
||||
(кроме первой) зависит от результатов предыдущей функции шифрования, поэтому |
||||
многократные функции шифрования не могут быть выполнены параллельно. Однако, если |
||||
значение IV известно, выходные блоки могут быть сгенерированы прежде, чем станет |
||||
доступным зашифрованный или открытый текст. |
|
|||
|
|
212 |
|
Для режима OFB требует уникальное значение IV для каждого сообщения, которое когда-либо будет зашифровано на данном ключе. Если, вопреки этому требованию, используется то же самое значение IV для зашифровывания более, чем одного сообщения, то конфиденциальность этих сообщений может быть поставлена под угрозу. В частности если известен блок открытого текста любого из этих сообщений, скажем, j-й блок открытого текста, то выход j-й функции шифрования может быть определен легко из j-го блока зашифрованного текста сообщения. Эта информация позволяет легко восстановить j-й блок открытого текста любого другого сообщения, зашифрованного с использованием того же самого значения IV, из соответствующего j-го блока зашифрованного текста этого сообщения.
Конфиденциальность может быть аналогичным образом поставлена под угрозу, если любой из входных блоков функции шифрования определяется как IV для зашифрования другого сообщения на данном ключе.
Режим счетчика (Counter mode)
В режиме счетчика (CTR) для производства последовательности выходных блоков операция шифрования применяется к набору выходных блоков, называемых счетчиками. Чтобы получить зашифрованный текст открытый текст складывается с помощью операции XOR со сгенерированными выходными блоками и наоборот. Все блоки в последовательности счетчика должны отличаться друг от друга. Это условие не ограничивается одним сообщением, т.е. для всех сообщений, которые зашифровываются на данном ключе, все счетчики должны быть различными.
При зашифровании в режиме CRT функция шифрования применяется к каждому блоку счетчика (рисунок 2.40). Полученные выходные блоки складываются с помощью операции XOR с соответствующими блоками открытого текста, для того чтобы произвести блоки зашифрованного текста. В последнем блоке (который может быть неполным блоком из u битов) для операции XOR используются старшие u бит последнего выходного блока. Оставшиеся (b–u) бит последнего выходного блока отбрасываются.
213
зашифрование
Counter 1 |
Counter 2 |
Counter n |
Входной блок |
Входной блок |
Входной блок |
Шифрование |
Шифрование |
Шифрование |
Выходной блок |
Выходной блок |
Выходной блок |
Открытый |
Открытый |
Открытый |
текст 1 |
текст 2 |
текст n |
Шифртекст 1 |
Шифртекст 2 |
Шифртекст n |
расшифрование
Counter 1
Входной блок
Шифрование
Выходной блок
Шифр-
текст 1
Открытый текст
Counter 1 |
Counter 1 |
Входной блок |
Входной блок |
Шифрование |
Шифрование |
Выходной блок |
Выходной блок |
Шифр- |
Шифр- |
текст 2 |
текст n |
Открытый текст |
Открытый текст |
Рис. 2.40. Режим CRT
При расшифровании в режиме CTR выполняются те же самые операции, что и при зашифровании.
В режиме CTR и при зашифровании и при расшифровании функции шифрования могут быть выполнены параллельно. Блок открытого текста, который соответствует какому-то отдельному блоку зашифрованного текста, может быть получен независимо от других блоков открытого текста, если может быть определен соответствующий блок счетчика. Кроме того, функции шифрования могут быть применены к счетчикам прежде, чем станет доступным зашифрованный или открытый текст.
214