Шифрование S-DES

 
 

На рис 2.2 представлена более подробная схема алгоритма шифрования S-DES. Как уже упоминалось, процесс шифрования представляет собой последовательное выполнение пяти операций, которые мы рассмотрим здесь каждую в отдельности.

Начальная и завершающая перестановки

На вход алгоритма поступает 8-битовый блок открытого текста, к которому применяется начальная перестановка, заданная функцией IP (см таблицу 2.3).

Таблица 2.3

IP
               

Все 8 битов открытого текста сохраняют свои значения, но меняется порядок их следования. На завершающей стадии алгоритма выполняется обратная перестановка (см таблицу 2.4).

Таблица 2.4

IP-1
               

Как легко убедиться с помощью простой проверки, вторая из приведенных выше перестановок действительно является обратной по отношению к первой, то есть IP-1(IP(X)) = X.

2.2.2. Функция fK

Самым сложным компонентом S-DES является функция fK, представляющая собой комбинацию перестановки и подстановки. Пусть L и R означают соответственно первые 4 бита и последние 4 бита 8-битовой последовательности, подаваемой на вход fK, и пусть F – некоторое отображение пространства 4-битовых строк в себя, не обязательно являющееся взаимно однозначным. Тогда положим

fK (L, R) = (L Å F(R, SK), R),

где SK обозначает подключ, а Å - операцию XOR (побитовое исключающее «ИЛИ»). Например, если в результате применения функции IP получено значение (10111101) и F(1101, SK) = (1110) для некоторого ключа SK, то fK (10111101) = (01011101), так как (1011) Å (1110) = (0101).

Теперь опишем отображение F. На входе этого отображения имеем 4-битовое значение (n1, n2, n3, n4)/ Первой операцией является операция расширения/перестановки (см. таблицу 2.5).

Таблица 2.5

E/P
               

Для дальнейшего рассмотрения удобнее представить результат в следующей форме:

n4| n1 n2| n3

n2| n3 n4| n1.

К этому значению с помощью операции XOR добавляется 8-битовый подключ К1 = (k11, k12, k13, k14, k15, k16, k17, k18):

n4 + k11| n1+ k12 n2+ k13| n3+ k14

n2 + k15| n3+ k16 n4+ k17| n1+ k18.

Давайте переименуем полученные в результате 8 битов, как показано ниже.

Р0,0| Р0,1 Р0,2| Р0,3

Р1,0| Р1,1 Р1,2| Р1,3.

Первые четыре бита (первая строка приведенной выше матрицы) поступают на вход модуля S0, на выходе которого получается 2-битовая последовательность, а оставшиеся четыре бита (вторая строка матрицы) – на вход модуля S1, на выходе которого получается другая 2-битовая последовательность. Модули S0 и S1 можно определить так, как показано в таблицах 2.6 и 2.7 соответственно:


Таблица 2.6

S0        
         
         
         
         

Таблица 2.7

S1        
         
         
         
         

Эти S-модули (матрицы кодирования) работают следующим образом. Первый и четвертый биты входной последовательности рассматриваются как 2-битовые числа, определяющие строку, а второй и третий – как числа, определяющие столбец S-матрицы. Элементы, находящиеся на пересечении соответствующих строки и столбца, задают 2-битовые входные значения. Например, если (р0,0 р0,3) = (00) и (р0,1 р0,2) = (10), то выходные два бита задаются значением, которое находится на пересечении строки 0 и столбца 2 матрицы S0 (оно равно 3 или (11) в двоичном представлении). Точно так же (р1,0 р1,3) и (р1,1 р1,2) служат для определения строки и столбца матрицы S1, на пересечении которых стоит значение, задающее вторые два бита.

Теперь 4 бита, полученные на выходе модулей S0 и S1, преобразуются с помощью перестановки так, как показано в таблице 2.8

Таблица 2.8

P4
       

Результат применения перестановки Р4 и является результатом функции F.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: