DE10393807B4 - Verfahren zum Schutz von Software vor Debugger-Angriffen - Google Patents
Verfahren zum Schutz von Software vor Debugger-Angriffen Download PDFInfo
- Publication number
- DE10393807B4 DE10393807B4 DE10393807T DE10393807T DE10393807B4 DE 10393807 B4 DE10393807 B4 DE 10393807B4 DE 10393807 T DE10393807 T DE 10393807T DE 10393807 T DE10393807 T DE 10393807T DE 10393807 B4 DE10393807 B4 DE 10393807B4
- Authority
- DE
- Germany
- Prior art keywords
- agent
- processing
- tamper
- buffer
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 239000003795 chemical substances by application Substances 0.000 claims abstract description 109
- 238000012545 processing Methods 0.000 claims abstract description 71
- 239000000872 buffer Substances 0.000 claims abstract description 44
- 230000009471 action Effects 0.000 claims abstract description 5
- 238000012795 verification Methods 0.000 claims description 14
- 230000007123 defense Effects 0.000 claims description 4
- 230000000694 effects Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 10
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 208000031212 Autoimmune polyendocrinopathy Diseases 0.000 description 1
- 235000019395 ammonium persulphate Nutrition 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000000261 appearance potential spectroscopy Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000033458 reproduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
Verfahren
zum Abwehren eines Angriffs auf ein manipulationssicheres Anwendungsprogramm,
umfassend:
Beginnen der Ausführung des manipulationssicheren Anwendungsprogramms;
Laden mehrerer Agenten und Starten mehrerer Verarbeitungsroutinen, wobei jede Routine einen der Agenten ausführt;
gleichzeitiges Ausführen jedes Agenten im Wesentlichen parallel, so, daß für jeden Agenten ein Verarbeitungsergebnis für eine Wiederholung einer Phase der Protokollverarbeitung hervorgebracht wird;
Speichern jedes Verarbeitungsergebnisses in einem Eintrag in einem Puffer, der jedem Agenten zugeordnet ist;
Wiederholen der Ausführungs- und Speicheraktionen für mehrere Wiederholungen der Protokollverarbeitung;
Kombinieren von Verarbeitungsergebnissen von den ersten Einträgen der Puffer zu einem kombinierten Ergebnis, wenn einer der Agenten ein Verarbeitungsergebnis in einem letzten Eintrag des Puffers des Agenten speichert; und
Ausführen einer Störungssemantik, wenn das kombinierte Ergebnis einen Fehler anzeigt.
Beginnen der Ausführung des manipulationssicheren Anwendungsprogramms;
Laden mehrerer Agenten und Starten mehrerer Verarbeitungsroutinen, wobei jede Routine einen der Agenten ausführt;
gleichzeitiges Ausführen jedes Agenten im Wesentlichen parallel, so, daß für jeden Agenten ein Verarbeitungsergebnis für eine Wiederholung einer Phase der Protokollverarbeitung hervorgebracht wird;
Speichern jedes Verarbeitungsergebnisses in einem Eintrag in einem Puffer, der jedem Agenten zugeordnet ist;
Wiederholen der Ausführungs- und Speicheraktionen für mehrere Wiederholungen der Protokollverarbeitung;
Kombinieren von Verarbeitungsergebnissen von den ersten Einträgen der Puffer zu einem kombinierten Ergebnis, wenn einer der Agenten ein Verarbeitungsergebnis in einem letzten Eintrag des Puffers des Agenten speichert; und
Ausführen einer Störungssemantik, wenn das kombinierte Ergebnis einen Fehler anzeigt.
Description
- 1. Technisches Gebiet
- Die vorliegende Erfindung betrifft allgemein den Schutz von Inhalten und die digitale Rechteverwaltung und insbesondere die Abwehr von Debugger-Angriffen auf Software.
- 2. Beschreibung
- Die Personalcomputerplattform (PC) ist eine offene und zugängliche Computerarchitektur. Diese Offenheit des PC bedeutet jedoch, daß er eine grundsätzlich unsichere Computerplattform ist. Sowohl auf die Hardware als auch auf die Software kann zum Zweck der Beobachtung und Modifikation zugegriffen werden. Diese Offenheit ermöglicht es böswilligen Anwendern und Programmen, Ausführungscode zu beobachten und zu modifizieren, eventuell mit Hilfe von Software-Tools wie beispielsweise Debuggern und Systemdiagnose-Tools. Trotz dieser Risiken gibt es Kategorien von Operationen, die sicher auf einer grundsätzlich unsicheren PC-Plattform ausgeführt werden müssen. Es handelt sich dabei um Anwendungen, bei denen davon ausgegangen werden muß – oder wenigstens verifiziert werden muß –, daß die grundlegende Integrität der Operation zuverlässig ist. Beispiele solcher Operationen sind Finanztransaktionen und anderer elektronischer Handel, die unbeaufsichtigte Erteilung von Zugangsgenehmigungen und digitale Inhaltsverwaltung.
- Wenn Inhaltsanbieter der Bedrohung durch digitale Piraterie auf dem PC begegnen wollen, so benötigen sie neue Software, die Angriffen eines böswilligen Anwenders widerstehen kann. Bei diesem Szenario will der böswillige Anwender möglicherweise bestimmte Komponenten der Software manipulieren oder ersetzen, um sich unbefugten Zugang zu digitalen Inhalten zu verschaffen oder unbefugt Reproduktionen herzustellen. Es kann ein Kryptosystem auf der Grundlage kryptografischer Verfahren, die in Verbindung mit der Software arbeiten, verwendet werden, um am Schutz der Inhaltsrechte des Eigentümers mitzuwirken. Inhalte können verschlüsselt werden, um ein gewisses Maß an Schutz zu bieten, aber die Software, die kryptografische Schlüssel erzeugt und auf sie zugreift, und die Software, die während der Wiedergabe auf den entschlüsselten Inhalt zugreift, sind noch immer durch einen Angriff gefährdet.
- Ein Angreifer kann versuchen, mit Hilfe von Debuggern die Software, die auf einen interessierenden Inhalt zugreift, in Einzelschrittphasen auszuführen. In einigen Fällen kann der Debugger einen Programmstopp in der Software setzen, um die Ausführung an dem gewählten Unterbrechungspunkt anzuhalten. Der Debugger kann dann dazu verwendet werden, Daten, die von der Software verarbeitet werden, zu untersuchen. Der Debugger kann auch die Ausführung aufeinanderfolgender individueller Befehle veranlassen, wodurch eine fortgesetzte Untersuchung von Programmdaten ermöglicht wird. Obgleich von einigen Techniken bekannt ist, daß sie solche Aktivitäten abwehren, werden zusätzliche Verfahren gebraucht, um die Sicherheit des Systems weiter zu verbessern.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- Die Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung der vorliegenden Erfindung ersichtlich.
-
1 ist ein Blockschaubild einer Architektur zum Schutz von Software vor Debugger-Angriffen durch Verwendung von nebenläufigen Routinen gemäß einer Ausführungsform der vorliegenden Erfindung. -
2 ist ein Schaubild, das eine sichere Speicherung mit mehreren Puffern gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. -
3 ist ein Ablaufdiagramm, das den Schutz von Software vor Debugger-Angriffen mittels nebenläufiger Agenten-Routinen gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. - DETAILLIERTE BESCHREIBUNG
- Eine Ausführungsform der vorliegenden Erfindung ist ein Verfahren zum Schutz von Software vor Debugger-Angriffen durch Verwendung von nebenläufigen Routinen. Bei wenigstens einer konkreten Ausführungsform der vorliegenden Erfindung können mehrere Integritätsverifizierungsagenten, jeder in seiner eigenen Routine, ausgeführt werden, dergestalt, daß die Integritätsüberprüfung von Softwarekomponenten durch die Agenten über die nebenläufigen Routinen verteilt wird. Wenn ein Angreifer einen Debugger verwendet, um eine der Routinen länger als einen zuvor festgelegten Zeitraum anzuhalten, so kann bei diesem System diese Unterbrechung der Verarbeitung erkannt werden, und die weitere Verarbeitung des Inhalts durch die Softwarekomponenten kann beendet werden.
- Wenn in der Beschreibung von "einer konkreten Ausführungsform" oder "einer Ausführungsform" der vorliegenden Erfindung die Rede ist, so heißt das, daß ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wird, in wenigstens einer konkreten Ausführungsform der vorliegenden Erfindung enthalten ist. Das heißt, daß das Auftauchen der Wendung "in einer konkreten Ausführungsform" an verschiedenen Stellen in der Beschreibung nicht unbedingt immer dieselbe Ausführungsform meint.
- Die Ausführungsformen der vorliegenden Erfindung stützen sich auf wenigstens mehrere Beobachtungen. Erstens gibt es kryptografische Techniken und Protokolle, die sich gut für den Schutz von Inhalten eignen und die mittels paralleler Algorithmen implementiert werden können. Zweitens planen Betriebssysteme Routinen in einer relativ gleichberechtigten Weise. Routinen, die als rechnerisch äquivalent programmiert wurden, sollten in der Lage sein, im Wesentlichen die gleiche Arbeitslast im Wesentlichen in der gleichen Zeit zu bewältigen, wenn die Routinen nicht gesperrt werden. Drittens haben viele handelsübliche Debugger einen von zwei üblichen Schwachpunkten. Wenn eine einzelne Routine als Einzelschritt ausgeführt wird, so werden entweder alle anderen Routinen angehalten, oder alle anderen Routinen werden mit vollem Tempo ausgeführt, bis eine Routine auf einen Programmstopp trifft oder gesperrt wird. Beispiele für den ersten Fall, wo alle anderen Routinen angehalten werden, sind der bekannte Debugger namens SoftIce des Microsoft Windows-Systems und Anwendungsdebugger für UNIX, die mit den /proc- und ptrace-Debugging-Primitiven arbeiten müssen. Diese synchronen Primitiven verhindern eine unabhängige und asynchrone Steuerung einzelner Routinen innerhalb eines UNIX-Prozesses und beschränken den Debugger auf die unabhängige Steuerung einer einzelnen Routine je UNIX-Prozeß. Siehe: "KDB: A Multi-threaded Debugger for Multi-threaded Applications", Peter A. Buhr und Mitarbeiter, Section 4, "Asynchronous Control", Protokoll des SIGMETRICS-Symposiums über parallele und verteilte Tools, Januar 1996. Ein Beispiel für den zweiten Fall, wo alle anderen Routinen mit vollem Tempo ausgeführt werden, bis eine Routine auf einen Programmstopp trifft oder gesperrt wird, sind viele Anwendungsdebugger von Microsoft Windows.
- In beiden Fällen ist es mit diesen Debuggern nicht möglich, mehr als eine einzige Routine zur selben Zeit als Einzelschritt auszuführen. Das Einzelschrittmerkmal ist eine wichtige Fähigkeit für einen Angreifer, weil bei bestimmten manipulationssicheren Codes (wie weiter unten beschrieben wird) keine Programmstopps mittels Codemodifizierung gesetzt werden können, weil ein Eingriff in die Integrität des Codes erkannt werden kann und zur Beendigung der Verarbeitung führt.
- Das Debugging gleichzeitiger Programme ist Gegenstand aktueller Forschungen, und ausgeklügelte nebenläufige Debugger wie beispielsweise KDB (wie bei Buhr und Mitarbeitern beschrieben) existieren als Prototypen für die UNIX-Umgebung. Diese nebenläufigen Debugger gehen aber davon aus, daß die ausgetestete oder untersuchte Anwendungssoftware in einem speziellen Debugmodus aufgebaut ist, wo die Anwendung mit einer speziellen Routinenbibliothek verknüpft ist. Die Debugger-Architektur enthält einen "globalen" Debugger und einen "lokalen" Debugger, der mit der Anwendung verknüpft ist. Die in die Anwendungssoftware hinein verknüpfte Routinenbibliothek unterstützt das Berichten von Ereignissen an den lokalen Debugger, der wiederum nach Bedarf über einen asynchronen Kanal mit dem globalen Debugger kommuniziert. Ein solcher Debugger wäre im vorliegenden Szenario allenfalls von sehr geringem Nutzen, weil die Anwendungssoftware (beispielsweise ein Inhaltswiedergabe-Anwendungsprogramm) nicht mit den Verknüpfungen zu den benötigten Debugroutinenbibliotheken auf dem freien Markt angeboten werden würde.
- Würde das geschehen, so würde dies die Sicherheit des Systems stark beeinträchtigen anstatt sie zu erhöhen. Ein solches Ergebnis würde vom Entwickler der Anwendungssoftware nicht befürwortet werden.
- Ausgehend von den inhärenten parallelen Aspekten einiger kryptografischer Protokolle, der Betriebssystemroutinenplanung und den Schwachpunkten derzeitiger Debugger verbessern Ausführungsformen der vorliegenden Erfindung die Sicherheit von Anwendungssoftware durch Verwendung von nebenläufigen Routinen für die sichere Berechnung von Zwischenergebnissen eines kryptografischen Protokolls. Wenn eine der Routinen über einen zuvor festgelegten Stillhaltezeitraum hinaus verzögert wird (möglicherweise infolge einer Programmstoppsetzung oder einer Einzelschrittausführung des Codes der verzögerten Routine durch einen Debugger), so ist das Gesamtergebnis der Verarbeitung aller Routinen falsch. Dieser falsche Wert kann erkannt werden, und die Verarbeitung des Inhalts der Anwendungssoftware kann beendet werden, wodurch dem Angreifer der Zugang zu dem Inhalt entzogen wird.
-
1 ist ein Blockschaubild einer Architektur zum Schutz von Software vor Debugger-Angriffen durch Verwendung von nebenläufigen Routinen gemäß einer Ausführungsform der vorliegenden Erfindung. In dem System10 kann eine Anwendung12 zum Zugreifen auf einen Inhalt14 verwendet werden, solange ein oder mehrere Agenten feststellen, daß die Integrität der Anwendung nicht beeinträchtigt wurde. Bei einer Ausführungsform umfaßt die Anwendung eine Wiedergabeanwendung, die auf einen Inhalt zugreift und diesen wiedergibt, damit ein Anwender ihn hören und/oder sehen kann. Als Inhalt kommt jede Art von Daten in Betracht, beispielsweise Audiodaten, Videodaten und/oder Bilddaten in jedem Format, das heute bekannt ist oder noch entwickelt wird. Bei einer konkreten Ausführungsform umfaßt die Anwendung12 manipulationssichere Software, um vertrauliche Daten auf einer unsicheren Computerplattform zu schützen, und der eine oder die mehreren Agenten18 ,20 und22 umfassen Integritätsverifizierungskernels (IVKs). Bei anderen Ausführungsformen können andere Schutzprotokolle verwendet werden, wie beispielsweise das Fait-Shamir-Signaturregime, und die Agenten können andere Komponenten als IVKs umfassen. - Manipulationssichere Software ist Software, die gegen Beobachtung und Modifizierung geschützt ist. Man kann in gewissen Grenzen darauf vertrauen, daß sie so arbeitet, wie sie programmiert wurde, selbst wenn ein böswilliger Angriff auf sie unternommen wird. Manipulationssichere Software ist positionsunabhängig und erfordert keine Umpositionierung im Speicher. Darum braucht manipulationssichere Software nicht im selben Adreßraum oder auf demselben Prozessor, wo sie erstellt wurde, zu laufen. Bei einer konkreten Ausführungsform wird derartige Software mittels eines (nicht gezeigten) manipulationssicheren Kompilierers erstellt. Der manipulationssichere Kompilierer ist ein Kompilierer, der, wenn er auf ein gut vorbereitetes Softwaremodul angewendet wird, das vom Klartextquellcodekompilierer erzeugte Image durch ein neues Image ersetzt, das verschleiert wurde. Diese selbstentschlüsselnde Software wird nur dann ordnungsgemäß ausgeführt, wenn kein Teil des Images seit der Zeit, da es von dem manipulationssicheren Kompilierer kompiliert wurde, verändert wurde. Der manipulationssichere Kompilierer ist ein Softwarekonzept, das Softwarekernels bereitstellt, die in der Lage sind, in einem "verborgenen" Ausführungsmodus zu arbeiten. Versuche zu dechiffrieren, was die Software tatsächlich tut, oder Modifikationen an der Software führen zu einem vollständigen Ausfall der Kernel (d. h. es erfolgt keine richtige Entschlüsselung).
- Bei einer konkreten Ausführungsform können einer oder mehrere der mehreren Agenten
18 ,20 und22 als Integritätsverifizierungskernels (IVKs) fungieren. Ein IVK ist Software, die verifiziert, daß der "Fingerabdruck" eines im Speicher befindlichen Programmimages (beispielsweise die gesamte Anwendung12 oder ein Teil von ihr) den Daten innerhalb einer zur Verfügung gestellten digitalen Signatur entspricht. Dieses Verfahren authentifiziert das Programmimage. Es stellt einen zuverlässigen Mechanismus zum Erkennen von Änderungen an ausführender Software bereit, wo derartige Änderungen durch Übertragungsfehler oder böswillige Angriffe auf die Software verursacht worden sein könnten. Eine unbefugte Änderung an der Software führt zu einer Störung des Verifizierungsprozesses. Wenn der Verifizierungsprozesses versagt, so kann die Ausführung weiterer Verarbeitungsvorgänge blockiert werden. Wenn beispielsweise der IVK erkennt, daß die Integrität der Anwendung verletzt ist, so kann unterbunden werden, daß die Wiedergabeanwendung ordnungsgemäße Fingerabdruckdaten erhält, die sie braucht, um einen kryptografischen Schlüssel zum Entschlüsseln und Wiedergeben des Inhalts zu erzeugen. IVKs für manipulationssichere Software sind so konfiguriert, daß sie Selbstüberprüfungen von Objektcode, zweiseitige Authentifizierungen von Partnermodulen und Überprüfungen von lokalen und entfernten Daten zur Verifizierung der Integrität eines Softwaremoduls ausführen. Der IVK ist selbstmodifizierend, selbstentschlüsselnd und kann installationsspezifisch sein. - Die prozeßinternen Softwaremodule, die in authentifizierter Weise miteinander kommunizieren wollen, können feststellen, daß das Modul, das angerufen wird, in der Tat das Modul ist, das erwartet wird, indem die digitale Signatur des angerufenen Moduls mittels eines zuvor festgelegten "Wurzel"-Schlüssels verifiziert wird. Dieser Prozeß heißt zweiseitige Authentifizierung. Bei Ausführungsformen der vorliegenden Erfindung kann jeder Agent zur Verifizierung der Integrität des ganzen oder eines Teils des Anwendungsprogramms verwendet werden. Jeder Agent kann des Weiteren zur Durchführung einer zweiseitigen Authentifizierung zwischen der Anwendung
12 und dem Agentenladeprogramm16 verwendet werden, indem beispielsweise die Techniken verwendet werden, die in dem US-Patent Nr. 6,105,137 mit dem Titel "Method and Apparatus for Integrity Verification, Authentication, and Secure Linkage of Software Modules" offenbart sind, das derselben Organisation, von der die vorliegende Erfindung stammt, gemeinsam zuerkannt wurde. Detaillierte Verfahren zur Herstellung manipulationssicherer Module und zur Bereitstellung einer Integritätsverifizierungsverarbeitung mit IVKs und einer zweiseitigen Authentifizierung sind im US-Patent Nr. 5,892,899 mit dem Titel "Tamper Resistant Methods and Apparatus" und im US-Patent Nr. 6,205,550 mit dem Titel "Tamper Resistant Methods and Apparatus", beschrieben, das beide derselben Organisation, von der die vorliegende Erfindung stammt, gemeinsam zuerkannt wurden. Techniken zum Verifizieren der Integrität eines Systems mit mehreren Komponenten sind in der anhängigen Patentanmeldung mit dem Titel "System and method for verifying integrity of system with multiple components", Seriennummer 09/967,738, detailliert beschrieben, das derselben Organisation, von der die vorliegende Erfindung stammt, gemeinsam zuerkannt wurde. - Das Agentenladeprogramm
16 leitet den Ruf der Anwendung zu Anwendungsprogrammschnittstellen (APSs) der mehreren Agenten18 ,20 und22 weiter. Das Agentenladeprogramm gewährleistet, daß Agenten geladen werden und individuelle Agentenverarbeitungsroutinen gestartet werden. Bei einer konkreten Ausführungsform enthält jede Routine einen Agenten. Es kann jede beliebige Anzahl (N) von Routinen (Routine 1, Routine 2,... Routine N) und von begleitenden Agenten (Agent 118 , Agent 220 ,... Agent N22 ) verwendet werden. Bei einer konkreten Ausführungsform ist das Agentenladeprogramm keine manipulationssichere Software. Die Agenten 1-N können rechnerisch äquivalente, spezifisch manipulationssichere Softwarekomponenten umfassen, die mit Techniken arbeiten, die wenigstens teilweise auf den Lehren der US-Patente Nr. 5,892,899, Nr. 6,105,137 und Nr. 6,205,550 basieren. Jedem Agenten kann eine einmalig vergebene Arbeitseinheit im Rahmen eines gleichzeitigen kryptografischen Protokolls, das von der Anwendung zum sicheren Zugreifen auf einen Inhalt verwendet wird, zur Ausführung zugewiesen werden. Jede Routine kann eine eindeutige, rechnerisch äquivalente Version eines Agenten enthalten, und jeder Agent kann einen gemeinsamen Zugang zu einem verschlüsselten sicheren Speichermodul24 haben. Der sichere Speicher umfaßt einen verschlüsselten Speicher, das während der Ausführung eines Agenten kopiert, entschlüsselt, aktualisiert, erneut verschlüsselt und ersetzt werden kann. -
2 ist ein Schaubild, das einen sicheren Speicher mit mehreren Puffern gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Bei einer konkreten Ausführungsform enthält der sichere Speicher24 mehrere Puffer26 ,28 ,30 und32 , wobei jeder Puffer einem der Agenten entspricht. Bei einer konkreten Ausführungsform können N Puffer vorhanden sein. Bei einer konkreten Ausführungsform umfaßt jeder Puffer einen ringförmigen Puffer, obgleich auch andere Datenstrukturen verwendet werden können. Die konkrete Größe und der konkrete Inhalt jedes Puffers hängen von dem jeweiligen Protokoll oder kryptografischen Verfahren ab, das von der Anwendung und den Agenten verwendet wird. Jeder Puffer kann mehrere Schlitze enthalten. Bei einer konkreten Ausführungsform können M Schlitze je Puffer vorhanden sein, wobei M eine beliebige positive ganze Zahl ist. Bei einer konkreten Ausführungsform kann M durch einen Systemdesigner festgelegt werden, um zu gewährleisten, daß die Agenten richtig arbeiten und trotzdem Debugger-Angriffe erkennen. Die Schlitze können dazu verwendet werden, individuelle Ergebnisse einer bestimmten Arbeitseinheit zu speichern, die von einem Agenten in einer Phase eines Protokolls ausgeführt wurde. Es kann ein Stillhaltezeitraum als die Zeitdauer definiert werden, die gleich M mal der Zeit ist, die es dauert, bis ein Agent eine Arbeitseinheit ausgeführt hat. Wenn eine Routine um eine Zeitspanne verzögert wird, die mindestens so lang ist wie der Stillhaltezeitraum, so kann ein Angriff eines Debuggers erkannt werden. Der sichere Speicher kann mittels bekannter kryptografischer Techniken geschützt werden. -
3 ist ein Ablaufdiagramm, das den Schutz von Software vor Debugger-Angriffen mittels nebenläufiger Routinen gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Bei Block50 lädt das (in1 nicht gezeigte) Betriebssystem das Anwendungsprogramm12 und beginnt mit dessen Ausführung. Bei einer konkreten Ausführungsform ist das Anwendungsprogramm eine Wiedergabeanwendung zum Zugreifen auf einen Inhalt und zum Wiedergeben dieses Inhalts, und ein Angreifer will möglicherweise die Wiedergabeanwendung mittels eines Debuggers angreifen, um sich unbefugten Zugang zu dem Inhalt oder zu kryptografischen Schlüsseln, die zur Entschlüsselung des Inhalts verwendet werden, zu verschaffen. Bei Block52 ruft die Anwendung eine Agenten-APS an, die erste Phase des Protokolls zu beginnen, um ordnungsgemäß befugten Zugang zum Inhalt14 von1 zu erhalten. Das Agentenladeprogramm16 lädt dann die mehreren Agenten und startet nebenläufige Verarbeitungsroutinen. Bei einer konkreten Ausführungsform enthält jede Routine einen eindeutigen, rechnerisch äquivalenten Agenten, der gleichzeitig im Wesentlichen parallel mit anderen Agenten ausgeführt wird. Bei Block56 beginnt jeder der N Agenten mit der Verarbeitung einer einmalig vergebenen Arbeitseinheit. Bei der ersten Wiederholung ist die Arbeitseinheit die erste Einheit für diesen Agenten. Bei einer konkreten Ausführungsform kann die Arbeitseinheit einen Zwischenwert im Rahmen eines kryptografischen Protokolls berechnen. Bei einer konkreten Ausführungsform beginnt jeder von mehreren Agenten von 1 bis N bei Block56 mit der Verarbeitung eines zugehörigen Teils des kryptografischen Protokolls im Wesentlichen zur selben Zeit und parallel. Bei Block58 , nachdem jeder Agent eine Rechenarbeitseinheit für die aktuelle Wiederholung der Protokollverarbeitung beendet hat, entschlüsselt jeder Agent die sicheren Speicherorte für den ringförmigen Puffer, der zu dem Agenten gehört, speichert das Arbeitsergebnis in einem ausgewählten Schlitz in dem Puffer, der für die aktuelle Wiederholung der Protokollverarbeitung geeignet ist, und verschlüsselt erneut die sicheren Speicherorte für den ringförmigen Puffer des Agenten. Nach der ersten Wiederholung speichert jeder Agent das Verarbeitungsergebnis jedes Agenten im ersten Schlitz des Puffers jedes Agenten. Nach den nächsten Wiederholungen speichert jeder Agent das nächste Verarbeitungsergebnis in einem nächsten Schlitz des Puffers jedes Agenten. In dem Maße, wie die Agenten die Arbeit für nachfolgende Wiederholungen ausführen, füllen sie auf diese Weise der Reihe nach die Schlitze der ringförmigen Puffer auf, bis einer der Agenten den letzten Schlitz M eines Puffers füllt. - Wenn bei einer konkreten Ausführungsform bei Schritt
60 der letzte Schlitz M eines ringförmigen Puffers für einen Agenten gefüllt wurde, so wird die Verarbeitung mit Block62 fortgesetzt. Andernfalls wird die Verarbeitung mit der nächsten Arbeitseinheit für diesen Agenten und die nächste Wiederholung bei Block56 fortgesetzt. Auf diese Weise arbeiten alle Agenten im Wesentlichen parallel und füllen so die Schlitze in ihren Puffern. Bei einer konkreten Ausführungsform kann ein zuvor festgelegter Stillhaltezeitraum ungefähr so lang sein wie die Anzahl der Schlitze in jedem Puffer (beispielsweise M) mal wenigstens der geschätzten Zeitdauer, die ein Agent für die Ausführung jeder Arbeitseinheit braucht. Wenn ein Agent bis zum Ende des festgelegten Stillhaltezeitraums (d. h. bis zu dem Zeitpunkt, an dem der zuerst beendende Agent das Ergebnis für Schlitz M erbracht hat) nicht wenigstens das Verarbeitungsergebnis für die erste Wiederholung erbringt, so kann davon ausgegangen werden, daß der Agent im Rahmen eines Angriffs auf die Anwendung durch einen Debugger angehalten wurde. Bei Block62 entschlüsselt der Agent, der als erster alle ihm zugewiesenen Arbeitseinheiten beendet hat (der "zuerst beendende Agent"), alle ersten Schlitze der Puffer26 ,28 ,30 ,32 in dem sicheren Speicher, kombiniert die Ergebnisse von den Schlitzen, die als erste die aktuelle Verarbeitungsphase beenden, und reicht die Ergebnisse an eine nächste Verarbeitungsphase in dem kryptografischen Protokoll weiter. Daten in anderen Schlitzen können verworfen oder ignoriert werden. - Bei einer konkreten Ausführungsform der vorliegenden Erfindung können die Blöcke
56 bis60 für jeden der Agenten 1 bis N im Wesentlichen parallel ausgeführt werden. Somit verarbeiten die Agenten Teile des kryptografischen Protokolls gleichzeitig und im Wesentlichen parallel. Es ist zu beachten, daß jeder einzelne oder mehrere der Agenten das kombinierte Ergebnis, das anhand der ersten Schlitze der Puffer ermittelt wurde, an die nächste Verarbeitungsstufe weiterereichen können. - Die Verarbeitung der nächsten Protokollphase kann mit Block
64 beginnen. Wenn festgestellt wird, daß das kombinierte Ergebnis, das durch den zuerst beendenden Agenten erhalten wurde, korrekt ist, so kann zur Verarbeitung der nächsten Stufe bei Block68 vorangeschritten werden. In welcher Weise festgestellt wird, ob das kombinierte Ergebnis korrekt ist, richtet sich nach dem jeweils verwendeten Protokoll. Im Fall von IVKs kann das kombinierte Ergebnis ein Hash sein, der mit einem erwarteten Wert verglichen wird, der zuvor errechnet wurde, als die verifizierte Anwendung ursprünglich signiert wurde. Dieser zuvor errechnete Wert kann in einer früheren Phase des Protokolls erhalten und in einem sicheren Speicher gespeichert worden sein. In diesem Fall würde der zuerst beendende Agent den Fehler erkennen und eine Störungssemantik ausführen, die dazu dient, den Zugriff auf den Inhalt zu verwehren. Bei einer anderen Ausführungsform der vorliegenden Erfindung kann der Agentenroutinenpool zur Implementierung eines Signaturverifizierungsregimes, wie beispielsweise Fait-Shamir, verwendet werden. In diesem Fall leitet der beendende Agent das kombinierte Ergebnis über einen sicheren authentifizierten Kanal an einen externen Prozeß auf dem eigenen Computer oder an einen anderen Computer beispielsweise im Internet weiter. In diesem Fall erkennt der externe Prozeß, daß die Signatur ungültig ist, und verwehrt den Zugriff auf den Inhalt mittels Abbruch des Protokolls. - Die nächste Stufe kann einen Ruf an eine andere Agenten-APS (beispielsweise einen anderen Routinenpool) umfassen, oder es könnte ein Ruf an einen außerhalb der Anwendung ablaufenden Prozeß sein, wie beispielsweise das Kommunizieren über einen sicheren authentifizierten Kanal an eine andere Komponente im System. Wenn das kombinierte Ergebnis der Verarbeitung durch die mehreren Agenten für den ersten Schlitz korrekt ist, so kann bei einer konkreten Ausführungsform die Verarbeitung bei Block
56 mit der nächsten Phase des Protokolls fortgesetzt werden. Wenn das kombinierte Ergebnis der Verarbeitung durch die mehreren Agenten falsch ist, so kann es sein, daß eine oder mehrere Routinen durch einen Debugger-Angriff angehalten oder verzögert wurden, was dazu führt, daß ein oder mehrere Agenten in diesen Routinen ihre Arbeitsergebnisse nicht innerhalb des zuvor festgelegten Stillhaltezeitraums vollenden und in den ersten Schlitzen des zugehörigen Puffers speichern können. In diesem Fall ist es zur Anzeige eines Angriffs gekommen, und bei Block66 kann eine Störungssemantik oder -verarbeitung ausgeführt werden. Bei einer konkreten Ausführungsform kann das Ausführen der Störungssemantik das Beenden der Ausführung des Anwendungsprogramms umfassen. - Die Ausführungsformen der vorliegenden Erfindung stellen ein neues Verfahren der Abwehr bereit, das eine gleichberechtigte Routinenplanung in Verbindung mit parallelen Eigenschaften kryptografischer Algorithmen und den Beschränkungen bekannter Debugger bei der Steuerung nebenläufiger Anwendungen nutzt. Die Ausführungsformen der vorliegenden Erfindung erhöhen die Komplexität und Solidität einer manipulationssicheren Softwarelösung durch Verwendung nebenläufiger, spezifischer Agentenroutinen. Wenn ein Angreifer versucht, die Anwendung mittels eines Debuggers zu analysieren, so erkennt die vorliegende Erfindung den Angriff und bricht die Anwendung ab, wodurch dem Angreifer die Möglichkeit verwehrt wird zu verstehen, wie vertrauliche Daten aus der Anwendung extrahiert werden können.
- Bei bekannten derzeitigen Systemen sind die Agenten in der Regel gereiht. Wenn die Debugging-Abwehrmechanismen entfernt werden können, so kann ein Angreifer einen Debugger verwenden, um sich in Einzelschritten durch die Anwendung zu bewegen und vertrauliche Daten zu analysieren und zu extrahieren. Mit der vorliegenden Erfindung kann die Verarbeitung von vertraulichen Daten und kryptografischen Protokollen parallel auf viele spezifische Agenten aufgeteilt werden, von denen jeder eine spezielle Herausforderung für einen Angreifer darstellt, der sie verstehen und angreifen will. Des Weiteren stört der Gebrauch eines Debuggers, den der Angreifer verwendet, um ihn bei dieser Analyse zu unterstützen, das temporale Gleichgewicht der Routinen, wodurch der Stillhaltezeitraum verstreicht und das Protokoll versagt. Weil derzeitige Agenten gereiht sind, kann ein Angreifer Glück haben, wenn er einen Programmstopp in einem Modul setzt, an dem gerade eine Querintegritätsverifizierung vorgenommen wird. Bei der vorliegenden Erfindung wird eine Verifizierung nebenläufiger Routinen verwendet, und der Angreifer hat kein Glück beim Setzen eines Programmstopps, weil die Verifizierung an einer anderen Routine erfolgt. Bei der vorliegenden Erfindung können viele spezifische Agenten verwendet werden, so daß die Komplexität, mit der sich ein potentieller Angreifer konfrontiert sieht, erhöht wird. Dies verbessert deutlich die Sicherheit der manipulationssicheren Softwarelösung.
- Die hier beschriebenen Techniken sind nicht auf eine bestimmte Hardware- oder Softwarekonfiguration beschränkt. Sie können in jeder beliebigen Berechnungs- oder Verarbeitungsumgebung angewendet werden. Die Techniken können in Hardware, in Software oder in einer Kombination aus beidem implementiert werden. Die Techniken können in Programmen implementiert werden, die auf programmierbaren Maschinen ausgeführt werden, wie beispielsweise mobilen oder stationären Computern, persönlichen digitalen Assistenten, Set-Top-Boxen, Mobiltelefonen und Pagern sowie anderen elektronischen Geräten, die jeweils einen Prozessor, ein durch den Prozessor auslesbares Speichermedium (das flüchtige und nicht-flüchtige Speicherelemente enthält), wenigstens eine Eingabevorrichtung sowie ein oder mehrere Ausgabevorrichtungen enthalten. Auf die mittels der Eingabevorrichtung eingegebenen Daten wird ein Programmcode angewendet, um die beschriebenen Funktionen auszuführen und um Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können einer oder mehreren Ausgabevorrichtungen zugeführt werden. Dem Durchschnittsfachmann ist klar, daß die Erfindung mittels verschiedener Computerkonfigurationen, darunter Multiprozessorsysteme, Minicomputer, Großrechner und dergleichen, realisiert werden kann. Die Erfindung kann außerdem in verteilten Computerumgebungen realisiert werden, wo Aufgaben durch Fernverarbeitungsgeräte ausgeführt werden können, die über ein Kommunikationsnetz miteinander verbunden sind.
- Jedes Programm kann in einer höheren prozeduralen oder objektorientierten Programmiersprache implementiert werden, um mit dem verarbeitenden System zu kommunizieren. Die Programme können aber gewünschtenfalls auch in Assembler- oder Maschinensprache implementiert werden. In jedem Fall kann die Sprache kompiliert oder interpretiert werden.
- Es können Programmbefehle verwendet werden, die ein mit den Befehlen programmiertes Allzweck- oder Spezialverarbeitungssystem veranlassen, die im vorliegenden Text beschriebenen Operationen durchzuführen. Die Operationen können hingegen auch durch spezifische Hardwarekomponenten, die eine festverdrahtete Logik zur Durchführung der Operationen enthalten, oder durch eine beliebige Kombination aus programmierten Computerkomponenten und zweckspezifischen Hardwarekomponenten durchgeführt werden. Die im vorliegenden Text beschriebenen Verfahren können als ein Computerprogrammprodukt angeboten werden, das ein maschinenlesbares Medium enthält, auf dem Befehle gespeichert sind, die zur Programmierung eines Verarbeitungssystems oder eines anderen elektronischen Gerätes verwendet werden können, um die Verfahren durchzuführen. Der Begriff "maschinenlesbares Medium" meint im Sinne des vorliegenden Textes jedes Medium, das in der Lage ist, eine Befehlsfolge zur Ausführung durch die Maschine zu speichern oder zu codieren, wodurch die Maschine eines der im vorliegenden Text beschriebenen Verfahren ausführt. Der Begriff "maschinenlesbares Medium" umfaßt daher beispielsweise Festkörperspeicher, optische und magnetische Platten sowie eine Trägerwelle, die ein Datensignal codiert. Des Weiteren ist es auf diesem technischen Gebiet üblich, davon zu sprechen, daß Software in der einen oder anderen Form (beispielsweise ein Programm, ein Procedere, ein Prozeß, eine Anwendung, ein Modul, eine Logik usw.) eine Aktion ausführt oder zu einem Ergebnis führt. Solche Redewendungen sind lediglich eine abgekürzte sprachliche Form, die ausdrücken soll, daß die Ausführung der Software durch ein Verarbeitungssystem den Prozessor veranlaßt, eine Aktion auszuführen oder ein Ergebnis zu erbringen.
- Obgleich diese Erfindung anhand veranschaulichender Ausführungsformen beschrieben wurde, ist diese Beschreibung nicht in einschränkendem Sinne zu verstehen. Verschiedene Modifikationen der veranschaulichenden Ausführungsformen sowie andere Ausführungsformen der Erfindung, die dem Fachmann auf dem technischen Gebiet der Erfindung einfallen, sind als innerhalb des Geistes und Geltungsbereichs der Erfindung liegend anzusehen.
Claims (20)
- Verfahren zum Abwehren eines Angriffs auf ein manipulationssicheres Anwendungsprogramm, umfassend: Beginnen der Ausführung des manipulationssicheren Anwendungsprogramms; Laden mehrerer Agenten und Starten mehrerer Verarbeitungsroutinen, wobei jede Routine einen der Agenten ausführt; gleichzeitiges Ausführen jedes Agenten im Wesentlichen parallel, so, daß für jeden Agenten ein Verarbeitungsergebnis für eine Wiederholung einer Phase der Protokollverarbeitung hervorgebracht wird; Speichern jedes Verarbeitungsergebnisses in einem Eintrag in einem Puffer, der jedem Agenten zugeordnet ist; Wiederholen der Ausführungs- und Speicheraktionen für mehrere Wiederholungen der Protokollverarbeitung; Kombinieren von Verarbeitungsergebnissen von den ersten Einträgen der Puffer zu einem kombinierten Ergebnis, wenn einer der Agenten ein Verarbeitungsergebnis in einem letzten Eintrag des Puffers des Agenten speichert; und Ausführen einer Störungssemantik, wenn das kombinierte Ergebnis einen Fehler anzeigt.
- Verfahren nach Anspruch 1, wobei das Ausführen einer Störungssemantik das Abbrechen der Ausführung des manipulationssicheren Anwendungsprogramms umfaßt.
- Verfahren nach Anspruch 1, das des Weiteren umfaßt: Fortsetzen der Verarbeitung einer nächsten Phase der Protokollverarbeitung, wenn das kombinierte Ergebnis keinen Fehler anzeigt.
- Verfahren nach Anspruch 1, wobei das Protokoll ein kryptografisches Protokoll umfaßt.
- Verfahren nach Anspruch 1, wobei jeder Agent als ein Integritätsverifizierungskernel arbeitet, der kontinuierlich die Integrität des manipulationssicheren Anwendungsprogramms verifiziert.
- Verfahren nach Anspruch 1, wobei das manipulationssichere Anwendungsprogramm eine Wiedergabeanwendung zum Zugreifen auf einen geschützten Inhalt umfaßt.
- Verfahren nach Anspruch 1, wobei der Puffer einen ringförmigen Puffer umfaßt, der in verschlüsselter Form in einem sicheren Speicher gespeichert ist.
- Verfahren nach Anspruch 7, wobei das Speichern jedes Verarbeitungsergebnisses das Entschlüsseln des Eintrags, das Speichern des Verarbeitungsergebnisses und das erneute Verschlüsseln des Eintrags umfaßt.
- Produkt, umfassend ein Speichermedium mit mehreren maschinenlesbaren Befehlen, wobei, wenn die Befehle von einem Prozessor ausgeführt werden, die Befehle die Abwehr eines Angriffs auf ein manipulationssicheres Anwendungsprogramm bewirken, und zwar durch folgende Schritte: Beginnen der Ausführung des manipulationssicheren Anwendungsprogramms; Laden mehrerer Agenten und Starten mehrerer Verarbeitungsroutinen, wobei jede Routine einen der Agenten ausführt; gleichzeitiges Ausführen jedes Agenten im Wesentlichen parallel, dergestalt, daß für jeden Agenten ein Verarbeitungsergebnis für eine Wiederholung einer Phase der Protokollverarbeitung hervorgebracht wird; Speichern jedes Verarbeitungsergebnisses in einem Eintrag in einem Puffer, der jedem Agenten zugeordnet ist; Wiederholen der Ausführungs- und Speicheraktionen für mehrere Wiederholungen der Protokollverarbeitung; Kombinieren von Verarbeitungsergebnissen von den ersten Einträgen in den Puffern zu einem kombinierten Ergebnis, wenn einer der Agenten ein Verarbeitungsergebnis in einem letzten Eintrag des Puffers des Agenten speichert; und Ausführen einer Störungssemantik, wenn das kombinierte Ergebnis einen Fehler anzeigt.
- Produkt nach Anspruch 9, wobei Befehle zum Ausführen einer Störungssemantik Befehle zum Abbrechen der Ausführung des manipulationssicheren Anwendungsprogramms umfassen.
- Produkt nach Anspruch 9, das des Weiteren Befehle umfaßt, die veranlassen, daß, wenn das kombinierte Ergebnis keinen Fehler anzeigt, die Verarbeitung einer nächsten Phase der Protokollverarbeitung fortgesetzt wird.
- Produkt nach Anspruch 9, wobei das Protokoll ein kryptografisches Protokoll umfaßt.
- Produkt nach Anspruch 9, wobei jeder Agent Befehle umfaßt, die veranlassen, daß er als ein Integritätsverifizierungskernel arbeitet, der kontinuierlich die Integrität des manipulationssicheren Anwendungsprogramms verifiziert.
- Produkt nach Anspruch 9, wobei das manipulationssichere Anwendungsprogramm eine Wiedergabeanwendung zum Zugreifen auf einen geschützten Inhalt umfaßt.
- Produkt nach Anspruch 9, wobei der Puffer einen ringförmigen Puffer umfaßt, der in verschlüsselter Form in einem sicheren Speicher gespeichert ist.
- Produkt nach Anspruch 15, wobei Befehle zum Speichern jedes Verarbeitungsergebnisses Befehle zum Entschlüsseln des Eintrags, zum Speichern des Verarbeitungsergebnisses und zum erneuten Verschlüsseln des Eintrags umfassen.
- System, umfassend: ein manipulationssicheres Anwendungsprogramm; mehrere Agenten, die gleichzeitig ausgeführt werden können, wobei jeder Agent als ein Integritätsverifizierungskernel arbeitet, der kontinuierlich die Integrität des manipulationssicheren Anwendungsprogramms verifiziert, wobei jeder Agent ein Verarbeitungsergebnis für jede von mehreren Wiederholungen einer Phase der Protokollverarbeitung hervorbringt und jedes Verarbeitungsergebnis in einem aufeinanderfolgenden Eintrag in einem zugehörigen von mehreren Puffern speichert, wobei die mehreren Agenten einen zuerst beendenden Agenten enthalten, der ein Verarbeitungsergebnis in einem letzten Eintrag des Puffers des zuerst beendenden Agenten speichert und Verarbeitungsergebnisse von den ersten Einträgen in den Puffern zu einem kombinierten Ergebnis für alle Agenten kombiniert; und ein Agentenladeprogramm, das die mehreren Agenten lädt und mehrere Verarbeitungsroutinen startet, wobei jede Routine einen der Agenten ausführt, und erkennt, wann das kombinierte Ergebnis, das von dem zuerst beendenden Agenten hervorgebracht wird, einen Fehler anzeigt.
- System nach Anspruch 17, das des Weiteren einen sicheren Speicher zum Speichern der mehreren Puffer umfaßt, wobei die Puffer ringförmige Puffer umfassen, und wobei jeder Puffer verschlüsselt ist.
- System nach Anspruch 17, wobei das manipulationssichere Anwendungsprogramm eine Wiedergabeanwendung zum Zugreifen auf einen geschützten Inhalt umfaßt.
- System nach Anspruch 17, wobei das Protokoll ein kryptografisches Protokoll umfaßt.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/319,736 US7149900B2 (en) | 2002-12-12 | 2002-12-12 | Method of defending software from debugger attacks |
US10/319,736 | 2002-12-12 | ||
PCT/US2003/036311 WO2004055653A2 (en) | 2002-12-12 | 2003-11-12 | Method of defending software from debugger attacks |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10393807T5 DE10393807T5 (de) | 2005-10-20 |
DE10393807B4 true DE10393807B4 (de) | 2006-05-24 |
Family
ID=32506692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10393807T Expired - Fee Related DE10393807B4 (de) | 2002-12-12 | 2003-11-12 | Verfahren zum Schutz von Software vor Debugger-Angriffen |
Country Status (6)
Country | Link |
---|---|
US (1) | US7149900B2 (de) |
AU (1) | AU2003291533A1 (de) |
DE (1) | DE10393807B4 (de) |
GB (1) | GB2412206B (de) |
HK (1) | HK1075510A1 (de) |
WO (1) | WO2004055653A2 (de) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7584354B2 (en) * | 2003-01-31 | 2009-09-01 | Intel Corporation | Implementing portable content protection to secure secrets |
US8225290B2 (en) * | 2003-02-11 | 2012-07-17 | V. i. Laboratories, Inc. | Systems and methods for regulating execution of computer software |
US7370319B2 (en) * | 2003-02-11 | 2008-05-06 | V.I. Laboratories, Inc. | System and method for regulating execution of computer software |
US7792300B1 (en) * | 2003-09-30 | 2010-09-07 | Oracle America, Inc. | Method and apparatus for re-encrypting data in a transaction-based secure storage system |
US8234638B2 (en) * | 2004-12-28 | 2012-07-31 | Hercules Software, Llc | Creating a relatively unique environment for computing platforms |
US8375369B2 (en) * | 2005-04-26 | 2013-02-12 | Apple Inc. | Run-time code injection to perform checks |
US7603707B2 (en) * | 2005-06-30 | 2009-10-13 | Intel Corporation | Tamper-aware virtual TPM |
US8443354B1 (en) * | 2006-03-29 | 2013-05-14 | Symantec Corporation | Detecting new or modified portions of code |
JP4048382B1 (ja) * | 2006-09-01 | 2008-02-20 | 富士ゼロックス株式会社 | 情報処理システムおよびプログラム |
US7720671B2 (en) * | 2006-11-30 | 2010-05-18 | Oracle America, Inc. | Method and system for child-parent mechanism emulation via a general interface |
US8356356B2 (en) * | 2007-01-30 | 2013-01-15 | Microsoft Corporation | Anti-debugger comprising spatially and temporally separate detection and response portions |
US8286138B2 (en) * | 2007-01-30 | 2012-10-09 | Microsoft Corporation | Multi-threaded detection of a game software debugger |
US8683438B2 (en) * | 2007-11-28 | 2014-03-25 | International Business Machines Corporation | System, computer program product and method for comparative debugging |
US8739133B2 (en) * | 2007-12-21 | 2014-05-27 | International Business Machines Corporation | Multi-threaded debugger support |
CN101911089B (zh) * | 2008-01-21 | 2013-06-12 | 索尼公司 | 信息处理设备,盘和信息处理方法 |
US20100107245A1 (en) * | 2008-10-29 | 2010-04-29 | Microsoft Corporation | Tamper-tolerant programs |
US8359657B2 (en) * | 2010-03-30 | 2013-01-22 | Sandcastles Technology Inc. | Method and apparatus for enabling secure distribution of digital content |
US9635048B2 (en) * | 2011-03-09 | 2017-04-25 | Irdeto B.V. | Method and system for dynamic platform security in a device operating system |
US20130014267A1 (en) * | 2011-07-07 | 2013-01-10 | Farrugia Augustin J | Computer protocol generation and obfuscation |
CN104335220B (zh) | 2012-03-30 | 2018-04-20 | 爱迪德技术有限公司 | 用于防止和检测安全威胁的方法和系统 |
US9530007B1 (en) | 2014-08-26 | 2016-12-27 | Amazon Technologies, Inc. | Identifying tamper-resistant characteristics for kernel data structures |
US9767276B1 (en) | 2014-08-26 | 2017-09-19 | Amazon Technologies, Inc. | Scanning kernel data structure characteristics |
US9507621B1 (en) * | 2014-08-26 | 2016-11-29 | Amazon Technologies, Inc. | Signature-based detection of kernel data structure modification |
US9575793B1 (en) | 2014-08-26 | 2017-02-21 | Amazon Technologies, Inc. | Identifying kernel data structures |
US9740593B2 (en) | 2015-01-08 | 2017-08-22 | International Business Machines Corporation | Comparative program execution through control of two or more debug sessions to automatically determine execution differences |
US11169869B1 (en) * | 2020-07-08 | 2021-11-09 | International Business Machines Corporation | System kernel error identification and reporting |
CN112637240B (zh) * | 2020-12-31 | 2023-09-12 | 河南信大网御科技有限公司 | 拟态环境下协议报文防篡改方法、系统及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5892899A (en) * | 1996-06-13 | 1999-04-06 | Intel Corporation | Tamper resistant methods and apparatus |
US6105137A (en) * | 1998-07-02 | 2000-08-15 | Intel Corporation | Method and apparatus for integrity verification, authentication, and secure linkage of software modules |
US6205550B1 (en) * | 1996-06-13 | 2001-03-20 | Intel Corporation | Tamper resistant methods and apparatus |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US6178509B1 (en) * | 1996-06-13 | 2001-01-23 | Intel Corporation | Tamper resistant methods and apparatus |
WO1999001815A1 (en) | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
US6330670B1 (en) * | 1998-10-26 | 2001-12-11 | Microsoft Corporation | Digital rights management operating system |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US7043641B1 (en) * | 2000-03-08 | 2006-05-09 | Igt | Encryption in a secure computerized gaming system |
KR20030014224A (ko) * | 2000-10-11 | 2003-02-15 | 트러스트카피 프라이빗 리미티드 | 안전한 및 인증된 문서의 원격 인쇄 |
US6931570B2 (en) * | 2001-05-02 | 2005-08-16 | Cyrus Peikari | Self-optimizing the diagnosis of data processing systems by flexible multitasking |
-
2002
- 2002-12-12 US US10/319,736 patent/US7149900B2/en not_active Expired - Fee Related
-
2003
- 2003-11-12 DE DE10393807T patent/DE10393807B4/de not_active Expired - Fee Related
- 2003-11-12 AU AU2003291533A patent/AU2003291533A1/en not_active Abandoned
- 2003-11-12 GB GB0510775A patent/GB2412206B/en not_active Expired - Fee Related
- 2003-11-12 WO PCT/US2003/036311 patent/WO2004055653A2/en not_active Application Discontinuation
-
2005
- 2005-09-28 HK HK05108566A patent/HK1075510A1/xx not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5892899A (en) * | 1996-06-13 | 1999-04-06 | Intel Corporation | Tamper resistant methods and apparatus |
US6205550B1 (en) * | 1996-06-13 | 2001-03-20 | Intel Corporation | Tamper resistant methods and apparatus |
US6105137A (en) * | 1998-07-02 | 2000-08-15 | Intel Corporation | Method and apparatus for integrity verification, authentication, and secure linkage of software modules |
Also Published As
Publication number | Publication date |
---|---|
GB2412206B (en) | 2006-03-29 |
US20040117620A1 (en) | 2004-06-17 |
AU2003291533A1 (en) | 2004-07-09 |
WO2004055653A3 (en) | 2004-09-23 |
GB2412206A (en) | 2005-09-21 |
GB0510775D0 (en) | 2005-06-29 |
WO2004055653A2 (en) | 2004-07-01 |
DE10393807T5 (de) | 2005-10-20 |
US7149900B2 (en) | 2006-12-12 |
HK1075510A1 (en) | 2005-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10393807B4 (de) | Verfahren zum Schutz von Software vor Debugger-Angriffen | |
Aucsmith | Tamper resistant software: An implementation | |
DE112009002502B4 (de) | Multilayer inhalte-schützender Mikrocontoller | |
DE69028226T2 (de) | Gegen unbefugte Manipulation gesichertes Zugangsberechtigungsverfahren | |
DE112005003340B4 (de) | Mechanismus zum Bestimmen der Vertrauenswürdigkeit von Außerbandverwaltungsagenten | |
DE69735103T2 (de) | Manipulationssicheres Verfahren und Vorrichtung | |
DE69626530T2 (de) | Schutz von software gegen benutzung ohne erlaubnis | |
DE60007724T2 (de) | Chipkarten-benutzerschnittstelle für eine vertraute computerplattform | |
DE10392470B4 (de) | System und Verfahren zum Ausführen von Initialisierungsbefehlen einer gesicherten Umgebung | |
DE69837303T2 (de) | Informationsverarbeitungsvorrichtung und Verfahren und Aufzeichnungsmedium zum Ausführen mittels öffentlicher Schlüssel verschlüsselter Programme | |
DE102006046456B4 (de) | Schaltkreis-Anordnung, Verfahren zum Hochfahren einer Schaltkreis-Anordnung, Verfahren zum Betreiben einer Schaltkreis-Anordnung und Computerprogrammprodukte | |
DE102008021567A1 (de) | Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel | |
DE10200288A1 (de) | Eine Vorrichtung zur Ausführung von Anwendungen, die sichere Transaktionen und/oder Zugangskontrolle zu werthaltigen Inhalten und/oder Dienstleistungen umfassen, und Verfahren zum Schutz einer solchen Vorrichtung | |
DE102013224578A1 (de) | Codeschutz unter verwendung von online-authentifizierung und verschlüsselter ausführung von code | |
DE60224826T2 (de) | Verfahren, system, einrichtung und computerprogramm für gegenseitige authentifizierung und inhaltsschutz | |
Hashii et al. | Supporting reconfigurable security policies for mobile programs | |
EP3720039B1 (de) | Verfahren für das konfigurieren eines sicherheitsmoduls mit mindestens einem abgeleiteten schlüssel | |
Hadavi et al. | Software security; a vulnerability activity revisit | |
DE602004011965T2 (de) | Verfahren und schaltung zum identifizieren und/oder verifizieren von hardware und/oder software eines geräts und eines mit dem gerät arbeitenden datenträgers | |
DE102013216692A1 (de) | Verfahren zur Absicherung einer integrierten Schaltung gegen unberechtigte Zugriffe | |
DE102005046696B4 (de) | Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt | |
DE60211900T2 (de) | Verfahren und vorrichtung zur bewahrung von sicherer dateneingabe und datenausgabe | |
DE102014018892A1 (de) | Verfahren zum Betreiben einer Computereinheit sowie eine solche Computereinheit | |
DE69833947T2 (de) | Speicherzellenanordnung zur erzeugung einer geheimen nicht dauerhaften speicherung | |
DE102021110766B3 (de) | Forensik-Modul und eingebettetes System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law |
Ref document number: 10393807 Country of ref document: DE Date of ref document: 20051020 Kind code of ref document: P |
|
8125 | Change of the main classification |
Ipc: G06F 1214 |
|
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |