Skip to content

Commit

Permalink
Добавлены разделы про имитовставку и про режим GCM
Browse files Browse the repository at this point in the history
  • Loading branch information
vlsergey committed Oct 12, 2021
1 parent bf4bc88 commit da7ca1a
Show file tree
Hide file tree
Showing 7 changed files with 622 additions and 179 deletions.
9 changes: 9 additions & 0 deletions bibliography.bib
Original file line number Diff line number Diff line change
Expand Up @@ -1167,6 +1167,15 @@ @misc{MS-VBRAND:2004
language = {English},
}

@inproceedings{McGrew:Viega:2004,
author = {McGrew, David A. and Viega, John},
title = {The Galois/Counter Mode of Operation (GCM)},
booktitle = {Submission to NIST Modes of Operation Process},
year = {2005},
month = {1},
url = {https://csrc.nist.rip/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf}
}

@INPROCEEDINGS{WangYu:2005,
author = {Wang, Xiaoyun and Yu, Hongbo},
title = {How to Break MD5 and Other Hash Functions},
Expand Down
33 changes: 33 additions & 0 deletions block-ciphers/modes/GCM.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
\subsection{Счётчик с аутентификаций Галуа}
\selectlanguage{russian}

Режим счётчика с аутентификацией Галуа был предложен Девидом МакГрю и Джоном Виега в 2004 году (\langen{Galois/Counter Mode, GCM}, рис.~\ref{fig:GCM}, \cite{McGrew:Viega:2004}). Данный режим обеспечивает одновременно конфиденциальность и целостность, при условии правильного использования.

\begin{figure}[bt]
\centering
\includegraphics[width=1\textwidth]{pic/GCM}
\caption{Режим счётчика с аутентификаций Галуа. Пунктирной рамкой выделена область формирования \emph{гаммы}, независящей от открытого текста.}
\label{fig:GCM}
\end{figure}

Результатом работы режима, кроме набора шифроблоков, является тег аутентификации, который должен быть использован принимающей стороной для проверки целостности сообщения. Как и в режиме выработки имитовставки, генерация данного тега возможна только легальным пользователем -- знающим секретный ключ, который был использован для шифрования данных.

<<Верхняя>> часть режима является режимом работы счётчика. В качестве первого значения берётся дополнение нулями вектора инициализации до размера обрабатываемого блока. Потом, как и в режиме CTR, правая часть увеличивается на 1 для каждого следующего блока. Значения счётчика шифруются на секретном ключе $K$ для получения блоков гаммы. Самый первый блок полученной гаммы используется не для шифрования открытого текста, а для формирования тега аутентификации.

Сам тег аутентификации вырабатывается следующим образом. На вход <<подрежима>> генерации тега сначала (опционально) подаются дополнительные данные (\langen{additional authenticated data, AAD}), которые не нужно шифровать в режиме GCM, но которым нужно обеспечить целостность. Например, это может быть заголовок передаваемого пакета данных. После того, как эти данные закончатся, на вход начнут подаваться блоки шифротекста $C_1, C_2, \dots, C_n$. Использование блоков шифротекста, а не открытого текста, позволяет получателю проверить целостность передаваемых данных до того, как приступит к расшифровке. В качестве последнего блока выступает конкатенация длин дополнительных данных и открытого текста.

Формирование тега происходит через побитовое сложение результата предыдущего блока с новым блоком AAD или $C_j$ и умножение результата на константу $H$, которая в двоичном виде равна результату шифрования нулевого вектора (блока, заполненного нулями) на ключе $K$:

\[ \begin{array}{l}
H = E_K ( 0^{\{n\}} ) \\
\end{array} \]

Умножение на константу $H$ происходит в поле Галуа $\GF{2^{n}}$. Рекомендуемый порождающий многочлен поля для шифра AES (с размером блока 128 бит):

\[ \begin{array}{l}
f(x) = x^{128} + x^7 + x^2 + x + 1.
\end{array} \]

Результат умножения самого последнего блока побитово складывается с первым блоком сформированной гаммы.

Данный режим обеспечивает и конфиденциальность, и целостность. Шифровать отдельные блоки можно параллельно, а вычисление тега аутентификации делается намного быстрее, чем шифрование. Однако любая ошибка передачи приведёт к вычислению некорректного тега аутентификации, а отличить изменение текста в результате ошибки передачи от вмешательства злоумышленника принципиально невозможно.
28 changes: 28 additions & 0 deletions block-ciphers/modes/GOST_MAC.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
\subsection{Режим имитовставки}\index{имитовствка!(}
\selectlanguage{russian}

Режим выработки имитовставки (рис.~\ref{fig:GOST_MAC}, \cite{GOST-89}) принципиально отличается от рассмотренных ранее режимов тем, что призван обеспечивать не конфиденциальность, а целостность. Результатом является блок данных фиксированного размера (в ГОСТ 28147-89 -- до 32 бит), длина которого не зависит от длины исходного сообщения.

\begin{figure}[bt]
\centering
\includegraphics[width=1\textwidth]{pic/GOST_MAC}
\caption{Режим выработки имитовставки}
\label{fig:GOST_MAC}
\end{figure}

Входное сообщение как и ранее разбивается на блоки равной длины $M_1, M_2, \dots, M_n$. Последний блок, при необходимости, дополняется (ГОСТ 28147-89 -- нулями). Формула выработки имитовставки выглядит следующим образом:

\[ \begin{array}{l}
X_1 = M_1; \\
Y_j = E_K ( X_j ), ~ j = 1, 2, \dots, n; \\
X_j = Y_{j-1} \oplus M_j, ~ j = 2, \dots, n; \\
\textbf{MAC} = Y_n.
\end{array} \]

В ГОСТ 28147-89 для режима выработки имитовставки функция шифрования использует 16 раундов вместо 32.

Как уже было сказано, данный режим обеспечивает только целостность информации. Причём саму информацию необходимо передавать, и, возможно, шифровать отдельно. Режим не обеспечивает возможности параллельных вычислений для разных блоков открытого текста.

Принципиальным недостатком является необходимость использовать секретный ключ\index{ключ!секретный} как для выработки имитовставки, так и для её валидации (путём повторной выработки на принимающей стороне и сравнения с результатом). Позже мы рассмотрим функциональных электронных цифровых подписей, которые по своему назначению схожи с имитовставкой, но обеспечивают вариант более гибкого использования -- без необходимости раскрытия ключа, используемого для генерации ЭЦП.

\index{имитовствка!)}
4 changes: 4 additions & 0 deletions block-ciphers/modes/index.tex
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,7 @@ \section{Режимы работы блочных шифров}\label{section-bl
\input{CFB}

\input{CTR}

\input{GOST_MAC}

\input{GCM}
Loading

0 comments on commit da7ca1a

Please sign in to comment.