% Лекция 14 (05.12.22) \subsection{Усложнение ЛРП} В криптографических приложениях используют различные способы усложнения аналитического строения линейных реккурент. \paragraph{Фильтрующие генераторы.} Первый способ заключается в применении к элементам ЛРП некоторой функции $f$ (см. рисунок). \begin{figure}[H] \centering \includegraphics[width=0.7\textwidth]{lecture14/lrs} \end{figure} Подобные узлы усложнения ЛРП называются фильтрующими генераторами. Их результирующей последовательностью является нелинейно <<фильтрованное>> содержимое регистра сдвига. <<Фильтрующая>> функция $f$ должна выбираться так, чтобы выходная последовательность имела распределение близкое к равномерному и высокую линейную сложность. \paragraph{Комбинирующие генераторы.} Второе направление синтеза псевдослучайных последовательностей с высокой линейной сложностью связано с использованием в одной схеме нескольких регистров сдвига. Генератор псевдослучайных последовательностей, реализующий усложнение нескольких линейных рекуррент с помощью одной общей функции усложнения, получил название комбинирующего генератора (см. рисунок). \begin{figure}[H] \centering \includegraphics[width=0.7\textwidth]{lecture14/combine} \end{figure} \paragraph{Композиции линейных регистров сдвига} Так называется схема, в которой выход одного из регистров подаётся на вход другого регистра (см. рисунок). \begin{figure}[H] \centering \includegraphics[width=\textwidth]{lecture14/compose} \end{figure} Функционирование такой схемы описывается следующим образом. Пусть $\nu$ --- ЛРП, вырабатываемая первым регистром сдвига, закон рекурсии которого определяется характеристическим многочленом $F(X)$. Пусть задано начальное состояние второго регистра сдвига, закон рекурсии которого определяется характеристическим многочленом $G(x) = x^m - \sum_{j = 0}^{m - 1} g_j \cdot x^j$. Тогда выходная последовательность композиции регистров сдвига задаётся соотношением \begin{equation*} w(i + m) = \sum_{j = 0}^{m - 1} w(i + j) g_j + v(i),\, i \geq 0 \end{equation*} \paragraph{Схемы с элементами памяти} Один из наиболее широко известных классов датчиков псевдослучайных чисел, построенных с использованием памяти, составляют генераторы Макларена-Марсальи, которые были предложены Д. Марсальей и Д. Маклареном в 1965 году. Пусть имеется три последовательности и массив памяти. Элементы первой последовательности записываются в память по адресам, которые определяются элементами второй последовательности. Элементы выходной последовательности получаются при считывании значений, хранящихся в массиве памяти, в соответствии с элементами третьей последовательности. Таким образом, первая последовательность определяет, какие знаки заносятся в память, вторая управляется процессом записи этих элементов в память, а третья --- процессом считывания из памяти элементов выходной последовательности. На рисунке приведена схема работы генератора, когда процессами записи и считывания управляет одна и та же последовательность. \begin{figure}[H] \centering \includegraphics[width=0.5\textwidth]{lecture14/memory} \end{figure} Пусть $u$ и $v$ --- последовательности над полем $P$, а выходная последовательность $\gamma$ вырабатывается с использованием $q$ ячеек памяти $R_0, \dots, R_{q - 1}$. Если $R_j(i)$ --- заполнение $j$-й ячейки памяти перед началом $i$-го такта работы схемы, то преобразование информации в $i$-м такте описывается формулами \begin{align*} \gamma(i) &= R_{v(i)}(i), \\ R_j(i + 1) &= \begin{cases} R_j(i), &\text{если } j \neq v(i) \\ u(i), &\text{если } j = v(i) \end{cases} \end{align*} Таким образом, последовательность $v$ определяет адреса, по которым в память записываются элементы последовательности $u$. %% NOTE: Теорема 6 \begin{theorem} Пусть $\tau$ --- период последовательности $u$, $t$ --- период последовательности $v$, причём $\text{НОД}(\tau, t) = 1, \, t < \tau$. Тогда для значения периода $T$ выходной последовательности $\gamma$ выполняется равенство $T = \tau s$, где $s = \frac{t}{d},\, d \leq e^\frac{q}{e}$. \end{theorem} \subsection{Поточная шифрсистема A5} A5 --- шифрсистема гаммирования, применяемая для шифрования телефонных сеансов в системе GSM, а именно канала <<телефон --- базовая станция>>. Поточная шифрсистема A5/1 --- одна из разновидностей алгоритма A5. Генератор A5/1 состоит из трёх ЛРС над $GF(2)$ длины 19, 22 и 23 с характеристическими многочленами соответственно \begin{align*} f_1(x) &= x^{19} + x^5 + x^2 + x + 1, \\ f_2(x) &= x^{22} + x + 1, \\ f_3(x) &= x^{23} + x^{15} + x^2 + x + 1. \\ \end{align*} Сумма битов, снимаемых с трёх ЛРС образует гамму генератора. Нелинейность алгоритма (они придают системе принципиально новые свойства) достигается за счёт неравномерного движения всех ЛРС, контролируемого блоком управления движения (БУД). После вычисления знака гаммы происходит сдвиг некоторых (не менее чем двух) регистров. Сдвиг зависит от значения трёх битов: 10-го бита ЛРС-1, 11-го бита ЛРС-2 и 12-го бита ЛРС-3 --- и определяется по правилу: если все три бита одинаковы, то сдвигаются все регистры, в противном случае сдвигаются два регистра, чьи биты совпадают. Криптосистема генератора шифра A5/1 представлена на рисунке: \begin{figure}[H] \centering \includegraphics[width=0.7\textwidth]{lecture14/a5_1} \caption{Криптосистема A5/1} \end{figure} Открытый текст представляет собой набор 114-битовых блоков. Перед шифрованием каждого блока происходит перезагрузка состояний регистров, которая определяется однозначно передаваемым в линию несекретным номером блока и секретным 64-битовым сеансовым ключом шифра. Определение сеансового ключа шифра равносильно определению состояния регистров после перезагрузки, так как сеансовый ключ восстанавливается однозначно по состоянию регистров и по номеру блока из решения линейной системы уравнений от 64 переменных над полем $GF(2)$. После перезагрузки регистров осуществляется 100 тактов холостого прогона, то есть 100 первых знаков гаммы игнорируются. В последующие 114 тактов вырабатываемые генератором биты используются для гаммирования блока открытого текста. Поточная шифрсистема A5/2 отличается пониженной криптостойкостью за счёт добавления ещё одного регистра (17 бит) управляющего сдвигами остальных.