% File              : diffieHelman.tex
% Version           : $Revision: 1.1 $
% Last-modified     : $Date: 2005/01/04 11:45:32 $
% Last-modifier     : FJ

\documentclass{splib}

\begin{document}
% main environment
\begin{protocol}%
% name
{Diffie Helman}%
% authors
{W. Diffie and M. Helman}%
% date of the first publication
{1978}%
% editor name
{}%
% date of submission
{}%
% date of last change, empty or = date of submission
{11/11/2002}

\begin{abstract}
The Diffie Helman key exchange algorithm.
\end{abstract}

\begin{core}
\begin{declarations}
\dcl{A, B}{principal}
\dcl{P, G, Xa, Xb}{number}
\dcl{one}{ -> number}
\dcl{kap}{number, number, number -> number}
\end{declarations}

\begin{messages}
\msg{1}{A}{B}{P, G}
\msg{2}{A}{B}{kap(P, G, Xa)}
\msg{3}{B}{A}{kap(P, G, Xb)}
\msg{4}{A}{B}{\crypt{one()}{kap(P, kap(P, G, Xb), Xa)}}
\end{messages}
\end{core}

\begin{explanation}
The function \code{kap} must satisfy:
\begin{quote}
\code{kap(P, kap(P, G, Y), X)} = \code{kap(P, kap(P, G, X), Y)}
\end{quote}

It is implemented by:
\code{kap(P, X, Y) = exp(X, Y) mod P}.

It the protocol, \code{P} is choosen to be 
a prime number \code{P} and \code{G < P}.

The fresh symmetric key exchanged is 
\code{kap(P,kap(P,G,Xb),Xa)} = 
\code{kap(P,kap(P,G,Xa),Xb)}. 
\end{explanation}

\begin{property}
The protocol must guaranty the secrecy of the fresh key.

The protocol must guaranty the authenticity of the participants.
\end{property}

\begin{references}
\cite{DiffieHelman76}
\end{references}

\begin{proofs}
\cite{blanchet01}
\end{proofs}

\begin{attacks}
The authenticity is not guaranteed by the protocol.
\begin{messages}
\msg{1}{I(A)}{B}{P, G}
\msg{2}{I(A)}{B}{kap(P, G, Xi)}
\msg{3}{B}{I(A)}{kap(P, G, Xb)}
\msg{4}{I(A)}{B}{\crypt{one()}{kap(P, kap(P, G, Xb), Xi)}}
\end{messages}
or
\begin{messages}
\msg{1}{A}{I(B)}{P, G}
\msg{2}{A}{I(B)}{kap(P, G, Xa)}
\msg{3}{I(B)}{A}{kap(P, G, Xi)}
\msg{4}{A}{I(B)}{\crypt{one()}{kap(P, kap(P, G, Xi), Xa)}}
\end{messages}
\end{attacks}

\end{protocol}
\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
