forked from vlsergey/infosec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Feistel_cipher_without_s_blocks.tex
29 lines (22 loc) · 3.31 KB
/
Feistel_cipher_without_s_blocks.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
\subsection{Схема Фейстеля без s-блоков}
\selectlanguage{russian}
Пусть функция $F$ является простой линейной комбинацией некоторых битов правой части и ключа раунда относительно операции XOR. Тогда можно записать систему линейных уравнений битов выхода $y_i$ относительно битов входа $x_i$ и ключа $k_i$ после всех 16 раундов в виде
\[ y_i = \left(\sum_{i=0}^{n_1} a_i x_i\right) \oplus \left(\sum_{i=0}^{n_2} b_i k_i\right), \]
где суммирование производится по модулю 2, коэффициенты $a_i$ и $b_i$ известны и равны 0 или 1, количество битов в блоке открытого текста равно $n_1$, количество битов ключа равно $n_2$.
Имея открытый текст и шифртекст, легко найти ключ. Без знания открытых текстов, выполняя XOR шифртекстов, можно найти XOR открытых текстов, что может привести к возникновению благоприятных для взлома шифра условий. Во-первых, это может позволить провести атаку на различение сообщений. Во-вторых, в широко распространенных случаях, когда известны форматы сообщений, отдельные поля или распределение символов открытого текста, появляется возможность осуществить атаку перебором с учётом множества уравнений, полученных XOR шифртекстов.
Для предотвращения подобных атак используются s-блоки замены для создания нелинейности в уравнениях выхода $y_i$ относительно сообщения и ключа.
\subsubsection[Схема Фейстеля в ГОСТ 28147-89 без s-блоков]{Схема Фейстеля в~ГОСТ~28147-89 без~s-блоков}
В отличие от устаревшего алгоритма DES блочный шифр ГОСТ без s-блоков намного сложнее для взлома, так как для него нельзя записать систему линейных уравнений:
\[
\begin{array}{l}
L_1 = R_0, \\
R_1 = L_0 \oplus ((R_0 \boxplus K_1) \lll 11), \\
\end{array}
\] \[
\begin{array}{l}
L_2 = R_1 = L_0 \oplus ((R_0 \boxplus K_1) \lll 11), \\
R_2 = L_1 \oplus (R_1 \boxplus K_2) = \\
~~~~~= R_0 \oplus (((L_0 \oplus ((R_0 \boxplus K_1) \lll 11)) \boxplus K_2) \lll 11). \\
\end{array}
\]
Операция $\boxplus$ нелинейна по XOR. Например, только на трёх операциях $\oplus$, $\boxplus$ и $\lll f(R_i)$ без использования s-блоков построен блочный шифр RC5, который по состоянию на 2010 г. не был взломан.