Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР4-5_ПРО3_ЗИ_2020-21.doc
Скачиваний:
6
Добавлен:
25.11.2022
Размер:
5.56 Mб
Скачать

2.1.3 Расшифровывание

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

другие операции, выполняемые в смешивающем и объединяющем раундах.

Смешивающий раунд расшифровывания в цикле по i от 3 до О выполняет следующие операции:

(22)

,

j=j+1,

где » - циклический сдвиг вправо на число битов, определяемое значением (табл. 6), начальное значение j устанавливается не в 0, а в 63.

Аналогичным образом изменен и объединяющий раунд при расшифровывании по сравнению с зашифровыванием. В нем в цикле

по i от 3 до 0 выполняется следующая операция:

, (24)

где . (25)

2.1.4 Криптостойкость алгоритма

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

  • алгоритм не подвержен атаке методом линейного криптоанализа;

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

Не более практичной является атак на связанных ключах, для успешного проведения которой требуется наличие 234 выбранных открытых текстов и соответствующих им шифртекстов, причем зашифровывание должно выполняться на ключе, связанном с искомым определенным простым соотношением. Данная атака изобретена не менее известными криптологами: Джоном Келси, Брюсом Шнайером и Дэвидом Вагнером.

Других методов вскрытия алгоритма RC2 на настоящий момент не известно.

2.2 Алгоритм rc4

RC4 представляет собой потоковый шифр с переменной длиной ключа, разработанный в 1987 г. Роном Ривестом для компании RSA Data Security, Inc.

Описывается шифр очень просто. Алгоритм работает в режиме OFB. Ключевая последовательность не зависит от исходного текста. Структура алгоритма включает блок замены размерностью 8x8: . Блок замены представляет собой зависимую от ключа переменной длины перестановку чисел 0,..., 255. Имеется два счетчика i и j, первоначально равные 0. Для генерирования псевдослучайного байта выполняются следующие действия:

i = ( i + 1) mod 256,

(26)

j = ( j + Si)mod 256,

переставить Si и Sj

t = (Si + Sj) mod 256,

(27)

k = St.

(28)

Затем байт k складывается по модулю 2 с байтом исходного текста для получения шифрованного.

Инициализация блока замены также проста. Вначале он заполняется линейно: . Затем заполняется

еще один 256-байтный массив ключом, при этом ключ может повторяться необходимое число раз для заполнения всего массива: . Счетчик j устанавливается в 0. После чего производятся следующие действия:

for i=0 to 255 j = (j + ki + Si )mod 256 переставить Si и Sj.

Возможно обобщение алгоритма на большие длину слова и размер блока замены. Так, можно построить шифр с блоком замены размерностью 16x16 (потребуется 128 Кбайт памяти) и длиной слова 16 бит. Этап инициализации будет значительно медленнее, необходим цикл до 65535, если мы хотим в точности следовать конструкции, но получившийся в результате алгоритм будет более быстрым.