summaryrefslogtreecommitdiff
path: root/cryptography/lectures/lecture16.tex
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2022-12-19 20:53:20 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2022-12-19 20:53:20 +0400
commit2dfb154ed9ea49a7de1f2d77d9ed7a4be0b2e523 (patch)
treee5a8157b63253da599e9f3bcc18c84b3448513bb /cryptography/lectures/lecture16.tex
parentb06e015a606034cbb2363a9989192895aa27a4d3 (diff)
Добавлена 16-я лекция
Diffstat (limited to 'cryptography/lectures/lecture16.tex')
-rw-r--r--cryptography/lectures/lecture16.tex168
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}