-
Gebiet der
Technik
-
Die
vorliegende Erfindung betrifft das Speichern geheimer Daten und
im Besonderen das Speichern geheimer Daten unter Verwendung eines
Mutationszyklus einer Zellenanordnung.
-
Beschreibung
des Stands der Technik
-
Die
meisten Computeranwendungen versuchen nicht gewollt geheime Daten
während
der Ausführung
zu schützen.
Vielmehr speichern sie geheime Werte, so dass diese im Speicher
jederzeit klar lesbar sind, wodurch die Daten für jede Vorgehensweise anfällig werden,
die einen Zugriff auf den entsprechenden Speicher erlangen kann.
Zum Beispiel kann ein aktives Programm eine Festplatte durchsuchen,
wobei es nach einem bestimmten Gegenstand sucht, der ein Geheimnis
bzw. einen Geheimcode beherbergt bzw. aufweist. Sobald das Geheimnis
bzw. der Geheimcode oder das Programm, welches das Geheimnis in
sich birgt, gefunden worden ist, kann das Geheimnis bzw. der Geheimcode
oder das Programm analysiert und/oder zerstört werden. Das Geheimnis und
das Programm können über ein
Modem zur Fernanalyse von der Festplatte entfernt oder von dieser
kopiert werden.
-
Höher entwickelte
Anwendungen weisen Geheimnisse bzw. geheime Daten auf, die im Speicher
nur während
der Zeiten klar oder im „Klartext" lesbar sind, wenn
sie tatsächlich
eingesetzt werden. Während
der restlichen Zeit werden die geheimen Daten in einer bestimmten
verschlüsselten
Form gespeichert. Dies ist mit dem Problem verbunden, dass ein weiteres
Geheimnis bzw. ein weiterer Geheimcode eingesetzt werden muss, um
die gespeicherten Geheimcodes zu entschlüsseln. Dieser schützende Geheimcode
muss danach geschützt
werden, damit wiederum die Werte sicher sind. Das Entschlüsseln verschiedener
Geheimcodes kann sich zeitaufwändig
gestalten. Zum Beispiel können
die verschlüsselten
Geheimcodes auf Festplatten gespeichert werden, der Zugriff auf
welche Zeit in Anspruch nimmt.
-
In
Computers & Security,
Oktober 1993, Seiten 565 bis 584 werden die Komprimierung und Verschlüsselung
offenbart und das Beispiel für
ein XOR-Glied dargestellt, das verwendet werden kann, um eine zufällige bzw.
wahlfreie Befehlsgruppe zu erzeugen, die durch Ausführung einer
anderen XOR-Funktion wiederhergestellt werden kann.
-
WO97/48203,
eingereicht am 13. Juni 1996 und veröffentlicht am 18. Dezember
1997, mit dem Titel „Tamper
Resistant Method and Apparatus",
von Aucsmith et al, beschreibt ein gegen Missbräuche sicheres Verfahren, bei
dem Zellen eine exklusive ODER-Funktion durchlaufen, wobei andere
Zellen Mutationen erzeugen. Das Ausführungsmuster für dieses
Verfahren kann den schützenden
Geheimcode darstellen. Wenn jedoch Bits verändert werden, mutieren die
Zellen nicht ordnungsgemäß.
-
Somit
werden ein Verfahren und eine Vorrichtung benötigt, um geheime Daten sicher
derart zu speichern, dass die geheimen Daten schnell gespeichert
und abgerufen werden können.
-
Zusammenfassung
der Erfindung
-
Vorgesehen
ist gemäß einem
ersten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen
Anspruch 1.
-
Vorgesehen
ist gemäß einem
zweiten Aspekt der vorliegenden Erfindung ein computerlesbares Medium
gemäß dem gegenständlichen
Anspruch 11.
-
Vorgesehen
ist gemäß einem
dritten Aspekt der vorliegenden Erfindung ein System gemäß dem gegenständlichen
Anspruch 15.
-
Bevorzugte
Merkmale der Erfindung sind in den beigefügten Ansprüchen definiert.
-
Kurze Beschreibung
der Zeichnungen
-
Die
vorliegende Erfindung wird in Bezug auf die nachstehende genaue
Beschreibung und aus den beigefügten
Zeichnungen der Ausführungsbeispiele
der Erfindung umfassender verständlich,
wobei die vorliegende Erfindung jedoch nicht auf die besonderen
beschriebenen Ausführungsbeispiele
beschränkt
ist, die vielmehr lediglich der Erläuterung und dem besseren Verständnis dienen.
In den Zeichnungen zeigen:
-
1 eine
Blockdiagrammdarstellung eines Computersystems gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
2 eine
in einem Ausführungsbeispiel
der vorliegenden Erfindung verwendete Zellenanordnung;
-
3 eine
Tabelle der Paarbildungen und Zellen im Klartext in verschiedenen
Phasen eines vereinfachten Mutationszyklus eines Ausführungsbeispiels
gemäß der vorliegenden
Erfindung;
-
4A ein
Register und dessen Inhalte, das in Verbindung mit einem Ausführungsbeispiel
der vorliegenden Erfindung eingesetzt wird;
-
4B die
Zellenanordnung aus 2 und Inhalte von Speicherbereichen
darin während
einer bestimmten Phase der Ausführung;
-
5 eine
Blockdiagrammdarstellung eines DVD-Players, der eine Zellenanordnung
gemäß der vorliegenden
Erfindung einsetzt;
-
6 eine
Blockdiagrammdarstellung eines Computersystems, das eine Zellenanordnung
gemäß der vorliegenden
Erfindung einsetzt, um geheime Daten so lange zu speichern, bis
diese benötigt werden;
-
7A eine
Draufsicht einer Disk, wie etwa einer CD-ROM; und
-
7B ein
Computersystem, das als ein Server oder als ein Benutzer einer Zellenanordnung gemäß der vorliegenden
Erfindung eingesetzt wird.
-
Genaue Beschreibung
bevorzugter Ausführungsbeispiele
-
In
Bezug auf die Abbildung aus 1 weist ein
Computersystem 10 einen Prozessor 14 und einen
Speicher 16 auf. Bei dem Speicher 16 kann es sich
um einen Direktzugriffsspeicher (RAM), eine Festplatte und/oder
ein anderes Format handeln. Der Prozessor 14 kommuniziert
mit dem Speicher 16 über
den Bus und zugeordnete Logik 20. Das Computersystem 10 ist
nicht auf eine bestimmte Art von Computersystem beschränkt. Zum
Beispiel kann es sich bei dem Computersystem 10 um ein
System handeln, bei dem es sich bei dem Prozessor 14 um einen
Pentium® II
Prozessor, hergestellt von der Intel Corporation, handelt. Die erforderlichen Einzelheiten für die Implementierung
von Speicher, Bus und zugeordneter Logik sowie Prozessoren sind
allgemein bekannt und werden hierin nicht näher beschrieben. Das Computersystem 10 weist
zahlreiche andere, allgemein bekannte Komponenten bzw. Bauteile
auf, die weder veranschaulicht noch beschrieben werden, da dies
für das
Verständnis
der vorliegenden Erfindung nicht erforderlich ist und die Erfindung
verschleiern kann.
-
In
der Patentschrift bezieht sich die Aussage „ein Ausführungsbeispiel" auf ein Ausführungsbeispiel
der Erfindung. Hiermit wird festgestellt, dass die speziellen Komponenten
oder Merkmale, die in Bezug auf das jeweilige Ausführungsbeispiel
erwähnt werden,
auch in anderen Ausführungsbeispielen
der Erfindung vorhanden sein können.
Ferner müssen nicht
alle der erwähnten
verschiedenen Komponentenoder Merkmale in dem gleichen Ausführungsbeispiel
der vorliegenden Erfindung vorhanden sein. Die verschiedenen Komponenten
oder Merkmale können in
verschiedenen Ausführungsbeispielen
kombiniert und aufeinander abgestimmt werden.
-
Der
Speicher 16 weist das bzw. die Register 24 und
die Zellenanordnung 26 auf. Zu jedem beliebigen Zeitpunkt
können
Code, Daten und andere binäre
Werte von der Zellenanordnung 26 zwischen dem Prozessor-Cache,
dem Cache außerhalb
des Prozessors (z.B. L2-Cache), dem Hauptspeicher, einer Festplatte
und/oder weiteren Speichern verteilt bzw. ausgetauscht werden. Der
Begriff „Zellenanordnung" ist so auszulegen,
dass er im weiteren Sine eine binäre Struktur aufweist, welche
mehrere Zellen aufweist, ohne dabei auf eine bestimmte Ausführung beschränkt zu sein.
Zum Beispiel kann sich die Zellenanordnung 26 an zusammenhängenden Speicherplätzen in
dem Speicher 16 befinden oder auf nicht zusammenhängende Speicherplätze verteilt sein.
-
In
Bezug auf die Abbildung aus 2 weist die
Zellenanordnung mehrere Zellen auf. Zur besseren Veranschaulichung
und Erläuterung
weist die Zellenanordnung 26 nur acht Zellen au: die Zellen 0, 1,
..., 7 (gemeinsam die Zellen 0 bis 7).
In der Praxis kann die Zellenanordnung 26 wesentlich mehr
Zellen aufweisen. Die Zellenanordnung 26 mutiert oder durchläuft auf
andere Art und Weise verschiedene Phasen. Die Mutation durch verschiedene
Phasen ist ein Beispiel für
einen Mutationszyklus oder Phasenzyklus.
-
In
einem Ausführungsbeispiel
erfolgen die Mutationen, da der Prozessor 14 exklusive ODER-Operationen
(XOR) zwischen den Zellen durchläuft.
In einem Ausführungsbeispiel
befindet sich die Hälfte
der Zellen (z.B. die Zellen 0 bis 3) in einem
ersten Abschnitt der Zellenanordnung 26, während sich
die andere Hälfte
der Zellen (z.B. die Zellen 4 bis 7) in einem
zweiten Abschnitt der Zellenanordnung 26 befindet.
-
In
einem Ausführungsbeispiel
wird eine XOR-Operation an jeder der Zellen des ersten Abschnitts
der Zellenanordnung 26 mit einem Partner der Zellen des
zweiten Abschnitts ausgeführt.
In einem Ausführungsbeispiel
ist damit gemeint, dass eine Zelle mit einer anderen Zelle eine
XOR-Operation ausführt,
dass die Bits der einen Zelle durch eine XOR-Operation mit entsprechenden
Bits der anderen Zelle geführt
werden. Zum Beispiel wird eine XOR-Operation des Bits 0 der Zelle 0 mit
dem Bit 0 der Zelle 4 ausgeführt; für das Bit 1 der Zelle 0 wird eine
XOR-Operation mit dem Bit 1 der Zelle 4 ausgeführt und
so weiter, so dass für
das Bit n der Zelle 0 eine XOR-Funktion mit dem Bit n von Zelle 4 ausgeführt wird.
In anderen Ausführungsbeispielen
kann eine andere Anordnung von Bits (z.B. nicht inkrementierend
oder aufeinander folgend) eingesetzt werden. In bestimmten Ausführungsbeispielen
wird nicht für alle
Bits in jeder Zelle oder Phase eine XOR-Operation ausgeführt. In der XOR-Funktion gilt
0 XOR 0 = 0, 0 XOR 1 = 1, 1 XOR 0 = 1 und 1 XOR 1 = 0. Diesbezüglich stellen
Code, Daten und andere binäre
Werte lediglich 1er und 0er dar und sind für XOR-Operationen geeignet.
-
Mindestens
eine Zelle weist mindestens einen bestimmten Klartext in jeder Phase
auf, aus dem der Prozessor 14 (oder eine andere Schaltkreisanordnung)
Befehle erhalten kann, so dass die Zellenanordnung 26 zumindest
mutieren oder anderweitig in die nächste Phase übergehen
kann. Klartext ist Teil des ursprünglichen Programms (in Phase
0) oder durch den Kompilierer bzw. Compiler erzeugter Mutationen
dessen, die ausgeführt
werden können.
Andere Zellen können
etwas aussehen, was einem ausführbaren
Code gleicht, und wobei in der Tat Abschnitte der Zellen ausführbar sein
können,
wobei die Zellen jedoch nicht ausgeführt werden. Vielmehr können die
mutierten binären
Bits, die als Code, Daten oder sonstige binäre Werte ihren Ursprung haben, wahlfrei
bzw. zufällig
eine bestimmte Bedeutung aufweisen. Dies ist wünschenswert, da dies das Verständnis der
Zellenanordnung 26 für
einen Angreifer zusätzlich
erschwert.
-
In
der Abbildung aus 2 weisen die Zellen 0, 1,
..., 7 in der Zellenanordnung 26 die entsprechenden
Speicherbereiche SR0, SR1 ... SR7 auf. Einige oder alle der Speicherbereiche
speichern Daten aus dem bzw. den Register(n) 24 aus 1.
Die geheimen Daten aus dem bzw. den Register(n) 24 befinden
sich in mutierter Form in den meisten oder allen Phasen, außer einer
Phase. Die Maßnahme
der Mutation der Daten ist eine Form der Verschlüsselung, und die Rückführung der
Daten in eine nicht mutierte Form ist eine Form der Entschlüsselung.
-
Die
Zellenanordnung wird gegen Missbräuche sicher gestaltet, indem
der Code und andere binäre
Werte so angeordnet werden, dass wenn sich ein Bit auf andere Weise
als durch XOR-Mutation oder Speicherung in einem Speicherbereich
SR0 bis SR7 in der entsprechenden Phase verändert, so wird der Inhalt der
Zellenanordnung 26 korrumpiert. Abhängig von Faktoren, wie etwa
davon, welche Bits verändert
werden, in welcher Phase und Zelle sie verändert werden, und der Anzahl
der Zellen und Phasen, kann die Zellenanordnung 26 die
Ausführung
vollständig
einstellen oder einfach nur nicht mehr die richtigen geheimen Daten
zurückgeben. Abhängig von
Faktoren, wie etwa dem Code, der Anzahl der Zellen, der Anzahl der
Phasen und davon, welche Bits einer XOR-Operation unterzogen werden,
und in welcher Phase sie der XOR-Operation unterzogen werden, ist
es möglich,
dass ein Bit oder mehrere Bits außerhalb des Speicherbereichs
gegeben sein, die verändert
werden können,
ohne es zu verhindern, dass die Zellenanordnung 26 die
richtigen geheimen Daten zurückgibt.
In Verbindung mit einer großen
Anzahl von Phasen und gut geschriebenem Code ist die diesbezügliche Gefahr
bzw. Wahrscheinlichkeit jedoch sehr gering. Wenn derartige Bits
existieren würden,
wäre jedoch
deren Anzahl so klein, dass sie für einen Angreifer, der angeblich
nicht von deren Position bzw. Anordnung weiß, daraus kaum Nutzen ziehen
könnte.
-
Die
Zellen sind auf keine bestimmte Größe beschränkt. Allerdings sind sie mindestens
so groß, dass
sie einen bestimmten Code und einen der Speicherbereiche speichern
bzw. Platz dafür
bieten können.
In einem Ausführungsbeispiel
weisen alle Zellen die gleiche Größe auf, und alle Speicherbereiche weisen
ebenfalls die gleiche Größe auf.
Die Zellen können
auch bestimmte andere Bits als den Code oder die Daten speichern,
die nicht ausgeführt
werden. Ein Zweck für
diese Bits ist es, den Inhalt und die Funktionsweise der Zellen
weiter zu verschleiern. Die Länge
des in den Zellen gespeicherten Codes variiert abhängig von
der jeweiligen Implementierung. Gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung ist die Zellenanordnung 26 zum
Beispiel ein Teil einer dynamischen Zinkbibliothek (DLL als englische
Abkürzung
von Dynamic Link Library). Bei einem Aufruf durch eine Aufruffunktion 22 speichert die
Zellenanordnung 26 einfach geheime Daten in dem bzw. den
Register(n) 24 oder ruft diese daraus ab und verläuft die
verschiedenen Phasen, um die Daten zu verschlüsseln oder zu entschlüsseln. In
anderen Ausführungsbeispielen
kann die Zellenanordnung auch andere Funktionen erfüllen.
-
Die
Speicherbereiche SR0 bis SR7 können jeweils
verschiedene Größen aufweisen
(z.B. ein Byte oder zwei Bytes pro Bereich). Die Speicherbereiche
SR0 bis SR7 können
an jeder beliebigen Position innerhalb der Zellen angeordnet sein.
Zum Beispiel können
die Speicherbereiche 8, 32 oder 64 Byte oder
eine andere Anzahl von Bytes (z.B. so dass sie am Ende der Zellen
platziert werden) von dem Anfang der Zellen beginnen.
-
In
einem Ausführungsbeispiel
werden geheime Daten aus dem bzw. den Register(n) 24 während der
Speicher-/Abrufphase in der Zellenanordnung 26 gespeichert
und aus dieser abgerufen: Wenn die Anzahl der Einheiten (z.B. Bytes)
der geheimen Daten niedriger ist als die Anzahl der Speicherplätze, so weist
nicht jeder Speicherplatz eine geheime Dateneinheit (z.B. ein Byte)
oder Mutationen dessen in jeder Phase auf. Abhängig von dem Code, der Anzahl der
Phasen und der Anzahl der Speicherplätze können bestimmte Speicherpositionen
bzw.
-
Speicherplätze gegeben
sein, die keine geheimen Daten oder eine Mutation dieser während einer
der Phasen speichern.
-
Eine
Aufruffunktion 22, die in dem Speicher 16 gespeichert
ist, ruft die Zellenanordnung 26 auf. In einem Ausführungsbeispiel
umfasst die Aufruffunktion 26 die folgenden Argumente,
die nicht unbedingt diese Reihenfolge bzw. Anordnung aufweisen müssen: (1)
geheime Daten, (2) einen Versatz, (3) Länge, (4) Speichern/Abrufen
und (5) eine Phasenidentifikationsnummer (PIN) (die in die vorgesehene
Speicher-/Abrufphase abgebildet werden kann). Die geheimen Daten
stellen die Daten in dem bzw. den Register(n) 24 dar, die
in der Zellenanordnung 26 gespeichert werden sollen. In
einem Ausführungsbeispiel
entspricht der Versatz dem Versatz in einer Ausgangszelle, welche
die Speicherbereichsposition bezeichnet, an der die PIN gespeichert
werden soll. Der Code in der Ausgangszelle kann den Speicherbereich
bezeichnen, der einen ersten Abschnitt (Byte 0) der geheimen Daten
speichert und so weiter. Die Länge
entspricht der Länge
der geheimen Daten und möglicherweise
der PIN (z.B. die Gesamtanzahl der Bytes oder Wörter), die gespeichert oder
abgerufen werden sollen. Das Speichern/Abrufen kann ein einzelnes
Bit umfassen. Zum Beispiel kann eine logische 1 einen Speichervorgang
bezeichnen, der es bewirkt, dass geheime Daten aus dem bzw. den
Register(n) 24 während
der Phase 0 in die Zellenanordnung 26 geschrieben werden,
und eine logische 0 kann eine Abrufvorgang bezeichnen, der es bewirkt, dass
in der Zellenanordnung 26 gespeicherte geheime Daten aus
der Zellenanordnung 26 in das bzw. die Register 24 oder
das bzw. die Register 28 geschrieben werden.
-
Die
PIN bezeichnet die Speicher-/Abrufphase entweder direkt oder indirekt
durch Abbildung. In einem Ausführungsbeispiel weist
die Zellenanordnung 26 viele mögliche Speicher-/Abrufphasen auf. Die
PIN kann zum Beispiel 8 Bits darstellen, was bis zu 256 Objekte
bezeichnet. Wenn die Anzahl der Speicher-/Abrufphasen kleiner ist
als die Anzahl der möglichen
PIN-Kombinationen, so wird die PIN in der Speicher-/Abrufphase abgebildet
(z.B. durch logische UND-Verknüpfung
der Bits mit einer Zahl.). Das Verhältnis zwischen der PIN und
der Speicher-/Abrufphase
kann durch Abbildung verwürfelt
werden, um die Funktionsweise der Zellenanordnung 26 weiter
zu verschleiern. Ein Benutzer kann die PIN auswählen, oder sie kann zum Beispiel
zufällig
bzw. wahlfrei für
den Benutzer ausgewählt
werden. Der hierin beschriebene Begriff „zufällig" bzw. „wahlfrei" deckt ohne weitere Ausführungen
echte Zufallszahlen und Pseudozufallszahlen ab.
-
Die
Abbildung aus 3 zeigt ein veranschaulichendes
Beispiel der Funktionsweise der Zellenanordnung 26. Hiermit
wird ausdrücklich
festgestellt, dass das Beispiel aus 3 jedoch
nur der Veranschaulichung allgemeiner Informationen in Bezug auf
die vorliegende Erfindung dient und nicht unbedingt vollständig mathematisch
korrekt ist. Eine kommerzielle Implementierung der Erfindung kann viel
mehr weitere Zellen und viel mehr weitere Phasen aufweisen, um es
für einen
Angreifer schwieriger zu gestalten, entweder die genauen geheimen
Daten ausfindig zu machen oder einen Gruppenangriff auf den Mutationszyklus
vorzunehmen. Die Zellenanordnung 26 kann verschiedene Paarbildungen
aufweisen. Hinsichtlich dieser Hinweise erfolgt die folgende Beschreibung
der Abbildung aus 3.
-
Die
Zellenanordnung 26 weist einen ersten bzw. Ausgangszustand
oder eine: erste bzw. Ausgangsphase auf, auch als die Phase 0 bezeichnet. Wenn
sich die Zellenanordnung 26 nicht im Einsatz befindet,
so ist die Phase 0 eine Ruhephase. Während sich die Zellenanordnung 26 in
der Phase 0 befindet, weist nur die Zelle 0 Klartext auf.
Das heißt, die
Zelle 0 weist Code auf, der durch den Prozessor 14 ausgeführt wird.
Die Zellen 1 bis 7 werden nicht in Phase 0 ausgeführt, wobei
sie jedoch Inhalte aufweisen können,
die wie Klartext erscheinen. (Der Klartext in Phase 0 kann sich
auch in einer anderen Zelle als der Zelle 0 befinden.)
In der Zelle 0 können
sich bestimmte Bits (möglicherweise
sinnfreie binäre
Werte) an Speicherplätzen
außerhalb
des Speicherbereichs SR0 befinden, die nicht ausgeführt werden.
Es ist wünschenswert,
jedoch nicht erforderlich, dass ein so großer Teil der Zellenanordnung 26 wie
möglich das
Erscheinungsbild von Klartext aufweist, um die Funktionsweise der
Zellenanordnung 26 zu verschleiern.
-
Die
Aufruffunktion 22 ruft die Zellenanordnung 26 mit
einer Speicheranforderung auf, um geheime Daten aus dem bzw. den
Register(n) 24 in die Zellenanordnung 26 zu schreiben.
Einige oder alle Argumente der Aufruffunktion 22 können in
dem bzw. den Register(n) 24 gespeichert werden. Diese Argumente
können
in dem Speicher 16 bleiben, bis sie benötigt werden, oder sie können zu
dem Zeitpunkt des Aufrufs bis sie benötigt werden in Registern oder
in einem Stapel von Prozessoren 14 platziert werden. Die
PIN lautet zum Beispiel „202". Durch ein Abbildungssystem
wird die PIN „202" in die Phase Nummer
3 abgebildet.
-
Als
Reaktion auf den Funktionsaufruf bewirkt der Code in der Zelle 0 XOR-Paarbildungen
bestimmter in 3 aufgeführter Zellen, was bewirkt, dass
die Zellenanordnung 26 von Phase 0 in Phase 1 mutiert.
Die Speicherbereiche SR0 bis SR7 der Zellen werden XOR-Operationen
mit anderen der Speicherbereiche SR0 bis SR7 gemäß den Paarbildungen der Zellen
unterzogen.
-
Gemäß der Aufstellung
aus 3 erfolgt zum Beispiel eine XOR-Operation der
Zelle 0 mit Zelle 4. Somit wird SR0 einer XOR-Operation
mit SR4 unterzogen, da sich SR0 innerhalb der Zelle 0 und SR4
innerhalb der Zelle 4 befindet. Gemäß einem Ausführungsbeispiel
wird das Bit 0 von SR0 einer XOR-Operation mit Bit 0 aus SR4 unterzogen,
wobei Bit 1 aus SR0 einer XOR-Operation
mit Bit 1 aus SR4 unterzogen wird und so weiter. (Jedoch kann eine
andere Anordnung von XOR-Operations-Bits eingesetzt werden.) In
einem Ausführungsbeispiel
werden für
die Speicherbereiche nur XOR-Operationen mit anderen Speicherbereichen
ausgeführt.
Am Ende der Mutation befindet sich die Zellenanordnung 26 in der
Phase 1, und nur die Zelle 5 befindet sich im Klartext.
-
Der
Code in der Zelle 5 bewirkt XOR-Paarbildungen bestimmter
in der Abbildung aus 3 aufgeführter Zellen, was bewirkt,
dass die Zellenanordnung aus Phase 1 in Phase 2 mutiert. Am Ende
der Mutation befinden sich nur die Zellen 2 und 7 im
Klartext, was bedeutet, dass abhängig
von einer bestimmten Bedingung oder einem bestimmten Umstand entweder
die Zelle 2 oder die Zelle 7 ausgeführt werden
kann. Aus zwei Gründen
kann es mehr als eine Zelle im Klartext befinden. Erstens kann mehr
als eine Zelle im Klartext einem Angreifer das Vorhaben schwieriger
gestalten. Zweitens kann eine Verzweigung vorgesehen sein, so dass
abhängig
von einem bestimmten Wert mehr als eine Zelle möglich sind.
-
Der
Code in der Zelle 2 oder in der Zelle 7 bewirkt
eine Mutation der Zellenanordnung 26 aus Phase 2 in Phase
3. Am Ende der Mutation befindet sich nur die Zelle 6 im
Klartext. Wie dies bereits festgestellt worden ist, weist die PIN
in Kombination mit dem Code in der Zellenanordnung 26 den
Prozessor 14 anweist, geheime Daten des bzw. der Register 24 in
bestimmte Bereiche der Speicherbereiche SR0 bis SR07 zu schreiben.
In dem Beispiel entspricht der Versatz 36 Bytes, und die
Länge ist
gleich 4 Bytes. Gemäß einem
Ausführungsbeispiel
wird die PIN in Speicherbereichen gemeinsam mit Bytes geheimer Daten
gespeichert, und die PIN ist das erste der 4 Bytes. Somit existieren
drei verbleibende Bytes geheimer Daten. In Bezug auf die Abbildung
aus 4A kann bzw. können
das bzw. die Register 24 die Argumente für die Aufruffunktion
aufweisen (wobei jedoch auch eine andere Speicheranordnung ausgewählt werden
kann). In der Abbildung aus 4A entspricht
die PIN einem Byte, und die Bytes B0, B1 und B2 sind 3 Bytes geheimer
Daten.
-
Die
Abbildung aus 4B veranschaulicht den Inhalt
der Zellenanordnung 26 in Phase 3 nach dem die Aufruffunktion
die PIN und die geheimen Datenbytes B0, B1 und B2 in die Speicherbereiche
SA0, SR1, SR4 und SR5 der Zellenanordnung 26 schreibt. In
einem Ausführungsbeispiel
werden ein Teil der PIN und das Byte B0 in den ersten Bereich der
Zellenanordnung 26 (d.h. die Zellen 0 bis 3)
geschrieben, und die Bytes B1 und B2 werden in den zweiten Bereich der
Zellenanordnung 26 (d.h. die Zellen 4 bis 7)
geschrieben, wie dies in der Abbildung aus 4B dargestellt
ist. Ferner sind die Zellenpaarungen so gegeben, dass die PIN und
die Bytes der geheimen Daten während
dem ersten Übergang
in die nächste
Phase mutiert werden, wie in dem Beispiel aus den Abbildungen der 3B und 4B.
-
Als
Reaktion auf die XOR-Operationen des in 3 aufgeführten Paars,
mutiert die Zellenanordnung 26 von Phase 3 in Phase 4.
In ähnlicher
Weise mutiert die Zellenanordnung 26 von Phase 4 in Phase
5 und von Phase 5 zurück
in Phase 0, bei der es sich um die Ruhephase handelt. In ähnlicher
Weise mutieren die PIN und die geheimen Datentbytes B1, B2 und B3 von
Phase 3 zu Phase 4 und ferner von Phase 4 zu Phase 5 und weiter
von Phase 5 zu Phase 0. Die Zellenanordnung 26 verbleibt
in ihrer Ruhephase (Phase 0), bis sie wieder aufgerufen wird. Die Mutationen
verschlüsseln
die PIN und geheime Daten. (Wenn die PIN und die geheimen Daten
bereits in verschlüsselter
Form in dem bzw. den Register(n) 24 vorhanden sind, werden
sie durch die Mutationen weiter verschlüsselt.) Die Aufruffunktion 22 ruft
die Zellenanordnung 26 auf, um die geheimen Daten abzurufen.
Zum Entschlüsseln
der PIN und der geheimen Daten mutiert die Zellenanordnung 26 von
Phase 0 in Phase 1, von Phase 1 in Phase 2 und von Phase 2 in Phase
3. In jeder Phase werden die Speicherbereiche mit anderen Speicherbereichen gemäß den in 3 aufgeführten Paarungen
mutiert. In Phase 3 weisen die Speicherbereiche SR0, SR1, SR4 und
SR5 die ursprüngliche
IN und geheimen Datenbytes B1, B2 bzw. B3 auf. Die Aufruffunktion 22 stellt
die PIN aus dem bzw. den Register(n) 24 oder anderweitig
bereit, während
sich die Zellenanordnung 26 in Phase 0 oder einer Phase
mit verhältnismäßig niedriger
Nummer befindet. In einem Ausführungsbeispiel
wird die PIN durch den Code der Zellenanordnung 26 beginnend
in Zelle 0 von Phase 0 verwendet. Die durch die Aufruffunktion 22 präsentierte
PIN wird in Phase 3 mit der PIN in SR0 verglichen. Wenn eine Übereinstimmung
gegeben ist, werden die Inhalte aus SR1, SR4 und SR5 in ein externes
Register (z.B. das bzw. die Register 24 oder das bzw. die
Register 28) geschrieben. Wenn keine Übereinstimmung gegeben ist,
lässt die
Zellenanordnung 26 das Lesen der Inhalte SR1, SR4 und SR5
nicht zu. Ferner wechselt die Zellenanordnung 26 in einem Ausführungsbeispiel
in einen Selbstzerstörungsmodus,
da angenommen wird, dass jemand versucht bzw. versucht hat, die
Zellenanordnung 26 zu missbrauchen. Der Selbstzerstörungsmodus
kann das Verändern bestimmter
Bits umfassen, die es bewirken, dass der Code und/oder die geheimen
Daten korrumpiert oder nicht mehr ausführbar werden. Die Zellenanordnung 26 kann
zwei Gelegenheiten zulassen, um die richtige PIN zu erhalten, bevor
die Selbstzerstörung
vorgenommen wird. Die Selbstzerstörung ist eine Form des Schutzes
vor Missbrauch.
-
An
Stelle des Abrufens von Daten kann die Aufruffunktion 22 die
Zellenanordnung 26 aufrufen, neue geheime Daten in die
Zellenanordnung 26 zu schreiben. Während dem Speichervorgang in
den Speicherbereichen können
die Bits, die nicht mit der PIN oder geheimen Daten überschrieben
werden, in dem jeweiligen logischen Zustand verbleiben bzw. belassen
werden, in dem sie sich befunden haben. Alternativ können zum
Beispiel Zufallszahlen oder ausschließlich Nullen oder Einsen an
diese Plätze der
Speicherbereiche geschrieben werden.
-
Verschiedene
Versionen der Zellenanordnung 26 können erzeugt werden, wobei
verschiedene mögliche
Phasen gegeben sind, aus denen die PIN ausgewählt werden kann. Die verschiedenen Versionen
können
auch andere Unterschiede aufweisen, einschließlich unterschiedlicher Anzahlen
von Phasen und Zellen, unterschiedlicher Größen von Zellen und Speicherbereichen,
einer anderen Anordnung vom Durchleiten von Argumenten und sonstiger Merkmale.
Ein Anbieter der erfindungsgemäßen Software
kann verschiedene Versionen an unterschiedliche Kunden verkaufen.
Ein OEM (englische Abkürzung
von Original Equipment Manufacturer) kann verschiedene Versionen
erhalten und verschiedene Versionen auf verschiedenen Vorrichtungen
installieren. Das Vorhandensein verschiedener Versionen macht es
zusätzlich
schwieriger, die Operationen der Zellenanordnung 26 zu
ermitteln.
-
Die
Zellenanordnung 26 kann so gestaltet werden, dass sie ein
Fehler nicht behebendes Selbstzerstörungsmerkmal aufweist, das
aktiviert wird, wenn die Zellenanordnung 26 feststellt,
dass bestimmte Flaggen bzw. Flags in dem Prozessor 14 gesetzt
worden sind. Zum Beispiel weisen Pentium® Prozessoren
der Intel Corporation Flaggen auf, die gesetzt werden, wenn ein
Fehlersuchprogramm bzw. Debugger versucht, Unterbrechungspunkte
einen Einzelschritt durch das Programm festzulegen. Der Code der
Zellenanordnung 26 kann Merkmale aufweisen, welche die
Zellenanordnung 26 in den Selbstzerstörungsmodus versetzen, wenn
detektiert wird, dass sich bestimmte Bits verändern, wobei aber auch eine
reine natürliche
Zerstörung
durch XOR-Operationen mit dem falschen Code erfolgen kann. Die gegen
Missbräuche
sichere Beschaffenheit der Zellenanordnung 26 macht sie
auch widerstandsfähig
gegen die Fehlersuche, Protokollieren oder statische Analyse.
-
Eine
Technik zur Bestimmung des Inhalts der Zellenanordnung 26 in
Phase 0 lautet wie folgt. Eine Matrix P weist alle Klartextzellen
auf, die in jeder Phase eingesetzt werden. So genannte Don't Care-Abschnitte,
wie etwa Speicherbereiche weisen Zufallszahlen oder alle 1er oder
0er auf. Die Matrix P ist eine N × 1 Matrix, wobei N die Anzahl
der Zellen mit Klartext entspricht. Es kann nützlich sein, dass N ein Vielfaches
von zwei ist. Zusätzliche
Zellen von Zufallszahlen oder ausschließlich 0er oder 1er können hinzugefügt werden,
um N auf ein Vielfaches von zwei zu bringen. Eine Matrix M ist eine
Matrix der Partnerbildung, die Informationen über die zeitliche (Phase) und
räumliche
(Zellen) Platzierung aufweist. Eine Matrix I ist die erste Phase
bzw. Ausgangsphase (Phase 0) der Zellenanordnung 26. Hiermit
wird festgestellt, dass P = M I, wobei * für eine Matrixmultiplikation
steht. Somit gilt I = M–1 * P. M kann zum Beispiel
durch Pivots und Eliminationen der allgemein bekannten Gauss-Jordon-Technik
invertiert werden.
-
In
Bezug auf die Abbildung aus 5 kann die
vorliegende Erfindung in Verbindung mit einem DVD-Player 60 auf
Softwarebasis eingesetzt werden, der ein Plattenlaufwerk 64 aufweist,
um geheime Daten (wie zum Beispiel die Werte von Verschlüsselungsschlüsseln) in
Verbindung mit einem Prozessor 14 und Speicher 16 und
visuellen und Audio-Vorrichtungen 68 vorübergehend
zu speichern. Die PIN kann wahlfrei bzw. auf Zufallsbasis mit jedem
Speichervorgang geheimer Daten in der Zellenanordnung 26 ausgewählt werden.
Dies macht es schwieriger, die bei der DVD-Decodierung enthaltenen
geheimen Daten zu ermitteln.
-
In
Bezug auf die Abbildung aus 6 kann die
vorliegende Erfindung in Verbindung mit einem elektronischen Handelssystem 80 eingesetzt
werden, das eine Eingabevorrichtung 84 wie etwa eine Tastatur
und einen Prozessor 14 und einen Speicher 16 aufweist,
um Passwörter
oder andere geheime Daten entweder temporär, mittelfristig oder dauerhaft zu
speichern. Bei bestimmten Implementierungen gehen die Inhalte der
Zellenanordnung 26 verloren, wenn der beherrschende Prozess
unterbrochen wird. Bei anderen Implementierungen wird die Zellenanordnung 26 auf
einem Plattenspeicher gespeichert. Eine langfristige Speicherung,
im Besonderen auf einem Plattenspeicher, kann die Zellenanordnung 26 für einen
Angriff verwundbarer machen. Das Passwort oder die sonstigen geheimen
Daten können
auf Leitern 88 zur Verfügung
gestellt bzw. bereitgestellt werden. Die gleichen geheimen Daten
können
mehrfach aus der Zellenanordnung 26 abgerufen werden. Die
PIN kann durch den Benutzer oder durch ein anderes Mittel (z.B.
zufällig
bzw. wahlfrei) ausgewählt werden.
-
In
Bezug auf die Abbildungen der 7A und 7B kann
die Zellenanordnung 26 oder Code, der die Zellenanordnung 26 erzeugt,
und oder die Aufruffunktion 22, in computerlesbarer Form
gespeichert werden. Zum Beispiel veranschaulicht die Abbildung aus 7A eine
Disk 90, die eine CD ROM (englische Abkürzung von Compact Disk Read
Only Memory), eine, DVD, ein Festplattenlaufwerk (wie etwa in einem
PC oder einem Server) oder einen anderen Plattenspeicher darstellen
kann. Eine CD ROM oder ein anderer Plattenspeicher kann zu verschiedenen
Händlern
oder Endkäufern
verschickt oder transportiert werden. Verschiedene CD ROMs können verschiedene
Versionen der Zellenanordnung 26 oder Programme aufweisen,
welche die Zellenanordnung 26 bilden.
-
In
Bezug auf die Abbildung aus 7B weist ein
Computersystem 92 ein Diskettenlaufwerk 94, einen
Prozessor 14, einen Speicher 16 und ein Modem 98 auf.
Das Computersystem 92 kann ein System darstellen, das die
Zellenanordnung 26 oder Code, der die Zellenanordnung 26 bildet,
von dem Modem 98 zu einem anderen Computer überträgt. Zum
Beispiel fungiert das Computersystem 92 als Server, der den
Code zum Beispiel über
das Internet bzw. World Wide Web oder über E-Mail überträgt. Die Zellenanordnung 26 oder
der Code, der die Zellenanordnung 26 erzeugt, kann sich
in dem RAM des Speichers 16 befinden, von wo aus er an
einen entfernten Standort bereitgestellt wird. Verschiedene Versionen
bzw. Ausführungen
der Zellenanordnung 26 können zu unterschiedlichen Zeitpunkten
bereitgestellt werden. Alternativ kann das Computersystem 92 einen
Computer darstellen, der Disks 90 über das Plattenlaufwerk 94 abspielt,
so dass die geheimen Daten in der Zellenanordnung 26 gespeichert
werden. Das Computersystem 92 kann auch einen Computer
darstellen, der eine Zellenanordnung ausführt oder eine Zellenanordnung
aus Code empfängt,
der von einer entfernten Quelle über
Modem 98 empfangen worden ist.
-
Die
vorliegende Erfindung ist nicht auf die vorstehend genannten Ausführungsbeispiele
beschränkt,
wobei sie vielmehr in einer Vielzahl von Ausführungen implementiert werden
kann, die für den
Fachmach auf dem Gebiet verständlich
sind, der von der vorliegenden Offenbarung profitiert. Zusätzlich zu
den bereits vorstehend im Text beschriebenen Variationen können zum
Beispiel die folgenden Merkmale in verschiedene Ausführungsbeispiele
integriert werden.
-
Zwar
ist der Code in dem vorstehend beschriebenen Ausführungsbeispiel
zwar innerhalb der Zellenanordnung unabhängig, wobei es sich in einem alternativen
Ausführungsbeispiel
jedoch um einen Code handeln kann, der bei der Ausführung der
Zellenanordnung eingesetzt wird, die ohne Mutation bleibt sowie
außerhalb
der Zellenanordnung. Einige der Zellen können verschiedene Größen aufweisen, wobei
einige der Speicherbereiche ebenfalls unterschiedliche Größen aufweisen
können,
und wobei nicht alle Zellen oder alle Teile der Zellen in jeder Phase
einer XOR-Operation unterzogen werden müssen, wobei dabei jedoch die
Schwankungen die Komplexität
des Codes in gewisser Weise erhöhen könnten. Es
ist nicht erforderlich, dass das Speichern und Abrufen der geheimen
Daten in der gleichen Phase erfolgen. Ferner können geheime Daten über mehrere
Phasen gespeichert und abgerufen werden. Zum Beispiel kann in jeder
Phase der Mehrzahl von Phasen ein Byte der geheimen Daten gespeichert werden.
Zum Beispiel kann in jeder Phase einer Mehrzahl von Phasen ein Byte
der geheimen Daten abgerufen werden.
-
Die
Ergebnisse der XOR-Operationen können
durch die XOR-Operationen
weiter verschleiert und verschlüsselt
werden, wie zum Beispiel 32-Bit-Abschnitte der Ergebnisse mit zyklischen
Konstanten.
-
Die
Speicher-/Abrufphase entspricht vorzugsweise mehreren Phasen ab
Phase 0 (an beiden Enden des Mutationszyklus).
-
Zwar
werden in dem vorstehend veranschaulichten Ausführungsbeispiel Zellen aus einem ersten
Abschnitt (Zellen 0 bis 3) der Zellenanordnung 26 nur
mit Zellen aus einem zweiten Abschnitt (Zellen 4 bis 7)
der Zellenanordnung einer XOR-Operation unterzogen, wobei in verschiedenen
Ausführungsbeispielen
jede der Zellen mit jeder anderen Zelle einer XOR-Operation ausgesetzt
werden kann.
-
Ein
Vorteil der vorliegenden Erfindung gegenüber anderen Techniken ist die
Geschwindigkeit, mit der geheime Daten gespeichert und abgerufen werden
können.
Ein weiterer Vorteil ist die missbrauchsichere Beschaffenheit der
Zellenanordnung, in welcher die geheimen Daten verschlüsselt und
entschlüsselt
werden. Die Erfindung ist in vielen Ausführungsbeispielen leicht, da
in zahlreichen Ausführungsbeispielen
verhältnismäßig wenig
Speicherkapazität
benötigt
wird.
-
Aufgrund
der Beschaffenheit der XOR-Operationen kann die Anzahl der Phasen
insgesamt ein Vielfaches von sechs darstellen. Die Anzahl der Zellen
in einem kommerziellen Ausführungsbeispiel kann
im dreistelligen oder vierstelligen Bereich liegen. Mit anderen
Worten gibt es keine angemessene Grenze in Bezug auf die Anzahl
der Bits in den geheimen Daten.
-
Ein
Mittelpunkt des Verschlüsselungs-/Entschlüsselungs-Mutationszyklus tritt
nicht unbedingt in der Ruhephase ein (Phase 0).
-
Nicht
erforderlich sind er Einsatz einer PIN, Länge, eines Versatzes und des
Speicherns/Abrufens in der Aufruffunktion. Diese Parameter können in
die Zellenanordnung integriert und/oder teilweise unter Verwendung
verschiedener Aufruffunktionen erreicht werden. Die Aufruffunktion
kann zusätzliche Argumente
aufweisen, die hierin nicht beschrieben sind. Der Speicherprozess
kann durch eine andere Funktion aufgerufen werden als der Abrufprozess. Die
Zellenanordnung muss nicht durch eine Funktion aufgerufen werden.
-
Der
Begriff „als
Reaktion" und verwandte
Begriffe bedeuten, dass ein Signal oder ein Ereignis in gewisser
Weise durch ein anderes Signal oder Ereignis beeinflusst wird, jedoch
nicht unbedingt vollständig
oder unmittelbar.
-
Die
folgenden Ansprüche
definieren den Umfang der vorliegenden Erfindung.