Alle nicht aufgeführten Zustandskomponenten sind zu Anfang leer. Es soll nun überprüft werden,
ob alle in den -Komponenten enthaltenen Prädikate wahr sind, solange sie dort enthalten sind.
Insbesondere also das von
nach dem letzten Schritt eingefügte Prädikat
(
).
Die Analyse ist eine Zustandsraumsuche auf den erreichbaren Zuständen, durchgeführt vom
SH Verification Tool. Wird ein Zustand gefunden in dem ein aktuelles Ziel-Prädikat verletzt ist,
kann mit demselben Tool der Weg der dahin führt ausgegeben werden. Eine Analyse auf dem
soeben definierten Analyse-APA liefert einen Zustand, welcher das angegebene Prädikat verletzt.
Nachfolgend nun der Weg zu diesem Zustand.
Zunächst gibt sich der Angreifer als aus und startet einen Protokoll-Lauf mit
.
Dazu generiert er eine Zufallszahl
und schickt die entsprechende Nachricht an den
.
Der Server generiert daraufhin einen neuen Sitzungsschlüssel und eine Nachricht,
welche er an
'zurück'schickt.
empfängt dann diese Nachricht, entschlüsselt sie
und stellt fest, daß die zweite Komponente dem Namen
entspricht. Außerdem kann
auf einen von
gestarteten Protokoll-Lauf reagieren. D.h.
interpretiert diese
Nachricht als dritte Nachricht eines von
gestarteten Protokoll-Laufs obwohl sie
als zweite Nachricht des Protokolls gedacht ist. Entsprechend des oben aufgeführten
Zustandsübergangs betrachtet
nun
(die erste Komponente dieser Nachricht) als
neuen Sitzungsschlüssel, generiert eine Zufallszahl
und schickt diese verschlüsselt
mit
an
.
Der Angreifer fängt die Nachricht ab, kann sie entschlüsseln (da er kennt), und schickt
die Antwort die
erwartet.
Schließlich erhält diese Nachricht, entschlüsselt sie und stellt fest, daß
sie den Klartext
enthält. Also betrachtet
von nun an
als
gültigen Sitzungsschlüssel für die Kommunikation mit
. Dadurch wird das Prädikat,
welches
im letzten Schritt in seine
-Komponente einfügt falsch, da es einen
Agenten gibt (nämlich
), welcher ebenfalls diesen Schlüssel kennt. Der Angreifer könnte sich
jetzt gegenüber
als
ausgeben.
Dieser Angriff wird als arity-attack bezeichnet (arity heißt Stelligkeit).
Er kann verhindert werden, indem beim Erhalt der dritten Nachricht des Protokolls
prüft, wieviele Komponenten die Nachricht enthält. Der Angriff ist ebenfalls unmöglich,
wenn die Agenten in der Lage sind zwischen Zufallszahlen und Schlüsseln zu unterscheiden.
In diesem Fall würde es genügen, wenn bei
im dritten Schritt die Voraussetzung
hinzugefügt wird.