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