Открытые данные, подлежащие шифрованию, разбивают на 64‑разрядные блоки . Процедура шифрования 64-разрядного блока в режиме простой замены включает 32 цикла . В ключевое запоминающее устройство вводят 256 бит ключа в виде восьми 32-разрядных подключей (чисел)
.
Последовательность битов блока
разбивают на две последовательности по 32 бита: и , где ‑ левые или старшие биты, ‑ правые или младшие биты.
Работа алгоритма в режиме простой замены изображена на рис. 4.1.
Обозначения на схеме:
, 32-разрядные накопители;
32-разрядный сумматор по модулю ;
CM2 32-разрядный сумматор по модулю ;
32-разрядный регистр циклического сдвига;
‑ ключевое запоминающее устройство на 256 бит, состоящее из восьми 32-разрядных накопителей ;
‑ блок подстановки, состоящий из восьми узлов замены ( -блоков замены) .
Эти последовательности вводят в накопители и перед началом первого цикла шифрования. В результате начальное заполнение накопителя :
начальное заполнение накопителя :
|
|
Первый цикл процедуры шифрования 64-разрядного блока открытых данных можно описать уравнениями:
Здесь ‑ заполнение после 1-го цикла шифрования; ‑ заполнение после 1-го цикла шифрования; ‑ функция шифрования.
Аргументом функции является сумма по модулю числа (начального заполнения накопителя ) и числа подключа, считываемого из накопителя КЗУ. Каждое из этих чисел равно 32 битам.
Функция включает две операции над полученной 32-разрядной суммой ().
Первая операция называется подстановкой (заменой) и выполняется блоком подстановки . Блок подстановки состоит из восьми узлов замены ( -блоков замены) с памятью 64 бит каждый. Поступающий из на блок подстановки 32-разрядный вектор разбивают на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в четырехразрядный вектор соответствующим узлом замены. Каждый узел замены можно представить в виде таблицы-перестановки шестнадцати четырехразрядных двоичных чисел в диапазоне . Входной вектор указывает адрес строки в таблице, а число в этой строке является выходным вектором. Затем четырехразрядные выходные векторы последовательно объединяют в 32-разрядный вектор. Узлы замены (таблицы-перестановки) представляют собой ключевые элементы, которые являются общими для сетей ТКС и редко изменяются. Эти узлы замены должны сохраняться в секрете.
Вторая операция ‑ циклический сдвиг влево (на 11 разрядов) 32-разрядного вектора, полученного с выхода блока подстановки . Циклический сдвиг выполняется регистром сдвига . Затем результат работы функции шифрования суммируют поразрядно по модулю 2 в сумматоре c 32-разрядным начальным заполнением накопителя . Затем полученный на выходе результат (значение ) записывают в накопитель , а старое значение (значение ) переписывают в накопитель (значение ). Первый цикл завершен. Последующие циклы осуществляются аналогично, при этом во втором цикле из КЗУ считывают заполнение ‑ подключ , в третьем цикле ‑ подключ и т.д., в восьмом цикле ‑ подключ . В циклах с 9-го по 16-й, а также в циклах с 17-го по 24-й подключи из КЗУ считываются в том же порядке: . В последних восьми циклах с 25-го по 32-й порядок считывания подключей из КЗУ обратный: . Таким образом, при шифровании в 32 циклах осуществляется следующий порядок выборки из КЗУ подключей:
|
|
В 32-м цикле результат из сумматора вводится в накопитель , а в накопителе сохраняется прежнее заполнение. Полученные после 32-го цикла шифрования заполнения накопителей и являются блоком шифрованных данных , соответствующим блоку открытых данных .
Уравнения шифрования в режиме простой замены имеют вид
где ‑ заполнение после -го цикла шифрования; ‑ заполнение после -го цикла шифрования, .
Блок зашифрованных данных (64 разряда) выводится из накопителей , в следующем порядке: из разрядов накопителя , затем из разрядов накопителя , т.е. начиная с младших разрядов:
.
Остальные блоки открытых данных зашифровываются в режиме простой замены аналогично.