«СТРУМОК» (англ.STRUMOK; рус. Ручей; поток; струя) — потоковыйсимметричный шифр, описанный в национальном стандарте Украины ДСТУ 8845:2019 «Информационные технологии. Криптографическая защита информации. Алгоритм симметричного поточного преобразования»[1]. Стандарт вступил в силу с 1 октября 2019.
В зависимости от длинны секретного ключе имеет два режима работы: «СТРУМОК-256» и «СТРУМОК-512».
СТРУМОК обеспечивает высокую скорость формирования ключевого потока (более 10 Гбит/c).
В основе алгоритма СТРУМОК лежит идея гаммирования, заключающаяся в «наложении» последовательности, состоящей из случайных чисел, на открытый текст. Генератор псевдослучайных чисел СТРУМОК использует 256-битный вектор инициализации и 256-битный или 512-битный секретный ключ и обеспечивает стойкость с учётом возможного применения квантового криптографического анализа. Криптоалгоритм ориентирован на 64-разрядные вычислительные системы, следовательно размер слова определён равным 64 битам.
Основными структурными компонентами генератора является регистр сдвига с линейным обратной связью и конечный автомат, в котором выполняется нелинейное преобразование. Входные данные (ключ и вектор инициализации ) используются для инициализации переменной состояния , которая состоит из восемнадцати 64-битных блоков:
Выход представляет собой ключевой поток (гамму), который формируется из 64-битных слов .
Алгоритм
В алгоритме СТРУМОК можно выделить три основные функции:
функция инициализации , которая принимает в качестве входных данных ключ и вектор инициализации , и производит начальное значение переменной состояния ;
функция следующего состояния , которая принимает на вход переменную состояния и производит следующее значение переменной состояния ;
функция ключевого потока , что принимает на входе переменную состояния и производит на выходе ключевой поток (64 бита).
Период выходной последовательности регистра сдвига является максимальным и равным .
Сравнение со SNOW 2.0
Генератор ключевого потока СТРУМОК в своей концептуальной схеме подобен SNOW 2.0. Но SNOW 2.0 ориентирован на использование в 32-разрядных вычислительных систем, тогда как СТРУМОК предназначен для использования в более мощных 64-разрядных вычислительных системах. В связи с этим в алгоритме Струмок повышается скорость формирования псевдослучайной последовательности.[2] В алгоритме СТРУМОК увеличены, по сравнению с SNOW2.0, длины секретного ключа и вектора инициализации. Это позволяет надежно применять поточный шифр даже в условиях, когда злоумышленнику доступно применение квантового криптоанализа.[3]
Тестирование направленное на определение случайности двоичных последовательностей NIST показывает, что алгоритм СТРУМОК уступает SNOW 2.0.[4]
Генератор ключевых потоков СТРУМОК позволяет формировать псевдослучайные последовательности со скоростью более 10 Гбит/с(Intel Core i9-7980XE 2.60 GHz and OS Windows® 10 Pro).[5]
↑Olexandr Kuznetsov, Mariya Lutsenko, Dmytro Ivanenko.Strumok Stream Cipher: Spesification and Basic Properties // Department Information and communication systems
security, V. N. Karazin Kharkiv National University, Kharkiv, Ukraine.