-
Die
vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung
zum Auflösen
von Modellen und deren Verwendung bei der Erfassung von Angriffen
auf Datenverarbeitungssysteme.
-
Gesicherte
Datenverarbeitungssysteme können
Angriffen oder betrügerischen
Eingabeversuchen ausgesetzt sein. Im Allgemeinen wird versucht,
diese Angriffe zu parieren, indem Versuchs- oder Protokolldateien,
beispielsweise Systemprotokolldateien (System-Log) oder Netzprotokolldateien
(Netz-Log) eingerichtet werden und Filterungen an diesen Dateien
ausgeführt
werden, um einen Vorfall oder ein Eindringen zu erfassen. Systeme,
die eine Prüfung
der Protokolldateien vornehmen, stützen sich im Allgemeinen auf
ein kompliziertes Verfahren, das beim Schreiben Probleme stellt,
wobei die resultierende Prüfung
zudem schwer zu lesen ist. Das Dokument
FR 2 706 652 beschreibt einen Vorrichtungstyp,
der das Erfassen eines Eindringens nach einem komplexen Verfahren
ermöglicht.
Im Übrigen
kann es vorkommen, dass dann, wenn ein Eindringen in mehreren aufeinander
folgenden nicht zusammenhängenden
Schritten erfolgt, das System dieses nicht erfasst. Überdies
ist das Schreiben der Prüfbedingungen
wenig entgegenkommend, kaum modifizierbar und stellt Modularitätsprobleme.
So ist es bei den meisten Systemen, die mit Hilfe von Regeln arbeiten,
notwendig, die Prüfbedingungen
in Form von Programmen zu schreiben, die das Anstoßen von
bedingten Regeln durch Ereignisse beschreiben: Beispielsweise müssen, um
eine Prüfbedingung,
die einen Schritt A spezifiziert, dem einige Zeit später B folgt,
dem einige Zeit später
C folgt, zu beschreiben, Regeln zum Abwarten des Schritts A, die
im Erfolgsfall Regeln zum Abwarten des Schritts B auslösen müssen, die
Erfolgsfall Regeln zum Abwarten des Schritts C auslösen müssen, beschrieben
werden. Diese Art, die Folge A, B, C zu beschreiben, ist schwerfällig und
Ursache von Fehlern, die durch einfaches Lesen schwer zu erfassen
sind. Außerdem
erfordern bestimmte herkömmliche
Systeme ein mehrfaches Abtasten der Protokolldateien.
-
Ein
Ziel der Erfindung ist folglich, ein leistungsfähiges Verfahren zum Auflösen von
Spezifikationen vorzuschlagen.
-
Dieses
Ziel wird durch das leistungsfähige
Verfahren zum Auflösen
von Spezifikationen nach Anspruch 1 erreicht.
-
Ein
weiteres Ziel ist das Ermöglichen
einer großen
Flexibilität.
-
Dieses
Ziel wird durch das Verfahren nach Anspruch 2 erreicht.
-
Weiterbildungen
der Erfindung sind in den Ansprüchen
3 bis 6 beschrieben.
-
Ein
weiteres Ziel ist es, eine Vorrichtung vorzuschlagen, die das Ausführen des
Verfahrens ermöglicht. Dieses
Ziel wird durch die leistungsfähige
Vorrichtung zum Auflösen
einer Spezifikation nach Anspruch 7 erreicht.
-
Weitere
Merkmale und Vorteile der vorliegenden Erfindung werden deutlich
beim Lesen der folgenden Beschreibung, die mit Bezug auf die beigefügte Zeichnung
erstellt worden ist, worin:
-
1 eine
schematische Ansicht der Hardware- und Softwareelemente zeigt, die
das Ausführen
des Verfahrens ermöglichen;
-
2 den
Inhalt der Tabelle, Formel- oder Unterformelzähler, die in den negativen
Teilen der Klauseln vorhanden sind, und des Stapels sowie ihre Entwicklung
im Zuge der Ausführung
des Verfahrens zeigt.
-
1 zeigt
die Elemente, die zum Ausführen
des erfindungsgemäßen Verfahrens
erforderlich sind. Die Protokolldatei (1) ist im Allgemeinen
auf allen Maschinen vorhanden und kann die Netzprotokolldatei sein, wenn
die Maschine mit einem Netz verbunden ist, oder eine Systemprotokolldatei
oder irgendeine andere Datei, an der eine Spezifikation geprüft werden
soll, sein. Unter Maschine ist ein Rechner zu verstehen, der Speichermittel,
Mittel zum Lesen und Ausführen
eines Programms und interaktive Mittel für einen Benutzer (beispielsweise
einen Bildschirm, eine Tastatur, eine Maus) sowie Mittel zur Verbindung
mit dem Netz enthält.
Diese Datei kommuniziert mit einer Anpassungseinrichtung (2),
die eine Software ist, die das Übersetzen
der Informationen, die in der Protokolldatei enthalten und in der
für die
Maschine spezifischen Sprache ausgedrückt sind, in eine für einen
Interpretierer (3) verständliche höhere Sprache ermöglicht.
Der Interpretierer (3) empfängt außerdem von einem Modul (4)
die Formel der zu prüfenden
Spezifikation, die in einer zeitlichen Logik ausgedrückt ist.
Dieser Interpretierer (3) führt die Expansion der Formel
in Unterformeln und die Abtastung jeder Aufzeichnung Ei (Anhang
2) der Protokolldatei (1) aus, um mit Hilfe dieser Expansion
und dieser Abtastung eine resultierende Tabelle und einen resultierenden
Stapel zu erzeugen, der in einem Speicher (5) gespeicherte
Horn-Klauseln ausdrückt.
Der Begriff "Horn-Klausel" ist dem Fachmann
wohlbekannt und beispielsweise von Jean Goubault-Larrecq und Ian
Mackie in Proof Theory and Automated Deduction, herausgegeben von Kluwer,
1996, beschrieben worden. Diese Tabelle und dieser Stapel werden
durch einen Algorithmus (6) für die Verarbeitung von Klauseln
ausgewertet, der vom Interpretierer (3) einen Startbefehl
empfängt,
sobald der Letztere, nachdem alle Aufzeichnungen Ei der Datei durchlaufen
worden sind, die Tabelle, die eine Zählertabelle (7) sowie
einen Stapel (18) enthält,
gefüllt
hat. Dieser Algorithmus sucht die Auflösung der Spezifikation im Verhältnis zur
Menge der Aufzeichnungen. Bei der Erfassung der vollständigen Abtastung
der Aufzeichnungsdatei (1) ruft der Algorithmus für die Verarbeitung
von Klauseln entweder eine Aktion des Systems oder eine Aktion der
Maschine hervor.
-
Gemäß einer
Optimierung des erfindungsgemäßen Verfahrens
werden die Phase des Füllens
der Tabelle (6) und des Stapels (18) und die Phase
der Verarbeitung von Klauseln zusammenhängend ausgeführt, derart,
dass der Algorithmus für
die Verarbeitung von Klauseln die Ausgabedatei oder die Aktion des
Systems oder der Maschine so bald wie möglich und im Allgemeinen vor
der Erfassung der vollständigen
Abtastung der Aufzeichnungsdatei (1) erzeugen bzw. hervorrufen
kann.
-
Zum
besseren Verständnis
des ausgeführten
Verfahrens wird dieses anhand eines Beispiels erläutert, dessen
Formeln im Anhang am Ende der Beschreibung dargestellt sind. Zuallererst
ist eine Protokolldatei (Log) eine Folge von Aufzeichnungen E =
(E1, ..., EN) wie sie im Anhang 2 gezeigt ist. Jede Aufzeichnung Ei enthält eine
bestimmte Anzahl von Informationen wie etwa das Datum, die betreffende
Operation, die Maschine, ein Ergebnis, ein Subjekt, wobei diese
Liste nicht darauf beschränkt
ist.
-
So
signalisiert E1, dass irgendein Benutzer (ein Herr "Dingsda") versucht hat, sich
hinzuzuschalten, jedoch gescheitert ist.
-
Um
eine Spezifikation, die erfasst oder aufgelöst werden soll, wie etwa jene,
die im Anhang 1 gezeigt ist, zu formulieren, wird eine Spezifikationsformel
in einer zeitlichen Logik verwendet. Diese Formel ist gemäß der Formelerzeugung
nach der Grammatik im BNF-Format geschrieben, die dem Fachmann wohlbekannt
ist (Alfred V. Aho, Ravi Sethi und Jeffrey D. Ullman, Compiler:
Principles, Techniques and Tools, Addison-Wesley, 1986):
Formel
:: = Atom
|Formel ∧ Formel
|Formel ∨ Formel
|Formel
U Formel
|Formel W Formel
Atom :: = Record
|(Formel)
|¬ Atom
|O
Atom, die Folgezeile existiert und in der Folgezeile ist das Atom
wahr
|Õ Atom,
wenn die Folgezeile existiert, dann ist in der Folgezeile das Atom
wahr
|♢ Atom, es existiert eine Zeile, entweder die
aktuelle Zeile oder eine spätere
Zeile, in der das Atom wahr ist
|Atom, für alle Zeilen ausgehend von
der aktuellen Zeile ist das Atom wahr
-
Die
Operatoren zwischen Formeln sind der Operator «∧», um ein logisches «UND» auszudrücken, «∨», um ein
logisches «ODER» auszudrücken, «U», um die
Formel bis (until) auszudrücken, «W», um die
Formel in Erwartung von (Waiting-for) auszudrücken, «O», um die Formel in der Folgezeile,
die existiert, auszudrücken, «Õ», um die
Formel in der Folgezeile, falls sie existiert, auszudrücken, «♢», um die
Formel in der aktuellen Zeile oder in einer späteren Zeile auszudrücken, « », um die
Formel in der aktuellen Zeile oder in irgendeiner späteren Zeile
auszudrücken.
Diese Notation ist dem Fachmann wohlbekannt, siehe beispielsweise Zohar
Manna und Amir Pnueli, The Temporal Logik of Reactive and Concurrent
Systems Specification, Springer, 1992. So ermöglicht die zeitliche Formel
F = F1 W F2 eine einfache Formulierung einer zu prüfenden Spezifikation.
-
Es
sei angenommen, dass der Operator über eine Mensch-Maschine-Schnittstelle
(4), die die Erzeugung einer zeitlichen Formel wie etwa
jener, die im Anhang 1 dargestellt ist, ermöglicht, eingeführt wird.
-
Die
Schnittstelle (4) übersetzt
diese Formel aus dem Anhang 1 in eine zeitliche Formel, wobei F
und H atomare Formeln sind, in denen F {op = «connection», result = «failed», ...}
repräsentiert
und H {op = «connection», result
= «success», ...}
repräsentiert. Überdies
sei angenommen, dass die Protokolldatei (1) die im Anhang
2 dargestellten Aufzeichnungen E1 bis E3 enthält.
-
In
einer ersten Zeit nimmt der Interpretierer (3) die Expansion
der Formel für
jede Aufzeichnung E1, E2, E3 vor, wie im Anhang 6 gezeigt ist, indem
er für
jede Aufzeichnung Unterformeln erzeugt, um daraus Horn-Klauseln
abzuleiten, die die logischen Implikationen, die zwischen einer
Formel und ihren Unterformeln vorhanden sind, und die Möglichkeit,
die atomaren Formeln zu erfüllen,
protokollieren, wie im Anhang 6 gezeigt ist. So wird für die Aufzeichnung
E1 die Formel in die Unterformel F, der die Klausel (f2)
entspricht, in die Unterformel ♢H, der die Klausel (f2) ∧ (f3)→(f1) entspricht, usw. expandiert. Der Interpretierer
(3) um fasst ein Optimierungsverfahren, das das Beseitigen
der Redundanzen und der unnötigen
Schritte aus der Tabelle des Anhangs 6 ermöglicht, wobei der Interpretierer
nach der Optimierung lediglich Klauseln enthält, die entsprechend der Tabelle
des Anhangs 7 erzeugt worden sind. Zur Erleichterung des Verständnisses
der Tabelle des Anhangs 7 oder der Tabelle des Anhangs 6, die Notation ♢H
bedeutet: «es
existiert eine Zeile, entweder die aktuelle Zeile der Aufzeichnung
oder ein spätere
Zeile, wo die Formel H geprüft
wird»;
um zu prüfen,
ob F ∧ ♢H zur
Aufzeichnung E1 wahr ist, werden die Paare (Formel, Aufzeichnung),
die Konfigurationen genannt werden nummeriert; in dem Beispiel ist
das Paar (F ∧ ♢H,
E1) mit (1) nummeriert. Der Interpretierer (3)
expandiert die Formel F ∧ ♢H
zur Aufzeichnung E1 in die Formeln F und ♢H. Das Paar (F,
E1) wird mit f2 nummeriert, das Paar (♢H,
E1) wird mit f3 nummeriert, und der Interpretierer
erzeugt die Klausel (f2) ∧ (f3)→(f1), die ausdrückt, dass dann, wenn die Konfiguration
f2 und die Konfiguration f3 verifiziert
sind, auch die Konfiguration f1 verifiziert ist,
d. h. F zur Aufzeichnung E1 verifiziert ist. O(♢H) bedeutet: «die folgende
Aufzeichnungszeile existiert, und die folgende Zeile ♢H
ist wahr»,
was der Konfiguration f6 für die erste
Aufzeichnung entspricht. Die Formel H ∨ O(♢H) bedeutet «H ist wahr
oder die folgende Aufzeichnungszeile existiert und in der folgenden
Zeile existiert eine Zeile, entweder die aktuelle Zeile oder eine
spätere
Zeile, wo H wahr ist»,
was den Konfigurationen (f4) für die Aufzeichnung
E1, (f9) und (f14)
für die
Aufzeichnung E2 und (f19), (f23)
und (f28) für die Aufzeichnung E3 entspricht.
Die Menge der Horn-Klauseln, die in dem rechten Teil der Tabelle
im Anhang 7 dargestellt ist, ist in der Tabelle (5), im
Zähler
(7) und im Stapel (18), die in Fig. gezeigt sind,
in der folgenden Weise gespeichert. Die Spalten der Tabelle (5)
sind durch die Indizes (f2), (f3),
(f4), (f5), (f6), (f8), (f11), (f12) der Formeln,
die in dem negativen Teil der Klauseln auftreten, indexiert. Nur
die Indizes, die eine Schlussfolgerung implizieren, werden aufbewahrt.
Die Zeilen der Tabelle (5) sind durch die Indizes (f1), (f3), (f7) der Formeln, die in dem positiven Teil der
Klausel auftreten, indexiert. Der negative Teil der Klauseln ist
der Teil, der sich links von dem Implikationspfeil befindet und
der im Folgenden als implizierende Unterformel(n) bezeichnet wird.
Der positive Teil befindet sich rechts von dem Pfeil und wird als
implizierte Formel bezeichnet. Diese Darstellung ist nicht einschränkend, wobei
die Darstellung in Form einer Sparse-Matrix oder dünn besetzten
Matrix, bei der die Spalten mittels verketteter Listen repräsentiert
werden und die Zeilen implizit bleiben, bevorzugt wird. Zum besseren
Verständnis der
Erfindung wird diese jedoch mit Hilfe der Notationen von 2 erläutert. Zum
besseren Verständnis
der Notation der Tabelle 7, die Klausel (f2) ∧ (f3)→(f1) bedeutet, dass dann, wenn die Konfiguration
f2 verifiziert ist und die Konfiguration
f3 verifiziert ist, die Konfiguration f1 verf iziert ist. Die Klausel f7→f3 bedeutet, dass dann, wenn die Konfiguration
f7 verfiziert ist, auch die Konfiguration
f3 verifiziert ist. Im Verlauf der Expansion
der Formeln durch den Interpretierer (3), hat dieser im Übrigen die
positiven Klauseln, die den Formeln, die erfüllt werden können, entsprechen,
in einem Stapel (18) gespeichert. So sind am Ende der Expansion
die Formeln f2 und f8 in
dem Speicher (181 ), wie in 2 gezeigt
ist, wobei die Tabelle der Zähler
von negativen Zeichen der Klauseln der Tabelle aus Informationen
gebildet ist, die in dieser Figur durch das Bezugszeichen (71 ) dargestellt sind. In der Phase der
Auflösung
beginnt der Algorithmus für
die Verarbeitung von Klauseln (6), der durch den Interpretierer
gestartet wird, sobald dieser, nachdem er die Aufzeichnungszeilen
der Protokolldatei untersucht hat, die Tabellen (5, 7 und 18)
gefüllt
hat, den oberen Teil oder Kopf des Stapels (18) zu untersuchen
und daraus Informationen zu entnehmen, ob die Konfiguration f8, im vorliegenden Fall, erfüllt ist.
Der Algorithmus untersucht anschließend in der Tabelle (5)
die Klauseln, die diese Konfiguration in dem negativen Teil aufweisen,
im vorliegenden Fall die Konfiguration f7,
und leitet daraus den Zähler,
den er dekrementieren muss, ab. Der Zähler (72 )
repräsentiert
die Entwicklung in dem Zähler
(71 ), demjenigen Zähler, der
der in dem positiven Teil dargestellten Formel zugeordnet ist. Der
Algorithmus dekrementiert den betreffenden Zähler, im vorliegenden Fall
jenen der Konfiguration f7, und setzt den
Wert «7» der Konfiguration,
die wahr ist, oben in den Stapel, wie in dem Kästchen (182 )
gezeigt ist, das die Entwicklung des Stapels (18) repräsentiert,
wohin gegen die Spalte (72 ) die
Entwicklung des Zählers
repräsentiert.
Danach geht der Algorithmus für
die Auflösung
von Klauseln iterativ vor, indem er die Klauseln sucht, die die
Konfiguration f7 in dem negativen Teil aufweisen,
um daraus abzuleiten, dass die Konfiguration f3 wahr
ist, und dekrementiert den dieser Zeile von Konfigurationen entsprechenden
Zähler,
wie in der Spalte (73 ) gezeigt
ist. Der Algorithmus (6) fährt in dieser Weise fort, bis
der Stapel (18) leer ist oder bereits verarbeitete Konfigurationen
enthält,
wobei in dem Stapel (185 ) die einzige
Konfiguration f1, die die Spezifikation
verifiziert, erhalten wird.
-
Der
Expansionsalgorithmus vermeidet, identischen Konfigurationen, die
durch ihren Zeiger repräsentiert
sind, unnötig
zu entgegen, indem er eine Zerhackungstabelle einsetzt. Die Datenstruktur
einer Zerhackungstabelle und die zugeordneten Algorithmen sind dem
Fachmann wohlbekannt, siehe beispielsweise The Art of Computer Programming,
Bd. 3, Sorting and Searching, Addison-Wesley, zweite Ausgabe, 1998.
-
Im Übrigen können auch
mit der Expansion der Formeln verbundene Optimierungen ausgeführt werden,
um in dieser Weise mehrere Schritte zu vermeiden. So wird die Formel ♢F,
anstatt sie im Folgezustand in F ∨ O(♢F),
dann in F und O(♢F) und anschließend in ♢F zu expandieren,
im Folgezustand direkt in F und ♢F expandiert. Ebenso wird
dann, wenn eine Formel des Typs F ∧ G gegeben ist, wo entweder
F oder G im Istzustand falsch ausgewertet werden kann, die Expansion
der Formel gestoppt. Das durch die Erfindung entwickelte Verfahren
bietet einen Vorteil gegenüber
dem im Stand der Technik bekannten Verfahren, wo in einer ersten
Zeit eine Wahrheitstabelle für
jede atomare Formel wie etwa jene, die im Anhang 4 gezeigt ist,
erstellt wird und dann in einer zweiten Zeit anhand der Wahrheitstabelle
des Anhangs 4 die Wahrheitstabellen (Anhang 5) der nicht atomaren
Unterformeln erstellt werden. Die Überprüfung von Modellen erfolgt anschließend in
zwei Zeiten. Zuerst wird geprüft,
ob die atomaren Formeln wahr oder falsch sind, was für jede Formel
einen Durchlauf der Zustände
erzwingt, und dann in einer zweiten Zeit zum Ermitteln der Wahrheiten
der Unterformeln bei jeder atomaren Formel geschaut werden muss,
wie sie sich in jedem Zustand verhält, was darauf hinausläuft, die
Aufzeichnungen mehrfach zu durchlaufen. Dies läuft darauf hinaus, Schritte
rückwärts in der Protokolldatei
mit allen daraus folgenden Lese- und Positionierungsoperationen
auszuführen,
was unter der Voraussetzung des großen Umfangs einer Protokolldatei
sehr zeitaufwändig
sein kann. Das durch die Erfindung entwickelte Verfahren ist viel
leistungsfähiger
und auch im Umfang und Speicherplatz zum Speichern der Zwischenzustände viel
sparsamer.
-
Um
ein besseres Verständnis
des Algorithmus zu ermöglichen,
wird es kurz beschrieben und danach in formaler Weise dargestellt.
-
FS, die Spezifikationsdatei, wird als endliche
Folge von Formeln FS betrachtet, deren Syntax
und Semantik oben definiert worden sind. Mit F sei die Menge aller
Formeln, deren Syntax und Semantik oben definiert worden sind, bezeichnet,
mit (R1, ..., R|N|)
(wobei N gleich der Anzahl von Aufzeichnungen in der Datei ist) die
LogsA-Datei. Die Logs-Dateien sind Protokolldateien
von allem, was sich in einem System ereignet, (beispielsweise eine
Datei, die die Zuschaltungen und die Abschaltungen der Benutzer
zu bzw. von den Maschinen schildert). Eine Aufzeichnung (record)
ist eine endliche Domänen-
und Co-Domänenfunktion
R von Σ*
nach Σ*, wo
die Menge der Zeichenketten
R: Σ*→Σ*.
-
Die
Domäne
von R und die CO-Domäne
von R seien mit dom(R) bzw. mit co-dom(R) bezeichnet.
-
Beispiel
1 (record), es sei die Aufzeichnung R einer Logs-Datei betrachtet:
Datum
= 27:02:2000, Operation = Verbindung, Maschine = Schmetterling,
Ergebnis
= Erfolg, Subjekt = Dingsda
es ergibt sich dann:
dom(R)
= {Datum, Operation, Maschine, Ergebnis, Subjekt]}, wobei dom(R)
die Domäne
ist und codom die Co-Domäne
ist
codom(R) = {27:02:2000, Verbindung, Schmetterling, Erfolg,
Dingsda} und
R: Σ*→Σ*
Datum→ 27:02:2000
Operation→ Erfolg
Maschine→ Schmetterling
Ergebnis→ Erfolg
Subjekt→ Dingsda
-
Eine
Logs-Datei ist folglich eine (endliche) Folge von Aufzeichnungen
R1, ..., R|N|.
-
Es
seien «Current» und «Next» Mengen
von Formeldarstellungen (im Zuge der Beschreibung wird für "Formeldarstellung" "Formel" gesagt); Current ist die Menge von
im Istzustand zu untersuchender Formeln, während Next die Menge von Formeln
ist, die im Folgezustand untersucht werden müssen.
-
In
jedem Zustand ist die Menge «Current» die Vereinigung
der Menge «Next» mit den
dem Istzustand zugeordneten Formeln FS.
Dies ist das, was der Schritt 2 des Algorithmus aussagt.
-
Der
Istzustand ist durch die ganze Zahl i, 1 ≤ i ≤ |N| repräsentiert.
-
Die
Protokolldatei «logs» wird in
einem Stück
durchlaufen, wobei während
dieses Durchlaufs bei jedem Zustand, d. h. bei jeder Aufzeichnung
(record) der Datei, geschaut wird, welches die Formeln der Menge Current
sind, die geprüft
sind, wobei jene, die Zukunftsoperatoren enthalten, der Menge «Next» hinzugefügt werden,
um sie im Folgezustand untersuchen zu können. Dies bildet die Pro zedur «Expand» im Schritt
3) des Algorithmus. Diese Prozedur extrahiert rekursiv die Unterformeln
aus jeder Formel, speichert ihre logischen Implikationen, die sie
betreffen, in Form von Horn-Klauseln in einer Matrix M (beispielsweise
werden für
eine Formel F = F1 ∨ F2 die
Klauseln F1→F und F2→F erhalten),
wobei jene, die atomar sind, falls sie im Istzustand verifiziert
worden sind (was die Prozedur «match» versucht,
die in «Expand» auftritt),
in einem Stapel (Stack), der ein Speicher für Formeldarstellungen ist,
gespeichert werden. Sobald alle Formeln im Istzustand expandiert
worden sind, wird das, was möglich
ist, mit Hilfe der Matrix und des Stapels aufgelöst (was die Prozedur «resolve_matrix» im Schritt
4) des Algorithmus bildet). Somit sind dank der atomaren Formeln,
die solche waren, und der Klauseln letztendlich alle Formeln, die
verifiziert worden sind, in der Datei «ResForm» (die eine Menge von Formeldarstellungen
ist) gespeichert.
-
Diese
Schritte werden bis zum Ende der «logs»-Datei iteriert (dies geschieht
im Schritt 4) des Algorithmus). Außerdem vergleicht die Prozedur «Satis» des Schritts
5), nachdem die gesamte «logs»-Datei
durchlaufen ist, die Formeln der Datei ResForm, die alle in einem
bestimmten Zustand verifizierte Formeln, jedoch Unterformeln von
Formeln der Spezifikationsdatei sind, mit den Formeln der Spezifikationsdatei,
um benennen zu können,
welche und in welchem Zustand (welchen Zuständen) verifiziert sind.
-
Der
eigentliche Algorithmus lautet:
- 1) i = Ø;
Current
:= Ø;
Next
:= Ø;
ResForm
:= Ø;
Stack
:= Stapel_leer;
M = ();
- 2) Current := {Repr(F, i)/F ∊ FS}
U Next;
wobei Repr(F, i) eine gespeicherte Darstellung von
F im Zustand i ist
Next := Ø;
- 3) solange Current ≠ Ø, führe aus:
dann
ist f ∊ Current;
Current := Current\{f};
Expand(f);
- 4) resolve_matrix;
wenn i < |N|
dann i := i + 1;
gehe
nach 2);
andernfalls gehe nach 5);
- 5) Satis;
-
Nun
werden die in dem Algorithmus verwendeten verschiedenen Prozeduren
beschrieben:
Prozedur «Expand(f)», wobei
feine Formeldarstellung ist.
-
Zugunsten
von mehr Klarheit wird diese Prozedur mittels einer Tabelle dargestellt,
deren Bedeutung nun erläutert
wird:
- – die
Spalte "Formel" ist genau: form
(f), d. h. die durch f repräsentierte
Formel,
- – die
Spalte "Current" (bzw. "Next") bezeichnet alle
Formeldarstellungen, die der Menge "Current" (bzw. "Next")
hinzugefügt
werden,
- – die
Spalte "Klausel" bezeichnet die Klauseln,
die in der Matrix mit der weiter unten beschriebenen Prozedur Klausel_einfügen gespeichert
werden,
- – die
der Menge "Current" hinzugefügten Formeldarstellungen
werden ihrerseits rekursiv expandiert,
- – die
atomaren Formeln und die Formeln der Form ¬F1,
wobei F1 eine atomare Formel ist, werden
separat bearbeitet: Wenn die atomare Formel einer aktuellen Aufzeichnung
entspricht (match irecord) (die Prozedur «match» wird weiter unten definiert),
dann wird diese Formel im Zustand i geprüft; wenn die atomare Formel F1 nicht mit dem aktuellen Record übereinstimmt,
dann wird ¬F1 im Zustand i geprüft. Formaler:
- – Wenn
form(f) eine atomare Formel ist,
wenn match(f) = TRUE
dann
Stack = Fülle(Stack,
f);
- – Wenn
form(f) die Form ¬F1 besitzt, wobei F1 eine
atomare Formel ist,
dann ist f1 = Repr(F1, i);
wenn match(f1)
= FALSE,
dann Stack = Fülle(Stack,
f);
- (*):
andernfalls, d. h. wenn i = |N|,
- f1 = Repr(F1,
i)
- Stack = Fülle(Stack,
f1);
-
Prozedur «match(f)», wobei
feine Formeldarstellung ist.
Fall form (f):
- – wenn diese
die Form {id1 = t1,
..., idn = tn, ...}
besitzt, dann:
- – wenn ∀j, 1 ≤ j ≤ n, idj ∊ Dom (Ri)
und match-term (Ri(idj),
tj, f),
- – dann
TRUE
- – andernfalls
FALSE
- – wenn
diese die Form {id1 = t1,
..., idn = tn} besitzt,
dann:
- – wenn
n = |dom(Ri)| und j, 1 ≤ j ≤ n, idj ∊ Dom
(Ri) und match-term (Ri(idj), ti, f),
- – dann
TRUE
- – andernfalls
FALSE
-
Prozedur «match-term(f)» (w, t,
f), wobei w, t ∊ Σ*
U ν und
wobei f eine Formeldarstellung ist:
Fall t:
- – wenn t
ein regex ist:
- – wenn
Reg (w, t)
- – dann
TRUE
- – andernfalls
FALSE
- – wenn
t eine Variable x ist:
Notation: ρ(x) ist eine partielle Funktion
der Menge der Variablen ν zur
Menge der Zeichenketten Σ* - – wenn ρ(x) definiert
ist
- – wenn ρ(x) = w
- – dann
TRUE
- – andernfalls
FALSE
- – wenn ρ(x) nicht
definiert ist, dann
Notation: E ist die Umgebung, die durch
diejenigen Paare gebildet ist, deren erste Komponenten in die Menge von
Variablen aufgenommen ist und deren zweite Komponente in die Menge
der Zeichenketten aufgenommen ist - – –E := EU{(x,
w)};
- – TRUE;
-
Prozedur
Klausel-(H)_einsetzen, wobei H eine Horn-Klausel mit einer oder
zwei Formeldarstellungen im negativen Teil ist:
Notation: Wenn
M eine m × n-Matrix
ist, n ∊ N, sei das Element der i-ten durch f indexierten
Zeile mit mi,f bezeichnet und in vergleichbarer
Weise mf,i und mf1,f2.
-
Fall
H:
- – wenn
H die Form f1→f besitzt, dann
- – wenn
bereits eine durch f1 angegebene Spalte
von M existiert
- – dann
wird eine durch f indexierte Zeile mit mf,f1 =
1 hinzugefügt;
- – andernfalls
wird eine durch f indexierte Spalte und eine durch f1 indexierte
Zeile mit mf,f1 = 1 hinzugefügt;
- – wenn
H die f1 ∧ f2 besitzt, dann
- – wenn
weder f1 noch f2 Index
einer Spalte von M sind
- – dann
werden 2 durch f1 und f2 indexierte
Spalten und eine durch f indexierte Zeile mit mf,f1 =
mf,f2 = 2 hinzugefügt
- – wenn
nur eine der fi, i = 1, 2, kein Index einer
Spalte von m ist, dann:
- – wird
eine durch fi indexierte Spalte und eine
durch f indexierte Zeile mit mf,fi = mf,fj = 2 hinzugefügt, wobei j ∊ {1,
2}\{i}
- – wenn
f1 und f2 Indizes
von Spalten von M sind, dann:
- – wird
eine durch f indexierte Zeile mit mf,f1 =
mf,f2 = 2 hinzugefügt
-
Prozedur resolve-matrix
-
- – wenn
Stack = Stapel-leer, dann geschieht nichts:
- – andernfalls
ist f := Leere(Stack); ∀i derart, dass mi,f das
Element ist, das vorhanden ist, führe aus:
- – mi,f = mi,f – 1;
- – ∀i derart, dass mi,j vorhanden
ist, führe
aus: mi,j = mi,j – 1
- – wenn
mi,j = 0, dann;
- – ist
f1 der Index der Zeile mi,j
- – wenn
f1 Res-form,
dann:
- – Stack
:= Fülle
(Stack, f1)
- – Res-form
:= Res-Form U {f1}
- – unterdr
(mi,f);
- – wenn
i-te Zeile, dann unterdrücke
diese, wenn die durch f indizierte Spalte leer ist, dann unterdrücke diese
-
Satis:
-
Solange
Stack ≠ Stapel-leer,
führe aus:
- – es
sei f1 = Leere (Stack);
wenn f1 ∊ FS,
dann wird form (f) im Zustand (f) geprüft
-
Somit
ist das leistungsfähige
Verfahren zum Auflösen
von Spezifikationen dadurch gekennzeichnet, dass es umfasst:
- a) einen Schritt des Formulierens von Prüfbedingungen,
die mit Hilfe von Spezifikationsformeln erfasst werden sollen und
die Angriffsschemata oder Schemata für ein betrügerisches Eindringen oder auch
Anomalien angeben, ohne darauf beschränkt zu sein, die durch die
Untersuchung von Aufzeichnungen der Versuchsdatei des Datenverarbeitungssystem
verifiziert werden sollen;
- b) einen Schritt der Expansion von Formeln in Unterformeln durch
einen Algorithmus;
- c) einen Schritt des Abtastens durch einen Interpretierer, der
darin besteht, für
jede expandierte Formel bei jeder Aufzeichnung zu zerlegende Horn-Klauseln
zu erzeugen, um festzustellen, ob die Formel bei dieser Aufzeichnung
gültig
ist oder nicht, wobei die Horn-Klauseln die auflösenden Implikationen der Unterformeln für jede abgetastete
Aufzeichnung als positive Klauseln, d. h. als Klauseln, die nur
ein positives Zeichen enthalten, und als nicht positive Klauseln,
d. h. als Klauseln, die wenigstens ein negatives Zeichen enthalten,
ausdrücken,
wobei diese negative Zeichen den negativen Teil der Klausel bilden;
- d) einen Schritt des Speicherns der positiven Horn-Klauseln
in einem Stapel von bearbeiteten Unterformeln und einen Schritt
des Speicherns in einer Tabelle, die eine Darstellung der implizierenden
Unterformel(n) enthält,
die den negativen Teil der Klausel bilden, und der Verbindung mit
der bzw. den implizierenden Unterformel(n), die den positiven Teil
der Klausel bildet bzw. bilden, und des Speicherns in einem Zähler der Anzahl
von Formeln oder Unterformeln, die in dem negativen Teil der Klausel
für jede
implizierte Unterformel vorhanden sind;
- e) einen Schritt des Auflösens
der Tabelle ausgehend von jeder angetroffenen positiven Klausel,
um entweder eine Ausgabedatei zu erzeugen oder eine Aktion des Datenverarbeitungssystems
hervorzurufen;
- f) einen Schritt der Iteration der Schritte b) bis e), bis alle
Aufzeichnungen der Versuchsdatei vollständig durchlaufen sind.
-
Außerdem ist
das Verfahren dadurch gekennzeichnet, dass für die Formulierung der Spezifikation
eine zeitliche Logik verwendet wird.
-
Gemäß einem
weiteren Merkmal ist die Tabelle matrixförmig und in Spalten durch die
Indizes von Formeln indexiert, die in dem negativen Teil der Horn-Klauseln auftreten,
während
die Zeilen exakt die Horn-Klauseln sind.
-
Gemäß einem
weiteren Merkmal ist die Tabelle in Form einer Sparse-Matrix oder
dünn besetzten
Matrix gegeben, wobei vorzugsweise die Spalten mittels verketteter
Listen repräsentiert
werden und die Zeilen implizit bleiben.
-
Gemäß einem
weiteren Merkmal wird ein Schritt der Optimierung der Expansion
der Formeln durch eine Zerhackungstabelle mit dem Ziel erhalten,
sicherzustellen, dass dieselbe Formel bei jeder Aufzeichnung nicht
mehr als einmal expandiert wird.
-
Gemäß einem
weiteren Merkmal wird die Versuchsdatei von Anfang bis Ende nur
ein einziges Mal durchlaufen.
-
Außerdem ist
das Datenverarbeitungssystem, das Speichermittel und Mittel zum
Ausführen
von Programmen umfasst, die die Ausführung des Verfahrens ermöglichen,
dadurch gekennzeichnet, dass das System umfasst:
- – ein Anpassungsmittel,
das ermöglicht,
die Informationen der Versuchsdatei, die in der spezifischen Sprache
der Maschine formuliert sind, in eine für ein Interpretierermittel
verständliche
Sprache zu übersetzen;
- – das
Interpretierermittel, das die Informationen von dem Anpassungsmittel
empfängt
und die Formulierung der Spezifikation in der zeitlichen Logik als
eine Spezifikationsformel empfängt,
um diese Formel zu expandieren und um die Tabelle und den Stapel
von bearbeiteten Unterformeln zu füllen, die in einem Speicher des
Datenverarbeitungssystems gespeichert sind, und das die Abtastung
der Versuchsdatei des Datenverarbeitungssystems zur Folge hat;
- – einen
Algorithmus für
die Verarbeitung von Klauseln, der von dem Datenverarbeitungssystem
ausgeführt wird
und ermöglicht,
die Horn-Klauseln unter Verwendung der Informationen der Tabelle
und des Stapels bearbeiteter Unterformeln zu zerlegen, wobei dieser
Algorithmus für
die Verarbeitung von Klauseln eine Ausgabedatei erzeugt oder eine
Aktion hervorruft.
-
Fachleuten
auf dem Gebiet ist klar, dass die vorliegende Erfindung Ausführungsformen
unter den zahlreichen weiteren spezifischen Formen ermöglicht,
ohne den Anwendungsbereich der Erfindung, wie er beansprucht ist,
zu verlassen. Folglich müssen
die vorliegenden Ausführungsformen
als veranschaulichend betrachtet werden, wobei diese jedoch in dem
durch den Umfang der beigefügten
Ansprüche
definierten Bereich modifiziert werden können.
-
ANHANG
-
Anhang 1
-
- {op = «connection», result
= «failed», ...}
- und später
{op = «connection», result
= «success», ...}
-
Anhang 2
-
- E1: {op = «connection», result
= «failed«, subject
= «Dingsda»}
- E2: {op = «connection», result
= «success», subject
= «Dingsda», Datum
= 14:09:99»}
- E3: {op = «exec», result
= «success», object
= «emacs», Modus
= «tex», subject
= «Dingsda»}
-
Anhang 3
-
F ∧ ♢H,
wobei F und H atomare Formeln der Ereigniserfassung sind, die in
zeitlicher Logik ausgehend von atomaren Formeln ausgedrückt ist.
E1:
{F}
E2: {H}
E3: {G} Anhang
4
Wahrheitstabellen der atomaren Formeln Anhang
5
Wahrheitstabellen der nicht atomaren Formeln
-
-
-