Zunächst einige grundlegende Mengen:
Die Grafik zeigt die Struktur des APA für das Needham-Schroeder Protokoll. Die Kreise entsprechen dabei den Zustandskomponenten, die Rechtecke repräsentieren elementare Automaten. Durch die Kanten ist angegeben, auf welche Zustandskomponenten der jeweilige elementare Automat Zugriff hat.
Der APA des Needham-Schroeder Protokolls enthält drei elementare Automaten , und . Diese Automaten sind über die Zustandskomponente miteinander verbunden. Zusätzlich besitzen , und noch jeweils vier weitere private Zustandskomponenten (d.h. auf die jeweils nur ein einziger Automat Zugriff hat) , , und , wobei ist.
Weiter muss die Menge der zugelassenen Nachrichten definiert werden. Die Vereinigung der Mengen , , und bildet die Menge der atomaren Nachrichten. Darauf aufbauend kann die Menge aller Nachrichten rekursiv definiert werden:
Zusätzlich werden noch die Standard-Funktionen und eingeführt, welche das k-te Element eines Tupels bzw. die Anzahl der Elemente des Tupels liefern. Für die Funktionen und werden die folgenden symbolischen Eigenschaften definiert:
Diese beiden Eigenschaften modellieren symmetrische Verschlüsselung. Für die Analyse wird in diesem Fall perfekte Verschlüsselung angenommen, d.h. Schlüssel können nicht erraten werden, für die Erzeugung von und müssen und bekannt sein und aus folgt, daß und sind. Für andere Analysen können diese Annahmen jedoch durchaus gelockert werden. So lässt sich beispielsweise durch die Annahme ein Blockchiffre modellieren.
Für die Schlüssel wird festgelegt, daß ist. Durch die obigen Eigenschaften wird auf natürliche Weise eine kürzeste Normalform für Nachrichten festgelegt, in denen keine sich gegenseitig aufhebenden - und -Funktionen mehr enthalten sind. Die Menge dieser kürzesten Normalformen wird mit bezeichnet. Die Elemente von bilden nun den Inhalt der Zustandskomponenten des APA. Eine Ausnahme bildet die Komponente , welche Elemente von enthält. Die symmetrischen Schlüssel eines Agenten werden als Tupel in die -Komponente eingetragen (wobei den symmetrischen Schlüssel und nicht das Element aus meint).
Der Nachrichtenaustausch zwischen den Agenten läuft über die Komponente . Um eine Nachricht an einen Agenten zu schicken, wird das Tupel der -Komponente hinzugefügt. Beim Empfangen der Nachricht wird das Tupel dann im dadurch ausgelösten Zustandsübergang des empfangenden Agenten aus gelöscht. Mit Ausnahme des Angreifers können Agenten nur an sich selbst gerichtete Nachrichten empfangen.
Jetzt muss noch für jede der Zustandskomponenten die zugehörige Zustandsmenge definiert werden. Jede dieser Zustandsmengen ist ein Multiset. Ein Multiset über einer Menge kann durch eine Funktion repräsentiert werden, wobei angibt wie oft das Element im Multiset f enthalten ist. Die Menge aller Multisets über einer Menge wird im folgenden als bezeichnet. Damit lassen sich die Zustandsmengen des APA definieren:
Als nächstes soll der Anfangszustand des APA spezifiziert werden. Er kann durch den Inhalt der Zustandskomponenten angegeben werden:
Im letzten Schritt der Spezifikation ist die Zustandsüberführungsfunktion für die einzelnen Agenten zu modellieren. Sie kann z.B. notiert werden, indem die Voraussetzungen für den Zustandsübergang eines Agenten und die damit verbundenen Aktionen aufgeschrieben werden. Als Beispiel nun nachfolgend der zu Schritt vier des Needham-Schroeder Protokolls gehörende Zustandsübergang. erhält hierbei die Nachricht und schickt daraufhin an .
Voraussetzung | |
---|---|
Nachricht an liegt in | |
kann auf das von gestartete | |
Protokoll reagieren | |
kennt Agent | |
kennt den Server | |
teilt einen symmetrischen Schlüssel | |
mit | |
nach Entschlüsselung von mit dem | |
Schlüssel ist die zweite | |
Komponente der Nachricht der Name | |
von | |
Aktionen von | |
die erste Komponente des Klartextes | |
von wird als gesichert | |
generiert eine neue Zufallszahl | |
entfernt die Nachricht aus | |
speichert als neuen | |
Sitzungsschlüssel | |
schickt die nächste Nachricht an | |
Die Spezifikation der anderen Schritte kann in [1] nachgelesen werden. Damit ist die Funktionalität des Protokolls vollständig modelliert. Durch diese Zustandsübergänge wird jedoch eigentlich beschrieben, was ein Agent in Rolle oder tun muss. Zu der formalen Beschreibung des Protokolls gehört also noch eine Festlegung, welche Kombination von Rollen verboten ist, und welche Rollen vom Angreifer übernommen werden können. Eine mögliche Festlegung für Needham-Schroeder wäre zu verbieten, daß ein Agent gleichzeitig zwei Rollen übernimmt ( und , und oder und ), und daß der Angreifer die Rolle von einnehmen kann. Für die obige Spezifikation des Anfangszustands bedeutet daher das Tupel in , daß alle Agenten kennt, die die Rolle übernehmen können. Im Unterschied dazu müssen bei Tupeln der Form in den -Komponenten nun die Platzhalter und durch einzelne Agenten ersetzt werden, da ein Agent nur seinen symmetrischen Schlüssel für die Kommunikation mit dem Server kennt (und nicht die aller Agenten, die die Rolle übernehmen können).
Die Sicherheit eines Protokolls kann nur relativ zu irgendwelchen Sicherheitsanforderungen bzw. Sicherheitszielen überprüft werden. Daher müssen die Sicherheitsziele mit spezifiziert werden. Sie werden in den -Komponenten der einzelnen Agenten vermerkt. So kann ein Agent nach jeder Aktion nach der aus seiner Sicht ein bestimmtes Sicherheitsziel erfüllt sein soll, ein entsprechendes Prädikat in seiner -Komponente vermerken. Damit ergibt sich dann eine Definition für die Sicherheit eines Protokolls.
Definition: Ein Protokoll heißt sicher, wenn jedes Prädikat welches in einer der -Komponenten steht wahr ist, solange es dort steht.
Ein Sicherheitsziel nach dem Empfang der letzten Nachricht des Needham-Schroeder Protokolls wäre, daß der Sitzungsschlüssel nun keinem Agenten außer und bekannt ist. In der Zustandsüberführungsfunktion drückt sich das wie folgt aus:
Aktionen von | |
---|---|
akzeptiert als | |
Sitzungsschlüssel | |