Тройное шифроваине
Тройное шифрование с двумя ключами

В более интересном методе, предложенном Тачменом , блок обрабатывается три раза с помощью двух ключей: первым ключом, вторым ключом и снова первым ключом. Он предлагает, чтобы отправитель сначала шифровал первым ключом, затем дешифрировал вторым, и окончательно шифровал первым ключом . Получатель расшифровывает первым ключом, затем шифрует вторым и, наконец, дешифрирует первым .

Иногда такой режим называют шифрование-дешифрирование-шифрование (encrypt-decrypt-encrypt, EDE) . Если блочный алгоритм использует n-битовый ключ, то длина ключа описанной схемы составляет 2n бит. Любопытный вариант схемы шифрование-дешифрирование-шифрование был разработан в IBM для совместимости с существующими реализациями алгоритма: задание двух одинаковых ключей эквивалентно одинарному шифрованию, этим ключом. Схема шифрование-дешифрирование-шифрование сама по себе не обладает никакой безопасностью, но этот режим был использован для улучшения алгоритма DES в стандартах Х 9.17 и ISO 8732 .
K1 и К2 чередуются для предотвращения описанного выше вскрытия "встреча посередине". Если  , то криптоаналитик для любого возможного ki может заранее вычислить и затем выполнить вскрытие. Для этого потребуется толькошифрований.
Тройное шифрование с двумя ключами устойчиво к такому вскрытию. Но Меркл и Хеллман разработали другой способ размена памяти на время, который позволяет взломать этот метод шифрования задействий, используяблоков памяти.
Для каждого возможного К2 расшифруйте 0 и сохраните результат. Затем расшифруйте 0 для каждого возможного K1, чтобы получить Р. Выполните тройное шифрование Р, чтобы получить С, и затем расшифруйте С ключом K1 . Если полученное значение совпадает с значением (хранящемся в памяти), полученным при дешифрировании 0 ключом К2, то пара K1 К2 является возможным результатом поиска. Проверьте, так ли это. Если нет, продолжайте поиск.
Выполнение этого вскрытия с выбранным открытым текстом требует огромного объема памяти . Понадобитсявремени и памяти, а такжевыбранных открытых текстов. Вскрытие не очень практично, но все же чувствительность к нему является слабостью алгоритма.
Пауль ван Оорсчот (Paul van Oorschot) и Майкл Винер (Michael Wiener) преобразовали это вскрытие ко вскрытию с известным открытым текстом, для которого нужно р известных открытых текстов. В примере предполагается, что используется режим EDE.

где С - это шифротекст, полученный по известному открытому тексту. 
(3) Для каждого возможного К2 найти в таблице элементы с совпадающим вторым промежуточным значение b значении, равном а
(1)	Предположить первое промежуточное значения а.
(2)	Используя известный открытый текст, свести в таблицу для каждого возможного ki второе промежуточное значение Ь, при первом промежуточном:

(4) Вероятность успеха равно р/т, где р - число известных открытых текстов, а т - размер блока. Если совпадения не обнаружены, выберите другое а и начните сначала.
Вскрытие требуетвремени и р - памяти. Для DES это равно 2120/р . Для р, больших 256, это вскрытие быстрее, чем исчерпывающий поиск.
Тройное шифрование с тремя ключами
Если вы собираетесь использовать тройное шифрование, я рекомендую три различных ключа. Общая длина ключа больше, но хранение ключа обычно не является проблемой. Биты дешевы.

Для наилучшего вскрытия с разменом памяти на время, которым является "встреча посередине", потребуется  действий иблоков памяти [1075]. Тройное шифрование с тремя независимыми ключами безопасно настолько, насколько на первый взгляд кажется безопасным двойное шифрование .
Тройное шифрование с минимальным ключом (ТЕМК)
Существует безопасный способ использовать тройное шифрование с двумя ключами, противостоящий описанному вскрытию и называемый Тройным шифрованием с минимальным ключом (Triple Encryption with Minimum Key, ТЕМК) . Фокус в той, чтобы получить три ключа из: X1 иХ2.

T, Т2 и Т3 представляют собой константы, которые необязательно хранить в секрете. Эта схема гарантирует, что для любой конкретной пары ключей наилучшим будет вскрытие с известным открытым текстом .
Режимы тройного шифрования
Недостаточно просто определить тройное шифрование, нужно выбрать один из способов его использования . Решение зависит от требуемых безопасности и эффективности. Вот два возможных режима тройного шифрования:

 являются IV. Внешний СВС: Файл троекратно шифруется в режиме СВС. Для этого нужен один IV.

Внутренний СВС: Файл три раза шифруется в режиме СВС. Для этого нужно три различных IV.

Рис. 15-1. Тройное шифрование в режиме СВС.
Для обоих режимов нужно больше ресурсов, чем для однократного шифрования: больше аппаратуры или больше времени. Однако при трех шифрующих микросхемах производительность внутреннего СВС не меньше, чем при однократном шифровании. Так как три шифрования СВС независимы, три микросхемы могут быть загружены постоянно, подавая свой выход себе на вход.
Напротив во внешнем СВС обратная связь находится снаружи по отношению к трем шифрованиям. Это означает, что даже с тремя микросхемами производительность будет равна только одной трети производительн о-сти при однократном шифровании. Чтобы получить ту же производительность для внешнего СВС, потребуется чередование IV:

В этом случае С0, C1 и C2 являются IV. Это не поможет при программной реализации, разве только при и с-пользовании параллельного компьютера.
К сожалению менее сложный режим является также и менее безопасным . Бихам проанализировал различные режимы по отношению к дифференциальному криптоанализу и обнаружил, что безопасность внутреннего СВС по сравнению с однократным шифрованием увеличивается незначительно. Если рассматривать тройное шифрование как единый большой алгоритм, то внутренние обратные связи позволяют вводить внешнюю и известную информацию внутрь алгоритма, что облегчает криптоанализ . Для дифференциальных вскрытий нужно огромное количество выбранных шифротекстов, что делает эти вскрытия не слишком практичными, но этих результатов должно хватить, чтобы насторожить параноидальных пользователей . Анализ устойчивости алгоритмов к вскрытиям грубой силой и "встречей посередине" показал, что оба варианта одинаково безопасны .
Кроме этих существуют и другие режимы. Можно зашифровать файл один раз в режиме ЕСВ, затем дважды в СВС, или один раз в СВС, один в ЕСВ и еще раз в СВС, или дважды в СВС и один раз в ЕСВ. Бихам показал, что эти варианты не безопаснее, чем однократный DES, против вскрытия дифференциальным криптоанализом с выбранным открытым текстом. Он не оставил больших надежд и для других вариантов. Если вы собираетесь применять тройное шифрование, используйте внешнюю обратную связь.
Варианты тройного шифрования
Прежде, чем появились доказательства того, что DES не образует группу, для многократного шифрования предлагались различные схемы. Одним из способов обеспечить то, что тройное шифрование не выродится в однократное, было изменение эффективной дины блока. Простым методом является добавление бита-заполнителя. Между первым и вторым, а также между вторым и третьим случайных битов (см. Рис. 15.2). Если РР - это функция дополнения, то:  шифрованиями текст дополняется 

Рис. 15-2. Тройное шифрование с заполнением.
Это дополнение не только разрушает шаблоны, но также обеспечивает перекрытие блоков шифрования, как кирпичей в стене. К длине сообщения добавляется только один блок.
Другой метод, предложенный Карлом Эллисоном (Carl Ellison), использует некоторую функцию независ и-мой от ключа перестановки между тремя шифрованиями. Перестановка должна работать с большими блоками -8 Кбайт или около этого, что делает эффективный размер бока для этого варианта равным 8 Кбайтам . При условии, что перестановка выполняется быстро, этот вариант ненамного медленнее, чем базовое тройное шифрование.

Т собирает входные блоки (до 8 Кбайт в длину) и использует генератор псевдослучайных чисел для их перемешивания. Изменение одного бита входа приводит к изменению 8 байтов результата первого шифрования, к изменению до 64 байтов результата второго шифрования и к изменению до 512 байтов результата третьего шифрования. Если каждый блочный алгоритм работает в режиме СВС, как было первоначально предложено, то изменение единичного бита входа скорее всего приведет к изменению всего 8-килобайтового блока, даже если этот блок не является первым.
Самый последний вариант этой схемы отвечает на вскрытие внутреннего СВС, выполненное Бихамом, добавлением процедуры отбеливания, чтобы замаскировать структуру открытых текстов. Эта процедура представляет собой потоковую операцию XOR с криптографически безопасным генератором псевдослучайных чисел и ниже обозначена как R. T мешает криптоаналитику определить a priori, какой ключ используется для шифрования любого заданного байта входа последнего шифрования. Второе шифрование обозначено пЕ (шифрование с циклическим использованием n различных ключей):

Все шифрования выполняются в режиме ЕСВ, используется не меньше n+2 ключей шифрования и криптографически безопасный генератор псевдослучайных чисел.
Эта схема была предложена для использования вместе с DES, но она работает с любым блочным алгоритмом. Результаты криптоанализа такой схемы мне неизвестны.