- •Техническое задание
- •Описание алгоритма режима простой замены
- •Шифрование открытых данных в режиме простой замены
- •32, 31, ... 2, 1 Номер разряда n2
- •Расшифрование в режиме простой замены
- •32, 31, ..., 2, 1 Номер разряда n1
- •32 31, ..., 2, 1 Номер разряда n2
- •32, 31, ..., 2, 1 Номер разряда n1
- •32, 31, ..., 2, 1 Номер разряда n2
- •Алгоритм
- •Листинг
- •Пример выполнения
- •Литература
Расшифрование в режиме простой замены
Криптосхема, реализующая алгоритм расшифрования в режиме простой замены, имеет тот же вид, что и при зашифровании (см. рис. 3.11).
В КЗУ вводят 256 бит ключа, на котором осуществлялось зашифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки Тш по 64 бита в каждом. Ввод любого блока
Тш = (a1 (32), а2(32),.... а32(32), b1(32), b2(32),.... b32(32))
в накопители N1 и N2 производят так, чтобы начальное значение накопителя N1 имело вид
(а32(32),а31(32), ...,а2(32),а1(32)),
32, 31, ..., 2, 1 Номер разряда n1
а начальное заполнение накопителя N2 – вид
(b32(32)b31(32), ..., b2(32)b1(32)).
32 31, ..., 2, 1 Номер разряда n2
Расшифрование осуществляется по тому же алгоритму, что и зашифрование, с тем изменением, что заполнения накопителей Х0, Xl ,..., Х7 считываются из КЗУ в циклах расшифрования в следующем порядке:
K0, K1, К2, К3, К4, K5, K6, К7, К7, K6, K5, K4, К3, К2, K1, K0,
K7, K6, K5, К4, K3, К2, K1, K0, K7, K6, K5, K4, K3, K2, K1, K0.
Уравнения расшифрования имеют вид:
Полученные после 32 циклов работы заполнения накопителей N1 и N2 образуют блок открытых данных
Т0 = (a1(0), а2(0), .... а32(0), b1(0), b2(0), ..., b32(0)),
соответствующий блоку зашифрованных данных Тш. При этом состояние накопителя N1
(а32(0),а31(0),..,а2(0),а1(0)),
32, 31, ..., 2, 1 Номер разряда n1
состояние накопителя N2
(b32(0)b31(0), ..., b2(0)b1(0)).
32, 31, ..., 2, 1 Номер разряда n2
Аналогично расшифровываются остальные блоки зашифрованных данных.
Если алгоритм зашифрования в режиме простой замены 64-битового блока Т0 обозначить через А, то
А (Т0) = А (а(0), b(0)) = (а (32), b (32)) =ТШ.
Алгоритм
На входе основного шага определяется 64-битный блок данных N = (N1, N2), где N1 - младшая 32-битовая часть, а N2 - старшая 32-битовая часть. Обе части рассматриваются как отдельные 32-битовые числа. На вход основного шага также поступает один из восьми элементов ключа (какой именно, будет рассказано далее). 32-битовый элемент ключа обозначается за X. Далее производятся следующие действия:
S = N1 + X (mod 232).
Число S разбивается на 8 частей: S0,S1,S2,S3, S4,S5,S6,S7 по 4 бита каждая, где S0 - младшая, а S7 - старшая части числа S.
Для всех i от 0 до 7: Si = T(i, Si), где T(a, b) означает ячейку таблицы замен с номером строки a и номером столбца b (счет с нуля).
Новое число S, полученное на предыдущем шаге циклически сдвигается в сторону старших разрядов на 11 бит.
S = S xor N2, где xor - операция исключающего или.
N2 = N1.
N1 = S.
Как результат основного шага криптопреобразования возвращается блок данных N = (N1, N2), где N2 равно исходному N1, а N1 - результат преобразований основного шага.
Берем блок данных N и вызываем последовательно процедуру основного шага криптопреобразования со следующими ключами:
Для цикла зашифрования (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-Р): X0,X1,X2,X3, X4,X5,X6,X7X7,X6,X5, X4,X3,X2,X1,X0X7,X6, X5,X4,X3,X2,X1,X0X7, X6,X5,X4,X3,X2,X1,X0.