В России установлен единый алгоритм криптографического преобразования для систем обработки информации и компьютерных сетей. Алгоритм предназначен как для программной так и аппаратной реализации, удовлетворяет всем криптографическим требованиям и не накладывает ограничений на степень секретности шифруемой информации. Алгоритм реализует шифрование данных в виде 64 битных блоков для шифрования используется 256 битный ключ состоящий из 8 32 битовых ключей. Соответственно в алгоритме используется 32 раунда. Алгоритм может использоваться в следующих режимах – простая замена, Гаммирование, Гаммирование с обратной связью и выработка имитовставки (режим защиты от внесения ложных данных). ГОСТ относится к шифрам на основе сети Фейстеля в каждом раунде над 32 битным блоком данных выполняется следующая операция Li=Ri-1 Ri=Li-1+F(Ri-1,Ki).
Алгоритм имеет следующую общую схему
На первом этапе над правой половиной шифруемого текста и итым подключом выполняется операция сложения по модулю 232. результат операции разбивается на 8 4 битовых фрагментов. Каждый такой фрагмент поступает на вход своего s-блока. Каждый из s-блоков является перестановкой чисел от 0 до 15. во всех 8 s-блоках выполняются различные перестановки и фактически они являются как бы дополнительными ключами и должны поэтому храниться в секрете. Алгоритм ГОСТ не определяет метод которым создаются s-блоки пользователь самостоятельно создает перестановки для них с использованием генератора случайных чисел. Генерация подстановок в s-блоках определяет криптостойкость данного алгоритма. Прием разбиения на отдельные s-блоки позволяет развязать несколько сетей передачи данных. Таким образом в сети передачи данных абоненты с одинаковыми подстановками имеют возможность обмениваться зашифрованной информацией что позволяет создавать выделенные группы пользователей с засекреченной связью. На следующем этапе выходы всех 8 s-блоков объединяются в одно 32 битное слово затем это слово циклически сдвигается влево на 11 из бит. На завершающем этапе результат объединяется операцией XOR с левой половиной шифруемого текста создавая новую правую половину. А правая половина становиться новой левой. Все эти операции повторяются 32. Расшифрование производиться так же просто порядок введения подключей меняется.
Секретность алгоритма ГОСТ обеспечивается:
за счет большой длины ключа, а если учесть что подстановки в s-блоках являются секретными, то общий объем секретной информации составит 610 бит
за счет 32 раундов преобразований