From 5d8de74a3609fe5d453352923bc7daab6a8aaed4 Mon Sep 17 00:00:00 2001
From: Andrew Guschin <guschin.drew@gmail.com>
Date: Mon, 27 Mar 2023 23:17:04 +0400
Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B?=
 =?UTF-8?q?=20=D0=BB=D0=B5=D0=BA=D1=86=D0=B8=D0=B8=20=D0=BF=D0=BE=20=D0=BA?=
 =?UTF-8?q?=D1=80=D0=B8=D0=BF=D1=82=D0=BE=D0=B3=D1=80=D0=B0=D1=84=D0=B8?=
 =?UTF-8?q?=D0=B8=20=D0=B2=D1=82=D0=BE=D1=80=D0=BE=D0=B3=D0=BE=20=D1=81?=
 =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D1=81=D1=82=D1=80=D0=B0=20=D0=B4=D0=BE=20?=
 =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8C=D0=BD=D0=BE?=
 =?UTF-8?q?=D0=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

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

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

diff --git a/cryptography/lectures/lecture22.tex b/cryptography/lectures/lecture22.tex
new file mode 100644
index 0000000..5b0e949
--- /dev/null
+++ b/cryptography/lectures/lecture22.tex
@@ -0,0 +1,216 @@
+% Лекция 22 (24.03.23)
+
+\subsection{ГОСТ 34.13-2015}
+
+Национальный стандарт Российской Федерации ГОСТ Р 34.13-2015 <<Информационная
+технология. Криптографическая защита информации. Режимы работы блочных шифров>>
+разработан Центром защиты информации и специальной связи ФСБ России с участием
+ОАО <<ИнфоТеКС>>, утверждён и введён в действие Приказом Федерального агентства
+по техническому регулированию и метрологии от 19 нюня 2015 г. №750-ст.
+
+Данный стандарт содержит описание режимов работы блочных шифров. Данные режимы
+работы блочных шифров определяют правила криптографического преобразования
+данных и выработки имитовставки для сообщений произвольного размера.
+
+Настоящий стандарт определяет следующие режимы работы алгоритмов блочного
+шифрования:
+\begin{itemize}
+  \item режим простой замены (Electronic Codebook, ECB);
+  \item режим гаммирования (Counter, CTR);
+  \item режим гаммирования с обратной связью по выходу (Output Feedback, OFB);
+  \item режим простой замены с зацеплением (Cipher Block Chaining, CBC);
+  \item режим гаммирования с обратной связью по шифртексту (Cipher Feedback, CFB);
+  \item режим выработки имитовставки (Message Authentication Code algorithm).
+\end{itemize}
+
+Данные режимы могут использоваться в качестве режимов для блочных шифров с
+произвольной длиной блока $n$.
+
+
+\subsubsection{Обозначения}
+
+\begin{enumerate}
+  \item $\boxplus_s$ --- операция сложения в кольце $\Z_{2^s}$;
+  \item
+    $MSB_s : V^* \backslash \cup_{i = 0}^{s - 1} V_i \to V_s$ --- отображение,
+    ставящее в соответствие строке $z_{m - 1} \| \dots \| z_1 \| z_0$, $m \geq
+    s$, строку $z_{m - 1} \| \dots \| z_{m - s + 1} \| z_{m - s}$, $z_i \in
+    V_1$, $i = 0, 1, \dots, m - 1$;
+  \item $T_s = MSB_s$;
+  \item
+    $LSB_s : V^* \backslash \cup_{i = 0}^{s - 1} V_i \to V_s$ --- отображение,
+    ставящее в соответствие строке $z_{m - 1} \| \dots \| z_1 \| z_0$, $m \geq
+    s$, строку $z_{s - 1} \| \dots \| z_1 \| z_0$, $z_i \in V_1$, $i = 0, 1,
+    \dots, m - 1$;
+  \item
+    $A \ll r$ --- операция логического сдвига строки $A$ на $r$ компонент в
+    сторону компонент, имеющих большие номера. Если $A \in V_s$, то
+    $A \ll r \in V_s$, причём
+    \begin{equation*}
+      A \ll r = \begin{cases}
+        LSB_{s - r}(A) \| 0^r, &\text{если } r < s, \\
+        0^s, &\text{если } r \geq s;
+      \end{cases}
+    \end{equation*}
+  \item
+    $Poly_s : V_s \to GF(2)[x]$ --- отображение, ставящее в соответствие строке
+    $z = (z_{s - 1} \| \dots \| z_0) \in V_s$ многочлен $Poly_s(z) =
+    \sum_{i = 0}^{s - 1} z_i x^i$;
+  \item $k$ --- параметр алгоритма блочного шифрования, называемый длиной ключа;
+  \item $n$ --- параметр алгоритма блочного шифрования, называемый длиной блока;
+  \item
+    $E : V_n \times V_k \to V_n$ --- отображение, реализующее базовый алгоритм
+    блочного шифрования и осуществляющее преобразование блока открытого текста
+    $P \in V_n$ с использованием ключа (шифрования) $K \in V_k$ в блок
+    шифртекста $C \in V_n : E(P, K) = C$;
+  \item
+    $e_K : V_n \to V_n$ --- отображение, реализующее шифрование с использованием
+    ключа $K \in V_k$, то есть $e_K(P) = E(P, K)$ для всех $P \in V_n$;
+  \item
+    $d_K : V_n \to V_n$ --- отображение, реализующее расшифрование с использованием
+    ключа $K \in V_k$, то есть $d_K = e_K^{-1}$.
+\end{enumerate}
+
+
+\subsubsection{Дополнение сообщения}
+
+Отдельные из описанных режимов работы могут осуществлять криптографическое
+преобразование сообщений произвольной длины, для других режимов требуется,
+чтобы длина сообщения была кратна некоторой величине $l$.
+
+В последнем случае при работе с сообщениями произвольной длины необходимо
+применение процедуры дополнения сообщения до требуемой длины.
+
+Пусть $P \in V^*$ --- исходное сообщение, подлежащее зашифрованию.
+\begin{enumerate}
+  \item
+    Пусть $|P| \equiv r \pmod{l}$. Положим
+    \begin{equation*}
+      P^* = \begin{cases}
+        P, &\text{если } r = 0, \\
+        P \| 0^{l - r}, &\text{иначе}.
+      \end{cases}
+    \end{equation*}
+    
+    Описанная процедура в некоторых случаях не обеспечивает однозначного
+    восстановления исходного сообщения. Например, результаты дополнения
+    сообщения $P_1$, такого что $|P_1| = l \cdot q - 1$ для некоторого $q$,
+    и $P_2 = P_1 \| 0$ будут одинаковы.
+  \item
+    Пусть $|P| \equiv r \pmod{l}$. Положим $P^* = P \| 1 \| 0^{l - r - 1}$.
+
+    Данная процедура обеспечивает однозначное восстановление исходного
+    сообщения. При этом если длина исходного сообщения кратна $l$, то длина
+    дополненного сообщения будет увеличена.
+  \item
+    Пусть $|P| \equiv r \pmod{l}$. В зависимости от значения $r$ возможны
+    случаи:
+    \begin{itemize}
+      \item если $r = n$, то последний блок не изменяется $P^* = P$;
+      \item если $r < n$, то применяется процедура 2.
+    \end{itemize}
+
+    Данная процедура обязательна для режима выработки имитовставки.
+\end{enumerate}
+
+
+\subsubsection{Режимы работы алгоритмов блочного шифрования}
+
+\paragraph{Режим гаммирования с обратной связью по выходу.}
+
+Параметры: целочисленные величины $s$ и $m$, $0 < s \leq n$, $n \leq m$,
+$m = n \cdot z$, $z \geq 1$ --- целое число.
+
+При использовании режима не требуется применение процедуры дополнения
+сообщения. При шифровании на одном ключе для каждого отдельного открытого
+текста используется значение уникальной или непредсказуемой (случайной или
+псевдослучайной) синхропосылки $IV \in V_m$. При шифровании используется
+двоичный регистр сдвига $R$ длины $m$. Начальным заполнением регистра является
+значение синхропосылки $IV$.
+
+Зашифрование в режиме заключается в покомпонентном сложении открытого текста с
+гаммой шифра, которая вырабатывается блоками длины $s$.
+
+При вычислении очередного блока гаммы выполняется зашифрование $n$ разрядов
+регистра сдвига с большими номерами базовым алгоритмом блочного шифрования.
+
+Затем заполнение регистра сдвигается на $n$ бит в сторону разрядов с большими
+номерами, при этом в разряды с меньшими номерами записывается полученный выход
+базового алгоритма блочного шифрования.
+
+Блок гаммы вычисляется путём усечения выхода базового алгоритма блочного
+шифрования.
+
+\begin{itemize}
+  \item
+    \textbf{Зашифрование.}
+
+    Открытый текст $P \in V^*$ представляется в виде: $P = P_1 \| P_2 \| \dots
+    \| P_q$, $P_i \in V_s$, $i = 1, 2, \dots, q - 1$, $P_q \in V_r, r \leq s$.
+
+    Блоки шифртекста вычисляются по следующему правилу:
+    \begin{align*}
+      &R_1 = IV, \\
+      &\begin{cases}
+        Y_i = e_K(MSB_n(R_i)), \\
+        C_i = P_i \oplus T_s(Y_i), i = 1, 2, \dots, q - 1, \\
+        R_{i + 1} = LSB_{m - n}(R_i) \| Y_i,
+      \end{cases} \\
+      &Y_q = e_K(MSB_n(R_q)), \\
+      &C_q = P_q \oplus T_r(Y_q).
+    \end{align*}
+
+    Результирующий шифртекст: $C = C_1 \| C_2 \| \dots \| C_q$.
+
+    % TODO: рис 1.
+  \item
+    \textbf{Расшифрование.}
+
+    Шифртекста представляется в виде: $C = C_1 \| C_2 \| \dots \| C_q$,
+    $C_i \in V_s$, $i = 1, 2, \dots, q - 1$, $C_q \in V_r$, $r \leq s$.
+
+    Блоки открытого текста вычисляются по следующему правилу:
+    \begin{align*}
+      &R_1 = IV, \\
+      &\begin{cases}
+        Y_i = e_K(MSB_n(R_i)), \\
+        P_i = C_i \oplus T_s(Y_i), i = 1, 2, \dots, q - 1, \\
+        R_{i + 1} = LSB_{m - n}(R_i) \| Y_i,
+      \end{cases} \\
+      &Y_q = e_K(MSB_n(R_q)), \\
+      &P_q = C_q \oplus T_r(Y_q).
+    \end{align*}
+
+    Исходный открытый текст: $P = P_1 \| P_2 \| \dots \| P_q$.
+
+    % TODO: рис 2
+\end{itemize}
+
+
+\paragraph{Режим гаммирования с обратной связью по шифртексту.}
+
+Параметры: целочисленные величины $s$ и $m$, $0 < s \leq n$, $n \leq m$.
+
+Если в конкретной системе обработки информации на длину исходного сообщения
+$P$ накладывается ограничение $|P| = s \cdot q$, то к исходному сообщению, при
+необходимости, должна быть предварительно применена процедура дополнения.
+
+При шифровании на одном ключе для каждого отдельного открытого текста
+используется значение непредсказуемой (случайной или псевдослучайной)
+синхропосылки $IV \in V_m$.
+
+% TODO: пропуск
+
+Начальным заполнением регистра является значение синхропосылки $IV$.
+
+Зашифрование заключается в покомпонентном сложении открытого текста с гаммой
+шифра, которая вырабатывается блоками длины $s$.
+
+При вычислении очередного блока гаммы выполняется зашифрование $n$ разрядов
+регистра сдвига с большими номерами базовым алгоритмом блочного шифрования с
+последующим усечением.
+
+Затем заполнение регистра сдвигается на $s$ разрядов в сторону разрядов
+с большими номерами, при этом в разряды с меньшими номерами записывается
+полученный блок шифртекста, являющийся результатом покомпонентного сложения
+гаммы шифра и блока открытого текста.
-- 
cgit v1.2.3

