-
Die
vorliegende Erfindung bezieht sich allgemein auf ein Chiffrieren
oder Verschlüsseln
von Daten, Programmen oder allgemeiner von Binärcodes zur Speicherung in einem
oder mehreren Speichern, die außerhalb
eines integrierten Prozessors liegen, der für die Auswertung dieser Codes
zuständig
ist.
-
Ein
Anwendungsbeispiel der vorliegenden Erfindung ist die Verschlüsselung
von Ziel-Programmen
(„target
programs"), die
von einer Vorrichtung (Computer, Video- oder Audiodatenleser, einer
mit einem Mikroprozessor zur Ausführung eines herunterladbaren
Programms versehenen Vorrichtung, etc.) heruntergeladen werden,
in der diese Programme zu speichern sind. Für den Download kann beispielsweise
das Internet verwendet werden. Genauer gesagt bezieht sich die vorliegende
Erfindung auf die Programme oder Daten, bei denen ein verwertbarer
Zugriff durch einen nichtautorisierten Benutzer verhindert werden
soll.
-
Im
folgenden wird Bezug auf „Daten" genommen, um irgendeine
Form von Binärcode
zu bezeichnen, egal ob es sich um Routinen oder durch diese Routinen
verarbeitete Daten handelt.
-
1 zeigt
teilweise und sehr schematisch die Struktur eines Systems mit einem
Mikroprozessor und einem externen Speicher, auf das die vorliegende
Erfindung zutrifft. Es ist ein sogenannter sicherer Bereich 1 definiert,
innerhalb dessen eine CPU angeordnet ist, die über einen oder mehrere Busse 3 mit einem
Speicher 4 (EXT MEM) in Verbindung steht, der außerhalb
des sicheren Bereichs 1 liegt. Der Bereich 1 wird
beispielsweise durch den integrierten Mikroprozessor oder genauer
gesagt durch einen oder mehrere datenverarbeitende integrierte Schaltkreise gebildet,
die einen sicheren Bereich definieren, innerhalb dessen aller Wahrscheinlichkeit
nach keine Raubkopien der verarbeiteten Daten angefertigt werden
können.
In der Praxis ist dieser sichere Bereich 1 meistens aus
einem einzigen integrierten Schaltungschip gebildet, und der externe
Speicher 4 ist ein anderer Chip.
-
Die
Verschlüsselung,
auf die diese Erfindung zutrifft, gilt für jegliche Art von Daten, die
auf dem Bus bzw. den Bussen 3 zwischen dem Speicher 4 und
der CPU 2 oder allgemeiner gesagt dem Bereich 1 übertragen
werden. Diese Verschlüsselung
besteht darin, die gespeicherten Daten mittels eines Schlüssels, der
dem integrierten Prozessor bekannt ist, zu codieren. Im allgemeinen
wird dieser Verschlüsselungsschlüssel dem
Prozessor durch einen asymmetrischen Verschlüsselungsvorgang von dem entfernten System,
welches das Programm bereitstellt, übermittelt, so daß der Prozessor
diesen in einem geschützten
internen Bereich spei chert und sowohl zum Entschlüsseln des
heruntergeladenen Programms als auch zum Verschlüsseln der Daten in dem externen Speicher
verwendet.
-
Ein
Beispiel einer Lösung
zum Verschlüsseln eines
Speichers, der außerhalb
eines auf einem einzigen Chip integrierten Mikroprozessors liegt,
ist in dem US-Patent US-A-5,825,878 beschrieben. Die in diesem Dokument
vorgeschlagene Lösung
besteht darin, die Direktzugriffsspeichersteuerung mit dem Mikroprozessorkern
sowie einem internen Speicher und einer logischen Verschlüsselungs-/Entschlüsselungsschaltung
zu integrieren.
-
Andere
Lösungen
für Verschlüsselungsprogramme
in einem außerhalb
eines Mikroprozessors liegenden Speichers sind beispielsweise in
den US-Patenten US-A-5,982,887 und US-A-6,061,449 beschrieben.
-
In
allen Fällen
ist das verschlüsselte
Programm in dem externen Speicher unabhängig von dem Chip, der den
Ausführungsmikroprozessor
bildet.
-
Ein
erster Nachteil besteht darin, daß der Verschlüsselungsschlüssel des
Programms, das in dem außerhalb
des Mikroprozessors liegenden Speicher gespeichert ist, nicht dem
Chip zugehörig
ist, der die Daten verschlüsselt.
Falls einer der Schlüssel raubkopiert
wird, kann er daher wieder verwendet werden, um einen beliebigen
externen Speicher zu entschlüsseln,
da alle Chips dieselbe An von Verschlüsselung verwenden.
-
Ein
zweiter Nachteil ist mit dem verwendeten Verschlüsselungsverfahren verbunden.
Im allgemeinen werden blockweise Verschlüsselungen durch Algorithmen
des Typs DES oder AES gemäß einer
sogenannten ECB-Technik (Electronic Code Book-Technik) verwendet.
Die Blockgröße hängt von dem
verwendeten Verschlüsselungsalgorithmus
ab. Bei einer ECB-Technik
werden zwei identische Blöcke
auf die gleiche Weise verschlüsselt.
Ein Schwachpunkt besteht dann in möglichen Angriffen mittels einer
sogenannten Wörterbuchmethode,
bei der die Redundanz von identisch verschlüsselten Nachrichten eine Identifizierung
der unverschlüsselten
Nachricht ermöglichen
kann. Im Gegensatz zu der ECB-Technik ist eine andere Blockverschlüsselungstechnik
bekannt, bei der der verschlüsselte Code
von den vorhergehenden Blöcken
abhängt. Diese
Technik (CBC = Cypher Block Chaining) erfordert einen stets identischen
sequentiellen Zugriff auf den Speicher, was sie für die Verschlüsselung
eines Programms ungeeignet macht, für das willkürliche Direktzugriffe in dem
externen Speicher erwünscht sind.
-
Allgemeiner
gesagt stellt sich ein besonderes Problem, wenn im Gegensatz zu
einem sequentiellen Betrieb ein Direktzugriff auf den externen Speicher
erwünscht
ist. In solch einem Fall müssen
die Schreibverschlüsselung
in dem Speicher und die Leseentschlüsselung in diesem Speicher
kontinuierlich und sequentiell in derselben Reihenfolge von dem Prozessor,
der sie auswertet, durchgeführt
werden. Aufgrund eines solchen Direktzugriffs und den Anforderungen
an eine kontinuierliche Verschlüsselung sind
herkömmliche
Lösungen
nicht geeignet, die Daten eines externen Speichers effizient blockweise
zu verschlüsseln.
-
Ziel
der vorliegenden Erfindung ist es, eine neuartige Technik anzugeben,
mit der ein Datensatz mittels eines integrierten Schaltkreises verschlüsselt werden
kann, der in einem Speicher außerhalb
dieses Schaltkreises gespeichert werden soll.
-
Genauer
gesagt ist es Ziel der vorliegenden Erfindung, eine Verschlüsselungslösung anzugeben, die
es gestattet, die Verschlüsselung
gemäß dem IC-Chip
zu individualisieren, mit dem der externe Speicher assoziiert ist.
-
Außerdem ist
es Ziel der vorliegenden Erfindung, eine Verschlüsselung anzugeben, die mit
dem Herunterladen von Anwendungen kompatibel ist, die mittels sogenannter
Systeme mit öffentlichem
und privatem Schlüssel
verschlüsselt
wurden.
-
Es
ist ferner Ziel der vorliegenden Erfindung, eine Verschlüsselung
anzugeben, die gegen Angriffe mittels der sogenannten Wörterbuchmethode
unempfindlich ist.
-
Um
diese und andere Aufgaben zu lösen, sieht
die vorliegende Erfindung ein Verfahren zur Verschlüsselung
eines Datensatzes zur Speicherung in einem Speicher mittels eines
integrierten Prozessors vor, wobei das Verfahren die folgenden Schritte
kontinuierlich an einem Datenfluß ausführt:
Aufteilen des Datenflusses
in Blöcke
vorbestimmter Größe, und,
für jeden
Block:
Erzeugen eines Verschlüsselungsschlüssels mittels eines
Pseudo-Zufallsgenerators, der einen kontinuierlichen Verschlüsselungsalgorithmus
abhängig
von einem Schlüssel
ausführt,
der spezifisch für
einen integrierten Schaltkreis und einen Initialisierungsvektor ist,
der sich für
jeden Block ändert;
kontinuierliches
Kombinieren des Datenblocks und des entsprechenden Schlüssels; und
Speichern
eines jeden verschlüsselten
Blocks und desjenigen Initialisierungsvektors, der zum Verschlüsseln desselben
gedient hat, in dem Speicher.
-
Gemäß einer
Ausführung
der vorliegenden Erfindung ist die Kombination eine XOR-Kombination.
-
Gemäß einer
Ausführung
der vorliegenden Erfindung entspricht die Größe des Verschlüsselungsschlüssels der
Blockgröße.
-
Gemäß einer
Ausführung
der vorliegenden Erfindung wird der Schlüssel, der spezifisch für den integrierten
Prozessor ist, von dem Prozessor erzeugt.
-
Gemäß einer
Ausführung
der vorliegenden Erfindung wird das Verfahren auf das Verschlüsseln eines
Zielprogramms angewendet, welches zur nachfolgenden Ausführung in
dem Speicher zu speichern ist.
-
Die
vorliegende Erfindung sieht ebenfalls ein Verfahren zur Entschlüsselung
von Datenblöcken vor,
die in einem Speicher gespeichert sind, wobei das Verfahren aus
dem Ausführen
der folgenden Schritte besteht:
Lesen eines jeden Blocks und
eines zugehörigen
Initialisierungsvektors aus dem Speicher; und
Anwenden, eines
kontinuierlichen Entschlüsselungsalgorithmus
für einen
jeden Block, unter Verwendung des Initialisierungsvektors, der mit
dem entsprechenden Block assoziiert ist, um einen Entschlüsselungsschlüssel zu
erzeugen.
-
Gemäß einer
Ausführung
der vorliegenden Erfindung werden die entschlüsselten Datenblöcke in einem
Cache-Speicher gespeichert, der in dem Prozessor integriert ist.
-
Gemäß einer
Ausführung
der vorliegenden Erfindung werden die blockweise verschlüsselten Daten
und die zugehörigen
Initialisierungsvektoren vor dem Entschlüsseln in einem Cache-Speicher gespeichert,
der in dem Prozessor integriert ist.
-
Gemäß einer
Ausführung
der vorliegenden Erfindung ist der Speicher extern bezüglich des
integrierten Schaltkreises.
-
Die
vorliegende Erfindung sieht ferner einen Prozessor zum Auswerten
der in einem externen Speicher gespeicherten Daten vor.
-
Die
vorstehend genannten Aufgaben, Merkmale und Vorteile der vorliegenden
Erfindung werden detailliert in der folgenden, nicht einschränkenden Beschreibung
spezifischer Ausführungen
mit Bezug auf die beigefügten
Zeichnungen erörtert,
in denen:
-
1 die
vorher beschrieben wurde, teilweise und sehr schematisch einen integrierten
Schaltkreis zeigt, der mit einem externen Speicher der Art verbunden
ist, auf die sich die vorliegende Erfindung bezieht;
-
2 ein
vereinfachtes Diagramm eines Verschlüsselungsgenerators ist, wie
er gemäß der vorliegenden
Erfindung verwendet wird;
-
3 ein
Blockdiagramm einer Ausführung des
Verfahrens der vorliegenden Erfindung in einer Verschlüsselungsphase
zeigt;
-
4 ein
Blockdiagramm einer Ausführung des
Verfahrens der vorliegenden Erfindung in einer Entschlüsselungsphase
zeigt;
-
5 teilweise
und schematisch einen integrierten Mikroprozessor zeigt, der mit
einem externen Speicher gemäß einer
ersten Ausführung
der vorliegenden Erfindung verbunden ist; und
-
6 teilweise
und schematisch einen integrierten Mikroprozessor zeigt, der mit
einem externen Speicher gemäß einer
zweiten Ausführung
der vorliegenden Erfindung verbunden ist.
-
Gleiche
Elemente sind in den unterschiedlichen Zeichnungen mit denselben
Bezugszeichen bezeichnet. Der Klarheit halber sind nur die Verfahrensschritte
und Elemente in den Zeichnungen gezeigt und im folgenden beschrieben,
die für
das Verständnis
der vorliegenden Erfindung relevant sind. Insbesondere sind keine
Komponenten des integrierten Prozessors beschrieben, da die vorliegende
Erfindung bekannte Komponenten für
ihre Ausführung verwendet.
-
Es
ist ein Merkmal der vorliegenden Erfindung, Daten (Programme, Daten,
Binärcodes
jeglicher Art), die in einem mit einem integrierten Mikroprozessor
verbundenen externen Speicher gespeichert werden sollen, mittels
eines sogenannten internen Schlüssels
zu verschlüsseln,
der für
den Mikroprozessor spezifisch ist und sich von dem möglichen Verschlüsselungsschlüssel unterscheidet,
der von dem Provider oder über
die Daten übermittelt
wird. Dieser interne Schlüssel
kann durch Gruppen von Daten (durch Programme) individualisiert
werden. Wenn somit gemäß der vorliegenden
Erfindung ein Programm heruntergeladen wird, das in dem mit dem integrierten
Prozessor verbundenen externen Speicher gespeichert werden soll,
dann verwendet die Verschlüsselung
nicht den Schlüssel,
welcher der Anwendung (oder dem Programm) zugeordnet ist, sondern
vielmehr einen internen Schlüssel,
der dem Mikroprozessorchip zugeordnet ist. Dies ermöglicht, daß die externen
Speicher von den integrierten Prozes soren, mit denen sie verbunden
sind, abhängig gemacht
werden können,
was einen Vorteil hinsichtlich der Sicherheit gegen Raubkopien von
Daten durch unbefugte Benutzer darstellt.
-
Es
ist ein weiteres Merkmal der vorliegenden Erfindung, eine kontinuierliche
Verschlüsselung
und Entschlüsselung
bei Übertragungen
zwischen dem integrierten Mikroprozessor und dem externen Speicher
anzugeben. Gemäß der vorliegenden
Erfindung wird diese kontinuierliche Verschlüsselung dadurch erzielt, daß gespeicherte
Daten in Blöcke
aufgeteilt werden. Die vorliegende Erfindung sieht ferner vor, daß die Verschlüsselung
einen Initialisierungsvektor für
jeden Block verwendet, wobei dieser Vektor eine Funktion des verarbeiteten
Blocks ist. Somit werden Probleme vermieden, die mit kontinuierlichen
Verschlüsselungen
verbunden sind, die herkömmlicherweise
in Verbindung mit Direktzugriffen auf einen Speicher ungeeignet
sind.
-
Mit
anderen Worten sieht die vorliegende Erfindung eine blockweise kontinuierliche
Verschlüsselung
unter Verwendung eines Initialisierungsvektors vor, um einen Strom
von Codeblöcken
(Codons) zu erhalten, die entsprechende Blockverschlüsselungsschlüssel bilden.
-
2 ist
eine schematische Ansicht einer kontinuierlichen Verschlüsselung
mittels Initialisierungsvektoren mit Hilfe eines Verschlüsselungsgenerators
(Kryptosystem). Eine derartige Verschlüsselung basiert auf der Verwendung
eines Pseudo-Zufallsgenerators 10 (PRGEN), der einen Schlüssel Cb zum
Verschlüsseln
eines Datenblocks Bd mittels eines XOR-Gatters 11 liefert.
Das Gatter 11 liefert das verschlüsselte Ergebnis, das heißt einen
Block Bc, der mittels des Schlüssels
Cb verschlüsselt
wurde. Der von dem Generator 10 bereitgestellte Schlüssel Cb
basiert auf einem internen Schlüssel
K, der gemäß der vorliegenden
Erfindung einem Schlüssel entspricht,
der dem Mikroprozessor zugehört,
und auf einem Initialisierungsvektor IV, wobei diese beiden Werte
von einem Algorithmus zur Erzeugung von Pseudo-Zufallszahlen ausgewertet werden. K,
IV sind Binärwörter, deren
jeweilige Größe von der
erwünschten
Sicherheit hinsichtlich einer möglichen Anzahl
von Kombinationen abhängt.
Der Schlüssel Cb
ist ein Binärwort,
dessen Größe gemäß der vorliegenden
Erfindung und wie im folgenden ersichtlich von der Größe der zu
verschlüsselnden
Blöcke
abhängt.
Der Generator 10 ist insofern ein Pseudo-Zufallsgenerator,
als er für
einen gegebenen Schlüssel K
stets den gleichen Schlüssel
Cb für
denselben Initialisierungsvektor IV bereitstellt. Gemäß der vorliegenden
Erfindung ist der Initialisierungsvektor IV eine Funktion des verschlüsselten
Blocks Bd, wie es im folgenden beschrieben wird.
-
Das
Diagramm von 2 gibt wie allgemein bekannt
eine kontinuierliche Verschlüsselung
an, das heißt
eine Verschlüsselung,
bei der die Eingangsnachricht des XOR-Gatters 11 Bit für Bit durch
den Schlüssel
verschlüsselt
wird, der kontinuierlich von dem Generator 10 bereitge stellt
wird. Als nächstes wird
Bezug auf einen sogenannten Codongenerator genommen. Derartige Codons
bilden den Verschlüsselungsschlüssel Cb
der vorliegenden Erfindung.
-
Kontinuierliche
Verschlüsselungsalgorithmen
sind beispielsweise in „Cryptographie
Appliquée" von Bruce SCHNEIER,
zweite Ausgabe, veröffentlicht
von Wiley 1997, Seite 209 bis 226, beschrieben.
-
Der
Pseudo-Zufallsgenerator 10 bildet das Basiselement kontinuierlicher
Verschlüsselungsalgorithmen.
Der Algorithmus kann beispielsweise aus den bekannten Algorithmen
mit den Bezeichnungen RC4, SEAL, WAKE ausgewählt oder allgemeiner ein beliebiger
kontinuierlicher Verschlüsselungsalgorithmus
sein, der die Pseudo-Zufallserzeugung des Schlüssels oder Codons Cb basierend
auf K und IV beeinflussen kann. Gemäß der vorliegenden Erfindung
wird diese kontinuierliche Verschlüsselung jedoch blockweise durchgeführt, wobei
jeder Block einen anderen Initialisierungsvektor hat. Der Anfangswert
des Generators 10 ändert
sich für
jeden Block, da er aus einer Kombination von K und IV gebildet ist.
-
3 veranschaulicht
eine Ausführung
einer kontinuierlichen Verschlüsselung
von Blöcken
fester Größe eines
Programms (Block 20, CRYPT APPLI), das von einem Anwendungsprovider
beispielweise durch einen DES-Algorithmus verschlüsselt ist.
Um die vorliegende Erfindung zu implementieren, wird das Programm
zuerst entschlüsselt
(Block 21, DES-1). Wenn das Programm einmal entschlüsselt ist,
wird es gemäß der vorliegenden
Erfindung in Blöcke
(Block 22, BLOCKS) aufgeteilt, um einen Strom von Blöcken Bd
zu erhalten, die vor dem Speichern in einem außerhalb des Mikroprozessors
liegenden Speicher 23 verschlüsselt werden sollen.
-
Die
gemäß der vorliegenden
Erfindung durchgeführte
Verschlüsselung
folgt dem Schema von 2 dahingehend, daß sie einen
Pseudo-Zufallsgenerator 10 (PRGEN) verwendet, der für jeden Block
einen Verschlüsselungsschlüssel Cb
aus einem internen Schlüssel
K, der dem Mikroprozessor zugehört,
und aus einem Initialisierungsvektor IV bereitstellt. Die Initialisierungsvektoren
IV werden vorzugsweise von einem Zufallsgenerator (Block 24,
IVGEN) erzeugt, der mit dem Mikroprozessor verbunden ist und für jeden
Block eine Sequenz beliebiger Bits bereitstellt. Dadurch wird ermöglicht,
daß ein nachfolgender
Direktzugriff auf einen beliebigen, in dem Speicher 23 gespeicherten
Block beibehalten wird.
-
Die
Größe (Anzahl
an Bits) der erzeugten Schlüssel
Cb ist gemäß der vorliegenden
Erfindung gleich der Blockgröße, um eine
kontinuierliche Verschlüsselung
der Blöcke
zu ermöglichen.
-
Gemäß der vorliegenden
Erfindung wird der von dem Generator 24 erzeugte Initialisierungsvektor zur
gleichen Zeit in dem Speicher 23 gespeichert wie der verschlüsselte Block
Bc (CRYPT BLOCK), der von dem Gatter 11 stammt. Beispielsweise
werden die aufeinanderfolgenden Bits des Initialisierungsvektors
IV an den Anfang des Speicherworts gestellt, das den Block Bc speichert.
Es kann eine beliebige andere Konfiguration vorgesehen sein, wobei
es wichtig ist, jeden in dem externen Speicher gespeicherten, verschlüsselten
Block mit einem Initialisierungsvektor zu verknüpfen, der diesem zugehört.
-
Die
Tatsache, daß der
Initialisierungsvektor unverschlüsselt
in dem externen Speicher gespeichert wird, stellt kein Hindernis
im Sinne der vorliegenden Erfindung dar. Die Kenntnis dieses Initialisierungsvektors
ermöglicht
in der Tat keine Entschlüsselung
dieses Blocks. Der Schlüssel
K, der dem Mikroprozessor zugehört,
der diesen Block verschlüsselt
hat, sowie der Codeblockerzeugungsalgorithmus, der bei jedem Prozessor
unterschiedlich sein kann, müssen
bekannt sein. Ein Vorteil der vorliegenden Erfindung besteht darin,
daß, während die
Verschlüsselung
von dem sie ausführenden
Mikroprozessor abhängig
gemacht ist, ihre Implementierung für den Datenprovider transparent
ist. Die intern ausgeführte
Verschlüsselung
ist unabhängig
von der Verschlüsselung,
die von dem Datenprovider ausgeführt
wird.
-
4 zeigt
eine Ausführung
einer Entschlüsselung,
die gemäß der vorliegenden
Erfindung von einem Mikroprozessor ausgeführt wird, der die verschlüsselten
Daten in dem externen Speicher 23 auswertet. Gemäß der vorliegenden
Erfindung verwendet die Entschlüsselung
denselben Pseudo-Zufallsgenerator 10 für die Schlüssel Cb und dasselbe XOR-Gatter 11.
Diesmal verwendet der Pseudo-Zufallsgenerator als Anfangswerte für die Erzeugung der
Schlüssel
Cb den Schlüssel
K, der dem integrierten Prozessor zugehört, und den Initialisierungsvektor
IV, der aus dem Speicher 23 gelesen wird und mit dem aktuellen,
zu entschlüsselnden
Block verknüpft ist.
Die XOR-Kombination des Blocks Bc mit dem Schlüssel Cb liefert den entschlüsselten
Datenblock Bd, der in einem Cache-Speicher (CACHE MEM) des Mikroprozessors
gespeichert wird. Obwohl dies nicht in Bezug auf 3 dargestellt
ist, wird dieser Cache-Speicher beim Verschlüsseln auch zur temporären Speicherung
der zu verschlüsselnden,
aufgeteilten Blöcke
verwendet. Die Länge
eines Blocks ist vorzugsweise gleich der Länge einer Zeile des Cache-Speichers.
-
5 ist
eine schematische Teilansicht eines integrierten Mikroprozessors 30,
der mit einem externen Speicher 23 gemäß einer ersten Ausführung der
vorliegenden Erfindung verbunden ist. Die Ausführung von 5 integriert
die Elemente, die für die
Implementierung des Verschlüsselungs-/Entschlüsselungsverfahrens
erforderlich sind, wie es in 3 und 4 gezeigt
ist. Der Mikroprozessor 30 umfaßt somit einen Generator 31 (KGEN)
für einen Schlüssel K,
der dem Schaltkreis zugehört.
Sobald dieser Schlüssel
erzeugt wurde, wird er in einem nichtflüchtigen Speicher 32 (NVM)
gespeichert. Der Generator 31 ist beispielsweise ein Zufallsgenerator oder
ein Schaltkreis, der ein Binärwort
auswertet, das von einem Netzwerk physikalischer Parameter des Chips
stammt, der den Mikroprozessor 30 integriert. Im letzte ren
Fall kann der Schlüssel
K jedesmal erzeugt werden, wenn er benötigt wird. Alternativ wird der
Schlüssel
K extern erzeugt und in dem Speicher 32 gespeichert. Eine
Erzeugung innerhalb des Mikroprozessors wird jedoch aus Gründen der
Sicherheit gegen mögliche
Raubkopien bevorzugt. Der Schaltkreis 30 integriert ferner
den Generator 24 (IVGEN) des Initialisierungsvektors IV
sowie einen Cache-Speicher 33 (CACHE).
-
Die
in 5 gezeigte Ausführung gilt für einen
Mikroprozessor, der in der Lage ist, Programme (oder allgemeiner
beliebige digitale Daten) von einer externen Quelle zu empfangen.
Beispielsweise sendet ein Provider (PROV) die Codes eines Programms (CRYPT
APPLI), das mit einem geheimen Schlüssel Kapp verschlüsselt wurde,
in einen Speicher (beispielsweise ein RAM) 34', wobei der
Schlüssel
Kapp beispielsweise durch einen asymmetrischen Algorithmus basierend
auf einem öffentlichen
Schlüssel,
der von dem Provider RROV gesendet wird, oder durch den Mikroprozessor
gemäß dem Schlüssel verschlüsselt wird,
mit dem der Schlüssel
Kapp codiert wird. Bei dem gezeigten Beispiel empfängt der
Chip den Schlüssel
Kapp, der mit seinem öffentlichen Schlüssel (als
Kpub 30, Block 34 bezeichnet) verschlüsselt wurde.
Um die Entschlüsselung
des Programms zu ermöglichen,
umfaßt
der Prozessor 30 (in Software oder verdrahtet) einen asymmetrischen
Decoder 36 (ASYM-DEC), der einen privaten Schlüssel Kpriv
(alternativ einen öffentlichen
Schlüssel,
der von dem Provider PROV bereitgestellt wird) ausnutzt, der in
einem Speicherelement 35 des Prozessors 30 gespeichert
ist. Der Decoder 36 entschlüsselt den Schlüssel Kapp
auf herkömmliche
Weise. Dieser Verschlüsselungsschlüssel des
Programms wird dann von einem symmetrischen Entschlüsselungsblock 37 (SYM-DEC)
zur Decodierung der aus dem Speicher 34 gelesenen verschlüsselten
Anwendung verwendet. Bis zu diesem Zeitpunkt führt der Prozessor 30 herkömmliche
Schritte zur Entschlüsselung
eines Programms durch, das von einem Algorithmus mit öffentlichem
und privatem Schlüssel
verschlüsselt
wurde.
-
Gemäß der vorliegenden
Erfindung umfaßt der
Schaltkreis 30 (verdrahtet oder nicht) eine Einheit 38 (CRYPT-DECRYPT)
zur kontinuierlichen Blockverschlüsselung/-Entschlüsselung
und implementiert dadurch das in 3 und 4 gezeigte
Verfahren. Obwohl dies nicht in 5 gezeigt
ist, enthält
die Einheit 38 somit einen Pseudo-Zufallsgenerator 10 und ein
XOR-Gatter 11.
-
In 5 ist
der Betrieb des Schaltkreises 30 bei der Verschlüsselung
einer heruntergeladenen Anwendung durch Pfeile mit durchgezogenen
Linien und der Betrieb bei der Entschlüsselung des in dem Speicher 23 gespeicherten
Programms (hier Ziel) durch Pfeile mit gepunkteten Linien gezeigt.
-
Somit
nutzt die Einheit 38 den von dem Generator 31 erzeugten
Schlüssel
K bei der Programmverschlüsselung
und die aufeinanderfolgenden, von dem Generator 24 bereitgestellten Initialisierungsvektoren
aus. Für
die Entschlüsselung
werden jedoch der in dem nichtflüchtigen
Speicher 32 gespeicherte Schlüssel K und die aufeinanderfolgenden
Initialisierungsvektoren IVi verwendet, die mit in dem Speicher 23 gespeicherten
Datenblöcken
DATAi assoziiert sind. Bei der Verschlüsselung (CRYPT) werden die
von der Einheit 38 aufgeteilten Datenblöcke in dem Speicher 23 gespeichert.
Bei der Entschlüsselung
(DECRYPT) werden diese (durch einen Direktzugriff) ausgelesenen
Blöcke
zur Ausführung
in einem Cache-Speicher 33 gespeichert, sobald sie entschlüsselt wurden.
-
Die
Blockgröße ist vorzugsweise
an das heruntergeladene Programm angepaßt, so daß jeder Block, während er
weiterhin mit der Größe des Cache-Speichers 33 kompatibel
ist, einer oder mehreren vollständigen
Anweisungen entspricht.
-
Es
ist ein Vorteil der vorliegenden Erfindung, daß die verschlüsselten
Daten durch einen einzigen Schlüssel
verschlüsselt
werden, der den integrierten Schaltkreis identifiziert, der diese
verarbeitet. Den Schlüssel
zu kennen, ermöglicht
folglich keine Verwendung durch Raubkopierer, da er keine Entschlüsselung
derselben Daten ermöglicht,
wenn diese in einem externen Speicher gespeichert sind, der mit
einem anderen integrierten Mikroprozessor verbunden ist.
-
Es
ist ein weiterer Vorteil der vorliegenden Erfindung, daß es, da
der integrierte Mikroprozessor selbst seine eigenen Schlüssel zum
Speichern von Daten in dem externen Speicher erzeugt, möglich ist, jedesmal
einen neuen Schlüssel
zu erzeugen, wenn diese Daten verwendet werden. Beispielsweise werden
in dem Fall eines Programms, wenn dieses ausgeführt wird, die Blöcke, die
von dem Cache-Speicher zu dem externen Speicher umgeschrieben werden,
mit neuen Schlüsseln
verschlüsselt.
Diese neuen Schlüssel
(Codons) erhält
man durch Ändern
des Schlüssels
K und/oder der Blockinitialisierungsvektoren. Ein Vorteil einer
solchen Alternative ist es, daß die
Verschlüsselungsschlüssel sich
jedesmal ändern, wenn
ein Programm ausgeführt
wird, was das mögliche
Raubkopieren noch schwieriger macht.
-
Ein
Vorteil der Verwendung eines kontinuierlichen Verschlüsselungsalgorithmus
besteht darin, daß diese
An von Algorithmus viel schneller ist als Blockverschlüsselungsalgorithmen
des Typs AES oder DES. Für
eine Verschlüsselung
oder Entschlüsselung
sind eine XOR-Operation
sowie eine Stimulation (Starten des Pseudo-Zufallsgenerators) ausreichend.
-
Bei
der in 5 gezeigten Ausführung werden die aufwendigsten
Operationen (hinsichtlich der Dauer) bei der Programminstallation
zur verschlüsselten
Speicherung in dem Speicher 23 durchgeführt. Im Vergleich zu der Zeit
jedoch, die von den Maschinenressourcen zur Entschlüsselung
des Programms benötigt
wird, das von außen
(PROV) empfangen wurde, ist die durch die vorliegende Erfindung
hinzugefügte
Verschlüsselung
vernachlässigbar.
Bei den darauffolgenden Operationen läuft die Verschlüsselung
der vorliegenden Erfindung wesentlich schneller ab als durch die
Aufrechterhaltung einer DES-Verschlüsselung.
-
Es
ist jedoch festzustellen, daß die
vorliegende Erfindung auch für
die Verschlüsselung
eines nicht verschlüsselten,
heruntergeladenen Programms anwendbar ist, das heißt die asymmetrischen
und symmetrischen Decodierelemente 36 und 37 von 5 werden
weggelassen.
-
Gemäß einer
Alternative kann dem verschlüsselten
Block DATAi und dem Initialisierungsvektor IV ein Integritätssteuerwert
in dem Speicher 23 zugeordnet sein.
-
6 zeigt
eine zweite Ausführung
eines integrierten Prozessors 40, der die vorliegende Erfindung
implementiert. Gemäß dieser
Ausführung
wird die Verschlüsselung/Entschlüsselung
an dem Eingang des eigentlichen Prozessors ausgeführt, das heißt an dem
Eingang seiner Arithmetik- und Logikeinheit 44. Ziel ist
es, den Inhalt des Cache-Speichers zu verschlüsseln. Diese Aufgabe scheint
in Widerspruch zu der Funktion eines solchen Speichers zu stehen,
die darin besteht, die Verarbeitung eines Programms bezüglich der
Lesezugriffserfordernisse eines externen Speichers zu beschleunigen.
Durch die Implementierung der vorliegenden Erfindung jedoch ist
eine Verschlüsselung
weiterhin möglich,
da sie in kontinuierlichem Betrieb und mittels eines einfachen XOR-Gatters
durchgeführt
wird, was die Programmausführung
oder die Datenverarbeitung nur geringfügig verlangsamt.
-
Bei
der Ausführung
von 6 wird wie in 5 von dem
Laden oder der Initialisierung eines Programms, das selbst mittels
eines symmetrischen Algorithmus verschlüsselt wurde, ausgegangen. 6 zeigt
Blöcke 36 (ASYM-DEC), 37 (SYM-DEC), die
den Anwendungsschlüssel
Kapp, der durch den öffentlichen
Schlüssel
des Chips 40 (als Kpub 40, Block 34 bezeichnet)
verschlüsselt
wurde, bzw. das verschlüsselte
Programm CRYPT APPLI (Block 34') empfangen. Bei dem gezeigten
Beispiel empfängt der
asymmetrische Entschlüsselungsblock 36 ferner den
privaten Schlüssel
Kpriv von dem Block 35.
-
Wie
in 5 sind auch der Generator 31 (KGEN) für den Schlüssel K,
der Generator 24 (IVGEN) für die Initialisierungsvektoren
IV und der nichtflüchtige
Speicher 32 (NVM) für
die Speicherung des Schlüssels
K gezeigt. In 6 ist der Pseudo-Zufallsgenerator 10 in
Form eines Verschlüsselungselements 41 (CIPH)
gezeigt, das einen Initialisierungsvektor IV als Eingangssignal,
der in einem Register 42 gespeichert ist, und den Schlüssel K empfängt, der
in einem Register 43 gespeichert ist, und den Code Cb an
das Gatter 11 ausgibt. Gemäß dieser Ausführung befindet
sich das Gatter 11 zwischen dem Cache-Speicher 33 und
der Arithmetik- und Logikeinheit 44 des Prozessors. Tatsächlich ist
eine einzige, zusätzliche
Cache-Speicherzeile 45 (SCACHE) an dem Eingang der Arithmetik-
und Logikeinheit 44 vorgesehen. Die Zeile wird von dem
Ausgang des Gatters 11 gespeist. In 6 ist der
Cache- Speicher 33 detailliert
in Form einer Cache-Steuerung 331 (CACHE CTRL) dargestellt,
die über
tatsächliche
Cache-Speicherzeilen 332 versorgt wird. Gemäß dieser Ausführung werden
die in den Leitungen 332 des Cache-Speichers gespeicherten
Daten verschlüsselt und
entsprechen somit, wie in 5, den Blöcken, die
in dem externen Speicher 23 gespeichert sind, der die Daten
oder das Programm (BLOC CRYPT APPLI) enthält, die bzw. das mittels des
Schlüssels
K und der Vektoren IV verschlüsselt
wurden bzw. wurde. Daher befinden sich der Initialisierungsvektor
IVi und die Daten DATAi jedes Blocks in den Leitungen des Cache-Speichers 332.
-
Der
Betrieb der in 6 gezeigten Ausführung kann
von dem vorher mit Bezug auf 5 beschriebenen
Betrieb abgeleitet werden. Es sollte nur beachtet werden, daß der Strom,
der von Block 37 stammt, bei einer Verschlüsselung
in Blöcke
aufgeteilt wird, die von dem Gatter 11 verschlüsselt werden sollen,
und die Cache-Speichersteuerung durchquert, ohne in den Zeilen 332 gespeichert
zu werden, sondern direkt zu dem Speicher 23 gerichtet
wird.
-
An
der vorliegenden Erfindung können
natürlich
Veränderungen,
Modifizierungen und Verbesserungen vorgenommen werden, die dem Fachmann ohne
weiteres ersichtlich sind. Insbesondere kann die vorliegende Erfindung
mit einem beliebigen, herkömmlichen,
kontinuierlichen Verschlüsselungsalgorithmus
implementiert sein, der den Pseudo-Zufallsgenerator des Schlüssels K
und der Vektoren IV beeinflußt.
Aufgrund der obigen funktionsbezogenen Angaben liegt die praktische
Implementierung der vorliegenden Erfindung ferner im Rahmen der
Fähigkeiten
eines Fachmanns. In dieser Hinsicht ist zu berücksichtigen, daß gemäß einer
Ausführung
der vorliegenden Erfindung die unterschiedlichen Verschlüsselungs-
und Entschlüsselungstools
(selbst diese, die nur einmal bei der Speicherung der von außen eingehenden
Daten verwendet werden) in einer verdrahteten Logik gebildet sind.
Eine Implementierung in Software ist jedoch weiterhin möglich. Ferner
können
andere Kombinationsfunktionen als XOR vorgesehen sein, wobei XOR
aufgrund seiner Einfachheit (und somit seiner Schnelligkeit) jedoch
eine bevorzugte Wahl ist.