Здавалка
Главная | Обратная связь

Режим простой замены



Для реализации алгоритма шифрования данных в режиме простой заметы используется только часть блоков общей криптосистемы (рис.4.8). Обозначения на схеме:

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

CM1 - 32-разрядный сумматор по модулю 232 ( * );

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

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

КЗУ – ключевое запоминающее устройство на 256 бит, состоящее из восьми 32-разрядных накопителей X0,X1,X2, …, X7;

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

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

K=K7K6K5K4K3K2K1K0.

Последовательность битов блока

T0=(a1(0),a2(0), …, a31(0),a32(0),b1(0),b2(0), …, b31(0),b32(0))

разбивают на две последовательности по 32 бита: b(0) a(0), где b(0) – левые или старшие биты, а a(0) – правые или младшие биты.

Эти последовательности вводят в накопители N1 и N2 перед началом первого цикла зашифрования. Начальное заполнение накопителя N1:

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

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

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

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

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

Первая операция называется подстановкой (заменой) и выполняется блоком подстановки S. Блок подстановки S состоит из восьми узлов замены (S-блоков замены) S1,S2,S3, …, S7,S8 с памятью 64 бит каждый. Поступающий из CM1 на блок подстановки S 32-разрядный вектор разбивают на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в четырехразрядный вектор соответствующим узлом замены. Каждый узел замены можно представить в виде таблицы-перестановки шестнадцати четырехразрядных двоичных чисел в диапазоне 0000…1111. Входной вектор указывает адрес строки в таблице, а число в этой строке является выходным вектором. Затем четырехразрядные выходные векторы последовательно объединяют в 32-разрядный вектор. Узлы замены (таблицы-перестановки) представляют собой ключевые элементы, которые являются общими для сети ЭВМ и редко меняются. Эти узлы замены должны сохраняться в секрете.

Вторая операция – циклический сдвиг влево (на 11 разрядов) 32 разрядного вектора, полученного с выхода блока подстановки S. Циклический сдвиг выполняется регистром сдвига R.

Далее результат работы функции шифрования f суммируются поразрядно по модулю 2 в сумматоре CM2 с 32-разрядным начальным заполнением b(0) накопителя N2. Затем полученный на выходе результат (значение а(1)) записывают в накопитель N1, а старое значение N1 (значение а(0)) переписывают в накопитель N2 (значение b(1)=a(0)). Первый цикл завершен.

Последующие циклы осуществляются аналогично, при этом во втором цикле из КЗУ считывают заполнение X1 - подключ К1, в третьем цикле – подключ К2 и т.д., в восьмом цикле – подключ К7. В циклах с 9-го по 16-й, а также в циклах с 17-го по 24-й подключи из КЗУ считываются в том же порядке: K0,K1,K2, …, K7. В последних восьми циклах с 25-го по 32-й порядок считывания подключей из КЗУ обратный: K7,K6, …, K2, K1, K0. Таким образом, при зашифровании в 32 циклах осуществляется следующий порядок выборки из КЗУ подключей:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, K2, K3, K4, K5, K6, K7,

K0, K1, K2, K3, K4, K5, K6, K7, K7, K6, K5, K4, K3, K2, K1, K1.

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

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

при j=1...24,

при j=25…31,

при j=32,

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

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

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

Tш=(a1(32),a2(32), …, a32(32), b1(32),b2(32), …, b32(32)).

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

Расшифрование в режиме простой замены. Криптосхема, реализующая алгоритм расшифрования в режиме простой замены, имеет тот же вид, что и при зашифровании (см. рис.3.11).

В КЗУ вводят 256 бит ключа, на котором осуществлялось Зашифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки Тш по 64 бита в каждом. Ввод любого блока

Tш=(a1(32),a2(32), …, a32(32), b1(32),b2(32), …, b32(32))

в накопители N1 и N2 производят так, чтобы начальное значение накопителя N1 имело вид

а начальное заполнение накопителя N2 - вид

Расшифрование осуществляется по тому же алгоритму, что и зашифрование, с тем изменением, что заполнение накопителей X0,X1,X2, …, X7 считываются из КЗУ в циклах расшифрования в следующем порядке:
K0, K1, K2, K3, K4, K5, K6, K7, K7, K7, K6, K5, K4, K3, K2, K1, K1

K7, K7, K6, K5, K4, K3, K2, K1, K0, K7, K6, K5, K4, K3, K2, K1, K1.

Уравнения расшифрования имеют вид:

при j=1...8,

при j=9…31,

при j=32.

 

Полученные после 32 циклов работы заполнения накопителей и образуют блок открытых данных

T0=(a1(0),a2(0), …, a32(0), b1(0),b2(0), …, b32(0)),

соответсвующий блоку зашифрованных данных Тш. При этом состояние накопителя N1

состояние накопителя N2

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

Если алгоритм зашифрования в режиме простой замены 64-битового блока Т0 обозначить через А, то

A(T0)=A(a(0),b(0))=(a(32),b(32))=Tш.

Следует иметь ввиду, что режим простой замены допустимо использовать для шифрования данных только в ограниченных случаях – при выработке ключа и зашифровании его с обеспечением имитозащиты для передачи по каналам связи или для хранения в памяти ЭВМ.

 

 
 


 
 

 


Режим гаммирования

Зашифрование открытых данных в режиме гаммирования. Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования, показана на рис.3.12. Открытые данные разбивают на 64-разрядные блоки

T0(1), T0(2), …, T0(i), …, T0(m),

Где - i-й 64-разрядный блок открытых данных, i = 1…m, m определяется объемом шифруемых данных.

 

Эти блоки поочередно зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 в сумматоре CM5 с гаммой шифра Гш, которая вырабатывается блоками по 64 бита, т.е.

Гш=(Гш(1), Гш(2), …, Гш(i), Гш(m)),

где Гш(i) - i-й 64-разрядный блок, i = 1…m.

Число двоичных разрядов в блоке T0(m) может быть меньше 64, при этом неиспользованная для зашифрования часть гаммы шифра из блока Гш(m) отбрасывается.

Уравнение зашифрования данных в режиме гаммирования имеет вид

Tш(i)= T0(m) Гш(i),

где Гш(i)=A(Yi-1 * C2, Zi-1 *`C1), i=1…m; Tш(i) - i-й блок 64-разрядного блока зашифрованного текста; A(∙) - функция зашифрования в режиме простой замены; С1, С2 – 32-разрядные двоичные константы; Yi, Zi - 32-разрядные двоичные последовательности.

Величины Yi, Zi определяются итерационно по мере формирования гаммы Гш следующим образом:

где - синхропосылка (64-разрядная двоичная последовательность),

Рассмотрим реализацию процедуры зашифрования в режиме гаммирования. В накопители N6 и N5 заранее записаны 32-разрядные двоичные константы С1 и С2, имеющие следующие значения (в шестнадцатеричной форме):

C1=01010104(16), C2=01010101(16).

В КЗУ вводится 256 бит ключа; в накопители N1 и N2 - 64-разрядная двоичная последовательность (синхропосылка)

Синхропосылка является исходным заполнением накопителей N1 и N2 для последовательной выработки m блоков гаммы шифра.

Исходное заполнение накопителя N1:

исходное заполнение накопителя N2:

Исходное заполнение N1 и N2 (синхропосылка ) зашифровывается в режиме простой замены. Результат зашифрования

переписывается в 32-разрядные накопители N3 и N4 так, что заполнение N1 переписывается в N3, а заполнение N2 - в N4.

Заполнение накопителя N4 суммируют по модулю (232-1) в сумматоре CM4 с 32-разрядной константой С1 из накопителя N6. Результат записывается в N4. Заполнение накопителя N3 суммируется по модулю 232 в сумматоре СМ3 с 32-разрядной константой С2 из накопителя N5. Результат записывается в N3. Заполнение N3 переписывают в N1, а заполнение N4 - в N2, при этом заполнения N3, N4 сохраняются. Заполнение накопителей N1 и N2 зашифровывается в режиме простой замены.

Полученное в результате зашифрования заполнение накопителей N1, N2 образует первый 64-разрядный блок гаммы шифра , который суммируют поразрядно по модулю 2 в сумматоре CM5 с первым 64-разрядным блоком открытых данных

.

В результате суммирования по модулю 2 значений Гш(1) и T0(1) получают первый 64-разрядный блок зашифрованных данных:

где

Для получения следующего 64-разрядного блока гаммы шифра Гш(2) заполнение N4 суммируется по модулю в сумматоре с константой из . Результат записывается в . Заполнение суммируется по модулю (232-1) в сумматоре СМ4 с константой С2 из N5. Результат записывается в N3. Новое заполнение N3 переписывают в N1, а новое заполнение N4 - в N2, при этом заполнения N3 и N4 сохраняют. Заполнения N1, N2 зашифровывают в режиме простой замены.

Полученное в результате зашифрования заполнение накопителей N1 и N2 образует 64-разрядный блок гаммы шифра Гш(2), который суммируется поразрядно по модулю 2 в сумматоре CM5 со вторым блоком открытых данных T0(2):

Аналогично вырабатываются блоки гаммы шифра Гш(3), Гш(4), …, Гш(m) и зашифровываются блоки открытых данных T0(3), T0(4), …, T0(m).

В канал связи или память ЭВМ передаются синхропосылка и блоки зашифрованных данных

Tш(1), Tш(2), …, Tш(m).

Расшифрование в режиме гаммирования. При расшифровке криптосхема имеет тот же вид, что и при зашифровании (см.рис.3.12).

Уравнение расшифрования:

Следует отметить, что расшифрование данных возможно только при наличии синхропосылки, которая не является секретным элементом шифра и может храниться в памяти ЭВМ или передаваться по каналам связи вместе с зашифрованными данными.

Рассмотрим реализацию процедуры расшифрования. В КЗУ вводят 256 бит ключа, с помощью которого осуществляется зашифрование данных T0(1), T0(2), …, T0(m). В накопители N1 и N2 вводится синхропосылка, и осуществляется процесс выработки m блоков гаммы шифра Гш(1), Гш(2), …, Гш(m). Блоки зашифрованных данных Tш(1), Tш(2), …, Tш(m) суммируются поразрядно по модулю 2 в сумматоре CM5 с блоками гаммы шифра Гш(1), Гш(2), …, Гш(m). В результате получаются блоки открытых данных

(1), T0(2), …, T0(m);

при этом T0(m) может содержать меньше 64 разрядов.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.