Skip to content

Commit

Permalink
удаление двойных пробелов
Browse files Browse the repository at this point in the history
  • Loading branch information
vlsergey committed Dec 20, 2013
1 parent 141cfd7 commit 81fc455
Show file tree
Hide file tree
Showing 52 changed files with 146 additions and 146 deletions.
10 changes: 5 additions & 5 deletions AES.tex
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ \section{Американский стандарт шифрования AES}
\textit{Входные} и \textit{выходные} блоки шифра AES рассматриваются как последовательности 16 байтов $(a_0, a_1, \dots, a_{15})$. Преобразование входного блока $(a_0, \dots, a_{15})$ в исходную $(4 \times 4)$ матрицу состояния $\mathsf{State}$ или конечной матрицы состояния в выходную последовательность проводится по правилу (запись по столбцам):
\[ a_{i,j} = a_{i + 4j}, ~ i = 0 \dots 3, ~ j = 0 \dots 3. \]

Аналогично ключ шифрования может рассматриваться как последовательность байтов $(k_0, k_1, \dots, k_{4 \cdot \mathsf{Nk} - 1})$, где $\mathsf{Nk} = 4, 6, 8$. Число байтов в этой последовательности равно 16, 24 или 32. Соответственно номера этих байтов находятся в интервалах $0 \dots 15, ~ 0 \dots 23$ или $0 \dots 31$. $(4 \times \mathsf{Nk})$-матрица ключа шифрования $\mathsf{Key}$ задается по правилу:
Аналогично ключ шифрования может рассматриваться как последовательность байтов $(k_0, k_1, \dots, k_{4 \cdot \mathsf{Nk} - 1})$, где $\mathsf{Nk} = 4, 6, 8$. Число байтов в этой последовательности равно 16, 24 или 32. Соответственно номера этих байтов находятся в интервалах $0 \dots 15, ~ 0 \dots 23$ или $0 \dots 31$. $(4 \times \mathsf{Nk})$-матрица ключа шифрования $\mathsf{Key}$ задается по правилу:
\[ k_{i,j} = k_{i + 4j}, ~ i = 0 \dots 3, ~ j = 0 \dots \mathsf{Nk} - 1. \]

Число раундов $\mathsf{Nr}$ зависит от длины ключа. Его значения приведены в таблице ниже.
Expand Down Expand Up @@ -65,18 +65,18 @@ \subsection{Операции в поле}

\subsubsection{Сложение и умножение байтов}

Байты $a_1$ и $a_2$, как элементы поля Галуа $\GF{2^8}$, представлены многочленами 7-ой степени $a_1(x)$ и $a_2(x)$ с двоичными коэффициентами. Сложение байтов выполняется как сложение многочленов $a_1(x) + a_2(x)$ в поле $\GF{2}$. Умножение байта $a_1(x)$ на байт $a_2(x)$ в поле $\GF{2^8}$ производится по модулю неприводимого многочлена
Байты $a_1$ и $a_2$, как элементы поля Галуа $\GF{2^8}$, представлены многочленами 7-ой степени $a_1(x)$ и $a_2(x)$ с двоичными коэффициентами. Сложение байтов выполняется как сложение многочленов $a_1(x) + a_2(x)$ в поле $\GF{2}$. Умножение байта $a_1(x)$ на байт $a_2(x)$ в поле $\GF{2^8}$ производится по модулю неприводимого многочлена
\[ m(x) = x^{8} + x^{4} + x^{3} + x + 1. \]

\subsubsection{Сложение и умножение вектор-столбцов из байтов}

Следующий тип операций -- это операции над столбцами матриц. Вектор-столбец $\mathbf{a}$, состоящий из байтов $(a_0, a_1, a_2, a_3)$, интерпретируется как многочлен третьей степени $\mathbf{a}(y)$ над полем $\GF{2^8}$, то есть
\[ \mathbf{a}(y) = a_3 y^{3} + a_2 y^{2} + a_1 y + a_0, ~ a_i \in \GF{2^8}. \]

Сложение двух векторов $\mathbf{a}_1$ и $\mathbf{a}_2$ из 4 байтов определяется как сложение многочленов $\mathbf{a}_1(y) + \mathbf{a}_2(y)$ на полем $\GF{2^8}$. Умножение вектора $\mathbf{a}_1$ на вектор $\mathbf{a}_2$ задано как умножение многочлена $\mathbf{a}_1(y)$ на многочлен $\mathbf{a}_2(y)$ над полем $\GF{2^8}$ по модулю многочлена
Сложение двух векторов $\mathbf{a}_1$ и $\mathbf{a}_2$ из 4 байтов определяется как сложение многочленов $\mathbf{a}_1(y) + \mathbf{a}_2(y)$ на полем $\GF{2^8}$. Умножение вектора $\mathbf{a}_1$ на вектор $\mathbf{a}_2$ задано как умножение многочлена $\mathbf{a}_1(y)$ на многочлен $\mathbf{a}_2(y)$ над полем $\GF{2^8}$ по модулю многочлена
\[ \mathbf{M}(y)= \mathrm{'01'} y^4 + \mathrm{'01'} = y^4 + 1, ~ \mathrm{'01'}=1 \in \GF{2^8}, \]
\[ \mathbf{M}(y)= (01, 00, 00, 01), \]
который не является неприводимым над $\GF{2^8}$. Чтобы подчеркнуть, что коэффициенты многочлена являются элементами поля $\GF{2^8}$, используется нотация из описания алгоритма в виде значений байтов в 16-ричной системе в кавычках, например $\mathrm{'01'}$.
который не является неприводимым над $\GF{2^8}$. Чтобы подчеркнуть, что коэффициенты многочлена являются элементами поля $\GF{2^8}$, используется нотация из описания алгоритма в виде значений байтов в 16-ричной системе в кавычках, например $\mathrm{'01'}$.

Операция умножения по этому модулю обозначается как $\otimes$:
\[ \mathbf{a}_1(y) ~ \mathbf{a}_2(y) \mod \mathbf{M}(y) \equiv \mathbf{a}_1(y) \otimes \mathbf{a}_2(y). \]
Expand Down Expand Up @@ -289,7 +289,7 @@ \subsection{Процедура расширения ключа}

Здесь $\mathsf{SubWord}(\mathsf{W})[i]$ обозначает функцию, которая применяет операцию <<Замена байтов>> (или s-блок) $\mathsf{SubBytes}$ к каждому из 4-х байтов столбца $\mathsf{W}[i]$. Функция $\mathsf{RotWord}(\mathsf{W}[i])$ осуществляет циклический сдвиг вверх байтов столбца $\mathsf{W}[i]$: если $\mathsf{W}[i] = (a, b, c, d)^T$, то $\mathsf{RotByte}(\mathsf{W}[i]) = (b, c, d, a)^T$. Векторы-константы $\mathsf{Rcon}[i]$ определены ниже.

Как видно из этого описания, первые $\mathsf{Nk} = 4$ столбцов заполняются ключом шифра. Все следующие столбцы $\mathsf{W}[i]$ равны сумме по модулю 2 предыдущего столбца $\mathsf{W}[i-1]$ и столбца $\mathsf{W}[i-4]$. Для столбцов $\mathsf{W}[i]$ с номерами $i$, кратными $\mathsf{Nk} = 4$, к столбцу $\mathsf{W}[i-1]$ применяются операции $\mathsf{RotWord(W)}$ и $\mathsf{SubWord(W)}$, а затем производится суммирование по модулю 2 со столбцом $\mathsf{W}[i-4]$ и константой раунда $\mathsf{Rcon}[i ~/~ 4]$.
Как видно из этого описания, первые $\mathsf{Nk} = 4$ столбцов заполняются ключом шифра. Все следующие столбцы $\mathsf{W}[i]$ равны сумме по модулю 2 предыдущего столбца $\mathsf{W}[i-1]$ и столбца $\mathsf{W}[i-4]$. Для столбцов $\mathsf{W}[i]$ с номерами $i$, кратными $\mathsf{Nk} = 4$, к столбцу $\mathsf{W}[i-1]$ применяются операции $\mathsf{RotWord(W)}$ и $\mathsf{SubWord(W)}$, а затем производится суммирование по модулю 2 со столбцом $\mathsf{W}[i-4]$ и константой раунда $\mathsf{Rcon}[i ~/~ 4]$.

%Для $\mathsf{Nk}>6$ имеем
%\[
Expand Down
2 changes: 1 addition & 1 deletion Avalanche_effect.tex
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ \subsubsection{Лавинный эффект в DES}
\end{tabular}
\end{table}

В таблице \ref{tab-DES-avalance-effect} приводится расчет распространения 1 бита левой части. Посчитано число зависимых битов по раундам в предположении об их случайном расположении и том, что каждый бит на входе $s$-блока \emph{влияет} на все биты выхода. Полная диффузия достигается за 5 раундов, что совпадает с экспериментальной проверкой. Для достижения максимального лавинного эффекта требуется аккуратно выбрать расширение, $s$-блоки, а также перестановку в функции $F$.
В таблице \ref{tab-DES-avalance-effect} приводится расчет распространения 1 бита левой части. Посчитано число зависимых битов по раундам в предположении об их случайном расположении и том, что каждый бит на входе $s$-блока \emph{влияет} на все биты выхода. Полная диффузия достигается за 5 раундов, что совпадает с экспериментальной проверкой. Для достижения максимального лавинного эффекта требуется аккуратно выбрать расширение, $s$-блоки, а также перестановку в функции $F$.


\subsubsection{Лавинный эффект в ГОСТ 28147-89}
Expand Down
Loading

0 comments on commit 81fc455

Please sign in to comment.