-
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 406a – 406b einen
verriegelnden Vertrauensmechanismus.
-
Gemäß dem verriegelnden
Vertrauensmechanismus sind in Bezug auf das veranschaulichte Ausführungsbeispiel
die manipulationssicheren SSF1 und SSF2 402a – 402b verantwortlich
für die Integrität der entsprechenden
in Bezug auf die Sicherheit sensitiven Anwendungen 400a – 400b.
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 402a – 402b 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 406a – 406b 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.