% Лекция 17 (10.02.23)

\paragraph{Cipher Feedback.}

Режим CFB (Cipher Feedback, гаммирование с обратной связью по шифротексту)
удобен в ситуациях, когда требуется шифровать символы поступающего потока, не
дожидаясь формирования целого блока данных.

Через CFB-m обозначается режим шифрования, в котором блоки открытого и
шифрованного текстов имеют длину $m$ битов ($m$ --- параметр), $1 \leq m \leq
2n$. Для сообщения, состоящего из байтов, удобно взять $m = 8$.

% Уточнение

[Автоматные модели симметричных криптосистем. \emph{Шифрующим автоматом}
называется система $A_\text{ш} = (X, S, Y, K, z, g, h, f)$, где конечные
множества
\begin{itemize}
  \item $X$ --- алфавит открытого текста;
  \item $S$ --- множество состояний (внутренний алфавит);
  \item $Y$ --- алфавит шифрованного текста;
  \item $K$ --- ключевое множество шифрующего автомата;
\end{itemize}
и заданы функции шифрующего автомата
\begin{itemize}
  \item $z : K \to S$, называется \emph{функцией инициализации};
  \item $g : S \times K \times X \to K$ --- функцией обновления ключа;
  \item $h : S \times K \times X \to S$ --- функцией переходов;
  \item $f : S \times K \times X \to Y$ --- функцией выходов.
\end{itemize}

Элементы множества $K$ называются \emph{ключами шифрующего автомата}.

Если функция $g(s, k, x)$ отлична от тождественного отображения множества $K$,
то есть значение ключа шифрующего автомата зависит от номера такта, то шифрующий
автомат называется \emph{мультиключевым}. В противном случае шифрующий автомат
называется \emph{моноключевым}.]

% Конец уточнения

Блочный шифр в режиме CFB-m моделируется моноключевым шифрующим автоматом
$A_\text{CFB}^m = (X, S, Y, K, z, h, f_m)$, где $X = Y = V_m, S = V_{2n}, z =
s_1$ --- не зависящая от ключа $k$ синхропосылка, а функции $f_m$ и $h$ имеют
вид
\begin{align*}
  f_m(s_t, k, x_t) &= y_t = v^m(E_k(s_t)) \oplus x_t; \\
  h(s_t, k, x_t) &= s_{t + 1} = (w^m(s_t), y_t), t = 1, 2, \dots
\end{align*}

На рисунке \ref{fig:cfb-scheme} показана схема зашифрования (в левой части)
и расшифрования (в правой части) в режиме CFB-m. В обеих процедурах базовый
режим используется только для шифрования (реализации подстановки $E^{-1}_k$ не
требуется).

\begin{figure}[ht]
  \centering
  \includegraphics[width=0.8\textwidth]{lecture17/cfb-scheme.pdf}
  \caption{Схема зашифрования-расшифрования в режиме CFB-m}
  \label{fig:cfb-scheme}
\end{figure}

Как и в режиме CBC, синхропосылка может передаваться в линию связи в открытом
виде. Однако необходимо исключить повторение синхропосылки в различных
сообщениях, шифруемых одинаковым ключом.

Искажение одного бита в блоке $x_t$ влечёт искажение одного бита в $y_t$ и в
среднем половины битов во всех блоках шифротекста, начиная с $y_{t + 1}$, но
при расшифровании получается открытый текст с той же единственной ошибкой.

Искажение $i$-го бита в блоке $y_t$ влечёт искажение $i$-го бита в блоке $x_t$.
Затем ошибка поступает в регистр состояний и искажает в среднем половину битов
в каждом из следующих $l$ блоков, где $\left[\frac{2n}{m}\right] \leq l \leq
\left] \frac{2n}{m} \right[$.

В дальнейшем блоки расшифровываются корректно.

Режим CFB самостоятельно восстанавливается после ошибок синхронизации.


\paragraph{Output Feedback.}

Блочный шифр в режиме OFB (Output Feedback, \emph{гаммирование} или
\emph{внутренняя обратная связь}) можно рассматривать как синхронный шифр
гаммирования, обрабатывающий $m$-битовые блоки открытого или шифрованного текста
(обозначение --- OFB-m).

Этот шифр моделируется моноключевым шифрующим автоматом $A_\text{OFB}^m = (X, S,
Y, K, z, h, f_m)$, где $X = Y = V_m, S = V_{2n}, z = s_1$ --- не зависящая от
ключа $k$ синхропосылка, а функции выходов $f_m$ и переходов $h$ имеют вид
\begin{align*}
  f_m(s_t, k, x_t) &= y_t = v^m(E_k(s_t)) \oplus x_t; \\
  h(s_t, k) &= s_{t + 1} = (w^m(s_t), v^m(E_k(s_t))), t = 1, 2, \dots
\end{align*}

На рисунке \ref{fig:ofb-scheme} показана схема зашифрования (в левой части) и
расшифрования (в правой части) в режиме OFB-m. В обеих процедурах базовый режим
используется только для зашифрования.

\begin{figure}[ht]
  \centering
  \includegraphics[width=0.8\textwidth]{lecture17/ofb-scheme.pdf}
  \caption{Схема зашифрования-расшифрования в режиме OFB-m}
  \label{fig:ofb-scheme}
\end{figure}

При использовании режима OFB важно сохранять синхронизм. Для этого необходимо
предусмотреть средство контроля над синхронизмом и средство восстановления
синхронизма в случае его потери.

Рекомендации по синхропосылке те же, что и в режимах CBC и CFB-m.

В режиме OFB ошибки не распространяются.


\subsection{Методы анализа блочных шифрсистем}

Рассмотрим эксплуатацию блочных шифров в режиме простой замены.

\begin{enumerate}
  \item
    Серьёзным недостатком режима простой замены является то, что зашифрование
    одинаковых блоков исходного текста даёт идентичные блоки шифротекста.

    В результате криптоаналитик лишь на основе шифрованных данных может делать
    выводы о свойствах исходного текста.

    Если некоторые блоки открытого текста повторились, то во всех зашифрованных
    сообщениях, независимо от используемых ключей, на одинаковых местах будут
    встречаться повторяющиеся блоки шифрованных текстов.

    Другой пример --- передача ключей в зашифрованном виде по линиям связи.
  \item
    При достаточно большой длине шифртекста можно применять методы анализа,
    использующие статистические характеристики открытых текстов.

    Например, вычисляя частоты появления блоков в шифрованном тексте и проводя
    опробование часто повторяющихся блоков, начиная с наиболее вероятных
    сочетаний в открытом тексте, можно составить словарь соответствия между
    блоками открытого и шифрованного текстов.

    Далее, развивая текст по смыслу с учётом избыточности открытых текстов,
    найденные блоки открытого текста можно дополнять соседними блоками.

    При этом одновременно восстанавливается открытый текст и дополняется словарь
    соответствия. Этот метод эффективен, когда наблюдается стандартность
    переписки.
  \item
    При шифровании осмысленных текстов в открытом тексте могут появляться
    не все сочетания знаков, что проявляется в фактическом сокращении числа
    используемых соответствий между блоками открытого и шифрованного текстов.

    Однако эта слабость легко устранима, если перед шифрованием применить к
    открытому тексту процедуру сжатия информации.
  \item
    Проблема последнего неполного блока данных при шифровании текстов, длины
    которых не кратны размеру блока. При использовании блочного шифра этот
    неполный блок должен быть каким-либо дополнен до стандартной длины.

    Если при этом алгоритм дополнения выбран неудачно, то при определении
    соответствующего блока открытого текста у криптоаналитика появляются
    дополнительные возможности.
  \item
    С помощью метода встречи посередине, Р. Меркель и М. Хеллман показали, как
    можно вскрыть схему двукратного шифрования.

    Предположим, что известны блок $M$ открытого текста и соответствующий ему
    блок $C$ шифрованного текста. Алгоритм вскрытия неизвестных ключей $k_1$ и
    $k_2$ состоит из двух этапов.

    На первом этапе перебираются все возможные варианты ключа $k_1$. Для каждого
    варианта $k$ ключа $k_1$ вычисляются значения $A(k) = E_k(M)$, после чего
    значения $k$ помещаются в память по адресу $A(k)$.

    На втором этапе опробуются возможные варианты ключа $k_2$. Для опробуемого
    варианту $k'$ ключа $k_2$ вычисляются значения $A(k') = D_{k'}(C)$ и
    производится обращение в память по адресу $A(k')$. Если по этому адресу 
    памяти записи отсутствуют, то происходит переход к опробованию следующего
    варианта $k'$ ключа $k_2$. Если же по адресу $A(k')$ в память хранится
    ключ $k$, то образуется допустимая пара ключей $(k, k')$, удовлетворяющая
    равенству $C = E_{k'}(E_k(M))$.

    Таким образом, вместо $|K|^2$ операций требуется $2|K|$ опробований и
    столько же обращений к памяти, таким образом затраты метода встречи
    посередине составляют порядка $4|K|$ операций.

  \item
    Идея метода \emph{линейного анализа} состоит в \emph{линеаризации}
    уравнений шифрования, то есть замене сложных преобразований, описывающих
    алгоритм шифрования, их приближениями в классе линейных функций. Под
    приближением в классе линейных функций (или \emph{линейным аналогом})
    понимается линейная функция, значения которой для достаточно большого
    числа наборов аргументов совпадают со значениями данной функции шифрования.

    Таким образом, линейный анализ сводит задачу определения ключей к решению
    системы линейных уравнений, в которой правые части уравнений известны с
    некоторой вероятностью. Если распределение значений правых частей уравнений
    системы отлично от равномерного распределения, и имеется достаточно большое
    число уравнений, то решение такой системы линейных уравнений может быть
    найдено статистическими методами.

    Проблема построения блочных шифров, для которых удаётся доказать отсутствие
    линейных аналогов, является весьма сложной задачей современной прикладной
    криптографии.

  \item
    Методы \emph{дифференциального (разностного) анализа} строятся в
    предположении, что криптоаналитик имеет для анализа несколько текстов,
    зашифрованных на одном ключе, и дополнительно предполагается известной
    информация о том, как различаются между собой открытые тексты.

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

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

    % TODO: что?
    Аналогичная ситуация возникает в случае, когда криптоаналитику удаётся
    получить результат зашифрования некоторого сообщения на разных ключах с
    дополнительной информацией о различных использованных ключах.

    Блочные шифры редко используются в режиме простой замены для шифрования
    длинных сообщений.

    Режим простой замены применяется в основном в системах передачи ключей и в
    платёжных системах, где сообщения состоят из небольшого числа блоков.

    Чаще блочные шифры используются в режиме шифрования с обратной связью, когда
    очередной блок шифра зависит не только от ключа, но и от предшествующих
    блоков шифротекста.
\end{enumerate}
