% Dieses Dokument ist in der Zusammenarbeit von angehenden und
% ausgebildeten Informatiklehrkräften entstanden.
% Der Herausgeber dieses Dokuments ist die Fachgruppe Informatische
% Bildung in NRW der Gesellschaft für Informatik.
%
% Das Dokument steht unter der Lizenz: Creative Commons by-nc-sa Version 4.0
% https://creativecommons.org/licenses/by-nc-sa/4.0/deed.de
%
% Nach dieser Lizenz darf das Dokument beliebig kopiert und bearbeitet werden,
% sofern das Folgeprodukt wiederum unter gleichen Lizenzbedingungen vertrieben
% und auf die ursprünglichen Urheber verwiesen wird.
% Eine kommerzielle Nutzung ist ausdrücklich ausgeschlossen.
%
% Die Namensnennung durch einen Verweis und die Lizenzangabe der ursprünglichen
% Urheber auf den Materialien für Schülerinnen und Schüler ist erforderlich.
%
% Die Sammlung der Dokumente steht unter
% https://matsam.fg-ibn.gi.de
% zur Verfügung.
%
% Das LaTeX-Paket zum Setzen der Dokumente der Sammlung steht
% unter https://www.ctan.org/pkg/schule
% zur Verfügung.

% a quick and dirty -- tikz implementation of
% http://upload.wikimedia.org/wikipedia/commons/1/13/Diffie-Hellman-Schlüsselaustausch.svg
%
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}

\tikzstyle{person}=[draw, fill=yellow!70, text width=8em, text centered, minimum height=8.5em, rounded corners, drop shadow]
\tikzstyle{uebergabe} = [text centered, text width=4em, fill=green!50, minimum height=2em, drop shadow]

\def\blockdist{2.3}
\def\edgedist{1.5}

\begin{tikzpicture}
    \node [above] (gpA) [uebergabe]  {$g, p, A$};
    \path (gpA.east)+(-0.83,-1.332) node (B) [uebergabe]  {$B$};
    \path (gpA.west)+(-2.3,-0.62) node (alice)[person] {\textbf{$\underbar{a}, g, p$\\~\\$A=g^{\underbar{a}}~mod~p$\\~\\$\underbar{K}=B^{\underbar{a}}~mod~p$}};
    \path (gpA.east)+(\blockdist,-0.62) node (bob) [person] {\textbf{$\underbar{b}$\\~\\$B=g^{\underbar{b}}~mod~p$\\~\\$\underbar{K}=A^{\underbar{b}}~mod~p$}};

    \path [draw, ->] (alice.22) -- node [above] {} (gpA.180);
    \path [draw, ->] (gpA.east) -- node [above] {} (bob.158);

    \path [draw, ->] (bob.205) [below] -- node {} (B.east);
    \path [draw, ->] (B.west) -- node  {} (alice.335)[below];

    \path (alice.north)+(0,0.2)  node (Alice) {Alice};
    \path (bob.north)+(0,0.2)  node (Bob) {Bob};

    \begin{pgfonlayer}{background}
        \path (alice.west  |- Alice.north)+(-0.5,0.2) node (a) {};
        \path (gpA.south  -| gpA.east)+(+0.5,-0.4) node (b) {};
        \path (bob.east    |- alice.east)+(+0.5,-2) node (c) {};

        \path[fill=blue!15,rounded corners, draw=black!50, dashed] (a) rectangle (c);
        \path (alice.north west)+(-0.2,0.2) node (a) {};
    \end{pgfonlayer}

\end{tikzpicture}

