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

ГОСТ 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. Он включает два алгоритма:

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

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

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

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

Источники

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

На главную BFOmetr →