Краткие теоретические сведения
Открытые данные, подлежащие зашифровыванию, разбивают на 64 - разрядные блоки То. Процедура зашифровывания 64 - разрядного блока То в режиме простой замены включает 32 цикла (j = 1,2,…, 32). В ключевое запоминающее устройство вводят 256 бит ключа К в виде восьми 32 - разрядных подключей (чисел) K,
Последовательность бит блока T0 разбивают на две последовательности по 32 бита: b(0) и a (0) где b(0) - левые биты, а(0) - правые биты.
Работа алгоритма в режиме простой замены изображена на рисунке 4:
Рисунок 4.1 - Схема реализации режима простой замены
Обозначения на схеме:
N1, N2 - 32 - разрядные накопители;
СМ1 - 32 - разрядный сумматор по модулю (+);
СМ2 - 32 - разрядный сумматор по модулю 2 ();
R - 32 - разрядный регистр циклического сдвига;
КЗУ - ключевое запоминающее устройство на 256 бит, состоящее из восьми 32 - разрядных накопителей Х0, Х1, Х2., Х7;
S - блок подстановки, состоящий из восьми узлов замены (S - блоков замены) Sl, S2, S3,…, S8.
Эти последовательности вводят в накопители Nl, и N2 перед началом первого цикла зашифровывают. В результате начальное заполнение накопителя N1:
32, 31,…, 2, 1 номер разряда N1;
начальное заполнение накопителя N2:
32, 31,…. 2, 1 номер разряда N2.
Первый цикл (j = 1) процедуры зашифровывания 64-разрядного блока открытых данных можно описать уравнениями:
Здесь а(1) - заполнение N1, после 1-го цикла зашифровывания; b(l) - заполнение N2 после 1-го цикла зашифровывания; f - функция шифрования.
Аргументом функции f является сумма по модулю 232 числа а(о) (начального заполнения накопителя N1) и числа К0 подключа, считываемого из накопителя Х0 КЗУ. Каждое из этих чисел равно 32 битам.
Функция f включает две операции над полученной 32-разрядной суммой (а(0) + K0).
Первая операция называется подстановкой (заменой) и выполняется блоком подстановки S. Блок подстановки S состоит из восьми узлов замены (S-блоков замены) Sl, S2..-, S8 с памятью 64 бит каждый.
Вторая операция - циклический сдвиг влево (на 11 разрядов) 32-разрядного вектора, полученного с выхода блока подстановки S. Циклический сдвиг выполняется регистром сдвига R. Затем результат работы функции шифрования f суммируют поразрядно по модулю 2 в сумматоре СМ2 с 32-разрядным начальным заполнением b(0) накопителя N2. Далее полученный на выходе СМ2 результат (значение a(l)) записывают в накопитель N, а старое значение N1 (значение а(0)) переписывают в накопитель N2 (значение b(l) = a(0)). Первый цикл завершен. Последующие циклы осуществляются аналогично. Таким образом, при зашифровывании в 32 циклах осуществляется следующий порядок выборки из КЗУ подключей:
К0, К1, K2, K3, K4, K5, K6, K7, K0, K1, K2, K3, K4, K5, K6, K7,
К0, К1, K2, K3, K4, K5, K6, K7, K7, K1, K2, K3, K4, K5, K6, K0.
В 32-м цикле результат из сумматора СМ2 вводится в накопитель N2, а в накопителе N1, сохраняется прежнее заполнение. Полученные после 32-го цикла зашифровывания заполнения накопителей N1 и N2 являются блоком зашифрованных данных Тш, соответствующим блоку открытых данных
Блок зашифрованных данных Тш (64 разряда) выводится из накопителей N1, N2 в следующем порядке: из разрядов 1…32 накопителя N1, затем из разрядов 1…32 накопителя N2, т.е. начиная с младших разрядов:
Tш = (а1 (32) а2 (32),…, а31 (32) а32 (32), bl(32), b2 (32),…, b31 (32), b32 (32)). Остальные блоки открытых данных зашифровываются в режиме простой замены аналогично.