
- •230100 «Информатика
- •Лекция 1. Основные понятия
- •1.1 Терминология
- •1.2 Стеганография
- •Лекция 2. Докомпьютерные шифры
- •2.1 Подстановочные и перестановочные шифры
- •1.4 Простое xor
- •1.5 Одноразовые блокноты
- •Лекция 3. Криптографические протоколы
- •1 Введение в протоколы
- •2.2 Передача информации с использованием симметричной криптографии
- •2.3 Однонаправленные функции
- •2.4 Однонаправленные хэш-функции
- •2.5 Передача информации с использованием криптографии с открытыми ключами
- •Лекция 4. Цифровые подписи
- •1. Подпись документа с использованием симметричных криптосистем и посредника
- •2.7 Цифровые подписи и шифрование
- •2.8. Генерация случайных и псевдослучайных последовательностей
- •Лекция 5. Основные протоколы
- •1 Обмен ключами
- •Лекция 6. Алгоритмы аутентификации пользователей (Удостоверение подлинности)
- •3.3 Удостоверение подлинности и обмен ключами
- •3.4 Формальный анализ протоколов проверки подлинности и обмена ключами
- •Лекция 7. Цифровые подписи.
- •1. Неотрицаемые цифровые подписи
- •4.4 Подписи уполномоченного свидетеля
- •4.5 Подписи по доверенности
- •4.6 Групповые подписи
- •4.7 Подписи с обнаружением подделки
- •Лекция 8. Длина ключа
- •1 Длина симметричного ключа
- •7.2 Длина открытого ключа
- •7.3 Сравнение длин симметричных и открытых ключей
- •7.4 Вскрытие в день рождения против однонаправленных хэш-функций
- •7.5 Каков должны быть длина ключа?
- •Лекция 9. Управление ключами
- •1 Генерация ключей
- •8.2 Нелинейные пространства ключей
- •8.3 Передача ключей
- •8.4 Проверка ключей
- •8.5 Использование ключей
- •8.6 Обновление ключей
- •8.7 Хранение ключей
- •8.8 Резервные ключи
- •8.9 Скомпрометированные ключи
- •8.10 Время жизни ключей
- •8.11 Разрушение ключей
- •8.12 Управление открытыми ключами
- •Лекция 10. Типы алгоритмов и криптографические режимы
- •9.1 Режим электронной шифровальной книги
- •9.2 Повтор блока
- •9.3 Режим сцепления блоков шифра
- •9.4 Потоковые шифры
- •9.5 Самосинхронизирующиеся потоковые шифры
- •9.6 Режим обратной связи по шифру
- •9.7 Синхронные потоковые шифры
- •9.8 Режим выходной обратной связи
- •9.9 Режим счетчика
- •9.10 Другие режимы блочных шифров
- •Лекции 12. Математические основы
- •11.1 Теория информации
- •Энтропия и неопределенность
- •Норма языка
- •Безопасность криптосистемы
- •Расстояние уникальности
- •Практическое использование теории информации
- •Путаница и диффузия
- •11.2 Теория сложности
- •Сложность алгоритмов
- •Сложность проблем
- •11.3 Теория чисел
- •Арифметика вычетов
- •Простые числа
- •Наибольший общий делитель
- •Обратные значения по модулю
- •Решение для коэффициентов
- •Малая теорема Ферма
- •Функция Эйлера
- •Китайская теорема об остатках
- •Квадратичные вычеты
- •Символ Лежандра
- •Символ Якоби
- •Целые числа Блюма
- •Генераторы
- •Вычисление в поле Галуа
- •11.4 Разложение на множители
- •Квадратные корни по модулю п
- •11.5 Генерация простого числа
- •Практические соображения
- •Сильные простые числа
- •11.6 Дискретные логарифмы в конечном поле
- •Вычисление дискретных логарифмов в конечной группе
- •Лекция 13. Стандарт шифрования данных des (Data Encryption Standard)
- •12.1 Введение
- •Разработка стандарта
- •Принятие стандарта
- •Проверка и сертификация оборудования des
- •12.2 Описание des
- •Начальная перестановка
- •Преобразования ключа
- •Перестановка с расширением
- •Подстановка с помощью s-блоков
- •Перестановка с помощью р-блоков
- •Заключительная перестановка
- •Дешифрирование des
- •Режимы des
- •Аппаратные и программные реализации des
- •15.1 Двойное шифрование
- •15.3 Удвоение длины блока
- •15.4 Другие схемы многократного шифрования
- •15.5 Уменьшение длины ключа в cdmf
- •15.6 Отбеливание
- •15.7 Многократное последовательное использование блочных алгоритмов
- •15.8 Объединение нескольких блочных алгоритмов
- •16.1 Линейные конгруэнтные генераторы
- •Константы для линейных конгруэнтных генераторов
- •16.2 Сдвиговые регистры с линейной обратной связью
- •16.3 Проектирование и анализ потоковых шифров
- •16.4 Потоковые шифры на базе lfsr
- •18.1 Основы
- •18.7 Алгоритм безопасного хэширования (Secure Hash Algorithm, sha)
- •Лекция 17. Алгоритмы с открытыми ключами
- •19.2 Алгоритмы рюкзака
- •Иностранные патенты на алгоритм рюкзака Меркла-Хеллмана
- •Шифрование rsa
- •Скорости rsa для различных длин модулей при 8-битовом открытом ключе (на sparc II)
- •Лекция 19. Безопасность вычислительных сетей Атакуемые сетевые компоненты
- •Уровни сетевых атак согласно модели osi
15.3 Удвоение длины блока
В академическом сообществе давно спорят на тему, достаточна ли 64-битовая длина блока. С одной стороны 64-битовый блок обеспечивает диффузию открытого текста только в 8 байтах шифротекста. С другой стороны более длинный блок затрудняет безопасную маскировку структуры, кроме того, больше возможностей ошибиться.
Существуют предложения удваивать длину блока алгоритма с помощью многократного шифрования [299]. Прежде, чем реализовывать одно из них, оцените возможность вскрытия "встреча посередине". Схема Ричарда Аутбриджа (Richard Outerbridge) [300], показанная на 12-й, не более безопасна, чем тройное шифрование с одинарным блоком и двумя ключами [859].
Рис. 15-3. Удвоение длины блока.
Однако я не рекомендую использовать подобный прием. Он не быстрее обычного тройного шифрования: для шифрования двух блоков данных все также нужно шесть шифрований. Характеристики обычного тройного шифрования известны, а за новыми конструкциями часто прячутся новые проблемы.
15.4 Другие схемы многократного шифрования
Проблемой тройного шифрования с двумя ключами является то, что для увеличения вдвое пространства ключей нужно выполнять три шифрования каждого блока открытого текста. Разве не здорово было бы найти какой-нибудь хитрый способ объединить два шифрования, которые удвоили бы пространство ключей?
Двойной OFB/счетчик
Этот метод использует блочный алгоритм для генерации двух потоков ключей, которые используются для шифрования открытого текста.
Si=EK1 (Si-1I1);I1=I1+1
Ti=EK2 (Ti-1I2);I2=I2+1
C1=PiSiTi
Si и Ti - внутренние переменные, а I1 и I2 - счетчики. Две копии блочного алгоритма работают в некотором гибридном режиме OFB/счетчик, а открытый текст, Si и Ti объединяются с помощью XOR. Ключи К1 и К2 независимы. Результаты криптоанализа этого варианта мне неизвестны.
ЕСВ + OFB
Этот метод был разработан для шифрования нескольких сообщений фиксированной длины, например, блоков диска [186, 188]. Используются два ключа: К1 и К2. Сначала для генерации маски для блока нужной длины используется выбранный алгоритм и ключ. Эта маска будет использована повторно для шифрования сообщений теми же ключами. Затем выполняется XOR открытого текста сообщения и маски. Наконец результат XOR шифруется с помощью выбранного алгоритма и ключа Кг в режиме ЕСВ.
Анализ этого метода проводился только в той работе, в которой он и был опубликован . Понятно, что он не слабее одинарного шифрования ЕСВ и возможно также силен, как и двойное применение алгоритма. Вероятно, криптоаналитик может выполнять поиск ключей независимо, если он получит несколько открытых текстов файлов, зашифрованных одним ключом.
Чтобы затруднить анализ идентичных блоков в одних и тех же местах различных сообщений, можно использовать IV. В отличии от использования IV в других режимах в данном случае перед шифрованием ЕСВ выполняется XOR каждого блока сообщения с IV.
Мэтт Блэйз (Matt Blaze) разработал этот режим для своей UNIX Cryptographic File System (CFS, криптографическая файловая система). Это хороший режим, поскольку скрытым состоянием является только одно шифрование в режиме ЕСВ, маска может быть сгенерирована только один раз и сохранена. В CFS в качестве блочного алгоритма используется DES.
xDESi
В [1644, 1645] DES используется как компонент ряда блочных алгоритмов с увеличенными размерами ключей и блоков. Эти схемы никак не зависят от DES, и в них может использоваться любой блочный алгоритм.
Первый, xDESi, представляет собой просто схему Luby-Rackoff с блочным шифром в качестве базовой функции (см. раздел 14.11). Размер блока в два раза больше размера блока используемого блочного фильтра, а размер ключа в три раза больше, чем у используемого блочного фильтра. В каждом из 3 этапов правая половина шифруется блочным алгоритмом и одним из ключей, затем выполняется XOR результата и левой половины, и половины переставляются.
Это быстрее, чем обычное тройное шифрование, так как тремя шифрованиями шифруется блок, длина которого в два раза больше длины блока используемого блочного алгоритма. Но при этом существует простое вскрытие "встреча посередине", которое позволяет найти ключ с помощью таблицы размером 2k, где k - это размер ключа блочного алгоритма. Правая половина блока открытого текста шифруется с помощью всех возможных значений К1, выполняется XOR с левой половиной открытого текста и полученные значения сохраняются в таблице. Затем правая половина шифротекста шифруется с помощью всех возможных значений К3, и выполняется поиск совпадений в таблице. При совпадении пара ключей К1 и К3 - возможный вариант правого ключа. После нескольких повторений вскрытия останется только один кандидат. Таким образом, xDES1 не является идеальным решением. Даже хуже, существует вскрытие с выбранным открытым текстом, доказывающее, что xDES1 не намного сильнее используемого в нем блочного алгоритма [858].
В xDES2 эта идея расширяется до 5-этапного алгоритма, размер блока которого в 4 раза, а размер ключа в 10 раз превышают размеры блока и ключа используемого блочного шифра. На 1 lth показан один этап xDES2, каждый из четырех подблоков по размеру равен блоку используемого блочного шифра, а все 10 ключей независимы.
Рис. 15-4. Один 3TanxDES .
К тому же, эта схема быстрее, чем тройное шифрование: для шифрования блока, который в четыре раза больше блока используемого блочного шифра, нужно 10 шифрований. Однако этот метод чувствителен к дифференциальному криптоанализу [858] и использовать его не стоит. Такая схема остается чувствительной к дифференциальному криптоанализу, даже если используется DES с независимыми ключами этапов.
Для i ≥ 3 xDESi вероятно слишком велик, чтобы использовать его в качестве блочного алгоритма. Например, размер блока для xDES3 в 6 раз больше, чем у лежащего в основе блочного шифра, ключ в 21 раз длиннее, а для шифрования блока, который в 6 раз длиннее блока лежащего в основе блочного шифра, нужно 21 шифрование .
Это медленнее, чем тройное шифрование.
Пятикратное шифрование
Если тройное шифрование недостаточно безопасно - может быть, вам нужно шифровать ключи тройного шифрования, используя еще более сильный алгоритм - то кратность шифрования можно увеличить. Очень устойчиво к вскрытию "встреча посередине" пятикратное шифрование. (Аргументы, аналогичные рассмотренным для двойного шифрования, показывают, что четырехкратное шифрование по сравнению с тройным лишь незначительно повышает надежность.)
C = EK1(DK2(EK3(DK2(EK1(P)))))
P = DK1(EK2(DK3(EK2(DK1(C)))))
Эта схема обратно совместима с тройным шифрованием, если К1= К2, и с однократным шифрованием, если К1= К2 = К3. Конечно, она будет еще надежней, если использовать пять независимых ключей.