Datenfluß- Analysator und Verfahren zur Analyse von Programmen
Technisches Gebiet
Die Erfindung betrifft einen Datenfluß- Analysator enthaltend
(a) Detektormittel zum Detektieren eines in einer Leitung vorliegenden Signals,
(b) Speichermittel zum Speichern des Signals, und
(c) Auswertemittel zum Auswerten des Signals
(d) Mittel zur simultanen Darstellung von Zugriffshäufigkeiten.
Die Auswertung des Signals umfasst dabei insbesondere die Feststellung, ob ein Datenbit mit dem Wert 0 oder 1 vorliegt.
Die Erfindung betrifft weiterhin ein Verfahren zur Analyse von Programmen.
Stand der Technik
Computerprogramme werden von einem Mikroprozessor ausgeführt. Der Mikroprozessor greift über einen Adress- und einen Datenbus auf einen Programm-Speicher und einen Datenspeicher zu und arbeitet die Befehlsfolge des Programms ab. Dabei wird der Inhalt einer Speicheradresse ausgelesen oder ein Inhalt in eine Speicheradresse zurückgeschrieben.
Bei der Abarbeitung eines Programms treten oft Fehler auf, die zum Beispiel in falschen Datenwerten oder Operationen resultieren. Es können aber auch nicht-erfüllbare Bedingungen eintreten, die in einer Endlosschleife enden. Es ist weiterhin möglich, daß der Programmablauf durch einen Zugriff von außen, z.B. über das Internet gestört wird oder Daten von außen abgefragt werden.
Um Programmierfehler zu finden und entsprechend korrigieren zu können wird das Programm Schritt für Schritt abgearbeitet. Jeder Schritt und die jeweils aktuellen Werte der Variablen werden beobachtet bis der Fehler gefunden ist. Bei längeren Programmen ist dies aufwendig.
Ein - möglicherweise nichtautorisierter - Zugriff von außen wird üblicherweise mittels geeigneter Software, oder einem weiteren, zwischengeschalteten Rechner abgewehrt. Die Software muß regelmäßig erneuert werden und ein zwischengeschalteter Rechner kann ebenfalls nur dann einen Zugriff abwehren, wenn er nicht autorisiert ist.
Bei der Intrusion Detection (ID) werden nichtautorisierte Zugriffe (Angriffe) auf einen Rechner oder ein Rechnersystem erkannt. Die Angriffe können von außen, z. B. dem Internet, kommen oder von innerhalb eines Netzes, bei dem ein Anwender einen Zugriff auf Daten versucht, zu dem er nicht berechtigt ist. Bei diesen Angriffen wird versucht, die bestehenden Sicherungssysteme zu umgehen oder - wenigstens zeitweise - auszuschalten.
Die bekanntesten Sicherungen sind die Vergabe von Passwörtern an die Anwender und/oder die Verschlüsselung der Daten bei Transfer und Speicherung. Da die Daten aber spätestens dann entschlüsselt werden, wenn ein autorisierter Anwender darauf zugreift, gibt es immer wenigstens einen Zeitpunkt, zu dem die Daten auf irgendeinem Rechner eines Systems in unverschlüsseltem Zustand vorliegen. Ein Angreifer wird also bemüht sein, entweder die sensiblen Daten selbst oder das Passwort zu erhalten, mit dem er die sensiblen Daten entschlüsseln kann.
Bekannte ID-Systeme beobachten die Logbücher eines Rechner-Systems und melden ungewöhnliche Ereignisse. Solche Ereignisse sind z. B. eine besonders hohe Anzahl bestimmter Fehlermeldungen wie "access denied" oder eine besonders häufige Eingabe falscher Passwörter. Die Logbücher werden aber nur in Abständen überprüft, so daß zwischen zwei Überprüfungen die Möglichkeit besteht, einen Angriff auf ein Rechnersystem vorzunehmen und die entsprechenden Einträge im Logbuch zu löschen. Bei der darauffolgenden Überprüfung wird das softwaregesteuerte ID-System keine relevanten Vorkommnisse feststellen.
Es ist wünschenswert, die über den Bus laufenden Daten zu beobachten und dabei Programmfehler oder andere Störungen zu ermitteln.
Die Beobachtung der Signale an einer Datenleitung erfolgt üblicherweise mittels eines Logikanalysators. Dabei wird das Signal Punkt für Punkt abgetastet und auf einer
Anzeige dargestellt. Je nach Abtastrate wird hier ein sehr schneller Speicher (RAM) benötigt. Da eine große Anzahl an Punkten pro Signal verwendet wird, kann der Signalverlauf auch bei großer Speicherkapazität nur für eine geringe Zeit abgetastet werden.
Aus der EP 0 244 926 ist ein Logikanalysator bekannt, mit dem über einen Bus laufende Daten gespeichert und dekodiert werden können. Der Logikanalyser entschlüsselt die Befehle, die von einem Prozessor ausgeführt werden und bestimmt die Datenwerte, die von dem Bus übertragen werden. Der beschriebene Logikanalysator speichert die Befehle, Register- und Stapelinformationen in einer Datei und zeigt vom Anwender ausgewählte Informationsteile auf einem Bildschirm an. Die Datei kann nach Befehlen durchsucht werden, die bestimmte, vom Anwender spezifizierte Änderungen des Register- oder Stapelinhalts bewirken.
Die Informationsmenge, die bei der beschriebenen Anordnung vom Anwender verarbeitet werden muß, ist insbesondere bei komplexen Programmen sehr groß und erfordert daher einen großen Aufwand bei der Auswertung.
In der DE 3205852 C2 wird eine Anordnung zur Messung der Arbeitsverteilung von Programmroutinen für ein Fernsprechsystem beschrieben. Dabei wird unter dem Begriff „Arbeitsverteilung" die Zugriffshaufigkeit auf Adressbereiche verstanden, die zu den jeweiligen Programmroutinen gehören. Wird eine Programmroutiene zu häufig aktiviert, so kann das beschriebene Fernsprechsystem überlasten. Zur Vermeidung von Überlastungen wird ermittelt, ob die Adresse in einem bestimmten Bereich liegt. Wenn dies der Fall ist, wird die Anzahl der Übereinstimmungen für jeden Adressbereich bis zur Abfrage durch einen Computer festgehalten. Es wird davon ausgegangen, daß die Programme oder Programmteile bereits vollständig bekannt sind. Bei besonders großen
Programmen ist eine solche Kenntnis garnicht mehr möglich. Entsprechend ist das beschriebene Verfahren nicht geignet, um Störungen eines Programmablaufs wie Programmierfehler oder oder Einbruchserkennung durchzuführen.
Offenbarung der Erfindung
Es ist Aufgabe der Erfindung, eine Vorrichtung zu schaffen, mit welcher ein Programmablauf derart darstellbar ist, daß Störungen leicht ermittelt werden können.
Erfindungsgemäß wird die Aufgabe bei einem Datenfluß-Analysator der eingangs genannten Art dadurch gelöst, daß die Zugriffshaufigkeit auf jede einzelne einer Vielzahl von Adressen eines Programmspeichers und/oder Datenspeichers darstellbar ist.
Es hat sich überraschenderweise herausgestellt, daß eine hohe Zugriffshaufigkeit auf eine Adresse oder die Abweichung eines Musters der Zugriffshaufigkeit von einem bekannten
Muster ein gutes Indiz für eine Programmstörung darstellt. Statt der individuellen Befehle muß also nur noch die Anzahl der Zugriffe auf eine ausgewählte Speicheradresse oder einen ausgewählten Bereich beobachtet werden. Die Kenntnis der Zugriffshaufigkeit ermöglicht aber auch die Identifizierung von Ereignissen, die vor einer Programmstörung stattgefunden haben und möglicherweise mit der Störung in Zusammenhang stehen.
Durch die Ermittlung der Zugriffshaufigkeit auf eine ausgewählte Speicheradresse kann
auch ein Programmabschnitt mit bestimmten Eigenschaften identifiziert und lokalisiert werden.
Die Detektormittel umfassen vorzugsweise einen Tastkopf, mit welchem die an einer Leitung anliegenden Spannungen und/oder Ströme abgreifbar sind. Der Tastkopf kann mit einem Verstärker zur Spannungsverstärkung ausgestattet sein. Da der Tastkopf über Zuleitungen mit dem Analysator verbunden ist treten üblicherweise Kabelkapazitäten auf, die ein Mikrocontroller-System ohne Verwendung eines Verstärkers so stark belasten würden, daß die Funktionsweise gestört wird.
Vorzugsweise erfolgt die Darstellung der Zugriffshaufigkeit auf die Adressen und/oder Daten graphisch. Die graphische Darstellung kann mittels eines Monitors erfolgen, auf dem jeweils ein Bildpunkt für jede Speicheradresse vorgesehen ist. Erfolgt ein Zugriff auf eine Adresse, so wird der Bildpunkt dunkler oder heller. Je mehr Zugriffe auf eine Adresse erfolgen, um so dunkler oder heller wird der Bildpunkt. Statt der Helligkeit kann auch die Farbe mit der Anzahl der Zugriffe variieren. Alternativ ist die Darstellung in einer 3 -dimensionalen Graphik möglich, bei der die Anzahl der Zugriffe in Abhängigkeit von der Speicheradresse dargestellt wird.
Der Analysator umfasst vorzugsweise Mittel zur Speicherung und Darstellung der
Zugriffshaufigkeit auf die Adressen eines Speichers für aufeinanderfolgende Zeitpunkte. Dies kann zum Beispiel eine schnelle Festplatte oder ein Halbleiterspeicher sein. Die graphische Darstellung der Anzahl der Zugriffe kann dann während des Programmablaufs mit einer bestimmten Frequenz abgespeichert werden und wie ein Film betrachtet werden. Der Vorteil ist, daß die Darstellung vor- und zurückgespult werden kann oder an bestimmten Stellen vergrößert oder gestoppt werden kann.
In einer bevorzugten Ausfuhrungsform sind Mittel zur Initialisierung der Datenaufzeichnung vorgesehen. Die Initialisierung kann mittels einer Triggereinheit vorgenommen werden. Die Datenaufzeichnung kann zum Beispiel durch eine bestimmte
Adresse oder einen bestimmten Adressbereich getriggert werden. Werden alle Datenleitungen ausgewählt, so erfolgt die Triggerung auf eine einzige, ausgewählte
Adresse. Durch Weglassen einiger Datenleitungen (Nullsetzen), kann auf einen ganzen Adressbereich getriggert werden. Dies ist besonders vorteilhaft, wenn durch eine Auswahl im Programm eine Mehrzahl von Möglichkeiten besteht und Adressen in einem interessierenden Programmteil alternativ zueinander angesprochen werden.
Je nach Anwendung ist es vorteilhaft, einen Zwischenspeicher zur Zwischenspeicherung der Zugriffshaufigkeit vorzusehen. Dieser Zwischenspeicher kann dazu dienen, die Daten vor der Weiterverarbeitung, Analyse und Darstellung zu speichern um zum Beispiel unterschiedliche Verfahren auf die Daten anzuwenden.
Es kann weiterhin ein Festspeicher zur Speicherung der Zugriffshaufigkeit vorgesehen werden. Dies ist besonders sinnvoll, wenn die Daten dauerhaft gespeichert werden sollen oder große Datenmengen vorliegen, die nicht sofort weiterverarbeitet werden.
In einer besonders bevorzugten Ausgestaltung der Erfindung sind Mittel zum
Vergleichen der Informationen über die Zugriffshaufigkeit mit den Zugriffshäufigkeiten anderer Prozesse. Ein solcher Vergleich ermöglicht die besonders schnelle Auswertung von Programmänderungen oder unerlaubten Zugriffen. Es wird die Zugriffshaufigkeit bei normalem Programmablauf mit dem aktuellen Programmablauf verglichen und über zum Beispiel Differenzbildung die Auswirkungen ermittelt. Auf diese Weise kann zum
Beispiel eine virusbehaftete Software sehr schnell erkannt werden oder ein unerlaubter Zugriff auf eine Datei.
In einer weiteren Ausgestaltung der Erfindung sind Mittel zum Auffinden von vorgegebenen Speicherinhalten in einem Speicher vorgesehen. Dies ist besonders bei der dynamischen Speicherverwaltung wichtig, da sich hier die Adressen ändern können. Ein solches Mittel ist zum Beispiel ein Korrelationsmodul, das den Speicher nach einem bestimmten Bitmuster durchsucht, unabhängig von der Lage im Speicher. Dies kann durch Auswahl eines Speicher-Fensters geschehen, daß die gleiche Größe wie das gesuchte Bitmuster hat. Der Inhalt dieses Fensters wird mit dem Bitmuster verglichen.
Das Fenster wird über den Speicher geschoben, bis die Bitmuster identisch sind.
Die Aufgabe der Erfindugn wird insbesondere auch gelöst durch ein Verfahren zur Analyse von Programmen mit den Schritten
(a) Detektieren eines in einer Leitung vorliegenden Signals,
(b) Speichern des Signals,
(c) Auswerten des Signals bezüglich des Wertes eines Datenbits,
(d) Bestimmen der Zugriffshaufigkeit auf verschiedene Adressen eines Programmspeichers und/oder Datenspeichers und
(e) simultane Darstellung der bestimmten Zugriffshäufigkeitswerte.
Dabei kann die Zugriffshaufigkeit mit einem Datenfluß- Analysator oder jedem anderen geeigneten Mittel bestimmt werden.
Der Datenfluß-Analysator ist besonders zur Analyse von Programmen zur Datenverarbeitung geeignet. Die Darstellung der Zugriffshaufigkeit ermöglicht das schnelle und einfache Auffinden relevanter Programmteile. Der Verlauf der Zugriffshaufigkeit auf die verschiedenen Adressen kann simultan während der Programmabarbeitung beobachtet werden. Programmierfehler und Programmstörungen können so besonders einfach ermittelt werden. Kleinere Programmteile können mittels bekannter Algorithmen dissassembled werden.
Der Datenfluß-Analysator ist auch zur Ermittlung eines unerlaubten Zugriffs auf einen Programm- oder Datenspeicher in einem Computer geeignet. Die Abarbeitung von Sicherheitsprogrammen, z.B. Passwort- Abfrage wird hier beobachtet. Ein angeschlossener Datenfluß-Analysator wird die Zugriffe z. B. auf den Adressbereich, in dem die Passwörter gespeichert sind, immer feststellen. Eine geeignete Software kann die Zugriffshaufigkeit analysieren und ggf. Meldungen oder Abwehr-Maßnahmen auslösen.
Die Verwendung des Datenfluß-Analysators hat den Vorteil, daß er als Hardwarekomponente nicht ohne weiteres umgangen werden kann. Er liefert Daten über die Schwachstellen des Software-IDS und erleichtert deren Verbesserung. Außerdem liefert er Informationen über die Bereiche, auf die Zugriffe erfolgt sind, so daß mögliche Rettungsmaßnahmen gezielt erfolgen können.
In einer weiteren Ausgestaltung der Erfindung wird der Datenfluß-Analysator zum Auffinden eines Virus in einem Programm für Datenverarbeitungsanlagen verwendet. Dazu wird der Verlauf der Zugriffshaufigkeit bei Abarbeitung des ungestörten Programms gespeichert und mit der aktuellen Zugriffshaufigkeit verglichen. Ein Virus verursacht eine Änderung, die leicht detektierbar ist.
Eine weitere Ausgestaltung der Erfindung betrifft die Verwendung des Datenfluß- Analysators zur Überprüfung des Ablaufs von Befehlen zur Maschinensteuerung. Hier wird die Maschine simultan zum Programm beobachtet. Tritt ein Fehler bei dem Betrieb der Maschine auf, so kann gleichzeitig aus der Zugriffshaufigkeit der Programmteil ermittelt werden, der diesen Fehler verursacht hat.
Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche. Ein Ausführungsbeispiel ist nachstehend unter Bezugnahme auf die beigefügten Zeichnungen näher erläutert.
Kurze Beschreibung der Zeichnungen
Fig.l zeigt den prinzipiellen Aufbau eines Mikrocomputers mit Mikroprozessor,
Programmspeicher und Datenspeicher.
Fig.2 zeigt ein Blockschaltbild eines Datenflußanalysators
Fig.3 zeigt einen typischen Signalverlauf in einer Datenleitung
Fig. 4 zeigt eine graphische Darstellung der Zugriffshaufigkeit auf die Adressen eines 64 k Speichers in Form von Helligkeitsunterschieden.
Beschreibung eines Ausführungsbeispiels
In Fig.l ist mit 10 ein Mikrocomputereinheit bezeichnet. In dem Mikrocomputer 10 befindet sich ein Mikroprozessor 12 (Central Processing Unit, CPU). Ein Programm- Speicher 14, ein Daten-Speicher 16 und eine Ein-und Ausgabeeinheit 18 sind über ein Bussystem 20 mit dem Mikroprozessor 12 verbunden. Das Bussystem 20 umfasst einen
Adressbus 22, einen Datenbus 24 und einen Kontrollbus 26.
Die Befehle des auszuführenden Programms sind im Programmspeicher 14 an den zugehörigen Adressen gespeichert. Der Programmspeicher 14 ist als EEPROM (electrically erasable read only memory) oder RAM (random access memory) ausgeführt.
Die Daten, welche mit dem Programm verarbeitet werden, sind im Daten-Speicher 16 an den zugehörigen Adressen gespeichert. Der Daten-Speicher 16 ist als RAM ausgeführt. Mittels der Ein- und Ausgabeeinheit können die Daten eingegeben, weitergegeben oder angezeigt werden. Die Eingabe- und Ausgabeeinheit ist mit den Periferiegeräten des Computers (nicht dargestellt) verbunden.
Über den Adressbus 22 werden die Adressen kommuniziert, die Informationen, Daten oder Befehle enthalten. Die Datenflußrichtung im Adressbus 22 findet immer in einer Richtung repräsentiert durch Pfeile 28, 30, 32, 34 und 36 statt.
Über den Datenbus 24 werden die Daten übertragen. Die Datenflußrichtung findet in beiden Richtungen statt. Über den Kontrollbus 26 fließt die Information, ob gelesen oder geschrieben werden soll.
Wenn der Mikroprozessor 12 einen Befehl ausführt, geschieht dies zum Beispiel durch
Lesen des Befehls aus der entsprechenden Adresse im Programmspeicher, Lesen der
Daten aus der entsprechenden Adresse im Daten Speicher, Ausführen des Befehls und Zurückschreiben der Daten in die entsprechende Adresse im Datenspeicher.
An den Adressbus 22 ist der Tastkopf 38 eines Datenfluß-Analysators angeschlossen. Der Tastkopf 38 greift die an den Leitungen 40 des Busses anliegenden Spannungen ab und verstärkt sie. Dies ist in Fig.2 am Beispiel eines 8-bit-Busses dargestellt. Jedes Datenbit wird durch eine Spannung 0V oder 5V repräsentiert, bei 0V wird nimmt das Datenbit den Wert "0"=low an und bei 5V nimmt das Datenbit den Wert 'T -high an. Dabei wird ein Wert " 1 " angenommen, wenn die Spannung einen Schwellwert von 0,7 Volt übersteigt.
Der Spannungsverlauf über den Zeitraum von 3 Takten ist in Fig. 3 für die 8 Datenleitungen dargestellt. Der Spannungsverlauf an der ersten Datenleitung ist mit 42 bezeichnet. Zu Zeitpunkten Tl, T2 und T3 wird jeweils der Spannungswert an der Datenleitung mittels des Tastkopfes 38 abgegriffen und an den Datenfluß-Analysator übertragen. An Zeitpunkten Tl und T3 liegen Spannungen 46 und 48 an. Die Spannung beträgt 5 Volt und übersteigt damit einen Schwellwert von 0,7 V. Das Datenbit wird für Tl und T3 auf "1" und für T2 auf "0" gesetzt. Auf einer zweiten Datenleitung 48 ist das Datenbit für Tl und T3 "0" und für T2 "1". Es ergibt sich also zum Zeitpunkt von Tl ein Signal von "10110000" entsprechend B0Hex, zum Zeitpunkt von T2 ein Signal von
"01000111" entsprechend 47Hex und zum Zeitpunkt von T3 ein Signal von "10011000", entsprechend 98Hex.
Es werden also nacheinander Werte abgegriffen, die dann an einem Pegelanpassungsverstärker 50 (Leistungstreiber, Pad) verstärkt und an den Datenfluß-
Analysator weitergegeben werden. Die Verstärkung erfolgt derart, daß der Strom erhöht wird um Leistungskapazitäten zu treiben und die Spannung auf 0-2,2V verringert wird.
Der Leistungstreiber 50 des Datenfluß-Analysators ist auf dem Motherboard des Computers angeordnet. Dadurch werden Resonanzen, kapazitive Einflüsse auf die benachbarten Leitungen und andere Störungen gering gehalten, die bei der
Signalerfassung bei hohen Frequenzen über 100MHz entstehen. Die Fehlerquote wird dadurch verbessert.
Eine Zuleitung 52 (Fig.2) verbindet den Leistungstreiber 50 mit dem Datenfluß- Analysator 54. Die ankommenden Signale werden in einem weiteren Treiber 56 wieder auf 0-5 Volt konvertiert. In dem Treiber 56 erfolgt auch der Leitungsabschluß. Die Signale - in dem Beispiel von Fig.3 B0Hex, 47Hex und 98Hex, werden dann in einem schnellen Halbleiterspeicher 58 (RAM) i aufeinanderfolgenden Adressen 60 gespeichert.
Der Speicher 58 hat eine Speicherbreite von 8 Bit, entsprechend 1 Byte und eine Speichertiefe von 1 G. Der Speicher weist also eine Speicherkapazität von 1 Gigabyte auf. Damit können für jede der 8 Datenleitungen 109 Datenbits (einem Wert, der 0 oder 1 entspricht) aufgenommen werden. Dies ist ausreichend um ein normales Programm bei üblichen Frequenzen in der Größenordnung von 1 GHz so lange zu beobachten, daß
Störungen ermittelt werden können. Bei 64 Datenleitungen ist entsprechend die 8-fache Speicherkapazität für die gleiche Beobachtungsdauer erforderlich. Im Gegensatz zu einem Logikanalyser, der einzelne Signale innerhalb eines Zeitfensters von typischerweise 10 bis 240 ms darstellt, können mit dem Datenfluß-Analysator mit dieser Speicherkapazität Zeitfenster im Sekundenbereich aufgenommen werden.
Der Aufnahmebeginn für die Signale erfolgt durch einen Triggerpuls 68, der von einer Triggereinheit 62 über eine Kontrolleinheit 64 an einen elektronischen Schalter 66 (Tor) gegeben wird. Durch den Triggerpuls schaltet der Schalter 66 auf Durchgang. Die Taktrate wird mit der Taktrate des Mikrocontrollers synchronisiert. Je nach Anwendung wird die Taktrate von der R/W (Read/Write), CS(Chip Select) oder OE Leitung abgegriffen. Über zwei Treiber 70 und 72 wird das Taktsignal ähnlich wie oben die Datensignale übertragen und an einen Schalter 74 gegeben, der durch die Kontrolleinheit 64 auf die entsprechende Leitung geschaltet ist. In Fig. 2 ist das Taktsignal von der R/W- Leitung durchgeschaltet. Das Taktsignal wird weiter auf einen Zähler 74 aufgeschaltet, der die Taktzahl zählt. Bei jedem Takt wird der Zähler um ein Inkrement hochgezählt. Über eine Verbindung 76 mit der Kontrolleinheit wird ein Reset ermöglicht. Die
Taktzahl formt die Adresse im Speicher 58 für die Signale an den beobachteten Datenleitungen 1 bis 8. Dieser Wert wird über eine Zuleitung 78 zusammen mit den Signalwerten auf den Speicher 58 gegeben.
Ein zwischen der Zuleitung 78 und dem Zähler 74 angeordneter Schalter 80 wird ebenfalls von der Kontrolleinheit 64 über eine Verbindung 82 gesteuert. Je nach Schalterstellung werden die Zählerwerde des Zählers 74 und die Signalwerte an den Datenleitungen in den Speicher geschrieben oder - wie in Fig. 2 dargestellt - ausgelesen.
Die ausgelesenen Daten werden über Verbindungen 84 und Treiber 86, 88 an eine
Schnittstelle 90 gegeben, von wo aus sie zum Beispiel mittels eines Personalcomputers 92 (PC) und der entsprechenden Software graphisch darstellbar sind.
Die graphische Darstellung erfolgt auf einem Bildschirm 94 oder in einem Fenster, auf dem für jede Adresse ein Punkt 96 vorgesehen ist. Ein Beispiel für eine solche
Darstellung ist in Fig. 4 gezeigt. Stellt der Datenfluß-Analysator einen Zugriff auf einen Adressbereich fest, so wird der diesem Adressbereich entsprechende Punkt auf dem Bildschirm um eine Helligkeitsstufe dunkler. Dunkle Punkte stellen also eine besonders hohe Zugriffshaufigkeit dar. Weiße Punkte stellen eine nichtangesprochenen Adresse dar.
Der beschriebene Datenflußanalysator läßt sich in verschiedenen Anwendungsgebieten verwenden, von denen drei hier beispielhaft beschrieben werden:
1. Anwendung: Viruserkennung
Der Datenfluß-Analysator weist einen weiteren Festspeicher auf. In diesem Festspeicher befinden sich die Verläufe der Zugriffshäufigkeiten bei der Abarbeitung von Programmen, die auf eine Störung von außen hin untersucht werden sollen. Durch Vergleich der gespeicherten Verläufe mit den tatsächlichen Verläufen, wird der Speicher des beobachteten Computers nach diesen Programm durchsucht und der Adressbereich, in dem die Programme gespeichert sind, festgelegt. Dieser Vorgang ist gewöhnlich nur bei Computern mit dynamischer Speicherverwaltung notwendig. Bei fest programmierten
Chips, die z.B. zur Gerätesteuerung verwendet werden, kann auf eine Programmsuche verzichtet werden, da sich der Adressbereich, in dem sich das Steuerprogramm befindet, nicht ändert.
Wenn der Adressbereich, in dem sich das Programm befindet, festgestellt ist, kann eine regelmäßige Überprüfung der Zugriffshaufigkeit auf die Adressen in diesem Adressbereich bei Abarbeitung des Programms vorgenommen werden. Ändert sich der Verlauf der Zugriffshaufigkeit, so ist dies ein sicheres Indiz dafür, daß das normalerweise unveränderliche Programm z.B. durch einen Virus verändert wurde. Die Überprüfung erfolgt durch einfachen Vergleich, nämlich durch Differenzbildung der Häufigkeitswerte zu j edem Zeitpunkt.
2. Anwendung: Erkennung von Programmierfehlern
Zur Erkennung von Programmierfehlern wird zunächst der Vorgang im gesamten
Programm gesucht, der beobachtet werden soll. Dies kann der Startvorgang bei einer Einspritzpumpe an einem Motor sein. Die Beobachtung der Zugriffshaufigkeit während der Abarbeitung dieses Programmteils und der unmittelbar angrenzenden Zeiträume ermöglicht dann die Erkennung von Ereignissen unmittelbar vor diesem Vorgang, sowie die schnelle Erkennung von Endlosschleifen, ungenutzten Programmstücken und dergleichen. Eine einzelne Adresse, auf der eine besonders hohe Zugriffshaufigkeit vorliegt, beinhaltet mit hoher Wahrscheinlichkeit eine Variable (Kennfeld). Eine solche Adresse ist in Fig. 4 mit 96 bezeichnet. Der Adressbereich, in dem das Programm gespeichert ist, ist an aufeinanderfolgenden Zugriffen auf benachbarte Punkte zu erkennen. Ein Beispiel hierfür ist in Fig. 4 mit 98 bezeichnet. Schleifen produzieren
Punktbereiche mit hoher Zugriffshaufigkeit. Tritt eine Störung bei der Abarbeitung des Programms auf, so wird diese bei Beobachtung der Zugriffshaufigkeit leicht erkannt. Im Programmcode kann nach dem Befehl an der entsprechenden Stelle gesucht werden, ohne daß die Befehle der anderen Programmteile analysiert werden müssen. Hier bildet die Beobachtung der Zugriffshaufigkeit eine besonders schnelle Möglichkeit die richtigen
Programmteile ausfindig zu machen. Ist das Programm als Ganzes nicht bekannt, können
einzelne Teile dissassembled werden. Dieser Vorgang ist aufwendig und die Kenntnis des relevanten Programmteils daher unabdingbar.
3. Anwendung: Einbruchserkennung (Intrusion Detection)
Zur Intrusion Detection wird der Datenfluß-Analysator direkt an den Computer angeschlossen, über den sensible Daten abfragbar sind oder auf dem sensible Daten gespeichert sind. Wenn sensible Daten von diesem Computer aus abfragbar sind, so kann der Angreifer entweder die Daten direkt in unverschlüsselter Form abgreifen, wenn sie dort vorliegen, oder er muß über diesen Computer die Identifizierungsmerkmale des autorisierten Anwenders ermitteln. Beides ist mit Zugriffen auf einen bestimmten Speicherbereich in diesem Computer verbunden, der vom Datenfluß-Analysator erkannt wird.
Ein Zugriff auf sensible Daten, die nur zu Computern transferiert werden können, die hierzu autorisiert sind, kann auch direkt mittels des Datenfluß-Analysators beobachtet werden. Der Angreifer erhält die Daten dann ggf. nur in verschlüsselter Form. Der Zugriff selber wird jedoch erkannt.