Зашифрование открытых данных в режиме простой замены

 

Криптосхема, реализующая алгоритм зашифрования в режиме простой замены, должна иметь вид, указанный на рис. 1.

Открытые данные, подлежащие зашифрованию, разбивают на блоки по 64 бита в каждом. Ввод любого блока Т0 = (а1(0), а2(0),..., а31(0), а32(0), b1(0), b2(0),..., b32(0)) двоичной информации в накопители N1 и N2 производится так, что значение а1(0) вводится в 1-й разряд N1, значение а2(0) вводится во 2-й разряд N1 и т. д., значение а32(0) вводится в 32-й разряд N1; значение b1(0) вводится в 1-й разряд N2, значение b2(0) вводится во 2-й разряд N2, и т. д., значение b32(0) вводится в 32-й разряд N2. В результате получают состояние 32(0), а31(0),..., а2(0), а1(0)) накопителя N1 и состояние (b32(0), b310(0),..., b1(0)) накопителя N 2.

В КЗУ вводятся 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 сохраняется.

Результат суммирования преобразуется в блоке подстановки К и полученный вектор поступает на вход регистра R, где циклически сдвигается на одиннадцать шагов в сторону старших разрядов. Результат сдвига суммируется поразрядно по модулю 2 в сумматоре СМ2 с 32-разрядным заполнением накопителя N2. Полученный в СМ2 результат записывается в N1, при этом старое заполнение N1 переписывается в N2. Первый цикл заканчивается.

Последующие циклы осуществляются аналогично, при этом во 2-м цикле из КЗУ считывается заполнение X1, в 3-м цикле из КЗУ считывается заполнение X2 и т. д., в 8-м цикле из КЗУ считывается заполнение X7. В циклах с 9-го по 16-й, а также в циклах с 17-го по 24-й заполнения из КЗУ считываются в том же порядке:

X0, X1, X2, X3, X4, X5, X6, X7.

В последних восьми циклах с 25-го по 32-й порядок считывания заполнений КЗУ обратный:

X7, X6, X5, X4, X3, X2, X1, X0.

Таким образом, при зашифровании в 32 циклах осуществляется следующий порядок выбора заполнений накопителей:

X0, X1, X2, X3, X4, X5, X6, X7, X0, X1, X2, X3, X4, X5, X6, X7

X0, X1, X2, X3, X4, X5, X6, X7 , X7, X6, X5, X4, X3, X2, X1, X0

В 32 цикле результат из сумматора СМ2 вводится в накопитель N2, а в накопителе N1 сохраняется старое заполнение.

Полученные после 32-цикла зашифрования заполнения накопителей N1 и N2 являются блоком зашифрованных данных, соответствующим блоку открытых данных.

Уравнения зашифрования в режиме простой замены имеют вид:

 

    при

 

              при j = 25 - 31;

 

а (32) = а (31);

b (32) = (a (31)   X 0) KR Å b (31)

             

при j = 32,

где а(0) = (а32(0), а31(0),..., а1(0)) - начальное заполнение N1 перед первым циклом зашифрования;

b(0) = (b32(0), b31(0),..., b1(0)) - начальное заполнение N2 перед первым циклом зашифрования;

a(j)=(a 32 (j), a31(j),..., a1(j))- заполнение N1 после j- цикла зашифрования;

b(j) = (b32(j), b31(j),..., b1(j)) - заполнение N2 после j -цикла зашифрования, j = 1÷32.

 

 

 

 

Рис.1.

 

Знак  означает поразрядное суммирование 32-разрядных векторов по модулю 2.

Знак  означает суммирование 32-разрядных векторов по модулю 232. Правила суммирования по модулю 232 приведены в приложении 4;

R - операция циклического сдвига на одиннадцать шагов в сторону старших разрядов, т. е.:

R(r32, r31, r30, r29, r28, r27, r26, r25, r24, r23, r22, r21, r20,..., r2, r1) =

= (r21, r20,..., r2, r1, r32, r31, r30, r29, r28, r27, r26, r25, r24, r23, r22).

 

64-разрядный блок зашифрованных данных Тш выводится из накопителей N1, N2 в следующем порядке: из 1-го, 2-го,..., 32-го разрядов накопителя N1, затем из 1-го, 2-го,..., 32-го разрядов накопителя N2, т. е.:

Тш = (а1(32), а2(32),..., а32(32), b1(32), b2(32),..., b32(32)).

Остальные блоки открытых данных в режиме простой замены зашифровываются аналогично.

 


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



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