Последовательность битов блока открытого текста
Т0 = (а1(0), а2(0),…,а31(0), а32(0), b1(O), b2(0),...,b31(0), b32(0)) разбивают на две последовательности по 32 бита: b(0) а(0), где b(0) - левые или старшие биты, а(0) - правые или младшие биты.
Эти последовательности вводят в накопители N1 и N2 перед началом первого цикла зашифрования. В результате начальное заполнение накопителя N1
а (0) = (а32(0), а31(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.
5. Первый цикл (i=1) процедуры зашифрования 64-разрядного блока открытых данных можно описать уравнениями:
a(1) = f(a(0) [+] K0) + b(0),
b(1) = a(0).
Здесь а(1) - заполнение N1 после 1-го цикла зашифрования; b(1) - заполнение N2 после 1-го цикла зашифрования; f -функция шифрования.
Аргументом функции f является сумма по модулю 232 числа а(0) (начального заполнения накопителя N1) и числа К0 - подключа, считываемого из накопителя Х0 КЗУ. Каждое из этих чисел равно 32 битам.
Функция f включает две операции над полученной 32-разрядной суммой (а (0) [+] К0).
Первая операция называется подстановкой (заменой) и выполняется блоком подстановки S. Блок подстановки S состоит из восьми узлов замены (S-блоков замены) S1,S2,…,S8 с памятью 64 бит каждый. Поступающий из CM1 на блок подстановки S 32-разрядный вектор разбивают на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в четырехразрядный вектор соответствующим узлом замены. Каждый узел замены можно представить в виде таблицы-перестановки шестнадцати четырехразрядных двоичных чисел в диапазоне 0000... 1111. Входной вектор указывает адрес строки в таблице, а число в этой строке является выходным вектором. Затем четырехразрядные выходные векторы последовательно объединяют в 32-разрядный вектор. Узлы замены (таблицы-перестановки) представляют собой ключевые элементы, которые являются общими для сети ЭВМ и редко изменяются. Эти узлы замены должны сохраняться в секрете.
Вторая операция - циклический сдвиг влево (на 11 разрядов) 32-разрядного вектора, полученного с выхода блока подстановки S. Циклический сдвиг выполняется регистром сдвига R.
Далее результат работы функции шифрования f суммируют поразрядно по модулю 2 в сумматоре СМ2 с 32-разрядным начальным заполнением b(0) накопителя N2. Затем полученный на выходе СМ2 результат (значение а(1)) записывают в накопитель N1, а старое значение N1 (значение а(0)) переписывают в накопитель N2 (значение Ь(1) = а(0)). Первый цикл завершен.
6. Последующие циклы осуществляются аналогично, при этом во втором цикле из КЗУ считывают заполнение X1 – подключ K1, в третьем цикле - подключ К2 и т.д., в восьмом цикле - подключ К7. В циклах с 9-го по 16-й, а также в циклах с 17-го по 24-й подключи из КЗУ считываются в том же порядке: К0, К1,К2,...,К6,К7. В последних восьми циклах с 25-го по 32-й порядок считывания подключей из КЗУ обратный: К7, К6,…, К., К1, К0.
Таким образом, при зашифровании в 32 циклах осуществляется следующий порядок выборки из КЗУ подключей:
К0, К1, К2, К3, К4, К5, К6, К7, К0, К1, К2, Кз, К4, К5, К6, К7,
К0, K1, K2, К3, К4, К5, К6, К7, К7, К6, K5, К4, Кз, К2, K1, К0.
В 32-м цикле результат из сумматора СМ2 вводится в накопитель N2, а в накопителе N1 сохраняется прежнее заполнение. Полученные после 32-го цикла зашифрования заполнения накопителей N1 и N2 являются блоком зашифрованных данных Тш, соответствующим блоку открытых данных То.
Уравнения зашифрования в режиме простой замены имеют вид:
a(j) = f(a(j-1) [+] K(j-1) mod 8) + b(j-1) при j =1…24,
b(j) = a(j-1)
a(j) = f(a(j-1) [+] K32-j ) + b(j-1) при j = 25…31
b(j) = a(j-1)
a(32) = f(a(31) [+] K0 ) + b(31) при j= 32
b(32) = b(31)
где a (j) = (a32(j), a31(j),…, a1(j) ) - заполнение N1 после j-го цикла зашифрования;
b(j) = (b32(j), b31(j),…, b1(j)) – заполнение N2 после j-го цикла зашифрования, j =1…32.
7. Блок зашифрованных данных Тш (64 разряда) выводится из накопителей N1, N2 в следующем порядке: из разрядов 1...32 накопителя N1, затем из разрядов 1...32 накопителя N2, т.е. начиная с младших разрядов:
Тш= (a1(32), a2(32), ..., а32(32), b1(32), b2(32), ..., b32(32)).
Остальные блоки открытых данных зашифровываются в режиме простой замены аналогично.
Расшифрование в режиме простой замены.
Криптосхема, реализующая алгоритм расшифрования в режиме простой замены, имеет тот же вид, что и при зашифровании (см. рис. 15).
В КЗУ вводят 256 бит ключа, на котором осуществлялось зашифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки Тш по 64 бита в каждом. Ввод любого блока
Тш= (a1(32), a2(32), ..., а32(32), b1(32), b2(32), ..., b32(32))
в накопители N1 и N2 производят так, чтобы начальное значение накопителя N1 имело вид
(а32(32), а31(32), ..., а2(32), a1(32)),
32, 31,..., 2, 1 <-номер разряда N1
а начальное заполнение накопителя N2 - вид
(b32(32),b31(32),....,b2(32),b1(32)).
32, 31,..., 2, 1 <-номер разряда N2
Расшифрованиеосуществляется по тому же алгоритму, что и зашифрование, с тем изменением, что заполнения накопителей Х0, X1, ..., Х7 считываются из КЗУ в циклах расшифрования в следующем порядке:
К0, K1, К2, К3, К4, К5, Кб, К7, К7, К6, К5, К4, К3, К2, K1, K0,
К7, К6, К5, К4, К3, К2, К1, К0, К7, К6, К5, К4, К3, К2, К1, К0.
Уравнения расшифрования имеют вид:
a(32-j) = f(a(32-j+1) [+] Kj-1 ) + b(32-j+1) при j = 1…8;
b(32-j) = a(32-j+1)
a(32-j) = f(a(32-j+1) [+] K(32-j) mod 8) + b(32-j+1) при j=9…31;
b(32-j) = a(32-j+1)
a(0) = f(a(1) [+] K0 ) + b(1)
b(0) = b(1) при j = 32.
Полученные после 32 циклов работы заполнения накопителей N1 и N2 образуют блок открытых данных
Т0= (а1(0), а2(0), ..., а32(0), b1(0), b2(0) b32(0)),
соответствующий блоку зашифрованных данных Тш. При этом состояние накопителя N1
(а32(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), Ь(0)) = (а (32), b(32))=ТШ.
Следует иметь в виду, что режим простой замены допустимо использовать для шифрования данных только в ограниченных случаях - при выработке ключа и зашифровании его с обеспечением имитозащиты для передачи по каналам связи или для хранения в памяти ЭВМ.
Дата добавления: 2017-08-01; просмотров: 667;