ГОСТ 28147-89
ГОСТ 28147-89 — радянський і російський стандарт симетричного шифрування, введений в 1990 році, також є стандартом СНД Шаблон:Webarchive. Повна назва — «ГОСТ 28147-89 Системи обробки інформації. Захист криптографічний. Алгоритм криптографічного перетворення». Блочний шифроалгоритм. При використанні методу шифрування з гамуванням, може виконувати функції поточного шифроалгоритму.
За деякими відомостями[1], історія цього шифру набагато давніша. Алгоритм, покладений згодом в основу стандарту, народився, імовірно, в надрах Восьмого Головного управління КДБ СРСР (нині в структурі ФСБ), швидше за все, в одному з підвідомчих йому закритих НДІ, ймовірно, ще в 1970-х роках в рамках проєктів створення програмних та апаратних реалізацій шифру для різних комп'ютерних платформ.
З моменту опублікування ГОСТу на ньому стояв обмежувальний гриф «Для службового користування», і формально шифр був оголошений «повністю відкритим» тільки в травні 1994 року. Історія створення шифру і критерії розробників станом на 2010 рік не опубліковані.
У 2009 році ГОСТ 28147-89 перевиданий в Україні під назвою ДСТУ ГОСТ 28147:2009.
Опис
ГОСТ 28147-89 — блоковий шифр з 256 — бітовим ключем і 32 циклами перетворення, що оперує 64-бітними блоками. Основа алгоритму шифру — Мережа Файстеля.
Базовим режимом шифрування за ГОСТ 28147-89 є режим простої заміни (визначені також складніші режими гамування, гамування зі зворотним зв'язком і режим імітовставки).
Для зашифрування в цьому режимі відкритий текст спочатку розбивається на дві половини (молодші біти — A, старші біти — B[2]). На i-му циклі використовується з'єднання K i:
- ( = двійкове «виключаюче або» XOR)
Для генерації підключив вихідний 256-бітний ключ розбивається на вісім 32-бітних блоків: K 1 … K 8
Ключі K9 … K24 є циклічним повторенням ключів K1 … K8 (нумеруються від молодших бітів до старших).
Ключі K25 … K 32 є ключами K1 … K8, що йдуть у зворотному порядку.
Після виконання всіх 32 раундів алгоритму, блоки A33 і B33 склеюються (зверніть увагу, що старшим бітом стає 33, а молодшим — B33) — результат є результат роботи алгоритму.
Розшифрування виконується так само як і зашифрування, але інвертується порядок підключей Ki.
Функція обчислюється таким чином:
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-блоків). З одного боку, це може бути додатковою секретною інформацією (крім ключа), а з іншого, піднімає ряд проблем:
- Не можна визначити криптостійкість алгоритму, не знаючи заздалегідь таблиці замін;
- Реалізації алгоритму від різних виробників можуть використовувати різні таблиці замін і можуть бути несумісні між собою;
- Можливість навмисного надання слабких таблиць замін органами, що проводять ліцензування;
- Потенційна можливість (відсутність заборони в стандарті) використання таблиць заміни, в яких вузли не є перестановками, що може привести до надзвичайного зниження стійкості шифру.
Примітки
Посилання
Література
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Книга
- Шаблон:Cite book
- Шаблон:Стаття
- Шаблон:Cite article
Шаблон:Crypto-stub
Шаблон:Блочні алгоритми шифрування
Шаблон:Крипто навігація
Шаблон:ВП-портали
- ↑ А. Винокуров. Алгоритм шифрування ГОСТ 28147-89, його використання і реалізація для комп'ютерів платформи Intel x86 Шаблон:Webarchive
- ↑ В описі стандарту ГОСТ позначені як N 1 і N 2 відповідно
- ↑ Шнайер Б. Прикладна криптографія. Протоколи, алгоритми, вихідні тексти на мові Сі, 2-е видання — М.: Тріумф, 2002, 14.1
- ↑ Nicolas T. Courtois. Security Evaluation of GOST 28147-89 In View Of International Standardisation Шаблон:Webarchive. Cryptology ePrint Archive: Report 2011/211
- ↑ Шаблон:Cite web