diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2022-12-19 20:53:20 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2022-12-19 20:53:20 +0400 |
| commit | 2dfb154ed9ea49a7de1f2d77d9ed7a4be0b2e523 (patch) | |
| tree | e5a8157b63253da599e9f3bcc18c84b3448513bb /cryptography/lectures/lecture16.tex | |
| parent | b06e015a606034cbb2363a9989192895aa27a4d3 (diff) | |
Добавлена 16-я лекция
Diffstat (limited to 'cryptography/lectures/lecture16.tex')
| -rw-r--r-- | cryptography/lectures/lecture16.tex | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/cryptography/lectures/lecture16.tex b/cryptography/lectures/lecture16.tex new file mode 100644 index 0000000..2be9be6 --- /dev/null +++ b/cryptography/lectures/lecture16.tex @@ -0,0 +1,168 @@ +% Лекция 16 (19.12.22) + +В обратимом S-боксе число входных битов должно быть равным число битов выхода. + +Возможны варианты при построении S-боксов. + +Например, в каждом раунде алгоритма DES размер блока данных сначала расширяется +с 32 до 48 бит, что позволяет подмешивать 48-битный раундовый ключ, а после +S-боксов --- обратно сокращается до 32 бит. + +Перемешивающие слои должны реализовывать связи между входными и выходными битами +S-боксов при которых выполняются условия: + +\begin{enumerate} + \item + Каждый S-бокс удовлетворяет критериям типа лавинного эффекта (зависимость + всех выходных битов от каждого входного бита) или критериям распространения, + и значит, реализует совершенное преобразование входных наборов. + + При выполнении данного условия изменение одного бита входного набора любого + S-бокса приводит к изменению нескольких (в среднем не менее двух) битов его + выхода; + \item + На следующем раунде совокупность входных битов каждого S-бокса зависит от + выходов нескольких S-боксов предыдущего цикла. +\end{enumerate} + +Второе условие выполняется с помощью слоя, переставляющего координаты +промежуточных блоков (например, координаты циклически сдвигаются). + +Выполнение обоих условий позволяет после нескольких раундов достичь ряда +положительных свойств, в частности, выполнения критериев типа лавинного эффекта +или критериев распространения, например, в 16-раундовом DES совершенным является +преобразование после пяти циклов, в 32-раундовом алгоритме ГОСТ 28147-83 --- +после трёх циклов. + + +\subsection{Режимы шифрования} + +\paragraph{Electronic Codebook.} + +\emph{Режимами шифрования} называются алгоритмы обработки данных, построенные +на основе базового режима ECB (Electronic Codebook, электронная кодовая книга, +простая замена). + +Криптографическая стойкость блочного шифра определяется в основном стойкостью +базового режима. + +Свойства: +\begin{enumerate} + \item + При замене и перестановке блоков криптограммы блоки расшифровываются + корректно; + \item + Шифрование на одном ключе одинаковых блоков открытого текста даёт одинаковые + блоки криптограммы независимо от их положения в сообщении; + \item + В силу хорошего перемешивания информации шифрующими подстановками, каждый + из $2n$ битов выходного блока $Y$ искажается с вероятностью $\frac{1}{2}$ + при искажении одного лишь случайно выбранного бита входного блока $X$. + + Единичная ошибка в блоке $X$ порождает в среднем $n$ ошибок внутри + $2n$-битового шифроблока $Y$. + + На другие шифроблоки сообщения ошибка не распространяется. +\end{enumerate} + +Длина большинства сообщений не кратна $2n$. Поэтому при шифровании последнего +неполного блока данных возникает задача корректного определения алгоритма +шифрования. Эта проблема решается с помощью различных способов дополнения блоков +текста. +\begin{enumerate} + \item + Простейший способ заключается в дополнении неполного $m$-битного блока + открытого текста строкой длины $2n - 8$ бит определённого вида, например, + нулевой строкой, и байтом, в котором указано число $2n - m$, равное дефициту + последнего блока в битах. После этого блок шифруется обычным образом. + + Если $2n - m < 8$, то длина сообщения увеличивается на один блок. + + \item + Второй способ называется \emph{похищением криптограммы}. Пусть + $v^m : V_r \to V_m$ и $w^m : V_r \to V_{r - m}$, где $1 \leq m < r$, + реализующие в совокупности <<рассечение>> блока $(x_1, \dots, x_r) \in V_r$ + на две части + \begin{align*} + v^m(x_1, \dots, x_r) &= (x_1, \dots, x_m) \\ + w^m(x_1, \dots, x_r) &= (x_{1 + m}, \dots, x_r) + \end{align*} + + Пусть $x_t$ и $y_t$ есть неполные $m$-битовые блоки открытого и шифрованного + текстов, $x_{t - 1}$ и $y_{t - 1}$ есть соответствующие предыдущие полные + блоки. Тогда алгоритм шифрования исполняется следующим образом: + \begin{align*} + y_t &= v^m \left( E_k(x_{t - 1}) \right) \\ + y_{t - 1} &= E_k(x_t, w^m (E_k(x_{t - 1}))) + \end{align*} + + При расшифровании сначала вычисляется блок $w = E^{-1}_k(y_{t - 1})$, после + чего определяется $x_t = v^m(w)$ и $x_{t - 1} = E^{-1}_k(y_t, w^m(w))$. +\end{enumerate} + +\paragraph{Cipher Block Chaining.} + +Режим CBC (сцепление блоков шифротекста, режим простой замены с зацеплением) +блочного шифра описывается уравнением шифрования +\begin{equation*} + y_t = E_k(x_t \oplus y_{t - 1}),\, t = 1, 2, \dots +\end{equation*} +где $y_0$ --- случайный вектор из $V_{2n}$, который называется вектором +инициализации (начальным вектором, синхропосылкой) и вырабатывается перед +каждым сообщением. + +Вектор $y_0$ может передаваться в линию связи как в открытом, так и в +шифрованном виде (в частности, с помощью режима ECB). + +Однако, важно избегать повторения синхропосылки в разных сообщениях, +шифруемых одинаковым ключом. Это затрудняет атаку на криптограмму, основанную +на наличии стандартов в начале сообщения. + +В качестве синхропосылки используется некоторая строка случайных байтов либо +метка времени. + +На рисунке \ref{fig:cbc-scheme} представлена блок-схема шифрования (в верхней +части) и расшифрования (в нижней части) в режима CBC. + +\begin{figure}[ht] + \centering + \includegraphics[width=0.6\textwidth]{lecture16/cbc-scheme.pdf} + \caption{Схема зашифрования-расшифрования в режиме CBC} + \label{fig:cbc-scheme} +\end{figure} + + +Искажение одного бита в блоке $x_t$ влечёт за собой искажение в среднем половины +битов во всех блоках криптограммы, начиная с $y_t$. Для расшифрования это +несущественно, так как восстановленный текст будет содержать ту же единственную +ошибку. + +Искажение $i$-го бита в блоке $y_t$ влечёт искажение около половины битов в +блоке $x_t$ и $i$-го бита в блоке $x_{t + 1}$. Следующие блоки +расшифровываются корректно (самовосстанавливаются). В то же время режим CBC +совершенно не устойчив к ошибкам синхронизации. + +Дополнение блоков можно выполнять как в режиме ECB. Если требуется совпадение +длин исходного сообщения и криптограммы, то используются следующие способы: +\begin{enumerate} + \item + При неполном $m$-битовом блоке $x_t$ открытого текста соответствующий блок + $y_t$ криптограммы вычисляется так: + \begin{equation*} + y_t = x_t \oplus v^m (E_k(y_{t - 1})) + \end{equation*} + + \item + Это вариант похищения криптограммы. Пусть $a$ есть $(2n - m)$-битовая + строка из нулей и $w = E_k(x_{t - 1} \oplus y_{t - 2})$. Тогда + шифрование происходит следующим образом: + \begin{equation*} + y_t = v^m(w), y_{t - 1} = E_k((x_t, a) \oplus w) + \end{equation*} + + При расшифровании сначала вычисляется блок данных + $w' = E^{-1}_k(y_{t - 1}) \oplus (y_t, a)$, после чего определяется + \begin{equation*} + x_t = v^m(w'), x_{t - 1} = E^{-1}_k(y_t, w^m(w')) \oplus y_{t - 2} + \end{equation*} +\end{enumerate} |