Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Алгоритм шифрования BlowfishСодержание книги
Поиск на нашем сайте Описание алгоритма Blowfish До появления Blowfish существовавшие алгоритмы были либо запатентованными, либо ненадёжными, а некоторые и вовсе держались в секрете (например, Skipjack). Алгоритм был разработан в 1993 году Брюсом Шнайером в качестве быстрой и свободной альтернативы устаревшему DES и запатентованному IDEA. По заявлению автора, критерии проектирования Blowfish были: • скорость (шифрование на 32-битных процессорах происходит за 26 тактов); • простота (за счёт использования простых операций, уменьшающих вероятность ошибки реализации алгоритма); • компактность; • настраиваемая стойкость. Blowfish -блочный шифр, который шифрует данные в 8- байтовых блоках. Алгоритм включает в себе 2 части: часть расширения ключей и часть кодирования данных. Расширение ключа преобразует ключи переменной длинны, в большинстве 56 байтовые (448 битов), в несколько суммированных массивов подключей размером в 4168 байт. Данный алгоритм имеет 16 итераций. Каждая итерация включает в себя зависящие от ключа перестановки, и зависящей от ключей и данных замены. Все операции XOR и добавления на 32-битных словах. Единственные дополнительные операции - четыре индексированных поиска данных в целочисленных массивах. [1]. Blowfish шифрует данные 64-битными блоками. Ключ алгоритма имеет переменный размер - от 32 до 448 бит. Алгоритм представляет собой сеть Фейстеля. Шифрование данных выполняется за 16 раундов, в каждом из которых над левым 32-битным субблоком данных проводятся следующие действия: 1. Значение субблока складывается с ключом i-го раунда Ki операцией XOR, результат операции становится новым значением субблока. 2. Субблок обрабатывается функцией F (описана ниже), результат обработки накладывается на правый субблок операцией XOR. 3. Субблоки меняются местами во всех раундах, кроме последнего. 4. После 16 раундов выполняется наложение на субблоки еще двух подключей: K17 и K18 складываются операцией XOR с правым и левым субблоками соответственно.
Рисунок 1. Структура алгоритма Blowfish.
Функция F (рис. 2) обрабатывает субблок следующим образом: 1. 32-битное входное значение делится на четыре фрагмента по 8 бит, каждый из которых прогоняется через одну из таблиц замен S1...S4 с получением четырех 32-битных выходных фрагментов. Таблицы замен содержат по 256 значений по 32 бита, они не являются фиксированными и зависят от ключа шифрования. Принципы их вычисления подробно описаны ниже. 2. Первые два выходных фрагмента складываются по модулю. 3. Результат предыдущего шага складывается операцией XOR с третьим выходным фрагментом. 4. Выходное значение функции F получается путем сложения результата предыдущего шага с четвертым выходным фрагментом по модулю. Функцию F можно определить так: F(x) = ((S1(x1) + S2(x2) mod 232) где x1...x4 - 8-битные фрагменты входного значения x. Расшифрование выполняется аналогично шифрованию, но ключи K1...K18 используются в обратном порядке.
Рисунок 2. Функция F алгоритма Blowfish. Процедура расширения ключа Подключи вычисляются с использованием самого алгоритма Blowfish. Задача процедуры расширения ключа состоит в вычислении на основе ключа шифрования значений ключей раунда K1...K18 и таблиц замен S1...S4. Расширение ключа выполняется в 5 этапов: 1. Исходные значения ключей раунда и таблиц замен инициализируются фиксированной псевдослучайной строкой, в качестве которой используется шестнадцатеричная запись дробной части числа π (пи). 2. Операцией XOR на K1 накладываются первые 32 бита ключа шифрования, на K2 - следующие 32 бита и т. д. - до K18. Если ключ шифрования короче, чем необходимо для наложения на K1...K18, то он накладывается циклически. 3. С использованием полученных ключей раунда и таблиц замен выполняется шифрование алгоритмом Blowfish блока данных, состоящего из 64 нулевых бит. Результат становится новым значением ключей K1 и K2. 4. Результат предыдущего этапа снова шифруется алгоритмом Blowfish (причем уже с измененными значениями ключей K1 и K2), в результате получаются новые значения ключей K3 и K4. 5. Шифрование выполняется до тех пор, пока новыми значениями не будут заполнены все ключи раунда и таблицы замен. В процедуре расширения ключа мы видим, что для создания ключа необходима какая-то фиксированная псевдослучайная строка S (набор из любых шестнадцатеричных символов). На строку S c помощью операции XOR накладывается ключ принадлежащий пользователю. В теории для каждого ключа должна соответствовать своя фиксированная псевдослучайная строка S.
|
||
|
Последнее изменение этой страницы: 2016-08-01; просмотров: 1211; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.20 (0.009 с.) |