Функция расширения E
Далее каждый из этих блоков используется как номер элемента в функциях-матрицах S1, S2,..., S8, содержащих 4-битовые значения (табл. 5.5). Следует отметить, что выбор элемента в матрице Sj осуществляется достаточно оригинальным образом. Пусть на вxод матрицы Sj поступает 6-битовый блок Bj = b1 b2 b3 b4 b5 b6, тогда двухбитовое число b1 b6 указывает номер строки матрицы, а четырехбитовое число b2 b3 b4 b5 – номер столбца. Например, если на вход матрицы S1 поступает 6-битовый блок В1= b1 b2 b3 b4 b5 b6 = 100110, то 2-битовое число b1 b6 = 10(2) = 2(10) указывает строку с номером 2 матрицы S1, а 4-битовое число b2 b3 b4 b5=0011(2)=3(10) указывает столбец с номером 3 матрицы S1. Это означает, что в матрице S1 блок В1 = 100110 выбирает элемент на пересечении строки с номером 2 и столбца с номером 3, т.е. элемент 8(10) =1000(2). Совокупность 6-битовых блоков В1, В2,..., В8 обеспечивает выбор четырехбитового элемента в каждой из матриц S1, S2,..., S8. В результате получаем S1(В1) S2(В2) S3(В3)... S8(В8), т.е. 32-битовый блок (поскольку матрицы Sj содержат 4-битовые элементы). Этот 32-битовый блок преобразуется с помощью функции перестановки битов Р (табл.5.6). Таким образом, функция шифрования f (Ri–1, Ki) = P(S1(B1),..., S8(B8)). Как нетрудно заметить, на каждой итерации используется новое значение ключа Кi (длиной 48 бит). Новое значение ключа Кiвычисляется из начального ключа К (рис. 18). Ключ К представляет собой 64-битовый блок с 8 битами контроля по четности, расположенными в позициях 8, 16, 24, 32, 40, 48, 56, 64. Для удаления контрольных битов и подготовки ключа к работе используется функция G первоначальной подготовки ключа (табл. 5.7).
Таблица 5.5 Функции преобразования S1, S2,..., S8
Рис. 18. Схема алгоритма вычисления ключей Ki
Табл. 5.7 разделена на две части. Результат преобразования G(K) разбивается на две половины С0 и D0 по 28 бит каждая. Первые четыре строки матрицы G определяют, как выбираются биты последовательности С0 (первым битом С0 будет бит 57 ключа шифра, затем бит 49 и т.д., а последними битами – биты 44 и 36 ключа).
Следующие четыре строки матрицы G определяют, как выбираются биты последовательности D0 (т.е. последовательность D0 будет состоять из битов 63, 55, 47,...,12, 4 ключа шифра).
Как видно из табл. 5.7, для генерации последовательностей С0 и D0 не используются биты 8, 16, 24, 32, 40, 48, 56 и 64 ключа шифра. Эти биты не влияют на шифрование и могут служить для других целей (например, для контроля по четности). Таким образом, в действительности ключ шифра является 56-битовым. После определения С0 и D0 рекурсивно определяются Сi и Di, i {1, 2,..., 16}. Для этого применяются операции циклического сдвига влево на один или два бита в зависимости от номера шага итерации, как показано в табл. 5.8. Операции сдвига выполняются для последовательностей Сi и Diнезависимо. Таблица 5.8 Таблица сдвигов s i для вычисления ключа
Ключ Кi, определяемый на каждом шаге итерации, есть результат выбора конкретных битов из 56-битовой последовательности СiDi и их перестановки. Другими словами, ключ Кi=H(Сi Di), где функция H определяется матрицей, завершающей обработку ключа (табл. 5.9). Таблица 5.9 Функция H завершающей обработки ключа (Переставленная выборка 2)
Как следует из табл.5.9, первым битом ключа Кi будет 14-й бит последовательности Сi Di, вторым – 17-й бит, 47-м битом ключа Кiбудет 29-й бит СiDi, а 48-м битом – 32-й бит СiDi.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|