Алгоритм Магма
Алгоритм «Магма» (также известный как ГОСТ 28147-89) — это симметричный блочный шифр, разработанный в СССР и принятый в качестве государственного стандарта шифрования в 1989 году. Он является частью семейства криптографических алгоритмов, регламентируемых стандартом ГОСТ 28147-89, а с 2015 года — обновлённым стандартом ГОСТ Р 34.12-2015, где «Магма» определена как один из двух базовых алгоритмов (наряду с более современным «Кузнечиком»). Алгоритм предназначен для защиты информации, не содержащей сведений, составляющих государственную тайну, и широко применяется в системах криптографической защиты данных (СКЗИ) на территории Российской Федерации и стран СНГ.
История создания
Разработка алгоритма началась в 1970-х годах в 8-м Главном управлении КГБ СССР (ныне — ФСБ России) и в закрытых научно-исследовательских институтах, таких как ВНИИС (Всесоюзный научно-исследовательский институт стандартизации). Целью было создание стойкого и эффективного шифра для использования в государственных и военных системах связи, а также в автоматизированных системах управления. В 1989 году алгоритм был официально утверждён как ГОСТ 28147-89 и оставался единственным государственным стандартом блочного шифрования в России до 2015 года.
В 2015 году, после анализа современных криптографических угроз и международных тенденций, был принят новый стандарт ГОСТ Р 34.12-2015, который ввёл два алгоритма: «Магма» (с размером блока 64 бита) и «Кузнечик» (с размером блока 128 бит). «Магма» сохранила преемственность с ГОСТ 28147-89, но была формально переопределена с учётом уточнённых параметров и требований к режимам шифрования.
Основные характеристики
Тип и структура
Магма является блочным шифром с длиной блока 64 бита и длиной ключа 256 бит. Он относится к классу шифров Фейстеля с 32 раундами преобразования. Структура алгоритма основана на итеративном применении раундовой функции, которая включает в себя:
- Сложение по модулю 2³² (XOR) с раундовым подключом.
- Подстановку (S-блоки) — нелинейное преобразование 4-битных групп с помощью таблиц замен.
- Циклический сдвиг влево на 11 бит.
Ключевое расписание
Ключ длиной 256 бит разбивается на 8 32-битных подключей (K₀–K₇). В зависимости от раунда (с 1 по 24) подключи используются в прямом порядке (K₀, K₁, …, K₇), а в раундах 25–32 — в обратном (K₇, K₆, …, K₀). Каждый раунд использует один 32-битный подключ, что даёт 32 раунда с 8 уникальными подключами, повторяющимися по циклу.
S-блоки
Важнейшей нелинейной компонентой алгоритма являются S-блоки (таблицы замен). В первоначальном стандарте ГОСТ 28147-89 S-блоки не были фиксированы и могли задаваться пользователем или определяться ведомством. В стандарте ГОСТ Р 34.12-2015 для «Магмы» введён фиксированный набор S-блоков, рекомендованный для обеспечения совместимости и криптостойкости. Каждый S-блок представляет собой перестановку чисел от 0 до 15, применяемую к 4-битным группам данных.
Режимы шифрования
«Магма» может использоваться в нескольких режимах, определённых в стандартах:
- Простая замена (ECB) — каждый блок шифруется независимо.
- Гаммирование (CTR) — шифрование с выработкой гаммы.
- Гаммирование с обратной связью (CFB) — шифрование с обратной связью по шифротексту.
- Выработка имитовставки (MAC) — для обеспечения целостности данных.
Криптостойкость
Анализ стойкости
На протяжении десятилетий «Магма» подвергалась интенсивному криптоанализу как российскими, так и зарубежными специалистами. Основные результаты:
- Дифференциальный криптоанализ: алгоритм устойчив к данному виду атак благодаря большому количеству раундов (32) и нелинейным S-блокам.
- Линейный криптоанализ: требует порядка 2⁴⁷ известных открытых текстов для вскрытия, что считается практически нереализуемым.
- Атаки на основе связанных ключей: в некоторых модификациях (например, при нефиксированных S-блоках) возможны атаки, но стандартная реализация с фиксированными S-блоками устойчива.
Недостатки
- Длина блока 64 бита: это считается устаревшим для современных стандартов, так как при шифровании больших объёмов данных (более 2³² блоков) возрастает риск коллизий и атак на основе дня рождения. Рекомендуется использовать алгоритм с блоками 128 бит («Кузнечик») для высоконагруженных систем.
- Зависимость от S-блоков: в первоначальной версии ГОСТ 28147-89 не было единого эталонного набора S-блоков, что могло приводить к несовместимости и снижению стойкости при выборе слабых таблиц.
Применение
В России и странах СНГ
«Магма» является обязательным алгоритмом для использования в государственных информационных системах, обрабатывающих информацию ограниченного доступа (не составляющую государственную тайну). Он входит в состав сертифицированных СКЗИ, таких как:
- КриптоПро CSP — программный криптопровайдер.
- ViPNet — аппаратно-программные комплексы защиты.
- АПКШ «Континент» — средства шифрования каналов связи.
Международное признание
В 2015 году алгоритм «Магма» (как часть ГОСТ Р 34.12-2015) был включён в рекомендации Международной организации по стандартизации (ISO/IEC 18033-3) в качестве одного из блочных шифров. Это позволило использовать его в международных проектах, требующих совместимости с российскими стандартами.
Сравнение с другими алгоритмами
| Характеристика | Магма (ГОСТ 28147-89) | Кузнечик (ГОСТ Р 34.12-2015) | AES-256 |
|---|---|---|---|
| Длина блока | 64 бита | 128 бит | 128 бит |
| Длина ключа | 256 бит | 256 бит | 256 бит |
| Количество раундов | 32 | 10 | 14 |
| Структура | Сеть Фейстеля | SP-сеть | SP-сеть |
| Скорость (на x86-64) | ~200–300 МБ/с | ~400–600 МБ/с | ~1–2 ГБ/с |
Интересные факты
- Алгоритм «Магма» является одним из немногих шифров с длиной блока 64 бита, который до сих пор официально поддерживается в государственных стандартах (по состоянию на 2024 год). Большинство современных шифров (AES, «Кузнечик») используют 128-битные блоки.
- Название «Магма» появилось только в 2015 году с принятием ГОСТ Р 34.12-2015; ранее алгоритм был известен исключительно как ГОСТ 28147-89.
- В 2010 году группа исследователей (А. Бирюков, Д. Ховратович и др.) опубликовала работу, в которой показала, что при использовании слабых S-блоков (например, линейных) алгоритм может быть взломан с помощью атаки на основе связанных ключей. Однако стандартные S-блоки, рекомендованные ФСБ России, считаются стойкими.
- Алгоритм реализован в аппаратных модулях, таких как микросхемы «Крипто-А» и «Эльбрус-Крипто», используемые в системах военной связи и управления.
Критика и перспективы
Основной критике подвергается малая длина блока (64 бита), которая делает алгоритм уязвимым для атак на основе коллизий при шифровании больших объёмов данных (более 4 гигабайт). В связи с этим в ГОСТ Р 34.12-2015 был введён дополнительный алгоритм «Кузнечик» с 128-битным блоком, который рекомендуется для новых разработок. Тем не менее, «Магма» остаётся востребованной в системах с ограниченными ресурсами (например, в микроконтроллерах и смарт-картах), где 64-битный блок позволяет экономить память и вычислительную мощность.
В 2023 году ФСБ России выпустила методические рекомендации, в которых указано, что для систем, обрабатывающих данные объёмом более 10¹⁵ бит, следует использовать только алгоритмы с длиной блока не менее 128 бит. Это означает постепенное вытеснение «Магмы» из высоконагруженных систем, но её сохранение в legacy-инфраструктуре и специализированных устройствах.
Источники
- ГОСТ 28147-89 «Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования».
- ГОСТ Р 34.12-2015 «Информационная технология. Криптографическая защита информации. Блочные шифры».
- ISO/IEC 18033-3:2015 «Information technology — Security techniques — Encryption algorithms — Part 3: Block ciphers».
- Бирюков А., Ховратович Д. «Атаки на основе связанных ключей на ГОСТ 28147-89» // Journal of Cryptology, 2010.
- Шнайер Б. «Прикладная криптография» — глава о российских стандартах.
- Материалы Технического комитета по стандартизации ТК 26 «Криптографическая защита информации».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →