YaChudo

СТРУМОК (шифр)

Переглядів: 0. Оновлено 10.11.2026.

Державний стандарт України
СТРУМОК (шифр)
СТРУМОК (шифр)
ПозначенняДСТУ 8845:2019
НазваІнформаційні технології. Криптографічний захист інформації. Алгоритм симетричного потокового перетворення
Інформаційні дані
Тип стандартуДержавний стандарт України
РозробникиТехнічний комітет стандартизації «Інформаційні технології» (ТК 20), Приватне акціонерне товариство «Інститут інформаційних технологій» (ПАТ «ІІТ»)
ВнесеноДержавне підприємство «Український науково-дослідний і навчальний центр проблем стандартизації, сертифікації та якості» (ДП «УкрНДНЦ»)
Введено в діюнаказ від 02 квітня 2019 р. № 85
Чинний від1 жовтня 2019 року
СтатусЧинний[1]
Пов'язані стандартиДСТУ 7564:2014, ДСТУ 7624:2014, ДСТУ 4145-2002, ДСТУ ГОСТ 28147:2009
Кількість сторінок54
База нормативних документів

«СТРУМОК» (англ. STRUMOK) — потоковий симетричний шифр описаний у національному стандарті України ДСТУ 8845:2019 «Інформаційні технології. Криптографічний захист інформації. Алгоритм симетричного потокового перетворення». Стандарт набрав чинності з 1 жовтня 2019 року наказом ДП «УкрНДНЦ» від 2 квітня 2019 року № 85[2].

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

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

Схема роботи

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

Загальна схема роботи

Генератор псевдовипадкових чисел СТРУМОК використовує 256-бітовий вектор ініціалізації I V {\displaystyle IV} та 256-бітний або 512-бітний секретний ключ K {\displaystyle K} та забезпечує стійкість з урахуванням можливого застосування квантового криптографічного аналізу. Криптоалгоритм орієнтований на 64-розрядні обчислювальні системи, отже розмір слова визначено рівним 64 бітам.

Основними структурними компонентами генератора є регістр зсуву з лінійним зворотним зв'язком і скінченний автомат, в якому виконується нелінійне перетворення. Вхідні дані ( ключ K {\displaystyle K} та вектор ініціалізації I V {\displaystyle IV} ) використовуються для ініціалізації змінного стану S i ( i >= 0 ) {\displaystyle S_{i}(i>=0)} , Що складається з вісімнадцяти 64-бітних блоків:

  1. 16 комірок регістру зсуву з лінійним зворотним зв'язком : s i = ( s 15 ( i ) , s 14 ( i ) , . . . , s 0 ( i ) ) {\displaystyle s_{i}=(s_{15}^{(i)},s_{14}^{(i)},...,s_{0}^{(i)})}  ;
  2. два регістри скінченного автомата r i = ( r 1 ( i ) , r 0 ( i ) ) {\displaystyle r_{i}=(r_{1}^{(i)},r_{0}^{(i)})} .

Вихід являє собою гаму, яка формується з 64-бітових слів Z i {\displaystyle Z_{i}} .

Алгоритм

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

  1. функція ініціалізації I n i t {\displaystyle Init} , яка приймає як вхідні дані ключ K {\displaystyle K} та вектор ініціалізації I V {\displaystyle IV} , і здійснює початкове значення змінної стану S 0 = ( s ( 0 ) , r ( 0 ) ) {\displaystyle S_{0}=(s^{(0)},r^{(0)})}  ;
  2. функція наступного стану N e x t {\displaystyle Next} , яка приймає на вхід змінну стан S i = ( s ( i ) , r ( i ) ) {\displaystyle S_{i}=(s^{(i)},r^{(i)})} і здійснює наступне значення змінної стану S i + 1 = ( s ( i + 1 ) , r ( i + 1 ) ) {\displaystyle S_{i+1}=(s^{(i+1)},r^{(i+1)})} ;
  3. функція вироблення гами S t r m {\displaystyle Strm} що приймає на вході змінну стану S i = ( s ( i ) , r ( i ) ) {\displaystyle S_{i}=(s^{(i)},r^{(i)})} і виробляє на виході гаму Z i {\displaystyle Z_{i}} (64 біти).

Функція ініціалізації

Вхід : 256 або 512-бітний ключ K {\displaystyle K} , 256-розрядний вектор ініціалізації I V {\displaystyle IV} .

Вихід : початкове значення змінної стану S 0 = ( s ( 0 ) , r ( 0 ) ) {\displaystyle S_{0}=(s^{(0)},r^{(0)})} .

  1. У 16 осередків регістру зсуву заноситься значення, сформовані на підставі ключа та вектора ініціалізації. Таким чином формується S − 33 = ( s ( − 33 ) , r ( − 33 ) ) {\displaystyle S_{-33}=(s^{(-33)},r^{(-33)})} .
  2. Виконуються 32 такта ініціалізації без генерації гами (виконання функції Next в режимі ініціалізації INIT): S − 1 = N e x t 32 ( S − 33 , I N I T ) {\displaystyle S_{-1}=Next^{32}(S_{-33},INIT)} .
  3. Розраховується початкове значення змінної стану: S 0 = N e x t ( S − 1 ) {\displaystyle S_{0}=Next(S_{-1})} .
  4. Виводиться значення S 0 = ( s ( 0 ) , r ( 0 ) ) {\displaystyle S_{0}=(s^{(0)},r^{(0)})} .

Функція наступного стану

Вхід: Змінна стану S i = ( s ( i ) , r ( i ) ) {\displaystyle S_{i}=(s^{(i)},r^{(i)})} та режим роботи (звичайний або режим ініціалізації).

Вихід: Змінна стану S i + 1 = ( s ( i + 1 ) , r ( i + 1 ) ) {\displaystyle S_{i+1}=(s^{(i+1)},r^{(i+1)})} .

  1. Оновлюються значення регістрів скінченного автомата r i + 1 {\displaystyle r_{i+1}} .
  2. Оновлюється значення 15 комірок регістру зсуву: s j ( i + 1 ) = s j + 1 ( i ) , j = 0 , 1 , . . . , 14. {\displaystyle s_{j}^{(i+1)}=s_{j+1}^{(i)},j=0,1,...,14.}
  3. Оновлюється значення 16 осередку: s 15 ( i + 1 ) = ( s 0 ( i ) ⨂ α ) ⨁ ( s 11 ( i ) ⨂ α − 1 ) ⨁ s 13 ( i ) {\displaystyle s_{15}^{(i+1)}=(s_{0}^{(i)}\bigotimes \alpha )\bigoplus (s_{11}^{(i)}\bigotimes \alpha ^{-1})\bigoplus s_{13}^{(i)}} при роботі у звичайному режимі та s 15 ( i + 1 ) = F S M ( s 15 ( i ) , r 1 ( i ) , r 2 ( i ) ) ⨁ ( s 0 ( i ) ⨂ α ) ⨁ ( s 11 ( i ) ⨂ α − 1 ) ⨁ s 13 ( i ) {\displaystyle s_{15}^{(i+1)}=FSM(s_{15}^{(i)},r_{1}^{(i)},r_{2}^{(i)})\bigoplus (s_{0}^{(i)}\bigotimes \alpha )\bigoplus (s_{11}^{(i)}\bigotimes \alpha ^{-1})\bigoplus s_{13}^{(i)}} за режиму ініціалізації.
  4. Виводиться значення S i + 1 = ( s ( i + 1 ) , r ( i + 1 ) ) {\displaystyle S_{i+1}=(s^{(i+1)},r^{(i+1)})} .

Функція вироблення гами

Вхід: Змінна стану S i = ( s ( i ) , r ( i ) ) {\displaystyle S_{i}=(s^{(i)},r^{(i)})} .

Вихід: гама Z i {\displaystyle Z_{i}} .

  1. Обчислюється значення Z i = F S M ( s 15 ( i ) , r 1 ( i ) , r 2 ( i ) ) ⨁ s 0 ( i ) {\displaystyle Z_{i}=FSM(s_{15}^{(i)},r_{1}^{(i)},r_{2}^{(i)})\bigoplus s_{0}^{(i)}} .
  2. Виводиться значення Z i {\displaystyle Z_{i}} .
Функція скінченного автомата

Функція скінченного автомата F S M {\displaystyle FSM} використовується у функціях S t r m {\displaystyle Strm} і N e x t {\displaystyle Next} .

Вхід : три 64-бітні рядки x 1 , x 2 , x 3 {\displaystyle x_{1},x_{2},x_{3}} .

Вихід : 64-бітний рядок x {\displaystyle x} .

  1. Обчислюється значення x = ( x 1 + 64 x 2 ) ⨁ x 3 {\displaystyle x=(x_{1}+_{64}x_{2})\bigoplus x_{3}} .
  2. Виводиться значення x {\displaystyle x} .
  • + 64 {\displaystyle +_{64}} позначає операцію додавання цілих чисел за модулем 264.

Схема роботи регістру зсуву

Зворотний зв'язок у регістрі зсуву з лінійним зворотним зв'язком можна описати операціями над елементами скінченних полів.

Зворотний зв'язок у регістрі зсуву будується над полем G F ( 2 64 ) {\displaystyle GF(2^{64})} поліномом:

f ( x ) = x 16 + x 13 + α − 1 x 11 + α , {\displaystyle f(x)=x^{16}+x^{13}+\alpha ^{-1}x^{11}+\alpha ,}

де α {\displaystyle \alpha } є коренем багаточлена над полем G F ( 2 8 ) {\displaystyle GF(2^{8})} :

g ( x ) = x 8 + β 170 x 7 + β 166 x 6 + β 2 x 5 + β 224 x 4 + β 70 x 3 + β 2 {\displaystyle g(x)=x^{8}+\beta ^{170}x^{7}+\beta ^{166}x^{6}+\beta ^{2}x^{5}+\beta ^{224}x^{4}+\beta ^{70}x^{3}+\beta ^{2}} ,

де β {\displaystyle \beta } є коренем багаточлена над полем G F ( 2 ) {\displaystyle GF(2)} :

p ( x ) = x 8 + x 4 + x 3 + x 2 + 1 {\displaystyle p(x)=x^{8}+x^{4}+x^{3}+x^{2}+1} .

Поле G F ( 2 8 ) {\displaystyle GF(2^{8})} будується над полем G F ( 2 ) {\displaystyle GF(2)} поліномом p ( x ) {\displaystyle p(x)} .

Період вихідної послідовності регістру зсуву є максимальним і рівним 2 1024 − 1 {\displaystyle 2^{1024}-1} .

Порівняння зі SNOW 2.0

Генератор ключового потоку СТРУМОК у своїй концептуальній схемі подібний до SNOW 2.0. Але SNOW 2.0 орієнтований на використання в 32-розрядних обчислювальних систем, тоді як СТРУМОК призначений для використання в більш потужних 64-розрядних обчислювальних системах. У зв'язку з цим в алгоритмі СТРУМОК підвищується швидкість формування псевдовипадкової послідовності[3]. В алгоритмі СТРУМОК збільшені, порівняно з SNOW2.0, довжини секретного ключа і вектора ініціалізації. Це дозволяє надійно застосовувати потоковий шифр навіть за умов, коли зловмиснику доступне застосування квантового криптоаналізу[4].

Тестування випадковості двійкових послідовностей NIST показує, що алгоритм СТРУМОК поступається SNOW 2.0[5].

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

Див. також

Примітки

  1. ↑ ДСТУ 8845:2019 в Каталозі НД України
  2. ↑ Про прийняття та скасування національних стандартів, прийняття змін до національних стандартів, скасування міждержавного стандарту. Архів оригіналу за 28 грудня 2019. Процитовано 28 грудня 2019.
  3. ↑ 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.
  4. ↑ О.О. КУЗНЕЦОВ, І.Д. ГОРБЕНКО, Ю.І. ГОРБЕНКО, А.М. ОЛЕКСІЙЧУК. МАТЕМАТИЧНА СТРУКТУРА ПОТОКОВОГО ШИФРУ СТРУМОК // Харківський національний університет імені В.Н. Каразіна. — 2018. — 29 жовтня.
  5. ↑ 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.
  6. ↑ Ivan Gorbenko, Yurii Gorbenko, Vladyslav Tymchenko, Olena Kachko. TESTING THE SPEED OF MODERN STREAM CIPHERS // Kharkiv national university of Radio Electronics. — 2018. — 29 жовтня. — ISSN 2519-2310.

Посилання

Джерело: стаття у Вікіпедії та історія редагувань (автори).