Для реализации алгоритма шифрования данных в режиме простой замены используется только часть блоков общей криптосистемы (рис.3.12). Обозначения на схеме:
N1, N2 – 32-разрядные накопители;
СМ1 – 32-разрядный сумматор по модулю 232 (⊞);
СМ2 – 32-разрядный сумматор по модулю 2 ();
R – 32-разрядный регистр циклического сдвига;
КЗУ – ключевое запоминающее устройство на 256 бит, состоящее из восьми 32-разрядных накопителей Х0, Х1, Х2,..., Х7;
S – блок подстановки, состоящий из восьми узлов замены (S-блоков замены) S1, S2, S3,..., S7, S8.
Зашифрование открытых данных в режиме простой замены. Открытые данные, подлежащие зашифрованию, разбивают на 64‑разрядные блоки Т0. Процедура зашифрования 64-разрядного блока Т0 в режиме простой замены включает 32 цикла (j = 1…32). В ключевое запоминающее устройство вводят 256 бит ключа К в виде восьми 32-разрядных подключей (чисел) Кi:
К=К7К6К5К4К3К2К1К0.
Последовательность битов блока
Т0=(a1(0), a2(0),..., a31(0), a32(0), b1(0), b2(0),..., b31(0), b32(0))
разбивают на две последовательности по 32 бита: b(0) a(0), где b(0) – левые или старшие биты, a(0) – правые или младшие биты.Эти последовательности вводят в накопители N1 и N2 перед началом первого цикла зашифрования. В результате начальное заполнение накопителя N1
|
|
a (0) = (a32(0), a31(0),..., a2(0), a1(0)),
32, 31,... 2, 1 номер разряда N1
начальное заполнение накопителя N2
b(0) = (b32(0), b31(0),..., b2(0), b1(0)).
32, 31,... 2, 1 номер разряда N2
Рисунок 3.12 – Схема реализации режима простой замены
Первый цикл (j=1) процедуры зашифрования 64-разрядного блока открытых данных можно описать уравнениями:
Здесь a (1) – заполнение N1 после 1-го цикла зашифровaния; b (1) – заполнение N2 после 1-го цикла зашифрования; f – функция шифрования.
Аргументом функции f является сумма по модулю 232 числа a(0) (начального заполнения накопителя N1) и числа К0 – подключа, считываемого из накопителя Х0 КЗУ. Каждое из этих чисел равно 32 битам.
Функция f включает две операции над полученной 32-разрядной суммой (a (0) ⊞ К0).
Перваяоперация называется подстановкой (заменой) и выполняется блоком подстановки S. Блок подстановки S состоит из восьми узлов замены (S-блоков замены) S1,S2,...,S8 с памятью 64 бит каждый. Поступающий из СМ1 на блок подстановки S 32-разрядный вектор разбивают на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в четырехразрядный вектор соответствующим узлом замены. Каждый узел замены можно представить в виде таблицы-перестановки шестнадцати четырехразрядных двоичных чисел в диапазоне 0000…1111. Входной вектор указывает адрес строки в таблице, а число в этой строке является выходным вектором. Затем четырехразрядные выходные векторы последовательно объединяют в 32‑разрядный вектор. Узлы замены (таблицы-перестановки) представляют собой ключевые элементы, которые являются общими для сети ЭВМ и редко изменяются. Эти узлы замены должны сохраняться в секрете.
|
|
Втораяоперация – циклический сдвиг влево (на 11 разрядов) 32‑разрядного вектора, полученного с выхода блока подстановки S. Циклический сдвиг выполняется регистром сдвига R.
Далее результат работы функции шифрования f суммируют поразрядно по модулю 2 в сумматоре СМ2 с 32-разрядным начальным заполнением b(0) накопителя N2. Затем полученный на выходе СМ2 результат (значение a(1)) записывают в накопитель N1, а старое значение N1 (значение a(0)) переписывают в накопитель N2 (значение b(1) = a(0)). Первый цикл завершен.
Последующие циклы осуществляются аналогично, при этом во втором цикле из КЗУ считывают заполнение Х1 – подключ К1, в третьем цикле – подключ К2 и т.д., в восьмом цикле – подключ К7. В циклах с 9-го по 16-й, а также в циклах с 17-го по 24-й подключи из КЗУ считываются в том же порядке: К0, К1, К2,...,К6, К7. В последних восьми циклах с 25-го по 32-й порядок считывания подключей из КЗУ обратный: К7, К6,..., К2, К1, К0. Таким образом, при зашифровании в 32 циклах осуществляется следующий порядок выборки из КЗУ подключей:
К0, К1, К2, К3, К4, К5, К6, К7, К0, К1, К2, К3, К4, К5, К6, К7,
К0, К1, К2, К3, К4, К5, К6, К7, К7, К6, К5, К4, К3, К2, К1, К0.
В 32-м цикле результат из сумматора СМ2 вводится в накопитель N2, а в накопителе N1 сохраняется прежнее заполнение. Полученные после 32-го цикла зашифрования заполнения накопителей N1 и N2 являются блоком зашифрованных данных Тш, соответствующим блоку открытых данных Т0.
Уравнения зашифрования в режиме простой замены имеют вид:
при j=1…24,
при j=25…31,
при j=32
где a (j) = (a32(j), a31(j),..., a1(j)) – заполнение N1 после j-го цикла зашифрования;
b (j) = (b32(j), b31(j),..., b1(j)) – заполнение N2 после j-го цикла зашифрования, j=1…32.
Блок зашифрованных данных Тш (64 разряда) выводится из накопителей N1, N2 в следующем порядке: из разрядов 1…32 накопителя N1, затем из разрядов 1…32 накопителя N2, т.е. начиная с младших разрядов:
Тш = (a1(32), a2(32),..., a32(32), b1(32), b2(32),..., b32(32)).
Остальные блоки открытых данных зашифровываются в режиме простой замены аналогично.
Расшифрование в режиме простой замены. Криптосхема, реализующая алгоритм расшифрования в режиме простой замены, имеет тот же вид, что и при зашифровании (см. рис. 3.12).
В КЗУ вводят 256 бит ключа, на котором осуществлялось зашифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки Тш по 64 бита в каждом. Ввод любо-го блока
Тш = (a1(32), a2(32),..., a32(32), b1(32), b2(32),..., b32(32))
в накопители N1 и N2 производят так, чтобы начальное значение накопителя N1 имело вид
(a32(32), a31(32),..., a2(32), a1(32)),
32, 31,..., 2, 1 номер разряда N1
а начальное заполнение накопителя N2 – вид
(b32(32), b31(32),..., b2(32), b1(32)).
32, 31,..., 2, 1 номер разряда N2
Расшифрование осуществляется по тому же алгоритму, что и зашифрование, с тем изменением, что заполнения накопителей X0, Х1,..., Х7 считываются из КЗУ в циклах расшифрования в следующем порядке:
К0, К1, К2, К3, К4, К5, К6, К7, К7, К6, К5, К4, К3, К2, К1, К0,
К7, К6, К5, К4, К3, К2, К1, К0, К7, К6, К5, К4, К3, К2, К1, К0.
Уравнения расшифрования имеют вид:
при j=1…8;
при j=9…31;
при j=32.
Полученные после 32 циклов работы заполнения накопителей N1 и N2 образуют блок открытых данных
Т0 = (a1(0), a2(0),..., a32(0), b1(0), b2(0),..., b32(0)),
соответствующий блоку зашифрованных данных Тш. При этом состояние накопителя N1
(a32(0), a31(0),..., a2(0), a1(0)),
32, 31,..., 2, 1 номер разряда N1
состояние накопителя N2
(b32(0), b31(0),..., b2(0), b1(0)).
32, 31,..., 2, 1 номер разряда N2
Аналогично расшифровываются остальные блоки зашифрованных данных.
Если алгоритм зашифрования в режиме простой замены 64‑битового блока Т0 обозначить через А, то
А(Т0) = А(a (0), b(0)) = (a (32), b(32))=Тш.
Следует иметь в виду, что режим простой замены допустимо использовать для шифрования данных только в ограниченных случаях – при выработке ключа и зашифровании его с обеспечением имитозащиты для передачи по каналам связи или для хранения в памяти ЭВМ.
|
|