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

Симметричные алгоритмы шифрования

Алгоритм DES

Алгоритм DES (Data Encryption Standard) - федеральный стандарт США, на котором основан международный стандарт ISO 8372-87. DES был поддержан Американским национальным институтом стандартов (ANSI) и рекомендован для применения Американской ассоциацией банков (ABA). DES предусматривает 4 режима работы:

  • ECB (Electronic Codebook) электронная кодовая книга;
  • CBC (Cipher Block Chaining) цепочка блоков;
  • CFB (Cipher Feedback) обратная связь по шифртексту;
  • OFB (Output Feedback) обратная связь по выходу.

ECB - Electronic Codebook (электронная кодовая книга) - каждый блок из 64 битов незашифрованного текста шифруется независимо от остальных блоков, с применением одного и того же ключа шифрования. Типичные приложения - безопасная передача одиночных значений (например, криптографического ключа). Данный режим является самым простым режимом, при котором незашифрованный текст обрабатывается последовательно, блок за блоком. Каждый блок шифруется, используя один и тот же ключ. Если сообщение длиннее, чем длина блока соответствующего алгоритма, то оно разбивается на блоки соответствующей длины, причем последний блок дополняется в случае необходимости фиксированными значениями. При использовании данного режима одинаковые незашифрованные блоки будут преобразованы в одинаковые зашифрованные блоки.

ECB-режим идеален для небольшого количества данных, например, для шифрования ключа сессии.

Существенным недостатком ECB является то, что один и тот же блок незашифрованного текста, появляющийся более одного раза в сообщении, всегда имеет один и тот же зашифрованный вид. Вследствие этого для больших сообщений ECB режим считается небезопасным. Если сообщение имеет много одинаковых блоков, то при криптоанализе данная закономерность будет обнаружена.

CBC - Cipher Block Chaining (цепочка блоков) - вход криптографического алгоритма является результатом применения операции XOR к следующему блоку незашифрованного текста и предыдущему блоку зашифрованного текста. Типичные приложения - общая блокоориентированная передача, аутентификация.

Для получения первого блока зашифрованного сообщения используется инициализационный вектор (Co), для которого выполняется операция XOR с первым блоком незашифрованного сообщения. Co должен быть известен как отправителю, так и получателю. Для максимальной безопасности Co должен быть защищен так же, как ключ.

 

Рис. 1. Схема режима CBC.

CFB - Cipher Feedback (обратная связь по шифртексту). Как и в режиме CBC, используется операция XOR для предыдущего блока зашифрованного текста и следующего блока незашифрованного текста. Таким образом, любой блок зашифрованного текста является функцией от всего предыдущего незашифрованного текста. Входом функции шифрования является регистр сдвига, который первоначально устанавливается в инициализационный вектор Co. Для выхода алгоритма выполняется операция XOR с незашифрованным текстом M1 для получения первого блока зашифрованного текста С1.

Рис. 2. Схема режима CFB.

OFB - Output Feedback (обратная связь по выходу) - аналогичен CFB, за исключением того, что на вход алгоритма при шифровании следующего блока подается результат шифрования предыдущего блока; только после этого выполняется операция XOR с незашифрованным текстом. Типичные приложения - потокоориентированная передача по зашумленному каналу (например, спутниковая связь).

Основное преимущество режима OFB состоит в том, что если при передаче произошла ошибка, то она не распространяется на следующие зашифрованные блоки, и тем самым сохраняется возможность дешифрования последующих блоков. Например, если появляется ошибочный бит в Сi, то это приведет только к невозможности дешифрования этого блока и получения Mi. Дальнейшая последовательность блоков будет расшифрована корректно. При использовании режима CFB Сi подается в качестве входа в регистр и, следовательно, является причиной последующего искажения потока.

Рис. 3. Схема режима OFB.

Недостаток OFB в том, что он более уязвим к атакам модификации потока сообщений, чем CFB.

DES является классической сетью Фейстеля с двумя ветвями. Данные шифруются 64-битными блоками, используя 56-битный ключ. Алгоритм преобразует за несколько раундов 64-битный вход в 64-битный выход. Процесс шифрования состоит из четырех этапов. На первом из них выполняется начальная перестановка (IP) 64-битного исходного текста (забеливание), во время которой биты переупорядочиваются в соответствии со

 

Рис. 4. Общая схема DES

стандартной таблицей. Следующий этап состоит из 16 раундов одной и той же функции, которая использует операции сдвига и подстановки. На третьем этапе левая и правая половины выхода последней (16-й) итерации меняются местами. Наконец, на четвертом этапе выполняется перестановка IP-1 результата, полученного на третьем этапе. Перестановка IP-1 инверсна начальной перестановке.

Рис.5. Схема раунда алгоритма DES.

В алгоритме DES существует 8, так называемых, S-боксов. На вход каждого блока Si поступает 6 бит, а на выходе получается 4 бита. 6 бит на входе получается за счет расширения тетрад путем добавления к ним добавочных - начального и конечного битов от соседних соответствующих тетрад. Затем то значение складывается по модулю два со значением Ki, полученным на основании ключа. Этот 48-битовый результат подается на S-боксы. Первый и шестой бит на входе Si отвечают за выбор соответствующей строки в соответствующей таблице Si, а средние четыре бита – за выбор колонки. На их пересечении находится выходное значение соответствующего Si. Например, если Siвх = 0 1010 1, тогда значение строки будет 01(1), значение столбца – 1010(10), Siвых =1100(12) в соответствии с приведенной ниже таблицей.

 

Так как длина ключа равна 56 битам, существует 256 возможных ключей. На сегодня такая длина ключа недостаточна, поскольку допускает успешное применение лобовых атак. Простейший способ увеличить длину ключа состоит в повторном применении DES с двумя разными ключами. Используя незашифрованное сообщение P и два ключа K1 и K2, зашифрованное сообщение С можно получить следующим образом:

C = Ek2 [Ek1 [P]]

Для дешифрования требуется, чтобы два ключа применялись в обратном порядке:

P = Dk1 [Dk2 [C]]

В этом случае длина ключа равна 56 * 2 = 112 бит.

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

В этом случае выполняется последовательность зашифрование-расшифрование-зашифрование (EDE):

C = EK1 [DK2 [EK1 [P]]]


Рис. 6. Шифрование тройным DES

Не имеет большого значения, что используется на второй стадии: шифрование или дешифрование. В случае использования дешифрования существует только то преимущество, что можно тройной DES свести к обычному одиночному DES, используя K1 = K2:

C = EK1 [DK1 [EK1 [P]]] = EK1 [P]

Тройной DES является достаточно популярной альтернативой DES и используется при управлении ключами в стандартах ANSI X9.17 и ISO 8732 и в PEM (Privacy Enhanced Mail). Известных криптографических атак на тройной DES не существует. Цена подбора ключа в тройном DES равна 2112.

Алгоритм Blowfish

Blowfish является сетью Фейстеля, у которой количество итераций равно 16. Каждая итерация состоит из перестановки, зависящей от ключа, и подстановки, зависящей от ключа и данных. Операциями являются XOR и сложение 32-битных слов. Длина блока равна 64 битам, ключ может иметь любую длину в пределах 448 бит. Хотя перед началом любого шифрования выполняется сложная фаза инициализации, само шифрование данных выполняется достаточно быстро.

Алгоритм предназначен в основном для приложений, в которых ключ меняется нечасто, к тому же существует фаза начального рукопожатия, во время которой происходит аутентификация сторон и согласование общих параметров и секретов. Классическим примером подобных приложений является сетевое взаимодействие. При реализации на 32-битных микропроцессорах с большим кэшем данных Blowfish значительно быстрее DES.

Алгоритм состоит из двух частей: расширение ключа и шифрование данных. Расширение ключа преобразует ключ длиной 448 бит в несколько массивов подключей общей длиной 4168 байт.

Blowfish использует большое количество подключей. Эти ключи должны быть вычислены заранее, до начала любого шифрования или дешифрования данных.

Алгоритм IDEA

IDEA (International Data Encryption Algorithm) является блочным симметричным алгоритмом шифрования, разработанным Сюдзя Лай (Xuejia Lai) и Джеймсом Массей (James Massey) из швейцарского федерального института технологий. Первоначальная версия была опубликована в 1990 году. Пересмотренная версия алгоритма, усиленная средствами защиты от дифференциальных криптографических атак, была представлена в 1991 году и подробно описана в 1992 году.

IDEA является одним из нескольких симметричных криптографических алгоритмов, которыми первоначально предполагалось заменить DES. IDEA является блочным алгоритмом, который использует 128-битовый ключ для шифрования данных блоками по 64 бита. Целью разработки IDEA было создание относительно стойкого криптографического алгоритма с достаточно простой реализацией.

Алгоритм ГОСТ 28147

В нашей стране в качестве стандарта используется технология, описанная в ГОСТе 28147-89 "Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования". Этот ГОСТ был принят в 1989 году и с тех пор не изменялся. Алгоритм шифрования был разработан в КГБ в конце 70-х годов, однако, он создавался с достаточно большим "запасом прочности". По этому параметру он на порядок превосходил американский DES, который сначала заменили на тройной, а потом на AES. Таким образом, и на сегодняшний день криптостойкость российского стандарта вполне удовлетворяет всем современным требованиям. Вторая причина большого распространения ГОСТа 28147-89 – законодательство. Государственные организации и многие коммерческие структуры обязаны использовать для защиты данных сертифицированные средства защиты. Однако получение сертификата возможно только в том случае, если "в указанных криптосредствах реализованы криптографические алгоритмы, объявленные государственными или отраслевыми стандартами Российской Федерации".

Алгоритм, описанный в ГОСТе 28147-89, является типичным представителем класса симметричных. В его основе лежит сеть Фейстеля. Длина ключа и длина блока равны и составляют 256 бит. На основе сети Фейстеля построен целый ряд различных алгоритмов. Однако, несмотря на внешнее сходство, их криптостойкость и скорость работы очень сильно различаются. Все зависит от действий, которые выполняются над подблоками. Именно поэтому они и называются "основным криптографическим преобразованием". В ГОСТе 28147-89 используются относительно простые для реализации, быстрые для исполнения и устойчивые к взлому операции.


Рис. 7. I-ый раунд ГОСТ 28147

Алгоритм может работать в трех различных режимах.

Первый из них - простая замена. В этом случае блоки шифруются независимо друг от друга и от положения в массиве исходной информации. То есть две одинаковые последовательности размером в 64 бита и после обработки останутся одинаковыми. Кроме того, в режиме простой замены очень желательно, чтобы объем исходного массива данных был кратен 64 битам. В противном случае наблюдается снижение криптоустойчивости алгоритма к некоторым видам атак. Режим простой замены применяется для ключей шифрования.

Вторым режимом работы алгоритма является гаммирование. В рассматриваемом алгоритме для этой цели используется операция побитового сложения по модулю 2, поскольку она является обратной самой себе и к тому же наиболее просто реализуется аппаратно.

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

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

В ГОСТе 28147-89 описана еще одна очень полезная функция алгоритма шифрования - возможность создания имитовставки. Имитовставка - контрольная комбинация, зависящая от открытых данных и секретной ключевой информации. Она нужна для того, чтобы обнаружить все случайные или преднамеренные изменения в зашифрованных данных. Обнаружить внесенные в текст изменения несложно. Тем более что полноценно заменить одни слова другими без знания ключа нельзя. Но если злоумышленник внесет изменения в файл, полученный путем шифрования бинарной, звуковой, графической или видеоинформации, то при декодировании искажения перейдут и на исходные данные. И заметить их зачастую просто-напросто нереально. Именно тогда имитовставка и оказывается незаменимой. Да и в случае с текстом ее использование позволяет точно узнать, вносились изменения в зашифрованный файл или нет.

Основные различия между DES и ГОСТ 28147 следующие: