Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа? |
Алгоритмы симметричного шифрования. Часть 2
Алгоритм Blowfish
Blowfish является сетью Фейстеля, у которой количество итераций равно 16. Длина блока равна 64 битам, ключ может иметь любую длину в пределах 448 бит. Хотя перед началом любого шифрования выполняется сложная фаза инициализации, само шифрование данных выполняется достаточно быстро.
Алгоритм предназначен в основном для приложений, в которых ключ меняется нечасто, к тому же существует фаза начального рукопожатия, во время которой происходит аутентификация сторон и согласование общих параметров и секретов. Классическим примером подобных приложений является сетевое взаимодействие. При реализации на 32-битных микропроцессорах с большим кэшем данных Blowfish значительно быстрее DES.
Алгоритм состоит из двух частей: расширение ключа и шифрование данных. Расширение ключа преобразует ключ длиной, по крайней мере, 448 бит в несколько массивов подключей общей длиной 4168 байт.
В основе алгоритма лежит сеть Фейстеля с 16 итерациями. Каждая итерация состоит из перестановки, зависящей от ключа, и подстановки, зависящей от ключа и данных. Операциями являются XOR и сложение 32-битных слов.
Blowfish использует большое количество подключей. Эти ключи должны быть вычислены заранее, до начала любого шифрования или дешифрования данных. Элементы алгоритма:
-
Р - массив, состоящий из восемнадцати 32-битных подключей:
Р1, Р2, ..., Р18.
- Четыре 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.
- Инициализировать первый Р -массив и четыре S-boxes фиксированной строкой.
- Выполнить операцию XOR P1 с первыми 32 битами ключа, операцию XOR P2 со вторыми 32 битами ключа и т.д. Повторять цикл до тех пор, пока весь Р-массив не будет побитово сложен со всеми битами ключа. Для коротких ключей выполняется конкатенация ключа с самим собой.
- Зашифровать нулевую строку алгоритмом Blowfish, используя подключи, описанные в пунктах (1) и (2).
- Заменить Р1 и Р2 выходом, полученным на шаге (3).
- Зашифровать выход шага (3), используя алгоритм Blowfish с модифицированными подключами.
- Заменить Р3 и Р4 выходом, полученным на шаге (5).
- Продолжить процесс, заменяя все элементы Р-массива, а затем все четыре S-boxes, выходами соответствующим образом модифицированного алгоритма Blowfish.