Автор работы: Пользователь скрыл имя, 21 Декабря 2013 в 08:04, курсовая работа
В конце шестидесятых годов корпорация IBM запустила исследовательскую
программу по компьютерной криптографии, названную Lucifer (Люцифер) и
руководимую сначала Хорстом Файстелем (Horst Feistel), а затем Уолтом
Тачменом (Walt Tuchman). Такое же имя - Lucifer - получил блочный алгоритм,
появившийся в результате этой программы в начале семидесятых годов. В
действительности существует, по меньшей мере, два различных алгоритма с
таким именем. Один из них содержит ряд пробелов в спецификации алгоритма.
Все это привело к заметной путанице.
структуру алгоритма, что облегчает криптоанализ. Для дифференциальных атак
нужно огромное количество подобранных шифртекстов, что делает эти вскрытия
не слишком практичными, но этих результатов должно хватить, чтобы
насторожить скептически настроенных пользователей. Анализ устойчивости
алгоритмов к вскрытиям «в лоб» и «встречей посередине» показал, что и этом
отношении оба варианта одинаково надежны.
Кроме перечисленных, известны и другие режимы. Можно зашифровать файл
один раз и режиме ЕСВ, затем дважды в СВС, или один раз в СВС, один в ЕСВ и
еще раз в СВС, или дважды в СВС и один раз в ЕСВ. Бихам показал, что эти
варианты отнюдь не устойчивее однократного DES при вскрытии методом
дифференциального криптоанализа с подобранным открытым текстом. Он не
оставил больших надежд и для других вариантов. Если вы собираетесь
применять тройное шифрование, используйте режимы с внешней обратной связью.
4.2.5. Варианты тройного шифрования
Прежде чем было доказано, что DES не образует группу, предлагались
различные схемы многократного шифрования. Одним из способов гарантировать,
что тройное шифрование не выродится в однократное, было изменение
эффективной длины блока. Простой метод предполагает дополнять блок битами.
С этой целью между первым и вторым, а также между вторым и третьим
шифрованиями текст дополняется строкой случайных битов длиной в полблока
(Рис. 6). Если p - это функция дополнения, то:
С = ЕK3(р(ЕК2(р(ЕК1(Р)))))
Дополнение
не только маскирует
перекрытие блоков шифрования, примерно как кирпичи в стене. Длина сообщения
увеличивается только на один блок.
Рис. 6. Тройное шифрование с
В другом методе, предложенном Карлом Эллисоном (Carl Ellison), между
тремя шифрованиями используется некоторая бесключевая функция перестановки.
Перестановка должна работать с большими блоками - 8 Кбайт или около этого,
что делает эффективный размер блока для этого варианта равным 8 Кбайт. Если
перестановка выполняется быстро, этот вариант ненамного медленнее, чем
базовое тройное шифрование.
C = EK1(T(EK2(T(EK1(P)))))
Т собирает входной (длиной до 8 Кбайт) и использует генератор
псевдослучайных чисел для его перемешивания. Изменение одного входного бита
приводит к изменению восьми байтов результата первого шифрования, до 64
байтов - результата второго шифрования и до 512 байтов - результата
третьего шифрования. Если каждый блочный алгоритм работает в режиме СВС,
как предполагалось первоначально, изменение единичного входного бита,
скорее всего, приведет к изменению всего 8-килобайтового блока, даже если
это не первый блок.
Новейший вариант этой схемы противодействует атаке на внутренний СВС,
предложенной Бихамом, добавлением процедуры отбеливания, позволяющей
замаскировать структуру открытых текстов. Эта процедура представляет собой
потоковую операцию XOR с криптографически надежным генератором
псевдослучайных чисел и обозначена ниже как R. Т мешает криптоаналитику
определить априорно ключ, использованный для шифрования любого заданного
входного байта последнего шифрования. Второе шифрование обозначено пЕ
(шифрование с циклическим использованием п различных ключей):
С = ЕК3(R(Т(пЕК2(Т(ЕК1(R))))))
Все шифрования выполняются в режиме ЕСВ, используется не меньше п+2
ключей шифрования и криптографически стойкий генератор псевдослучайных
чисел.
В этой схеме предлагалось использование алгоритма DES, однако она
работает с любым блочным алгоритмом. Мне неизвестны факты анализа
надежности этой схемы.
4.3. Удвоение длины блока
В академических кругах давно спорят на тему, достаточна ли 64-битовая
длина блока. С одной стороны, 64-битовый блок обеспечивает рассеивание
открытого текста только на 8 байтов шифртекста. С другой стороны, более
длинный блок затрудняет надежную маскировку структуры, а, кроме того,
увеличивает вероятность ошибок.
Выдвигались
предложения удваивать длину
многократного шифрования. Прежде, чем реализовывать одно из них, можно
оценить возможность вскрытия «встреча посередине». Схема Ричарда Аутбриджа
(Richard Outerbridge), показанная на рис. 7, ничуть не безопаснее тройного
шифрования с одинарным блоком и двумя ключами.
Рис. 7. Удвоение длины блока
Однако подобный прием не быстрее обычного тройного шифрования: для
шифрования двух блоков данных все так же нужно шесть шифрований.
Характеристики обычного тройного шифрования известны, а за новыми
конструкциями часто скрываются новые проблемы.
4.4. Другие схемы многократного шифрования
Недостаток тройного шифрования с двумя ключами заключается в том, что
при увеличении вдвое пространства ключей нужно выполнять три шифрования
каждого блока открытого текста. Поэтому существуют хитрые способы
объединения двух шифрований, которые удвоили бы пространство ключей.
4.4.1 Двойной режим OFB/счетчика
Этот метод использует блочный алгоритм для генерации двух гамм,
которые используются для шифрования открытого текста.
Si = EK1(Si-1( I1); I1 = I1+1
Ti = EK2(Ti-1( I2); I2 = I2+1
Ci = Pi( Si( T
где Si и Ti - внутренние переменные, а I1, и I2 - счетчики. Две копии
блочного алгоритма работают в некотором гибридном режиме OFB/счетчика, а
открытый текст, Si, и Тi объединяются операцией XOR. При этом ключи К1 и К2
независимы.
4.4.2. Режим ECB + OFB
Этот метод разработан для шифрования нескольких сообщений
фиксированной длины, например, блоков диска. Используются два ключа: К1 и
К2. Сначала для генерации маски блока нужной длины используется выбранный
алгоритм и ключ К1. Эта маска впоследствии используется повторно для
шифрования сообщений теми же ключами. Затем выполняется операция XOR над
открытым текстом сообщения и маской. Наконец результат этой операции
шифруется с помощью выбранного алгоритма и ключа К2 в режиме ЕСВ.
Этот метод анализировался только в той работе, в которой он и был
опубликован. Понятно, что он не слабее одинарного шифрования ЕСВ, и,
возможно, столь же устойчив, как и двойное применение алгоритма. Вероятно,
криптоаналитик может выполнять независимый поиск двух ключей, если получит
несколько файлов открытого текста, зашифрованных одним ключом.
Чтобы затруднить анализ идентичных блоков в одних и тех же местах
различных сообщений, можно использовать вектор инициализации (ВИ). В
отличие от использования векторов ВИ в других режимах, в данном случае
перед шифрованием ЕСВ выполняется операция XOR над каждым блоком сообщения
и вектором ВИ.
Мэтт Блейз (Matt Blaze) разработал этот режим для своей
криптографической файловой системы (Cryptographic File System - CFS) UNIX.
Это удачный режим, поскольку задержку вызывает только одно шифрование в
режиме ЕСВ - маску можно генерировать только один раз и сохранить. В CFS в
качестве блочного алгоритма используется DES.
4.4.3. Схема xDESi
DES может использоваться, как компонент ряда блочных алгоритмов с
увеличенными размерами ключей и блоков. Эти схемы никак не зависят от DES,
и в них может использоваться любой блочный алгоритм.
Первый, xDES1, представляет собой схему Любы-Ракоффа с блочным шифром
в качестве базовой функции. Размер блока вдвое больше размера блока
используемого блочного шифра, а размер ключа втрое больше, чем у
используемого блочного шифра. В каждом из трех раундов правая половина
шифруется блочным алгоритмом и одним из ключей, затем выполняется операция
XOR результата с левой
половиной, и половины
Это быстрее обычного тройного шифрования, так как тремя шифрованиями
шифруется блок, длина которого вдвое больше длины блока используемого
блочного алгоритма. Но при этом возможна простая атака «встреча
посередине», которая позволяет найти ключ с помощью таблицы размером 2k,
где k - размер ключа блочного алгоритма. Правая половина блока открытого
текста шифруется с помощью всех возможных значений К1, и выполняется
операция XOR с левой половиной открытого текста, и полученные значения
сохраняются в таблице. Затем правая половина шифртекста шифруется с помощью
всех возможных значений
K3, и выполняется поиск
совпадении пара ключей К1 и К3 - возможный вариант правого ключа. После
нескольких попыток вскрытия останется только один кандидат. Таким образом,
xDES1 нельзя назвать идеальным решением. Более того, известно вскрытие с
подобранным открытым текстом, доказывающее, что xDES1 ненамного прочнее
используемого в нем блочного алгоритма.
В xDES2 эта идея расширяется до 5-раундового алгоритма, размер блока
которого в 4, а размер ключа - в 10 раз превышают размеры блока и ключа
используемого блочного шифра. На Рис. 8. показан один этап xDES2, каждый из
четырех подблоков по размеру равен блоку используемого блочного шифра, а
все 10 ключей независимы.
Рис. 8. Один этап xDES2
Эта схема также быстрее тройного шифрования: для шифрования блока,
который в четыре раза больше блока используемого блочного шифра, нужно 10
шифрований. Однако этот метод уязвим к дифференциальному криптоанализу, и
использовать его не стоит. Такая схема остается чувствительной к
дифференциальному криптоанализу, даже если используется DES с независимыми
ключами раундов.
При i ( 3 xDESi вероятно слишком громоздок, чтобы использовать его в
качестве блочного алгоритма. Например, размер блока xDES3 в 6 раз больше,
чем у лежащего и основе блочного шифра, ключ в 21 раз длиннее, а для
шифрования блока, который в 6 раз длиннее блока, лежащего в основе блочного
шифра, нужно 21 шифрование. Тройное шифрование выполняется быстрее.
4.4.4. Пятикратное шифрование
Если тройное шифрование недостаточно надежно – к примеру, хотят
зашифровать ключи тройного шифрования еще более сильным алгоритмом -
кратность шифрования можно увеличить. Очень устойчиво к вскрытию «встреча
посередине» пятикратное шифрование. (Аргументы, аналогичные рассмотренным
для двойного шифрования, показывают, что четырехкратное шифрование по
сравнению с тройным лишь незначительно повышает надежность).
С = ЕК1(DK2(EK3(DK2(EK1(P)))))
P = DK1(EK2(DK3(EK2(DK1(C)))))
Эта конструкция обратно совместима с тройным шифрованием, если К2=К3,
и с однократным шифрованием, если К1=К2=К3. Конечно, она будет еще
надежней, если использовать пять независимых ключей.
4.5. Уменьшение длины ключа в CDMF
Этот метод разработан в IBM для продукта CDMF (Commercial Data Masking
Facility -аппаратура закрытия коммерческих данных). Он предназначен для
преобразования 56-битового ключа DES в 40-битовый ключ, разрешенный для
экспорта. Предполагается, что в первоначальный ключ DES включены биты
четности.
1. Обнуляются биты четности: биты 8, 16, 24, 32, 40, 48, 56, 64.
2. Результат этапа 1 шифруется с помощью DES ключом 0xc408b0540ba1e0ae,
результат шифрования объединяется операцией XOR с результатом этапа 1.
3. В результате этапа 2 обнуляются следующие биты: 1, 2, 3, 4, 8, 16, 17,
18, 19, 20, 24, 32, 33, 34, 35, 36, 40, 48, 49, 50, 51, 52, 56, 64.
4. Результат этапа 3 шифруется с помощью DES ключом
0xef2c041ce6382fe6.
Полученный ключ используется для шифрования сообщения.
Но не следует забывать, что этот метод укорачивает ключ и,
следовательно, ослабляет алгоритм.
4.6. Отбеливание
Отбеливанием (whitening) называют такое преобразование, при котором
выполняется операция XOR над входом блочного алгоритма и частью ключа и XOR
над выходом блочного алгоритма и другой частью ключа. Впервые этот метод
применен для варианта DESX, разработанного в RSA Data Security, Inc., а
затем (по-видимому, независимо) в Khufu и Khafre. (Необычное имя методу
дано Ривестом).
Смысл этих действий в том, чтобы помешать криптоаналитику восстановить
пары «открытый текст/
заставляет криптоаналитика угадывать не только ключ алгоритма, но и одно из
значений отбеливания. Так как операция XOR выполняется и до, и после
исполнения блочного алгоритма, этот метод считается устойчивым к атаке
«встреча посередине».
C = K3( EK1(P( K1)
P = K1( DK2(C( K3)
Если K1=K3, то
для вскрытия «в лоб»