-
1. Gebiet
-
Die vorliegende Offenbarung betrifft allgemein das Gebiet der digitalen Sicherheit, und insbesondere die Erkennung von Aktivitäten von Interesse in einer oder mehreren Befehlssequenzen, einschließlich der Erkennung von bösartigen Aktivitäten.
-
2. Beschreibung des Standes der Technik
-
Die Verbreitung von Computertechnologien hat auf dem Bereich der digitalen Sicherheit Herausforderungen gestellt. Wie allgemein bekannt ist, kann ein elektronisches Gerät (z. B. ein Computer, der auf einer Unternehmensplattform arbeitet) bösartige Computerdaten aufweisen und/oder bösartige Computerdaten an andere elektronische Geräte verbreiten. Dies kann zum Beispiel zu einer erheblichen Systemstörung und einem wirtschaftlichen Verlust führen. Ein Fachmann würde erkennen, dass Angriffe, die auf intelligenten Computerdaten basieren, Computerviren, Malware, Würmer, Trojaner, Bots, Eindringungen (z. B. unautorisierter Zugriff), Exploits (z. B. Eskalation von Privilegien, Verletzung der Vertraulichkeit), zeitbasierte Angriffe (z. B. Dienstverweigerung), oder dergleichen umfassen. Der Begriff „Bedrohung” wird verwendet, um eine oder mehrere dieser Arten von Angriffen zu beschreiben.
-
Herkömmliche digitale Sicherheitstechnologien können dazu verwendet werden, um auf einem elektronischen Gerät gespeicherte und/oder ausgeführte bösartige Computerdaten zu erkennen und/oder zu entfernen. Solche digitalen Sicherheitstechnologien können „Anti-Virus-Software”, „Malware-Erkennung”, „Eindringungsverhinderung”, „Gegenangriffe”, Firewalls, oder dergleichen umfassen, obwohl diese Begriffe nicht identisch in der Bedeutung sind. Der Begriff „einheitliches Gefahrenmanagement” (Englisch: „Unified Threat Management”) („UTM”) wurde verwendet, um eine oder mehrere dieser Implementierungen digitaler Sicherheitstechnologien zu beschreiben.
-
Herkömmliche digitale Sicherheitstechnologien erkennen typischerweise Bedrohungen unter Verwendung von Signaturen, die bestimmten Bedrohungen entsprechen. Existierende Entwürfe unter diesem Paradigma sind auf mindestens zwei Art und Weisen mangelhaft. Erstens beruht die Erkennung einer Bedrohung auf der a priori Kenntnis der spezifischen Bedrohung und der Verfügbarkeit einer Signatur für die spezifische Bedrohung. Das heißt, herkömmliche digitale Sicherheitstechnologien beruhen auf bekannten Signaturen, um das Vorhandensein eines bekannten Computervirus zu erkennen, und infolgedessen versagen herkömmliche digitale Sicherheitstechnologien dabei, Bedrohungen zu erkennen, für die eine Signatur noch nicht verfügbar oder bekannt ist. Beispielsweise können herkömmliche digitale Sicherheitstechnologien nicht in der Lage sein, eine unbekannte Variation eines bekannten Computervirus zu erkennen.
-
Zweitens behalten aufgrund der ständig wachsenden Zahl bekannter Bedrohungen herkömmliche digitale Sicherheitstechnologien eine wachsende Zahl von Signaturen bei. Wenn Prozesse auf einem elektronischen Gerät ausgeführt werden, werden beibehaltende Signaturen mit den Programmabbildern verglichen, um mögliche Bedrohungen zu identifizieren. In vielen Fällen verwendet das Vergleichen von Signaturen, um Programmabbilder auf diese Weise zu vergleichen, umfangreiche Rechenressourcen. Im Kontext von Verbraucher-Computern sollte es selbst den gelegentlichen Computerbenutzer nicht überraschen, dass der Betrieb von Antivirussoftware bewirken kann, dass ein Computer langsamer wird.
-
Trotz Verbesserungen auf diesem Gebiet sind die herkömmlichen digitalen Sicherheitstechnologien weiterhin durch diese Mängel begrenzt, die Konsequenzen ihres Designs sind.
-
KURZE ZUSAMMENFASSUNG
-
Ein beispielhaftes Verfahren zum Erkennen einer Befehlssequenz von Interesse umfasst, bei einem elektronischen Gerät mit einem oder mehreren Prozessoren, Identifizieren eines Prozesses, der auf dem elektronengesteuerten Gerät ausgeführt wird. Das Verfahren umfasst ferner das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Prozesses. In einigen Beispielen zeigt die Darstellung eine oder mehrere Befehlssequenzen an, die von dem einen oder den mehreren Prozessoren des elektronischen Geräts durchgeführt werden sollen. Das Verfahren umfasst ferner das Erzeugen, unter Verwendung des einen oder der mehreren Prozessoren, eines Datensegments, das auf der Darstellung basiert. In einigen Beispielen umfasst das Datensegment eine Vielzahl von ganzen Zahlen. Das Verfahren umfasst ferner das Bestimmen, unter Verwendung des einen oder der mehreren Prozessoren, ob ein Metaausdruck, der eine Vielzahl von geordneten ganzen Zahlen enthält, in dem Datensegment erscheint. In einigen Beispielen entspricht der Metaausdruck einer Befehlssequenz von Interesse. Das Verfahren umfasst ferner, wenn der Metaausdruck in dem Datensegment erscheint, das Initiieren einer Operation.
-
BESCHREIBUND DER FIGUREN
-
1 zeigt einen virtuellen Adressraum gemäß einer Ausführungsform der vorliegenden Erfindung.
-
2 zeigt ein beispielhaftes Verfahren zum Erkennen von Befehlssequenzen von Interesse gemäß einer Ausführungsform der vorliegenden Erfindung.
-
3 zeigt ein Verfahren zum Trainieren eines „Unified Threat Management”-Systems (UTMS) gemäß einer Ausführungsform der vorliegenden Erfindung.
-
4 zeigt ein beispielhaftes Verfahren zum Implementieren einer Abstandsfunktion gemäß einer Ausführungsform der vorliegenden Erfindung.
-
5(A)–(F) zeigen beispielhafte Sequenzen von ganzen Zahlen gemäß einer Ausführungsform der vorliegenden Erfindung.
-
6(A)–(C) zeigen beispielhafte Sequenzen von ganzen Zahlen gemäß einer Ausführungsform der vorliegenden Erfindung.
-
7 zeigt beispielhafte Sequenzen von ganzen Zahlen gemäß einer Ausführungsform der vorliegenden Erfindung.
-
8 zeigt beispielhafte Sequenzen von ganzen Zahlen gemäß einer Ausführungsform der vorliegenden Erfindung.
-
9 zeigt ein beispielhaftes Computersystem zum Erkennen von Befehlssequenzen von Interesse gemäß einer Ausführungsform der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die folgende Beschreibung wird vorgelegt, um es einem Fachmann zu ermöglichen, die verschiedenen Ausführungsformen herzustellen und zu verwenden. Beschreibungen von speziellen Geräten, Techniken und Anwendungen werden nur als Beispiele gegeben. Verschiedene Modifikationen der hierin beschriebenen Beispiele sind für den Fachmann leicht ersichtlich, und die hierin definierten allgemeinen Prinzipien können auf andere Beispiele und Anwendungen angewendet werden, ohne vom Geist und Umfang der verschiedenen Ausführungsformen abzuweichen. Somit sind die verschiedenen Ausführungsformen nicht dazu gedacht, auf die hierin beschriebenen und gezeigten Beispiele beschränkt zu sein, sondern sind dem Umfang, der mit den Ansprüchen konsistent ist, zuzurechnen.
-
Die hierin beschriebenen Ausführungsformen umfassen Techniken zum Erkennen von Befehlssequenzen von Interesse. Beispielhafte Befehlssequenzen von Interesse umfassen Befehlssequenzen, die Computerviren, Malware, Würmern, Trojanern, Bots, Eindrigungen (z. B. unautorisierter Zugriff), Exploits (z. B. Eskalation von Privilegien, Verletzung der Vertraulichkeit), zeitbasierte Angriffe (z. B. Dienstverweigerung), oder dergleichen, sind aber nicht darauf beschränkt.
-
1 Überblick
-
Beispiele der vorliegenden Erfindung sind auf virtuelle Adressräume gerichtet. Im Allgemeinen ist ein virtueller Adressenraum ein Satz (z. B. einer oder mehrere) von Adressenbereichen (z. B. virtuelle Adressen), die beispielsweise einem Betriebssystem zur Verfügung gestellt werden. Jedem Prozess, der auf einem elektronischen Gerät ausgeführt wird, wird ein jeweiliger virtueller Adressraum zugewiesen. Unter Bezugnahme auf 1 umfasst ein virtueller Adressraum mehrere Teile: einen Kernelraum 102 und einen Benutzerraum. Der Kernelraum 102 ist für den Kernel reserviert und wird der Kürze halber nicht weiter diskutiert. Der Benutzerraum wird weiter in Segmente unterteilt, die einen Ausführungsstapel 104, einen Heap 106, ein Speicherabbildungssegment 108 (einschließlich dynamischer Links), eine BSS-Segment 110 (z. B. zum Speichern von Variablen, die nicht in Quellcode initialisiert sind, oder Zeiger darauf), ein Datensegment 112 (z. B. zum Speichern von in Quellcode initialisierten Variablen oder Zeigern darauf), und ein Codesegment 114 (z. B. zum Speichern eines Programmbildes oder eines Zeigers darauf).
-
Im Betrieb speichert der Ausführungsstapel 104 temporäre Variablen und Funktionsparameter. Wenn eine Funktion aufgerufen wird, wird ein Stapelrahmen auf den Ausführungsstapel 104 geschoben, während die Funktion ausgeführt wird, und der Rahmen wird weggesteckt (z. B entfernt), wenn die Funktion zurückkehrt. In dieser Weise dient der Ausführungsstapel 104 als ein Last-in-First-Out(LIFO)-Mechanismus, durch den verschiedene Operationen durchgeführt werden. Ein Zeiger wird verwendet, um die „Oberseite” des Stapels während des Betriebs zu verfolgen, und die Stapelgröße ist typischerweise in der Größe festgelegt. Andererseits speichert der Heap 106 Variablen, die jedoch über mehrere Funktionsaufrufe bestehen bleiben, so dass auf gespeicherte Variablen durch einen Prozess global zugegriffen werden kann. Die Größe des Heaps kann unter Verwendung verschiedener Zuteilungsfunktionen (z. B. malloc(), calloc()) eingestellt werden. Das Speicherabbildungssegment 108 umfasst eine oder mehrere dynamische Links zum Zugreifen auf eine oder mehrere Bibliotheken (z. B. DLLs), wenn es während des Betriebs erforderlich ist.
-
2 zeigt einen beispielhaften Prozess 200 zum Erkennen von Befehlssequenzen von Interesse. Für die Zwecke dieser Offenbarung wird der Begriff „Unified Threat Management System” (UTMS) verwendet, um Computersicherheitstechnologien zu beschreiben, die den Prozess 200 durchführen, unabhängig davon, ob die Technologien in Softwareform (z. B. als Softwarepaket) oder in Hardwareform (z. B. eine anwendungsspezifische Schaltung oder ein Gerät) vorgesehen sind. Innerhalb des Prozesses 200 kann der Block 210 als ein Trainingsprozess bezeichnet werden, während die Blöcke 220–240 gemeinsam als Laufzeitprozess bezeichnet werden können.
-
Bei Block 210 wird ein UTMS trainiert, um eine oder mehrere Befehlssequenzen von Interest zu identifizieren. Beispielsweise kann das UTMS mit einer Darstellung eines virtuellen Adressraums eines Prozesses versehen sein, der einer bestimmten, bekannten Bedrohung entspricht. Die Darstellung kann z. B. Befehlen oder Anzeichen dafür umfassen, die der bekannten Bedrohung entsprechen. In einigen Beispielen wird die Darstellung unter Verwendung einer Anwendung erhalten, die dazu konfiguriert ist, die Darstellung während der Ausführung des Prozesses zu erkennen, wie beispielsweise eine Stapelzurückverfolgungsfunktion. Die Darstellung kann eine oder mehrere Befehlssequenzen anzeigen, die von dem einen oder den mehreren Prozessoren des elektronischen Geräts durchgeführt werden sollen. Ferner kann die Darstellung Befehlssequenzen anzeigen, die mit einer beliebigen Anzahl von Threads des Prozesses verknüpft sind und/oder ferner mit Befehlssequenzen verknüpft sein können, die für eine Multithread-Operation (z. B. Hyperthreading) konfiguriert sind. Jede bekannte Datenstruktur kann verwendet werden, um die Darstellung zu implementieren, einschließlich, aber nicht beschränkt auf eine Tabelle, eine verknüpfte Liste, oder eine Kombination davon, und kann in einigen Beispielen in Reaktion auf einen Kontextwechsel zu, beispielsweise, dem Prozess, der mit dem virtuellen Adressraum verknüpft ist, erhalten werden.
-
Während des Trainings identifiziert das UTMS aus der Trainingsdarstellung Befehlssequenzen und/oder Daten (z. B. Daten, die mit den Befehlssequenzen verknüpft sind), die darauffolgend dazu verwendet werden können, das Vorhandensein der gleichen Sequenzsequenzen von Interesse in einem anderen, unbekannten Satz von Operationen zu identifizieren. Zusätzlich wird durch die Verarbeitung bei Block 210 das UTMS auch in Lage versetzt, das Vorhandensein von Bedrohungen zu identifizieren, die mit der Bedrohung, die zuvor in den Trainingsanweisungen bereitgestellt wurde (d. h. eine Variante), in Zusammenhang stehen.
-
Bei Block 220 überwacht das UTMS einen virtuellen Adressraum, um zu bestimmen, ob die (trainierten und in Zusammenhang stehenden) Befehlssequenzen von Interesse im virtuellen Adressraum vorhanden sind. Beispielsweise kann das UTMS den virtuellen Adressraum überwachen, um zu bestimmen, ob ein Prozess, der dem virtuellen Adressraum entspricht, beabsichtigt, Befehle auszuführen, die mit schädlicher Aktivität verknüpft sind. Die Überwachung des virtuellen Adressraums auf diese Weise kann beispielsweise das Überwachen eines Ausführungsstapels des virtuellen Adressraums, eines Heaps des virtuellen Adressraums, eines Speicherabbildungssegments, und/oder eines beliebigen anderen Teils eines virtuellen Adressraums umfassen. In einigen Beispielen kann das UTMS Teile eines oder mehrerer zusätzlicher virtueller Adressräume, wie z. B. diejenigen, die mit dem virtuellen Adressraum verbunden sind, über einen oder mehrere dynamische Links überwachen.
-
Im Entscheidungsblock 230 bestimmt das UTMS, ob der überwachte virtuelle Adressraum normal oder anormal ist. Ein anormaler virtueller Adressraum ist einer, in dem das UTMS eine oder mehrere Befehlssequenzen von Interesse identifiziert hat. Wenn eine anormale Befehlssequenz gefunden wird, geht die Verarbeitung zum Block 240 über, wo das UTMS eine oder mehrere geeignete Reaktionen liefert (z. B. erzeugt). Die Bereitstellung einer geeigneten Reaktion kann das Bereitstellen eines Benutzer- oder Systemalarms umfassen und/oder kann das Beenden eines oder mehrerer Threads des Prozesses umfassen, der mit dem virtuellen Adressraum verknüpft ist. In einem anderen Beispiel kann das Bereitstellen einer geeigneten Reaktion das Beenden aller Threads des Prozesses, der mit dem virtuellen Adressraum verknüpft ist, umfassen. In noch einem anderen Beispiel kann das Bereitstellen einer geeigneten Reaktion das Beenden mindestens eines Threads von jedem einer Vielzahl von Prozessen umfassen. In einigen Beispielen kann das UTMS einen OS-Kernel anweisen, Threads und/oder Prozesse zu beenden. In anderen Beispielen kann das UTMS eine dynamische Linkbibliothek, mit der der Prozess verbunden ist, umfassen, und kann Threads und/oder Prozesse direkt beenden. Wenn keine anormalen Befehlssequenzen gefunden werden, kehrt die Verarbeitung zum Block 220 zurück, und das UTMS überwacht einen anderen virtuellen Adressraum eines, beispielsweise, virtuellen Adressraums. Wie beschrieben, kann das UTMS einen virtuellen Adressraum in Reaktion auf einen Kontextwechsel überwachen. Auf diese Weise kann das UTMS jede Anzahl von Prozessen, die auf einem elektronischen Gerät ausgeführt werden, überwachen (z. B. sequentiell überwachen).
-
In der Diskussion unten wird der Einfachheit halber die Bedrohung von Computerviren als beispielhafte Befehlssequenz von Interesse verwendet. Das Verfahren 200 (1) ist jedoch nicht auf irgendwelche Beispiele beschränkt. Vielmehr kann der Prozess 200 von einem UTMS verwendet werden, um viele andere Arten von Befehlssequenzen von Interesse zu verwalten, wie oben diskutiert wurde. Gleichzeitig hebt die (beispielhafte) Diskussion von Computerviren die wesentlichen Vorteile des Prozesses 200 in einer Weise hervor, die für viele Computerbenutzer, einschließlich des Durchschnittsfachmanns, verständlich ist.
-
Gegenwärtig sind über 2 Millionen existierende Computerviren bekannt. Die genaue Anzahl variiert zwischen 2,5 Millionen und 8 Millionen, weil verschiedene Ursprungsquellen Computerviren unterschiedlich katalogisieren. Bei Block 210 des Prozesses 200 kann ein UTMS mit einer Befehlssequenz versehen sein, die einen oder mehrere Angriffe widerspiegelt, die mit einem bekannten Computervirus oder mehreren bekannten Computerviren verknüpft sind. Nach Abschluss des Blocks 210 wird das UTMS trainiert, um das Vorhandensein dieses einen oder der mehreren Computerviren sowie deren jeweilige Varianten in einem virtuellen Adressraum zu erkennen. In den Blöcken 220–240 überwacht das UTMS einen virtuellen Adressraum auf die Anwesenheit dieses einen oder der mehrerer Computerviren und deren Varianten. Auf diese Weise ist das UTMS in der Lage, Angriffe zu verwalten, die auf bekannten Bedrohungen und ihren unbekannten Varianten basieren.
-
Das Verfahren 200 ist auf mindestens zwei Arten bemerkenswert. Erstens erzeugt Block 210 beschränkte Datensequenzen, die dazu verwendet werden können, alle bekannten Computerviren und ihre jeweiligen Varianten zu erkennen. Somit muss ein UTMS, das den Prozess 200 verwendet, nicht notwendigerweise auf die a priori-Kenntnis eines spezifischen Computervirus angewiesen sein, um den Computervirus in einem virtuellen Adressraum während des Betriebs zu erkennen. Zweitens sind beschränkte Datensequenzen, die bei Block 210 bereitgestellt werden, effizient in der Struktur und in der Größe, verglichen mit bekannten Computervirus-Signaturdateien, die von herkömmlichen Computer-Antivirus-Technologien verwendet werden. Insbesondere wurde festgestellt, dass beschränkte Datensequenzen von insgesamt weniger als 200 (8-Bit) Bytes ausreichend sind, um die meisten, wenn nicht sogar alle Computerviren, die gegenwärtig bekannt sind, unter Verwendung von Prozess 200 zu identifizieren. Diese Größe steht in starkem Kontrast zu der Größe von herkömmlichen Computervirus-Signaturdateien, die typischerweise eine Größe von 50 Megabyte (MB) bis 300 MB haben. Um es aus einem Blickwinkel zu betrachten, die Größe von 50 MB ist um 5 Größenordnungen größer als die Größe von 200 (8-Bit) Bytes. Somit können im Betrieb eines UTMS mit dem Prozess 200 enorme Recheneffizienzen realisiert werden.
-
2. Training
-
Die 3 veranschaulicht einen beispielhaften Prozess 300 zum Trainieren eines UTMS. Der Prozess 300 kann beispielsweise dazu verwendet werden, den Block 210 (1) zu implementieren. Bei Block 310 wird ein Prozess identifiziert, und es wird eine Darstellung eines virtuellen Adressraums des Prozesses erhalten. Die Darstellung kann beispielsweise unter Verwendung einer beliebigen Anzahl von Funktionen erhalten werden, einschließlich, aber nicht beschränkt auf, Stapelzurückverfolgungsfunktionen und dergleichen. Wie beschrieben, kann die Darstellung die Befehlssequenzen des Prozesses umfassen oder anzeigen. Das Konzept des „Befehls” ist in der Technik gut bekannt und wird hier nicht ausführlich beschrieben. Der Begriff „Befehl” kann Befehle aus einem oder mehreren Befehlssätzen, wie beispielsweise einen Befehlssatz eines x86-Prozessors, umfassen.
-
In einigen Beispielen umfasst die in Block 310 erhaltene Darstellung eine für die Ausbildung eines UTMS interessante Befehlssequenz, oder zeigt diese an. In dem vorliegenden Beispiel ist die Befehlssequenz von Interesse das Vorhandensein von Befehlen, die mit einem Computervirus in dem virtuellen Adressraum eines Prozesses verknüpft sind. Somit können die Befehle, die dem Block 310 bereitgestellt werden, auf einen Angriff auf ein elektronisches Gerät unter Verwendung eines Computervirus hinweisen.
-
Optional werden in einigen Beispielen Darstellungen von zusätzlichen virtuellen Adressräumen erhalten. Die zusätzlichen virtuellen Adressräume können beispielsweise diejenigen sein, die mit dem virtuellen Adressraum über einen oder mehrere dynamische Links verknüpft sind. Während der Betrieb hierin in Bezug auf eine Darstellung eines einzelnen virtuellen Adressenraums beschrieben wird, versteht es sich, dass die beschriebenen Beispiele analog zur Analyse von Darstellungen von mehreren virtuellen Adressenräumen gelten. Auf diese Weise kann das UTMS anhand von Befehlssequenzen trainiert werden, die nicht in einem einzigen virtuellen Adressraum enthalten sind, sondern vielmehr von mehreren virtuellen Adressräumen umfasst, aufgerufen, oder anderweitig verknüpft werden.
-
In einigen Beispielen sind nur bestimmte Teile einer Befehlssequenz für das Erkennen Befehlssequenzen von Interesse relevant. Dementsprechend werden bei Block 320 die relevanten Abschnitte einer Befehlssequenz beibehalten, und Fremdinformationen werden verworfen. Beispielsweise können ein oder mehrere Befehle, die mit einem oder mehreren von dem Ausführungsstapel, Heap, Speicherabbildungssegmente, oder irgendeinem anderen Teil eines virtuellen Adressraums verknüpft sind, verworfen werden. Zusätzlich oder alternativ können Teile von Befehlen verworfen werden. Als Beispiel können Operanden und/oder Zeiger verworfen werden. Als ein anderes Beispiel können Befehle eines bestimmten Typs verworfen werden. Opcodes können beispielsweise dazu verwendet werden, einen Typ eines oder mehrerer Befehle zu identifizieren, und Befehle mit Opcodes eines bestimmten Typs (z. B. NOP) können verworfen werden. Die Ausgabe des Blocks 320 wird als eine „relevante Befehlssequenz” bezeichnet.
-
Bei Block 330 wird die relevante Befehlssequenz von Block 320 bitweise in ganze Zahlen umgewandelt, wodurch eines oder mehrere Datensegmente erzeugt werden. Jedes Datensegment kann eine Sequenz von ganzen Zahlen umfassen, die einer Teilmenge der in Block 310 erhaltenen Information entspricht. In einer Ausführungsform werden 8-Bit-Ganzzahlen verwendet. Befehle, die weniger als 8 Bits umfassen, werden durch Auffüllen von Nullen zu den am meisten signifikanten Ausgangsbits in eine 8-Bit-Darstellung umgewandelt. Beispielsweise kann der Block 320 die Bits „100” in „0000 0100” umwandeln. Befehle für Operationen, die mehr als 8 Bits umfassen, werden in mehrere 8-Bit-Segmente umgewandelt. Beispielsweise wandelt Block 320 die Bits „0001 0010 0100 1000” in „0001 0010” und „0100 1000” um.
-
Wie hier verwendet, beschreibt der Begriff „Sequenz” eine Liste von geordneten Elementen. Es sollte erkannt werden, dass die Reihenfolge von Elementen innerhalb von Sequenzen von ganzen Zahlen, die bei Block 330 vorgesehen sind, aus der Reihenfolge und der Nachbarschaft der relevanten Teile der in den Blöcken 310–320 verarbeiteten Befehlssequenzen abgeleitet wird. Mit anderen Worten, in dem Maße, in dem eine Befehlssequenz von Interesse eine charakteristische Reaktion bei der Ausführung eines Prozesses erzeugt, wird diese Reaktion durch die Implementierung der Blöcke 310–330 erfasst. Die Reaktion wird bei der Implementierung der Blöcke 340–360, die weiter unten diskutiert werden, destilliert, so dass die Reaktion nützlich wird zum Erkennen von Befehlssequenzen von Interesse in einem unbekannten Satz von Befehlssequenzen.
-
Bei Block 340 wird eine Abstandsfunktion verwendet, um Charakteristiken aus den Sequenzen von ganzen Zahlen zu identifizieren, die durch Block 330 erzeugt werden. In einigen Beispielen wird die Abstandsfunktion durch Vergleichen von Sequenzen von ganzen Zahlen für unterschiedliche Befehle und/oder Befehlssequenzen durchgeführt. Beispielsweise wird eine Sequenz von ganzen Zahlen, die durch den Block 330 (basierend auf einem ersten Satz von Befehlen aus Block 320) erzeugt werden, mit der nächsten, benachbarten Sequenz von ganzen Zahlen verglichen, die durch den Block 330 erzeugt werden (basierend auf dem nächsten, benachbarten Satz von Befehlen aus Block 320).
-
Herkömmliche Abstandsfunktionen, wie beispielsweise Zeichenfolgen-Abstandsfunktionen, sind in der Technik gut bekannt und werden hier nicht ausführlich diskutiert. Als ein Beispiel kann eine herkömmliche Zeichenfolgen-Abstandsfunktion verwendet werden, um zu bestimmen, dass die Zeichenfolgen „a b c” und „z b c” einen Abstand von 1 haben, da die Zeichenfolgen nur dadurch variieren, dass „a” in der ersteren durch „z” in der letzteren ersetzt wird, und stellt den einzigen Unterschied zwischen den beiden Zeichenfolgen dar. Die vom Block 310 erzeugten Befehlssequenzen eignen sich zum Vergleich durch Abstandsfunktionen, da der Block 330 Sequenzen von ganzen Zahlen erzeugt, die durch eine Abstandsfunktion als einzelne Elemente behandelt werden können. Herkömmliche Zeichenfolgen-Abstandsfunktionen liefern jedoch keine Abstandsmetriken, die für die Erkennung von Befehlssequenzen von Interesse ausreichen. Zum Beispiel bietet das Wissen, dass zwei Zeichenfolgen sich um einen Abstand von 1 unterscheiden, wenig nützliche Informationen für die Computerviruserkennung.
-
In einer Ausführungsform führt der Block 340 eine unten beschriebene benutzerdefinierte Abstandsfunktion durch, die reduzierte Sequenzen von ganzen Zahlen erzeugt, die die Erkennung von Befehlssequenzen von Interesse unterstützen. Der Einfachheit halber wird die benutzerdefinierte Abstandsfunktion des Blocks 340 unter Bezugnahme auf die 4 und 5 diskutiert. 4 veranschaulicht einen beispielhaften Prozess 400 zum Durchführen der benutzerdefinierten Abstandsfunktion in einer Ausführungsform. 9 veranschaulicht beispielhafte Sequenzen von ganzen Zahlen, wie sie durch den beispielhaften Prozess 800 verarbeitet werden, in der einen Ausführungsform.
-
Zu 4 kommend, bei Block 410 identifiziert die benutzerdefinierte Abstandsfunktion ganze Zahlen, die in benachbarten Paaren von Sequenzen von ganzen Zahlen auftreten, die durch Block 340 (3) erzeugt werden. 5A veranschaulicht beispielhafte Sequenzen 510–519 von ganzen Zahlen. 5B veranschaulicht beispielhaft eine ganze Zahl „101”, die in mindestens Paaren von benachbarten Sequenzen 510–511, 511–512 und 512–513 von ganzen Zahlen erscheint. (Beachte, die Sequenzen 514–519 von ganzen Zahlen sind der Einfachheit halber nicht dargestellt). Bei Block 410 identifiziert die benutzerdefinierte Abstandsfunktion auch die erste Instanz einer identifizierten ganzen Zahl in Paaren von benachbarten Sequenzen von ganzen Zahlen. 5C veranschaulicht, dass die erste Instanz von „101” in benachbarten Sequenzen 510–511, 511–512 und 512–513 von ganzen Zahlen identifiziert wird.
-
Bei Block 420 (4) richtet die benutzerdefinierte Abstandsfunktion die ersten Instanzen der identifizierten ganzen Zahl in einem Paar benachbarter Sequenzen von ganzen Zahlen aus. 5D veranschaulicht die Ausrichtung der ersten Instanzen von „101” in Paaren von benachbarten Sequenzen 510–511, 511–512 und 512–513 von ganzen Zahlen.
-
Bei Block 430 (4) kann unter bestimmten Bedingungen eine reduzierte Sequenz von ganzen Zahlen für ein Paar benachbarter Sequenzen von ganzen Zahlen erzeugt werden. Eine reduzierte Sequenz von ganzen Zahlen wird (für ein Paar benachbarter Sequenzen von ganzen Zahlen) erzeugt, wenn eine oder mehrere der ganzen Zahlen, die dem Paar benachbarter Gruppen von Sequenzen von ganzen Zahlen gemeinsam sind, zwei Bedingungen erfüllen. Das heißt, eine reduzierte Sequenz von ganzen Zahlen wird erzeugt, wenn eine oder mehrere der ganzen Zahlen, die dem Paar von benachbarten Gruppen von Sequenzen gemeinsam sind, (i) in der gleichen Reihenfolge in dem Paar benachbarter Sequenzen von ganzen Zahlen erscheinen, und (ii) Positionen in dem Paar von Sequenzen von ganzen Zahlen haben, die innerhalb eines ersten Abstandsschwellenwertes liegen. In einer Ausführungsform ist der erste Abstandsschwellenwert vier. Wenn sie erzeugt wird, würde eine reduzierte Sequenz von ganzen Zahlen solche ganzen Zahlen aufweisen, die die oben genannten Anforderungen (i) und (ii) erfüllen (in Bezug auf ein Paar benachbarter Sequenzen von ganzen Zahlen).
-
Zum Beispiel, unter Bezugnahme auf 5E, wenn die erste Instanz von „101” zwischen den Sequenzen 510 und 511 von ganzen Zahlen ausgerichtet ist, erfüllen die ganzen Zahlen „48” und „52” die oben angegebenen Anforderungen (i) und (ii). Insbesondere erscheinen die ganzen Zahlen „101”, „48”, und „52” in beiden Sequenzen 510 und 511 von ganzen Zahlen in der gleichen Reihenfolge. Ferner erscheint die ganze Zahl „48” in beiden Sequenzen von ganzen Zahlen 510 und 511 innerhalb des ersten Abstandsschwellenwerts (von vier, in der vorliegenden Ausführungsform). Somit wird, wie in 5F, eine reduzierte Sequenz 520 von ganzen Zahlen erzeugt, und umfasst die Sequenz „101 48 52” von ganzen Zahlen. Wie in 5F auch gezeigt wird, erfüllen die ganzen Zahlen „101”, „48”, und 52 in den Sequenzen 511 und 512 von ganzen Zahlen auch die oben genannten Anforderungen (i) und (ii). Somit wird eine reduzierte Sequenz 521 von ganzen Zahlen erzeugt, die die Sequenz von ganzen Zahlen „101 48 52” umfasst. Wie auch in 5F bezeigt wird, erfüllen die ganzen Zahlen „53” und „101” in den Sequenzen 512 und 513 von ganzen Zahlen auch die oben genannten Anforderungen (i) und (ii). Somit wird eine reduzierte Sequenz 522 von ganzen Zahlen erzeugt, die die Sequenz von ganzen Zahlen „53 101” umfasst.
-
Die Blöcke 410–430 wiederholen sich für andere ganze Zahlen, die innerhalb mindestens eines Paares von benachbarten Sequenzen von ganzen Zahlen auftreten. Zum Beispiel erscheint die ganze Zahl „48” auch in mindestens einem Paar von benachbarten Sequenzen von ganzen Zahlen unter den Sequenzen 510–519 von ganzen Zahlen. Somit werden die Blöcke 410–430 für eine 4-Bit-Ganzzahl „48” wiederholt.
-
Nach Abschluss des Blocks 430 (der in einigen Beispielen eine beispielhafte Zeichenfolgenfunktion ist, die in Block 340 von 3 ausgeführt wird) geht die Verarbeitung zu Block 350 (3) über. Bei Block 350 wird die Frequenz, bei der eine reduzierte Sequenz von ganzen Zahlen innerhalb eines zweiten Abstandsschwellenwerts in den Sequenzen der in Block 330 erzeugten ganzen Zahlen erscheint, bestimmt. Der erste und der zweite Abstandsschwellenwert können gleich sein oder können unterschiedlich sein. In einer Ausführungsform ist der zweite Abstandsschwellenwert vier. 6A veranschaulicht beispielhafte Sequenzen 510–519 von ganzen Zahlen, die durch Block 330 erzeugt wurden. 6B veranschaulicht das Erscheinen von reduzierten Sequenzen 520–522 (5F) von ganzen Zahlen innerhalb von Sequenzen 510–519 von ganzen Zahlen. Wie gezeigt, erscheint in acht der zehn Sequenzen 510–519 von ganzen Zahlen eine reduzierte Sequenz 520 von ganzen Zahlen („101 48 52”) (innerhalb des beispielhaften zweiten Abstandsschwellenwerts von vier). Somit ist eine Frequenz von 40% mit einer reduzierten Sequenz 520 von ganzen Zahlen verknüpft. Aus dem gleichen Grund ist eine Frequenz von 40% mit einer reduzierten Sequenz 521 von ganzen Zahlen verknüpft. Beachte, dass reduzierte Sequenzen 520 und 521 von ganzen Zahlen nicht innerhalb des zweiten auftreten Abstandsschwellenwerts (von vier, in diesem Beispiel) in der Sequenz 516 Sequenz von ganzen Zahlen erscheinen, da die ganzen Zahlen „101” und „48” in der Ganzzahl-Sequenz 516 durch mehr als vier Positionen getrennt sind. Wie auch gezeigt wird, erscheint eine reduzierte Sequenz 522 von ganzen Zahlen („53 101”) (innerhalb des beispielhaften zweiten Abstandsschwellenwerts von vier) in drei der zehn Sequenzen 510–519 von ganzen Zahlen. Somit ist eine Frequenz von 30% mit einer reduzierten Sequenz 522 von ganzen Zahlen verknüpft. Die Frequenzen, die mit reduzierten Sequenzen 520–521 von ganzen Zahlen verknüpft sind, sind in 6B dargestellt. Diese Werte, die die Frequenzen angeben, mit denen reduzierte Sequenzen von ganzen Zahlen innerhalb eines Abstandsschwellenwerts in Sequenzen von ganzen Zahlen erscheinen, können mit dem Begriff „Konfidenzwerte” bezeichnet werden.
-
Bei Block 360 (3) werden reduzierte Sequenzen von ganzen Zahlen mit Konfidenzwerten unterhalb eines Schwellenkonfidenzwerts verworfen. In einer Ausführungsform liegt der Schwellenkonfidenzwert zwischen 40–50%. Die 6C veranschaulicht die Verwerfung der reduzierten Sequenz 522 von ganzen Zahlen. Zusätzlich werden reduzierte Sequenzen 520 und 521 von ganzen Zahlen (die gleich sind) de-dupliziert und als reduzierte Sequenz 630 von ganzen Zahlen beibehalten. Für die Zwecke dieser Offenbarung kann jede reduzierte Sequenz 630 von ganzen Zahlen als „Metaausdruck” bezeichnet werden.
-
Der Metaausdruck 630 stellt die Informationen dar, die ausreichen, um eine Befehlsaktivität von Interesse innerhalb eines virtuellen Adressraums zu erkennen. Insbesondere ist der Metaausdruck 630 ausreichend, um die Befehlssequenz zu erkennen, die durch die anfängliche Eingabe zum Prozess 300 (3) dargestellt wird. Es sei daran erinnert, dass die Eingabe zum Prozess 300 (3) ein Satz von Befehlen ist, die mit einem Angriff, wie beispielsweise einem Angriff unter Verwendung eines Computervirus, verknüpft sind.
-
Der Prozess 300 (3) kann für andere Arten von Befehlssequenzen von Interesse wiederholt werden. Beispielsweise kann der Prozess 300 unter Verwendung einer Befehlssequenz durchgeführt werden, die einen Angriff von Computerwurm A anzeigt, um einen Metaausdruck zum Erkennen des Computerwurms A und der Varianten des Computerwurms A zu identifizieren. Der Prozess 300 kann erneut unter Verwendung von Befehlssequenzen durchgeführt werden, die einen Angriff durch Computerausnutzung B anzeigen, um einen Metaausdruck zum Erkennen des Computerexploits B und seiner Varianten zu identifizieren. Tatsächlich kann der Prozess 300 für verschiedene Computerviren, Malware, Würmer, Trojaner, Bots, Eindringungen (z. B. unautorisierter Zugriff), Exploits (z. B. Eskalation von Privilegien, Verletzung der Vertraulichkeit), zeitbasierte Angriffe (z. B. Dienstverweigerung), oder dergleichen, die bekannt sind, dass sie existieren, wiederholt werden, um Metaausdrücke zu bestimmen, die verwendet werden können, um bösartige Befehlen sowie deren jeweilige Varianten zu identifizieren.
-
Wichtig ist, dass bestimmt wurde, dass viele verschiedene bösartige Befehlssequenzen die gleichen Metaausdrücke teilen. Das heißt, zwei verschiedene Befehlssequenzen von Interesse (wie beispielsweise ein bekannter Computervirus A und ein bekannter Computervirus B) können denselben Metaausdruck teilen und sind daher mit einem einzigen Metaausdruck nachweisbar. Ferner kann ein Metaausdruck, der beispielsweise von einem vorhandenen Computervirus erzeugt wird, dazu verwendet werden, alle Varianten des vorhandenen Computervirus zu erkennen, unabhängig von den Permutationen, Größen, oder Charakteristiken der Varianten (d. h. selbst wenn die Varianten unbekannt sind). Nur ein völlig neuer Typ von Computervirus und nicht eine Variante eines existierenden Computervirus würde durch den vorhandenen Metaausdruck nicht erkannt werden. Auf diese Weise genügt eine Handvoll Metaausdrücke, um viele, wenn nicht sogar alle bekannten Computerviren (deren Anzahl zwischen 2,5 bis 4 Millionen, abhängig von der Ursprungsquelle, liegt) sowie deren jeweilige Varianten zu identifizieren.
-
Die 7 veranschaulicht 9 beispielhafte Metaausdrücke 700–712. Die Metaausdrücke 700–712 umfassen insgesamt weniger als 200 (8-Bit) Bytes und können dazu verwendet werden, alle Varianten des vorhandenen Computervirus zu erkennen, wie oben diskutiert. Diese Größe steht in starkem Kontrast zu der Größe einer typischen Datenbank von Antivirussignaturen, die in der Größenordnung von 50 MB oder mehr liegt. Die Struktur und die minimale Größe dieser Metaausdrücke bieten im Vergleich zu herkömmlichen Computersicherheitstechnologien enorme Recheneffizienzen.
-
3. Laufzeit
-
Die Effizienz, mit der die Befehlssequenzen von Interesse unter Verwendung der Metaausdrücke, die durch den Prozess 300 bereitgestellt werden, erkannt werden können, wird nun diskutiert. Nach Abschluss des Prozesses 300 (der ein beispielhafter UTMS-Trainingsprozess ist, der bei Block 210 von 1 ausgeführt wird) geht die Verarbeitung zum Block 220 von 1 über. Bei Block 220 verwendet ein UTMS Metaausdrücke, um einen virtuellen Adressraum zu analysieren, und zu erkennen, ob der virtuelle Adressraum normal oder anormal ist. Die Verarbeitung bei Block 220 beginnt mit dem Erhalten einer Darstellung des virtuellen Adressenraums. Zu diesem Zweck können die Techniken des Blocks 310 (3) verwendet werden. Wie beschrieben, kann die Darstellung beispielsweise unter Verwendung einer Stapelzurückverfolgungsfunktion erhalten werden. Als nächstes werden Befehlssequenzen der Darstellung auf relevante Informationen hin gefiltert. Zu diesem Zweck können die Techniken des Blocks 320 (3) verwendet werden. Als nächstes werden die relevanten Befehlssequenzen in Sequenzen von ganzen Zahlen umgewandelt. Die Bitgröße der während der Laufzeit verwendeten ganzen Zahlen ist die gleiche wie die Bitgröße der ganzen Zahlen, die während des Trainings in einigen Beispielen verwendet wurden. In einer Ausführungsform sind die ganzen Zahlen 4 Bits groß. In einer anderen Ausführungsform sind die ganzen Zahlen 8 Bits groß. Zum Zwecke der Umwandlung relevanter Befehlssequenzen in Sequenzen von ganzen Zahlen können die Techniken des Blocks 330 (3) verwendet werden. Es sei daran erinnert, dass in einigen Beispielen das UTMS weitere virtuelle Adressräume analysieren kann, um zu bestimmen, ob der virtuelle Adressraum normal oder anormal ist. Dementsprechend können die Techniken der Blöcke 310, 320 und 330 gleichzeitig auf eine Vielzahl von virtuellen Adressenräumen angewendet werden.
-
Die durch Block 330 erzeugten Sequenzen von ganzen Zahlen werden mit einem oder mehreren Metaausdrücken verglichen, um zu bestimmen, ob der analysierte virtuelle Adressraum normal oder anormal ist. Ein analysierter virtueller Adressraum wird als „anormal” betrachtet, wenn zwei Kriterien erfüllt sind: (i) jede ganze Zahl in einem Metaausdruck ist in der Sequenz von ganzen Zahlen vorhanden, die dem virtuellen Adressraum entspricht, und (ii) die Sequenz von ganzen Zahlen erscheint in der gleichen Reihenfolge sowohl in der entsprechenden Sequenz von ganzen Zahlen als auch in dem Metaausdruck. Bemerkenswert ist, dass ein virtueller Adressraum als normal betrachtet wird, wenn die Bedingung (i) darin fehlschlägt, wahr zu sein. (Das Fehlschlagen der Bedingung (ii) ist weniger von Nutzen, weil eine Sequenz von ganzen Zahlen mehrere Instanzen einer bestimmten ganzen Zahl haben kann und alle Instanzen bei der Bedingung (ii) fehlschlagen müssen, damit die Bedingung (ii) als Ganzes fehlschlägt.)
-
Wenn ein anormaler Verkehr erkannt wird, folgt das UTMS dem Entscheidungsblock 230 zum Block 240, wo eine oder mehrere geeignete Reaktionen erzeugt werden. Wenn ein normaler virtueller Adressraum erkannt wird, kehrt das UTMS zum Block 220 zurück und analysiert zusätzliche virtuelle Adressräume eines oder mehrerer anderer Prozesse und/oder darauffolgend den gleichen Prozess. Die Blöcke 210–230 werden mit Bezug auf 8 diskutiert. 8 stellt beispielhafte Sequenzen von ganzen Zahlen 800–809 und einen beispielhaften Metaausdruck 810 dar. Der Metaausdruck 810 kann einer der Metaausdrücke sein, die während des Trainings bereitgestellt (z. B. erzeugt) wurden (Block 210 von 1). Die Länge des Metaausdrucks 810 wird der Einfachheit halber verkürzt. Wie gezeigt, enthalten die Sequenzen 801, 802 und 809 alle ganzen Zahlen des Metaausdrucks 810 in der gleichen Reihenfolge, in der die ganzen Zahlen im Metaausdruck 810 erscheinen. Somit sind alle Sequenzen 801, 802 und 809 von ganzen Zahlen mit virtuellen Adressräumen verknüpft, die als anormal angesehen werden. Somit enthalten die Sequenzen 800 und 803–808 von ganzen Zahlen nicht alle geordneten ganzen Zahlen des Metaausdrucks 810. Somit sind Sequenzen 800 und 803–808 von ganzen Zahlen mit virtuellen Adressräumen verknüpft, die als normal betrachtet werden.
-
Wie aus der vorstehenden Diskussion ersichtlich ist, führt ein UTMS bei Block 220 viele Ganzzahlvergleiche durch. Somit ist die Optimierung von Ganzzahlvergleichen für die Effizienz des UTMS wichtig. Es sei daran erinnert, dass ein virtueller Adressraum als normal betrachtet wird bei der ersten Instanz, in der eine ganzen Zahl in dem Metaausdruck in der Sequenz von ganzen Zahlen, die dem virtuellen Adressraum entsprechen, fehlt. Somit wird die Leistung des UTMS verbessert, wenn eine frühzeitige „normal”-Bestimmung durchgeführt werden kann. Hierzu ist es von Nutzen, die Technik des Blocks 220 so zu strukturieren, dass die Ganzzahlvergleiche zwischen einer Sequenz von ganzen Zahlen und einem Metaausdruck beendet wird, sobald eine ganze Zahl aus dem Metaausdruck in der Sequenz von ganzen Zahlen als fehlend identifiziert wird.
-
In einer Ausführungsform verwendet der Block 220 einen verschachtelten Computerprogrammiersprachenausdruck, der einen Gesamtwert von „fehlgeschlagen” (z. B. einen Booleschen Wert) zurückgibt, wenn irgendeine der verschachtelten Ebenen eine „falsch” Bedingung zurückgibt. Somit wird, sobald ein UTMS die Abwesenheit einer ganzen Zahl (bei einer der verschachtelten Ebenen) identifiziert, die Verarbeitung des gesamten verschachtelten Computerprogrammiersprachenausdrucks beendet. Der entsprechende virtuelle Adressraum wird somit als normal identifiziert (in diesem Fall ist keine zusätzliche Bedrohungserkennung erforderlich), und ein darauffolgender virtueller Adressraum kann analysiert werden. Beispielsweise erlaubt die LISP-Computerprogrammiersprache einen verschachtelten Ausdruck in der Form ((((A) (B)) (C)) (D)), der einen Gesamtwert von „fehlgeschlagen” zurückgibt, wenn einer der Ausdrücke (A), (B), (C) und/oder (D) „falsch” ist. In diesem Beispiel kann der Ausdruck (A) abfragen, ob die erste ganzen Zahl in einem Metaausdruck in einer Sequenz von ganzen Zahlen erscheint, und der Ausdruck (B) kann abfragen, ob die zweite ganze Zahl im Metaausdruck in der Sequenz von ganzen Zahlen erscheint, und so weiter.
-
Bei Block 240 können geeignete Reaktionen erzeugt werden. Eine geeignete Reaktion kann ein Benutzer- oder Systemalarm sein, der das Vorhandensein einer Befehlssequenz von Interesse anzeigt. Eine andere geeignete Reaktion kann sein, einen Prozess, oder Threads eines Prozesses, zu beenden, der mit einem anormalen virtuellen Adressraum verknüpft ist. Eine weitere geeignete Reaktion kann auch das Beenden mindestens eines Threads von jedem einer Vielzahl von Prozessen umfassen.
-
Teile des Prozesses 200 (1) können in einem beispielhaften Computersystem 900 implementiert werden, das in 9 dargestellt wird. In einigen Ausführungsformen ist das Computersystem 900 ein elektronisches Gerät, einschließlich, aber nicht beschränkt auf, einem Router, eines Gateways, einer Firewall, einem Mobilgerät, einem Desktopcomputer, einem Laptopcomputer, einem Mobiltelefon, einem Tablet, oder einer beliebigen Kombination davon. In einigen Ausführungsformen ist das Computersystem 900 ein dedizierter Mikroprozessor, wie beispielsweise ein Kryptoprozessor. Insbesondere können die Trainingsaspekte des Prozesses 200 (d. h. Block 210) und die Laufzeitaspekte des Prozesses 200 (d. h. die Blöcke 220–240) auf demselben oder auf verschiedenen Computersystemen implementiert werden.
-
Wie in 9 gezeigt wird, umfasst das Computersystem 900 eine Computer-Hauptplatine 902 mit dem Bus 910, der den I/O-Abschnitt 904, eine oder mehrere zentrale Verarbeitungseinheiten (CPU) 906, und einen Speicherabschnitt 908 miteinander verbindet. Der Speicherabschnitt 908 kann ein dazugehöriges Speichermodul 920 aufweisen. Das Speichermodul 920 kann beispielsweise ein nichtflüchtiger Speicher (z. B. NAND-Flash, NOR-Flash) und/oder flüchtiger Speicher sein und kann ferner in einigen Beispielen ein entfernbares Speichergerät umfassen. Der I/O-Abschnitt 904 ist mit der Netzwerkschnittstelle 912 verbunden, die Netzwerkpakete empfängt und/oder sendet. Der I/O-Abschnitt 904 kann mit der Anzeige 914, dem Eingabegerät 916, und/oder der Speichereinheit 918 verbunden sein. Der Speicherabschnitt 908, das Speichermodul 920, und/oder die Speichereinheit 922 können das computerlesbare Medium, das computerausführbare Befehle und/oder Daten zur Durchführung eines beliebigen der oben beschriebenen Prozesse unter Verwendung der CPU 906 enthält, speichern (z. B. berührbar verkörpern. Die computerausführbaren Befehle können beispielsweise in einer Allzweck-Programmiersprache (z. B. LISP, C) oder in einer speziellen anwendungsspezifischen Sprache geschrieben sein. Das Eingabegerät 916 kann ein USB-Port sein, der Eingaben von USB-kompatiblen Geräten, wie beispielsweise einer Tastatur, einer Maus, einem Speicherstick, oder dergleichen, unterstützt. Zumindest einige Werte, die auf den Ergebnissen der oben beschriebenen Prozesse basieren, können in den Speicher, wie beispielsweise dem Speicher 908, dem Speichermodul 920, und/oder der Plattenspeichereinheit 918 zur darauffolgenden Verwendung gespeichert werden.
-
Teile des Prozesses 200 (1) können auch über spezifisch angeordnete integrierte Schaltungen (z. B. anwendungsspezifische integrierte Schaltungen) in einen Prozessor implementiert werden. In einigen Ausführungsformen kann die integrierte Schaltung Teil des Hauptprozessors eines Geräts, wie beispielsweise der Hauptprozessor eines Mobiltelefons, sein. In einigen Ausführungsformen kann die integrierte Schaltung Teil eines Hilfsprozessors eines Geräts, wie beispielsweise ein Prozessor, der mit der Hauptplatine eines Laptops verbunden ist, sein. Die integrierten Schaltungen können computerausführbare Befehlen und/oder Daten für jede der oben beschriebenen Prozesse enthalten. Die computerausführbaren Befehle können beispielsweise in einer speziellen anwendungsspezifischen (z. B. prozessorspezifischen) Sprache geschrieben werden.
-
In einigen Ausführungsformen sind computerausführbare Befehle, die auf der Programmiersprache C basieren, die weniger als 1 MB betragen, ausreichend, um den Prozess 200 (1) auszuführen. Die Ausführung dieser computerausführbaren Befehle erfordert nicht mehr als 300 Kilobyte (16-Bit-Bytes) des Laufzeitspeichers (z. B. Speicher mit wahlfreiem Zugriff). Moderne Computersysteme und/oder Prozessoren sind gut dazu in der Lage, computerausführbare Befehle dieser Größen zu verarbeiten.
-
Obwohl nur bestimmte beispielhafte Ausführungsformen oben ausführlich beschrieben worden sind, wird der Fachmann ohne weiteres erkennen, dass viele Modifikationen in den beispielhaften Ausführungsformen möglich sind, ohne materiell von den neuartigen Lehren und Vorteilen dieser Offenbarung abzuweichen. Zum Beispiel können Aspekte der oben offenbarten Ausführungsformen in anderen Kombinationen kombiniert werden, um zusätzliche Ausführungsformen zu bilden. Dementsprechend sollen alle derartigen Modifikationen als innerhalb des Rahmens dieser Technologie liegend betrachtet werden.