Skip to content

Commit

Permalink
extract protocol definitions and writing rules to separate files
Browse files Browse the repository at this point in the history
  • Loading branch information
vlsergey committed Nov 10, 2019
1 parent 40c0612 commit 15d2c01
Show file tree
Hide file tree
Showing 3 changed files with 142 additions and 139 deletions.
44 changes: 44 additions & 0 deletions protocols-definitions.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
\section{Основные понятия}
\selectlanguage{russian}
Для успешного выполнения любых целей по защите информации необходимо участие в процессе защиты нескольких субъектов, которые по определённым правилам будут выполнять технические или организационные действия, криптографические операции, взаимодействовать друг с другом, например, передавая сообщения или проверяя личности друг друга.

Формализация подобных действий делается через описание протокола. \emph{Протокол} -- описание распределённого алгоритма, в процессе выполнения которого два или более участников последовательно выполняют определённые действия и обмениваются сообщениями\footnote{Здесь и далее в этом разделе определения даны на основе~\cite{Cheremushkin:2009}.}.

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

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

Цикл (или проход) состоит из \emph{шагов} (действий, \langen{step, action}) -- конкретных законченных действий, выполняемых участником протокола. Например:
\begin{itemize}
\item генерация нового (случайного) значения;
\item вычисление значений функции;
\item проверка сертификатов, ключей, подписей, и др.;
\item приём и отправка сообщений.
\end{itemize}

Прошедшая в прошлом или даже просто теоретически описанная реализация протокола для конкретных участников называется \emph{сеансом}\index{сеанс!протокола}. Каждый участник в рамках сеанса выполняет одну или несколько \emph{ролей}. В другом сеансе протокола участники могут поменяться ролями и выполнять уже совсем другие функции.

Можно сказать, что протокол прескрептивно описывает правила поведения каждой роли в протоколе. А сеанс это дескриптивное описание (возможно теоретически) состоявшейся в прошлом реализации протокола.

Пример описания протокола.
\begin{enumerate}
\item Участник с ролью <<Отправитель>> должен отправить участнику с ролью <<Получатель>> сообщение.
\item Участник с ролью <<Получатель>> должен принять от участника с ролью <<Отправитель>> сообщение.
\end{enumerate}

Пример описания сеанса протокола.
\begin{enumerate}
\item 1-го апреля в 13:00 Алиса отправила Бобу сообщение.
\item 1-го апреля в 13:05 Боб принял от Алисы сообщение.
\end{enumerate}

\emph{Защищённым протоколом}\index{протокол!защищённый} или \emph{протоколом обеспечения безопасности}\index{протокол!обеспечения безопасности} будет называть протокол, обеспечивающий выполнение хотя бы одной защитной функции~\cite{ISO:7498-2:1989}:
\begin{itemize}
\item аутентификация сторон и источника данных,
\item разграничение доступа,
\item конфиденциальность,
\item целостность,
\item невозможность отказа от факта отправки или получения.
\end{itemize}

Если защищённый протокол предназначен для выполнения функций безопасности криптографической системы, или если в процессе его исполнения используются криптографические алгоритмы, то такой протокол будем называть \emph{криптографическим}\index{протокол!криптографический}.
96 changes: 96 additions & 0 deletions protocols-writing-rules.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
\section{Запись протоколов}
\selectlanguage{russian}
Для записи протоколов, связанных с реализацией функций защиты информации, не используют выражения вроде <<участник с ролью <<Отправитель>>>>, а заменяют их на краткие обозначения вроде <<отправитель>> или используют общепринятые экземплификанты\footnote{\emph{Экземплификант} или \emph{экземплификатив} -- конкретное понятие или имя собственное, используемое в качестве примера для обозначения неизвестного места или личности. (Википедия, свободная энциклопедия; 5 июля 2019)}: Алиса, Боб, Клара, Ева и~т.\,д. При этом используют следующие соглашения.

\begin{itemize}
\item Алиса, Боб (от \langen{A, B}) -- отправитель и получатель.
\item Карл, Клара, Чарли (от \langen{C}) -- равноправная третья сторона.
\item Ева (от \langen{eavesdropper}) -- пассивный криптоаналитик.
\item Меллори (от \langen{malicious}) -- активный криптоаналитик.
\item Трент (от \langen{trust}) -- доверенная сторона.
\end{itemize}

Не существует общепринятого формата записи протоколов, они могут отличаться как по внешнему виду, так и по полноте описания. Например, вот наиболее полный формат записи протокола Диффи~---~Хеллмана\index{протокол!Диффи~---~Хеллмана}.

\begin{itemize}
\item Предварительный этап.
\begin{itemize}
\item Все стороны выбрали общие $g$ и $p$.
\end{itemize}
\item Проход 1.
\begin{itemize}
\item Алиса генерирует случайное $a$.
\item Алиса вычисляет $A = g^a \bmod p$.
\item Алиса отправляет Бобу $A$.
\end{itemize}
\item Проход 2.
\begin{itemize}
\item Боб принимает от Алисы $A$.
\item Боб генерирует случайное $b$.
\item Боб вычисляет $B = g^b \bmod p$.
\item Боб отправляет Алисе $B$.
\item Боб вычисляет $s = A^b \bmod p$.
\end{itemize}
\item Проход 2.
\begin{itemize}
\item Алиса принимает от Боба $B$.
\item Алиса вычисляет $s = B^a \bmod p$.
\end{itemize}
\item Результат протокола.
\begin{itemize}
\item Стороны вычислили общий сеансовый ключ $s$.
\end{itemize}
\end{itemize}

Теперь сравните с краткой записью того же самого протокола.
\begin{enumerate}
\item $A \to B : A = g^a \bmod p$
\item $B \to A : B = g^b \bmod p$
\end{enumerate}

В краткой записи опускаются инициализация и предварительные требования, вычисления непередаваемых данных (в данном примере -- общего сеансового ключа $s$), а также любые проверки.

В данном пособии мы будем придерживаться промежуточного формата записи.

\begin{enumerate}
\item[(1)] Алиса генерирует $a$.
\item[] $Alice \to \left\{ A = g^a \bmod p \right\} \to Bob$.
\item[(2)] Боб генерирует $b$.
\item[] Боб вычисляет $s = A^b \bmod p$.
\item[] $Bob \to \left\{ B = g^b \mod p \right\} \to Bob$.
\item[(3)] Алиса вычисляет $s = B^a \bmod p$.
\end{enumerate}

Также условимся о правилах записи случая, когда активный криптоаналитик (Меллори) выдаёт себя за легального пользователя.

\[
\begin{array}{llllc}
(1) & A & \to M \left(B\right) & : & A = g^a \bmod p, \\
(2) & M \left(A\right) & \to B & : & A^* = g^{a^*} \bmod p, \\
(3) & B & \to M \left(A\right) & : & B = g^b \bmod p, \\
(4) & M \left(B\right) & \to A & : & B^* = g^{b^*} \bmod p. \\
\end{array}
\]

Либо, отводя отдельный столбец для каждого участника.
\[
\begin{array}{lllclllc}
(1) & A & \to & M \left(B\right) & {} & {} & : & A = g^a \bmod p, \\
(2) & {} & {} & M \left(A\right) & \to & B & : & A^* = g^{a^*} \bmod p, \\
(3) & {} & {} & M \left(A\right) & \gets & B & : & B = g^b \bmod p, \\
(4) & A & \gets & M \left(B\right) & {} & {} & : & B^* = g^{b^*} \bmod p. \\
\end{array}
\]

Для сокращения описания и упрощения сравнения разных протоколов используют следующие соглашения об обозначениях передаваемых данных.

\begin{itemize}
\item $M$ (от \langen{message}) -- сообщение в исходном виде, открытый текст вне зависимости от кодировки. То есть под $M$ может пониматься и исходный текст в виде текста или, например, звука, либо уже некоторое число или массив бит, однозначно соответствующие этому сообщению.
\item $K$ (от \langen{key}) -- некоторый ключ. Без дополнительных уточнений обычно обозначает секретный сеансовый ключ.
\item $K_A$ -- общий секретный ключ между Алисой и Трентом (для симметричных криптосистем).
\item $K_A$ -- открытый ключ Алисы (для асимметричных криптосистем).
\item $E_K \left( \dots \right)$ (от \langen{encrypt}) -- данные, зашифрованные на ключе $K$.
\item $S_K \left( \dots \right)$ (от \langen{sign}) -- данные \emph{и} соответствующая цифровая подпись на открытом ключе $K$.
\item $T_A$, $T_B$ (от \langen{timestamp}) -- метки времени от соответствующих участников.
\item $R_A$, $R_B$ (от \langen{random}) -- случайные числа, выбранные соответствующими участниками.
\end{itemize}
Loading

0 comments on commit 15d2c01

Please sign in to comment.