Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект часть2-Криптография.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

5.1.4. Финалист aes – шифр TwoFish

Алгоритм разработан команией Counterpain Security Systems, возглавляемой Брюсом Шнайером (англ. Bruce Schneier). Предыдущая программная разработка этой фирмы, называвшаяся BlowFish, являлась и до сих пор является признанным криптостойким алгоритмом.

В алгоритме TwoFish разработчики оставили некоторые удачные решения из проекта-предшественника, кроме этого произвели тщательные исследования по перемешиванию данных в сети Фейштеля. Алгоритм представляет собой сеть Фейштеля смешанного типа (рис.5.5): первая и вторая ветвь на нечетных раундах производят модификацию третьей и четвертой, на четных раундах ситуация меняется на противоположную. В алгоритме используется криптопреобразование Адамара (англ. Pseudo-Hadamar Transform) – обратимое арифметическое сложение первого потока со вторым, а затем второго с первым.

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

Рис.5.5.

5.2. Победитель aes – шифр Rijndael

Данный алгоритм разработан двумя специалистами по криптографии из Бельгии. Он является нетрадиционным блочным шифром, поскольку не использует сеть Фейштеля для криптопреобразований. Алгоритм представляет каждый блок кодируемых данных в виде двумерного массива байт размером 4х4, 4х6 или 4х8 в зависимости от установленной длины блока. Далее на соответствующих этапах преобразования производятся либо над независимыми столбцами, либо над независимыми строками, либо вообще над отдельными байтами в таблице.

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

Алгоритм состоит из некоторого количества раундов (от 10 до 14 – это зависит от размера блока и длины ключа), в которых последовательно выполняются следующие операции :

  • ByteSub – табличная подстановка 8х8 бит (рис.5.6),

Рис.5.6.

  • ShiftRow – сдвиг строк в двумерном массиве на различные смещения (рис.5.7),

Рис.5.7.

  • MixColumn – математическое преобразование, перемешивающее данные внутри столбца (рис.5.8),

Рис.5.8.

  • AddRoundKey – добавление материала ключа операцией XOR (рис.5.9).

Рис.5.9.

В последнем раунде операция перемешивания столбцов отсутствует, что делает всю последовательность операций симметричной.

6. Поточные шифры

Поточные шифры преобразуют открытый текст в шифротекст по одному биту за операцию. Генератор потока ключей (иногда называемый генератором с бегущим ключом) выдает поток битов: k1, k2, …, ki. Этот поток битов (иногда называемый бегущим ключом) и поток битов открытого текста, p1, p2, …, pi, подвергаются операции XOR, и в результате получается поток битов шифротекста: ci = pi⊕ki (рис.6.1)

Рис.6.1.

При дешифровании, для восстановления битов открытого текста, операция XOR выполняется над битами шифротекста и тем же самым потоком ключей: pi = ci⊕ki.

Отметим, что ki = pi⊕ci. Безопасность системы полностью зависит от свойств генератора потока ключей. Если генератор потока ключей выдает бесконечную строку нулей, шифротекст будет совпадать с открытым текстом и преобразование будет бессмысленным. Если генератор потока ключей выдает повторяющийся 16-битовый шаблон, криптостойкость будет пренебрежимо мала. В случае бесконечного потока случайных битов криптостойкость поточного шифра будет эквивалентна криптостойкости одноразового блокнота. Генератор потока ключей создает битовый поток, который похож на случайный, но в действительности детерминирован и может быть безошибочно воспроизведен при дешифровании. Чем ближе выход генератора потока ключей к случайному, тем выше трудоемкость криптоаналитической атаки.

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