Алгоритм ГОСТ 28147-89. Зашифрування в режимі простої заміни

Алгоритм ГОСТ 28147-89 у режимі гамування зі зворотним зв'язком

У режимі гамування зі зворотним зв'язком черговий блок гами для такту формується в результаті зашифрування в режимі простої заміни блока шифрованого тексту, отриманого на такті з номером . Блок шифртекста з номером називається синхропосилкою. Синхропосилка є несекретним псевдовипадковим блоком і звичайно позначається через .

Крім режимів шифрування, у стандарті ДСТ 28147-89 передбачений т.зв. режим вироблення імітовставки. Забезпечення імітозахисту відкритого тексту є необхідним, оскільки для криптограм модульного гамування відкритий текст можна модифікувати не змінюючи гами.

Дійсно, нехай - знак шифртекста при модульному гамуванні знака відкритого тексту гамою . Нехай знак відомий і його необхідно замінити на знак . Очевидно, , тому, якщо в криптограмі замінити знак на знак , відкритий текст нової криптограми після розшифрування буде відповідним чином змінений.

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

Для шифрування кожної криптограми виробляється 64-х бітовий несекретний псевдослучайный блок ,(синхропосилка). Цей блок служить параметром у ході деяких ітеративних перетворень. Синхропосилка є першим блоком шифротекста.

Використовуються два типи ключів: довгостроковий і сеансовый розміром 512 і 256 битов відповідно. Ключ реалізує потетрадную заміну 32-розрядних підблоків у 32-х розрядні і складається з 8 вузлів: . У стандарті довгостроковий ключ називається блоком підстановки . Вузол є таблицею заміни для -ой (зліва) тетради, тобто побудований з 16 тетрад. Ключ складається з конкатенації восьми 32-х розрядних підключив , кожний з яких у відповідний момент сумується з деяким підблоком за модулем (операція +).

Зашифрування блоку в режимі простої заміни складається з 32 циклів. На кожному циклі відбувається перетворення 64-х бітового блоку в 64-х бітовий.

Результатом зашифрування є результат роботи (вихід) тридцять другого циклу, підданий додатковому перетворенню (перестановка підблоків, тобто половинок блоків, місцями).

Криптоеквівалентним чином, процес простої заміни блоку на блок можна представити у виді послідовності тридцяти чотирьох подблоков розміром 32 біта кожний:

, || , || .

Тут || - результат роботи циклу номер . Додаткове перетворення змінює порядок подблоков у вихідному блоці циклу номер 31.

Елементи послідовності зв'язані ланцюговою залежністю виду , де - порозрядне додавання подблоков за модулем два.

Запис означає, що подблок модифікується за допомогою перетворення, яке залежить від . Точніше, , де залежить від параметрів, задіяних у циклі з номером . Кожна з функцій використовує ключ і деякий підключ сеансового ключа , де - послідовність вибору підключів: . Перетворення полягає в обчисленні підблоку , заміні кожної тетради підблоку за допомогою відповідного вузла і циклічному зсуві отриманого підблока на 11 розрядів вліво. Таким чином, є циклічно зсунутим виходом з блоку підстановки .