STRUMOK

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
СТРУМОК
Создатель Olexandr Kuznetsov, Mariya Lutsenko, Dmytro Ivanenko, ПАТ «Інститут інформаційних технологій»
Создан 2016
Стандарты ДСТУ 8845:2019
Размер ключа 256, 512 бит
Тип Потоковый шифр

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

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

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

Схема работы[править | править код]

Схема работы шифра СТРУМОК
Формирование ключевого потока в шифре СТРУМОК

Общая схема работы[править | править код]

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

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

  1. 16 ячеек регистра сдвига с линейным обратной связью :  ;
  2. два регистра конечного автомата .

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

Алгоритм[править | править код]

В алгоритме СТРУМОК можно выделить три основные функции:

  1. функция инициализации , которая принимает в качестве входных данных ключ и вектор инициализации , и производит начальное значение переменной состояния ;
  2. функция следующего состояния , которая принимает на вход переменную состояния и производит следующее значение переменной состояния ;
  3. функция ключевого потока , что принимает на входе переменную состояния и производит на выходе ключевой поток (64 бита).

Функция инициализации [править | править код]

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

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

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

Функция следующего состояния [править | править код]

Вход: Переменная состояния и режим работы(обычный или режим инициализации).

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

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

Функция ключевого потока [править | править код]

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

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

  1. Вычисляется значение .
  2. Выводится значение .
Функция конечного автомата [править | править код]

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

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

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

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

Схема работы регистра сдвига[править | править код]

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

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

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

,

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

.

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

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

Сравнение со 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]

Примечания[править | править код]

  1. ДСТУ 8845:2019 Информационные технологии. Криптографическая защита информации. Алгоритм симметричного поточного преобразования.
  2. 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.
  3. О.О. КУЗНЕЦОВ, І.Д. ГОРБЕНКО, Ю.І. ГОРБЕНКО, А.М. ОЛЕКСІЙЧУК. МАТЕМАТИЧНА СТРУКТУРА ПОТОКОВОГО ШИФРУ СТРУМОК (укр.) // Харківський національний університет імені В.Н. Каразіна. — 2018.
  4. Oleksii Nariezhnii, Egor Eremin, Vladislav Frolenko, Kyrylo Chernov, Tetiana Kuznetsova, Yevhen Demenko. STATISTICAL PROPERTIES OF MODERN STREAM CIPHERS // V. N. Karazin Kharkiv National University. — ISSN 2519-2310. Архивировано 14 июля 2020 года.
  5. Ivan Gorbenko, Yurii Gorbenko, Vladyslav Tymchenko, Olena Kachko. TESTING THE SPEED OF MODERN STREAM CIPHERS // Kharkiv national university of Radio Electronics. — 2018. — ISSN 2519-2310.