КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Алгоритмы вычисления функции шифрования f и ключей для DES.
Основная функция шифрования (функция Фейстеля)
Аргументами функции f являются 32-битовый вектор и 48-битовый ключ ki, который является результатом преобразования 56-битового исходного ключа шифра k.
Для вычисления функции f используются функция расширения Е, преобразование S, состоящее из 8 преобразований S-блоков , и перестановка P.
Функция Е расширяет 32-битовый вектор до 48-битового вектора путём дублирования некоторых битов из ; при этом порядок битов вектора указан в таблице 2.
| Таблица 2. Функция расширения E
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
| Первые три бита вектора являются битами 32, 1, 2 вектора . По таблице 2 видно, что биты 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 дублируются. Последние 3 бита вектора — это биты 31, 32, 1 вектора . Полученный после перестановки блок складывается по модулю 2 с ключами и затем представляется в виде восьми последовательных блоков . Каждый является 6-битовым блоком. Далее каждый из блоков трансформируется в 4-битовый блок с помощью преобразований . Преобразования определяются таблицей 3.
(таблицы с S перестановками)
Предположим, что , и мы хотим найти . Первый и последний разряды являются двоичной записью числа а, 0<=a<=3, средние 4 разряда представляют число b, 0<=b<=15. Строки таблицы S3 нумеруются от 0 до 3, столбцы таблицы S3 нумеруются от 0 до 15. Пара чисел (а, b) определяет число, находящееся в пересечении строки а и столбца b. Двоичное представление этого числа дает . В нашем случае , , а число, определяемое парой (3,7), равно 7. Его двоичное представление =0111.
Значение функции (32 бит) получается перестановкой Р, применяемой к 32-битовому блоку . Перестановка Р задана таблицей 4.
| Таблица 4. Перестановка P
| |
|
|
|
|
|
|
| 17
| |
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
| Согласно таблице 4, первые четыре бита результирующего вектора после действия функции f — это биты 16, 7, 20, 21 вектора 
Генерирование ключей 
Ключи получаются из начального ключа k (64 бит = 8 байтов или 8 символов в ASCII) таким образом. Восемь битов, находящихся в позициях 8, 16, 24, 32, 40, 48, 56, 64 добавляются в ключ k таким образом чтобы каждый байт содержал нечетное число единиц. Это используется для обнаружения ошибок при обмене и хранении ключей. Затем делают перестановку для расширенного ключа (кроме добавляемых битов 8, 16, 24, 32, 40, 48, 56, 64). Такая перестановка определена в таблице 5.
| Таблица 5.
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| | Эта перестановка определяется двумя блоками и по 28 бит каждый. Первые 3 бита есть биты 57, 49, 41 расширенного ключа. А первые три бита есть биты 63, 55, 47 расширенного ключа. i=1,2,3…получаются из одним или двумя левыми циклическими сдвигами согласно таблице 6.
| Таблица 6.
| | i
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| | Число сдвига
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Ключ , i=1,…16 состоит из 48 бит, выбранных из битов вектора (56 бит) согласно таблице 7. Первый и второй биты есть биты 14, 17 вектора 
Конечная перестановка
Конечная перестановка действует на и используется для восстановления позиции. Она является обратной к перестановке IP. Конечная перестановка определяется таблицей 8.
Таблица 8. Обратная перестановка
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|