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 ![]() ![]() ![]() |
![]() |
![]() ![]() |
Protokoll reagieren | |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]() |
mit ![]() |
|
![]() |
nach Entschlüsselung von ![]() |
Schlüssel ![]() |
|
Komponente der Nachricht der Name | |
von ![]() |
|
Aktionen von ![]() |
|
![]() |
die erste Komponente des Klartextes |
von ![]() ![]() |
|
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Sitzungsschlüssel | |
![]() |
![]() ![]() |
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 ![]() |
|
---|---|
![]() |
![]() ![]() |
Sitzungsschlüssel | |
![]() |
|