«СТРУМОК» (; рус. «ручей, поток, струя») — потоковый симметричный шифр, описанный в национальном стандарте Украины ДСТУ 8845:2019 «Информационные технологии. Криптографическая защита информации. Алгоритм симметричного поточного преобразования». Стандарт вступил в силу с 1 октября 2019.

В зависимости от длины секретного ключа имеет два режима работы: «СТРУМОК-256» и «СТРУМОК-512».

СТРУМОК обеспечивает высокую скорость формирования ключевого потока (более 10 Гбит/c).

Схема работы

Общая схема работы В основе алгоритма СТРУМОК лежит идея гаммирования, заключающаяся в «наложении» последовательности, состоящей из случайных чисел, на открытый текст. Генератор псевдослучайных чисел СТРУМОК использует 256-битный вектор инициализации и 256-битный или 512-битный секретный ключ и обеспечивает стойкость с учётом возможного применения квантового криптографического анализа. Криптоалгоритм ориентирован на 64-разрядные вычислительные системы, следовательно размер слова определён равным 64 битам.

Основными структурными компонентами генератора являются регистр сдвига с линейной обратной связью и конечный автомат, в котором выполняется нелинейное преобразование. Входные данные (ключ и вектор инициализации ) используются для инициализации переменной состояния , которая состоит из восемнадцати 64-битных блоков: 16 ячеек регистра сдвига с линейным обратной связью : ; два регистра конечного автомата . Выход представляет собой ключевой поток (гамму), который формируется из 64-битных слов .

Алгоритм В алгоритме СТРУМОК можно выделить три основные функции: функция инициализации , которая принимает в качестве входных данных ключ и вектор инициализации , и производит начальное значение переменной состояния ; функция следующего состояния , которая принимает на вход переменную состояния и производит следующее значение переменной состояния ; функция ключевого потока , что принимает на входе переменную состояния и производит на выходе ключевой поток (64 бита).

Функция инициализации Init Вход : 256 или 512-битный ключ , 256-битный вектор инициализации .

Выход : начальное значение переменной состояния .

В 16 ячеек регистра сдвига заносится значения, сформированные на основании ключа и вектора инициализации. Таким образом формируется . Выполняются 32 инициирующих такта без генерации ключевого потока(выполнение функции Next в режиме инициализации INIT): . Рассчитывается начальное значение переменной состояния: . Выводится значение .

Функция следующего состояния Next Вход: Переменная состояния и режим работы(обычный или режим инициализации).

Выход: Переменная состояния .

Обновляются значения регистров конечного автомата . Обновляется значение 15 ячеек регистра сдвига: Обновляется значение 16 ячейки: при работе в обычном режиме и при режиме инициализации. Выводится значение .

Функция ключевого потока Strm Вход: Переменная состояния .

Выход: ключевой поток .

Вычисляется значение . Выводится значение .

Функция конечного автомата FSM Функция конечного автомата используется в функциях и .

Вход : три 64-битных строки .

Выход : 64-битная строка .

Вычисляется значение . Выводится значение .

обозначает операцию сложения целых чисел по модулю 264.

Схема работы регистра сдвига Обратную связь в регистре сдвига с линейным обратной связью можно описать операциями над элементами конечных полей.

Обратная связь в регистре сдвига строится над полем полиномом:

где является корнем многочлена над полем :

,

где является корнем многочлена над полем :

.

Поле строится над полем полиномом .

Период выходной последовательности регистра сдвига является максимальным и равным .

Сравнение со SNOW 2.0 Генератор ключевого потока СТРУМОК в своей концептуальной схеме подобен SNOW 2.0. Но SNOW 2.0 ориентирован на использование в 32-разрядных вычислительных систем, тогда как СТРУМОК предназначен для использования в более мощных 64-разрядных вычислительных системах. В связи с этим в алгоритме Струмок повышается скорость формирования псевдослучайной последовательности. В алгоритме СТРУМОК увеличены, по сравнению с SNOW2.0, длины секретного ключа и вектора инициализации. Это позволяет надежно применять поточный шифр даже в условиях, когда злоумышленнику доступно применение квантового криптоанализа.

Тестирование направленное на определение случайности двоичных последовательностей NIST показывает, что алгоритм СТРУМОК уступает SNOW 2.0.

Генератор ключевых потоков СТРУМОК позволяет формировать псевдослучайные последовательности со скоростью более 10 Гбит/с (Intel Core i9-7980XE 2.60 GHz и OS Windows® 10 Pro).

Примечания

Категория:Потоковые шифры Категория:Криптография