Алгоритм вычисления ключей
Как нетрудно заметить, на каждой итерации используется новое значение ключа (длиной 48 бит). Новое значение ключа вычисляется из начального ключа (рис. 5.3).
Ключ представляет собой 64‑битовый блок с 8 битами контроля по четности, расположенными в позициях 8, 16, 24, 32, 40, 48, 56, 64. Для удаления контрольных бит и подготовки ключа к работе используется функция первоначальной подготовки ключа (табл. 5.6).
Таблица 5.6 | |||||||
Функция G | |||||||
Табл. 5.6 разделена на две части. Результат преобразования разбивается на две половины и , по 28 бит каждая. Первые четыре строки матрицы определяют, как выбираются биты последовательности (первым битом будет бит 57 ключа шифра, затем бит 49 и т.д., а последними битами ‑ биты 44 и 36 ключа).
Следующие четыре строки матрицы определяют, как выбираются биты последовательности (т.е. последовательность будет состоять из бит 63, 55, 47,...,12, 4 ключа шифра).
Как видно из табл. 5.6, для генерации последовательностей и не используются биты 8, 16, 24, 32, 40, 48, 56 и 64 ключа шифра. Эти биты не влияют на шифрование и могут служить для других целей (например, для контроля по четности). Таким образом, в действительности ключ шифра является 56‑битовым.
После определения и рекурсивно определяются и , . Для этого применяются операции циклического сдвига влево на один или два бита в зависимости от номера шага итерации, как показано в табл. 5.7.
Таблица 5.7 | ||||||||||||||||
Таблица сдвигов для вычисления ключа | ||||||||||||||||
Итерация | ||||||||||||||||
Сдвиг влево |
Операции сдвига выполняются для последовательностей и независимо. Например, последовательность получается посредством циклического сдвига влево на две позиции последовательности , а последовательность ‑ посредством сдвига влево на две позиции последовательности , и получаются из и посредством сдвига влево на одну позицию.
Ключ , определяемый на каждом шаге итерации, есть результат выбора конкретных бит из 56‑битовой последовательности и их перестановки. Другими словами, ключ , где функция определяется матрицей, завершающей обработку ключа (табл. 5.8).
Таблица 5.8 | |||||
Функция H | |||||
Как следует из табл. 5.8, первым битом ключа будет 14‑й бит последовательности , вторым ‑ 17‑й бит, 47‑м битом ключа будет 29‑й бит , а 48‑м битом ‑ 32‑й бит .