ГОСТ 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 бита. Алгоритм использует одну и ту же процедуру как для шифрования, так и для расшифрования, за исключением порядка использования подключей.
Режимы работы
Стандарт предусматривает четыре режима работы:
- Режим простой замены (ECB) — базовая операция блочного шифрования. Каждый 64-битный блок обрабатывается независимо. Не рекомендуется для длинных сообщений из-за уязвимости к статистическому анализу.
- Режим гаммирования (CTR) — шифрование выполняется путём сложения по модулю 2 открытого текста с гаммой, вырабатываемой из ключа. Позволяет обрабатывать блоки произвольной длины.
- Режим гаммирования с обратной связью (CFB) — модификация гаммирования, в которой гамма зависит от предыдущего шифротекста. Обеспечивает защиту от повторных накладок.
- Режим выработки имитовставки (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 до сих пор широко применяется в следующих областях:
- Государственные информационные системы — системы электронного документооборота, реестры, порталы госуслуг, где требуется сертифицированное шифрование.
- Банковская сфера — защита межбанковских переводов, систем «Банк-Клиент», платежных шлюзов.
- Системы электронной подписи — используется в сочетании с хэш-функциями (ГОСТ Р 34.11-94, ГОСТ Р 34.11-2012).
- Продукты СКЗИ — такие орагнизации как «Крипто-Про» (сертифицированный производитель СКЗИ), «ИнфоТеКС», «Лаборатория Касперского» реализуют алгоритм в своих продуктах.
- Линейко-аппаратное шифрование — оборудование для защиты каналов связи (например, «Крипто-Про» HSM, «ВИПНЕТ»).
Переход на новый стандарт
С 1 января 2016 года в России официально введен в действие новый стандарт шифрования — ГОСТ Р 34.12-2015. Он включает два алгоритма:
- «Кузнечик» — блочный алгоритм с размером блока 128 бит и длиной ключа 256 бит. Является основой для новых систем.
- «Магма» — алгоритм с размером блока 64 бит и длиной ключа 256 бит, совместимый по существу с ГОСТ 28147-89, но имеющий фиксированные S-блоки, заданные стандартом. «Магма» считается его современной версией.
ГОСТ 28147-89 был выведен из перечня обязательных к применению стандартов, но продолжает использоваться в системах, сертифицированных до вступления новых требований. Сертификация новых СКЗИ обычно проводится в соответствии с ГОСТ Р 34.12-2015.
Сравнение с зарубежными аналогами
| Параметр | ГОСТ 28147-89 | AES (Rijndael) | DES |
|---|---|---|---|
| Длина блока | 64 бита | 128 бит | 64 бита |
| Длина ключа | 256 бит | 128, 192, 256 бит | 56 бит |
| Число раундов | 32 | 10, 12, 14 | 16 |
| Структура | Сеть Фейстеля | SP-сеть | Сеть Фейстеля |
| Государственная принадлежность | СССР/Россия | США | США |
| Статус | Действующий, но устаревающий | Действующий (мировой стандарт) | Считается нестойким |
Интересные факты
- Алгоритм был разработан под грифом «секретно» и рассекречен только через пять лет после распада СССР — в 1994 году.
- В некоторых реализациях S-блоки могут быть заданы произвольно, что делает критически важным выбор источника таблиц замен. На практике используются только сертифицированные наборы.
- Несмотря на то, что размер блока 64 бита считается устаревшим для современных требований к безопасности, алгоритм остаётся стойким к известным методам криптоанализа при условии использования качественных S-блоков и правильной организации процедуры смены ключей.
- В отличие от AES, алгоритм не прошёл открытый международный конкурс, его выбор был административным решением в рамках советской системы стандартизации.
Источники
- ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. — М.: Изд-во стандартов, 1989 (рассекречена в 1994).
- ГОСТ Р 34.12-2015. Информационная технология. Криптографическая защита информации. Блочные шифры. — М.: Стандартинформ, 2015.
- Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. — 2-е изд. — М.: Триумф, 2002. — Глава 14.6 «ГОСТ 28147-89».
- Мао В. Современная криптография: теория и практика. — М.: Вильямс, 2005. — Глава 12.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →