- •Министерство образования и науки Российской Федерации
- •В.И. Аверченков, м.Ю. Рытов, с.А. Шпичак
- •Брянск Издательство бгту
- •Isbn 978-5-89838-596-5
- •Редактор издательства т.И. Королева
- •Темплан 2011г., п. 57
- •1. Введение в криптографию 10
- •2. Стойкость криптографических систем 34
- •3. Принципы построения симметричных криптографических алгоритмов 61
- •4. Принципы построения асимметричных криптографических алгоритмов 98
- •5. Криптографические хэш-функции и электронно-цифровая подпись 133
- •6. Организация сетей засекреченной связи 160
- •7.Криптоанализ и перспективные направления в криптографии 183
- •Предисловие
- •1. Введение в криптографию
- •1.1. Краткая история развития криптографических методов.
- •1.2. Основные понятия криптографии
- •1.2.1. Термины и определения
- •1.2.2. Классификация шифров
- •1.2.3. Характер криптографической деятельности
- •Контрольные вопросы
- •2. Стойкость криптографических систем
- •2.1. Модели шифров и открытых текстов
- •2.1.1. Алгебраические модели шифров.
- •2.1.2. Вероятностные модели шифров.
- •2.1.3. Математические модели открытых сообщений.
- •2.2. Криптографическая стойкость шифров
- •2.2.1. Теоретико-информационный подход к оценке криптостойкости шифров
- •2.2.2. Практическая стойкость шифров.
- •2.3. Имитостойкость и помехоустойчивость шифров
- •2.3.1. Имитостойкость шифров. Имитация и подмена сообщения
- •2.3.2. Способы обеспечения имитостойкости
- •2.3.3. Помехостойкость шифров
- •2.3.4. Практические вопросы повышения надежности.
- •Контрольные вопросы
- •3. Принципы построения симметричных криптографических алгоритмов
- •3.1. Виды симметричных шифров. Особенности программной и аппаратной реализации.
- •3.2. Принципы построения блочных шифров
- •3.2.1. Базовые шифрующие преобразования
- •3.2.2. Сеть Файстеля
- •3.3. Современные блочные криптоалгоритмы
- •3.3.1. Основные параметры блочных криптоалгоритмов.
- •3.3.2. Алгоритм des
- •3.3.3. Блочный шифр tea
- •Var key:tLong2x2;
- •Var y,z,sum:longint; a:byte;
- •Inc(sum,Delta);
- •3.3.4. Международный алгоритм idea
- •3.3.5. Алгоритм aes (Rijndael)
- •InverseSubBytes(s);
- •InverseShiftRows(s);
- •InverseSubBytes(s) End;
- •3.4. Принципы построения поточных шифров
- •3.4.1. Синхронизация поточных шифрсистем
- •3.4.2. Структура поточных шифрсистем
- •3.4.3.Регистры сдвига с обратной связью
- •3.4.4. Алгоритм Берленкемпа-Месси
- •3.4.5. Усложнение линейных рекуррентных последовательностей
- •3.5. Современные поточные криптоалгоритмы
- •3.5.1. Алгоритм Гиффорда
- •3.5.2. Алгоритм a5
- •3.6. Режимы использования шифров
- •Контрольные вопросы
- •4. Принципы построения асимметричных криптографических алгоритмов
- •4.1. Математические основы асимметричной криптографии
- •4.1.1. Свойства операций
- •4.1.2. Функция Эйлера. Поле. Теоремы Эйлера - Лагранжа и Ферма
- •4.1.3. Конечные поля
- •4.1.4. Основные алгоритмы
- •Алгоритм разложения чисел на простые множители.
- •4.1.5. Алгоритмы нахождения нод и мультипликативного обратного по модулю
- •4.1.6. Китайская теорема об остатках
- •4.1.7. Символы Лежандра и Якоби. Извлечение корней
- •4.2. Примеры современных асимметричных шифров
- •4.2.1. Криптосистема rsa
- •4.2.2. Взаимосвязь компонентов rsa
- •Слабые моменты реализации rsa
- •4.2.3. Криптосистема Эль-Гамаля
- •4.2.4. Криптосистема Рабина
- •4.2.5. Рюкзачные криптосистемы
- •4.2.6. Шифрсистема Мак-Элиса
- •Контрольные вопросы
- •5. Криптографические хэш-функции и электронно-цифровая подпись
- •5.1. Криптографические хэш-функции
- •5.1.1. Блочно-итерационные и шаговые функции
- •5.1.2. Ключевые функции хэширования
- •5.1.3 Бесключевые функции хэширования
- •5.1.4. Схемы использования ключевых и бесключевых функций
- •5.2. Электронно-цифровая подпись
- •5.2.1. Задачи и особенности электронно-цифровой подписи
- •5.2.2. Асимметричные алгоритмы цифровой подписи на основе rsa
- •5.2.3. Алгоритм цифровой подписи Фиата – Фейге – Шамира
- •5.2.4. Алгоритм цифровой подписи Эль-Гамаля
- •5.2.5. Алгоритм цифровой подписи Шнорра
- •5.2.6. Алгоритм цифровой подписи Ниберга-Руппеля
- •5.2.7. Алгоритм цифровой подписи dsa
- •5.2.8. Симметричные (одноразовые) цифровые подписи
- •Контрольные вопросы
- •6. Организация сетей засекреченной связи
- •6.1. Протоколы распределения ключей
- •6.1.1. Передача ключей с использованием симметричного шифрования
- •6.1.2. Передача ключей с использованием асимметричного шифрования
- •6.1.3. Открытое распределение ключей
- •6.1.4. Предварительное распределение ключей
- •6.1.5. Схемы разделения секрета
- •6.1.6. Способы установления ключей для конференц-связи
- •6.2. Особенности использования вычислительной техники в криптографии
- •6.2.1. Методы применения шифрования данных в локальных вычислительных сетях
- •6.2.2. Обеспечение секретности данных при долгосрочном хранении.
- •6.2.4. Обеспечение секретности ключей при долгосрочном хранении
- •6.2.5. Защита от атак с использованием побочных каналов
- •7.1.2. Атаки на хэш-функции и коды аутентичности
- •7.1.3. Атаки на асимметричные криптосистемы
- •7.2. Перспективные направления в криптографии
- •7.2.1. Эллиптические кривые
- •7.2.2. Эллиптические кривые над конечными полями
- •7.2.3. Алгоритм цифровой подписи ec-dsa
- •7.2.4. Квантовая криптография
- •Контрольные вопросы
- •Приложение
- •Заключение
- •Список использованной и рекомендуемой литературы
- •Учебное издание
- •Аверченков Владимир Иванович Рытов Михаил Юрьевич Шпичак Сергей Александрович
InverseSubBytes(s);
InverseShiftRows(s);
For i:= 1 to 9 do Begin AddRoundKey(S,K[i]); InverseMixColumns(S); InverseShiftRows(S);
InverseSubBytes(s) End;
AddRoundKey(S,K[0])
Развертывание ключа.
Основной ключ алгоритма состоит из 128 битов, а нам нужно произвести 10 подключей K1, ..., K10, каждый из которых включает в себя четыре 32-битовых слова. Здесь используется константа раунда RCi, вычисляющаяся по правилу
RCi = Xi (mod X 8 + X 4 + X 3 + X + 1).
Обозначим i-ый подключ через (W4i, W4i+1, W4i+2, W4i+3,). Основной ключ алгоритма делится на четыре 32-битовых слова (k0, k1, k2, k3), после чего подключи получаются в результате выполнения прведенного ниже алгоритма. В нем через RotBytes обозначена процедура циклического сдвига слова влево на 1 байт, а через SubBytes – применение S-блока из этапа шифрования к каждому байту слова.
W[0]:=K[0]; W[1]:=K[1]; W[2]:=K[2]; W[3]:=K[3];
For i:=1 to 10 do Begin T:=RotBytes(W[4*i-1]); T:=SubBytes(T); T:=TRC[i];
W[4*i]:=W[4*i-4] T;
W[4*i+1]:=W[4*i-3] W[4*i];
W[4*i+2]:=W[4*i-2] W[4*i+1];
W[4*i+3]:=W[4*i-1] W[4*i+2]; End
3.4. Принципы построения поточных шифров
Поточные системы шифрования, в отличие от блочных не обладают таким недостатком, как возможность применения криптоанализа «со словарем», так как осуществляют позначное шифрование в алфавитах небольшой мощности. Кроме того, практика показывает, что пока лишь поточные шифры обеспечивают максимальные скорости шифрования, что важно при магистральном шифровании больших потоков информации.
3.4.1. Синхронизация поточных шифрсистем
Многоалфавитные поточные шифры не распространяют ошибок при искажении отдельных знаков шифртекста, но оказываются неустойчивыми к пропускам/вставке знаков шифртекста, поскольку это приводит к неправильному расшифрованию всего текста, следующего за пропущенным/вставленным знаком. Поэтому с учетом наличия помех приходится решать проблему синхронизации процедур зашифрования и расшифрования.
По способу решения этой проблемы поточные шифрсистемы делят на синхронные и системы с самосинхронизацией.
В синхронных поточных шифрсистемах синхронизация достигается при помощи вставки в передаваемое сообщение специальных маркеров. В результате искажение не распространяется за пределы периода вставки маркеров.
Другое решение состоит в реинициализации состояний, как шифратора отправителя, так и шифратора получателя при некотором согласованном условии.
Примеры синхронных систем – регистры сдвига с обратной связью, дисковые шифраторы или шифрмашина Хагелина C-36.
Системы с самосинхронизацией чаще всего используются в режиме шифрования с обратной связью по шифртектсту (CFB), в котором текущее состояние системы зависит от некоторого числа N предыдущих знаков шифртекста. В этом случае потерянный в канале знак влияет на N последовательных состояний. После приема N правильных последовательных знаков из канала связи состояние приемного шифратора становится идентичным состоянию передающего шифратора.
3.4.2. Структура поточных шифрсистем
Поточная система шифрования состоит из двух основных блоков:
Управляющий блок (генератор ключевой последовательности - гаммы).
Шифрующий блок (реализует преобразование, накладывающее гамму на шифртекст).
Обычно управляющая гамма представляет собой псевдослучайную последовательность (ПСП), удовлетворяющую некоторой рекуррентной зависимости. В общем случае рекуррентная последовательность (на заданном множестве А) определяется формулой
x(i + m) = f(x(i), …, x(i + m - 1)), i 0,
в которой f : Am A – некоторая функция от m переменных.
Для получения рекуррентных последовательностей используются различные датчики псевдослучайных чисел, например линейные и степенные конгруэнтные генераторы.
В настоящее время большинство генераторов ПСП реализовано на основе регистров сдвига с линейными функциями обратной связи РСЛОС. Применяются также регистры сдвига с нелинейными функциями обратной связи.
Требования, предъявляемые к блокам поточной шифрсистемы, нарушение которых приводит к появлению аналитических или статистических слабостей алгоритма шифрования.
Требования к управляющему блоку:
период управляющей гаммы должен превышать максимально возможную длину открытых сообщений, подлежащих шифрованию;
статистические свойства управляющей гаммы должны приближаться к свойствам случайной равновероятной последовательности;
в управляющей гамме должны отсутствовать простые аналитические зависимости между близко расположенными знаками;
криптографический алгоритм получения знаков управляющей гаммы должен обеспечивать высокую сложность определения секретного ключа.
Требование к шифрующему блоку:
применение алгоритма шифрования должно носить универсальный характер и не зависеть от вида шифруемой информации.
Иногда выдвигается дополнительное требование:
способ построения шифрующего блока должен обеспечивать криптографическую стойкость шифра при перекрытиях управляющей гаммы, в частности при повторном использовании ключей.
Выполнение данных требований является необходимым, но не достаточным условием криптографической стойкости поточного шифра.