Победитель AES – шифр Rijndael
Данный алгоритм разработан двумя специалистами по криптографии из Бельгии. Он является нетрадиционным блочным шифром, поскольку не использует сеть Фейштеля для криптопреобразований. Алгоритм представляет каждый блок кодируемых данных в виде двумерного массива байт размером 4х4, 4х6 или 4х8 в зависимости от установленной длины блока. Далее на соответствующих этапах преобразования производятся либо над независимыми столбцами, либо над независимыми строками, либо вообще над отдельными байтами в таблице. Все преобразования в шифре имеют строгое математическое обоснование. Сама структура и последовательность операций позволяют выполнять данный алгоритм эффективно как на 8-битных так и на 32-битных процессорах. В структуре алгоритма заложена возможность параллельного исполнения некоторых операций, что на многопроцессорных рабочих станциях может еще поднять скорость шифрования в 4 раза. Алгоритм состоит из некоторого количества раундов (от 10 до 14 – это зависит от размера блока и длины ключа), в которых последовательно выполняются следующие операции : · ByteSub – табличная подстановка 8х8 бит (рис.5.6), · ShiftRow – сдвиг строк в двумерном массиве на различные смещения (рис.5.7), · MixColumn – математическое преобразование, перемешивающее данные внутри столбца (рис.5.8), · AddRoundKey – добавление материала ключа операцией XOR (рис.5.9). В последнем раунде операция перемешивания столбцов отсутствует, что делает всю последовательность операций симметричной.
Поточные шифры Поточные шифры преобразуют открытый текст в шифротекст по одному биту за операцию. Генератор потока ключей (иногда называемый генератором с бегущим ключом) выдает поток битов: k1, k2, …, ki. Этот поток битов (иногда называемый бегущим ключом) и поток битов открытого текста, p1, p2, …, pi, подвергаются операции XOR, и в результате получается поток битов шифротекста: ci = pi⊕ki (рис.6.1) Рис.6.1.
При дешифровании, для восстановления битов открытого текста, операция XOR выполняется над битами шифротекста и тем же самым потоком ключей: pi = ci⊕ki. Отметим, что ki = pi⊕ci. Безопасность системы полностью зависит от свойств генератора потока ключей. Если генератор потока ключей выдает бесконечную строку нулей, шифротекст будет совпадать с открытым текстом и преобразование будет бессмысленным. Если генератор потока ключей выдает повторяющийся 16-битовый шаблон, криптостойкость будет пренебрежимо мала. В случае бесконечного потока случайных битов криптостойкость поточного шифра будет эквивалентна криптостойкости одноразового блокнота. Генератор потока ключей создает битовый поток, который похож на случайный, но в действительности детерминирован и может быть безошибочно воспроизведен при дешифровании. Чем ближе выход генератора потока ключей к случайному, тем выше трудоемкость криптоаналитической атаки. Блочные и поточные шифры реализуются по-разному. Поточные шифры, шифрующие и дешифрующие данные по одному биту, не очень подходят для программных реализаций. Блочные шифры легче реализовывать программно, так как они позволяют избежать трудоемких манипуляций с битами и оперируют удобными для компьютера блоками данных. С другой стороны, поточные шифры больше подходят для аппаратной реализации. ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|