Зашифрование данных
Криптосхема, реализующая алгоритм
зашифрования в режиме простой замены, должна
иметь вид, показанный на следующей фиг.:
Структурная схема
зашифрования в режиме простой замены
Открытые данные, подлежащие
зашифрованию, разбивают на блоки по 64 бита
каждый. Ввод любого блока Tо = (a1(0), a2(0),…, a31(0), a32(0),
b1(0), b2(0),.., b32(0) двоичной информации в накопители N1
и N2 производятся так, что значение a1(0) вводится в
1-й разряд N1, значение a2(0) вводится во 2-й разряд
накопителя и т.д., значение a32(0) вводится в 32-й
разряд N1: значение b1(0) вводится в 1-й разряд N2,
значение b2(0) вводится во 2-й разряд накопителя и
т.д., значение b32(0) вводится в 32-й разряд N2. В
результате получаем состояние (a32(0), a31(0),…, a2(0),
a1(0)) накопителя N1 и состояние (b32(0), b31(0),…, b2(0), b1(0))
накопителя N2.
В КЗУ вводится 256 бит ключа. Содержимое восьми
32-разрядных накопителей X0, X1,…., X7 имеет вид:
X0 = (W32, W31,…, W2, W1)
X1 = (W64, W63,…, W34, W33)
. . .
X7 = (W256, W255,…, W226, W225)
Алгоритм зашифрования
64-разрядного блока открытых данных в режиме
простой замены состоит из 32-х циклов.
В первом цикле начальное заполнение
накопителя N1 суммируется по модулю 232 в сумматоре
СМ1 с заполнением накопителя X0, при этом
заполнение накопителя N1 сохраняется.
Результат суммирования преобразуется в блоке
подстановке K и полученный вектор поступает на
вход регистра R, где циклически сдвигается на
одиннадцать шагов в сторону старших разрядов.
Результат сдвига суммируется поразрядно по
модулю 2 в сумматоре СМ2 с 32-разрядным заполнением
накопителя N2. Полученный в СМ2 результат
записывается в N1, при этом старое заполнение N1
переписывается в N2. Первый цикл заканчивается.
Последующие циклы осуществляются аналогично,
при этом во 2-м цикле из КЗУ считывается
заполнение X1, в 3-ем цикле из КЗУ считывается
заполнение X2 и т.д., в 8-ом цикле из КЗУ считывается
заполнение X7. В циклах с 9-го по 16-ый, а также в
циклах с 17-го по 24-ый заполнения из КЗУ
считываются в том же порядке.
В последних восьми циклах с 25-ый по 32-ой порядок
считывания заполнений КЗУ обратный.
В 32-ом цикле результат из сумматора СМ2 вводится в
накопитель N2, а в накопителе N1 сохраняется старое
заполнение.
Полученные после 32-го цикла зашифрования
заполнения накопителей N1 и N2 являются блоком
зашифрованных данных, соответствующим блоку
открытых данных.
64-разрядный блок зашифрованных данных Тш
выводится из накопителей N1 и N2 в следующем
порядке: из 1-го, 2-го,…, 32-го разряда накопителя N1,
затем из 1-го, 2-го,…, 32-го разрядов накопителя N2.
Остальные блоки открытых данных в режиме простой
замены зашифровываются аналогично.
Расшифрование данных
Криптосхема, реализующая алгоритм
расшифрования в режиме простой замены имеет тот
же вид, что и при зашифровании. В КЗУ вводятся 256
бит того же ключа, на котором осуществлялось
зашифрование открытых данных.
Зашифрованные данные разбиваются на блоки по
64 бита каждый. Ввод любого блока Tш = (a1(32), a2(32),…,
a31(32), a32(32), b1(32), b2(32),.., b32(32) двоичной информации в
накопители N1 и N2 производятся так, что значение
a1(32) вводится в 1-й разряд N1, значение a2(32) вводится
во 2-й разряд накопителя и т.д., значение a32(32)
вводится в 32-й разряд N1: значение b1(32) вводится в
1-й разряд N2, значение b2(32) вводится во 2-й разряд
накопителя и т.д., значение b32(32) вводится в 32-й
разряд N2.
Расшифрование осуществляется по тому же
алгоритму, что и зашифрование открытых данных, с
тем изменением, что заполнения накопителей X0,
X1,…,X7 считываются из КЗУ в циклах расшифрования в
следующем порядке:
X0, X1, X2, X3, X4, X5, X6, X7, X7, X6, X5, X4, X3, X2,. X1, X0
X7, X6, X5, X4, X3, X2,. X1, X0, X7, X6, X5, X4, X3, X2,. X1, X0
Полученные после 32-х циклов работы
заполнения накопителей N1 и N2 составляют блок
открытых данных.
Аналогично расшифровываются остальные блоки
зашифрованных данных.
Алгоритм зашифрования в режиме простой
замены 64-битового блока То обозначается через A,
т.е.:
A (Tо) = A (a(0), b(0))) = (a(32),
b(32)))= Tш