summaryrefslogtreecommitdiff
path: root/cryptography/lectures/lecture22.tex
diff options
context:
space:
mode:
Diffstat (limited to 'cryptography/lectures/lecture22.tex')
-rw-r--r--cryptography/lectures/lecture22.tex216
1 files changed, 216 insertions, 0 deletions
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$ разрядов в сторону разрядов
+с большими номерами, при этом в разряды с меньшими номерами записывается
+полученный блок шифртекста, являющийся результатом покомпонентного сложения
+гаммы шифра и блока открытого текста.