Материал предоставлен http://it.rfet.ru

Российский стандарт шифрования данных ГОСТ 28147-89

Алгоритм, о котором пойдет речь, был разработан в конце 1970-х годов группой советских криптографов во главе с И.А.Заботиным и первоначально предназначался для защиты совершенно секретной информации. В последующие годы гриф секретности снижался и, вскоре после регистрации в качестве государственного стандарта в 1989 году (ГОСТ 28147-89 «Система обработки информации. Защита криптографическая. Алгоритм криптографического преобразования»), шифр, будем называть его для краткости ГОСТ, стал общедоступным.

ГОСТ является блочным шифром. Исходный двоичный текст разбивается на блоки длиной 64 бита. Первые 32 бита (младшие) шифруемого блока заносятся в регистр N1, оставшиеся 32 бита (старшие) – в регистр N2. После этого осуществляются 32 основных шага шифрования с помощью секретного ключа K. Ключ K имеет длину 256. Он разбивается на 8 последовательно идущих 32-разрядных подключей K0, K1,..., K7. Эти шаговые ключи размещаются в ключевом запоминающем устройстве (КЗУ). Для обслуживания 32 основных шифрошагов ключи (по одному на каждый шаг) три раза подаются в прямой последовательности K0 K1, ..., K7 и один раз – в обратной K7, K6, ..., K0.

Основной шаг шифрования состоит в следующем:

  1. производится сложение по модулю 232 содержимого регистра N1 с очередным шаговым ключом из КЗУ;
  2. 32-разрядный результат сложения X разбивается на 8 последовательно идущих 4-разрядных блоков X0, X1, ... , X7, каждый из которых преобразуется в новый 4-разрядный блок по таблице замены S, после чего выходные блоки последовательно объединяются в один 32- разрядный блок;
  3. полученный блок циклически сдвигается на 11 позиций в сторону старших разрядов (влево);
  4. результат сдвига поразрядно складывается по модулю 2 с содержимым регистра N2;
  5. полученная сумма заносится в регистр N1, содержимое которого одновременно перемещается в регистр N2. На последнем, 32-м, шаге сумма заносится в регистр N2, а содержимое регистра N1 сохраняется.

После 32 шагов работы алгоритма содержимое регистров N1 и N2 объединяется в единый 64-разрядный блок криптограммы, соответствующий исходному блоку открытого текста.

Одним из основных моментов, обеспечивающих стойкость шифра, наряду с длиной ключа K, является подстановочный шифратор – таблица замены S, состоящая из 8 строк и 16 столбцов. Строки S0, S1, ... , S7 таблицы называются узлами замены и каждая из них представляет собой некоторую перестановку чисел от 0 до 15. Упомянутые 4-разрядные блоки X0, X1, ..., , X7 поступают каждый на вход своего узла замены, соответственно S0, S1,..., S7. Блок Xi рассматривается как двоичная запись некоторого целого числа от 0 до 15. Это число определяет конкретное место в узле замены (строке) Si соответствующем Xi. Стоящее на этом месте число, в 4-разрядной двоичной записи, подается на выход шифратора S.

Например, пусть блок X5=1001 поступает на вход таблицы замены S. Она отправит его в узел замены S5: В двоичной записи 1001 – это число 9. На девятом месте (счет начинается с 0) в строке S5 стоит число 6. Его двоичная 4-разрядная запись 0110 идет на выход таблицы замены. Определите, какой входной блок будет заменен узлом S5 на 1001, на 1111.

Заметим, что, в отличие от DES, где все S-боксы представлены в явном виде, узлы замены в документации алгоритма ГОСТ не описаны, и приводимые в разных публикациях их примеры восходят к неофициальным данным.

4111007211336859121514

После введения в США стандарта шифрования AES естественно возник вопрос о дальнейшей судьбе шифра ГОСТ. Предпринятые с этой целью исследования показали, что удобства в эксплуатации, криптостойкость и эффективность алгоритмов ГОСТ и AES вполне сопоставимы и, следовательно, в настоящее время нет достаточных оснований для замены шифра ГОСТ на новый стандарт шифрования.

Государственный стандарты шифрования desЭлементы теории чисел