Отечественный стандарт шифрования данных

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

В нашей стране установлен единый алгоритм криптографического представления данных для систем обработки информации в сетях ЭВМ, отдельных вычислительных комплексов и ЭВМ, который определяется ГОСТ 28147-89.

Этот алгоритм криптографического преобразования данных представляет собой 64-битовый блочный алгоритм с 256-битовым ключом, предназначен для аппаратной и программной реализации, удовлетворяет криптографическим требованиям и не накладывает ограничений на степень секретности защищаемой информации.

При описании алгоритма используются следующие обозначения:

L и R — последовательности битов;

LR — конкатенация последовательностей L и R, в которой биты последовательности R следуют за битами последовательности L;

(+) — поразрядное сложение по модулю 2 (операция исключающее ИЛИ);

[+] — сложение 32-разрядных чисел по модулю 232;

{+} — сложение 32-разрядных чисел по модулю 232-1.

Числа суммируются по следующему правилу:

A [+] B = A + B, если A + B232,

A [+] B = A + B — 232, если A + B = 232.

A {+} B = A + B , если A + B2^32 — 1,

A {+} B = A + B — (2^32 — 1), если A + B = 2^32 — 1.

Алгоритм предусматривает четыре режима работы:

  • простая замена;
  • гаммирование;
  • гаммирование с обратной связью;
  • выработка имитовставки.

<p>В любом случае для шифрования данных используется 256-битовый ключ K, который представляется в виде восьми 32-битовых подключей Ki:

K = K7K6K5K4K3K2K1K0.

Расшифрование выполняется по тому же ключу, что и шифрование, но этот процесс является инверсией процесса шифрования данных.

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

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

Блок T0 разделяется на две последовательности по 32 бита: В(0)A(0), где В(0) — левые или старшие биты, A(0) — правые или младшие биты.

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

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

{ A(1) = f ( A(0) [+] K0 ) (+) B(0), B(1)=A(0).

Здесь A(1) — заполнение накопителя N1 после 1-го цикла шифрования

{ A(i) = f ( A(i-1) [+] X(j) ) (+) B(i-1), B(i) = A(i-1), если i=25, 26,…, 31; j=32-i
{ A(32) = A(31), B(32) = f ( A(31) [+] X(0) ) (+) B(31),

Здесь i обозначает номер итерации (i = 1, 2,…, 32).

Функция f называется функцией шифрования. Ее аргументом является сумма по модулю 232 числа A(i), полученного на предыдущем шаге итерации, и числа X(j) ключа (размерность каждого из этих чисел равна 32 знакам).

Функция шифрования включает две операции над полученной 32-разрядной суммой. Первая операция называется подстановкой К. Блок подстановки К состоит из 8 узлов замены К(1) … К(8) с памятью 64 бит каждый. Поступающий на блок подстановки 32-разрядный вектор разбивается на 8 последовательно идущих 4-х разрядных векторов, каждый из которых преобразуется в 4-х разрядный вектор соответствующим узлом замены, представляющим собой таблицу из 16 целых чисел в диапазоне 0…15.

Входной вектор определяет адрес строки в таблице, число из которой является выходным вектором. Затем 4-х разрядные выходные векторы последовательно объединяются в 32-разрядный вектор. Таблицы блока подстановки К содержит ключевые элементы, общие для сети ЭВМ и редко изменяемые.

Вторая операция — циклический сдвиг влево 32-разрядного вектора, полученного в результате подстановки К. 64-разрядный блок зашифрованных данных Тшпредставляется в виде Тш=A(32)B(32).

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

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

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

Открытые данные, разбитые на 64-разрядные блоки Т(i) (i=1, 2,…, m, где m определяется обьемом шифруемых данных), зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бит, то есть Гш = (Г(1),Г(2),…,Г(i),…,Г(m)).

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

Уравнение зашифрования данных в режиме гаммирования может быть представлено в следующем виде:

Ш(i) = A (Y(i-1) [+] C2, Z(i-1) {+} C1) (+) T(i) = Г(i) (+) T(i) .

Здесь Ш(i) — 64-разрядный блок зашифрованного текста,
A — функция шифрования в режиме простой замены (аргументами этой функции являются два 32-разрядных числа),
С1 и С2 — константы, заданные в ГОСТ 28147-89,
Y(i) и Z(i) — величины, которые определяются итерационно по мере формирования гаммы следующим образом:

(Y(0), Z(0)) = A(S), где S — 64-разрядная двоичная последовательность (синхропосылка);

(Y(i), Z(i)) = (Y(i-1) [+] C2, Z(i-1) {+} C1) для i = 1, 2,…,m.

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

Статьи к прочтению:

Доклад N.Courtois про ГОСТ 28147-89 на Rump Session FSE 2012


Похожие статьи: