% File              : template.tex
% Version           : $Revision: 1.2 $
% Last-modified     : $Date: 2005/01/04 11:38:53 $
% Last-modifier     : FJ

\documentclass{splib}

\begin{document}
% main environment
\begin{protocol}%
% name
{Shamir-Rivest-Adleman Three Pass Protocol}%
% authors
{A. Shamir, R. Rivest, L. Adleman}%
% date of the first publication
{}%
% editor name
{}%
% date of submission
{}%
% date of last change, empty or = date of submission
{}

\begin{abstract}
The following protocol, described in~\cite{ClarkJacob97}, allows two principals
to exchange a secret message without sharing any initial secret.


\end{abstract}


\begin{core}
\begin{declarations}
\dcl{A, B}{principal}
\dcl{Ka, Kb}{symkey}
\dcl{M}{fresh number}

\end{declarations}

\begin{messages}
\msg{1} {A}{B}{\crypt{M}{Ka}}
\msg{2} {B}{A}{\crypt{\crypt{M}{Ka}}{Kb}}
\msg{3} {A}{B}{\crypt{M}{Kb}}
\end{messages}
\end{core}

\begin{explanation}
This protocol assumes that encryption is commutative, \textit{i.e.}
\[
 \crypt{\crypt{x}{y}}{z} = \crypt{\crypt{x}{z}}{y}.
\]

The initiator \code{A} encrypts his message \code{M} by his secret key \code{Ka},
then \code{B} encrypts the message he received by his secret key \code{Kb}.
Since \crypt{\crypt{M}{Ka}}{Kb} = \crypt{\crypt{M}{Kb}}{Ka}, the agent \code{A} can decr
ypt it and
send \crypt{M}{Kb} to \code{B}. Then, using \code{Kb}, \code{B} can retrieve \code{M}.
\end{explanation}




\end{protocol}
\end{document}

