Полная версия

Главная arrow Информатика arrow Блочные алгоритмы шифрования ГОСТ и DES

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ   >>

Краткие теоретические сведения

Открытые данные, подлежащие зашифровыванию, разбивают на 64 - разрядные блоки То. Процедура зашифровывания 64 - разрядного блока То в режиме простой замены включает 32 цикла (j = 1,2,…, 32). В ключевое запоминающее устройство вводят 256 бит ключа К в виде восьми 32 - разрядных подключей (чисел) K,

Последовательность бит блока T0 разбивают на две последовательности по 32 бита: b(0) и a (0) где b(0) - левые биты, а(0) - правые биты.

Работа алгоритма в режиме простой замены изображена на рисунке 4:

Рисунок 4.1 - Схема реализации режима простой замены

Обозначения на схеме:

N1, N2 - 32 - разрядные накопители;

СМ1 - 32 - разрядный сумматор по модулю (+);

СМ2 - 32 - разрядный сумматор по модулю 2 ();

R - 32 - разрядный регистр циклического сдвига;

КЗУ - ключевое запоминающее устройство на 256 бит, состоящее из восьми 32 - разрядных накопителей Х0, Х1, Х2., Х7;

S - блок подстановки, состоящий из восьми узлов замены (S - блоков замены) Sl, S2, S3,…, S8.

Эти последовательности вводят в накопители Nl, и N2 перед началом первого цикла зашифровывают. В результате начальное заполнение накопителя N1:

32, 31,…, 2, 1 номер разряда N1;

начальное заполнение накопителя N2:

32, 31,…. 2, 1 номер разряда N2.

Первый цикл (j = 1) процедуры зашифровывания 64-разрядного блока открытых данных можно описать уравнениями:

Здесь а(1) - заполнение N1, после 1-го цикла зашифровывания; b(l) - заполнение N2 после 1-го цикла зашифровывания; f - функция шифрования.

Аргументом функции f является сумма по модулю 232 числа а(о) (начального заполнения накопителя N1) и числа К0 подключа, считываемого из накопителя Х0 КЗУ. Каждое из этих чисел равно 32 битам.

Функция f включает две операции над полученной 32-разрядной суммой (а(0) + K0).

Первая операция называется подстановкой (заменой) и выполняется блоком подстановки S. Блок подстановки S состоит из восьми узлов замены (S-блоков замены) Sl, S2..-, S8 с памятью 64 бит каждый.

Вторая операция - циклический сдвиг влево (на 11 разрядов) 32-разрядного вектора, полученного с выхода блока подстановки S. Циклический сдвиг выполняется регистром сдвига R. Затем результат работы функции шифрования f суммируют поразрядно по модулю 2 в сумматоре СМ2 с 32-разрядным начальным заполнением b(0) накопителя N2. Далее полученный на выходе СМ2 результат (значение a(l)) записывают в накопитель N, а старое значение N1 (значение а(0)) переписывают в накопитель N2 (значение b(l) = a(0)). Первый цикл завершен. Последующие циклы осуществляются аналогично. Таким образом, при зашифровывании в 32 циклах осуществляется следующий порядок выборки из КЗУ подключей:

К0, К1, K2, K3, K4, K5, K6, K7, K0, K1, K2, K3, K4, K5, K6, K7,

К0, К1, K2, K3, K4, K5, K6, K7, K7, K1, K2, K3, K4, K5, K6, K0.

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

Блок зашифрованных данных Тш (64 разряда) выводится из накопителей N1, N2 в следующем порядке: из разрядов 1…32 накопителя N1, затем из разрядов 1…32 накопителя N2, т.е. начиная с младших разрядов:

Tш = (а1 (32) а2 (32),…, а31 (32) а32 (32), bl(32), b2 (32),…, b31 (32), b32 (32)). Остальные блоки открытых данных зашифровываются в режиме простой замены аналогично.

 
Перейти к загрузке файла
<<   СОДЕРЖАНИЕ   >>