Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
второй модуль криптология.doc
Скачиваний:
0
Добавлен:
26.01.2020
Размер:
1.49 Mб
Скачать

67.Структура алгоритма Blowfish.

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

  1. Значение субблока складывается с ключом i-го раунда Ki операцией XOR, результат операции становится новым значением субблока. 

  2. Субблок обрабатывается функцией f , результат обработки накладывается на правый субблок операцией XOR. 

  3. Субблоки меняются местами во всех раундах, кроме последнего.

  4. После 16 раундов выполняется наложение на субблоки еще двух подключей: K17 и K18 складываются операцией XOR с правым и левым субблоками соответственно. 

68.Процесс шифрования Blowfish.

В общем случае, алгоритм шифрования Blowfish представляет собой сеть Фейстеля, но с некоторыми особенностями генерации и использования раундовых ключей (P0, P1 …).

Для начала допустим, что функция итерации F в алгоритме Blowfish это некоторый «черный ящик», который принимает на входе и выдает на выходе 32-битное число (DWORD). При этом 32-битные раундовые ключи Pn:

вычисляются по некоторому правилу от исходного ключа (длиной до 448 бит);

не являются аргументами для функции итерации F;

непосредственно складываются по модулю 2 (XOR) с «левым блоком».

Результат этой операции является входящим 32-битным аргументом для функции F.

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

Но здесь у внимательного читателя может возникнуть вопрос: если используется 18 раундовых ключей, каждый из которых имеет длину 32 бита, то в итоге мы получаем ключ длиной 576 бит (18 ключей × 32 бита). Почему же длина исходного ключа в Blowfish изначально ограничена 448 битами?

Ответ прост — она не ограничена. Можно использовать ключи до 576 бит. Но! Ограничение было сделано исходя из требований к соблюдению безопасности и криптостойкости алгоритма.

69.Процедура расширения ключа Blowfish.

Задача процедуры расширения ключа состоит в вычислении на основе ключа шифрования значений ключей раунда K1...K18 и таблиц замен S1...S4.

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

Шаг 1. Исходные значения ключей раунда и таблиц замен инициализируются фиксированной псевдослучайной строкой, в качестве которой используется шестнадцатеричная запись дробной части числа π.

Шаг 2. Операцией XOR на K1 накладываются первые 32 бита ключа шифрования, на K2 - следующие 32 бита и т. д. - до K18.

Если ключ шифрования короче, чем необходимо для наложения на K1...K18, то он накладывается циклически.

Шаг 3. С использованием полученных ключей раунда и таблиц замен выполняется шифрование алгоритмом Blowfish блока данных, состоящего из 64 нулевых бит. Результат становится новым значением ключей K1 и K2.

Шаг 4. Результат предыдущего этапа снова шифруется алгоритмом Blowfish (причем уже с измененными значениями ключей K1 и K2), в результате получаются новые значения ключей K3 и K4.

Шаг 5. Шифрование выполняется до тех пор, пока новыми значениями не будут заполнены все ключи раунда и таблицы замен.