Открыть сервис

ГОСТ 28147-89

ГОСТ 28147-89 («Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования») — советский и российский стандарт симметричного шифрования, принятый в 1989 году в качестве государственного стандарта СССР. Представляет собой блочный шифр с длиной ключа 256 бит, размером блока 64 бита и числом раундов 32. Долгое время являлся основным криптографическим алгоритмом, используемым в государственных информационных системах России, пока в 2016 году на смену ему не пришёл алгоритм «Кузнечик» (ГОСТ Р 34.12-2015). Однако, ГОСТ 28147-89 продолжает применяться в ряде легаси-систем и сертифицированных средствах криптографической защиты информации (СКЗИ).

История

Разработка стандарта началась в 1970-х годах в 8-м Главном управлении КГБ СССР (ныне — ФСБ России) и велась в обстановке строгой секретности. Целью было создание единого алгоритма шифрования для всех государственных учреждений и ведомств, работающих с информацией, составляющей государственную тайну. В отличие от многих западных стандартов, которые публиковались открыто (например, DES), алгоритм ГОСТ 28147-89 первоначально был засекречен. Открытая публикация стандарта произошла только в 1994 году, после распада СССР.

В 1990-е и 2000-е годы стандарт стал обязательным для применения в государственных информационных системах России, особенно в тех, где требуется сертификация СКЗИ (например, в системах электронной подписи, банковской сфере, Единой системе межведомственного электронного взаимодействия). Однако, международного признания и широкого распространения за пределами стран бывшего СССР алгоритм не получил.

В 2012—2015 годах в России был принят новый стандарт блочного шифрования — ГОСТ Р 34.12-2015, включающий алгоритмы «Кузнечик» (блок 128 бит) и «Магма» (блок 64 бита). «Магма» фактически является современным вариантом ГОСТ 28147-89 с некоторыми техническими уточнениями. Старый стандарт окончательно утратил статус основного, но остаётся легальным для использования в сертифицированных решениях.

Описание алгоритма

ГОСТ 28147-89 является классической сетью Фейстеля с 32 раундами обращения. Длина ключа — 256 бит (8 × 32-разрядных слов). Размер блока входных и выходных данных — 64 бита. Алгоритм использует одну и ту же процедуру как для шифрования, так и для расшифрования, за исключением порядка использования подключей.

Режимы работы

Стандарт предусматривает четыре режима работы:

  1. Режим простой замены (ECB) — базовая операция блочного шифрования. Каждый 64-битный блок обрабатывается независимо. Не рекомендуется для длинных сообщений из-за уязвимости к статистическому анализу.
  2. Режим гаммирования (CTR) — шифрование выполняется путём сложения по модулю 2 открытого текста с гаммой, вырабатываемой из ключа. Позволяет обрабатывать блоки произвольной длины.
  3. Режим гаммирования с обратной связью (CFB) — модификация гаммирования, в которой гамма зависит от предыдущего шифротекста. Обеспечивает защиту от повторных накладок.
  4. Режим выработки имитовставки (MAC)алгоритм вычисления контрольной суммы (имитовставки) для проверки целостности данных. Имитовставка имеет длину до 64 бит.

Ключи и таблицы замен

Ключ представляет собой 256-битную строку, разделённую на 8 32-разрядных подключа (K0…K7). В процессе шифрования каждый раунд использует один из этих подключей в определённом порядке.

Важной особенностью алгоритма является использование нелинейной табличной замены (S-блоков). Описание стандарта не специфицирует конкретные значения S-блоков — они задаются ведомственными нормативными документами. В различных сертифицированных СКЗИ могут использоваться разные наборы S-блоков, что делает алгоритм фактически семейством шифров с общим строением, но с разными нелинейными преобразованиями.

Наиболее известные наборы S-блоков:

Криптостойкость

ГОСТ 28147-89 считается достаточно стойким алгоритмом, если используется с корректными S-блоками и в рекомендованных режимах. Однако, из-за небольшого размера блока (64 бита) он уязвим к атакам на основе коллизий (так называемые «birthday attacks»), которые становятся практически осуществимыми при шифровании объёмов данных порядка 2³² блоков (около 32 Гбайт). Это ограничение было одним из мотивов перехода на алгоритмы с размером блока 128 бит.

В 2010—2020-х годах были проведены многочисленные криптоаналитические исследования. Существующие атаки, как правило, требуют огромных вычислительных ресурсов или специфических предположений (например, выбора слабых S-блоков). При использовании стандартных таблиц замен, рекомендованных ФСБ, практических методов взлома алгоритма не опубликовано.

Применение

ГОСТ 28147-89 до сих пор широко применяется в следующих областях:

Переход на новый стандарт

С 1 января 2016 года в России официально введен в действие новый стандарт шифрования — ГОСТ Р 34.12-2015. Он включает два алгоритма:

  • «Кузнечик» — блочный алгоритм с размером блока 128 бит и длиной ключа 256 бит. Является основой для новых систем.
  • «Магма» — алгоритм с размером блока 64 бит и длиной ключа 256 бит, совместимый по существу с ГОСТ 28147-89, но имеющий фиксированные S-блоки, заданные стандартом. «Магма» считается его современной версией.

ГОСТ 28147-89 был выведен из перечня обязательных к применению стандартов, но продолжает использоваться в системах, сертифицированных до вступления новых требований. Сертификация новых СКЗИ обычно проводится в соответствии с ГОСТ Р 34.12-2015.

Сравнение с зарубежными аналогами

ПараметрГОСТ 28147-89AES (Rijndael)DES
Длина блока64 бита128 бит64 бита
Длина ключа256 бит128, 192, 256 бит56 бит
Число раундов3210, 12, 1416
СтруктураСеть ФейстеляSP-сетьСеть Фейстеля
Государственная принадлежностьСССР/РоссияСШАСША
СтатусДействующий, но устаревающийДействующий (мировой стандарт)Считается нестойким

Интересные факты

  • Алгоритм был разработан под грифом «секретно» и рассекречен только через пять лет после распада СССР — в 1994 году.
  • В некоторых реализациях S-блоки могут быть заданы произвольно, что делает критически важным выбор источника таблиц замен. На практике используются только сертифицированные наборы.
  • Несмотря на то, что размер блока 64 бита считается устаревшим для современных требований к безопасности, алгоритм остаётся стойким к известным методам криптоанализа при условии использования качественных S-блоков и правильной организации процедуры смены ключей.
  • В отличие от AES, алгоритм не прошёл открытый международный конкурс, его выбор был административным решением в рамках советской системы стандартизации.

Источники

  • ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. — М.: Изд-во стандартов, 1989 (рассекречена в 1994).
  • ГОСТ Р 34.12-2015. Информационная технология. Криптографическая защита информации. Блочные шифры. — М.: Стандартинформ, 2015.
  • Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. — 2-е изд. — М.: Триумф, 2002. — Глава 14.6 «ГОСТ 28147-89».
  • Мао В. Современная криптография: теория и практика. — М.: Вильямс, 2005. — Глава 12.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →