- •Министерство образования и науки Российской Федерации
- •В.И. Аверченков, м.Ю. Рытов, с.А. Шпичак
- •Брянск Издательство бгту
- •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. Квантовая криптография
- •Контрольные вопросы
- •Приложение
- •Заключение
- •Список использованной и рекомендуемой литературы
- •Учебное издание
- •Аверченков Владимир Иванович Рытов Михаил Юрьевич Шпичак Сергей Александрович
6.2.5. Защита от атак с использованием побочных каналов
Существует целый класс атак, называемых атаками с использованием побочных каналов. Основные два вида таких атак:
Атаки измерения энергии и радиоизлучения (особенно успешны при взломе смарт-карт).
Атаки измерения времени (тайминг-атаки, дающие представления об ориентировочном размере секретного ключа).
Защита от атак первого вида криптографическими средствами не обеспечивается. Необходимо предусматривать экранирование физически при помощи конструктивных доработок.
Для борьбы с тайминг-атаками применяются два метода:
Добавление в конец каждого вычисления случайной задержки.
Стандартизация времени выполнения операции.
Следует учитывать особенности современных компиляторов по оптимизации программного кода. При компиляции программы в некоторых средах программирования компилятор удаляет все «лишние по его мнению» инструкции.
Контрольные вопросы
Какие бывают виды криптографических протоколов?
Для чего предназначен «билет» в протоколе Kerberos?
Для чего применяется протокол X.509?
Для чего нужна схема предварительного распределения ключей?
Для чего нужна схема разделения секрета?
В чем отличие между канальным и абонентским шифрованием?
Перечислите атаки с использованием побочных каналов.
7.КРИПТОАНАЛИЗ И ПЕРСПЕКТИВНЫЕ НАПРАВЛЕНИЯ В КРИПТОГРАФИИ
7.1. Основные методы криптоанализа.
7.1.1. Атаки на симметричные криптоалгоритмы.
7.1.2. Атаки на хэш-функции и коды аутентичности.
7.1.3. Атаки на асимметричные криптосистемы.
7.2. Перспективные направления в криптографии.
7.2.1. Эллиптические кривые.
7.2.2. Эллиптические кривые над конечными полями.
7.2.3. Алгоритм цифровой подписи EC-DSA.
7.2.4. Квантовая криптография.
7.1. Основные методы криптоанализа
7.1.1. Атаки на симметричные криптоалгоритмы
Существует множество типов атак на симметричные алгоритмы шифрования и хэш-функции, каждый из которых обладает своей степенью сложности:
Атака с использованием только шифрованного текста (ciphertext-only attack). Самая сложная атака, при которой злоумышленник обладает минимальным объемом информации. Цель атаки – нахождение ключа и/или открытого текста.
Атака с известным открытым текстом (known plaintext attack). Злоумышленник знает один или произвольное количество открытых текстов и соответствующих им шифртекстов. Цель атаки – нахождение ключа и/или открытых текстов, зашифрованных на том же ключе.
Атаки с избранным открытым текстом (chosen plaintext attack): автономная (offline) и оперативная (online). Злоумышленник имеет возможность сам выбирать один или произвольное количество открытых текстов и вычислять соответствующий ему шифртекст. Набор открытых текстов подготавливается заранее (автономно) или генерируется в процессе атаки (оперативно). Цель атаки – нахождение ключа.
Атака с избранным шифрованным текстом (chosen ciphertext attack). Злоумышленник имеет возможность выбирать как открытый текст (получая соответствующий ему шифрованный текст), так и шифрованный текст (с получением соответствующего ему открытого текста). Цель атаки – нахождение ключа.
Различающие атаки (distinguishing attack). Любые нетривиальные методы, позволяющие обнаружить различие между идеальным и реальным шифром. Цель атаки – дискредитация криптосистемы.
Атаки на основе коллизий. Атака на основе парадокса задачи о днях рождения (birthday attack) на хэш-функции. Двусторонняя атака или «встреча посередине» (meet-in-the-middle attack) на код аутентификации. Цель – подмена-имитация сообщений.
Отдельно различают атаки с использованием активного аппаратного воздействия на криптосистему при помощи различных излучений, вызывающих помехи и ошибки. Данные атаки возникли в связи с массовым использованием интеллектуальных электронных карточек (smart cards).
Метод прямого перебора (brute force).
Данный метод используется при атаках типа 1 и 2. В случае атаки типа 2 на основе полного шифртекста или его фрагмента и соответствующего ему открытого текста осуществляют последовательное расшифрование на всем множестве возможных ключей до совпадения открытого текста. При этом длина известного фрагмента открытого текста должна превышать расстояние единственности. В случае атаки типа 1 при неизвестном открытом тексте вычислительная сложность метода увеличивается, так как необходимо введение дополнительного критерия на «осмысленность» открытого текста.
Метод прямого перебора возможен только при известном алгоритме шифрования и алгоритм, лежащий в его основе, является экспоненциальным.
Стойкость криптосистемы по отношению к методу прямого перебора полностью определяется мощностью ключевого пространства |K| или энтропией ключа (при переборе со словарем). Минимальные требования к энтропии ключа современных симметричных криптосистем – 128 бит. В настоящее время рекомендуется использовать 256-битовые ключи.
Таблица 13. Мощностные характеристики пространства ключей.
Криптосистема |
|K| |
Среднее время перебора для INTEL ASCI RED |
DES |
7,21·1016 |
9,4 ч |
IDEA |
3,4·1038 |
1,3·1021 лет |
ГОСТ 28147-89 |
1,16·1077 |
1,7·1058 лет |
Методы криптоанализа с использованием теории статистических решений.
Цель статистического криптоанализа – получение открытого текста или некоторой вероятностной информации о нем. Два основных метода статистического криптоанализа:
Метод максимального правдоподобия (метод частотного анализа) базируется на логарифмической функции правдоподобия, которая строится на таблице частотных характеристик предполагаемого открытого текста и шифртекста.
Байесовский метод основан на предположении о случайном ключе с известным распределением вероятностей, функции потерь, функционала риска и Байесовской оценки, минимизирующей функционал риска.
Анализ поточных криптосистем.
При проведении криптоанализа поточных алгоритмов решаются следующее задачи:
Распознавание ЛРП:
Если s0,s1,… - линейная рекуррентная последовательность с минимальным многочленом m(λ) степени n, то ганкелев определитель
равен 0 для всех k n + 1 и всех t 0. С другой стороны, если s0,s1,… - последовательность независимых случайных величин 0 < p(st = 0) < 1, то
при T → ∞ для любого фиксированного натурального k.
Оценка параметров ЛРП.
Производится на основе алгоритма Берленкемпа-Мэсси, который позволяет по 2k-отрезку s0,…,s2k-1 линейной рекуррентной последовательности определить минимальный многочлен m(λ) если степень последнего не превышает k.
Определение начального состояния ЛРП.
Производится на основе опробования различных начальных векторов S0 и сравнения результатов генерации s0,s1,… с известными фрагментами перехваченной искаженной последовательности (шифртекста). Задача упрощается при малом количестве ненулевых коэффициентов характеристического многочлена, что свойственно часто употребляемым прореженным многочленам.
4. Корреляционный анализ (применяется для комбинированных генераторов различных типов).
Анализ блочных криптосистем.
На сегодняшний день двумя самыми известными методами анализа блочных криптосистем являются дифференциальный (разностный) и линейный криптоанализ. Первый реализует атаку типа 3, второй атаку типа 2.
Дифференциальный криптоанализ.
Первые открытые упоминания в литературе с 1990 года в работах Мерфи, Бихема и Шамира. Методика анализа строится индивидуально для каждого алгоритма и основана на знании пар сообщений m и m’ для которых известны соответствующие шифртексты Ek(m) и Ek(m’) и XOR-разности между ними с рассмотрением разности между промежуточными частями блоков сообщений.
Для двухветвевой сети Файстеля Δmi = mi m’i. При этом для каждого раунда в отдельности справедливо следующее:
Δmi+1 = mi+1 m’i+1 = Δmi-1 [f(mi,Ki) f(m’i,Ki)]
Предполагается, что для многих пар входных данных функции f, имеющих одну и ту же XOR-разность, при использовании одного и того же подключа одинаковой оказывается и XOR-разность для соответствующих выходных пар. Формально говорят, что X влечет Y с вероятностью р, если для относительной доли р входных пар с XOR-разностью Х для соответствующих выходных пар XOR-разность оказывается равной Y. Предположим теперь, что имеется ряд значений X, которые с высокой вероятностью влекут определенные разности выходных значений. Тогда если нам с большой вероятностью известны значения Δmi-1 и Δmi то мы с большой вероятностью можем определить и Δmi-1. А если удастся найти достаточно много таких значений разности, становится возможным определить подключ, используемый функцией f.
Общая стратегия дифференциального криптоанализа основывается на представленной выше методике для каждого раунда шифрования в отдельности. Процедура начинается с рассмотрения двух сообщений открытого текста m и m' с заданной разностью и имеет своей целью получение вероятностных оценок разностей промежуточных результатов последовательно раунд за раундом с тем, чтобы определить вероятностную оценку для разности соответствующих шифрованных текстов. На самом деле получаются вероятностные оценки для двух 32-битовых половинок сообщения (m17 || m16). После этого выполняется шифрование m и m’, чтобы определить реальные разности при неизвестном ключе, а затем , сравнить результат с вычисленными вероятностными оценками. Если результаты совпадают, т.е.
Ек(m) Ек(m’) = (Δm17||m16),
то можно ожидать, что вероятностные оценки для всех раундов соответствуют реальности. Это позволяет сделать определенные заключения о некоторых битах ключа. Чтобы определить все биты ключа, процедуру приходится повторять много раз.
Линейный криптоанализ.
Более новым направлением в криптоанализе является линейный криптоанализ. Метод линейного криптоанализа заключается в построении линейной аппроксимации преобразования, выполняемого в ходе шифрования DES. Данный метод позволяет найти ключ DES при наличии 247 известных фрагментов открытого текста, тогда как для дифференциального криптоанализа требуется 247 фрагментов избранного открытого текста.
Пусть для шифра с n-битовыми блоками открытого и шифрованного текста и m-битовым ключом блок открытого текста будет обозначен Р[1],...,Р[n], блок шифрованного текста - С[1],..., С[n], а ключ - К[1],..., K[n]. Тогда определим
A[i,j,…,k] = A[i] A[j] ...A[k].
Целью линейного криптоанализа является нахождение подходящего линейного уравнения вида
Р[α1, α2„..., αa] С[β1, β2,..., βb] = К[γ1, γ2,..., γc],
выполняющегося с вероятностью р 0,5 (где х = 0 или 1, 1 ≤ а, b ≤ n, 1 ≤ с ≤ т, а α, β и γ представляют фиксированные битовые позиции в блоках). Чем больше значение р отклоняется от 0,5, тем более подходящим считается уравнение. После этого вычисляются значения левой части данного уравнения для большого числа пар соответствующих фрагментов открытого и шифрованного текста. Если результат оказывается равным 0 более чем в половине случаев, полагают, что K[γ1, γ2,..., γc] = 0. Если же в большинстве случаев получается 1, полагают, что K[γ1, γ2,..., γc] = 1. Достаточное количество полученных таким образом равенств образуют систему, решением которой определяется ключ. Ввиду линейности получаемых уравнений, проблему можно решать для каждого раунда шифрования в отдельности, а полученные результаты затем объединить.