From 2dfb154ed9ea49a7de1f2d77d9ed7a4be0b2e523 Mon Sep 17 00:00:00 2001
From: Andrew Guschin <guschin.drew@gmail.com>
Date: Mon, 19 Dec 2022 20:53:20 +0400
Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0?=
 =?UTF-8?q?=2016-=D1=8F=20=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D1=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 cryptography/lectures/lecture16.tex | 168 ++++++++++++++++++++++++++++++++++++
 1 file changed, 168 insertions(+)
 create mode 100644 cryptography/lectures/lecture16.tex

(limited to 'cryptography/lectures/lecture16.tex')

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}
-- 
cgit v1.2.3

