DE10393807B4 - Verfahren zum Schutz von Software vor Debugger-Angriffen - Google Patents

Verfahren zum Schutz von Software vor Debugger-Angriffen Download PDF

Info

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
Application number
DE10393807T
Other languages
English (en)
Other versions
DE10393807T5 (de
Inventor
Lewis Hillsboro Rothrock
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10393807T5 publication Critical patent/DE10393807T5/de
Application granted granted Critical
Publication of DE10393807B4 publication Critical patent/DE10393807B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security 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.

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 System 10 kann eine Anwendung 12 zum Zugreifen auf einen Inhalt 14 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 Anwendung 12 manipulationssichere Software, um vertrauliche Daten auf einer unsicheren Computerplattform zu schützen, und der eine oder die mehreren Agenten 18, 20 und 22 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 und 22 als Integritätsverifizierungskernels (IVKs) fungieren. Ein IVK ist Software, die verifiziert, daß der "Fingerabdruck" eines im Speicher befindlichen Programmimages (beispielsweise die gesamte Anwendung 12 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 Agentenladeprogramm 16 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 Agenten 18, 20 und 22 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 1 18, Agent 2 20,... Agent N 22) 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 Speichermodul 24 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 Speicher 24 mehrere Puffer 26, 28, 30 und 32, 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 Block 50 lädt das (in 1 nicht gezeigte) Betriebssystem das Anwendungsprogramm 12 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 Block 52 ruft die Anwendung eine Agenten-APS an, die erste Phase des Protokolls zu beginnen, um ordnungsgemäß befugten Zugang zum Inhalt 14 von 1 zu erhalten. Das Agentenladeprogramm 16 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 Block 56 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 Block 56 mit der Verarbeitung eines zugehörigen Teils des kryptografischen Protokolls im Wesentlichen zur selben Zeit und parallel. Bei Block 58, 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 Block 62 fortgesetzt. Andernfalls wird die Verarbeitung mit der nächsten Arbeitseinheit für diesen Agenten und die nächste Wiederholung bei Block 56 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 Block 62 entschlüsselt der Agent, der als erster alle ihm zugewiesenen Arbeitseinheiten beendet hat (der "zuerst beendende Agent"), alle ersten Schlitze der Puffer 26, 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 bis 60 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 Block 68 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 Block 66 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)

  1. 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.
  2. Verfahren nach Anspruch 1, wobei das Ausführen einer Störungssemantik das Abbrechen der Ausführung des manipulationssicheren Anwendungsprogramms umfaßt.
  3. 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.
  4. Verfahren nach Anspruch 1, wobei das Protokoll ein kryptografisches Protokoll umfaßt.
  5. Verfahren nach Anspruch 1, wobei jeder Agent als ein Integritätsverifizierungskernel arbeitet, der kontinuierlich die Integrität des manipulationssicheren Anwendungsprogramms verifiziert.
  6. Verfahren nach Anspruch 1, wobei das manipulationssichere Anwendungsprogramm eine Wiedergabeanwendung zum Zugreifen auf einen geschützten Inhalt umfaßt.
  7. Verfahren nach Anspruch 1, wobei der Puffer einen ringförmigen Puffer umfaßt, der in verschlüsselter Form in einem sicheren Speicher gespeichert ist.
  8. 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.
  9. 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.
  10. Produkt nach Anspruch 9, wobei Befehle zum Ausführen einer Störungssemantik Befehle zum Abbrechen der Ausführung des manipulationssicheren Anwendungsprogramms umfassen.
  11. 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.
  12. Produkt nach Anspruch 9, wobei das Protokoll ein kryptografisches Protokoll umfaßt.
  13. 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.
  14. Produkt nach Anspruch 9, wobei das manipulationssichere Anwendungsprogramm eine Wiedergabeanwendung zum Zugreifen auf einen geschützten Inhalt umfaßt.
  15. Produkt nach Anspruch 9, wobei der Puffer einen ringförmigen Puffer umfaßt, der in verschlüsselter Form in einem sicheren Speicher gespeichert ist.
  16. 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.
  17. 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.
  18. 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.
  19. System nach Anspruch 17, wobei das manipulationssichere Anwendungsprogramm eine Wiedergabeanwendung zum Zugreifen auf einen geschützten Inhalt umfaßt.
  20. System nach Anspruch 17, wobei das Protokoll ein kryptografisches Protokoll umfaßt.
DE10393807T 2002-12-12 2003-11-12 Verfahren zum Schutz von Software vor Debugger-Angriffen Expired - Fee Related DE10393807B4 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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