DE69735103T2 - Manipulationssicheres Verfahren und Vorrichtung - Google Patents

Manipulationssicheres Verfahren und Vorrichtung Download PDF

Info

Publication number
DE69735103T2
DE69735103T2 DE69735103T DE69735103T DE69735103T2 DE 69735103 T2 DE69735103 T2 DE 69735103T2 DE 69735103 T DE69735103 T DE 69735103T DE 69735103 T DE69735103 T DE 69735103T DE 69735103 T2 DE69735103 T2 DE 69735103T2
Authority
DE
Germany
Prior art keywords
program
secret
rolled
subroutine
mutation
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 - Lifetime
Application number
DE69735103T
Other languages
English (en)
Other versions
DE69735103D1 (de
Inventor
David Portland AUCSMITH
Gary Beaverton GRAUNKE
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
Application granted granted Critical
Publication of DE69735103D1 publication Critical patent/DE69735103D1/de
Publication of DE69735103T2 publication Critical patent/DE69735103T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Storage Device Security (AREA)
  • Seeds, Soups, And Other Foods (AREA)
  • Feeding, Discharge, Calcimining, Fusing, And Gas-Generation Devices (AREA)

Description

  • STAND DER TECHNIK
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft das Gebiet der Systemsicherheit. Im Besonderen betrifft die vorliegende Erfindung manipulationssichere Verfahren und Vorrichtungen.
  • 2. Beschreibung des Stands der Technik
  • Zahlreiche Anwendungen, wie zum Beispiel Finanztransaktionen, unbeaufsichtigte Autorisierungen und Content Management, erfordern es, dass eine grundlegende Integrität der damit verbundenen Operationen vorhanden ist oder zumindest bestätigt werden kann. Auf dem Gebiet sind zwar eine Reihe von Sicherheitsansätzen bekannt, wie zum Beispiel Verschlüsselungs- und Entschlüsselungstechniken, doch leider können die Sicherheitsansätze leicht kompromittiert werden, da diese Anwendungen und Sicherheitsansätze auf Systemen implementiert werden, die eine offene und zugängliche Architektur aufweisen, welche sowohl die Hardware als auch die Software, welche die Sicherheitsansätze aufweisen, durch böswillige Benutzer oder ein böswilliges Programm beobachtbar und modifizierbar machen.
  • Ein auf einer offenen und zugänglichen Architektur basierendes System ist somit grundlegend eine unsichere Plattform, ungeachtet des Einsatzes von Sicherheitsvorkehrungen. Die Offenheit und Zugänglichkeit bieten jedoch auch eine Reihe von Vorteilen, die zu den Erfolgen derartiger Systeme beitragen. Benötigt werden somit Techniken, welche die Ausführung von Software auf diesen grundlegend unsicheren Plattformen praktisch nicht beobachtbar oder nicht modifizierbar machen, ungeachtet der Offenheit und Zugänglichkeit dieser Plattformen.
  • „OPERATING SYSTEM PROTECTION THROUGH PROGRAM EVOLUTION" von F.B. Cohen, COMPUTERS & SECURITY, INTERNATIONAL JOURNAL DEVOTED TO THE STUDY OF TECHNICAL AND FINANCIAL ASPECTS OF COMPUTER SECURITY, NL, ELSEVIER SCIENCE PUBLISHERS, AMSTERDAM, BAND 12, Nr. 6, 1. Oktober 1993 (1993-10-01), Seiten 565 bis 584, XP000415701 ISSN: 0167-4048, offenbart den Schutz eines Betriebssystems mittels Programmevolution zum Beispiel durch das Verändern von Variablen, so dass die statische Untersuchung und Analyse der Parameter in einem Programm verhindert und die Speicherplätze in einem Programm verändert werden, ohne die Programmausführung zu beeinflussen. Das U.S. Patent US-A-5.347.579 offenbart das Modifizieren eines archivierten Tagebucheintrags, indem der Originaltext in Bereichscodes platziert wird, und wobei eingefügter Text in Einfügungscodes platziert wird, so dass der ursprüngliche Tagebucheintrag aus dem modifizierten Tagebucheintrag wiederhergestellt werden kann. In diesem Bezugsdokument wird ein Programm geladen und sensitive bzw. vertrauliche Elemente in dem Programm werden entschlüsselt. Zu den entschlüsselten Daten zählen geheime Daten, private Schlüssel, ein Datenverschlüsselungsschlüssel und ein Herstellerpasswort, und die entschlüsselten Daten werden in einen Betriebszustand mit dem Objektcode versetzt. Die Elemente werden mit einem herkömmlichen Datenverschlüsselungsstandard durch den Programmhersteller verschlüsselt, der den Entschlüsselungscode mit dessen Schlüssel in den Programmcode integriert. Der Zweck des Entschlüsselungsschlüssels in den Programmelementen ist es, Personen es schwerer zu machen, die Authentifizierung zu fälschen oder die Archivdatei zu verändern, indem sie mithilfe eines anderen Programms entschlüsselt, verändert und neu verschlüsselt wird. Das Programm springt danach zu dem Hauptabschnitt des Programms, in dem eine Datei ausgewählt wird.
  • Das U.S. Patent US-A-5.224.160 offenbart den Einsatz eines geheimen Schlüssels in einem symmetrischen kryptografischen Algorithmus, wobei eine Prüfzahl für jedes Programm gleichzeitig erzeugt und in dem Speicher des Systems gespeichert wird. Die Integrität eines derartigen Systems wird dadurch geprüft, dass die Programme neu codiert werden, und die auf diese Weise erhaltene Prüfzahl wird in jedem Fall mit der ursprünglichen und gespeicherten Prüfzahl verglichen.
  • Die vorliegende Erfindung versucht ein manipulationssicheres Verfahren und eine entsprechende Vorrichtung bereitzustellen, welche die Softwareausführung praktisch nicht beobachtbar bzw. nicht modifizierbar gestaltet.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Vorgesehen ist gemäß einem ersten Aspekt der vorliegenden Erfindung eine Vorrichtung gemäß dem gegenständlichen Anspruch 1.
  • Vorgesehen ist gemäß einem zweiten Aspekt der vorliegenden Erfindung ein Maschinen implementiertes Verfahren gemäß dem gegenständlichen Anspruch 3.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird durch Ausführungsbeispiele ohne einzuschränken beschrieben, die in den beigefügten Zeichnungen veranschaulicht sind, in denen die gleichen Elemente mit den gleichen Bezugsziffern bezeichnet sind. In den Zeichnungen zeigen:
  • 1 ein Blockdiagramm eines ersten Aspekts der vorliegenden Erfindung zur manipulationssicheren Gestaltung eines in Bezug auf die Sicherheit sensitiven Programms durch eine zeitliche wie räumliche Verteilung des bzw. der Geheimniss(e) des Programms;
  • 2 ein Blockdiagramm eines Ausführungsbeispiels des ersten Aspekts der vorliegenden Erfindung mit einem Unterprogrammgenerator zum Erzeugen von Unterprogrammen, die mit entsprechenden Teilabschnitten des bzw. der verteilten Geheimniss(e) funktionsfähig sind;
  • 3 ein Flussdiagramm eines Ausführungsbeispiels des Funktionsablaufs des Unterprogrammgenerators aus 2;
  • 4 ein Blockdiagramm eines zweiten Aspekts der vorliegenden Erfindung zur manipulationssicheren Gestaltung eines in Bezug auf die Sicherheit sensitiven Programms, indem verschiedene Teilabschnitte des in Bezug auf die Sicherheit sensitiven Programms verschleiert werden;
  • 5 ein Blockdiagramm eines Ausführungsbeispiels eines Teilabschnitts des verschleierten Programms;
  • 6 ein Blockdiagramm eines Ausführungsbeispiels des zweiten Aspekts der vorliegenden Erfindung, mit einem Verschleierungsprozessor zum Erzeugen des verschleierten Programms;
  • 7 ein grafisches Diagramm der Verteilung der Schlüsselperiode für den zweiten Aspekt der vorliegenden Erfindung; die 8a bis 8b Flussdiagramme eines Ausführungsbeispiels des Funktionsablaufs des Verschleierungsprozessors aus 6;
  • 9 ein Flussdiagramm eines Ausführungsbeispiels der Operationslogik eines verschleierten Unterprogramms des verschleierten Programms; die 10 bis 14 Diagramme einer Musteranwendung des zweiten Aspekts der vorliegenden Erfindung;
  • 15 ein Blockdiagramm eines dritten Aspekts der vorliegenden Erfindung zur manipulationssicheren Gestaltung einer in Bezug auf die Sicherheit sensitiven Anwendung;
  • 16 ein Blockdiagramm eines vierten Aspekts der vorliegenden Erfindung zur manipulationssicheren Gestaltung eines in Bezug auf die Sicherheit sensitiven Systems; und
  • 17 ein Blockdiagramm eines fünften Aspekts der vorliegenden Erfindung zur manipulationssicheren Gestaltung einer in Bezug auf die Sicherheit sensitiven Branche; die 18 und 19 Blockdiagramme eines beispielhaften Computersystems und einer integrierten Steuereinheit, die sich zur Programmierung mit den verschiedenen Aspekten der vorliegenden Erfindung eignet.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • Die folgende Beschreibung beschreibt verschiedene Aspekte der vorliegenden Erfindung. Der Fachmann auf dem Gebiet erkennt jedoch, dass die vorliegende Erfindung mit nur einigen oder mit allen Aspekten der vorliegenden Erfindung ausgeführt werden kann. Zu Zwecken der Erläuterung sind bestimmte Mengenangaben bzw. Zahlenangaben, Materialien und Konfigurationen ausgeführt, um ein umfassendes Verständnis der vorliegenden Erfindung zu vermitteln. Für den Fachmann auf dem Gebiet ist es aber auch ersichtlich, dass die vorliegende Erfindung auch ohne die besonderen Einzelheiten ausgeführt werden kann. In anderen Fällen wurde auf allgemein bekannte Merkmale verzichtet oder diese wurden vereinfacht dargestellt, um die vorliegende Erfindung nicht unnötig zu verschleiern..
  • Teile der Beschreibung sind als Operationen dargestellt, die von einem Computersystem ausgeführt werden, wobei Begriffe wie Daten, Flags bzw. Kennzeichnen, Bits, Werte, Zeichen, Strings bzw. Folgen, Zahlen bzw. Ziffern und dergleichen verwendet werden, die im Einklang mit der Vorgehensweise stehen, wie sie von Fachleuten auf dem Gebiet eingesetzt wird, um das Wesen ihrer Arbeiten anderen Fachleuten auf dem Gebiet zu vermitteln. Wie dies für den Fachmann auf dem Gebiet offensichtlich ist, weisen diese Größen die Form von elektrischen, magnetischen oder optischen Signalen auf, die gespeichert, übertragen, kombiniert bzw. verknüpft und anderweitig durch mechanische oder elektrische Komponenten des Computersystems manipuliert werden können; und der Begriff Computersystem umfasst Allzweck-Datenverarbeitungsgeräte, Systeme und dergleichen sowie Datenverarbeitungsgeräte, Systeme und dergleichen für einen bestimmten Zweck, die entweder alleine, in Verbindung mit anderen Geräten oder integriert vorgesehen sind.
  • Verschiedene Operationen bzw. Abläufe werden als eine Mehrzahl von Einzelschritten beschrieben, und zwar in einer Art und Weise, wie sie für das Verständnis der vorliegenden Erfindung am nützlichsten ist, wobei die Reihenfolge der Beschreibung jedoch nicht so auszulegen ist, als würde sie implizieren, dass diese Operationen unbedingt von ihrer Reihenfolge abhängig sind, im Besonderen nicht von ihrer Reihenfolge der Darstellung.
  • In folgendem Bezug auf die Abbildung aus 1 zeigt diese ein Blockdiagramm eines ersten Aspekts der vorliegenden Erfindung. Gemäß diesem ersten Aspekt der vorliegenden Erfindung wird ein in Bezug auf die Sicherheit sensitives Programm 100 dadurch manipulationssicher gemacht, dass dessen Geheimnis bzw. geheime Informationen räumlich wie zeitlich verteilt werden. Das Geheimnis (das nicht in dessen Gesamtheit dargestellt ist) wird in Teilabschnitte 101 „partitioniert", und das Programm 100 wird in eine Reihe von Unterprogrammen 102 ausgerollt, die in Verbindung mit den Teilabschnitten 101 arbeiten; in dem veranschaulichten Ausführungsbeispiel ist je ein Teilabschnitt 101 je Unterprogramm 102 vorgesehen. Die Unterprogramme 102 werden danach über einen Zeitraum ausgeführt. Folglich kann das vollständige Geheimnis nicht an einer einzelnen Stelle im Raum oder zu einem einzelnen Zeitpunkt beobachtet oder modifiziert werden.
  • Zum Beispiel wird von einem künstlichen und einfachen „in Bezug auf die Sicherheit sensitiven" Programm ausgegangen, um das Ergebnis von X multipliziert mit S zu berechnen, wobei S das Geheimnis bezeichnet. Wenn angenommen wird, dass S gleich 8 ist, kann S in vier Teilabschnitte unterteilt werden, wobei jeder Teilabschnitt gleich 2 ist, und wobei das „in Bezug auf die Sicherheit sensitive" Programm in 4 Unterprogramme ausgerollt wird, wobei jedes Programm A = A + (X multipliziert mit 2) berechnet wird. Somit kann das vollständige Geheimnis 8 an keiner räumlichen Stelle und zu keinem Zeitpunkt beobachtet oder modifiziert werden.
  • In einem weiteren Beispiel wird von einem „in Bezug auf die Sicherheit sensitiven" Programm zur Berechnung des Ergebnisses von (X hoch S) modulo Y ausgegangen, wobei S wiederum das Geheimnis bezeichnet. Wenn S gleich 16 ist, kann S in 8 Teilabschnitte unterteilt werden, wobei jeder Teilabschnitt gleich 2 ist, und wobei das „in Bezug auf die Sicherheit sensitive" Programm in 8 Unterprogramme ausgerollt wird, wobei jedes Programm A = (A multipliziert mit ((X hoch 2) modulo Y)) modulo Y berechnet wird. Somit kann das vollständige Geheimnis 16 an keiner räumlichen Stelle und zu keinem Zeitpunkt beobachtet oder modifiziert werden.
  • Der Fachmann auf dem Gebiet erkennt, dass die Funktion (X hoch S) modulo Y die Basis- bzw. Grundfunktion ist, die in vielen Systemen für den asymmetrischen Schlüssel (privater/öffentlicher Schlüssel) zur Verschlüsselung und Entschlüsselung eingesetzt wird. Durch die Ausführung dieses ersten Aspekts der vorliegenden Erfindung kann eine Verschlüsselungs-/Entschlüsselungsfunktion somit manipulationssicher gestaltet werden.
  • In einem Ausführungsbeispiel der vorliegenden Erfindung sind die Unterprogramme weiter mit nicht verwandten Aufgaben verschachtelt, um die wahre Beschaffenheit der durch die ausgerollten Unterprogramme ausgeführten Aufgaben weiter zu verschleiern. Die Ausgaben können dabei sogar gar keinen eigenen Zweck aufweisen.
  • Die Abbildung aus 2 veranschaulicht ein Ausführungsbeispiel des ersten Aspekts der vorliegenden Erfindung mit einem Unterprogrammgenerator zum Erzeugen der Unterprogramme. In dem veranschaulichten Ausführungsbeispiel ist der Unterprogrammgenerator 104 mit dem Geheimnis als Eingabe bereitgestellt. Ferner ist der Unterprogrammgenerator 104 mit Zugang zu einer Bibliothek 105 bereitgestellt, welche die Unterprogramme 106, 108 und 109 Eingabe bzw. Einstieg, Basis und Prolog aufweist, die zur Erzeugung der Unterprogramme 102 eines bestimmten relevanten in Bezug auf die Sicherheit sensitiven Programms im Hinblick auf das bereitgestellte Geheimnis verwendet werden. Anders ausgedrückt sind die eingesetzten Unterprogramme Einstieg und Basis 106 und 108 für verschiedene in Bezug auf die Sicherheit sensitive Programme unterschiedlich. In einem ersten Fall in Bezug auf die veranschaulichten Beispiele initialisieren und berechnen die Unterprogramme Einstieg und Basis 106 und 108A = A + (X multipliziert mit einem Teilabschnitt von S), während die Unterprogramme Einstieg und Basis 106 und 108 in einem zweiten Fall folgendes initialisieren und berechnen: A = (A multipliziert mit ((X hoch einem Teilabschnitt von S) modulo Y)) modulo Y. Das Unterprogramm Prolog 109 wird zu einer Nachverarbeitung eingesetzt, wie z.B. zur Ausgabe des berechneten Ergebnisses als entschlüsselter Inhalt.
  • In Bezug auf das veranschaulichte Ausführungsbeispiel wird das Unterprogramm Einstieg 106 im Besonderen dazu verwendet, eine entsprechende Laufzeittabelle 110 zu initialisieren, um Basiswerte nach dem Unterprogramm Basis 106 zu suchen, und das Unterprogramm Basis 108 wird zur Ausführung der Basisberechnung unter Verwendung der Laufzeittabelle 110 verwendet. Für das vorstehend erörterte Beispiel der Modulo-Funktion wird die Laufzeittabelle 110 dazu verwendet, Basiswerte für (X hoch einem Teilabschnitt des Geheimnisses) modulo Y für verschiedene Unterabschnittswerte verwendet, wobei A gleich der akkumulierten Zwischenergebnisse ist. Der Ausgangswert von A ist 1.
  • Zum Beispiel kann das Unterprogramm Einstieg 106 eine Laufzeittabelle 110 der Größe drei zum Speichern der Basiswerte von bv1, bv2 und bv3 initialisieren, wobei bv1, bv2 und bv3 entsprechend gleich (X hoch 1) modulo Y, (X hoch 2) modulo Y und (X hoch 3) modulo Y sind. Für die Modulo-Funktion (X hoch 5) modulo Y kann der Unterprogrammgenerator 104 das Geheimnis 5 in zwei Teilabschnitte mit den Teilabschnittswerten 3 und 2 unterteilen und zwei Basisprogramme 108 entsprechend A = (A·Lkup(3)) modulo Y und A = (A·Lkup(2)) modulo Y berechnen.
  • Die Abbildung aus 3 veranschaulicht ein Ausführungsbeispiel des Funktionsablaufs des Unterprogrammgenerators 104 aus 2. In Bezug auf das veranschaulichte Ausführungsbeispiel erzeugt der Unterprogrammgenerator 104 nach dem Aufruf zuerst ein Ereignis des Unterprogramms Einstieg 106 zum Initialisieren von zumindest einer geeigneten Laufzeit-Verweistabelle 110 (Lkup) zur Rückgabe der Basiswerte einer Modulo-Funktion für verschiedene Teilabschnitte eines Geheimnisses, und eines Akkumulationswertes (A) auf einen entsprechenden Ausgangszustand, Schritt 112. Der Unterprogrammgenerator 104 unterteilt das Geheimnis danach in dem Schritt 114 in Teilabschnitte. In einem Ausführungsbeispiel wird die Partition so ausgeführt, dass die geringste Anzahl der Basisprogramme erfordert wird, innerhalb der Einschränkungen bzw. der Grenzen der Basiswerte, die in der Laufzeittabelle 110 gespeichert werden.
  • Als nächstes legt der Unterprogrammgenerator 104 einen Teilabschnitt des Geheimnisses als Verweisindex (LIDX) in den Schritten 116 fest. Danach erzeugt der Unterprogrammgenerator 104 in dem Schritt 118 das aktuelle Basis-Unterprogramm, so dass folgendes berechnet wird: A = [A multipliziert mit Lkup (LIDX)] modulo Y. Der Unterprogrammgenerator 104 wiederholt die Schritte 116 bis 118 für alle Teilabschnitte, bis für jeden Teilabschnitt des Geheimnisses ein Basisprogramm erzeugt worden ist, Schritt 120. Schließlich erzeugt der Unterprogrammgenerator 104 gemäß der Beschreibung in dem Schritt 122 ein Ereignis für das Unterprogramm Prolog 109 zur Ausführung der Nachverarbeitung.
  • Die Abbildung aus 4 veranschaulicht einen zweiten Aspekt der vorliegenden Erfindung. Gemäß diesem zweiten Aspekt der vorliegenden Erfindung wird das in Bezug auf die Sicherheit sensitive Programm 203 durch Verschleierung des Programms manipulationssicher gemacht. Das in Bezug auf die Sicherheit sensitive Programm 203 wird unterteilt und verarbeitet in eine Reihe von verschleierten Unterprogrammen 204. Ausgewählt wird ein Erscheinungspositions-Schedule in Klartext (d.h. ohne Mutation) (d.h. wo sich dieses in dem Speicher befindet) für die verschleierten Unterprogramme 204. In dem veranschaulichten Ausführungsbeispiel ist der Klartext-Erscheinungspositions-Schedule als Speicherzellen 202 von zwei Speichersegmenten ausgedrückt, d.h. des Speichersegments 201a und des Speichersegments 201b. Mit Ausnahme des verschleierten Unterprogramms 204, wo sich der Einstiegspunkt des Programms befindet, werden zuerst alle anderen verschleierten Unterprogramme 204 in mutierten Zuständen gespeichert. Die verschleierten Unterprogramme 204 werden wiederhergestellt oder so dargestellt, dass sie in einem Klartextformat an den gewünschten Speicherzellen 202 erscheinen, und zwar eines oder mehrere gleichzeitig, wenn sie für die Ausführung benötigt werden, und wobei sie danach erneut mutiert werden, sobald die Ausführungen vorgenommen worden sind. Wie dies nachstehend im Text näher beschrieben ist, werden die anfänglichen mutierten Zustände und das Verfahren zur Wiederherstellung bestimmt oder ausgeführt. Gemäß einem oder mehreren pseudozufällig ausgewählten Muster von Mutationen. Die bzw. das pseudozufällig ausgewählte(n) Muster der Mutationen werden bzw. wird unter Verwendung einer vorbestimmten Mutations-Partnerschaftsfunktion in Verbindung mit einer oder mehreren Gruppen von Pseudozufallsschlüsseln bestimmt. Als Folge dessen mutieren die verschleierten Unterprogramme 204 zyklisch zurück in ihre entsprechenden Ausgangszustände nach jedem Ausführungsdurchlauf. Die die gleiche Schleife implementierenden verschleierten Unterprogramme 204 mutieren tatsächlich nach jedem Durchlauf der Schleife zyklisch zurück zu den Schleifeneintrittszuständen.
  • In Bezug auf das veranschaulichte Ausführungsbeispiel weisen jedes verschleierte Unterprogramm 204 und jede Zelle 202 die gleiche Größe auf, und das erste Speichersegment 201a ist in dem hohen Speicher angeordnet, während sich das zweite Speichersegment 201b in dem unteren Speicher befindet. Ferner ist eine gerade Anzahl von verschleierten Unterprogrammen 204 vorgesehen, wobei bei Bedarf ein Scheinunterprogramm eingesetzt wird.
  • Die Abbildung aus 5 veranschaulicht ein Ausführungsbeispiel des Unterprogramms 204. Gemäß der vorliegenden Erfindung ist in Bezug auf das veranschaulichte Ausführungsbeispiel zusätzlich zu dem ursprünglichen Unterprogramm 102 das verschleierte Unterprogramm 204 mit einer Mutationspartner-Identifikationsfunktion 206, der Mutationsfunktion 207, dem Partnerschlüssel 208 und dem Sprungblock 209 versehen. Das ursprüngliche Unterprogramm 102 führt einen Abschnitt der Funktionen aus, die von dem Programm 200 ausgeführt werden. Das ursprüngliche Unterprogramm 102 kann ein Unterprogramm Einstieg/Basis/Prolog 106/108/109 gemäß dem ersten Aspekt der vorliegenden Erfindung darstellen. Die Mutationspartner-Identifikationsfunktion 206 wird zum Identifizieren der Partnerspeicherzellen 202 für die ganze Speicherzelle 202 während jeder Mutationsrunde verwendet. In einem Ausführungsbeispiel ist die Partner-Identifikationsfunktion 206 die Funktion: Partner Cell ID = Cell ID XOR Pseudo-Random Key. Für einen Pseudozufallsschlüssel identifiziert die Mutationspartner-Identifikationsfunktion 206 eine Speicherzelle 202 in dem zweiten Speichersegment 201b als die Partnerspeicherzelle für bzw. einer Speicherzelle 202 in dem ersten Speichersegment 201a oder vice versa. Nur geordnete Gruppen von Pseudozufalls-Schlüsseln, die die erforderlichen Perioden für das Programm und dessen Schleifen bereitstellen, werden eingesetzt. Die Länge einer Periode ist eine Funktion der Gruppengröße des Pseudozufalls-Schlüssels (auch Schlüssellänge genannt). Die Mutationsfunktion 207 wird zum Mutieren des Inhalts der verschiedenen Speicherzellen 202 eingesetzt. In einem Ausführungsbeispiel führt die Mutationsfunktion 207 eine XOR-Funktion des Inhalts jeder Speicherzelle 202 in dem ersten Speichersegment 201a in die Partnerspeicherzelle 202 in dem zweiten Speichersegment 201b in einer ungeraden Mutationsrunde aus, und eine XOR-Funktion des Inhalts jeder Speicherzelle 202 in dem zweiten Speichersegment 201b in die Partnerspeicherzelle 202 in dem ersten Speichersegment 201a in einer geraden Mutationsrunde. Der Partnerschlüssel 208 ist der Pseudozufalls-Schlüssel, der von der Mutationspartner-Identifikationsfunktion 206 zum Identifizieren von Mutationspartnern der verschiedenen Speicherzellen 202 für eine Mutationsrunde verwendet wird. Der Sprungblock 209 überträgt die Ausführungssteuerung auf das nächste verschleierte Unterprogramm 204, das zum Zeitpunkt der Übertragung über das Pseudozufalls-Muster der Mutationen in Klartext wiederhergestellt wird.
  • In einem Ausführungsbeispiel kann ein verschleiertes Unterprogramm 204 auch andere Funktionen aufweisen, die für andere Zwecke ausgeführt werden, oder einfach auch nicht verwandte Funktionen, die ausgeführt werden, um die ausgeführten Teilabschnittsfunktionen weiter zu verschleiern.
  • Die Abbildung aus 6 veranschaulicht ein Ausführungsbeispiel des zweiten Aspekts der vorliegenden Erfindung, mit einem Verschleierungsprozessor zur Verarbeitung und Transformation von Unterprogrammen in verschleierte Unterprogramme. In Bezug auf das veranschaulichte Ausführungsbeispiel ist der Verschleierungsprozessor 214 mit dem Programm 200 als Eingaben bereitgestellt. Ferner ist der Verschleierungsprozessor 214 mit einem Zugriff auf die Schlüssellängen-Verweistabelle 212 des Pseudozufalls-Schlüssels, der Mutationspartner-Identifikationsfunktion 206 und der Mutationsfunktion 207 versehen. In dem veranschaulichten Ausführungsbeispiel verwendet der Verschleierungsprozessor 214 ferner zwei Arbeitsmatrizen 213 während der Erzeugung des verschleierten Programms 203.
  • Die Schlüssellängen-Verweistabelle 212 stellt für den Verschleierungsprozessor 214 Schlüssellängen bereit, die die erforderlichen Perioden durch das Programm und dessen Schleifen vorsehen. Die Schlüssellängen, die die erforderlichen Perioden bereitstellen, sind eine Funktion der Mutationstechnik und der Partnerschaftsfunktion. Die Abbildung aus 7 veranschaulicht verschiedene Schlüssellängen, die verschiedene Perioden für die Mutationstechnik des ersten und des zweiten Speichersegments und die Partnerschaftsfunktion bereitstellen, wie dies bereits vorstehend im Text beschrieben worden ist.
  • In erneutem Bezug auf die Abbildung aus 6 identifiziert die Mutationspartner-Identifikationsfunktion 206 eine Mutationspartner-Speicherzelle 202 für jede Speicherzelle 202. In einem Ausführungsbeispiel identifiziert die Mutationspartner-Identifikationsfunktion 206 Mutationspartner-Speicherzellen gemäß der „XOR"-Mutationspartner-Identifikationsfunktion, wie dies bereits vorstehend im Text beschrieben worden ist. Die Mutationsfunktion 207 mutiert alle Speicherzellen 202. In einem Ausführungsbeispiel mutiert die Mutationsfunktion 207 die Speicherzellen 202 gemäß den beiden Speichersegmenten, gemäß der vorstehend im Text beschriebenen Technik der ungeraden und geraden Runden.
  • In Bezug auf das veranschaulichte Ausführungsbeispiel weisen die Arbeitsmatrizen 213 zwei Matrizen M1 und M2 auf. Die Arbeitsmatrize M1 speichert die Boolschen Funktionen des aktuellen Zustands der verschiedenen Speicherzellen 202 in Bezug auf die Ausgangswerte der Speicherzellen 202. Die Arbeitsmatrize M2 speichert die Boolschen Funktionen zur Wiederherstellung des Klartexts der verschiedenen verschleierten Unterprogramme 204 als die Ausgangswerte der Speicherzellen 202.
  • Die Abbildungen der 8a bis 8b zeigen zwei Blockdiagramme eines Ausführungsbeispiels des Verschleierungsprozessors 214. In dem veranschaulichten Ausführungsbeispiel gemäß der Abbildung aus 8a analysiert der Verschleierungsprozessor 214 als Reaktion auf eine Programmeingabe (in Objektform) in dem Schritt 216 das Programm. Im Besonderen analysiert der Verschleierungsprozessor 214 den Verzweigungsfluss des Programms, wobei Schleifen in dem Programm identifiziert werden, und zwar unter Verwendung im Fach bekannter herkömmlicher Kompiliereroptimierungstechniken. Für die Zwecke der vorliegenden Anmeldung wird jede Ausführungssteuerungsübertragung wie etwa ein Aufruf und eine folgende Rückgabe ebenfalls als eine „Schleife" angesehen.
  • Als nächstes kann der Verschleierungsprozessor 214 den optionalen Schritt der Schlüsselloch-Randomisierung 218 ausführen. Während diesem Schritt verläuft eine Schlüsselloch-Randomisierung über das Programm und ersetzt Codemuster durch wahlfreie äquivalente Muster, die aus einem optionalen Wörterbuch derartiger Muster ausgewählt werden. Die Ausführung ist davon abhängig, ob die Maschinenarchitektur der Befehle alternative Möglichkeiten für die Erfüllung der gleichen Aufgabe bereitstellt.
  • Danach restrukturiert und partitioniert der Verschleierungsprozessor 214 das Programm 200 in eine Reihe von Unterprogrammen 204 der gleichen Größe, die durch ihre Schleifenebenen organisiert sind, wobei die Unterprogramme 204 bei Bedarf auf der Basis der Analyseergebnisse aufgefüllt werden, Schritt 220. Mit Ausnahme eines sehr einfachen Programms mit einem einzigen Ausführungspfad erfordern praktisch alle Programme 200 ein gewisses Maß der Restrukturierung. Die Restrukturierung umfasst zum Beispiel das Entfernen wie auch das Hinzufügen von Verzweigungen sowie das Replizieren von Befehlen auf verschiedenen Schleifenebenen. Die Restrukturierung wird ebenfalls unter Verwendung herkömmlicher Optimierungstechniken ausgeführt.
  • Schließlich bestimmt der Verschleierungsprozessor 214 den Klartext-Erscheinungspositions-Schedule der Unterprogramme und die anfänglichen Zustandswerte für die verschiedenen Speicherzellen 202, Schritt 221.
  • Die Abbildung aus 8b veranschaulicht den Schritt 221 in näheren Einzelheiten. Gemäß der Abbildung initialisiert der Verschleierungsprozessor 214 zuerst die erste Arbeitsmatrix M1 in dem Schritt 222. Danach wählt der Verschleierungsprozessor 214 eine Speicherzelle für das Einstiegsunterprogramm des Programms zum Erscheinen in Klartext aus, Schritt 223. In einem Ausführungsbeispiel wird die Speicherzelle 202 willkürlich ausgewählt (in dem entsprechenden Speichersegment 201a oder 201b). Nach der Auswahl aktualisiert der Verschleierungsprozessor 214 die zweite Arbeitsmatrix M2, Schritt 224.
  • Als nächstes wählt der Verschleierungsprozessor 214 eine entsprechende Schlüssellänge auf der Basis der Periodenanforderung des Verfahrens aus, wobei auf die Schlüssellängentabelle 212 zugegriffen wird, Schritt 226. Der Verschleierungsprozessor 214 erzeugt danach eine geordnete Gruppe von Pseudozufalls-Schlüsseln auf der Basis der ausgewählten Schlüssellänge, Schritt 228. Wenn zum Beispiel eine Schlüssellänge von 5 aus den Schlüssellängen ausgewählt wird, die eine erforderliche Periode von 30 bereitstellt, kann der Verschleierungsprozessor 214 wahlfrei 17, 18, 20, 24 und 16 als die geordneten Pseudozufalls-Schlüssel auswählen.
  • Als nächstes bestimmt der Verschleierungsprozessor 214 die Partnerspeicherzellen 202 für alle Speicherzellen 202 unter Verwendung der vorbestimmten Mutationspartner-Identifikationsfunktion 206 und des nächsten Schlüssels in der ausgewählten Gruppe geordneter Pseudozufalls-Schlüssel, Schritt 230. Nach erfolgter Bestimmung simuliert der Verschleierungsprozessor 214 eine Mutation und aktualisiert M1, so dass die Ergebnisse der Mutation reflektiert werden, Schritt 232.
  • Nach der Mutation wählt der Verschleierungsprozessor 214 eine Speicherzelle für das nächste Unterprogramm 204 zum Erscheinen in Klartext aus, Schritt 234. Danach aktualisiert der Verschleierungsprozessor 214 M2 und invertiert inkremental M2 unter Verwendung der Gaußschen Methode, Schritt 235. In einem Ausführungsbeispiel kann der Verschleierungsprozessor 214 an Stelle der inkrementalen Inversion einfach stattdessen nur verifizieren, das M2 invertierbar bleibt. Wenn M2 nicht invertierbar ist, streicht der Verschleierungsprozessor 214 die Speicherzellenauswahl und stellt M2 wieder in dem vorherigen Zustand her, 237. Der Verschleierungsprozessor 214 wiederholt die Schritte 234 bis 236 zur Auswahl einer anderen Speicherzelle 202. Letztlich ist der Verschleierungsprozessor 214 erfolgreich.
  • Wenn der Verschleierungsprozessor 214 erfolgreich gewesen ist, bestimmt er, ob eine Schleifenebenenveränderung aufgetreten ist, Schritt 238. Wenn eine Schleifenebenenveränderung aufgetreten ist, bestimmt der Verschleierungsprozessor 214 ferner, ob es sich bei der Schleifenebenenveränderung um eine Ebenenveränderung nach unten oder nach oben handelt, d.h. ob es sich bei dem Unterprogramm um ein Einstiegsunterprogramm einer neuen Schleifenebene oder einen Rückkehrpunkt einer höheren Schleifenebene handelt, Schritt 239. Wenn es sich um eine Schleifenebenenveränderung nach „unten" handelt, wählt der Verschleierungsprozessor 214 eine andere entsprechende Schleifenlänge auf der Basis der neuen Periodenanforderung der Schleife aus, wobei auf die Schlüssellängentabelle 212 zugegriffen wird, Schritt 241. Der Verschleierungsprozessor 214 erzeugt danach eine neue geordnete Gruppe von Pseudozufallsschlüsseln auf der Basis der neu ausgewählten Schlüssellänge, Schritt 242. Die neu erzeugte geordnete Gruppe von Pseudozufallsschlüsseln wird zu der „oberen" Gruppe der Pseudozufallsschlüssel. Wenn es sich andererseits um eine Veränderung der Schleifenebene nach „oben" handelt, so stellt der Verschleierungsprozessor 214 eine unmittelbar „niedrigere" Gruppe der Pseudozufallsschlüssel wieder als „obere" Gruppe der Pseudozufallsschlüssel wieder her, Schritt 240.
  • Nach der ordnungsgemäßen Anordnung der „oberen" Gruppe der Pseudozufallsschlüssel oder nach der Bestimmung, dass keine Schleifenebenenveränderung gegeben ist, bestimmt der Verschleierungsprozessor 214 erneut die Partnerspeicherzellen 202 für alle Speicherzellen 202 unter Verwendung der vorbestimmten Mutationspartner-Identifikationsfunktion 206 und des nächsten Schlüssels in der „oberen" Gruppe geordneter Pseudozufallsschlüssel, Schritt 243. Nach der Bestimmung simuliert der Verschleierungsprozessor 214 eine Mutation und aktualisiert M1, so dass die Ergebnisse der Mutation reflektiert werden, Schritt 244.
  • Nach der Mutation bestimmt der Verschleierungsprozessor 214, ob mehrere Unterprogramme 204 verarbeitet werden müssen, Schritt 245. Wenn weitere Unterprogramme 204 verarbeitet werden müssen, kehrt der Verschleierungsprozessor 214 zu dem Schritt 234 zurück und fährt mit dem vorstehend beschriebenen Ablauf fort. Im anderen Fall fügt der Verschleierungsprozessor 214 die Mutationspartner-Identifikationsfunktion 206, den für die Identifizierung der Mutationspartner-Speicherzellen zu verwendenden Partnerschlüssel, die Mutationsfunktion, den Sprungblock und die Adresse des nächsten Unterprogramms 204 in jedes der verschleierten Unterprogramme 204 ein, Schritt 246. Schließlich berechnet der Verschleierungsprozessor 214 die Ausgangs- bzw. Anfangswerte der verschiedenen verschleierten Unterprogramme 204 und gibt diese aus, Schritte 247 bis 248.
  • Die Abbildung aus 9 veranschaulicht ein Ausführungsbeispiel des funktionalen Ablaufs eines verschleierten Unterprogramms 204. In dem veranschaulichten Ausführungsbeispiel führt das verschleierte Unterprogramm 204 zuerst die Funktionen des ursprünglichen Unterprogramms aus, Schritt 250. Wenn Ausführungsbeispiele zusätzliche und/oder nicht verwandte Funktionen aufweisen, so können auch diese ausgeführt werden. Danach führt das verschleierte Unterprogramm 204 die Mutationspartner-Identifikationsfunktion 206 aus, um die Mutations-Speicherzellenpartner für alle Speicherzellen 202 unter Verwendung des gespeicherten Partnerschlüssels zu identifizieren, Schritt 252. Nach der Identifikation der Mutationspartner führt das verschleierte Unterprogramm 204 die Mutationsfunktion 207 aus, um die Speicherzellen auf der Basis der identifizierten Partnerschaft zu mutieren.
  • Abhängig davon, ob es sich bei dem verschleierten Unterprogramm 204 um das letzte Unterprogramm in einem Ausführungsdurchlauf handelt, springt das verschleierte Unterprogramm 204 als nächstes entweder zu dem nächsten verschleierten Unterprogramm (das sich im Klartext befinden sollte) oder es kehrt zu dem „Anrufer" bzw. „Aufrufer" zurück. Hiermit wird für den Fall festgestellt, dass das verschleierte Unterprogramm 204 zu dem „Anrufer" zurückkehrt, dass sich alle anderen verschleierten Unterprogramme 204 in ihren entsprechenden Ausgangszuständen befinden.
  • Die Abbildungen der 10 bis 14 veranschaulichen eine musterhafte Anwendung dieses zweiten Aspekts der vorliegenden Erfindung. Die Abbildung aus 10 veranschaulicht ein musterhaftes in Bezug auf die Sicherheit sensitives Programm 200 mit sechs Unterprogrammen SPGM0 – SPGM5, wobei zur besseren Erläuterung eine einfache Logik mit einer Ebene implementiert wird, mit den vorgesehenen Klartextwerten „000", „001", „010", „011", „100" und „111". Die erforderliche Periode entspricht somit 6. Zur besseren Erläuterung wird eine Schlüssellänge von Eins verwendet, und der ausgesuchte Pseudozufallsschlüssel ist gleich 3. Ferner entspricht die Mutationspartnerschafts-Identifikationsfunktion einfach Partner Cell ID = Cell ID + 3, d.h. die Zelle 0 bildet stets ein Paar mit der Zelle 3, die Zelle 1 bildet ein Paar mit Zelle 4, und die Zelle 2 bildet ein Paar mit der Zelle 5.
  • Die Abbildung aus 10 veranschaulicht beim Aufruf (Mutation 0), dass die Speicherzellen (c0 – c5) die Ausgangswerte (iv0 – iv5) aufweisen, wie dies durch M1 dargestellt wird. Unter der Annahme, dass die Zelle c0 für SPGM0 ausgewählt wird, wird M2 aktualisiert, um zu reflektieren, dass die Boolsche Funktion zur Wiederherstellung des Klartexts von SPGM0 einfach iv0 entspricht. Die Abbildung aus 10 veranschaulicht ferner den in den Speicherzellen (c0 – c5) gespeicherten Werten nach der ersten Mutation. Hiermit wird für die veranschaulichte Mutationstechnik festgestellt, dass sich nur der Inhalt der Speicherzellen (c3 – c5) verändert hat. M1 wird aktualisiert, um den aktuellen Zustand zu reflektieren. Wenn angenommen wird, dass die Zelle c3 für SPGM1 ausgewählt worden ist, wird M2 aktualisiert, um zu reflektieren, dass die Boolsche Funktion zur Wiederherstellung des Klartexts von SPGM1 einfach iv0 XOR iv3 entspricht. Hiermit wird festgestellt, dass zur einfacheren Mutation die Spalten von M2 getauscht worden sind.
  • Die Abbildung aus 11 veranschaulicht die in den Speicherzellen (c0 – c5) gespeicherten Werte nach den zweiten, dritten und vierten Mutationen. Gemäß der Abbildung hat sich der Inhalt der Hälfte der Speicherzellen (c0 – c5) nach jeder Mutation wechselweise verändert. In jedem Fall wird M1 aktualisiert, um den aktuellen Zustand zu reflektieren. In der Annahme, dass die Zellen c1, c4 und c2 entsprechend für SPGM2, SPGM3 und SPGM4 nach den zweiten, dritten und vierten Mutationen ausgewählt werden, wird M2 in jedem Fall aktualisiert, um die Boolschen Funktionen zur Wiederherstellung der Klartexte von SPGM2, SPGM3 und SPGM4 zu reflektieren, d.h. iv4, iv1 und iv2 XOR iv5.
  • Die Abbildung aus 12 veranschaulicht die in den Speicherzellen (c0 – c5) nach der fünften Mutation gespeicherten Werte. Gemäß der Abbildung hat sich der Inhalt der Speicherzellen (c3 – c5) wie in den vorherigen Runden der Mutation verändert. M1 wird aktualisiert, um den aktuellen Zustand zu reflektieren. Wenn angenommen wird, dass die Zelle c5 für SPGM5 ausgewählt worden ist, wird M2 aktualisiert, um die Boolsche Funktion zur Wiederherstellung des Klartexts von SPGM5 gleich iv5 ist.
  • Die Abbildung aus 13 veranschaulicht, wie die Ausgangswerte von iv0 bis iv5 aus dem Umkehrwert von M2 berechnet werden, mit M2 × ivs = SPGMs, ivs = M2-1 × SPGMs. Hiermit wird festgestellt, dass eine „1" in M2-1 das entsprechend ausgewählte SPGM bezeichnet, während eine „0" in M2-1 angibt, dass das entsprechende SPGM nicht ausgewählt worden ist, um die Ausgangswerte (iv0 – iv5) zu berechnen.
  • Die Abbildung aus 14 veranschaulicht den Inhalt der Speicherzellen des vorstehenden Beispiels während der Ausführung. Hiermit wird festgestellt, dass zu jedem Zeitpunkt höchstens lediglich zwei der Unterprogramme in ihren Klartextdarstellungen beobachtet werde können. Hiermit wird ferner festgestellt, dass die Paarbildung der Mutationspartner zur besseren Erläuterung nur deshalb festgelegt ist, da der einzelne Pseudozufallsschlüssel und die einfache Mutationspartnerfunktion eingesetzt werden. Hiermit wird ferner festgestellt, dass bei einer anderen Mutation der Inhalt der Speicherzellen wieder den jeweiligen Ausgangszustand aufweist. Anders ausgedrückt befinden sich die Unterprogramme nach jedem Ausführungsdurchlauf in ihren Ausgangszuständen, bereit für einen weiteren Aufruf.
  • Wie dies der Fachmann auf dem Gebiet erkennt, ist das oben dargestellte Beispiel zu dem Zweck der einfachen Erläuterung unrealistisch einfach ausgeführt. Der Klartext eines Unterprogramms weist viel mehr „0er" und „1er" auf, wodurch es praktisch unmöglich wird, die Speicherzelle, die ein verschleiertes Unterprogramm in einem mutierten Zustand speichert, von einer Speicherzelle zu unterscheiden, die ein verschleiertes Unterprogramm im Klartextformat speichert. Somit ist es praktisch unmöglich, den Klartext-Erscheinungspositions-Schedule aus der Beobachtung der Mutationen während der Ausführung zu erschließen.
  • Die Abbildung aus 15 veranschaulicht einen dritten Aspekt der vorliegenden Erfindung. Gemäß diesem Aspekt der vorliegenden Erfindung kann eine in Bezug auf die Sicherheit sensitive Anwendung 300 dadurch manipulationssicher gemacht werden, dass die ersten und/oder zweiten Aspekte der vorliegenden Erfindung gemäß der vorstehenden Beschreibung integriert werden.
  • Bei dem Einsatz des vorstehend beschriebenen zweiten Aspekts der vorliegenden Erfindung erzeugen unterschiedliche Gruppen von Pseudozufallsschlüsseln ein unterschiedliches Muster der Mutationen, selbst mit der gleichen Mutationspartner-Identifikationsfunktion. Somit können Kopien der in Bezug auf die Sicherheit sensitiven Anwendung, die auf unterschiedlichen Systemen installiert sind, einzigartig gemacht werden, indem ein anderes Muster der Mutationen über verschiedene Gruppen der Pseudozufallsschlüssel eingesetzt werden. Somit sind die auf verschiedenen Systemen installierten und in Bezug auf die Sicherheit sensitiven Anwendungen zusätzlich widerstandsfähig gegen einen Gruppenangriff, selbst wenn durch Beobachtung eines Systems das Verschleierungsprinzip verstanden wird.
  • Die Abbildung aus 16 veranschaulicht einen vierten Aspekt der vorliegenden Erfindung. Gemäß diesem Aspekt der vorliegenden Erfindung kann ein in Bezug auf die Sicherheit sensitives System 400 dadurch manipulationssicher gemacht werden, dass dessen in Bezug auf die Sicherheit sensitiven Anwendungen 400a und 400b gemäß dem ersten, zweiten und/oder dritten Aspekt der vorliegenden Erfindung gemäß der vorstehenden Beschreibung manipulationssicher gestaltet werden. Ferner kann die Sicherheit des Systems 400 weiter dadurch gestärkt werden, dass ein Systemintegritätsbestätigungsprogramm (SIVP als englische Abkürzung von System Integrity Verification Program) 404 mit einer Mehrzahl von Integritätsbestätigungskernen (IVKs) vorgesehen wird. In dem veranschaulichten Ausführungsbeispiel handelt es sich dabei um einen IVK auf erster und einen IVK auf zweiter Ebene 406a und 406b. Der IVK auf erster Ebene 406a weist eine veröffentlichte externe Schnittstelle für weitere manipulationssichere, in Bezug auf die Sicherheit sensitive Funktionen (SSFs) 402a bis 402b der in Bezug auf die Sicherheit sensitiven Anwendungen 400a bis 400b für einen Aufruf auf. Beide IVKs werden gemäß den vorstehend im Text beschriebenen ersten und zweiten Aspekten der vorliegenden Erfindung manipulationssicher gemacht. Gemeinsam implementieren die manipulationssicheren SSFs 402a bis 402b und die IVKs 406a406b einen verriegelnden Vertrauensmechanismus.
  • Gemäß dem verriegelnden Vertrauensmechanismus sind in Bezug auf das veranschaulichte Ausführungsbeispiel die manipulationssicheren SSF1 und SSF2 402a402b verantwortlich für die Integrität der entsprechenden in Bezug auf die Sicherheit sensitiven Anwendungen 400a400b. Der IVK1 und der IVK2 406a und 406b sind für die Integrität von SIVP 404 verantwortlich. Nach der Bestätigung der Integrität der in Bezug auf die Sicherheit sensitiven Anwendung 400a oder 400b ist diese dafür verantwortlich, dass SSF1/SSF2 402a402b den IVK1 406a aufrufen. Als Reaktion darauf bestätigt IVK1 406a die Integrität von SIVP 404. Nachdem dies erfolgreich ausgeführt worden ist, ruft der IVK1 406a IVK2 406b auf, der als Reaktion darauf ebenfalls die Integrität von SIVP 404 bestätigt.
  • Für eine Manipulation der in Bezug auf die Sicherheit sensitiven Anwendung 400a müssen somit SSF1 402a, IVK1 406a und IVK2 406b gleichzeitig manipuliert werden. Da IVK1 und IVK2 406a406b ferner auch durch die SSF2 und alle anderen SSFs in dem System verwendet werden, müssen auch alle anderen SSFs gleichzeitig manipuliert werden.
  • Die Abbildung aus 17 veranschaulicht einen fünften Aspekt der vorliegenden Erfindung. Gemäß dem vorliegenden fünften Aspekt der vorliegenden Erfindung können der Inhaltsbranchenverband (Content Industry Association) 500, Inhaltsproduzenten 502, Hersteller von Inhaltslesern 510 und Hersteller von Inhaltswiedergabevorrichtungen 506 gemeinsam eine koordinierte Verschlüsselungs-/Entschlüsselungsmethode implementieren, wobei die Inhaltswiedergabevorrichtungen 508, die von Herstellern 506 von Inhaltswiedergabevorrichtungen hergestellt werden, eine Wiedergabesoftware einsetzen, die eine Inhaltsentschlüsselungsfunktion aufweist, die gemäß den vorstehend beschriebenen verschiedenen Aspekten der vorliegenden Erfindung manipulationssicher gemacht worden ist.
  • Der Inhaltsbranchenverband 500 ist Eigentümer und Aufbewahrer eines geheimen privaten Verschlüsselungsschlüssels Kciapri. Der Inhaltsbranchenverband 500 verschlüsselt den geheimen Inhaltsverschlüsselungsschlüssel Kc der Inhaltsproduzenten sowie den öffentlichen Verschlüsselungsschlüssel Kppub der Hersteller von Inhaltswiedergabevorrichtungen für die entsprechenden Produzenten bzw. Hersteller 502 und 506 unter Verwendung von Kciapri, d.h. Kciapri[Kc] und Kciapri[Kppub].
  • Der Inhaltsproduzent 502 verschlüsselt sein Inhaltsprodukt Kc[ctnt] und fügt dem Inhaltsprodukt Kciapri[Kc] hinzu. Der Hersteller von Inhaltslesevorrichtungen 510 fügt seinem Inhaltsleserprodukt 512 den öffentlichen Schlüssel des Inhaltsbranchenverbands Kciapub hinzu, während der Hersteller der Inhaltswiedergabevorrichtung 506 seinem Inhaltswiedergabevorrichtungsprodukt 508 den geheimen privaten Wiedergabeschlüssel Kppri des Herstellers der Inhaltswiedergabevorrichtung, den öffentlichen Schlüssel Kciapub des Inhaltsbranchenverbands und den verschlüsselten Schlüssel Kciapri[Kppub] der Inhaltswiedergabevorrichtung hinzufügt.
  • Während dem Betrieb liest das Inhaltsleserprodukt 512 den verschlüsselten Inhaltsschlüssel Kc[ctnt] und den verschlüsselten Inhaltsverschlüsselungsschlüssel Kciapri[Kc]. Das Inhaltsleserprodukt 512 entschlüsselt Kc unter Verwendung von Kciapub. Gleichzeitig stellt das Inhaltswiedergabeprodukt 508 seinen öffentlichen Schlüssel Kppub durch Entschlüsselung von Kciapri[Kppub] unter Verwendung des öffentlichen Schlüssels Kciapub des Inhaltsbranchenverbands wieder h er. Das Inhaltsleserprodukt 512 und das Inhaltswiedergabevorrichtungsprodukt 508 stehen ferner in Übertragungsverbindung miteinander. Nach Wiederherstellung des eigenen öffentlichen Schlüssels stellt das Inhaltswiedergabevorrichtungsprodukt 508 diesen für das Inhaltsleserprodukt 512 bereit. Das Inhaltsleserprodukt 512 verwendet den bereitgestellten öffentlichen Schlüssel Kppub der Wiedergabevorrichtung zum Verschlüsseln des wiederhergestellten Inhaltsverschlüsselungsschlüssels Kc, wobei Kppub[Kc] erzeugt wird, der wiederum an das Inhaltswiedergabevorrichtungsprodukt 508 zurückgegeben wird. Als Reaktion darauf stellt das Inhaltswiedergabevorrichtungsprodukt 508 den Inhaltsverschlüsselungsschlüssel Kc durch Entschlüsselung von Kppub[Kc] unter Verwendung des eigenen privaten Schlüssels Kppri wieder her.
  • Wenn das Inhaltsleserprodukt 512 somit den verschlüsselten Inhalt Kc[ctnt] liest und diesen zu dem Inhaltswiedergabevorrichtungsprodukt 508 weiterleitet, entschlüsselt das Inhaltswiedergabevorrichtungsprodukt 508 diesen mit dem wiederhergestellten Kc, wobei der unverschlüsselte Inhalt (ctnt) erzeugt wird. Gemäß den vorstehend beschriebenen Aspekten der vorliegenden Erfindung werden die Entschlüsselungsfunktionen zur Wiederherstellung des öffentlichen Schlüssels des Herstellers der Inhaltswiedergabevorrichtung und zur Wiederherstellung des Inhaltsverschlüsselungsschlüssels Kc manipulationssicher gestaltet.
  • Der Fachmann auf dem Gebiet wird erkennen, dass zusätzlich zu der manipulationssicheren Gestaltung durch das verriegelnde Vertrauenssystem eine Manipulation der Entschlüsselungsfunktionen des Inhaltswiedergabevorrichtungsprodukts eine Manipulation der Verschlüsselungs-/Entschlüsselungsfunktionen des Inhaltsbranchenverbands, des Inhaltsproduzenten und des Inhaltsleserherstellers erforderlich ist, was es praktisch unmöglich macht, die Integrität der verschiedenen Verschlüsselungs-/Entschlüsselungsfunktionen zu kompromittieren.
  • Wie dies der Fachmann auf dem Gebiet ebenfalls erkennen wird, kann ein Hersteller mehr als eine Rolle in der vorstehend beschriebenen manipulationssicheren Branchensicherheitsmethode spielen, wobei zum Beispiel ein Hersteller sowohl die Inhaltsleser- als auch die Inhaltswiedergabevorrichtungsprodukte als Einzelprodukte oder als Kombinationsprodukte herstellen kann.
  • Die Abbildung aus 18 veranschaulicht ein musterhaftes Computersystem, das dazu geeignet ist, mit den in Bezug auf die Sicherheit sensitiven Programmen/Anwendungen mit oder ohne SIVP programmiert zu werden, einschließlich einem branchenrelevanten Sicherheitsmechanismus, mit einer manipulationssicheren Gestaltung gemäß dem ersten, zweiten, dritten, vierten und/oder fünften Aspekt der vorliegenden Erfindung. Das musterhafte Computersystem 600 umfasst die CPU 602 und den Cache-Speicher 604, die über den Prozessorbus 605 miteinander gekoppelt sind. Das musterhafte Computersystem 600 weist ferner einen Hochleistungs-E/A-Bus 608 und einen Standard-E/A-Bus 618 auf. Der Prozessorbus 605 und der Hochleistungs-E/A-Bus 608 sind durch eine Host-Brücke 606 überbrückt, während der Hochleistungs-E/A-Bus 608 und der Standard-E/A-Bus 618 durch die Busbrücke 610 überbrückt werden. Mit dem Hochleistungs-E/A-Bus 608 gekoppelt sind der Hauptspeicher 612 und der Videospeicher 614. Mit dem Videospeicher 614 gekoppelt ist eine Videoanzeige 616. Mit dem Standard-E/A-Bus 618 gekoppelt sind der Massenspeicher 620 und Tastatur- und Zeigevorrichtungen 622.
  • Diese Elemente führen ihre herkömmlichen Funktionen aus. Im Besonderen wird der Massenspeicher 620 dazu eingesetzt, die ausführbaren Befehle bzw. Anweisungen der verschiedenen manipulationssicheren Programme/Anwendungen dauerhaft zu speichern, während der Hauptspeicher 612 dazu eingesetzt wird, die ausführbaren Anweisungen der manipulationssicheren Programme/Anwendungen während der Ausführung durch die CPU 602 temporär zu speichern.
  • Die Abbildung aus 19 veranschaulicht eine musterhafte integrierte Steuereinheit, die mit in Bezug auf die Sicherheit sensitiven Programmen für eine in Bezug auf die Sicherheit sensitive Vorrichtung programmiert werden kann, die gemäß dem ersten, zweiten, dritten, vierten und/oder fünften Aspekt der vorliegenden Erfindung manipulationssicher gemacht worden ist. Das musterhafte integrierte System 700 umfasst die CPU 702, den Hauptspeicher 704, den ROM 706 und die E/A-Steuereinheit 708, die über einen Systembus 710 miteinander gekoppelt sind. Diese Elemente führen ebenfalls ihre herkömmlichen Funktionen aus. Im Besonderen kann der ROM 706 dazu verwendet werden, einen permanenten bzw. dauerhaften Speicherplatz für die Ausführung an Ort und Stelle der ausführbaren Anweisungen der verschiedenen manipulationssicheren Programme bereitzustellen, während der Hauptspeicher 704 dazu eingesetzt werden kann, die verschiedenen Arbeitsdaten während der Ausführung der ausführbaren Anweisungen der manipulationssicheren Programme durch die CPU 702 vorübergehend zu speichern.
  • Beschrieben wurden somit verschiedene manipulationssichere Verfahren und Vorrichtungen. Die erfindungsgemäßen Verfahren und Vorrichtungen wurden zwar in Bezug auf die vorstehend veranschaulichten Ausführungsbeispiele beschrieben, wobei der Fachmann auf dem Gebiet jedoch erkennt, dass die Erfindung nicht auf die beschriebenen Ausführungsbeispiele beschränkt ist. Die vorliegende Erfindung kann mit Modifikationen und Abänderungen gemäß dem Umfang der anhängigen Ansprüche ausgeführt werden. Die Beschreibung veranschaulicht somit die vorliegende Erfindung und schränkt diese nicht ein.

Claims (4)

  1. Vorrichtung, die eine Ausführungseinheit zum Ausführen von Programmierbefehlen umfasst sowie ein mit der Ausführungseinheit gekoppeltes Speichermedium, wobei darin eine Mehrzahl von Programmierbefehlsblöcken (100) gespeichert ist, die durch die Ausführungseinheit während dem Betrieb ausgeführt werden, wobei die Programmierbefehlsblöcke (100) entsprechende Unterabschnitte eines darunter verteilten (101) Geheimnisses bearbeiten, und wobei die Ausführung über einen Zeitraum. verteilt ist, dadurch gekennzeichnet, dass die Programmierbefehlsblöcke (100) gemeinsam eine Entschlüsselungsfunktion implementieren, und wobei es sich bei dem Geheimnis um einen privaten Schlüssel handelt.
  2. Vorrichtung nach Anspruch 1, wobei einer oder mehrere Programmierbefehlsblöcke (100) ferner eine oder mehrere nicht verwandte Aufgaben ausführen, um die Operationen an den Teilabschnitten des Geheimnisses weiter zu verschleiern.
  3. Maschinen implementiertes Verfahren zur Ausführung eines Programms, das ein Geheimnis auf manipulationssichere Art und Weise bearbeitet, wobei das Verfahren folgendes umfasst: das Ausführen eines ersten ausgerollten Unterprogramms (102) des Programms zu einem ersten Zeitpunkt, wobei das erste ausgerollte Unterprogramm einen ersten Teilabschnitt des Geheimnisses (101) bearbeitet; und das Ausführen eines zweiten ausgerollten Unterprogramms (102) des Programms zu einem zweiten Zeitpunkt, wobei das zweite ausgerollte Unterprogramm einen zweiten Teilabschnitt des Geheimnisses (101) bearbeitet, dadurch gekennzeichnet, dass die ersten und zweiten ausgerollten Unterprogramme ausgerollte Unterprogramme einer Entschlüsselungsfunktion sind, und wobei es sich bei dem Geheimnis um einen privaten Schlüssel handelt.
  4. Verfahren nach Anspruch 3, wobei das Ausführen des ersten ausgerollten Unterprogramms das erste ausgerollte Unterprogramm aufweist, das zumindest eine erste nicht verwandte Aufgabe ausführt; und das Ausführen des zweiten ausgerollten Unterprogramms das zweite ausgerollte Unterprogramm aufweist, das mindestens eine zweite nicht verwandte Aufgabe ausführt, wobei die genannten ersten und zweiten nicht verwandten Aufgaben so ausgeführt werden, dass sie die Bearbeitung der ersten und zweiten Teilabschnitte des Geheimnisses durch die ersten und zweiten ausgerollten Unterprogramme verschleiern.
DE69735103T 1996-06-13 1997-06-12 Manipulationssicheres Verfahren und Vorrichtung Expired - Lifetime DE69735103T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US662679 1984-10-19
US08/662,679 US5892899A (en) 1996-06-13 1996-06-13 Tamper resistant methods and apparatus
PCT/US1997/010359 WO1997048203A1 (en) 1996-06-13 1997-06-12 Tamper resistant methods and apparatus

Publications (2)

Publication Number Publication Date
DE69735103D1 DE69735103D1 (de) 2006-04-06
DE69735103T2 true DE69735103T2 (de) 2006-07-27

Family

ID=24658729

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69735103T Expired - Lifetime DE69735103T2 (de) 1996-06-13 1997-06-12 Manipulationssicheres Verfahren und Vorrichtung

Country Status (6)

Country Link
US (1) US5892899A (de)
EP (1) EP0900488B1 (de)
CA (1) CA2258087C (de)
DE (1) DE69735103T2 (de)
TW (1) TW364098B (de)
WO (1) WO1997048203A1 (de)

Families Citing this family (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263438A (ja) 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
CN1869997A (zh) 1995-02-13 2006-11-29 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6658568B1 (en) 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US7133846B1 (en) 1995-02-13 2006-11-07 Intertrust Technologies Corp. Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management
US7037426B2 (en) * 2000-05-04 2006-05-02 Zenon Environmental Inc. Immersed membrane apparatus
US20010011253A1 (en) 1998-08-04 2001-08-02 Christopher D. Coley Automated system for management of licensed software
US6049609A (en) * 1997-08-06 2000-04-11 Intel Corporation Cell array providing non-persistent secret storage through a mutation cycle
US6205550B1 (en) * 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
US6175925B1 (en) * 1996-06-13 2001-01-16 Intel Corporation Tamper resistant player for scrambled contents
US6253323B1 (en) 1996-11-01 2001-06-26 Intel Corporation Object-based digital signatures
US6542610B2 (en) 1997-01-30 2003-04-01 Intel Corporation Content protection for digital transmission systems
US6668325B1 (en) * 1997-06-09 2003-12-23 Intertrust Technologies Obfuscation techniques for enhancing software security
JPH1131105A (ja) * 1997-07-10 1999-02-02 Fuji Xerox Co Ltd データカプセル生成装置および方法
US7092914B1 (en) * 1997-11-06 2006-08-15 Intertrust Technologies Corporation Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6069647A (en) * 1998-01-29 2000-05-30 Intel Corporation Conditional access and content security method
US6513117B2 (en) * 1998-03-04 2003-01-28 Gemstar Development Corporation Certificate handling for digital rights management system
US6639577B2 (en) 1998-03-04 2003-10-28 Gemstar-Tv Guide International, Inc. Portable information display device with ergonomic bezel
US6957341B2 (en) * 1998-05-14 2005-10-18 Purdue Research Foundation Method and system for secure computational outsourcing and disguise
US6324646B1 (en) * 1998-09-11 2001-11-27 International Business Machines Corporation Method and system for securing confidential data in a computer network
US7599491B2 (en) 1999-01-11 2009-10-06 Certicom Corp. Method for strengthening the implementation of ECDSA against power analysis
US7092523B2 (en) 1999-01-11 2006-08-15 Certicom Corp. Method and apparatus for minimizing differential power attacks on processors
US6675297B1 (en) * 1999-03-01 2004-01-06 Sigma Designs, Inc. Method and apparatus for generating and using a tamper-resistant encryption key
US7421586B2 (en) * 1999-05-12 2008-09-02 Fraunhofer Gesselschaft Protecting mobile code against malicious hosts
WO2000072112A2 (en) * 1999-05-12 2000-11-30 Fraunhofer Crcg, Inc. Obfuscation of executable code
CA2384360A1 (en) * 1999-06-09 2000-12-21 Harold J. Johnson Tamper resistant software encoding
US7770016B2 (en) * 1999-07-29 2010-08-03 Intertrust Technologies Corporation Systems and methods for watermarking software and other media
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6779114B1 (en) 1999-08-19 2004-08-17 Cloakware Corporation Tamper resistant software-control flow encoding
US6289455B1 (en) 1999-09-02 2001-09-11 Crypotography Research, Inc. Method and apparatus for preventing piracy of digital content
US7757097B2 (en) * 1999-09-03 2010-07-13 Purdue Research Foundation Method and system for tamperproofing software
US7287166B1 (en) 1999-09-03 2007-10-23 Purdue Research Foundation Guards for application in software tamperproofing
US7249105B1 (en) * 2000-03-14 2007-07-24 Microsoft Corporation BORE-resistant digital goods configuration and distribution methods and arrangements
US6862683B1 (en) 2000-03-24 2005-03-01 Novell, Inc. Method and system for protecting native libraries
US7000119B1 (en) 2000-04-20 2006-02-14 Realnetworks, Inc. Instruction/data protection employing derived obscuring instruction/data
JP4186381B2 (ja) * 2000-05-10 2008-11-26 日本電気株式会社 プログラムを格納する記録媒体及びその実行方法
CA2447451C (en) * 2000-05-12 2013-02-12 Xtreamlok Pty. Ltd. Information security method and system
US7539875B1 (en) * 2000-06-27 2009-05-26 Microsoft Corporation Secure repository with layers of tamper resistance and system and method for providing same
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
US7236590B2 (en) * 2000-12-14 2007-06-26 Matsushita Electric Industrial Co., Ltd. Method and apparatus for protecting data
EP1942392A1 (de) 2001-03-28 2008-07-09 Macrovision Corporation Verfahren, Vorrichtung und optisches Medium zur Aktivierung der Wiedergabe von verschlüsselten digitalen Videos auf einer Vielzahl von Wiedergabegeräten mit unterschiedlichen Sicherheitsmerkmalen
EP1410140B1 (de) * 2001-03-28 2017-02-15 NDS Limited System und verfahren zur verwaltung digitaler berechtigungen
US20060010430A1 (en) * 2001-05-04 2006-01-12 Thales Device and process for the signature, the marking and the authentication of computer programs
US20030105961A1 (en) * 2001-11-30 2003-06-05 Peter Zatloukal Avoiding attachment of an ineligible smart interchangeable cover to an electronic device
US8275716B2 (en) 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Method and system for subscription digital rights management
US6876984B2 (en) 2001-05-31 2005-04-05 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US6895503B2 (en) 2001-05-31 2005-05-17 Contentguard Holdings, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
CA2350029A1 (en) * 2001-06-08 2002-12-08 Cloakware Corporation Sustainable digital watermarking via tamper-resistant software
WO2003003169A2 (en) * 2001-06-28 2003-01-09 Cloakware Corporation Secure method and system for biometric verification
US6694435B2 (en) * 2001-07-25 2004-02-17 Apple Computer, Inc. Method of obfuscating computer instruction streams
US7036020B2 (en) * 2001-07-25 2006-04-25 Antique Books, Inc Methods and systems for promoting security in a computer system employing attached storage devices
US7925894B2 (en) * 2001-07-25 2011-04-12 Seagate Technology Llc System and method for delivering versatile security, digital rights management, and privacy services
US7210134B1 (en) * 2001-09-06 2007-04-24 Sonic Solutions Deterring reverse-engineering of software systems by randomizing the siting of stack-based data
US20070277037A1 (en) * 2001-09-06 2007-11-29 Randy Langer Software component authentication via encrypted embedded self-signatures
CA2363795A1 (en) * 2001-11-26 2003-05-26 Cloakware Corporation Computer system protection by communication diversity
US7117535B1 (en) * 2001-12-14 2006-10-03 Microsoft Corporation Software-generated machine identifier
JP2003280755A (ja) * 2002-03-25 2003-10-02 Nec Corp 自己復元型プログラム、プログラム生成方法及び装置、情報処理装置並びにプログラム
US7103184B2 (en) 2002-05-09 2006-09-05 Intel Corporation System and method for sign mask encryption and decryption
US20030217280A1 (en) * 2002-05-17 2003-11-20 Keaton Thomas S. Software watermarking for anti-tamper protection
US7272725B2 (en) * 2002-06-25 2007-09-18 Sas Validy Method to protect software against unwanted use with a “temporal dissociation” principle
WO2004023313A1 (en) * 2002-09-04 2004-03-18 Fraunhofer Crcg, Inc. Protecting mobile code against malicious hosts cross references to related applications
JP2004362532A (ja) * 2002-10-25 2004-12-24 Matsushita Electric Ind Co Ltd 透かし挿入装置および透かし取出装置
US7149900B2 (en) * 2002-12-12 2006-12-12 Intel Corporation Method of defending software from debugger attacks
US7263185B2 (en) 2003-02-27 2007-08-28 Realnetworks, Inc. Key based decipher including its generation, distribution and usage
US8510571B1 (en) 2003-03-24 2013-08-13 Hoi Chang System and method for inserting security mechanisms into a software program
KR100568228B1 (ko) 2003-05-20 2006-04-07 삼성전자주식회사 고유번호를 이용한 프로그램 탬퍼 방지 방법과 난독처리된 프로그램 업그레이드 방법, 상기 방법을 위한 장치
US20050021947A1 (en) * 2003-06-05 2005-01-27 International Business Machines Corporation Method, system and program product for limiting insertion of content between computer programs
CN101241735B (zh) 2003-07-07 2012-07-18 罗威所罗生股份有限公司 重放加密的视听内容的方法
GB2405958A (en) 2003-08-20 2005-03-16 Macrovision Europ Ltd Code obfuscation and controlling a processor by emulation
US7454323B1 (en) * 2003-08-22 2008-11-18 Altera Corporation Method for creation of secure simulation models
US7389273B2 (en) 2003-09-25 2008-06-17 Scott Andrew Irwin System and method for federated rights management
US7685436B2 (en) * 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
US7631292B2 (en) * 2003-11-05 2009-12-08 Microsoft Corporation Code individualism and execution protection
EP1551022A1 (de) * 2003-12-29 2005-07-06 Sony International (Europe) GmbH Verfahren zum Kopierschutz eines digitalen Inhalts
US7426749B2 (en) * 2004-01-20 2008-09-16 International Business Machines Corporation Distributed computation in untrusted computing environments using distractive computational units
JP4514473B2 (ja) * 2004-02-23 2010-07-28 富士通株式会社 コンピュータシステム、中央装置及びプログラム実行方法
US8468337B2 (en) * 2004-03-02 2013-06-18 International Business Machines Corporation Secure data transfer over a network
US7564976B2 (en) * 2004-03-02 2009-07-21 International Business Machines Corporation System and method for performing security operations on network data
US20050239034A1 (en) * 2004-04-07 2005-10-27 Mckeagney Francis Client/server distribution of learning content
JP5068176B2 (ja) 2005-01-18 2012-11-07 サーティコム コーポレーション デジタル署名と公開鍵の促進された検証
US8467535B2 (en) * 2005-01-18 2013-06-18 Certicom Corp. Accelerated verification of digital signatures and public keys
JP2006203564A (ja) * 2005-01-20 2006-08-03 Nara Institute Of Science & Technology マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
US7606361B2 (en) * 2005-03-18 2009-10-20 Oracle International Corporation Sending a message securely over an insecure channel
US7640583B1 (en) * 2005-04-01 2009-12-29 Microsoft Corporation Method and system for protecting anti-malware programs
US8127147B2 (en) * 2005-05-10 2012-02-28 Seagate Technology Llc Method and apparatus for securing data storage while insuring control by logical roles
JP4850830B2 (ja) * 2005-06-01 2012-01-11 パナソニック株式会社 コンピュータシステム及びプログラム生成装置
US7783896B2 (en) * 2005-09-06 2010-08-24 Research In Motion Limited System and method for management of plaintext data in a mobile data processing device
US9177153B1 (en) 2005-10-07 2015-11-03 Carnegie Mellon University Verifying integrity and guaranteeing execution of code on untrusted computer platform
US8028166B2 (en) * 2006-04-25 2011-09-27 Seagate Technology Llc Versatile secure and non-secure messaging
US7539890B2 (en) * 2006-04-25 2009-05-26 Seagate Technology Llc Hybrid computer security clock
US8429724B2 (en) 2006-04-25 2013-04-23 Seagate Technology Llc Versatile access control system
US8689193B2 (en) * 2006-11-01 2014-04-01 At&T Intellectual Property Ii, L.P. Method and apparatus for protecting a software application against a virus
US8752032B2 (en) * 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
US8181039B2 (en) * 2007-04-13 2012-05-15 Microsoft Corporation Disc drive counterfeiting countermeasure
US8826037B2 (en) * 2008-03-13 2014-09-02 Cyberlink Corp. Method for decrypting an encrypted instruction and system thereof
US8185749B2 (en) * 2008-09-02 2012-05-22 Apple Inc. System and method for revising boolean and arithmetic operations
US8429637B2 (en) * 2008-09-02 2013-04-23 Apple Inc. System and method for conditional expansion obfuscation
US8010773B2 (en) * 2008-06-24 2011-08-30 Microsoft Corporation Hardware constrained software execution
TWI401583B (zh) * 2009-08-06 2013-07-11 Phison Electronics Corp 資料擾亂/解擾亂與資料處理方法及其控制器與儲存系統
JP2013523043A (ja) 2010-03-22 2013-06-13 エルアールディシー システムズ、エルエルシー ソースデータセットの完全性を識別及び保護する方法
EP2388728A1 (de) * 2010-05-17 2011-11-23 Gemalto SA Sicherheitstoken zur sicheren Ausführung einer Anwendung auf einem Host-Computer
WO2012052862A1 (en) * 2010-10-21 2012-04-26 Nds Limited Code diversity method and system
US8745376B2 (en) 2011-10-14 2014-06-03 Certicom Corp. Verifying implicit certificates and digital signatures
US9858440B1 (en) * 2014-05-23 2018-01-02 Shape Security, Inc. Encoding of sensitive data
WO2016118216A2 (en) 2014-11-06 2016-07-28 Intertrust Technologies Corporation Secure application distribution systems and methods
US10079686B2 (en) 2015-07-29 2018-09-18 International Business Machines Corporation Privacy-preserving attribute-based credentials
US10003466B1 (en) * 2015-09-15 2018-06-19 Amazon Technologies, Inc. Network traffic with credential signatures
DE102017204020A1 (de) * 2017-03-10 2018-09-13 Siemens Aktiengesellschaft Verfahren zur rechnergestützten Obfuskation von Programmcode
WO2023007633A1 (ja) * 2021-07-28 2023-02-02 富士通株式会社 制御方法、制御プログラム、ノード、およびシステム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926480A (en) * 1983-08-22 1990-05-15 David Chaum Card-computer moderated systems
US5224160A (en) * 1987-02-23 1993-06-29 Siemens Nixdorf Informationssysteme Ag Process for securing and for checking the integrity of the secured programs
DE3877984D1 (de) * 1987-03-04 1993-03-18 Siemens Nixdorf Inf Syst Datenaustauschsystem.
US5347579A (en) * 1989-07-05 1994-09-13 Blandford Robert R Personal computer diary
US5265164A (en) * 1991-10-31 1993-11-23 International Business Machines Corporation Cryptographic facility environment backup/restore and replication in a public key cryptosystem
US5469507A (en) * 1994-03-01 1995-11-21 International Business Machines Corporation Secure communication and computation in an insecure environment
US5535276A (en) * 1994-11-09 1996-07-09 Bell Atlantic Network Services, Inc. Yaksha, an improved system and method for securing communications using split private key asymmetric cryptography

Also Published As

Publication number Publication date
DE69735103D1 (de) 2006-04-06
AU3488397A (en) 1998-01-07
CA2258087A1 (en) 1997-12-18
AU723556B2 (en) 2000-08-31
WO1997048203A1 (en) 1997-12-18
CA2258087C (en) 2001-01-09
EP0900488A1 (de) 1999-03-10
EP0900488A4 (de) 2001-01-03
US5892899A (en) 1999-04-06
EP0900488B1 (de) 2006-01-11
TW364098B (en) 1999-07-11

Similar Documents

Publication Publication Date Title
DE69735103T2 (de) Manipulationssicheres Verfahren und Vorrichtung
DE69634880T2 (de) Verfahren und gerät zum kontrollierten zugriff zu verschlüsselten datenakten in einem computersystem
DE69534757T2 (de) System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
EP1393146B1 (de) Verfahren und system zur verteilten erstellung eines programms für einen programmierbaren, tragbaren datenträger
DE69837303T2 (de) Informationsverarbeitungsvorrichtung und Verfahren und Aufzeichnungsmedium zum Ausführen mittels öffentlicher Schlüssel verschlüsselter Programme
DE69627270T2 (de) Sicherheitssystem zum Schutz von Informationen auf Speichermedien
DE60314782T2 (de) Vorrichtung zum Generieren eines verschlüsselten Programms
DE10393807B4 (de) Verfahren zum Schutz von Software vor Debugger-Angriffen
DE69701044T2 (de) Verteilung und kontrollierte benutzung von softwareprodukten
EP1184771B1 (de) Verfahren zum Schutz von Computer-Software und/oder computerlesbaren Daten sowie Schutzgerät
EP1099197B1 (de) Vorrichtung zum liefern von ausgangsdaten als reaktion auf eingangsdaten und verfahren zum überprüfen der authentizität und verfahren zum verschlüsselten übertragen von informationen
DE60015269T2 (de) Ein verfahren und system einen kopierschutz auf einem speichermedium darzustellen und ein speichermedium in einem solchen system zu benutzen
DE602004000106T2 (de) System zur Verbindung geheimer Daten zu einem Computer System mit Toleranz für Hardwareänderungen
DE60103515T2 (de) Kryptografisches verfahren zum schutz gegen betrug
DE69826778T2 (de) Vorrichtungen zum Verschlüsseln und Entschlüsseln einer Schlüsselwiedergewinnungsbedingung
DE69712656T2 (de) Elektronische Einrichtung zur Erzeugung einer sicheren Zeitreferenz zum Schutz einer Software
DE60212169T2 (de) Laden von software
DE69833947T2 (de) Speicherzellenanordnung zur erzeugung einer geheimen nicht dauerhaften speicherung
DE60103523T2 (de) Verfahren zum schutz eines elektronischen bausteines gegen betrug
DE102020206039A1 (de) Erstellen einer Container-Instanz
AU723556C (en) Tamper resistant methods and apparatus
WO2024038210A1 (de) Verfahren zum bereitstellen eines digitalen schlüssels
AU750845B2 (en) Tamper resistant methods and apparatus
DE102023110364A1 (de) Kryptographisches Verfahren und mittels des kryptographischen Verfahrens gesichertes Custodial oder Non-Custodial Wallet
AU2004218702B8 (en) Method for verifying integrity on an apparatus

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806