ГОСТ 28147-89

ГОСТ 28147-89
Розробники КДБ, 8-е управління
Уперше оприлюднений 1990 р.
Раундів 32/16
Тип мережа Фейстеля

ГОСТ 28147-89 — радянський і російський стандарт симетричного шифрування, введений в 1990 році, також є стандартом СНД [Архівовано 26 червня 2013 у Wayback Machine.]. Повна назва — «ГОСТ 28147-89 Системи обробки інформації. Захист криптографічний. Алгоритм криптографічного перетворення». Блочний шифроалгоритм. При використанні методу шифрування з гамуванням, може виконувати функції поточного шифроалгоритму.

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

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

У 2009 році ГОСТ 28147-89 перевиданий в Україні під назвою ДСТУ ГОСТ 28147:2009.

Опис

ГОСТ 28147-89 — блоковий шифр з 256 — бітовим ключем і 32 циклами перетворення, що оперує 64-бітними блоками. Основа алгоритму шифру — Мережа Фейстеля. Базовим режимом шифрування за ГОСТ 28147-89 є режим простої заміни (визначені також складніші режими гамування, гамування зі зворотним зв'язком і режим імітовставки). Для зашифрування в цьому режимі відкритий текст спочатку розбивається на дві половини (молодші біти — A, старші біти — B[2]). На i-му циклі використовується з'єднання K i :

  A i + 1 = B i f ( A i , K i ) {\displaystyle ~A_{i+1}=B_{i}\oplus f(A_{i},K_{i})} ( {\displaystyle \oplus } = двійкове «виключаюче або» XOR)
  B i + 1 = A i {\displaystyle ~B_{i+1}=A_{i}}

Для генерації підключів вихідний 256-бітний ключ розбивається на вісім 32-бітних блоків: K 1 … K 8 .

Ключі K9 … K24 є циклічним повторенням ключів K1 … K8 (нумеруються від молодших бітів до старших). Ключі K25 … K 32 є ключами K1 … K8 , що йдуть у зворотному порядку.

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

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

Функція f ( A i , K i ) {\displaystyle 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 бітів.

Вузли заміни (S-блоки)

Усі вісім S-блоків можуть бути різними. Фактично, вони можуть бути додатковим ключовим матеріалом, але частіше є параметром схеми, загальним для певної групи користувачів. В ГОСТ Р 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-блоків використовується в криптографічних додатках ЦБ РФ.[3]

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

Переваги ГОСТу

  • Безперспективність атаки повного перебору (XSL-атаки в облік не беруться, оскільки їх ефективність на даний момент повністю не доведена);
  • Ефективність реалізації і відповідно високу швидкодію на сучасних комп'ютерах.
  • Наявність захисту від нав'язування помилкових даних (вироблення імітовставки) і однаковий цикл шифрування у всіх чотирьох алгоритмах ГОСТу.

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

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

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

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

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

Примітки

  1. А. Винокуров. Алгоритм шифрування ГОСТ 28147-89, його використання і реалізація для комп'ютерів платформи Intel x86 [Архівовано 1 квітня 2022 у Wayback Machine.]
  2. В описі стандарту ГОСТ позначені як N 1 і N 2 відповідно
  3. Шнайер Б. Прикладна криптографія. Протоколи, алгоритми, вихідні тексти на мові Сі, 2-е видання — М.: Тріумф, 2002, 14.1
  4. Nicolas T. Courtois. Security Evaluation of GOST 28147-89 In View Of International Standardisation [Архівовано 2012-08-19 у Wayback Machine.]. Cryptology ePrint Archive: Report 2011/211
  5. SecurityLab: Зламаний блоковий шифр ГОСТ 28147-89. Архів оригіналу за 14 травня 2013. Процитовано 16 червня 2012.

Посилання

  • Опис алгоритму, реалізація, вихідні коди, статті та посилання
  • Стаття про ГОСТ 28147-89

Література

  • Мельников В. В. Захист інформації в комп'ютерних системах.
  • Романець Ю. В.. Тимофєєв П. А., Шаньгина В. Ф. Захист інформації в комп'ютерних системах та мережах.
  • Харін Ю. С., Берник В. І., Матвєєв Г. В. Математичні основи криптології.
  • Герасименко В. А., Малюк А. А. Основи захисту інформації.
  • Леонов А. П., Леонов К. П., Фролов Г. В. Безпека автоматизованих банківських і офісних технологій.
  • Зима В. М.. Молдовян А. А., Молдовян Н. А. Комп'ютерні мережі та захист переданої інформації.
  • Шнайер Б. 14.1 Алгоритм ГОСТ 28147-89. Прикладна криптографія. с. 373—377.
  • 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. — January 2006.
  • Gulom Numovych Tuychiev. Алгоритми шифрування ГОСТ 28147-89-IDEA8-4 и ГОСТ 28147-89-RFWKIDEA8-4 // Захист інформації. — НАУ, 2017. — Т. 19. — ISSN 2410-7840. — DOI:10.18372/2410-7840.19.11199. Архівовано з джерела 24 листопада 2017. Процитовано 14 листопада 2017.


Замок Це незавершена стаття з криптографії.
Ви можете допомогти проєкту, виправивши або дописавши її.
  • п
  • о
  • р
SP-мережа, блок 64 біт : SAFER | SHARK
Мережа Файстеля, блок 64 біт  : ГОСТ 28147-89 (Magma) | 3-DES | Blowfish | DES | FEAL | IDEA | KASUMI | RC5 | TEA
SP-мережа, блок від 128 біт : Калина | AES | Anubis | CRYPTON | Hierocrypt-3 | Kuznechik | PRESENT | SQUARE | Serpent | Threefish
Мережа Файстеля, блок від 128 біт : Camellia | CAST-256 | MARS | RC6 | Sinople | Twofish
  • п
  • о
  • р

П:  Програмування П:  Інформаційні технології П:  Математика