Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Беззатеев и др. Блоковые шифры.pdf
Скачиваний:
241
Добавлен:
02.04.2015
Размер:
1.75 Mб
Скачать

30

Сначала, 128-битная ключевая последовательность разбивается на 8 подключей по 16 бит. 6 из этих подключей используются для первого цикла, и два для второго цикла. Затем ключ сдвигается на 25 бит влево и снова делится на 8 подключей. Первые четыре используются во втором цикле; последние четыре используются в третьем цикле. Ключ сдвигается на 25 бит влево для получения следующих 8 подключей, и так до конца алгоритма.

Процесс дешифрации производится так же, за исключением того, что подблоки ключевой последовательности противоположны. Они представляют собой инверсии, либо по умножению, либо по сложению, подблоков ключевой последовательности, использовавшихся при шифровании. (В алгоритме IDEA инверсия 0 в операции умножения есть 0).

В Табл. 3.12 представлены подблоки ключевой последовательности для шифрования и дешифрации.

номер цикла

подблоки ключа при шифровании

подблоки ключа при дешифрации

1

Z1(1) Z2(1) Z3(1) Z4(1)

Z5(1) Z6(1)

Z1(9) –1

-Z2(9)

-Z3(9) Z4(9) –1 Z5(8) Z6(8)

2

Z1(2) Z2(2) Z3(2) Z4(2)

Z5(2) Z6(2)

Z1(8) –1

-Z2(8) -Z3(8) Z4(8) –1 Z5(7) Z6(7)

3

Z1(3) Z2(3) Z3(3) Z4(3)

Z5(3) Z6(3)

Z1(7) –1

-Z2(7) -Z3(7) Z4(7) –1 Z5(6) Z6(6)

4

Z1(4) Z2(4) Z3(4) Z4(4)

Z5(4) Z6(4)

Z1(6) –1 -Z2(6)

-Z3(6) Z4(6) –1 Z5(5)

Z6(5)

5

Z1(5)

Z2(5) Z3(5) Z4(5)

Z5(5) Z6(5)

Z1(5) –1 -Z2(5) -Z3(5) Z4(5) –1 Z5(4) Z6(4)

6

Z1(6)

Z2(6)

Z3(6)

Z4(6)

Z5(6)

Z6(6)

Z1(4) –1 -Z2(4)

-Z3(4) Z4(4) –1 Z5(3)

Z6(3)

7

Z1(7)

Z2(7)

Z3(7)

Z4(7)

Z5(7)

Z6(7)

Z1(3) –1 -Z2(3)

-Z3(3) Z4(3) –1 Z5(2)

Z6(2)

8

Z1(8)

Z2(8)

Z3(8)

Z4(8)

Z5(8)

Z6(8)

Z1(2) –1 -Z2(2) -Z3(2) Z4(2) –1 Z5(1) Z6(1)

окончательное

 

Z1(9)

Z2(9)

Z3(9)

Z4(9)

 

Z1(1) –1 -Z2(1) -Z3(1) Z4(1) –1

 

преобразование

 

 

 

 

 

 

 

 

 

 

Табл. 3.12. Подблоки ключа алгоритма IDEA для шифрования и дешифрации

3.7. Алгоритм Blowfish

Blowfish — блоковый шифр, разработанный Брюсом Шнаером (Bruce Schneier) [Schn96] на базе сетей Файстела, который шифрует данные, разбитые на блоки по 8 байт. Алгоритм состоит из двух частей: построение совокупности ключей и шифрование данных. При построении ключей исходный ключ с произвольной длиной до 56 байтов (448 бит) преобразуется в несколько ключевых множеств общим объемом в 4168 байт.

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

Подключи

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

Множество P состоит из 18 подключей, каждый из которых имеет длину в 32 бита: P1 , P2 , ..., P18 . Кроме того, имеются четыре 32-битные подстановочные матрицы (S-box) с 256 входами:

S1 ={S1.0 ,S1.1,,S1.255};

S2 ={S2.0 , S2.1,, S2.255};

S3 ={S3.0 , S3.1,, S3.255};

S4 ={S4.0 , S4.1,, S4.255}.

31

Шифрование и дешифрация

Рис. 3.12. Схема алгоритма Blowfish.

Blowfish имеет 16 циклов (Рис. 3.12). Входной блок X состоит из 64 бит. Этот блок делится на две половины X L , X R по 32 бита в каждой. Затем для i от 1 до 16 выполняются следующие преобразования:

X L = X L XOR Pi ,

X R = F(X L ) XOR X R ,

после чего X L и X R меняются местами.

После шестнадцатого цикла X L и X R снова меняются местами и выполняется последнее преобразование:

X R = X R XOR P17 ,

X L = X L XOR P18 .

Наконец, X L и X R объединяются с тем, чтобы получить зашифрованное сообщение.

Функция F выглядит следующим образом (Рис. 3.13): X L делится на четыре равные восьмибитные части: a , b , c , и d . Затем

F ( X L ) = ((((S1.a + S2.b ) mod 232 ) XOR S3.c ) + S4.d ) mod 232 .

Дешифрация выполняется так же, как и шифрование, только множества подключей P1 , P2 , ..., P18

используются в обратном порядке.