Матрица начальной перестановки P
Биты входного блока Т (64 бита) переставляются в соответствии с матрицей P: бит 58 входного блока Т становится битом 1, бит 50 – битом 2 и т.д. Эту перестановку можно описать выражением Т0 = P(T). Полученная последовательность битов Т0 разделяется на две последовательности: L0 – левые или старшие биты, R0 – правые или младшие биты, каждая из которых содержит 32 бита. Затем выполняется итеративный процесс шифрования, состоящий из 16 шагов (циклов). Пусть Тi – результат i-й итерации: Тi = Li Ri, где Li= t1 t2... t32 (первые 32 бита); Li = Ri–1, i {1, 2,..., 16}; Ri= Li–1 Å f(Ri–1, Ki), i {1, 2,..., 16}.
Функция f называется функцией шифрования. Ее аргументами являются последовательность Ri–1, получаемая на предыдущем шаге итерации, и 48-битовый ключ Кi, который является результатом преобразования 64-битового ключа шифра К. (Подробнее функция шифрования f и алгоритм получения ключа Кi описаны ниже.) На последнем шаге итерации получают последовательности R16 и L16 (без перестановки местами), которые конкатенируются в 64-битовую последовательность R16 L16. По окончании шифрования осуществляется восстановление позиций битов с помощью матрицы обратной перестановки P–1 (табл.5.2).
Таблица 5.2 Матрица обратной перестановки P–1
Пример того, как соотносятся элементы первой строки матрицы P–1 с элементами матрицы P приведен в табл. 5.3.
Таблица 5.3 Связь элементов матриц
Процесс расшифрования данных является инверсным по отношению к процессу шифрования. Все действия должны быть выполнены в обратном порядке. Это означает, что расшифровываемые данные сначала переставляются в соответствии с матрицей P–1, а затем над последовательностью битов R16L16 выполняются те же действия, что и в процессе шифрования, но в обратном порядке. Итеративный процесс расшифрования может быть описан следующими формулами: Ri–1 = Li, i {1, 2,..., 16}; Li–1 = Ri Å f (Li, Ki), i {1, 2,..., 16}. Таким образом, для процесса расшифрования с переставленным входным блоком R16L16 на первой итерации используется ключ К16, на второй итерации – К15 и т.д. На 16-й итерации используется ключ К1. На последнем шаге итерации будут получены последовательности L0 и R0, которые конкатенируются в 64-битовую последовательность L0R0. Затем в этой последовательности 64 бита переставляются в соответствии с матрицей P. Результат такого преобразования – исходная последовательность битов (расшифрованное 64-битовое значение). Теперь рассмотрим, что скрывается под преобразованием, обозначенным буквой f. Схема вычисления функции шифрования f (Ri–1,Ki) показана на рис. 17.
Рис. 17. Схема вычисления функции шифрования f
Для вычисления значения функции f используются: · функция Е (расширение 32 бит до 48); · функция S1, S2,..., S8 (преобразование 6-битового числа в 4-битовое); · функция Р (перестановка битов в 32-битовой последовательности).
Приведем определения этих функций. Аргументами функции шифрования f являются Ri–1 (32 бита) и Ki (48 бит). Результат функции Е (Ri–1) есть 48-битовое число. Функция расширения Е, выполняющая расширение 32 бит до 48 (принимает блок из 32 бит и порождает блок из 48 бит), определяется табл. 5.4. В соответствии с табл. 5.4 первые три бита E (Ri–1) – это биты 32, 1 и 2, а последние – 31, 32, 1. Полученный результат (обозначим его E(Ri–1)) складывается по модулю 2 (операция XOR) с текущим значением ключа Кi и затем разбивается на восемь 6-битовых блоков В1, В2,..., В8: Е (Ri–1) Å Кi = В1 В2... В8.
Таблица 5.4
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|