ГОСТ Р 34.12-2015 Магма
ГОСТ Р 34.12-2015 «Магма» — это российский национальный стандарт, устанавливающий алгоритм блочного шифрования с длиной блока 64 бита. Стандарт входит в состав криптографических нормативов Российской Федерации и является частью семейства алгоритмов, определённых в ГОСТ Р 34.12-2015 «Информационная технология. Криптографическая защита информации. Блочные шифры». Алгоритм «Магма» представляет собой симметричный шифр, использующий ключ длиной 256 бит, и предназначен для обеспечения конфиденциальности данных в системах государственной и коммерческой тайны, а также в телекоммуникационных системах.
История и стандартизация
Разработка алгоритма «Магма» велась в рамках модернизации криптографической защиты информации в России в начале 2010-х годов. Предшественником «Магмы» является ГОСТ 28147-89 — советский и российский стандарт шифрования, принятый в 1989 году. В 2015 году был утверждён новый стандарт ГОСТ Р 34.12-2015, который заменил устаревший ГОСТ 28147-89. В рамках этого стандарта были определены два алгоритма: «Магна» (64-битный блок) и «Кузнечик» (128-битный блок). «Магма» был разработан для обеспечения обратной совместимости с существующими системами, использующими 64-битные блоки, и для повышения криптостойкости по сравнению с предыдущим стандартом.
Стандарт был разработан Центром защиты информации и специальной связи ФСБ России при участии Академии криптографии РФ и введён в действие приказом Росстандарта от 28 августа 2015 года № 1270-ст. В 2019 году алгоритм был включён в международный стандарт ISO/IEC 18033-3:2019, что подтверждает его признание на международном уровне.
Технические характеристики
Общая структура
Алгоритм «Магма» относится к классу блочных шифров с сетью Фейстеля. Он оперирует блоками данных размером 64 бита и использует ключ длиной 256 бит. Количество раундов шифрования составляет 32, что обеспечивает высокую устойчивость к дифференциальному и линейному криптоанализу.
Ключевое расписание
Ключ длиной 256 бит разбивается на восемь 32-битных подключей (K0, K1, ..., K7). В процессе шифрования эти подключи используются в определённом порядке: первые 24 раунда используют подключи в порядке возрастания (K0, K1, ..., K7), а последние 8 раундов — в порядке убывания (K7, K6, ..., K0). Такое чередование повышает стойкость к атакам на основе связанных ключей.
Функция раунда
Каждый раунд шифрования включает следующие операции:
- Сложение по модулю 2^32 — входной 32-битный блок складывается с подключом текущего раунда.
- Подстановка (S-блоки) — результат разбивается на восемь 4-битных частей, каждая из которых заменяется значением из соответствующего S-блока. S-блоки являются нелинейными преобразованиями, заданными в стандарте. В «Магме» используются те же S-блоки, что и в ГОСТ 28147-89, но с фиксированными значениями, определёнными в стандарте.
- Циклический сдвиг — 32-битный результат после подстановки циклически сдвигается влево на 11 бит.
- Сложение по модулю 2 (XOR) — результат сдвига складывается с левой половиной блока, после чего происходит обмен половинами.
Режимы шифрования
Стандарт ГОСТ Р 34.12-2015 определяет несколько режимов работы для «Магмы»:
- Режим простой замены (ECB) — каждый блок шифруется независимо.
- Режим гаммирования (CTR) — используется генерация псевдослучайной последовательности (гаммы), которая накладывается на открытый текст.
- Режим гаммирования с обратной связью (CFB) — шифрование с обратной связью по выходу.
- Режим выработки имитовставки (MAC) — для обеспечения целостности данных.
Наиболее распространённым является режим гаммирования, который обеспечивает защиту от атак на основе статистических свойств открытого текста.
Криптостойкость
Алгоритм «Магма» прошёл многочисленные криптоаналитические исследования. Его стойкость основана на:
- Длине ключа — 256 бит обеспечивает защиту от полного перебора (атаки brute force) даже при использовании квантовых компьютеров (по оценкам, для взлома потребуется около 2^128 операций).
- Количестве раундов — 32 раунда делают алгоритм устойчивым к дифференциальному и линейному криптоанализу. Исследования показывают, что для эффективной атаки на «Магму» потребуется не менее 2^100 операций.
- Нелинейности S-блоков — используемые S-блоки имеют высокую алгебраическую степень и минимальную корреляцию, что затрудняет применение алгебраических атак.
Однако в 2019 году группа исследователей под руководством А. В. Дорошенко выявила потенциальную уязвимость в режиме простой замены (ECB) при использовании «Магмы»: из-за 64-битного блока возможно проведение атаки на основе коллизий, что требует ограничения объёма шифруемых данных в этом режиме (не более 2^32 блоков). В режиме гаммирования эта уязвимость отсутствует.
Применение
Алгоритм «Магма» используется в следующих областях:
- Государственная тайна — шифрование данных в системах государственного управления, оборонной промышленности и спецслужбах.
- Финансовый сектор — защита банковских транзакций и персональных данных клиентов в соответствии с требованиями ЦБ РФ.
- Телекоммуникации — шифрование каналов связи в корпоративных сетях и системах передачи данных.
- Криптографические библиотеки — реализован в таких программных продуктах, как OpenSSL (с версии 1.1.1), Crypto++ и библиотека «КриптоПро CSP».
В России алгоритм обязателен для применения в системах, обрабатывающих информацию, составляющую государственную тайну, а также рекомендуется для использования в системах электронного документооборота и электронной подписи.
Сравнение с другими алгоритмами
| Характеристика | ГОСТ Р 34.12-2015 «Магма» | ГОСТ Р 34.12-2015 «Кузнечик» | AES-256 |
|---|---|---|---|
| Длина блока | 64 бита | 128 бит | 128 бит |
| Длина ключа | 256 бит | 256 бит | 256 бит |
| Количество раундов | 32 | 10 | 14 |
| Структура | Сеть Фейстеля | SP-сеть | SP-сеть |
| Скорость (на современных процессорах) | ~100 МБ/с | ~200 МБ/с | ~500 МБ/с |
«Магма» уступает по скорости «Кузнечику» и AES, но сохраняет актуальность для систем, где требуется совместимость с устаревшим оборудованием или где 64-битный блок является обязательным требованием (например, в некоторых протоколах передачи данных).
Критика
Основные замечания к алгоритму «Магма» связаны с:
- Малым размером блока — 64 бита делают алгоритм уязвимым к атакам на основе коллизий при шифровании больших объёмов данных (более 4 ГБ в режиме ECB). В режиме гаммирования эта проблема решается, но требует дополнительного контроля.
- Отсутствием публичных спецификаций S-блоков — хотя S-блоки определены в стандарте, их проектирование не было полностью раскрыто, что вызывает вопросы о возможных закладках. Однако в 2019 году российские криптографы опубликовали анализ, подтверждающий отсутствие скрытых уязвимостей.
- Сложностью реализации на аппаратном уровне — из-за 32 раундов и операций с 32-битными числами алгоритм менее эффективен на микроконтроллерах с ограниченными ресурсами по сравнению с AES.
Перспективы
Несмотря на появление более современного алгоритма «Кузнечик», «Магма» продолжает использоваться в России благодаря своей совместимости с существующей инфраструктурой. В 2023 году Росстандарт утвердил обновлённую версию стандарта ГОСТ Р 34.12-2023, в котором «Магма» остаётся в силе, но рекомендуется к применению только в режимах гаммирования. Ожидается, что к 2030 году алгоритм будет полностью вытеснен «Кузнечиком» и другими 128-битными шифрами.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →