RU2726266C1 - Способ работы регистра сдвига с линейной обратной связью - Google Patents

Способ работы регистра сдвига с линейной обратной связью Download PDF

Info

Publication number
RU2726266C1
RU2726266C1 RU2020107680A RU2020107680A RU2726266C1 RU 2726266 C1 RU2726266 C1 RU 2726266C1 RU 2020107680 A RU2020107680 A RU 2020107680A RU 2020107680 A RU2020107680 A RU 2020107680A RU 2726266 C1 RU2726266 C1 RU 2726266C1
Authority
RU
Russia
Prior art keywords
rslos
elements
field
calculate
vector
Prior art date
Application number
RU2020107680A
Other languages
English (en)
Inventor
Андрей Сергеевич Рыбкин
Original Assignee
Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" filed Critical Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы"
Priority to RU2020107680A priority Critical patent/RU2726266C1/ru
Application granted granted Critical
Publication of RU2726266C1 publication Critical patent/RU2726266C1/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators

Abstract

Изобретение относится к области вычислительной техники. Технический результат заключается в повышении производительности работы РСЛОС типа Фибоначчи при использовании вычислительной системы, позволяющей параллельно вычислять k одинаковых линейных функций от разных аргументов. Технический результат достигается за счет способа работы регистра сдвига с линейной обратной связью (РСЛОС) в вычислительной системе, включающего задание конечного поля Р с операцией сложения ⊕, операцией умножения ⊗, нулевым элементом θ и единичным элементом е; выбор вычислительной системы, имеющей процессор с SIMD-архитектурой, задание натурального числа n; задание натурального числа k, k ≤ n; задания РСЛОС в конфигурации Фибоначчи, задания количества тактов работы РСЛОС - m, где m ≥ 1, m=kν+w, где ν, w - целые неотрицательные числа, 0 ≤ w ≤ k-1; осуществление m тактов работы РСЛОС.

Description

Область техники, к которой относится изобретение
Предлагаемое изобретение относится к области вычислительной техники, в к использованию регистров сдвига с линейной обратной связью на вычислительных платформах с SIMD-архитектурой.
Уровень техники
Регистры сдвига с линейной обратной связью (РСЛОС) используются в различных сферах информационных технологий, в том числе в криптографии, сетевых технологиях и цифровой передаче данных. РСЛОС позволяют генерировать линейные рекуррентные последовательности и могут применяться, например, для выработки псевдослучайных последовательностей, вычисления линейных отображений или получения множества различных значений определенной длины.
РСЛОС определяется полем, которому принадлежат элементы входной и выходной последовательности регистра, а также линейной функцией над этим полем, которая задает обратную связь РСЛОС. Различают два типа РСЛОС: РСЛОС в конфигурации Галуа и РСЛОС в конфигурации Фибоначчи. Два этих типа являются эквивалентными, то есть для каждого РСЛОС в конфигурации Галуа может быть построен РСЛОС в конфигурации Фибоначчи (и наоборот), порождающий ту же самую линейную рекуррентную последовательность, возможно, с некоторым сдвигом. В дальнейшем будем рассматривать только РСЛОС в конфигурации Фибоначчи.
Рассмотрим принцип работы РСЛОС, определенного над конечным полем Р и имеющего линейную функцию обратной связи РСЛОС ƒ : Pn → Р вида
ƒ(xn-1, xn-2, …, х0) = (cn-1 ⊗ хп-1) ⊕ (cn-2 ⊗ xn-2) ⊕…⊕ (c0 ⊗ x0),
где n - натуральное число,
ci; ∈ Р, i=0, 1, …, n-1, - константные элементы поля Р,
xi ∈ P, i=0, 1, …, n-1, - аргументы функции,
«⊗» и «⊕» - операции умножения и сложения в поле Р:
• в качестве входной последовательности РСЛОС берут последовательность из n элементов:
a 0, a 1, …, a n-1, a i ∈ P, i=0, 1, …, n-1;
• формируют начальное состояние РСЛОС, представляющее собой вектор длины n:
(qn-1, qn-2, …, q0),
где qi ∈ Р, i=0, 1, …, n-1,
в виде:
qi=a i, i=0, 1, …, n-1;
• задают количество тактов работы РСЛОС - m, где m - натуральное число;
• выполняют m тактов работы РСЛОС, причем на s-м такте, 1 ≤ s ≤ m:
Figure 00000001
вычисляют новое состояние РСЛОС, представляющее собой вектор длины n:
(qn+s-1, qn+s-2, …, qs),
где qn+s-1=ƒ(qn+s-2, qn+s-3, …, qs-1)∈P,
Figure 00000002
вычисляют элемент выходной последовательности РСЛОС
bs-1 = qs-1 ∈ P:
• в качестве выходной последовательности РСЛОС берут последовательность из m элементов:
b0, b1, …, bm-1.
Повсеместное использование РСЛОС делает актуальной задачу получения его высокопроизводительных реализаций. Одним из базовых способов повышения производительности программных и аппаратных реализаций является использование параллельных вычислений.
Обозначим класс линейных функций, определенных над полем Р и имеющих n переменных, через Ln:
Figure 00000003
Рассмотрим вычислительную систему, выполненную с возможностью для любой линейной функции h ∈ Ln и любых элементов xr,i ∈ P, r=0, 1, …, k-1, i=0, 1, n-1, осуществлять параллельное вычисление k значений h(x0, n-1, x0, n-2, …, x0, 0), h(x1, n-1, x1, n-2, …, x1, 0), …, h(xk-1, n-1, xk-1, n-2, …, xk-1, 0), где k - натуральное число. Обозначим эту вычислительную систему через Sk.
Согласно своему свойству, система Sk позволяет вычислять одновременно k одинаковых линейных функций от разных аргументов. Данное требование является более слабым по сравнению с требованием о возможности параллельного вычисления k произвольных линейных функций от разных аргументов. Это позволяет использовать в качестве вычислительной системы Sk не только системы с возможностью параллельного вычисления k произвольных линейных функций, но и системы, не имеющие данной возможности, но допускающие параллельное вычисление k одинаковых линейных функций.
Примером вычислительной системы Sk может являться вычислительная система с поддержкой SIMD-технологий (Single Instruction, Multiple Data - одна инструкция, несколько блоков данных). В основе SIMD-технологий лежит возможность одновременного выполнения одного и того же преобразования сразу для нескольких фрагментов данных. Таким образом, вычислительная система с поддержкой SIMD-технологий, позволяющая выполнять каждую операцию, применяющуюся при вычислении функции из Ln, одновременно для k фрагментов данных, обеспечивает возможность параллельного вычисления k одинаковых функций из Ln. При этом, в общем случае, такая система не обязана обеспечивать возможность параллельного вычисления k произвольных функций из Ln, поскольку преобразования, используемые при вычислении различных функций, могут отличаться друг от друга, что не позволит или крайне затруднит использование SIMD-технологий для одновременного вычисления этих функций.
Известен способ работы РСЛОС в конфигурации Фибоначчи (патент РФ №2598781, приоритет от 31.07.2015 г.), предусматривающий использование вспомогательных таблиц. Данный способ позволяет на каждом шаге вычислять сразу несколько новых элементов состояния РСЛОС.
Недостатком данного способа является необходимость хранения и использования таблиц, размер которых пропорционален количеству одновременно вычисляемых элементов состояния.
Известен способ работы РСЛОС в конфигурации Фибоначчи в соответствии с традиционным определением РСЛОС, приведенным выше (Алферов А.П., Зубов А.Ю., Кузьмин А.С., Черемушкин А.В. Основы криптографии. 2-е изд., М., Гелиос АРВ, 2002). Способ позволяет на каждом шаге вычислять один новый элемент состояния РСЛОС посредством вычисления одной линейной функции.
Известный способ принят за прототип.
Недостатком данного способа является неэффективное использование возможностей вычислительной системы Sk, выражающееся в том, что способ подразумевает вычисление только одной линейной функции в произвольный момент времени. В результате, производительность способа на вычислительной системе Sk не зависит от значения k, соответствующего количеству линейных функций, которые могут быть вычислены параллельно на этой системе, и равна производительности способа на вычислительной системе S1, то есть системе без возможности осуществления параллельных вычислений.
Раскрытие изобретения
Техническим результатом является повышение производительности работы РСЛОС типа Фибоначчи при использовании вычислительной системы, позволяющей параллельно вычислять k одинаковых линейных функций от разных аргументов. При этом предлагаемый способ не требует хранения и использования вспомогательных таблиц.
Предлагаемый способ работы регистра сдвига с линейной обратной связью (РСЛОС) в вычислительной системе, заключается в том, что
• задают конечное поле Р с операцией сложения ⊕, операцией умножения ⊗, нулевым элементом θ и единичным элементом е;
• выбирают вычислительную систему, имеющую процессор с SIMD-архитектурой и выполненную с возможностью
Figure 00000004
преобразования элементов поля Р в интерпретируемый вычислительной системой вид и обратного преобразования элементов вида, интерпретируемого вычислительной системой, в элементы поля Р;
Figure 00000005
выполнения операций с преобразованными элементами поля Р, эквивалентных операциям сложения и умножения в поле Р;
• задают натуральное число n;
• задают натуральное число k, k≤n;
• задают РСЛОС в конфигурации Фибоначчи, в котором
Figure 00000006
входные и выходные элементы РСЛОС являются элементами поля Р;
Figure 00000007
количество элементов вектора состояний РСЛОС равно n;
Figure 00000008
линейная функция обратной связи РСЛОС ƒ : Pn → Р имеет вид
ƒ(xn-1, xn-2, …, x0) = (cn-1 ⊗ xn-1) ⊕ (cn-2 ⊗ xn-2) ⊕…⊕ (c0 ⊗ x0),
где ci ∈ Р, i=0, 1, …, n-1, - константные элементы поля Р,
xi ∈ Р, i=0, 1, …, n-1;
причем
Figure 00000009
при подаче на вход РСЛОС последовательности из n элементов
а 0, а 1, …, a n-1, где a i ∈ Р, i=0, 1, …, n-1,
начальное состояние РСЛОС, представляющее собой вектор длины n:
(qn-1, qn-2, …, q0), где qi ∈ P, i=0, 1, …, n-1,
формируется в виде:
qi=a i, i=0, 1, …, n-1;
Figure 00000010
в результате выполнения s-го такта работы РСЛОС, s≥1:
Figure 00000011
новым состоянием РСЛОС становится вектор длины n:
(qn+s-1, qn+s-2, …, qs),
где qn+s-1=ƒ(qn+s-2, qn+s-3, …, qs-1)∈Р,
Figure 00000012
выходным элементом РСЛОС становится элемент
bs-1=qs-1 ∈ P;
• задают входную последовательность РСЛОС, состоящую из n элементов поля Р:
а'0, а'1, a'n-1, где а'i ∈ Р, i=0, 1, …, n-1;
• задают количество тактов работы РСЛОС - m, где m≥1, m=kν+w, где ν, w - целые неотрицательные числа, 0 ≤ w ≤ k-1;
• осуществляют m тактов работы РСЛОС, выполняя следующие действия
Figure 00000013
формируют начальное состояние РСЛОС, представляющее собой вектор длины n:
(q'n-1, q'n-2, …, q's), где q'i ∈ P, i=0, 1, …, n-1,
в виде:
q'i=а'i, i=0, 1, …, n-1;
Figure 00000014
вычисляют j=0;
Figure 00000015
если ν=0, то переходят к этапу (В);
Figure 00000016
(А) вычисляют с использованием SIMD-инструкций процессора параллельно k элементов un+jk, un+jk+1, …, un+jk+k-1 ∈ P:
un+jk+t=ƒ(θ, θ, …, θ, q'n+jk-1, q'n+jk-2, …, q'jk+t), t=0, 1, …, k-1;
Figure 00000017
вычисляют с использованием SIMD-инструкций процессора параллельно k элементов q'n+jk, q'n+jk+1, …, q'n+jk+k-1 ∈ P:
q'n+jk+t=g(θ, θ, …, θ, u'n+jk, un+jk+1, …, u'n+jk+t), t=0, 1, …, k-1;
где функция g : Pk → Р имеет вид
g(xk-1, xk-2, …, x0) = (dk-1 ⊗ xk-1) ⊕ (dk-2 ⊗ xk-2) ⊕…⊕ (d0 ⊗ x0),
где di ∈ Р, i=0, 1, …, k-1, - константные элементы поля Р, для которых справедливо соотношение
di=Fn-1+i (е, θ, θ, …, θ), i=0, 1, …, k-1,
где функции Fi : Pn → Р, i=0, 1, …, имеют вид
Fi(xn-1, xn-2, …, x0)=xi, i=0, 1, …, n-1;
Fi((xn-1, xn-2, …, x0)=Fi-1(ƒ(xn-1, xn-2, …, x0), xn-1, xn-2, …, x1), i=n, n+1, …;
Figure 00000018
формируют новое состояние РСЛОС, представляющее собой вектор длины n:
(q'n+jk+k-1,q'n+jk+k-2, …, q'n+jk, q'n+jk+-1, …, q' jk+k);
Figure 00000019
вычисляют k элементов выходной последовательности РСЛОС
b'jk, b'jk+1, …, b'jk+k-1 ∈ P:
b'i=q'i, i=jk, jk+1, …, jk+k-1;
Figure 00000020
вычисляют j=j+1;
Figure 00000021
если j<ν, то переходят к этапу (A);
Figure 00000022
если w=0, то переходят к этапу (С);
Figure 00000023
(В) вычисляют с использованием SIMD-инструкций процессора параллельно w элементов un+jk, un+jk+1, …, un+jk+w-1 ∈ Р:
un+jk+t=ƒ(θ, θ, …, θ, q'n+jk-1, q'n+jk-2, …, q'jk+t), t=0, 1, …, w-1;
Figure 00000024
вычисляют с использованием SIMD-инструкций процессора параллельно w элементов q'n+jk, q'n+jk+1, …, q'n+jk+w-1 ∈ Р:
q'n+jk+t=g(θ, θ, …, θ, un+jk, un+jk+1, …, un+jk+t), t=0, 1, …, w-1;
Figure 00000025
формируют новое состояние РСЛОС, представляющее собой вектор длины n:
(q'n+jk+w-1, q'n+jk+w-2, …, q'n+jk, q'n+jk-1, …, q'jk+w);
Figure 00000026
вычисляют w элементов выходной последовательности РСЛОС
b'jk, b'jk+1, …, b'jk+w-1 ∈ P:
b'i=q'i, i=jk, jk+1, …, jk+w-1;
• (С) получают выходную последовательность РСЛОС за m тактов работы:
b'0, b'1, …, b'm-1 ∈ Р.
Результат достигается за счет изменения хода вычисления элементов состояния РСЛОС с целью организации возможности их параллельного вычисления.
Рассмотрим вопросы корректности предлагаемого способа. Заметим, что процедура формирования выходных элементов РСЛОС из элементов состояния РСЛОС в предлагаемом способе идентична соответствующей процедуре в способе, выбранном в качестве прототипа. Таким образом, для обоснования корректности предлагаемого способа достаточно показать, что для одной и той же входной последовательности РСЛОС справедливы равенства:
q'i=qi, i=0, 1, …, n+m-1,
где q'i - элементы состояния РСЛОС при использовании предлагаемого способа,
qi - элементы состояния РСЛОС при использовании способа, выбранного в качестве прототипа.
Используемые в предлагаемом способе функции Fi, i=0, 1, …, определяются через композицию функций из Ln и, следовательно, сами принадлежат Ln. Это значит, что для любых xj, yj, c ∈ Р, j=0, 1, …, n-1, справедливы следующие тождества:
Figure 00000027
Figure 00000028
Кроме того, для любых qn+s-1, qn+s-2, …, qs ∈ P - элементов состояния РСЛОС при использовании способа, выбранного в качестве прототипа, и любых неотрицательных целочисленных значений s, i, таких что i+s ≤ n+m-1, выполняется:
Figure 00000029
Заметим, что процедура формирования начального состояния РСЛОС из входных элементов РСЛОС в предлагаемом способе идентична соответствующей процедуре в способе, выбранном в качестве прототипа. Отсюда следует, что для одной и той же входной последовательности РСЛОС справедливы равенства:
q'i=qi, i=0, 1, …, n-1.
Примем данный факт за базу индукции. Осуществим шаг индукции, показав, что если для некоторого j, 0 ≤ j< ν, выполняется
q'i=qi, i=0, 1, …, n+jk-1,
то справедливы равенства:
q'i=qi, i=n+jk, n+jk+1, n+jk+k-1.
Для этого заметим, что любого t=0, 1, …, k-1 выполняется:
Figure 00000030
Первое слагаемое данной суммы можно представить в виде
Figure 00000031
Прибавляя к полученному значению второе слагаемое, имеем
Figure 00000032
Figure 00000033
Прибавляя к полученному значению третье слагаемое, имеем
Figure 00000034
Действуя аналогичным образом, на этапе прибавления последнего слагаемого получаем:
Figure 00000035
Таким образом, для любого t=0, 1, …, k-1:
q'n+jk+t=qn+jk+t,
то есть
q'i=qi, i=n+jk, n+jk+1, …, n+jk+k-1.
Последовательно осуществляя приведенный шаг индукции для всех j, 0 ≤ j ≤ ν, получаем, что
q'i=qi, i=0, 1, …, n+νk-1.
Обоснование равенства оставшихся w элементов состояния РСЛОС
q'i=qi, i=n+νk, n+ν+1, …, n+νk+w-1.
выполняется аналогично очередному шагу индукции с тем отличием, что вместо k элементов состояния рассматриваются w элементов состояния.
В результате имеем, что все элементы состояния, получающиеся в процессе работы РСЛОС при использовании предлагаемого способа, равны соответствующим элементам состояния, получающимся в процессе работы РСЛОС при использовании способа, выбранного в качестве прототипа. С учетом идентичности алгоритмов вычисления выходных значений из элементов состояния в рассматриваемых способах, это доказывает корректность предлагаемого способа работы РСЛОС.
Рассмотрим вопросы эффективности предлагаемого способа.
Выберем вычислительную систему, выполненную с возможностью для любой линейной функции h∈Ln и любых элементов xr,i ∈ P, r=0, 1, k-1,
i=0, 1, n-1, осуществлять параллельное вычисление k значений
h(x0, n-1, x0, n-2, …, x0, 0), h(x1, n-1, x1, n-2, …, x1, 0), …h(xk-1,n-1, xk-1, n-2, …, xk-1, 0),
где k - натуральное число.
Возможность параллельного вычисления k функций h подразумевает, что для любого р, 1 ≤ р ≤ k, время параллельного вычисления р функций h равно времени вычисления одной функции h. Обозначим это время через Т. Необходимо отметить, что описанная вычислительная система, в том числе, позволяет осуществлять параллельное вычисление k функций h* ∈ Ls, 1 ≤ s ≤ n-1, ввиду возможности представления функции h* как функции из Ln путем добавления n-s несущественных переменных.
Оценим время выполнения m последовательных тактов работы РСЛОС, m ≥ 1, на данной вычислительной системе в случае использования способа, выбранного в качестве прототипа, и в случае использования предлагаемого способа. При использовании способа, выбранного в качестве прототипа, данное время составит
Told=mT,
поскольку в этом случае выполнение каждого такта работы РСЛОС потребует одного вычисления функции ƒ.
При использовании предлагаемого способа рассмотрим три возможных варианта значений параметров:
• k=1;
• k ≥ 2, w=1;
• k ≥ 2, w≠1,
где m=kν+w.
При k=1 время выполнения m последовательных тактов работы РСЛОС составит
Figure 00000036
поскольку в этом случае для вычисления каждого нового элемента состояния РСЛОС согласно предлагаемому способу достаточно одного вычисления функции ƒ:
q'n+jk = g(θ, θ, …, θ, un+jk) = d0 ⊗ un+jk = un+jk = ƒ(q'n+jk-1, q'n+jk-2, …, q'jk),
так как d0=Fn-1(е, θ, θ, …, θ)=е.
При k ≥ 2, w=1 время выполнения m последовательных тактов работы РСЛОС составит:
Figure 00000037
поскольку в этом случае для вычисления последнего элемента состояния РСЛОС согласно предлагаемому способу достаточно одного вычисления функции ƒ:
Figure 00000038
а для вычисления остальных элементов состояния потребуется вычисление функций ƒ и g на каждые k элементов. В результате, при k ≥ 2, w=1:
Figure 00000039
При k ≥ 2, w ≠ 1 время выполнения m последовательных тактов работы РСЛОС составит:
Figure 00000040
поскольку для вычисления каждых k элементов состояния (w элементов состояния на последнем шаге) потребуется вычисление функций ƒ и g. Причем, если w=0, то
Figure 00000041
В случае же w ≥ 2, имеем
Figure 00000042
Таким образом, производительность предлагаемого способа больше или равна производительности способа, выбранного в качестве прототипа во всех трех рассмотренных случаях. Более того, при k ≥ 2 и достаточно больших значениях m предлагаемый способ позволяет увеличить производительность работы РСЛОС приблизительно в
Figure 00000043
раз по сравнению со способом, выбранным в качестве прототипа.
На практике весьма вероятна ситуация, при которой вычисление линейной функции g, зависящей от k аргументов, k ≤ n, может оказаться быстрее вычисления линейной функции ƒ, зависящей от n аргументов. В этом случае разница в производительности способов лишь увеличится.
Обозначим время вычисления функции от k переменных через Tk, а время вычисления функции от n переменных через Tn, Tk ≤ Tn.
Рассмотрим в данных обозначениях третий вариант значений параметров: k ≥ 2, w ≠ 1, как наиболее общий из всех. В этом случае время выполнения m последовательных тактов работы РСЛОС, m ≥ 1,
• при использовании способа, выбранного в качестве прототипа, составит
Figure 00000044
• при использовании предлагаемого способа составит:
Figure 00000045
Таким образом, при k ≥ 2 и достаточно больших значениях m производительность предлагаемого способа превысит производительность способа, выбранного в качестве прототипа, приблизительно в
Figure 00000046
раз.
Сделаем еще одно практическое предположение о том, что Tk/Tn=k/n. Тогда отношение производительностей способов примет следующий вид:
Figure 00000047
Рассмотрим несколько вариантов значений k и соответствующих значений отношения производительности способов:
• при k ≤ n:
Figure 00000048
• при k=n/t, где t - натуральное число:
Figure 00000049
• при k=n:
Figure 00000050
В рамках сделанных предположений, производительность предлагаемого способа превысит производительность способа, выбранного в качестве прототипа, в приблизительно от k/2 до k раз. При этом эффективность повышения производительности будет определяться тем, насколько близко значение k к значению n:
Figure 00000051
Осуществление изобретения
Рассмотрим пример реализации предлагаемого способа.
Предлагаемый способ может быть реализован в виде прикладной программы, предназначенной для выполнения на вычислительной системе. В качестве вычислительной системы может использоваться компьютер с процессором, поддерживающим SIMD-вычисления, например, процессор Intel Core i7-2600 с поддержкой SSE-инструкций (Streaming SIMD Extensions) [статья по адресу: https://ark.intel.com/content/www/ru/ru/ark/products/52213/intel-core-i7-2600-processor-8m-cache-up-to-3-80-ghz.html].
Прикладная программа, реализующая работу РСЛОС в конфигурации Фибоначчи согласно предлагаемому способу, может быть составлена специалистом по программированию (программистом).
Рассмотрим поле Р с операциями умножения ⊗ и сложения ⊕, состоящее из 16 элементов и заданное над неприводимым многочленом Х4 ⊕ Х ⊕ 1, X ∈ {0, 1}: Р = GF(24) = GF(2)[X] / (X4 ⊕ X ⊕ 1). Для удобства записи будем обозначать элементы поля Р целыми числами, предполагая, что элементу поля (z3 ⊗ X3) ⊕ (z2 ⊗ X2) ⊕ (z1 ⊗ X) ⊕ z0 ∈ Р, zi ∈ {0, 1}, i=0, 1, 2, 3, соответствует целое число z3 ⋅23+z2 ⋅22+z1 ⋅2+z0 ∈ Z.
Для возможности представления элементов поля Р в виде, интерпретируемом вычислительной системой, можно использовать взаимно однозначное преобразование элементов поля в двоичные строки, которое сопоставляет элементу поля (z3 ⊗ X3) ⊕ (z2 ⊗ X2) ⊕ (z1 ⊗ X) ⊕ z0 ∈ Р, zi ∈{0, 1}, i=0, 1, 2, 3, двоичную строку
Figure 00000052
, где Vs - множество всех двоичных строк длины s,
Figure 00000053
- операция конкатенации двоичных строк.
Для реализации на вычислительной системе операции сложения в поле Р можно использовать SSE-инструкцию «pxor», предназначенную для выполнения побитовой операции «исключающее ИЛИ» двух двоичных строк длиной 128. Для реализации на вычислительной системе операции умножения в поле Р можно использовать, например, классический алгоритм умножения в столбик без переноса значимого бита с последующим приведением результата умножения по модулю поля X4 ⊕ X ⊕ 1, или алгоритм, основанный на табличном задании результатов умножения и осуществлении поиска по этим таблицам. В первом случае можно использовать SSE-инструкции «pxor», «pand», предназначенные для выполнения побитовых операций «исключающее ИЛИ», «И» двух двоичных строк длиной 128, и SSE-инструкции «psrlw», «psllw», предназначенные для выполнения битовых сдвигов двоичных строк длиной 128 вправо и влево. Во втором случае можно использовать SSE-инструкцию «pshufb», предназначенную для осуществления поиска по заранее вычисленным таблицам.
Зададим значения параметров n=8 и k=4.
Вычисление значения h(x7, x6, …, x0), где h ∈ L8 - произвольная линейная функция вида:
h(x7, x6, …, x0) = (h7 ⊗ x7) ⊕ (h6 ⊗ x6) ⊕ … ⊕ (h0 ⊗ x0),
hi, xi ∈ Р, i=0, 1, …, 7,
на вычислительной системе можно осуществлять с использованием упомянутых выше реализаций операций сложения и умножения в поле Р посредством SSE-инструкций. Параллельное вычисление четырех значений h(x0, 7, x0, 6, …, x0, 0), h(x1, 7, x1, 6, …, x1, 0), …, h(х3, 7, х3, 6, …, х3, 0), где xr, i ∈ P, r=0, 1, 2, 3, i=0, 1, …, 7, на вычислительной системе можно осуществлять аналогично вычислению одного значения h(x7, x6, …, x0) с предварительной группировкой элементов x0, i, x1, i, x2, i, x3, i на одном 128-битном SSE-регистре с целью одновременного выполнения операций, требуемых при вычислении функции h, сразу для четырех этих элементов.
Рассмотрим РСЛОС в конфигурации Фибоначчи, входные и выходные элементы которого принадлежат конечному полю Р, а линейная функция обратной связи ƒ:Р8 →Р задается в виде
Figure 00000054
Заданные РСЛОС и значение k однозначно определяют функцию g:Р4 →Р:
Figure 00000055
где элементы di ∈ P, i=0, 1, …, 3, вычисляются следующим образом
d0 = F7(1, 0, 0, …, 0) = 1,
d1 = F8(1, 0, 0, …, 0) = F7(ƒ(1, 0, 0, …, 0), 1, 0, 0, 0) = ƒ(1, 0, 0, …, 0) = 8 ⊗ 1 = 8,
d2 = F9(1, 0, 0, …, 0) = F8(ƒ(1, 0, 0, …, 0), 1, 0, 0, …, 0) = F8(8, 1, 0, 0, …, 0) = F7(ƒ(8, 1, 0, 0, …, 0), 8, 1, 0, 0, …, 0) = ƒ(8, 1, 0, 0, …, 0) = (8 ⊗ 8) ⊕ (1 ⊗ 1) = 12 ⊕ 1 = 13,
d3 = F10(1, 0, 0, …, 0) = F9(ƒ(1, 0, 0, …, 0), 1, 0, 0, …, 0) = F9(8, 1, 0, 0, …, 0) = F8(ƒ(8, 1, 0, 0, …, 0), 8, 1, 0, 0, …, 0) = F8 (13, 8, 1, 0, 0, …, 0) = = F7 (ƒ(13, 8, 1, 0, 0…, 0), 13, 8, 1, 0, 0, …, 0) = ƒ(13, 8, 1, 0, 0, …, 0) = (8 ⊗ 13) ⊕ (1 ⊗ 8) ⊕ (10 ⊗ 1) = 2 ⊕ 8 ⊕ 10 = 0.
Зададим входную последовательность РСЛОС, состоящую из 8 элементов а'0, а'1, …, а'7, где а'i ∈ Р, i=0, 1, …, 7:
а'0=0, а'1=2, a'2=4, a'3=6,
а'4=9, а'5=11, а'6=13, а'7=15.
Зададим количество тактов работы РСЛОС m=11. Тогда m=kν+w=4⋅2+3, то есть ν=2, w=3.
Осуществим 11 тактов работы РСЛОС, для чего выполним следующие действия:
• сформируем начальное состояние РСЛОС, представляющее собой вектор длины 8:
(q'7, q'6, …, q'0), где q'i ∈ Р, i=0, 1, …, 7,
в виде
(q'7, q'6, …, q'0) = (а'7, а'6, …, а'0) = (15, 13, 11, 9, 6, 4, 2, 0);
• вычислим j=0; поскольку ν=2 ≠ 0, то
Figure 00000056
вычислим с помощью SIMD-инструкций параллельно 4 элемента
u8, u9, u11, ∈ P:
u8 = ƒ(q'7, q'6, …, q'0) = ƒ(15, 13, 11, 9, 6, 4, 2, 0) = 0,
u9 = ƒ(0, q'7, q'6, …, q'1) = ƒ(0, 15, 13, 11, 9, 6, 4, 2) = 2,
u10 = ƒ(0, 0, q'7, q'6, …, q'2) = ƒ(0, 0, 15, 13, 11, 9, 6, 4) = 3,
u11 = ƒ(0, 0, 0, q'7, q'6, …, q'0) = ƒ(0, 0, 0, 15, 13, 11, 9, 6) = 6;
Figure 00000056
вычислим с помощью SIMD-инструкций параллельно 4 элемента
q'8, q'9, q'10, q'11, ∈ P
q'8 = g(0, 0, 0, u8) = g(0, 0, 0, 0) = 0,
q'9 = g(0, 0, u8, u9) = g(0, 0, 0, 2) = 2,
q'10 = g(0, u8, u9, u10) = g(0, 0, 2, 3) = 0,
q'11 = g(u8, u9, u10, u11) = g(0, 2, 3, 6) = 4;
Figure 00000057
сформируем новое состояние РСЛОС, представляющее собой вектор длины 8:
(q'11, q'10, …, q'8, q'7, q'4) = (4, 0, 2, 0, 15, 13, 11, 9);
Figure 00000058
вычислим 4 выходных элемента РСЛОС b'0, b'1, b'2, b'3 ∈ P:
b'0=q'0=0, b'1=q'1=2, b'2=q'2=4, b'3=q'3=6;
• вычислим j=j+1=1; поскольку j=1<2=ν, то
Figure 00000059
вычислим с помощью SSE-инструкций параллельно 4 элемента
u12, u13, u14, u15 ∈ P:
u12 = ƒ(q'11, q'10, …, q'4) = ƒ(4, 0, 2, 0, 15, 13, 11, 9) = 7,
u13 = ƒ(0, q'11, q'10, …, q'5) = ƒ(0, 4, 0, 2, 0, 15, 13, 11) = 10,
u11 = ƒ(0, 0, q'11, q'10, …, q'6) = ƒ(0, 0, 4, 0, 2, 0, 15, 13) = 5,
u15 = ƒ(0 , 0, 0, q'11, q'10, …, q'7) = ƒ(0, 0, 0, 4, 0, 2, 0, 15) = 13;
Figure 00000060
вычислим с помощью SSE-инструкций параллельно 4 элемента
q'12, q'13, q'14, q'15, ∈ P
q'12 = g(0, 0, 0, u12) = g(0, 0, 0, 7) = 7,
q'13 = g(0, 0, u12, u13) = g(0, 0, 7, 10) = 7,
q'14 = g(0, u12, u13, u14) = g(0, 7, 10, 5) = 15,
q'15 = g(u12, u13, u14, u15) = g(7, 10, 5, 13) = 8;
Figure 00000056
сформируем новое состояние РСЛОС, представляющее собой вектор длины 8:
(q'15, q'14, …, q'12, q'11, …, q'8) = (8, 15, 7, 7, 4, 0, 2, 0);
Figure 00000061
вычислим 4 выходных элемента РСЛОС b'4, b'5, b'6, b'7 ∈ P:
b'4=q'4=9, b'5=q'5=11, b'6=q'6=13, b'7=q'7=15;
• вычислим j=j+1=2; поскольку j=2 ≥ 2=ν, то проверим равенство w=0; поскольку w=3 ≠ 0, то
Figure 00000062
вычислим с помощью SSE-инструкций параллельно 3 элемента
u16, u17, u18 ∈ P:
u16 = ƒ(q'15, q'14, …, q'8) = ƒ(8, 15, 7, 7, 4, 0, 2, 0) = 3,
u17 = ƒ(0, q'15, q'14, …, q'9) = ƒ(0, 8, 15, 7, 7, 4, 0, 2) = 6,
u18 = ƒ(0, 0, q'15, q'14, …, q'10) = ƒ(0, 0, 8, 15, 7, 7, 4, 0) = 10;
Figure 00000063
вычислим с помощью SSE-инструкций параллельно 3 элемента
q'126 q'17, q'18, ∈ P
q'16 = g(0, 0, 0, u16) = g(0, 0, 0, 3) = 3,
q'17 = g(0, 0, u16, u17) = g(0, 0, 3, 6) = 13,
q'18 = g(0, u16, u17, u18) = g(0, 3, 6, 10) = 11;
Figure 00000064
сформируем новое состояние РСЛОС, представляющее собой вектор длины 8:
(q'18, q'17, q'16, q'15, …, q'11)=(11, 13, 3, 8, 15, 7, 7, 4);
Figure 00000065
вычислим 3 выходных элемента РСЛОС b'8, b'9, b'10 ∈ Р:
b'8=q'8=0, b'9=q'9=2, b'10=q'10=0.
В результате получим выходную последовательность РСЛОС за 11 тактов работы b'0, b'1, …, b'10 ∈Р : 0, 2, 4, 6, 9, 11, 13, 15, 0, 2, 0.
Практическое измерение производительности работы рассмотренного РСЛОС, выполненное при больших значениях m (m≈107) в одном потоке одного ядра процессора Intel Core i7-2600, показало, что
• в случае осуществления работы РСЛОС согласно способу, выбранному в качестве прототипа, производительность работы РСЛОС составляет порядка 85⋅106 тактов работы РСЛОС в секунду;
• в случае осуществления работы РСЛОС согласно предлагаемому способу, производительность работы РСЛОС составляет порядка 185⋅106 тактов работы РСЛОС в секунду.
Таким образом, производительностей способов отличается приблизительно в 2,18 раз, что соответствует приведенным теоретическим оценкам, согласно которым предлагаемый способ позволяет увеличить производительность работы РСЛОС в приблизительно от k/2 до k раз.
Рассмотренный РСЛОС и используемые значения параметров выбраны для наглядной демонстрации работы предлагаемого способа. Следует отметить, что предлагаемый способ может быть по аналогии осуществлен и при реализации других РСЛОС в конфигурации Фибоначчи, в том числе РСЛОС, используемых на практике, например, при выработке псевдослучайных последовательностей, вычислении линейных отображений или получении множества различных значений определенной длины.

Claims (67)

  1. Способ работы регистра сдвига с линейной обратной связью (РСЛОС) в вычислительной системе, заключающийся в том, что
  2. • задают конечное поле Р с операцией сложения ⊕, операцией умножения ⊗, нулевым элементом θ и единичным элементом е;
  3. • выбирают вычислительную систему, имеющую процессор с SIMD-архитектурой и выполненную с возможностью
  4. Figure 00000066
    преобразования элементов поля Р в интерпретируемый вычислительной системой вид и обратного преобразования элементов вида, интерпретируемого вычислительной системой, в элементы поля Р;
  5. Figure 00000066
    выполнения операций с преобразованными элементами поля Р, эквивалентных операциям сложения и умножения в поле Р;
  6. • задают натуральное число n;
  7. • задают натуральное число k, k ≤ n;
  8. • задают РСЛОС в конфигурации Фибоначчи, в котором
  9. Figure 00000067
    входные и выходные элементы РСЛОС являются элементами поля Р;
  10. Figure 00000068
    количество элементов вектора состояний РСЛОС равно n;
  11. Figure 00000069
    линейная функция обратной связи РСЛОС ƒ : Pn → Р имеет вид
  12. ƒ(xn-1, xn-2, …, х0) = (cn-1 ⊗ xn-1) ⊕ (cn-2 ⊗ xn-2) ⊕…⊕ (c0 ⊗ x0),
  13. где ci ∈ P, i=0, 1, …, n-1, - константные элементы поля Р,
  14. xi ∈ P, i=0, 1 …, n-1;
  15. причем
  16. Figure 00000066
    при подаче на вход РСЛОС последовательности из n элементов
  17. a 0, a 1, …, a n-1, где a i ∈ P, i=0, 1, …, n-1,
  18. начальное состояние РСЛОС, представляющее собой вектор длины n:
  19. (qn-1, qn-2, …, q0), где qi ∈ Р, i=0, 1, …, n-1,
  20. формируется в виде:
  21. qi=a i, i=0, 1, …, n-1;
  22. Figure 00000070
    в результате выполнения s-го такта работы РСЛОС, s≥1:
  23. Figure 00000071
    новым состоянием РСЛОС становится вектор длины n:
  24. (qn+s-1, qn+s-2, …, qs),
  25. где qn+s-1=ƒ(qn+s-2, qn+s-3, …, qs-1)∈P,
  26. Figure 00000072
    выходным элементом РСЛОС становится элемент
  27. bs-1=qs-1 ∈ P;
  28. • задают входную последовательность РСЛОС, состоящую из n элементов поля Р:
  29. а'0, а'1, …, a'n-1, где а' i ∈Р, i=0, 1, …, n-1;
  30. • задают количество тактов работы РСЛОС - m, где m ≥ 1, m=kν+w, где ν, w - целые неотрицательные числа, 0 ≤ w ≤ k-1;
  31. • осуществляют m тактов работы РСЛОС, выполняя следующие действия:
  32. Figure 00000073
    формируют начальное состояние РСЛОС, представляющее собой вектор длины n:
  33. (q'n-1, q'n-2, …, q'0), где q'i ∈ P, i=0, 1, …, n-1,
  34. в виде:
  35. q'i=а'i, i=0, 1, …, n-1;
  36. Figure 00000074
    вычисляют j=0;
  37. Figure 00000075
    если ν=0, то переходят к этапу (В);
  38. Figure 00000076
    (А) вычисляют с использованием SIMD-инструкций процессора параллельно k элементов un+jk, un+jk+1, …, un+jk+k-1 ∈ P:
  39. un+jk+t=ƒ(θ, θ, …, θ, q'n+jk-1, q'n+jk-2, …, q'jk+t), t=0, 1, …, k-1;
  40. Figure 00000077
    вычисляют с использованием SIMD-инструкций процессора параллельно k элементов q'n+jk, q'n+jk+1, …, q'n+jk+k-1 ∈ P:
  41. q'n+jk+t=g(θ, θ, …, θ, un+jk, un+jk+1, …, un+jk+t), t=0, 1, …, k-1,
  42. где функция g : Pk → Р имеет вид
  43. g(xk-1, xk-2, …, x0) = (dk-1 ⊗ xk-1) ⊕ (dk-2 ⊗ xk-2) ⊕…⊕ (d0 ⊗ x0),
  44. где di ∈ P, i=0, 1, …, k-1, - константные элементы поля Р, для которых справедливо соотношение
  45. di=Fn-1+i (е, θ, θ, …, θ), i=0, 1, …, k-1,
  46. где функции Fi : Pn → Р, i=0, 1, …, имеют вид
  47. Fi(xn-1, xn-2, …, x0)=xi, i=0, 1, …, n-1;
  48. Fi(xn-1, xn-2, …, x0)=Fi-1(ƒ(xn-1, xn-2, …, x0), xn-1, xn-2, …, x1), i=n, n+1, …;
  49. Figure 00000078
    формируют новое состояние РСЛОС, представляющее собой вектор длины n:
  50. (q'n+jk+k-1, q'n+jk+k-2, …, q'n+jk, q'n+jk-1, …, q'jk+k);
  51. Figure 00000079
    вычисляют k элементов выходной последовательности РСЛОС
  52. b'jk, b'jk+1, …, b'jk+k-1 ∈ P:
  53. b'i=q'i, i=jk, jk+1, …, jk+k-1;
  54. Figure 00000080
    вычисляют j=j+1;
  55. Figure 00000081
    если j<ν, то переходят к этапу (А);
  56. Figure 00000082
    если w=0, то переходят к этапу (С);
  57. Figure 00000083
    (В) вычисляют с использованием SIMD-инструкций процессора параллельно w элементов un+jk, un+jk+1, …, un+jk+w-1 ∈ Р:
  58. un+jk+t=ƒ(θ, θ, …, θ, q'n+jk-1, q'n+jk-2,…, q'jk+t), t=0, 1, …, w-1;
  59. Figure 00000084
    вычисляют с использованием SIMD-инструкций процессора параллельно w элементов q'n+jk, q'n+jk+1, …, q'n+jk+w-1 ∈ Р:
  60. q'n+jk+t=g(θ, θ, …, θ, un+jk, un+jk+1, …, un+jk+t), t=0, 1, …, w-1;
  61. Figure 00000085
    формируют новое состояние РСЛОС, представляющее собой вектор длины n:
  62. (q'n+jk+w-1, q'n+jk+w-2, …, q'n+jk, q'n+jk-1, …, q'jk+w);
  63. Figure 00000086
    вычисляют w элементов выходной последовательности РСЛОС
  64. b'jk, b'jk+1, …, b'jk+w-1 ∈ P:
  65. b'i=q'i, i=jk, jk+1, …, jk+w-1;
  66. • (С) получают выходную последовательность РСЛОС за m тактов работы:
  67. b'0, b'1, …, b'm-1 ∈ Р.
RU2020107680A 2020-02-20 2020-02-20 Способ работы регистра сдвига с линейной обратной связью RU2726266C1 (ru)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2020107680A RU2726266C1 (ru) 2020-02-20 2020-02-20 Способ работы регистра сдвига с линейной обратной связью

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2020107680A RU2726266C1 (ru) 2020-02-20 2020-02-20 Способ работы регистра сдвига с линейной обратной связью

Publications (1)

Publication Number Publication Date
RU2726266C1 true RU2726266C1 (ru) 2020-07-10

Family

ID=71509913

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2020107680A RU2726266C1 (ru) 2020-02-20 2020-02-20 Способ работы регистра сдвига с линейной обратной связью

Country Status (1)

Country Link
RU (1) RU2726266C1 (ru)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2219597C1 (ru) * 2002-07-16 2003-12-20 Военный университет связи Регистр сдвига
US20040150610A1 (en) * 2003-01-25 2004-08-05 Zebedee Patrick A. Shift register
US7499519B1 (en) * 2007-12-12 2009-03-03 Taiwan Semiconductor Manufacturing Co., Ltd. Bidirectional shift register
US9177666B2 (en) * 2012-04-13 2015-11-03 Boe Technology Group Co., Ltd. Shift register unit and driving method thereof, shift register and display apparatus
RU2598781C1 (ru) * 2015-07-31 2016-09-27 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ линейного преобразования (варианты)

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2219597C1 (ru) * 2002-07-16 2003-12-20 Военный университет связи Регистр сдвига
US20040150610A1 (en) * 2003-01-25 2004-08-05 Zebedee Patrick A. Shift register
US7499519B1 (en) * 2007-12-12 2009-03-03 Taiwan Semiconductor Manufacturing Co., Ltd. Bidirectional shift register
US9177666B2 (en) * 2012-04-13 2015-11-03 Boe Technology Group Co., Ltd. Shift register unit and driving method thereof, shift register and display apparatus
RU2598781C1 (ru) * 2015-07-31 2016-09-27 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ линейного преобразования (варианты)

Similar Documents

Publication Publication Date Title
JP4559505B2 (ja) ランダム系列の反復周期の拡張
JP5957120B1 (ja) 秘密分散方法、秘密分散システム、分散装置、およびプログラム
EP0066768A1 (en) Apparatus for generation of random numbers
US20090110197A1 (en) Cryptographic system configured for extending a repetition period of a random sequence
Pornin et al. More efficient algorithms for the NTRU key generation using the field norm
JPH0326859B2 (ru)
Li et al. A class of de Bruijn sequences
RU2598781C1 (ru) Способ линейного преобразования (варианты)
Bishoi et al. A note on the multiple-recursive matrix method for generating pseudorandom vectors
Arnault et al. Feedback with carry shift registers synthesis with the Euclidean algorithm
US6763366B2 (en) Method for calculating arithmetic inverse over finite fields for use in cryptography
WO2016181992A1 (ja) 復号装置、復号方法、およびプログラム
RU2726266C1 (ru) Способ работы регистра сдвига с линейной обратной связью
US20040054703A1 (en) Method and device for generating a pseudo-random sequence using a discrete logarithm
Bikov et al. Bijective S-boxes of different sizes obtained from quasi-cyclic codes
Kolokotronis et al. Minimum linear span approximation of binary sequences
Chugunkov et al. Computing in finite fields
Urbano-Molano et al. Design of an elliptic curve cryptoprocessor using optimal normal basis over gf (2 233)
Miroschnyk et al. Practical methods for de Bruijn sequences generation using non-linear feedback shift registers
RU2564243C1 (ru) Способ криптографического преобразования
Fúster-Sabater Computing classes of cryptographic sequence generators
Korabelshchikova Algorithms for Solving Problems of Information Theory, Leading to the Problem of the Backpack
Grujić et al. Optimizing Linear Correctors: A Tight Output Min-Entropy Bound and Selection Technique
JP2014021237A (ja) 縮約装置、縮約方法、およびプログラム
CN107846272B (zh) 一种Golden序列的快速生成装置及方法

Legal Events

Date Code Title Description
PD4A Correction of name of patent owner