Опубликован: 19.11.2003 | Уровень: для всех | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 3:

Алгоритмы симметричного шифрования. Часть 2

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >
Аннотация: Рассматриваются алгоритмы симметричного шифрования Blowfish, IDEA, ГОСТ 28147, а также режимы их выполнения. Представлены различные способы создания псевдослучайных чисел.
Ключевые слова: алгоритм Blowfish, сеть Фейстеля, длина блока, шифрование данных, алгоритм, ключ, аутентификация, микропроцессор, кэш данных, DES, шифрование, бит, подключ, байт, итерация, XOR, сложение, дешифрование, S-box, mod, алгоритм IDEA, encryption algorithm, симметричные алгоритмы, ключ шифрования, длина ключа, эффективность алгоритма, дистрибутивность, раунд, диффузия, дифференциальный криптоанализ, инверсия, чередование, алгоритм ГОСТ 28147, симметричное шифрование, алгоритмы шифрования, функция, выход, слово, генерация ключей, линейный криптоанализ, ECB, electron, криптографический ключ, CBC, ciphering, chaining, CFB, feedback, выход алгоритма, OFB, связь, ключ сессии, криптоанализ, вход алгоритма, сетевые приложения, взаимная аутентификация, распределение ключей, replay-атака, nonce, KDC, псевдослучайное число, генерация случайных чисел, seed, мастер-ключ, секретный ключ

Алгоритм Blowfish

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

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

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

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

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

  1. Р - массив, состоящий из восемнадцати 32-битных подключей:
    Р1, Р2, ..., Р18.
  2. Четыре 32-битных S-boxes c 256 входами каждый. Первый индекс означает номер S-box, второй индекс - номер входа.
    S1,0, S1,1, … S1,255;
    S2,0, S2,1, … S2,255;
    S3,0, S3,1, … S3,255;
    S4,0, S4,1, … S4,255;

Метод, используемый для вычисления этих подключей, будет описан ниже.

Шифрование

Входом является 64-битный элемент данных X, который делится на две 32-битные половины, Xl и Xr.

Xl = Xl XOR Pi
Xr = F (Xl) XOR Xr
Swap Xl and Xr

Функция F

Разделить Xl на четыре 8-битных элемента A, B, C, D.

F (Xl) = ((S1,А + S2,B mod 232) XOR S3,C) + S4,D mod 232

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

Генерация подключей

Подключи вычисляются с использованием самого алгоритма Blowfish.

  1. Инициализировать первый Р -массив и четыре S-boxes фиксированной строкой.
  2. Выполнить операцию XOR P1 с первыми 32 битами ключа, операцию XOR P2 со вторыми 32 битами ключа и т.д. Повторять цикл до тех пор, пока весь Р-массив не будет побитово сложен со всеми битами ключа. Для коротких ключей выполняется конкатенация ключа с самим собой.
  3. Зашифровать нулевую строку алгоритмом Blowfish, используя подключи, описанные в пунктах (1) и (2).
  4. Заменить Р1 и Р2 выходом, полученным на шаге (3).
  5. Зашифровать выход шага (3), используя алгоритм Blowfish с модифицированными подключами.
  6. Заменить Р3 и Р4 выходом, полученным на шаге (5).
  7. Продолжить процесс, заменяя все элементы Р-массива, а затем все четыре S-boxes, выходами соответствующим образом модифицированного алгоритма Blowfish.

Для создания всех подключей требуется 521 итерация.

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >
Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Евгений Фроленко
Евгений Фроленко
Россия, г. Ростов - на - Дону
Евгений Логушев
Евгений Логушев
Россия, Чебоксары, ЧГПУ им. Яковлева, 2006