Мегаобучалка Главная | О нас | Обратная связь


Описание алгоритма Blowfish



2019-08-14 215 Обсуждений (0)
Описание алгоритма Blowfish 0.00 из 5.00 0 оценок




 

Blowfish – это алгоритм, предназначенный для реализации в микроконтроллерах [1]. При проектировании Blowfish использовались следующие критерии:

· Скорость. Blowfish шифрует данные на 32-битовых микропроцессорах со скоростью 26 тактов на байт.

· Компактность. Blowfish может работать менее, чем в 5 Кбайт памяти.

· Простота. Blowfish использует только простые операции: сложение, XOR и выборка из таблицы по 32-битовому операнду. Анализ его схемы несложен, это уменьшает количество ошибок при реализации.

· Настраиваемая безопасность. Длина ключа Blowfish переменна и может достигать 448 битов.

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

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

Шифрование по алгоритму Blowfish состоит из функции преобразования данных, последовательно выполняемой 16 раз. Каждый этап состоит из зависимой от ключа перестановки и зависимой от ключа и данных подстановки. Используются только сложения и XOR 32-битовых слов. Единственными дополнительными операциями на каждом этапе являются четыре извлечения данных из индексированного массива.

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

P-массив состоит из 18-ти 32-битовых подключей:

 

 

Каждый из четырех 32-битовых S-блоков содержит 256 элементов:

 

 

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

 

Рис. 1.7 – Алгоритм Blowfish

 


Blowfish является сетью Фейстела (Feistel), состоящей из 16 этапов. На вход подается 64-битовый элемент данных x.

Алгоритм шифрования:

· Элемент x разбивается на две 32-битовых половины:  и ;

· Для этапов с первого по шестнадцатый, выполняется:

 

                                                                             (1.11)

                                                                                (1.12)

 

Переставить  и  (кроме последнего этапа);

· В последнем этапе, производится:

 

                                                                           (1.13)

                                                                            (1.14)

 

· Объединяются элементы  и  ;

 

Рис. 1.8 – Функция F

 

Функция F (рис.1.8) представляет собой последовательность следующих действий:

· Разделить  на четыре 8-битовых части: a, b, c и d;

·  Выполнить над a,b,c,d :


                                           (1.15)

 

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

В реализациях Blowfish, для которых требуется очень большая скорость, цикл должен быть развернут, а все ключи должны храниться в КЭШе данных.

Подключи рассчитываются с помощью специального алгоритма. Вот какова точная последовательность действий.

1. Сначала P-массив, а затем четыре S-блока по порядку инициализируются фиксированной строкой. Эта строка состоит из шестнадцатеричных цифр .

2. Выполняется XOR P1 с первыми 32 битами ключа, XOR P2 со следующими 32 битами ключа, и так далее для всех битов ключа (до P18). Используется циклически, пока для всего P-массива не будет выполнена операция XOR с битами ключа.

3. Используя подключи, полученные на этапах (1) и (2), алгоритмом Blowfish шифруется строка из одних нулей.

4. P1 и P2 заменяются результатом этапа (3).

5. Результат этапа (3) шифруется с помощью алгоритма Blowfish и измененных подключей.

6. P3 и P4 заменяются результатом этапа (5).

7. Далее в ходе процесса все элементы P-массива и затем по порядку все четыре S-блока заменяются выходом постоянно меняющегося алгоритма Blowfish.

Серж Воденэ (Serge Vaudenay) исследовал Blowfish с известными S-блоками и r этапами. Дифференциальный криптоанализ может раскрыть P-массив с помощью 28r+1 выбранных открытых текстов. Для некоторых слабых ключей, которые генерируют плохие S-блоки (вероятность выбора такого ключа составляет 1 к 214), это же вскрытие раскрывает P-массив с помощью всего 24r+1. При неизвестных S-блоках это вскрытие может обнаружить использование слабого ключа, но не может определить сам ключ (ни S-блоки, ни P-массив). Это вскрытие эффективно только против вариантов с уменьшенным числом этапов и совершенно бесполезно против 16-этапного Blowfish.

Слабым является ключ, для которого два элемента данного S-блока идентичны. До выполнения развертывания ключа невозможно определить, является ли он слабым.

В устройстве осуществляется проверка ключей на принадлежность к классу слабых. Слабые ключи не используются.

В устройстве реализован Blowfish c количеством этапов, равным 16.

До сих пор неизвестно об успешном криптоанализе Blowfish.

 



2019-08-14 215 Обсуждений (0)
Описание алгоритма Blowfish 0.00 из 5.00 0 оценок









Обсуждение в статье: Описание алгоритма Blowfish

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (215)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)