ГОСТ 28147-89


ГОСТ 28147-89
ГОСТ 28147-89
изображение
Создатель:

КГБ, 8-е управление

Создан:

1989 г.

Опубликован:

1990 г.

Размер ключа:

256 бит

Размер блока:

64 бит

Число раундов:

32\16

Тип:

Сеть Фейстеля

ГОСТ 28147-89 — советский и российский стандарт симметричного шифрования, введённый в 1990 году, также является стандартом СНГ. Полное название — «ГОСТ 28147-89 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования». Блочный шифроалгоритм. При использовании метода шифрования с гаммированием, может выполнять функции поточного шифроалгоритма.

По некоторым сведениям[1], история этого шифра гораздо более давняя. Алгоритм, положенный впоследствии в основу стандарта, родился, предположительно, в недрах Восьмого Главного управления КГБ СССР (ныне в структуре ФСБ), скорее всего, в одном из подведомственных ему закрытых НИИ, вероятно, ещё в 1970-х годах в рамках проектов создания программных и аппаратных реализаций шифра для различных компьютерных платформ.

С момента опубликования ГОСТа на нём стоял ограничительный гриф «Для служебного пользования», и формально шифр был объявлен «полностью открытым» только в мае 1994 года. История создания шифра и критерии разработчиков по состоянию на 2010 год не опубликованы.

Содержание

Описание

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

Режим простой замены

Для зашифрования в этом режиме открытый текст сначала разбивается на две половины (младшие биты — A, старшие биты — B[2]). На i-ом цикле используется подключ Ki:

~A_{i+1} = B_i \oplus f(A_i, K_i) ( \oplus = двоичное «исключающее или»)
~B_{i+1} = A_i

Для генерации подключей исходный 256-битный ключ разбивается на восемь 32-битных блоков: K1…K8.

Ключи K9…K24 являются циклическим повторением ключей K1…K8 (нумеруются от младших битов к старшим). Ключи K25…K32 являются ключами K8…K1.

После выполнения всех 32 раундов алгоритма, блоки A33 и B33 склеиваются (обратите внимание, что старшим битом становится A33, а младшим — B33) — результат есть результат работы алгоритма.

Расшифрование выполняется так же, как и зашифрование, но инвертируется порядок подключей Ki.

Функция f(A_i, K_i) вычисляется следующим образом:

Ai и Ki складываются по модулю 232.

Результат разбивается на восемь 4-битовых подпоследовательностей, каждая из которых поступает на вход своего узла таблицы замен (в порядке возрастания старшинства битов), называемого ниже S-блоком. Общее количество S-блоков ГОСТа — восемь, то есть столько же, сколько и подпоследовательностей. Каждый S-блок представляет собой перестановку чисел от 0 до 15. Первая 4-битная подпоследовательность попадает на вход первого S-блока, вторая — на вход второго и т. д.

Если S-блок выглядит так:

1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12

и на входе S-блока 0, то на выходе будет 1, если 4, то на выходе будет 5, если на входе 12, то на выходе 6 и т. д.

Выходы всех восьми S-блоков объединяются в 32-битное слово, затем всё слово циклически сдвигается влево (к старшим разрядам) на 11 битов.

Режим простой замены имеет следующие недостатки:

  • Может применяться только для шифрования открытых текстов с длиной, кратной 64 бит
  • При шифровании одинаковых блоков открытого текста получаются одинаковые блоки шифротекста, что может дать определенную информацию криптоаналитику.

Таким образом, применение ГОСТ 28147-89 в режиме простой замены желательно лишь для шифрования ключевых данных.

Гаммирование

При работе ГОСТ 28147-89 в режиме гаммирования специальным образом формируется криптографическая гамма, которая затем складывается по модулю 2 с исходным открытым текстом для получения шифротекста. Шифрование в режиме гаммирования лишено недостатков, присущих режиму простой замены. Так, даже идентичные блоки исходного текста дают разный шифротекст, а для текстов с длиной, не кратной 64 бит, "лишние" биты гаммы отбрасываются.

Выработка гаммы происходит на основе ключа и так называемой синхропосылки, которая задает начальное состояние генератора. Алгоритм выработки следующий:

  1. Синхропосылка шифруется с использованием описанного алгоритма простой замены, полученные значения записываются в N3 и N4 - младшие и старшие биты соответственно.
  2. К N3 и N4 прибавляются константы соответственно C2 = 101010116 и C1 = 101010416
  3. N3 и N4 переписываются соответственно в N1 и N2, которые затем шифруются и использованием алгоритма простой замены. Полученный результат является 64 битами гаммы.
  4. Шаги 2-4 повторяются в соответствии с длиной шифруемого текста.

Для расшифрования необходимо выработать такую же гамму, после чего сложить ее по модулю 2 с зашифрованным текстом. Очевидно, для этого нужно использовать ту же синхропосылку, что и при шифровании. При этом, исходя из требований уникальности гаммы, нельзя использовать одну синхропосылку для шифрования нескольких массивов данных. Как правило, синхропосылка тем или иным образом передается вместе с шифротекстом.

Особенность работы ГОСТ 28147-89 в режиме гаммирования заключается в том, что при изменении одного бита шифротекста изменяется только один бит расшифрованного текста. С одной стороны, это может оказывать положительное влияние на помехозащищенность; с другой - злоумышленник может внести некоторые изменения в текст, даже не расшифровывая его.

Гаммирование с обратной связью

Алгоритм шифрования похож на режим гаммирования, однако гамма формируется на основе предыдущего блока зашифрованных данных, так что результат шифрования текущего блока зависит также и от предыдущих блоков. По этой причине данный режим работы также называют гаммированием с зацеплением блоков.

Алгоритм шифрования следующий:

  1. Синхропосылка заносится в регистры N1 и N2
  2. Содержимое регистров N1 и N2 шифруется в соответствии с алгоритмом простой замены. Полученный результат является 64-битным блоком гаммы.
  3. Блок гаммы складывается по модулю 2 с блоком открытого текста. Полученный шифротекст заносится в регистры N1 и N2
  4. Операции 2-3 выполняются для оставшихся блоков требующего шифрования текста.

При изменении одного бита шифротекста, полученного с использованием алгоритма гаммирования с обратной связью, в соответствующем блоке расшифрованного текста меняется только один бит, а следующий и все остальные блоки меняются полностью непредсказуемо.

Режим выработки имитовставки

Этот режим не является в общепринятом смысле режимом шифрования. При работе в режиме выработки имитовставки создается некоторый дополнительный блок, зависящий от всего текста и ключевых данных. Данный блок используется для проверки того, что в шифротекст случайно или преднамеренно не были внесены искажения. Это особенно важно для шифрования в режиме гаммирования, где злоумышленник может изменить конкретные биты, даже не зная ключа; однако и при работе в других режимах вероятные искажения нельзя обнаружить, если в передаваемых данных нет избыточной информации.

Имитовставка вырабатывается для M ≥ 2 блоков открытого текста по 64 бит. Алгоритм следующий:

  1. Блок открытых данных записывается в регистры N1 и N2, после чего подвергается преобразованию, соответствующему первым 16 циклам шифрования в режиме простой замены
  2. К полученному результату по модулю 2 прибавляется следующий блок открытых данных. Последний блок при необходимости дополняется нулями. Сумма также шифруется в соответствии с пунктом 1.
  3. После добавления и шифрования последнего блока из результата выбирается имитовставка длиной L бит: с бита номер 32-L до 32(отсчет начинается с 1). Стандарт рекомендует выбирать L исходя из того, что вероятность навязывания ложных данных равна 2-L. Имитовставка передается по каналу связи после зашифрованных блоков.

Для проверки принимающая сторона после расшифрования текста проводит аналогичную описанной процедуру. В случае несовпадения результата с переданной имитовставкой все соответствующие M блоков считаются ложными.

Следует отметить, что выработка имитовставки может проводиться параллельно шифрованию с использованием одного из описанных выше режимов работы.

Узлы замены (S-блоки)

Все восемь S-блоков могут быть различными. Некоторые считают, что они могут являться дополнительным ключевым материалом, увеличивающим эффективную длину ключа; однако существуют применимые на практике атаки, позволяющие их определить.[3] Впрочем, и необходимости в увеличении длины ключа нет, 256 бит вполне достаточно в настоящее время. Как правило, таблицы замен являются долговременным параметром схемы, общим для определенной группы пользователей. В ГОСТ Р 34.11-94 для целей тестирования приведены следующие S-блоки:

Номер S-блока Значение
1 4 10 9 2 13 8 0 14 6 11 1 12 7 15 5 3
2 14 11 4 12 6 13 15 10 2 3 8 1 0 7 5 9
3 5 8 1 13 10 3 4 2 14 15 12 7 6 0 9 11
4 7 13 10 1 0 8 9 15 14 4 6 12 11 2 5 3
5 6 12 7 1 5 15 13 8 4 10 9 14 0 3 11 2
6 4 11 10 0 7 2 1 13 3 6 8 5 9 12 15 14
7 13 11 4 1 3 15 5 9 0 10 14 7 6 8 2 12
8 1 15 13 0 5 7 10 4 9 2 3 14 6 11 8 12

Данный набор S-блоков используется в криптографических приложениях ЦБ РФ.[4]

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

Достоинства ГОСТа

  • бесперспективность силовой атаки (XSL-атаки в учёт не берутся, так как их эффективность на данный момент полностью не доказана);
  • эффективность реализации и соответственно высокое быстродействие на современных компьютерах.
  • наличие защиты от навязывания ложных данных (выработка имитовставки) и одинаковый цикл шифрования во всех четырех алгоритмах ГОСТа.

Криптоанализ

Считается (см. например Vitaly V. Shorin, Vadim V. Jelezniakov and Ernst M. Gabidulin: Linear and Differential Cryptanalysis of Russian GOST), что ГОСТ устойчив к таким широко применяемым методам, как линейный и дифференциальный криптоанализ. Обратный порядок использования ключей в последних восьми раундах обеспечивает защиту от атак скольжения(slide attack) и отражения(reflection attack).

В мае 2011 года известный криптоаналитик Николя Куртуа доказал существование атаки на данный шифр, имеющей сложность в 28 (256) раз меньше сложности прямого перебора ключей при условии наличия 264 пар открытый текст/закрытый текст. [5][6]Данная атака не может быть осуществлена на практике ввиду слишком высокой вычислительной сложности. Более того, знание 264 пар открытый текст/закрытый текст, очевидно, позволяет читать зашифрованные тексты, даже не вычисляя ключа. В большинстве других работ также описываются атаки, применимые только при некоторых предположениях, таких как определенный вид ключей или таблиц замен, некоторая модификация исходного алгоритма, или же требующие все еще недостижимых объемов памяти или вычислений. Вопрос о наличии применимых на практике атак без использования слабости отдельных ключей или таблиц замены остается открытым.

Критика ГОСТа

Основные проблемы ГОСТа связаны с неполнотой стандарта в части генерации ключей и таблиц замен. Считается, что у ГОСТа существуют «слабые» ключи и таблицы замен, но в стандарте не описываются критерии выбора и отсева «слабых». Также стандарт не специфицирует алгоритм генерации таблицы замен (S-блоков). С одной стороны, это может являться дополнительной секретной информацией (помимо ключа), а с другой, поднимает ряд проблем:

  • нельзя определить криптостойкость алгоритма, не зная заранее таблицы замен;
  • реализации алгоритма от различных производителей могут использовать разные таблицы замен и могут быть несовместимы между собой;
  • возможность преднамеренного предоставления слабых таблиц замен лицензирующими органами РФ;
  • потенциальная возможность (отсутствие запрета в стандарте) использования таблиц замены, в которых узлы не являются перестановками, что может привести к чрезвычайному снижению стойкости шифра.

В октябре 2010 года на заседании 1-го объединенного технического комитета Международной организации по стандартизации (ISO/IEC JTC 1/SC 27) ГОСТ был выдвинут на включение в международный стандарт блочного шифрования ISO/IEC 18033-3. В связи с этим в январе 2011 года были сформированы фиксированные наборы узлов замены и проанализированы их криптографические свойства. Однако ГОСТ не был принят в качестве стандарта, и соответствующие таблицы замен не были опубликованы [7]

Возможные применения

  • Использование в S/MIME (PKCS#7, Cryptographic Message Syntax).[8]
  • Использование для защиты соединений в TLS (SSL, HTTPS, WEB).[9]
  • Использование для защиты сообщений в XML Encryption.[10]

Примечания

  1. А. Винокуров. Алгоритм шифрования ГОСТ 28147-89, его использование и реализация для компьютеров платформы Intel x86
  2. В описании стандарта ГОСТ обозначены как N1 и N2 соответственно
  3. Панасенко С. П. Стандарт шифрования ГОСТ 28147-89
  4. Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си, 2-е издание — М.: Триумф, 2002, 14.1
  5. Nicolas T. Courtois. Security Evaluation of GOST 28147-89 In View Of International Standardisation. Cryptology ePrint Archive: Report 2011/211
  6. SecurityLab: Взломан блочный шифр ГОСТ 28147-89
  7. Технический комитет по стандартизации (ТК 26) "Криптографическая защита информации" О деятельности по международной стандартизации алгоритма шифрования ГОСТ 28147-89
  8. Leontiev S., Chudov G. Using the GOST 28147-89, GOST R 34.11-94, GOST R 34.10-94, and GOST R 34.10-2001 Algorithms with Cryptographic Message Syntax (CMS)  (англ.) (May 2006). — RFC 4490. Архивировано из первоисточника 24 августа 2011. Проверено 21 июня 2009.
  9. Leontiev, S., Ed. and G. Chudov, Ed. GOST 28147-89 Cipher Suites for Transport Layer Security (TLS)  (англ.) (December 2008). — Internet-Drafts, work in progress. Архивировано из первоисточника 24 августа 2011. Проверено 21 июня 2009.
  10. S. Leontiev, P. Smirnov, A. Chelpanov Using GOST 28147-89, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms for XML Security  (англ.) (December 2008). — Internet-Drafts, work in progress. Архивировано из первоисточника 24 августа 2011. Проверено 21 июня 2009.

См. также

Ссылки


  • ГОСТы для OpenSSL. — криптографический проект компании ООО «Криптоком» по добавлению российских криптографических алгоритмов в библиотеку OpenSSL. Архивировано из первоисточника 24 августа 2011. Проверено 16 ноября 2008.

Литература

  • Мельников В. В. Защита информации в компьютерных системах. — М.: Финансы и статистика, 1997.
  • Романец Ю. В.. Тимофеев П. А., Шаньгин В. Ф. Защита информации в компьютерных системах и сетях. — М.: Радио и связь, 1999.
  • Харин Ю. С., Берник В. И., Матвеев Г. В. Математические основы криптологии. — Мн.: БГУ, 1999.
  • Герасименко В. А., Малюк А. А. Основы защиты информации. — М.: МГИФИ, 1997.
  • Леонов А. П., Леонов К. П., Фролов Г. В. Безопасность автоматизированных банковских и офисных технологий. — Мн.: Нац. кн. палата Беларуси, 1996.
  • Зима В. М.. Молдовян А. А., Молдовян Н. А. Компьютерные сети и защита передаваемой информации. — СПб.: СПбГУ, 1998.
  • Шнайер Б. 14.1 Алгоритм ГОСТ 28147-89 // Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — С. 373-377. — 816 с. — 3000 экз. — ISBN 5-89392-055-4
  • Popov, V., Kurepkin, I., and S. Leontiev Additional Cryptographic Algorithms for Use with GOST 28147-89, GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms (англ.) // RFC 4357. — IETF, January 2006.

Wikimedia Foundation. 2010.

Смотреть что такое "ГОСТ 28147-89" в других словарях:

  • ГОСТ 28147—89 — Создатель: КГБ, 8 е управление Создан: 1989 г. Опубликован: 1990 г. Размер ключа: 256 бит Размер блока: 64 бит Число раундов: 3216 Тип …   Википедия

  • ГОСТ 28147-89 — скасован НД, прийнятий на заміну: ДСТУ ГОСТ 28147:2009 …   Покажчик національних стандартів

  • ГОСТ 28147-89 — Советский/российский государственный стандарт шифрования данных. [[http://www.rfcmd.ru/glossword/1.8/index.php?a=index d=23]] Тематики защита информации EN GOST 28147 89 …   Справочник технического переводчика

  • ГОСТ 28147-89 — 28 с. (5) Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования раздел 35.040 …   Указатель национальных стандартов 2013

  • ДСТУ ГОСТ 28147:2009 — Системы обработки информации. Защита криптографическая. Алгоритмы криптографического преобразования (ГОСТ 28147 89, IDT) [br] НД чинний: від 2009 02 01 Зміни: Технічний комітет: Мова: Ru Метод прийняття: Підтвердження Кількість сторінок: 15 Код… …   Покажчик національних стандартів

  • 28147 — ГОСТ 28147{ 89} Системы обработки информации. Защита криптографическая. Алгоритмы криптографического преобразования. ОКС: 35.040 КГС: П85 Виды представления информации и математическое обеспечение машин Действие: С 01.07.90 Текст документа: ГОСТ… …   Справочник ГОСТов

  • ГОСТ — В Викитеке есть тексты по теме ГОСТ …   Википедия

  • ГОСТ Р 34.11-94 — Криптографическая хеш функция Название ГОСТ Р 34.11 94 Создан 1994 Опубликован 23 мая 1994 Размер хеша 256 бит Число раундов 1 Тип хеш функция ГОСТ Р 34.11 94  российский …   Википедия

  • ГОСТ Р 34.10-2001 — (полное название: «ГОСТ Р 34.10 2001. Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи»)  российский стандарт, описывающий алгоритмы формирования и проверки… …   Википедия

  • — ГОСТ 28147 89 Создатель: КГБ, 8 е управление Создан: 1989 г. Опубликован: 1990 г. Размер ключа: 256 бит Размер блока: 64 бит Число раундов: 3216 Тип …   Википедия

Книги