ГОСТ 28147-89
ГОСТ 28147-89 | |
---|---|
Создатель |
КГБ, 8-е управление (группа криптографов) - Заботин Иван Александрович (рук.), Лопатин Вячеслав Александрович, Лопаткин Алексей Васильевич, Афанасьев Александр Александрович, Федюкин Михаил Владимирович |
Создан | 1978 год |
Опубликован | 1989 год |
Стандарты | ГОСТ 34.12-2018, ГОСТ Р 34.12-2015, ГОСТ 28147-89, RFC 5830, RFC 8891 |
Размер ключа | 256 бит |
Размер блока | 64 бит |
Число раундов | 32\16 |
Тип | сеть Фейстеля |
ГОСТ 28147-89 «Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования» — устаревший (см. хронологию использования) государственный стандарт СССР (а позже межгосударственный стандарт СНГ), описывающий алгоритм симметричного блочного шифрования и режимы его работы.
Является примером DES-подобных криптосистем, созданных по классической итерационной схеме Фейстеля.
История создания шифра и критерии разработчиков были впервые публично представлены в 2014 году руководителем группы разработчиков алгоритма Заботиным Иваном Александровичем на лекции, посвященной 25-летию принятия российского стандарта симметричного шифрования[1][2].
Работы над алгоритмом, положенным впоследствии в основу стандарта, начались в рамках темы «Магма» (защита информации криптографическими методами в ЭВМ ряда Единой Системы) по поручению Научно-технического совета Восьмого главного управления КГБ СССР (ныне в структуре ФСБ), в марте 1978 года после длительного предварительного изучения опубликованного в 1976 году стандарта DES. В действительности работы по созданию алгоритма (или группы алгоритмов), схожего с алгоритмом DES, начались уже в 1976 году.
Изначально работы имели гриф «Совершенно секретно». Затем были понижены до грифа «Секретно». В 1983 году гриф алгоритма был понижен до пометки «Для служебного пользования». Именно с последней пометкой алгоритм был подготовлен для публикации в 1989 году. 9 марта 1987 года группа разработчиков-криптографов (заявитель — в/ч 43753) получила авторское свидетельство с приоритетом № 333297 на изобретение на устройство шифрования по алгоритму «Магма-2»[3].
Хронология использования[править | править код]
Утверждён постановлением Госстандарта СССР № 1409 от 2 июня 1989 года, введен в действие с 1 июля 1990 года[4].
С 31 марта 1996 года переиздан и введен в действие как межгосударственный стандарт СНГ[5].
Постановлением Госстандарта Республики Беларусь № 3 от 17 декабря 1992 года введен в действие в качестве государственного стандарта Республики Беларусь. Переиздан в марте 2011 года[6].
Приказом Госпотребстандарта Украины № 495 от 22 января 2008 года ГОСТ 28147-89 был переиздан на территории Украины и введён в действие с 1 февраля 2009 года под наименованием ДСТУ ГОСТ 28147:2009[7]. Согласно текущим приказам, ДСТУ ГОСТ 28147:2009 действовал до 1 января 2022 года[8]. Идет постепенная замена на ДСТУ 7624:2014 (шифр «Калина»).
Стандарт отменён на территории России и СНГ с 31 мая 2019 года в связи с принятием новых полностью его заменяющих межгосударственных стандартов ГОСТ 34.12-2018 (описывает шифры «Магма» и «Кузнечик») и ГОСТ 34.13-2018 (описывает режимы работы блочных шифров).
Согласно извещению ФСБ о порядке использования алгоритма блочного шифрования ГОСТ 28147-89, средства криптографической защиты информации, предназначенные для защиты информации, не содержащей сведений, составляющих государственную тайну, реализующие в том числе алгоритм ГОСТ 28147-89, не должны разрабатываться после 1 июня 2019 года, за исключением случаев, когда алгоритм ГОСТ 28147-89 в таких средствах предназначен для обеспечения совместимости с действующими средствами, реализующими этот алгоритм[9].
Магма[править | править код]
В 2015 году вместе с новым алгоритмом «Кузнечик» один из вариантов алгоритма ГОСТ 28147-89 был опубликован под названием «Магма» как часть стандарта ГОСТ Р 34.12-2015, а позже как часть стандарта ГОСТ 34.12-2018. В 2020 году алгоритм «Магма» был опубликован в виде RFC 8891.
Особенности:
- использование фиксированного узла замены id-tc26-gost-28147-param-Z;
- значение ключа читается как одно целое число с прямым порядком байт (в отличие от обратного порядка байт, используемого в ГОСТ 28147-89), что в результате даёт другие раундовые ключи;
- шифруемые данные тоже читаются как целое число с прямым порядком байт (в отличие от обратного порядка байт, используемого в ГОСТ 28147-89).
Описание шифра[править | править код]
ГОСТ 28147-89 — блочный шифр с 256-битным ключом и 32 циклами (называемыми раундами) преобразования, оперирующий 64-битными блоками. Основа алгоритма шифра — сеть Фейстеля.
Выделяют четыре режима работы ГОСТ 28147-89:
- простой замены
- гаммирование
- гаммирование с обратной связью
- режим выработки имитовставки.
Режимы работы[править | править код]
Режим простой замены[править | править код]
Для зашифровывания в этом режиме 64-битный блок открытого текста сначала разбивается на две половины: Tо = (A0, B0)[10]. На i-м цикле используется подключ Xi:
- ( = двоичное «исключающее или»),
Для генерации подключей исходный 256-битный ключ разбивается на восемь 32-битных чисел: K0 … K7.
Подключи X0 … X23 являются циклическим повторением K0 … K7. Подключи X24 … X31 являются K7 … K0.
Результатом выполнения всех 32 раундов алгоритма является 64-битный блок шифртекста: Tш = (A32, B32).
Расшифрование осуществляется по тому же алгоритму, что и зашифрование, с тем изменением, что инвертируется порядок подключей: X0 … X7 являются K0 … K7, а X8 … X31 являются циклическим повторением K7 … K0.
Во входных и выходных данных 32-битные числа представляются в порядке от младшего бита к старшему (little endian).
Функция вычисляется следующим образом:
Ai и Xi складываются по модулю 232.
Результат разбивается на восемь 4-битовых подпоследовательностей, каждая из которых поступает на вход своего узла таблицы замен (в порядке возрастания старшинства битов), называемого ниже S-блоком. Общее количество S-блоков стандарта — восемь, то есть столько же, сколько и подпоследовательностей. Каждый S-блок представляет собой перестановку чисел от 0 до 15 (конкретный вид S-блоков в стандарте не определен). Первая 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 бит[11]
- При шифровании одинаковых блоков открытого текста получаются одинаковые блоки шифротекста, что может дать определенную информацию криптоаналитику.
Таким образом, применение ГОСТ 28147-89 в режиме простой замены желательно лишь для шифрования ключевых данных[11].
Гаммирование[править | править код]
При работе ГОСТ 28147-89 в режиме гаммирования описанным выше образом формируется криптографическая гамма, которая затем побитно складывается по модулю 2 с исходным открытым текстом для получения шифротекста. Шифрование в режиме гаммирования лишено недостатков, присущих режиму простой замены[11]. Так, даже идентичные блоки исходного текста дают разный шифротекст, а для текстов с длиной, не кратной 64 бит, «лишние» биты гаммы отбрасываются. Кроме того, гамма может быть выработана заранее, что соответствует работе шифра в поточном режиме.
Выработка гаммы происходит на основе ключа и так называемой синхропосылки, которая задает начальное состояние генератора. Алгоритм выработки следующий:
- Синхропосылка шифруется с использованием описанного алгоритма простой замены, полученные значения записываются во вспомогательные 32-разрядные регистры N3 и N4 — младшие и старшие биты соответственно.
- N3 суммируется по модулю 232 с константой C2 = 101010116
- N4 суммируется по модулю 232−1 с константой C1 = 101010416
- N3 и N4 переписываются соответственно в N1 и N2, которые затем шифруются с использованием алгоритма простой замены. Полученный результат является 64 битами гаммы.
- Шаги 2-4 повторяются в соответствии с длиной шифруемого текста.
Для расшифровывания необходимо выработать такую же гамму, после чего побитно сложить её по модулю 2 с зашифрованным текстом. Очевидно, для этого нужно использовать ту же синхропосылку, что и при шифровании. При этом, исходя из требований уникальности гаммы, нельзя использовать одну синхропосылку для шифрования нескольких массивов данных. Как правило, синхропосылка тем или иным образом передается вместе с шифротекстом.
Особенность работы ГОСТ 28147-89 в режиме гаммирования заключается в том, что при изменении одного бита шифротекста изменяется только один бит расшифрованного текста. С одной стороны, это может оказывать положительное влияние на помехозащищённость; с другой — злоумышленник может внести некоторые изменения в текст, даже не расшифровывая его[11].
Гаммирование с обратной связью[править | править код]
Алгоритм шифрования похож на режим гаммирования, однако гамма формируется на основе предыдущего блока зашифрованных данных, так что результат шифрования текущего блока зависит также и от предыдущих блоков. По этой причине данный режим работы также называют гаммированием с зацеплением блоков.
Алгоритм шифрования следующий:
- Синхропосылка заносится в регистры N1 и N2.
- Содержимое регистров N1 и N2 шифруется в соответствии с алгоритмом простой замены. Полученный результат является 64-битным блоком гаммы.
- Блок гаммы побитно складывается по модулю 2 с блоком открытого текста. Полученный шифротекст заносится в регистры N1 и N2.
- Операции 2-3 выполняются для оставшихся блоков требующего шифрования текста.
При изменении одного бита шифротекста, полученного с использованием алгоритма гаммирования с обратной связью, в соответствующем блоке расшифрованного текста меняется только один бит, так же затрагивается последующий блок открытого текста. При этом все остальные блоки остаются неизменными[11].
При использовании данного режима следует иметь в виду, что синхропосылку нельзя использовать повторно (например, при шифровании логически раздельных блоков информации — сетевых пакетов, секторов жёсткого диска и т. п). Это обусловлено тем, что первый блок шифр-текста получен всего лишь сложением по модулю два с зашифрованной синхропосылкой; таким образом, знание всего лишь 8 первых байт исходного и шифрованного текста позволяют читать первые 8 байт любого другого шифр-текста после повторного использования синхропосылки.
Режим выработки имитовставки[править | править код]
Этот режим не является в общепринятом смысле режимом шифрования. При работе в режиме выработки имитовставки создаётся некоторый дополнительный блок, зависящий от всего текста и ключевых данных. Данный блок используется для проверки того, что в шифротекст случайно или преднамеренно не были внесены искажения. Это особенно важно для шифрования в режиме гаммирования, где злоумышленник может изменить конкретные биты, даже не зная ключа; однако и при работе в других режимах вероятные искажения нельзя обнаружить, если в передаваемых данных нет избыточной информации.
Имитовставка вырабатывается для M ≥ 2 блоков открытого текста по 64 бит. Алгоритм следующий:
- Блок открытых данных записывается в регистры N1 и N2, после чего подвергается преобразованию, соответствующему первым 16 циклам шифрования в режиме простой замены.
- К полученному результату побитно по модулю 2 прибавляется следующий блок открытых данных. Последний блок при необходимости дополняется нулями. Сумма также шифруется в соответствии с пунктом 1.
- После добавления и шифрования последнего блока из результата выбирается имитовставка длиной L бит: с бита номер 32 − L до 32 (отсчёт начинается с 1). Стандарт рекомендует выбирать L исходя из того, что вероятность навязывания ложных данных равна 2−L. Имитовставка передается по каналу связи после зашифрованных блоков.
Для проверки принимающая сторона проводит аналогичную описанной процедуру. В случае несовпадения результата с переданной имитовставкой все соответствующие M блоков считаются ложными.
Выработка имитовставки может проводиться параллельно шифрованию с использованием одного из описанных выше режимов работы[11].
Узлы замены (S-блоки)[править | править код]
Все восемь S-блоков могут быть различными. Некоторые считают, что они могут являться дополнительным ключевым материалом, увеличивающим эффективную длину ключа; однако существуют применимые на практике атаки, позволяющие их определить[12]. Впрочем, и необходимости в увеличении длины ключа нет, 256 бит вполне достаточно в настоящее время[13]. Как правило, таблицы замен являются долговременным параметром схемы, общим для определенной группы пользователей.
В тексте стандарта ГОСТ 28147-89 указывается, что поставка заполнения узлов замены (S-блоков) производится в установленном порядке, то есть разработчиком алгоритма.
Узлы замены, определённые документом RFC 4357[править | править код]
Идентификатор: id-Gost28147-89-CryptoPro-A-ParamSet[править | править код]
OID: 1.2.643.2.2.31.1
Номер S-блока | Значение | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
1 | 9 | 6 | 3 | 2 | 8 | B | 1 | 7 | A | 4 | E | F | C | 0 | D | 5 |
2 | 3 | 7 | E | 9 | 8 | A | F | 0 | 5 | 2 | 6 | C | B | 4 | D | 1 |
3 | E | 4 | 6 | 2 | B | 3 | D | 8 | C | F | 5 | A | 0 | 7 | 1 | 9 |
4 | E | 7 | A | C | D | 1 | 3 | 9 | 0 | 2 | B | 4 | F | 8 | 5 | 6 |
5 | B | 5 | 1 | 9 | 8 | D | F | 0 | E | 4 | 2 | 3 | C | 7 | A | 6 |
6 | 3 | A | D | C | 1 | 2 | 0 | B | 7 | 5 | 9 | 4 | 8 | F | E | 6 |
7 | 1 | D | 2 | 9 | 7 | A | 6 | 0 | 8 | C | 4 | 5 | F | 3 | B | E |
8 | B | A | F | 5 | 0 | C | E | 8 | 6 | 2 | 3 | 9 | 1 | 7 | D | 4 |
Данный узел замен используется криптопровайдером CryptoPRO CSP по умолчанию. Также данный узел замен используется в ПО «Верба-О»[14].
Идентификатор: id-Gost28147-89-CryptoPro-B-ParamSet[править | править код]
OID: 1.2.643.2.2.31.2
Номер S-блока | Значение | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
1 | 8 | 4 | B | 1 | 3 | 5 | 0 | 9 | 2 | E | A | C | D | 6 | 7 | F |
2 | 0 | 1 | 2 | A | 4 | D | 5 | C | 9 | 7 | 3 | F | B | 8 | 6 | E |
3 | E | C | 0 | A | 9 | 2 | D | B | 7 | 5 | 8 | F | 3 | 6 | 1 | 4 |
4 | 7 | 5 | 0 | D | B | 6 | 1 | 2 | 3 | A | C | F | 4 | E | 9 | 8 |
5 | 2 | 7 | C | F | 9 | 5 | A | B | 1 | 4 | 0 | D | 6 | 8 | E | 3 |
6 | 8 | 3 | 2 | 6 | 4 | D | E | B | C | 1 | 7 | F | A | 0 | 9 | 5 |
7 | 5 | 2 | A | B | 9 | 1 | C | 3 | 7 | 4 | D | 0 | 6 | F | 8 | E |
8 | 0 | 4 | B | E | 8 | 3 | 7 | 1 | A | 2 | 9 | 6 | F | D | 5 | C |
Данный узел замен используется криптопровайдером CryptoPRO CSP.
Идентификатор: id-Gost28147-89-CryptoPro-C-ParamSet[править | править код]
OID: 1.2.643.2.2.31.3
Номер S-блока | Значение | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
1 | 1 | B | C | 2 | 9 | D | 0 | F | 4 | 5 | 8 | E | A | 7 | 6 | 3 |
2 | 0 | 1 | 7 | D | B | 4 | 5 | 2 | 8 | E | F | C | 9 | A | 6 | 3 |
3 | 8 | 2 | 5 | 0 | 4 | 9 | F | A | 3 | 7 | C | D | 6 | E | 1 | B |
4 | 3 | 6 | 0 | 1 | 5 | D | A | 8 | B | 2 | 9 | 7 | E | F | C | 4 |
5 | 8 | D | B | 0 | 4 | 5 | 1 | 2 | 9 | 3 | C | E | 6 | F | A | 7 |
6 | C | 9 | B | 1 | 8 | E | 2 | 4 | 7 | 3 | 6 | 5 | A | 0 | F | D |
7 | A | 9 | 6 | 8 | D | E | 2 | 0 | F | 3 | 5 | B | 4 | 1 | C | 7 |
8 | 7 | 4 | 0 | 5 | A | 2 | F | E | C | 6 | 1 | B | D | 9 | 3 | 8 |
Данный узел замен используется криптопровайдером CryptoPRO CSP.
Идентификатор: id-Gost28147-89-CryptoPro-D-ParamSet[править | править код]
OID: 1.2.643.2.2.31.4
Номер S-блока | Значение | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
1 | F | C | 2 | A | 6 | 4 | 5 | 0 | 7 | 9 | E | D | 1 | B | 8 | 3 |
2 | B | 6 | 3 | 4 | C | F | E | 2 | 7 | D | 8 | 0 | 5 | A | 9 | 1 |
3 | 1 | C | B | 0 | F | E | 6 | 5 | A | D | 4 | 8 | 9 | 3 | 7 | 2 |
4 | 1 | 5 | E | C | A | 7 | 0 | D | 6 | 2 | B | 4 | 9 | 3 | F | 8 |
5 | 0 | C | 8 | 9 | D | 2 | A | B | 7 | 3 | 6 | 5 | 4 | E | F | 1 |
6 | 8 | 0 | F | 3 | 2 | 5 | E | B | 1 | A | 4 | 7 | C | 9 | D | 6 |
7 | 3 | 0 | 6 | F | 1 | E | 9 | 2 | D | 8 | C | 4 | B | A | 5 | 7 |
8 | 1 | A | 6 | 8 | F | B | 0 | 4 | C | 3 | 5 | 9 | 7 | D | 2 | E |
Данный узел замен используется криптопровайдером CryptoPRO CSP.
Узлы замены, определённые документом RFC 7836[править | править код]
Узел замены, определённый Техническим комитетом по стандартизации «Криптографическая защита информации» (сокращенно — ТК 26) Росстандарта[15].
Идентификатор: id-tc26-gost-28147-param-Z[править | править код]
OID: 1.2.643.7.1.2.5.1.1
Номер S-блока | Значение | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
1 | C | 4 | 6 | 2 | A | 5 | B | 9 | E | 8 | D | 7 | 0 | 3 | F | 1 |
2 | 6 | 8 | 2 | 3 | 9 | A | 5 | C | 1 | E | 4 | 7 | B | D | 0 | F |
3 | B | 3 | 5 | 8 | 2 | F | A | D | E | 1 | 7 | 4 | C | 9 | 6 | 0 |
4 | C | 8 | 2 | 1 | D | 4 | F | 6 | 7 | 0 | A | 5 | 3 | E | 9 | B |
5 | 7 | F | 5 | A | 8 | 1 | 6 | D | 0 | 9 | 3 | E | B | 4 | 2 | C |
6 | 5 | D | F | 6 | 9 | 2 | C | A | B | 7 | 8 | 1 | 4 | 3 | E | 0 |
7 | 8 | E | 2 | 5 | 6 | 9 | 1 | C | F | 4 | B | 0 | D | A | 3 | 7 |
8 | 1 | 7 | E | D | 0 | 5 | 8 | 3 | 4 | F | A | 6 | 9 | C | B | 2 |
Данный узел зафиксирован как рекомендуемый в методических рекомендациях ТК26[16], и как единственный в новой ревизии стандарта ГОСТ Р 34.12-2015[17] и ГОСТ 34.12-2018[18], а также RFC 7836 и RFC 8891.
Узлы замены, определённые на Украине[править | править код]
Узел замены № 1 из инструкции № 114[править | править код]
Узел замены № 1 (ДКЕ № 1 — укр. довгостроковий ключовий елемент), определён в «Инструкции о порядке поставки и использования ключей к средствам криптографической защиты информации» (укр. «Інструкція про порядок постачання і використання ключів до засобів криптографічного захисту інформації»)[19].
Номер S-блока | Значение | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
1 | A | 9 | D | 6 | E | B | 4 | 5 | F | 1 | 3 | C | 7 | 0 | 8 | 2 |
2 | 8 | 0 | C | 4 | 9 | 6 | 7 | B | 2 | 3 | 1 | F | 5 | E | A | D |
3 | F | 6 | 5 | 8 | E | B | A | 4 | C | 0 | 3 | 7 | 2 | 9 | 1 | D |
4 | 3 | 8 | D | 9 | 6 | B | F | 0 | 2 | 5 | C | A | 4 | E | 1 | 7 |
5 | F | 8 | E | 9 | 7 | 2 | 0 | D | C | 6 | 1 | 5 | B | 4 | 3 | A |
6 | 2 | 8 | 9 | 7 | 5 | F | 0 | B | C | 1 | D | E | A | 3 | 6 | 4 |
7 | 3 | 8 | B | 5 | 6 | 4 | E | A | 2 | C | 1 | 7 | 9 | F | D | 0 |
8 | 1 | 2 | 3 | E | 6 | D | B | 8 | F | A | C | 5 | 7 | 9 | 0 | 4 |
Согласно приказу Госспецсвязи Украины № 1273/35556 от 21 декабря 2020 года «Технические спецификации к RFC 5652», этот узел замены используется по умолчанию и содержится в упакованном виде (64 байта) в параметрах сертификата открытого ключа, сформированного по ДСТУ 4145-2002[20].
Достоинства стандарта[править | править код]
- бесперспективность атаки полным перебором (XSL-атаки в учёт не берутся, так как их эффективность на данный момент полностью не доказана);
- эффективность реализации и, соответственно, высокое быстродействие на современных компьютерах. (В действительности программные реализации ГОСТ 28147-89 как любой шифр сети Фейстеля медленнее современных шифров типа AES и других. И только в одной реализации «GEOM_GOST» для ОС FreeBSD скорость работы шифра ГОСТ 28147-89 оказалась сравнимой с скоростью работы шифра AES из-за особенностей реализации подсистемы GEOM для дисковых накопителей в ОС FreeBSD[источник не указан 1465 дней].);
- наличие защиты от навязывания ложных данных (выработка имитовставки) и одинаковый цикл шифрования во всех четырёх алгоритмах стандарта.
Криптоанализ[править | править код]
Считается[21], что ГОСТ устойчив к таким широко применяемым методам, как линейный и дифференциальный криптоанализ. Обратный порядок использования ключей в последних восьми раундах обеспечивает защиту от атак скольжения (slide attack) и отражения (reflection attack). Ростовцев А. Г., Маховенко Е. Б., Филиппов А. С., Чечулин А. А. в своей работе[22] описали вид криптоанализа, который сводится к построению алгебраической целевой функции и нахождению её экстремума. Были выделены классы слабых ключей, в частности, показано, что разреженные ключи (со значительным преобладанием 0 или 1) являются слабыми. По мнению авторов, их метод в любом случае лучше, чем полный перебор, однако без численных оценок.
В мае 2011 года известный криптоаналитик Николя Куртуа доказал существование атаки на данный шифр, имеющей сложность в 28 (256) раз меньше сложности прямого перебора ключей при условии наличия 264 пар «открытый текст/закрытый» текст[23][24]. Данная атака не может быть осуществлена на практике ввиду слишком высокой вычислительной сложности. Более того, знание 264 пар «открытый текст/закрытый» текст, очевидно, позволяет читать зашифрованные тексты, даже не вычисляя ключа. В большинстве других работ также описываются атаки, применимые только при некоторых предположениях, таких как определённый вид ключей или таблиц замен, некоторая модификация исходного алгоритма, или же требующие всё ещё недостижимых объёмов памяти или вычислений. Вопрос о наличии применимых на практике атак без использования слабости отдельных ключей или таблиц замены остается открытым[12].
Критика стандарта[править | править код]
Основные проблемы стандарта связаны с неполнотой стандарта в части генерации ключей и таблиц замен. Считается, что у стандарта существуют «слабые» ключи и таблицы замен[22][25], но в стандарте не описываются критерии выбора и отсева «слабых».
В октябре 2010 года на заседании 1-го объединённого технического комитета Международной организации по стандартизации (ISO/IEC JTC 1/SC 27) ГОСТ был выдвинут на включение в международный стандарт блочного шифрования ISO/IEC 18033-3. В связи с этим в январе 2011 года были сформированы фиксированные наборы узлов замены и проанализированы их криптографические свойства. Однако ГОСТ не был принят в качестве стандарта, и соответствующие таблицы замен не были опубликованы[26].
Таким образом, существующий стандарт не специфицирует алгоритм генерации таблицы замен (S-блоков). С одной стороны, это может являться дополнительной секретной информацией (помимо ключа), а с другой, поднимает ряд проблем:
- нельзя определить криптостойкость алгоритма, не зная заранее таблицы замен;
- реализации алгоритма от различных производителей могут использовать разные таблицы замен и могут быть несовместимы между собой;
- возможность преднамеренного предоставления слабых таблиц замен лицензирующими органами РФ;
- потенциальная возможность (отсутствие запрета в стандарте) использования таблиц замены, в которых узлы не являются перестановками, что может привести к чрезвычайному снижению стойкости шифра.
Возможные применения[править | править код]
- Использование в S/MIME (PKCS#7, Cryptographic Message Syntax)[27].
- Использование для защиты соединений в TLS (SSL, HTTPS, WEB)[28][29][30].
- Использование для защиты сообщений в XML Encryption[31].
Примечания[править | править код]
- ↑ Юбилей российского алгоритма шифрования ГОСТ 28147-89 (14 мая 2014). Дата обращения: 9 января 2020.
- ↑ Зеленоградские разработчики криптосредств отметили юбилей алгоритма шифрования (23 мая 2014). Дата обращения: 9 января 2020. Архивировано 21 сентября 2016 года.
- ↑ Романец, 2016.
- ↑ ГОСТ 28147-89 на сайте ФГУП «Стандартинформ» .
- ↑ ГОСТ 28147-89 на сайте ФГИС «Нормдок» . Дата обращения: 26 августа 2019. Архивировано из оригинала 26 августа 2019 года.
- ↑ ГОСТ 28147-89 на сайте Национального фонда ТНПА . Дата обращения: 25 августа 2019. Архивировано 25 августа 2019 года.
- ↑ Наказ Держспоживстандарту №495 від 22.12.2008. Про прийняття міждержавних стандартів як національні методом підтвердження та скасування відповідних міждержавних стандартів . Дата обращения: 25 августа 2019. Архивировано 5 мая 2019 года.
- ↑ Наказ ДП «УкрНДНЦ» №539 від 28.12.2018. Про відновлення дії національних та міждержавних стандартів . Дата обращения: 25 августа 2019. Архивировано 25 августа 2019 года.
- ↑ Извещение о порядке использования алгоритма блочного шифрования ГОСТ 28147-89 . Дата обращения: 25 августа 2019. Архивировано 25 августа 2019 года.
- ↑ В описании стандарта ГОСТ обозначены как N1 и N2 соответственно.
- ↑ 1 2 3 4 5 6 А. Винокуров. Алгоритм шифрования ГОСТ 28147-89, его использование и реализация для компьютеров платформы Intel x86 Архивная копия от 1 апреля 2022 на Wayback Machine
- ↑ 1 2 Панасенко С. П. Стандарт шифрования ГОСТ 28147-89 Архивная копия от 1 декабря 2012 на Wayback Machine
- ↑ Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си, 2-е издание — М.: Триумф, 2002, 14.1
- ↑ Идентификаторы криптографических параметров алгоритмов . Дата обращения: 21 апреля 2014. Архивировано 28 июля 2013 года.
- ↑ Рекомендации по стандартизации «Задание узлов замены блока подстановки алгоритма шифрования ГОСТ 28147-89 Архивная копия от 8 сентября 2017 на Wayback Machine»
- ↑ МР 26.2.003-2013 Архивная копия от 26 декабря 2019 на Wayback Machine «Информационная технология. Криптографическая защита информации. Задание узлов замены блока подстановки алгоритма шифрования ГОСТ 28147-89»
- ↑ ГОСТ Р 34.12-2015 «Информационная технология. Криптографическая защита информации. Блочные шифры»
- ↑ ГОСТ 34.12-2018 «Информационная технология. Криптографическая защита информации. Блочные шифры»
- ↑ Приказ Госспецсвязи Украины от 12 июня 2007 года № 114 «Про затвердження Інструкції про порядок постачання і використання ключів до засобів криптографічного захисту інформації» (укр.). zakon.rada.gov.ua. Кабинет Министров Украины (12 июня 2007). Дата обращения: 25 августа 2019. Архивировано 30 апреля 2019 года.
- ↑ Технічні специфікації до RFC 5652 . zakon.rada.gov.ua (20 августа 2012). Дата обращения: 4 мая 2021. Архивировано 25 февраля 2022 года.
- ↑ Vitaly V. Shorin, Vadim V. Jelezniakov and Ernst M. Gabidulin. Linear and Differential Cryptanalysis of Russian GOST // Electronic Notes in Discrete Mathematics. — 2001. — С. 538—547.
- ↑ 1 2 Ростовцев А.Г., Маховенко Е.Б., Филиппов А.С., Чечулин А.А. О стойкости ГОСТ 28147–89 // Проблемы информационной безопасности. Компьютерные системы. — 2003. — С. 75—83. Архивировано 7 июля 2011 года.
- ↑ Nicolas T. Courtois. Security Evaluation of GOST 28147-89 In View Of International Standardisation . Архивировано 7 декабря 2012 года.. Cryptology ePrint Archive: Report 2011/211
- ↑ SecurityLab: Взломан блочный шифр ГОСТ 28147-89 . Дата обращения: 22 мая 2011. Архивировано 14 мая 2013 года.
- ↑ Сергей Панасенко. Стандарт шифрования ГОСТ 28147-89 (15 августа 2007). Дата обращения: 30 ноября 2012. Архивировано 1 декабря 2012 года.
- ↑ Технический комитет по стандартизации (ТК 26) «Криптографическая защита информации» О деятельности по международной стандартизации алгоритма шифрования ГОСТ 28147-89 . Дата обращения: 11 ноября 2012. Архивировано из оригинала 11 марта 2012 года.
- ↑ 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) (англ.) (май 2006). — RFC 4490. Дата обращения: 21 июня 2009. Архивировано 24 августа 2011 года.
- ↑ Leontiev, S., Ed. and G. Chudov, Ed. GOST 28147-89 Cipher Suites for Transport Layer Security (TLS) (англ.) (декабрь 2008). — Internet-Drafts, work in progress. Дата обращения: 21 июня 2009. Архивировано 24 августа 2011 года.
- ↑ "Introduction". doi:10.17487/RFC9189. RFC 9189 https://datatracker.ietf.org/doc/html/rfc9189.
{{citation}}
:|title=
пропущен или пуст (справка) - ↑ "Introduction". doi:10.17487/RFC9367. RFC 9367 https://datatracker.ietf.org/doc/html/rfc9367.
{{citation}}
:|title=
пропущен или пуст (справка) - ↑ 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 (англ.) (декабрь 2008). — Internet-Drafts, work in progress. Дата обращения: 21 июня 2009. Архивировано 24 августа 2011 года.
См. также[править | править код]
Литература[править | править код]
- Мельников В. В. Защита информации в компьютерных системах. — М.: Финансы и статистика, 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.
- Спесивцев А.В., Вегнер В.А., Крутяков А.Ю. и др. Защита информации в персональных ЭВМISBN 5-256-01137-5. . — М.: Радио и связь, МП "Веста", 1992. — 192 с. — (Библиотека системного программиста). —
- Романец Ю.В., Панасенко С.П., Заботин И.А., Петров С.В., Ракитин В.В., Дударев Д.А., Сырчин В.К., Салманова Ш.А. Глава 3. История создания алгоритма ГОСТ 28147-89 и принципы, заложенные в его основу // Фирма «АНКАД» – 25 лет на службе обеспечения информационной безопасности России / под ред. Ю. В. Романца. — М.: Техносфера, 2016. — С. 9—19. — 256 с. — ISBN 978-5-94836-429-2.
Ссылки[править | править код]
- Текст стандарта ГОСТ 28147—89 «Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования»
- ГОСТы для OpenSSL . — криптографический проект компании ООО «Криптоком» по добавлению российских криптографических алгоритмов в библиотеку OpenSSL. Дата обращения: 16 ноября 2008. Архивировано 24 августа 2011 года.
- https://github.com/gost-engine/engine — открытая реализация алгоритмов ГОСТ для OpenSSL.