-
HINTERGRUND
DER ERFINDUNG
-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft einen Mikroprozessor zum Unterstützen einer
Multitask-Programmausführungsumgebung
und ein Datenschutzverfahren für
diesen Mikroprozessor.
-
BESCHREIBUNG
DES STANDES DER TECHNIK
-
Es
gibt einen Bedarf für
einen Mikroprozessor, der eine Schutzfunktion zu einer Zeit eines
Ausführens
eines Programms in einem Computersystem hat. In den aktuell verfügbaren Prozessoren
werden eine Schutzfunktion in der Verwaltung für einen virtuellen Speicher
und ein Mechanismus zur Zugriffsbeschränkung bezüglich von Peripherie-Eingabe/Ausgabegeräten als
unentbehrlich betrachtet, um die Sicherheit des Computersystems
sicherzustellen, das die Multitask-Ausführungsumgebung bereitstellt.
-
Darüber hinaus
wird in den vergangenen Jahren eine Gruppe von Programmen, die selbst
geschützt
sein sollten, ein wichtiges Schutzziel angesichts der Schutzmechanismen.
Zum Beispiel darf ein Programm, das durch den Urheberschutz geschützt ist,
nicht in einem Stil ausgeführt
werden, der den Urheberschutz verletzt. Es gibt auch ein Programm,
das Daten handhabt, die vor Dritten verborgen werden sollen. Wenn
es die Möglichkeit
gibt, das Programm, das zu verbergende Daten handhabt, und seinen
Ausführungszustand
zu analysieren, kann die Datensicherheit nicht garantiert werden,
so dass der strenge Schutz erforderlich sein wird.
-
Um
diese Programme sicher auszuführen, gibt
es Systeme zum kryptographischen Garantieren der Sicherheit, die
vorgeschlagen und in der Praxis realisiert worden sind. Eine von
diesen ist die angriffswiderstandsfähige Software (David Aucsmith
et al.: "Tamper
Resistant Software: An implimentation", Proceedings of the 1996 Intel Software
Developer's Conference).
Dieses ist eine Technik, in der ein Teil des Programms oder das
gesamte Programm chiffriert und dann verteilt und gespeichert wird,
und das Programm und die Daten werden unmittelbar vor dem Nutzen
des Programms dechiffriert und ausgeführt, und das Programm wird
erneut chiffriert nach Beendigen des Programms, wenn erforderlich.
-
Jedoch
tätigt
die Technik für
eine angriffswiderstandsfähige
Software die Analyse nur durch Analysierwerkzeuge, so wie einen
Reverse-Assembler und einen im Grunde komplizierteren Debugger. Solange
wie das Programm durch den Prozessor ausführbar ist, ist es immer möglich, den
Programmausführungsprozess
durch die sequentielle Analyse zu analysieren, die der Programmausführung von einem
Start des Programms folgt. Obwohl es sicher in einem Prozess zum
Verteilen des Programms ist, ist es, mit anderen Worten, unmöglich, das
Programm und die Daten vor Dritten zu verbergen, die Einrichtungen
zum Zugreifen auf das Computersystem haben, das das Programm ausführt, sobald
das Programm ausgeführt
wird.
-
Es
gibt außerdem
Techniken zum Verbergen des dechiffrierten Programms vor einem Äußeren des
Mikroprozessors vielmehr durch Bereitstellen einer eingebauten Chiffrier/Dechiffrier-Verarbeitungsfunktion
in dem Mikroprozessor, als Ausführen
der Chiffrierung/Dechiffrierung durch Software, wie in US Patent
Nr. 4 847 902 (Hampson), US Patent Nr. 5 224 166 (Hartman), US Patent
Nr. 5 825 878 (Takahashi), und der japanischen offengelegten Patentanmeldung Nr.
11-282756 (1999) offenbart.
-
Es
ist charakteristisch für
das Schema zum Bereitstellen der eingebauten Chiffrier/Dechiffrier-Verarbeitungsfunktion
in dem Mikroprozessor, das der Mikroprozessor die Geheimdaten in
einer Form aufrechterhalten kann, die physikalisch vor einem Äußeren verborgen
ist. Und zwar werden die Geheimdaten in solch einer Form aufrechterhalten,
dass das Geheimnis selbst durch die zerstörerische Inspektion des Mikroprozessors
nicht zum Vorschein gebracht werden kann. Dieses kann wie folgt
genutzt werden. Der Geheimschlüssel
des Kryptosystems für einen öffentlichen
Schlüssel
wird als eingebaute Geheimdaten in dem Mikroprozessor im Voraus
bereitgestellt. Das Programm wird mit irgendeinem Chiffrierschlüssel (für den das
Kryptosystem für
einen Geheimschlüssel
im Allgemeinen verwendet wird) z.B. durch den Programmverkäufer chiffriert,
und an den Mikroprozessor verteilt. An dieser Stelle wird der Chiffrierschlüssel weiter
chiffriert durch den öffentlichen
Schlüssel,
der dem Geheimschlüssel
des Mikroprozessors entspricht und an das Programm angefügt ist.
-
Durch
diesen Mechanismus ist es möglich, das
Programm selbst in einer sicheren Form bereitzustellen, so dass
dessen Ausführungsprozess
nicht durch das analytische Verfahren, so wie das Reverse-Assembling,
wiedergewonnen werden kann. Außerdem
ist es kryptographisch schwierig, das Programm in eine beabsichtigte
Form zu ändern,
ohne den Chiffrierschlüssel
des Programms zu kennen.
-
Jedoch
sind diese Mikroprozessoren zum Ausführen chiffrierter Programme
mit einem ernsten Problem verknüpft
gewesen. Und zwar werden diese Mikroprozessoren gewöhnlicher
Weise mit dem Betriebssystem (OS, Operating System) zum Realisieren
der Multitask-Umgebung verwendet. In der Multitask-Umgebung wird
eine Vielzahl von Programmen virtuell gleichzeitig durch die Zeitteilung
des Prozessors mit Verwenden der Kontext-Umschalten bzw. Kontext-Wechseln
genannten Operation ausgeführt. In
dem Prozess dieses Kontext-Wechselns kann das OS sämtliche
Ausführungszustände des
Mikroprozessors lesen und schreiben. Folglich wird es möglich, durch
Analysieren des Verhaltens des OS oder durch Ändern des OS selbst, sämtliche
Ausführungszustände des
Programms zu analysieren, selbst wenn angenommen wird, dass dieses
durch die Chiffrierung geschützt
ist.
-
Im
Stand der Technik ist eine Teillösung
dieses Problems bereitgestellt. Zum Beispiel offenbart die offengelegte
japanische Patentanmeldung Nr. 11-282756 (1999) eine Technik zum
Bereitstellen eines Geheimspeichers in einem Prozessor, um die Geheimdaten
der Anwendung aufrecht zu erhalten. In diesem Beispiel ist ein vorbestimmter
Referenzwert notwendig, um auf Daten in dem Geheimspeicher zuzugreifen.
Jedoch gibt es keine Lehre, wie man den Referenzwert zum Erhalten
des Zugriffsrechtes bezüglich
der Geheimdaten schützt,
besonders vor dem Betriebssystem, wenn eine Vielzahl von Programmen
auf demselben Prozessor läuft.
-
Außerdem offenbart
die japanische Patentanmeldung Nr. 2000-135010 eine Technik zum Ausführen des
Kontext-Wechselns durch Hardware, so dass die Kontexte der Registerdateien
zu einer Zeit des Kontext-Wechselns chiffriert und temporär in einem
Speicher gesichert sind, um die Ausführungszustände des Programms vor dem Betriebssystem
zu verbergen. Auf diese Weise wird es kryptographisch schwierig,
die Geheimdaten durch Analysieren der Ausführungszustände des Prozessors wiederzugewinnen,
die in dem Speicher gesichert sind, so dass es möglich wird, die Sicherheit
des chiffrierten Programms zu garantieren. Jedoch ist diese Technik
mit den folgenden Problemen verknüpft.
-
Das
erste Problem ist, dass das Ziel eines Schutzes durch die Chiffrierung
nur auf die Registerdateien begrenzt ist. Es kann Fälle geben,
wo der Mikroprozessor intern viele Speicher oder einen Speicher
einer großen
Kapazität
neben den Registerdateien hat, und in solchen Fällen wird erwartet, dass die
Verarbeitungslast aufgrund des Kontext-Wechselns schwerer im Verhältnis zu
der Kapazität
wird. Jedoch offenbart die japanische Patentanmeldung Nr. 2000-135010 absolut keine
Lehre, wie man diese internen Speicher schützt und wie man die Verarbeitungslast
aufgrund des Kontext-Wechselns reduziert.
-
Zum
Beispiel kann, in dem Fall, wo der Mikroprozessor einen internen
Speicher einer großen Kapazität hat, der
Speicher nicht gesamt durch den Stand der Technik geschützt werden,
so dass das Entweichen der geschützten
Daten unvermeidbar ist. Wenn ein Versuch getätigt wird, ihn gesamt zu schützen, würde außerdem die
Leistungsverschlechterung aufgrund der Chiffrierverarbeitung wegen
der großen Kapazität verursacht
werden, so dass es in der Praxis eine ernsthafte Beschränkung bewirken
würde.
-
Als
ein bekanntes Verfahren zum Reduzieren der Verarbeitungslast aufgrund
des Kontext-Umschaltens in einem Prozessor mit einem Cache-Speicher
einer großen
Kapazität
gibt es ein Verfahren zum Einschließen eines Identifizierers zum
Identifizieren eines Prozesses, der die gecacheten Daten besitzt,
in eine Marke, die zum Beurteilen eines Treffers/Misserfolgs bei
einer verknüpften
Speichereinheit des Caches verwendet werden soll (auf dieses Verfahren
wird hier im Nachfolgenden als ein Prozessmarkenschema verwiesen
werden).
-
Jedoch
ist es schwierig, dieses Verfahren geradewegs anzuwenden, weil der
Prozess ein durch das Betriebssystem verwendetes Konzept ist, um den
Prozessor virtuell zu behandeln, und es ist für den Prozessor selbst schwierig,
den Identifizierer zum Identifizieren des Prozesses handzuhaben. Selbst
wenn der Prozessor mit einem Mechanismus zum Schützen eines Zugriffs auf Daten
durch Verwenden eines Identifizierers zum Identifizieren des Prozesses
bereitgestellt ist, kann außerdem,
solange wie der Prozessidentifizierer unter der Verwaltung des Betriebssystems
ist, nichts gegen das Geheimnisentweichen durch die Änderung
des Betriebssystems getan werden.
-
Das
zweite Problem ist, dass das Kontext-Umschalten starr durch Hardware
getan wird, und sämtliche
Register gesichert oder wiedergewonnen werden müssen, so dass es einen Flexibilitätsmangel
gibt. Zum Beispiel ist es, in dem Fall der häufig auftretenden Abweichungsverarbeitung,
vorzuziehen, die Optimierung zum Sichern oder Wiedergewinnen nur
eines Teils der Registerdateien zu realisieren, aber eine in der
japanischen Patentanmeldung Nr. 2000-135010 offenbarte Technik sichert oder
wiedergewinnt sämtliche
Inhalte der Registerdateien kollektiv.
-
WO
00/26791 betrifft eine sichere Speicherverwaltungseinheit, die mehrfache
kryptographische Algorithmen verwendet.
-
KURZE ZUSAMMENFASSUNG
DER ERFINDUNG
-
Es
ist deshalb eine Aufgabe der vorliegenden Erfindung, einen Mikroprozessor
bereitzustellen, der fähig
ist zum Garantieren sowohl der Geheimhaltung des Programms selbst
als auch der Geheimhaltung von durch das Programm kryptographisch
gehandhabten Daten, und zum Reduzieren der Verarbeitungslast aufgrund
des Kontext-Wechselns in der Multitask-Umgebung.
-
Es
ist eine andere Aufgabe der vorliegenden Erfindung, einen Mikroprozessor
bereitzustellen, der fähig
ist zum Realisieren der Optimierung eines Schutzzielverarbeitens,
um ein Sichern oder eine Wiedergewinnung von nur einem erforderlichen
Teil von Daten in der Multitask-Umgebung zu ermöglichen.
-
Gemäß einem
Aspekt der vorliegenden Erfindung ist ein Mikroprozessor bereitgestellt,
mit: einer Anweisungsdechiffrier-Verarbeitungseinheit, die konfiguriert
ist zum Dechiffrieren eines Programms in einer chiffrierten Form
durch Verwenden eines ersten Chiffrierschlüssels; einer Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit,
die konfiguriert ist zum Chiffrieren/Dechiffrieren von durch das
Programm verarbeiteten Daten in einer dechiffrierten Form durch
Verwenden eines zweiten Chiffrierschlüssels; einer Schlüsselpaar-Verwaltungseinheit,
die mit der Anweisungsdechiffrier-Verarbeitungseinheit und der Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit
verbunden ist, mit einem ersten Speicherbereich zum Speichern des
ersten Chiffrierschlüssels
und des zweiten Chiffrierschlüssels
in Zuordnung als ein Schlüsselpaar;
und einem zweiten Speicherbereich zum Speichern eines Identifizierers
zum Identifizieren des Schlüsselpaares,
zusammen mit bezogenen Daten des Programms.
-
Gemäß einem
anderen Aspekt der vorliegenden Erfindung ist ein Datenschutzverfahren
für einen
Mikroprozessor bereitgestellt, wobei das Datenschutzverfahren umfasst:
Dechiffrieren eines Programms in einer chiffrierten Form durch Verwenden eines
ersten Chiffrierschlüssels;
Erzeugen eines dem ersten Chiffrierschlüssel entsprechenden zweiten Chiffrierschlüssels, zum
Chiffrieren/Dechiffrieren durch das Programm verarbeiteter Daten
in einer dechiffrierten Form; Speichern des ersten Chiffrierschlüssels und
des zweiten Chiffrierschlüssels
in Zuordnung als ein Schlüsselpaar;
Vergeben eines Identifizierers zum Identifizieren des Schlüsselpaares,
an das Schlüsselpaar;
und Auslesen des zweiten Chiffrierschlüssels gemäß dem Identifizierer, Chiffrieren der
Daten durch Verwenden des zweiten Chiffrierschlüssels und Speichern der Daten
in einer chiffrierten Form in einem externen Speicher, wenn eine
Abweichung bzw. Ausnahme während
einer Ausführung des
Programms auftritt.
-
Die
vorliegende Erfindung kann entweder in Hardware oder in Software
in einem Prozessor implementiert sein. Ferner kann die vorliegende
Erfindung in einer Kombination von Hardware und Software implementiert
sein. Die vorliegende Erfindung kann außerdem durch eine einzelne
Verarbeitungsvorrichtung oder ein verteiltes Netzwerk von Verarbeitungsvorrichtungen
implementiert sein.
-
Da
die vorliegende Erfindung durch Software implementiert sein kann,
umfasst die vorliegende Erfindung einen einem Prozessor bereitgestellten
Computercode auf irgendeinem geeigneten Trägermedium. Das Trägermedium
kann irgendein Speicherungsmedium umfassen, so wie eine Diskette,
eine CD-ROM, ein
magnetisches Gerät
oder ein programmierbares Speichergerät, oder irgendein flüchtiges Medium,
so wie irgendein Signal, z.B. ein elektrisches, optisches oder Mikrowellensignal.
-
Andere
Merkmale und Vorteile der vorliegenden Erfindung werden aus der
folgenden Beschreibung im Zusammenhang mit den begleitenden Zeichnungen
ersichtlich werden.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm, das eine beispielhafte Konfiguration eines Mikroprozessors
gemäß der ersten
Ausführungsform
der vorliegenden Erfindung zeigt.
-
2 ist
ein Diagramm, das einen Fluss einer Verarbeitung zum Chiffrieren
und Speichern von Daten zeigt, die durch den Mikroprozessor von 1 ausgeführt werden
soll.
-
3 ist
ein Diagramm, das einen Fluss einer Verarbeitung zum Wiedergewinnen
gespeicherter Daten zeigt, die durch den Mikroprozessor von 1 ausgeführt werden
soll.
-
4 ist
ein Blockdiagramm, das eine beispielhafte detaillierte Konfiguration
eines Prozessorkerns in dem Mikroprozessor von 1 zeigt.
-
5 ist
ein Blockdiagramm, das eine beispielhafte detaillierte Konfiguration
einer arithmetischen Logikoperationseinheit in dem Prozessorkern von 4 zeigt.
-
6 ist
ein Blockdiagramm, das eine beispielhafte detaillierte Konfiguration
eines Systemregisters in dem Prozessorkern von 4 zeigt.
-
7 ist
ein Blockdiagramm, das eine beispielhafte detaillierte Konfiguration
eines Anweisungs-Caches in dem Mikroprozessor von 1 zeigt.
-
8 ist
ein Blockdiagramm, das eine beispielhafte detaillierte Konfiguration
eines Daten-Caches in dem Mikroprozessor von 1 zeigt.
-
9 ist
ein Blockdiagramm, das eine beispielhafte detaillierte Konfiguration
einer Anweisungs-Dechiffrier-Verarbeitungseinheit
in dem Mikroprozessor von 1 zeigt.
-
10 ist
ein Blockdiagramm, das eine beispielhafte detaillierte Konfiguration
einer Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit
in dem Mikroprozessor von 1 zeigt.
-
11 ist
ein Blockdiagramm, das eine beispielhafte detaillierte Konfiguration
einer Schlüsselpaar-Verwaltungseinheit
in dem Mikroprozessor von 1 zeigt.
-
12 ist
ein Flussdiagramm, das eine Verarbeitung zeigt, die durch den Mikroprozessor
von 1 zur Zeit eines Unterbrechungsauftretens ausgeführt werden
soll.
-
13 ist
ein Flussdiagramm, das Details einer Abweichungsverarbeitungsroutine
in der in 12 gezeigten Verarbeitung zeigt.
-
14 ist
ein Flussdiagramm, das Details eines Kontext-Wiedergewinnungsschrittes in der in 12 gezeigten
Verarbeitung zeigt.
-
15 ist
ein Blockdiagramm, das eine beispielhafte detaillierte Konfiguration
einer Schlüsselpaar-Tabelle
in einem Mikroprozessor gemäß der zweiten
Ausführungsform
der vorliegenden Erfindung zeigt.
-
DETAILLIERTE
BESCHREIBUNG DER ERFINDUNG
-
Mit
Verweis auf 1 bis 14 wird
die erste Ausführungsform
eines Mikroprozessors gemäß der vorliegenden
Erfindung im Detail beschrieben werden. In der vorliegenden Erfindung
wird vorausgesetzt, dass der Mikroprozessor das chiffrierte Programm
in der Multitask-Umgebung ausführt.
-
1 zeigt
eine funktionale Konfiguration des Mikroprozessors 101 gemäß der ersten
Ausführungsform.
Der Mikroprozessor 101 hat einen Prozessorkern 201 zum
Ausführen
des Programms, einen Anweisungs-Cache 301 zum temporären Speichern
von Anweisungssequenzen des Programms, einen Daten-Cache 401 zum
temporären
Speichern einer Datenverarbeitung durch das Programm, eine Anweisungsdechiffrier-Verarbeitungseinheit 501 zum Dechiffrieren
des chiffrierten Programms zur Zeit einer Ausführung und eines Lieferns des
dechiffrierten Programms an den Prozessorkern 201, eine
Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit 601 zum
Chiffrieren oder Dechiffrieren von durch das dechiffrierte Programm
ausgeführten
Daten, und eine Schlüsselpaar-Verwaltungseinheit 701.
-
Für die Dechiffrierung
des chiffrierten Programms bei der Anweisungs-Dechiffrier-Verarbeitungseinheit 501 wird
ein durch das Kryptosystem für einen öffentlichen
Schlüssel
gegebener Programmschlüssel
verwendet. Außerdem
wird für
die Chiffrierung/Dechiffrierung der durch das Programm verarbeiteten
Daten ein in Zuordnung zu dem Programmschlüssel erzeugter Datenschlüssel verwendet.
Ein Merkmal der ersten Ausführungsform
ist, dass die Schlüsselpaar-Verwaltungseinheit 701 eine
Schlüsselpaar-Tabelle zum Speichern
dieses Programmschlüssels
und Datenschlüssels
in einer Eineindeutigkeit als ein Paar hat, wie unten im Detail
beschrieben werden wird.
-
Außerdem enthält der Prozessorkern 201 ein Systemregister 210 und
eine Registerdatei 230. Das Systemregister 210 gibt
eine Marke (Identifizierer) zum Identifizieren des Schlüsselpaares
für das
aktuell ausgeführte
Programm an. Die Registerdatei 230 speichert die Programmdaten
oder die verarbeiteten Daten zusammen mit einer Marke des entsprechenden
Schlüsselpaares.
Diese Funktionen werden unten in weiterem Detail beschrieben werden.
-
Der
Mikroprozessor 101 hat außerdem einen Prozessorbus 102 und
eine externe Busschnittstelle 103, durch die der Mikroprozessor 101 mit
einem Speicher oder Peripheriegeräten verbunden ist, die außerhalb
des Mikroprozessors 101 bereitgestellt sind.
-
Der
Prozessorkern 201, der Anweisungs-Cache 301 und
der Daten-Cache 401 befinden sich innerhalb eines geschützten Bereiches 104,
der durch eine gestrichelte Linie in 1 angegeben
ist. Der geschützte
Bereich 104 ist ein Bereich, der von dem äußeren oder
dem OS geschützt
ist, und Daten werden in Klartextformen innerhalb dieses Bereiches
gehandhabt. Andererseits sind, außerhalb des geschützten Bereichs 104,
zu verbergende Daten immer chiffriert. Wenn die chiffrierten Daten
von außerhalb
des geschützten
Bereichs 104 in das Innere des geschützten Bereiches 104 gelesen
werden, werden sie durch die Anweisungsdechiffrier-Verarbeitungseinheit 501 dechiffriert,
wenn sie als Anweisung gelesen werden sollen, oder sie werden durch
die Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit 601 dechiffriert,
wenn sie als Daten gelesen werden sollen. Der Programmschlüssel und
der Datenschlüssel,
zur Dechiffrierung zu verwenden, werden von der Schlüsselpaar-Verwaltungseinheit 701 geliefert.
-
Wie
oben erwähnt
ist ein Merkmal der ersten Ausführungsform,
dass die dechiffrierten Daten in Klartextform mit einer Marke zum
Identifizieren des bei der Dechiffrierungsverarbeitung verwendeten Schlüsselpaares
angefügt
sind, als ein Attribut, das angibt, dass die kryptographische Operation
angewendet wurde, und in der Registerdatei 320 innerhalb des
Prozessorkerns 201 gespeichert sind.
-
2 und 3 zeigen
einen Umriss der Verarbeitung durch den Mikroprozessor 101.
-
Wie
in 2 gezeigt, wird zuerst, bei dem Schritt S21, die
Anweisungssequenz des in dem Außenspeicher 901 außerhalb
des Mikroprozessors 101 gespeicherten chiffrierten Programms
durch Verwenden des Programmschlüssels
des Schlüsselpaares
(auf das hier im Nachfolgenden als ein effektives Schlüsselpaar
verwiesen wird) entschlüsselt,
das für das
aktuell ausgeführte
Programm wirksam ist. Das aktuelle wirksame Schlüsselpaar ist ein Schlüsselpaar,
dessen Marke durch das Systemregister 210 angegeben ist,
so dass es gemäß dieser
Marke festgestellt werden kann. In dem Beispiel von 2 ist der
Markenwert des effektiven Schlüsselpaares
#1. Gemäß diesem
Markenwert wird der der Marke #1 entsprechende Programmschlüssel von
der Schlüsselpaar-Tabelle 710 der
Schlüsselpaar-Verwaltungseinheit 701 ausgelesen.
-
Als
Nächstes
wird, bei dem Schritt S23, das Programm gemäß der dechiffrierten Anweisungssequenz
ausgeführt,
die nun in der Klartextform ist. Die Daten, die als ein Ergebnis
der Ausführung
des Programms erhalten sind, d.h. der betrieblichen Manipulation,
werden mit einer Schlüsselpaarmarke
angefügt
und in die Registerdatei 230 gespeichert.
-
Als
Nächstes,
bei dem Schritt S25, werden die Daten in der Registerdatei an den
Daten-Cache 401 transferiert.
-
Schließlich, bei
dem Schritt S27, wird der Datenschlüssel von der Schlüsselpaar-Tabelle 710 gemäß der den
Daten angehängten
Schlüsselpaarmarke
ausgelesen, werden die Daten durch Verwenden des Datenschlüssels chiffriert,
und werden die chiffrierten Daten an den Außenspeicher bzw. den externen
Speicher transferiert (gesichert).
-
3 zeigt
die Wiedergewinnungsverarbeitung für die gesicherten Daten.
-
Zuerst
wird die für
die Wiedergewinnung zu verwendende Schlüsselpaarmarke spezifiziert,
dann werden, bei dem Schritt S31, die chiffrierten Daten von dem
Außenspeicher 901 in
den Mikroprozessor 101 gelesen, wird der durch die Schlüsselpaarmarke spezifizierte
Datenschlüssel
von der Schlüsselpaar-Tabelle 710 ausgelesen,
werden die chiffrierten Daten durch Verwenden des Datenschlüssels dechiffriert,
und werden die dechiffrierten Daten in den Daten-Cache 401 innerhalb
des geschützten
Bereiches 104 gecachet bzw. zwischengespeichert.
-
Als
Nächstes
werden, bei dem Schritt S33, die Klartextdaten auf dem Daten-Cache 401 an
die Registerdatei 201 transferiert. Dann wird, bei dem Schritt
S35, die betriebliche Manipulation bezüglich der Daten auf der Registerdatei 230 fortgesetzt.
-
4 bis 11 zeigen
detaillierte Konfigurationen von Bestandselementen des Mikroprozessors 101,
der die wie oben beschriebene Operation ausführt. Mit Verweisen auf 4 bis 11 wird nun
die Konfiguration jedes Bestandselementes und der Schutzfunktion
basierend auf der Schlüsselpaarmarke
im Detail beschrieben werden.
-
4 zeigt
eine beispielhafte detaillierte Konfiguration des Prozessorkerns 201.
In dem Folgenden wird ein beispielhafter Fall eines Hinzufügens von
Modifizierungen gemäß der vorliegenden Erfindung
an eine Architektur des durch MIPS Technologies, Inc. hergestellten
RISC-Typ-Mikroprozessors
beschrieben werden. Genauer genommen basiert, in dem folgenden Beispiel,
die Prozessor-Pipeline-Struktur
auf dem R3000-Typ von MIPS Technologies, Inc., und die Anweisungsmenge
basiert auf der MIPS-I- oder MIPS-IV-Anweisungsmenge von MIPS-Technologies,
Inc., aber die Anwendbarkeit der vorliegenden Erfindung ist nicht
auf den Prozessor von MIPS Technologies, Inc. beschränkt.
-
Man
beachte, dass die fünf
Pipeline-Stufen IF (instruction fetch bw. Anweisungsholen), RF (register
read bzw. Registerlesen), EX (execution bzw. Ausführung),
MEM (memory access bzw. Speicherzugriff) und WB (write back bzw. Zurückschreiben) des
Prozessorkerns 201 von 4 bei dem
Abschnitt am weitesten links von 4 angegeben sind.
-
Der
Prozessorkern 201 enthält
das Systemregister 210, einen Anweisungshol-Decodierer 200, die
Registerdatei 230, eine Operationseinheit 250, und
eine Speicherzugriffseinheit 260.
-
Das
Systemregister 210 basiert auf dem Systemregister, das
CPO von MIPS R3000 entspricht, zu dem die Verwaltungsfunktion für eine virtuelle
Adresse und die Abweichungsverarbeitungsfunktion hinzugefügt sind,
und ein Register für
eine wirksame Schlüsselpaarmarke 211 zum
Speichern einer Marke des wirksamen Schlüsselpaares ist bereitgestellt,
das den aktuell ausgeführten
Prozess spezifiziert. Und zwar speichert das Register für eine wirksame
Schlüsselpaarmarke 211 eine
Marke, die das Schlüsselpaar
angibt, das für
die Chiffrierverarbeitung des aktuell ausgeführten wirksamen Programms und
der durch dieses Programm verarbeiteten Daten verwendet werden soll.
-
Der
Anweisungshol-Decodierer 220 enthält einen Programmzähler (PC,
Program Counter) 221, einen Anweisungspuffer 222,
und eine Anweisungsausführungs-Steuereinheit 223.
Unter der Steuerung der Anweisungsausführungs-Steuereinheit 223 wird die
Anweisung zu dem Anweisungspuffer 222 von einer Adresse
gebracht, die durch den Programmzähler 221 angegeben
ist, und das Signal (nicht gezeigt) zum Steuern jedes Datenpfades
wird durch Decodieren der gebrachten bzw. geholten Anweisung erzeugt.
-
In
der ersten Ausführungsform
werden nicht nur eine Anweisungsadresse, sondern auch ein Wert des
Registers für
eine wirksame Schlüsselpaarmarke 211,
die den aktuell ausgeführten
Prozess angibt, als Parameter einer Leseanforderung bezüglich des
Anweisungs-Caches 301 gesendet.
-
Jedes
Register 231 in der Registerdatei 230 hat ein
Registerdatenteilstück 231-1 als
auch ein Registermarkenteilstück 231-2,
das charakteristisch für die
vorliegende Erfindung ist. Das Registermarkenteilstück 231-2 speichert
die Schlüsselpaarmarke, die
das Schutzattribut basierend auf der Chiffrierung in diesem Register
gespeicherter Daten angibt.
-
Bei
der RF-(register read bzw. Registerlesen)-Phase der Anweisungsausführung-Pipeline wird
der Inhalt des Registerdatenteilstücks 231-1 auf einen
Operandenbus 240 gegeben, und der Inhalt des Registermarkenteilstücks 231-2 wird
auf einen Operandenmarkenbus 241 gegeben.
-
Eine
arithmetische Logikoperationseinheit 250 entspricht der
EX-Phase der Anweisungsausführungs-Pipeline.
In der ersten Ausführungsform
hat die arithmetische Logikoperationseinheit 250 eine Markenbeurteilungseinheit 252 zum
Beurteilen des Operanden der Operation zusätzlich zu einem gewöhnlichen
Operator (Operationsdatenpfad) 251.
-
Wie
in 5 gezeigt, hat die Markenbeurteilungseinheit 252 eine
Funktion zum Bestimmen, ob die Ausführung der Operation zugelassen
wird oder nicht, gemäß wenigstens
drei Werten, die einen Typ der Operation, einen Wert der dem Operanden
der Operation angefügten
Marke, und die wirksamen Schlüsselpaarmarke
enthalten. Der Operationstyp wird von der Anweisungsausführungs-Steuereinheit 223 in
die Markenbeurteilungseinheit 252 eingegeben, und der Markenwert
wird von dem Markenteilstück 231-2 der
Registerdatei 230 eingegeben. Die aktuelle wirksame Schlüsselpaarmarke
wird von dem Register für
eine wirksame Schlüsselpaarmarke 211 des
Systemregisters 210 eingegeben. Wenn durch die Markenbeurteilungseinheit 252 beurteilt
wird, dass die Ausführung
nicht zugelassen wird, wird der Prozessorkern 201 eine
Abweichung bzw. Ausnahme verursachen, dass nicht fortgesetzt werden
kann, und die Anweisung wird abgebrochen werden. Wenn die Markenbeurteilungseinheit 252 beurteilt,
dass die Ausführung
zugelassen wird, und wenn das Ausführungsergebnis für diese
Anweisung existiert, werden Daten dieses Ausführungsergebnisses auf einen
Ergebnisbus 280 gegeben werden, und eine Schlüsselpaarmarke
dieses Ausführungsergebnisses
wird auf einen Ergebnismarkenbus 281 gegeben werden.
-
Die
Speicherzugriffseinheit 260 entspricht der EX/MEM-Phase
der Anweisungsausführungs-Pipeline.
In der ersten Ausführungsform
hat die Speicherzugriffseinheit 260 eine Datentransfer-Markenbeurteilungseinheit 262 zusätzlich zu
einer gewöhnlichten
Adressenberechnungseinheit 261.
-
Die
Speicherzugriffseinheit 260 gibt nicht nur eine durch die
Adressenberechnungseinheit 261 erhaltene Datenadresse,
sondern auch entweder den dem Operanden angefügten Markenwert oder den wirksamen
Speichermarkenwert als Parameter einer Lese/Schreibanforderung bezüglich des
Daten-Caches 401 aus.
Eine Markenbeurteilungseinheit 262 hat eine Funktion zum
Bestimmen, ob die Ausführung
des Transfers zugelassen wird oder nicht gemäß wenigstens vier Werten, die
eine Datentransferquelle, ein Datentransferziel, einen Wert der
an die zu transferierenden Daten angefügten Marke, und die wirksame
Schlüsselpaarmarke
enthalten. Wenn die Markenbeurteilungseinheit 262 beurteilt,
dass die Ausführung
nicht zugelassen wird, wird der Prozessorkern 201 eine
Abweichung bzw. Ausnahme verursachen, dass nicht fortgesetzt werden
kann, und diese Anweisung wird unterbrochen werden. Wenn die Markenbeurteilungseinheit 262 beurteilt,
dass die Ausführung
zugelassen wird, und wenn das Ausführungsergebnis für diese
Anweisung existiert, werden Daten dieses Ausführungsergebnisses auf den Ergebnisbus 208 gegeben
werden, und eine Schlüsselpaarmarke
dieses Ausführungsergebnisses
wird auf den Ergebnismarkenbus 281 gegeben werden.
-
Eine
Schlüsselpaar-Verwaltungseinheit-Schnittstelle 270 zum
Steuern einer unten zu beschreibenden Schlüsselpaar-Verwaltungseinheit 701 ist
eindeutig für
die vorliegende Erfindung.
-
Bei
der WB-Stufe der Anweisungsausführungs-Pipeline
werden die Daten auf dem Ergebnisbus 280 und die Schlüsselpaarmarke
auf dem Ergebnismarkenbus 281 zurück an die Registerdatei 230 geschrieben,
wenn erforderlich. 6 zeigt eine Konfiguration des
Systemregisters 210 zum Angeben der aktuellen wirksamen
Schlüsselpaarmarke. Das
Register für
eine wirksame Schlüsselpaarmarke 211 gibt
eine Marke des wirksamen Schlüsselpaares des
aktuell ausgeführten
Programms an.
-
In
der ersten Ausführungsform
sind zwei Markenwerte unter den Schlüsselpaarmarkenwerten für die speziellen
Zwecke reserviert. Einer ist ein Markenwert zum Angeben, dass die
Chiffrierverarbeitung nicht ausgeführt werden sollte (auf eine
Marke mit diesem Markenwert wird als eine Nullmarke verwiesen werden).
Bei der Anweisungs-Dechiffrier-Verarbeitungseinheit 501 und
der Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit 601 werden
Daten (oder eine Anweisung) transferiert ohne Ausführen der
Chiffrieroperation, wenn die Nullmarke (tag-0) als die Schlüsselpaarmarke
angegeben ist. Ein anderer ist ein Markenwert (tag-K), der für die Verwendung
reserviert ist, wenn der Kernel-Modus als der Operationsmodus des
Prozessors ausgewählt
ist. Für
das diesem Markenwert entsprechende Schlüsselpaar sind der Programmschlüssel und
der Datenschlüssel eines
in dem Kernel-Modus (der das Betriebssystem in dem gewöhnlichen
Computersystem ist) auszuführenden
Prozesses registriert.
-
Das
Register für
eine wirksame Schlüsselpaarmarke 211 hat
ein Kernel-Modus-Schlüsselpaarmarken-Register 211-1 zum
Speichern der Schlüsselpaarmarke
in dem Kernel-Modus und ein Benutzer-Modus-Schlüsselpaarmarken-Register 211-2 zum
Speichern der Schlüsselpaarmarke
in dem Benutzer-Modus, von denen einer gemäß dem wirksamen Modus des Prozessors
zu einer Zeit ausgewählt werden
wird zum Ausgeben der Schlüsselpaarmarke (wirksame
Schlüsselpaarmarke),
die in der folgenden Verarbeitung wirksam ist.
-
7 zeigt
eine beispielhafte detaillierte Konfiguration des Anweisungs-Caches 301.
Der Anweisungs-Cache 301 umfasst Arrays einer Vielzahl von
Anweisungs-Cache-Leitungen 302. Die Cache-Leitung der vorliegenden
Erfindung führt
die Suche einer Adresse in dem Cache aus, und jede Anweisungs-Cache-Leitung hat einen
Schlüsselpaarmarkenbereich 302-1 zum
Speichern der Schlüsselpaarmarke,
die das Schutzattribut der Programmdaten angibt, die in dieser Leitung
gecachet bzw. zwischengespeichert sind, d.h. den auf die gecachten Programmdaten
anzuwendenden Programmschlüssel,
welches das charakteristische Merkmal der vorliegenden Erfindung
ist. Die Größe des Schlüsselpaarmarkenbereichs 302-1 kann
solch eine Anzahl von Bits umfassen, die sämtliche Einträge der unten zu
beschreibenden Schlüsselpaar-Tabelle
indizieren können.
Zum Beispiel in dem Fall eines Verwendens der Schlüsselpaarmarke
mit 64 Einträgen,
ist der Schlüsselpaarmarken-Bereich 302-1 mit
6-Bitgröße ausreichend.
Man beachte, dass jede Cache-Leitung außerdem mit Bereichen zum Angeben
einer Adresse bereitgestellt ist, die den Ort der Programmdaten in
dem Außenspeicher
bzw. externen Speicher und den Zustand angibt.
-
8 zeigt
eine beispielhafte detaillierte Konfiguration des Daten-Caches 401.
Der Anweisungs-Cache 401 umfasst Arrays einer Vielzahl
von Daten-Cache-Leitungen 402. Jede Daten-Cache-Leitung
hat außerdem
einen Schlüsselpaarmarken-Bereich 402-1 zum
Speichern der Schlüsselpaarmarke, die
das Schutzattribut der verarbeiteten Daten angibt, die in dieser
Leitung gecachet bzw. gespeichert sind, d.h. den Datenschlüssel, der
auf die gecacheten verarbeiteten Daten angewendet werden soll. Man
beachte, dass jede Cache-Leitung auch mit Bereichen zum Angeben
einer Adresse in dem Außenspeicher
und seinem Zustand ähnlich
wie der Anweisungs-Cache 301 bereitgestellt
ist.
-
9 zeigt
eine beispielhafte detaillierte Konfiguration der Anweisungs-Dechiffrier-Verarbeitungseinheit 501 und
ihre Operation. Die Anweisungs-Dechiffrier-Verarbeitungseinheit 501 umfasst ein
Befehlsdatenregister 502 zum temporären Speichern der Programmdaten,
die das Dechiffrier-Verarbeitungsziel
sind, und ihres Chiffrierschlüssels,
eine Dechiffriereinheit 503 zum Ausführen der Dechiffrierung mit
Verwenden des Geheimschlüssels,
und eine Steuereinheit 504 zum Steuern des Befehlsdatenregisters 502 und
der Dechiffriereinheit 503.
-
Die
Anweisungs-Dechiffrier-Verarbeitungseinheit 501 empfängt zuerst
eine Leseanforderung von dem Anweisungs-Cache 301. Die
an dieser Stelle zu verwendenden Parameter sind die Adresse in dem
Außenspeicher
und die Schlüsselpaarmarke zum
Spezifizieren des Chiffrierschlüssels
(Programmschlüssel),
der auf die ausgelesenen Programmdaten angewendet werden soll. Dann
wird eine Leseanforderung an den Außenspeicher durch Verwenden
der Adresse als ein Parameter ausgestellt. Außerdem wird eine Programmschlüssel-Leseanforderung
an die Schlüsselpaar-Verwaltungseinheit 701 durch
Verwenden der Schlüsselpaarmarke als
ein Parameter ausgestellt.
-
Die
chiffrierten Programmdaten von dem Außenspeicher und der Programmschlüssel von
der Schlüsselpaar-Verwaltungseinheit 701,
die in Ansprechen auf diese Leseanforderungen gesendet sind, werden
in dem Befehlsdatenregister 502 gespeichert. Die Dechiffrierdateneinheit 503 dechiffriert die
chiffriert Programmdaten durch Anwenden des Programmschlüssels auf
die chiffrierten Programmdaten auf dem Befehlsdatenregister 502.
Wenn die Dechiffrierung vollendet ist, werden die Klartextdaten an
den Anweisungs-Cache 301 ausgegeben.
-
10 zeigt
eine beispielhafte detaillierte Konfiguration der Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit 601 und
ihre Operation. Die Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit 601 umfasst
ein Befehlsdatenregister 602 zum temporären Speichern von Daten in
der Klartextform oder der chiffrierten Form, die durch das Programm
verarbeitet werden, eine Chiffrier/Dechiffriereinheit 603 zum Ausführen der
Chiffrierung/Dechiffrierung mit Verwenden des Geheimschlüssels, und
eine Steuereinheit 604 zum Steuern des Befehlsdatenregisters 602 und
der Chiffrier/Dechiffriereinheit 603.
-
Die
Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit 601 empfängt zuerst
eine Lese/Schreibanforderung von dem Daten-Cache 401. Die Leseanforderung
wird nach der Unterbrechungsverarbeitung ausgestellt, zum Beispiel
in dem Fall eines Wiedergewinnens der Daten, die in dem Außenspeicher
temporär
zu einer Zeit des Auftretens einer durch die Unterbrechung verursachten
Abweichung gespeichert worden sind. Die Schreibanforderung wird
zu einer Zeit des Auftretens der Störung ausgestellt, in dem Fall
eines Speicherns der bis dahin verarbeiteten Daten in dem Außenspeicher
durch Chiffrieren derer, um die Daten zu schützen.
-
Die
Parameter der Leseanforderung sind die Adresse in dem Außenspeicher
und die Schlüsselpaarmarke
zum Spezifizieren des auf die ausgelesenen Daten anzuwendenden Chiffrierungsschlüssels.
-
Zuerst
wird eine Leseanforderung an den Außenspeicher durch Verwenden
der Adresse als ein Parameter ausgestellt. Außerdem wird eine Datenschlüssel-Leseanforderung
an die Schlüsselpaar-Verwaltungseinheit 701 durch
Verwenden der Schlüsselpaarmarke
als ein Parameter ausgestellt. Die verarbeiteten Daten in der chiffrierten
Form von dem Außenspeicher
und die Schlüsseldaten
von der Schlüsselpaar-Verwaltungseinheit 701,
die in Ansprechen auf diese Leseanforderungen gesendet sind, werden
in dem Befehlsdatenregister 602 gespeichert. Die Chiffrier/Dechiffriereinheit 603 dechiffriert
die chiffrierten Daten durch Anwenden des Datenschlüssels auf
die chiffrierten Daten auf dem Befehlsdatenregister 602.
Wenn die Dechiffrierung vollendet ist, werden die Klartextdaten
an den Daten-Cache 401 ausgegeben.
-
Andererseits
sind die Parameter der Schreibanforderung die Adresse in dem Außenspeicher,
zu welchem die verarbeiteten Daten geschrieben werden sollen (d.h.,
zu welchem die verarbeiteten Daten temporär gesichert werden sollen),
die zu transferierenden Daten, und die Schlüsselpaarmarke zum Spezifizieren
des auf die Daten anzuwendenden Chiffrierschlüssels.
-
Zuerst
wird eine Datenschlüssel-Leseanforderung
an die Schlüsselpaar-Verwaltungseinheit 701 durch
Verwenden der Schlüsselpaarmarke
als ein Parameter ausgestellt. Dann chiffriert die Chiffrier/Dechiffriereinheit 603 die
Klartextdaten durch Anwenden des Datenschlüssels auf die Klartextdaten auf
dem Befehlsdatenregister 602. Wenn die Chiffrierung vollendet
ist, werden die chiffrierten Daten an den Außenspeicher ausgegeben.
-
11 zeigt
eine beispielhafte detaillierte Konfiguration der Schlüsselpaar-Verwaltungseinheit 701.
Die Schlüsselpaar-Verwaltungseinheit 701 umfasst
eine Prozessorkern-Schnittstelle 702,
eine Anweisungs-Dechiffrier-Verarbeitungseinheit-Schnittstelle 703,
eine Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit-Schnittstelle 704,
die Schlüsselpaar-Tabelle 710,
und eine Schlüsselpaar-Steuereinheit 720.
-
Die
Schlüsselpaar-Tabelle 710 hat
eine Vielzahl von Schlüsselpaar-Einträgen 711.
Jedes Schlüsselpaar
umfasst einen Programmschlüssel 711-1 und
einen Datenschlüssel 711-2. Das Schlüsselpaar
der vorliegenden Erfindung ist ein Index, der durch diese Schlüsselpaar-Arrays
gebildeten Schlüsselpaar-Tabelle 710.
Die Operationen der Schlüsselpaar-Tabelle 710 enthalten
die folgenden drei Leseoperationen und eine Schreiboperation.
-
(1) Programmschlüssel-Lesen:
-
Dies
ist die zwischen der Anweisungs-Dechiffrier-Verarbeitungseinheit 501 und
der Schlüsselpaar-Verwaltungseinheit 701 auszuführende Operation.
Dies ist die Leseoperation durch einen Anschluss, der mit der Anweisungs- Dechiffrier-Verarbeitungseinheit-Schnittstelle 703 verbunden
ist, in welcher der Programmschlüssel
des durch das Schlüsselpaar,
das durch die Schlüsselpaarmarke (d.h.
Index) in dem Register der Anweisungs-Dechiffrier-Verarbeitungseinheit 501 spezifiziert
ist, ausgelesen und ausgegeben wird.
-
(2) Datenschlüssel-Lesen:
-
Dies
ist die zwischen der Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit 601 und
der Schlüsselpaar-Verwaltungseinheit 701 auszuführende Operation.
Dies ist die Leseoperation durch einen Anschluss, der mit der Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit-Schnittstelle 704 verbunden
ist, in welcher der Datenschlüssel
des Schlüsselpaares, das
durch die Schlüsselpaarmarke
(d.h. Index) in dem Register der Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit 601 spezifiziert
ist, ausgelesen und ausgegeben wird.
-
(3) Schlüsselpaar-Lesen:
-
Dies
ist die zwischen dem Prozessorkern 201 und der Schlüsselpaar-Verwaltungseinheit 701 auszuführende Operation.
Dies ist die Leseoperation durch einen Anschluss, der mit der Schlüsselpaar-Steuereinheit 720 verbunden
ist, in welcher sowohl der Programmschlüssel als auch der Datenschlüssel des
durch die Schlüsselpaarmarke
spezifizierten Schlüsselpaares
ausgelesen und ausgegeben werden.
-
(4) Schlüsselpaar-Schreiben:
-
Dies
ist die Schreiboperation durch einen Anschluss, der mit der Schlüsselpaar-Steuereinheit 720 verbunden
ist, in welcher der Programmschlüssel und
der Datenschlüssel,
als Parameter gegeben, als das Schlüsselpaar auf der durch den
Index spezifizierten Schlüsselpaar-Tabelle 710 gespeichert
werden.
-
Die
Schlüsselpaar-Steuereinheit 720 der Schlüsselpaar-Verwaltungseinheit 701 führt die
folgenden drei Operationen gemäß Anforderungen
von dem Prozessorkern 201 aus.
-
(1) Registrierung eines
neuen Schlüsselpaares:
-
In
dem Fall eines Ausführens
eines neuen chiffrierten Programms gibt es einen Bedarf, ein Paar des
Programmschlüssels
zum Dechiffrieren dieses chiffrierten Programms und des Datenschlüssels zum
Chiffrieren/Dechiffrieren der durch dieses Programm verarbeiteten
Daten neu zu registrieren. Die Schlüsselpaar-Steuereinheit 720 empfängt die
durch Chiffrieren des Programmschlüssels durch Verwenden des öffentlichen
Schlüssels
des Prozessors erhaltenen Programmschlüsseldaten und die für diesen
Programmschlüssel
zu verwendende Schlüsselpaarmarke
von dem Prozessorkern 201. Die Programmschlüsseldaten
werden in einem Schlüsselregistrierungsregister 721 gespeichert,
während
die Schlüsselpaarmarke
als ein Index auf die Schlüsselpaar-Tabelle 710 verwendet
wird.
-
Eine
Chiffrier-Verarbeitungseinheit für
einen öffentlichen
Schlüssel 722 dechiffriert
die Schlüsseldaten
auf dem Schlüsselregistrierungsregister 721 durch
Verwenden des Geheimschlüssels
des Prozessors, und speichert die chiffrierten Schlüsseldaten in
einen Programmschlüssel-Speicherungsbereich 724-1 eines
Schlüsselpaarregisters 724.
Außerdem erzeugt
eine Datenschlüssel-Erzeugungseinheit 723 den
Datenschlüssel
durch Verwenden einer beliebigen Einrichtung, so wie einer Zufallszahlen-Erzeugungsfunktion,
und speichert den erzeugten Datenschlüssel in einen Datenschlüssel-Speicherungsbereich 724-2 des
Schlüsselpaarregisters 724.
Wenn diese zwei Schlüssel
in das Schlüsselpaarregister 724 gespeichert
sind, registriert die Schlüsselpaar-Steuereinheit 720 ein
neues Schlüsselpaar
in die Schlüsselpaar-Tabelle 710 gemäß der Schlüsselpaar-Schreiboperation
der Schlüsselpaar-Tabelle 710.
-
(2) Lesen eines existierenden
Schlüsselpaares:
-
Die
Schlüsselpaar-Steuereinheit 720 empfängt eine
erforderliche Schlüsselpaarmarke
von dem Prozessorkern 201. Diese Schlüsselpaarmarke wird als ein
Index auf die Schlüsselpaar-Tabelle 710 verwendet
werden. Die Schlüsselpaar-Tabelle 710 liest
das durch den Index spezifizierte Schlüsselpaar durch ihre Leseoperation
aus, und speichert das Ergebnis in das Schlüsselpaarregister 724 der
Schlüsselpaar-Steuereinheit 720.
Eine Schlüsselpaar-Chiffrier-Verarbeitungseinheit 725 chiffriert
den Programmschlüssel 724-1 und
den Datenschlüssel 724-2 in
der Klartextform, gespeichert in dem Schlüsselpaarregister 724,
als einzelne Daten durch Verwenden des Geheimschlüssels des
Prozessors, und speichert das Ergebnis in ein chiffriertes Schlüsselpaarregister 726.
Die Schlüsselpaar-Steuereinheit 720 gibt
Daten auf dem chiffrierten Schlüsselpaarregister 726 an
den Prozessorkern 201 aus.
-
(3) Schreiben eines existierenden
Schlüsselpaares:
-
Die
Schlüsselpaar-Steuereinheit 720 empfängt die
Schlüsselpaarmarke
und die Schlüsselpaardaten,
in denen das Schlüsselpaar
chiffriert ist durch den Geheimschlüssel des Prozessors, von dem
Prozessorkern 201. Die Schlüsselpaardaten werden in das
chiffrierte Schlüsselpaarregister 726 gespeichert,
während
die Schlüsselpaarmarke
als ein Index auf die Schlüsselpaar-Tabelle 710 verwendet
wird. Die Schlüsselpaar-Verwaltungseinheit 725 dechiffriert
Daten auf dem chiffrierten Schlüsselpaarregister 726 durch
Verwenden des Geheimschlüssels
des Prozessors. Die resultierenden Klartextdaten werden in das Schlüsselpaarregister 724 als
der Programmschlüssel
und der Datenschlüssel
gespeichert. Die Schlüsselpaar-Tabelle 710 schreibt
das Schlüsselpaar
auf dem Schlüsselpaarregister 724 durch
ihre Schreiboperation.
-
Nun
existiert, in dem Mikroprozessor der vorliegenden Erfindung, eine
Vielzahl von Speichern zum internen Speichern von Daten. Zusätzlich gibt
es auch externe Speicher bzw. Außenspeicher, auf die durch
die externe Bus-Schnittstelle
bzw. eine Schnittstelle für
einen externen Bus 103 zuzugreifen ist. Unter ihnen wird
auf die Speicher, die innerhalb des Mikroprozessors bereitgestellt
sind, die Bereiche zum Speichern der Schlüsselpaarmarke haben (so wie das
Systemregister 210, die Registerdatei 230 usw.), als "Innenspeicher" verwiesen werden.
Unter den Innenspeichern wird auf die Speicher, die Cache-Speicher
sind (so wie der Anweisungs-Cache 301, der Daten-Cache 401 usw.),
als "Innen-Cache-Speicher" verwiesen werden.
Andererseits wird auf die Speicher, die außerhalb des Prozessors bereitgestellt sind,
oder Speicher, die innerhalb des Prozessors bereitgestellt sind,
aber die keine Bereiche zum Speichern der Schlüsselpaarmarke haben, als "Außenspeicher" verwiesen werden.
-
Im
Folgenden werden die Details der Datentransfers unter diesen Speichern
beschrieben werden, wobei die Datentransfers zwischen Speichern
in vier Fälle
abhängig
davon klassifiziert werden können,
ob die Transferquelle und das Transferziel intern oder extern sind,
mit (i) von einem Innenspeicher zu einem Innenspeicher, (ii) von
einem Innenspeicher zu einem Außenspeicher,
(iii) von einem Außenspeicher
zu einem Innenspeicher und (iv) von einem Außenspeicher zu einem Außenspeicher.
-
Außerdem wird
in dieser Ausführungsform der
RISC-Typ-Prozessor
vorausgesetzt, so dass die Datentransfers außerdem gemäß den Fällen der Datentransfers wie
folgt klassifiziert werden können. Hierbei
ist auch ein Weg zum Spezifizieren der Schlüsselpaarmarke angegeben, die
das Transferziel zur Zeit des Transfers haben sollte.
-
(1) Datentransfer, der
durch das Anweisungsholen durch den Anweisungshol-Decodierer 220 des
Prozessorkerns 201 verursacht ist:
-
Die
Schlüsselpaarmarke
des Transferziels in diesem Fall ist die Marke des wirksamen Schlüsselpaares
des aktuell ausgeführten
Programms.
-
(2) Datentransfer, der
durch die Ausführung
einer Ladeanweisung oder einer Speicheranweisung bei der Speicherzugriffseinheit 260 des
Prozessorkerns 201 verursacht ist:
-
Die
Schlüsselpaarmarke
des Transferziels in diesem Fall ist die Marke des wirksamen Schlüsselpaares
des aktuell ausgeführten
Programms. Jedoch werden, in der vorliegenden Erfindung, eine eine
Ladeanweisung spezifizierende Marke und eine eine Speicheranweisung
spezifizierende Marke, die die Schlüsselpaarmarke spezifizieren,
die das Transferziel als ein Operand der Anweisung haben sollte,
zu der Ladeanweisung und der Speicheranweisung von MIPS hinzugefügt. Das
Anweisungsformat und die Art zum Spezifizieren des Operanden für diese
Anweisungen sind beliebig.
-
(3) Datentransfer, der
durch die Ausführung
einer Anweisung bei der arithmetischen Logikoperationseinheit 250 des
Prozessorkerns 201 verursacht ist:
-
In
dem RISC-Typ-Prozessor kann nur das Register das Datentransferziel
der Operationsanweisung sein, so dass der Datentransfer in diesem
Fall nur der Datentransfer zwischen Registern auf der Registerdatei 230 sein
kann. Die Schlüsselpaarmarke des
Transferziels in diesem Fall ist die Marke des aktuell wirksamen
Schlüsselpaares.
-
Als
Nächstes
wird ein Mechanismus zum Schützen
von zu verbergenden Daten in dieser Ausführungsform beschrieben werden.
Der Datenschutz ist bei der Markenbeurteilungseinheit 252 der
arithmetischen Operationseinheit 250, der Markenbeurteilungseinheit 262 der
Speicherzugriffseinheit 260, und der Anweisungsausführungs-Steuereinheit 223 realisiert.
In irgendeiner derer wird gemäß den gemeinsamen
Markenbeurteilungsregeln bestimmt, ob oder nicht der Datentransfer
zugelassen wird. Die Kriterien für
die Beurteilung enthalten (1) einen Identifizierer zum Spezifizieren
der Datentransferquelle, (2) eine Schlüsselpaarmarke, die an die zu
transferierenden Daten angefügt
ist (auf die als "Datenmarke" verwiesen werden
wird), und (3) eine Schlüsselpaarmarke,
die das Transferziel haben sollte (auf welche als "Transferzielmarke" verwiesen werden
wird).
-
Die
minimal notwendigen Regeln für
die auf den Datentransfer bezogene Markenbeurteilung sind wie unten
aufgelistet. Es ist auch möglich,
weitere Regeln in Form eines Verweigerns des Transfers gemäß dem Bedarf
hinzuzufügen.
Außerdem
kann die Chiffrierverarbeitung in Verbindung mit dem Datentransfer
angewendet werden, wenn erforderlich.
- (1) Der
Datentransfer wird zugelassen, wenn er der Datentransfer zwischen
Innenspeichern ist, wo die Datenquelle der interne Cache ist, nur wenn
die Datenmarke mit der Transferzielmarke übereinstimmt. Daten werden
wie sie sind transferiert, und die Datenmarke wird dem Transferziel hinzugefügt.
- (2) Der Datentransfer wird bedingungslos zugelassen, wenn er
der Datentransfer zwischen Innenspeichern ist, wo die Transferquelle
nicht der interne Cache ist, und die Datenmarke als die Transferzielmarke
gesetzt ist.
- (3) Der Datentransfer wird bedingungslos zugelassen, wenn er
der Datentransfer von einem Innenspeicher an einen Außenspeicher
ist. In diesem Fall werden Daten durch Verwenden des Chiffrierschlüssels (Datenschlüssel) des
durch die Datenmarke spezifizierten Schlüsselpaares chiffriert. Und
zwar werden, in dem Fall eines Transferierens von Daten von dem
Innenspeicher an den Außenspeicher,
die Daten durch Verwenden des Datenschlüssels des durch die Datenmarke
spezifizierten Schlüsselpaares
bei der Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit 601 zuerst chiffriert.
Das Anweisungsholen wird für
das Lesen alleine verwendet, und es gibt keine Operation zum Schreiben
von Daten nach außen.
- (4) Der Datentransfer wird bedingungslos zugelassen, wenn er
der Datentransfer von einem Außenspeicher
an einen Innenspeicher ist. In diesem Fall werden Daten durch Verwenden
des Chiffrierschlüssels
des durch die Transferzielmarke spezifizierten Schlüsselpaares
dechiffriert. Und zwar werden, in dem Fall eines Transferierens von
Daten von dem Außenspeicher
an den Innenspeicher, wenn er der durch das Anweisungsholen verursachte
Datentransfer ist, die Daten durch Verwenden des Programmschlüssels des
durch die Transferzielmarke spezifizierten Schlüsselpaares über die Anweisungs-Verarbeitungseinheit 501 chiffriert.
Wenn er der durch irgendetwas anderes als das Anweisungsholen verursachte Datentransfer
ist, werden die Daten durch Verwenden des Datenschlüssels des
durch die Transferzielmarke spezifizierten Schlüsselpaares über die Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit 601 dechiffriert.
- (5) Der Prozessor dieser Ausführungsform wird nicht involviert
sein, wenn es der Datentransfer zwischen Außenspeichern ist. Folglich
wird der Datentransfer zwischen Außenspeichern ähnlich wie
in dem Stand der Technik ausgeführt
werden.
-
Als
Nächstes
wird das Kontext-Umschalten, das die Grundverarbeitung des Betriebssystems (OS,
Operating System) ist, mit Verweis auf 12 bis 14 für einen
beispielhaften Fall einer Verarbeitung mit Verwenden der oben beschriebenen Schutzfunktion
beschrieben werden. Wie in dem Obigen wird der beispielhafte Fall
eines Verwendens des R3000-Typ-Prozessors der MIPS-Technologie unten beschrieben
werden.
-
Hierbei
wird angenommen, dass das chiffrierte Programm "program-1" in dem Benutzermodus ausgeführt wird,
bei dem Schritt S1201. Der Programmschlüssel in "progkey-1" zum Dechiffrieren dieses Programms
und der Datenschlüssel "datakey-1", der zur Zeit eines
neuen Registrierens des Programmschlüssels erzeugt ist, werden als
das Schlüsselpaar
in der Schlüsselpaar-Tabelle 710 gespeichert.
Dieses Schlüsselpaar
wird durch die Schlüsselpaarmarke "tag-1" identifiziert.
-
Dann
nehme man an, dass eine Abweichung bzw. Ausnahme in dem Prozessor
aus Gründen
wie beispielsweise einer Unterbrechung von einer externen Quelle
auftritt. In diesem Fall sichert der Prozessor den aktuellen Wert
des Programmzählers
an das Abweichungswiedergewinnungsregister bei dem Schritt S1203.
An dieser Stelle wird auch die wirksame Schlüsselpaarmarke in das Abweichungswiedergewinnungsregister
gespeichert. Dann wird der Operationsmodus des Prozessors von dem
Benutzer-Modus zu
dem Kernel-Modus bei dem Schritt S1205 umgeschaltet. Der Markenwert
wird von dem Markenwert des wirksamen Schlüsselpaars zu dem Markenwert "tag-K" umgeschaltet, der
für den
Kernel-Modus reserviert ist. Durch Umschalten des Betriebsmodus
und des Markenwertes wird die Abweichungsverarbeitungsroutine, die
als ein Teil des OS bereitgestellt ist, bei dem Schritt S1207 aktiviert. Wenn
die Abweichungsverarbeitungsroutine beendet ist, wird der Betriebsmodus
wieder zu dem Benutzer-Modus umgeschaltet, um den Kontext bei dem Schritt
S1209 wiederzugewinnen.
-
13 zeigt
Details der Abweichungsverarbeitungsroutine des Schrittes S1207.
Zuerst wird eine Speicheranweisung zum Speichern des Kontextes des
Programms, das ausgeführt
wurde, wenn die Abweichung auftrat, d.h. der Kontext der Registerdatei 230,
in den externen Speicher bei dem Schritt S1301 ausgeführt. Außerdem wird
das durch die gespeicherte wirksame Schlüsselpaarmarkierung (tag-1)
spezifizierte Schlüsselpaar
von der Schlüsselpaar-Verwaltungseinheit 701 an
die Registerdatei 230 (durch die Operation zum Lesen eines
existierenden Schlüsselpaars)
bei dem Schritt S1303 ausgelesen. Man beachte, dass die an die Registerdatei 230 ausgelesenen
Schlüsselpaardaren
mit tag-K angefügt
wird, weil sie Daten des OS sind. Die ausgelesenen Schlüsselpaardaten
werden dann von der Registerdatei 230 an den Speicher bei
dem Schritt S1305 transferiert.
-
In
dieser Reihe von Operationen, wenn das OS die arithmetische Logikoperation
bezüglich
der Daten in dem Benutzer-Modus (an den tag-1 angefügt ist)
unsauber ausführt,
wird die Operation wegen der oben beschriebenen operationsbeschränkenden Bedingung
nicht zugelassen werden. Andererseits ist der Transfer der Daten
in dem Benutzer-Modus
an das Äußere der
durch die Datentransfer beschränkende
Bedingung zugelassene Datentransfer. An dieser Stelle wird der Kontext
des Benutzers außerhalb
der Registerdatei 230 gesichert, aber ob er bei dem Daten-Cache
(Innenspeicher) gesichert wird oder bei dem Außenspeicher gesichert wird,
hängt von
dem Zustand des Daten-Caches ab. Man beachte jedoch, dass das Sichern
des Kontextes von der Registerdatei 320 bereits von einem
Blickpunkt der Operation des OS vollendet ist. Dann wird bei dem Schritt
S1307 die Unterbrechungsverarbeitung ausgeführt.
-
14 zeigt
die Benutzerkontext-Wiedergewinnungsverarbeitung
(d.h., das Fortführen
des Programms), nachdem die Abweichungsverarbeitungsroutine vollendet
ist. Zuerst wird das in dem Speicher gesicherte Schlüsselpaar
von dem Speicher als Daten des OS bei dem Schritt S1401 geladen.
Dann wird dieses Schlüsselpaar
als das Schlüsselpaar, tag-1
entsprechend, in der Schlüsselpaar-Tabelle 710 (durch
die Operation zum Schreiben eines existierenden Schlüsselpaares)
bei dem Schritt S1403 gespeichert. Als Nächstes wird der in dem Speicher gesicherte
Kontext an die Registerdatei 230 bei dem Schritt S1405
wiedergewonnen. An dieser Stelle wird die Transferzielmarken-angehängte Ladeanweisung ausgeführt, und
tag-1 wird als die Transferzielmarke spezifiziert. Außerdem werden
der wiederzugewinnende Programmzählerwert
und die wirksame Schlüsselpaarmarke
(tag-1) in das Abweichungswiedergewinnungsregister bei dem Schritt
S1407 gespeichert. Schließlich
wird der Übergang
zu dem Benutzer- Modus
getätigt
durch Verwenden der Abweichungswiedergewinnungsanweisung (ERET-Anweisung
in MIPS-IV) bei dem Schritt S1409, und dieses vollendet die Kontext-Wiedergewinnung.
Der Datentransfer in dieser Reihe von Operationen ist auch der durch
die oben beschriebene Datentransfer-beschränkende Bedingung zugelassene
Datentransfer.
-
Die
Tatsache, dass mit tag-1 angefügte
Daten zu Zeiten des Kontext-Sicherns und Wiedergewinnens geschützt sind,
kann wie folgt bestätigt
werden. Während
der Ausführung
mit Verwenden der anderen Schlüsselpaarmarkierung
als tag-1 als die wirksame Schlüsselpaarmarkierung
können
Daten mit tag-1 erstens nicht ein Ziel der Operation gemäß der Datentransfer-beschränkenden
Bedingung sein. Während
der Ausführung
des Programms, das durch Verwenden des durch tag-1 spezifizierten Programmschlüssels dechiffriert
ist, ist der Wert der wirksamen Schlüsselpaarmarkierung andererseits
tag-1, so dass das OS die Verarbeitung innerhalb des Mikroprozessors
nicht feststellen kann. Wenn die ausgeführten Daten an den Außenspeicher
durch die Unterbrechung oder Ähnliches
transferiert werden, werden die Daten durch Verwenden des Datenschlüssels des
durch tag-1 spezifizierten Schlüsselpaares
chiffriert, und dieser Datenschlüssel
kann möglicherweise
nicht ohne Kenntnis des Geheimschlüssels des Mikroprozessors festgestellt
werden. Zur Zeit der Kontextwiedergewinnung werden Daten außerdem durch
die Markenangefügte
Ladeanweisung wiedergewonnen, und diese Marke ist unterschiedlich
von der wirksamen Schlüsselpaarmarke des
OS, so dass ein Zugriff von dem OS nicht zugelassen werden wird.
Umgekehrt, selbst wenn der wirksame Schlüssel des OS selbst geheim auf
tag-1 geändert
wird, die die Schlüsselpaarmarkierung
des wiedergewonnenen Benutzerkontextes ist, würde die eigene Anweisungssequenz
durch Verwenden des Programmschlüssels
dechiffriert werden, der dem OS unbekannt ist, so dass das OS die
unerwarteten Anweisungen ausführen
müsste.
-
Durch
Handhaben des Programmschlüssels und
des Datenschlüssels
als untrennbares Schlüsselpaar
wird es auf diese Weise möglich,
die Geheimdaten sogar vor dem in dem privilegierten Modus ausgeführten Programm
zu verbergen.
-
Mit
Verweis auf 15 wird nun die zweite Ausführungsform
eines Mikroprozessors gemäß der vorliegenden
Erfindung im Detail beschrieben werden.
-
15 zeigt
eine Konfiguration einer Schlüsselpaar-Tabelle 810,
die in dem Mikroprozessor gemäß der zweiten
Ausführungsform
der vorliegenden Erfindung verwendet werden soll. Die oben beschriebene
erste Ausführungsform
verwendet ein Verfahren zum Handhaben eines Programmschlüssels und
eines Datenschlüssels
in einer Eineindeutigkeitsbeziehung, wohingegen die zweite Ausführungsform
ein Verfahren zum Handhaben eines Programmschlüssels und einer Vielzahl von
Datenschlüsseln
in Zuordnung verwendet.
-
In
der Multitask-Umgebung kann es Fälle
geben, wo unterschiedliche Typen von Datenverarbeitungen für dasselbe
eine Programm ausgeführt
werden sollen. In solchen Fällen
gibt es nur einen Dechiffrierungsschlüssel des Programms (Programmschlüssel), aber
es gibt separate Datenschlüssel
zum Chiffrieren/Dechiffrieren der verarbeiteten Daten. Wenn jeder
dieser separaten Datenschlüssel
mit dem Programm gepaart und separat gespeichert wird, würde eine
riesige Speicherkapazität
erforderlich sein.
-
Aus
diesem Grund sind, in der zweiten Ausführungsform, der Index des Programmschlüssels und
der Index des Datenschlüssels
im Paar gespeichert, während
der Programmschlüssel
und der Datenschlüssel
separat gespeichert sind.
-
15 zeigt
eine beispielhafte Konfiguration der Schlüsselpaar-Tabelle 810 der
zweiten Ausführungsform,
die eine Schlüsseltabelle 820 zum
Speichern der Schlüssel
selbst und eine Schlüsselpaar-Nachschlagtabelle 830 umfasst,
die durch Indizes zum indirekten Nachschlagen der Schlüssel gebildet
ist.
-
Die
Schlüsseltabelle 820 ist
durch Arrays von Einträgen
gebildet, in denen der Programmschlüssel und die Datenschlüssel separat
eingetragen sind. Andererseits gibt die Schlüsselpaar-Nachschlagtabelle 830 die
Schlüsselpaare
an, aber anstelle eines direkten Speicherns der Schlüsselpaare,
ist sie durch den Index 831-1 des Programmschlüssels und
den Index des Datenschlüssels 831-2 gebildet.
Mit Verwenden dieser Indizes wird es möglich, ein bestimmtes Programm
und eine Vielzahl von durch dieses Programm zu verarbeitenden Daten
zu spezifizieren. Zum Beispiel können,
in dem Beispiel von 15, diese Indizes verwendet
werden, zum Kombinieren von durch Verwenden des Datenschlüssels #4
zu chiffrierenden/dechiffrierenden Daten und durch Verwenden des
Datenschlüssels
#5 zu chiffrierenden/dechiffrierenden Daten mit demselben durch Verwenden
des Programmschlüssels
#3 zu dechiffrierenden Programm.
-
Die
Operationen dieser Schlüsseltabelle 820 enthalten
die folgende Leseoperation und Schreiboperation.
-
(1) Schlüssellesen:
-
Der
gemeinsame Schlüssel
des Schlüsseleintrags,
der durch den Index spezifiziert ist, der als ein Parameter gegeben
ist, wird von der Schlüsseltabelle 820 ausgelesen.
-
(2) Schlüsselschreiben:
-
Zuerst
wird ein nicht verwendeter Schlüsseleintrag
zugeteilt. Dann wird der als ein Parameter gegebene gemeinsame Schlüssel (der
Programmschlüssel
oder der Datenschlüssel)
in diesen Schlüsseleintrag
gespeichert, und ein Index zum Spezifizieren des zugeteilten Schlüsseleintrags
wird ausgegeben.
-
Die
Operationen der Schlüsselpaar-Tabelle 810 sind
grundsätzlich
dieselben wie die der Schlüsselpaar-Tabelle 710 der
ersten Ausführungsform.
Da die Schlüsselpaar-Tabelle 810 in
die Schlüsseltabelle 820 und
die Schlüsselpaar-Nachschlagtabelle 830 aufgeteilt
ist, werden die Details des Schlüssellesens und
-schreibens jedoch wie folgt.
-
(1) Programmschlüssel-Lesen:
-
Dieses
ist die Leseoperation durch einen Anschluss, der mit der Anweisungs-Dechiffrier-Verarbeitungseinheit-Schnittstelle 703 verbunden
ist, in welcher die Schlüsselleseoperation
bezüglich
der Schlüsseltabelle 820 durch
Verwenden des Index des Programmschlüssels unter den durch das Indexpaar
in der Schlüsselpaar-Nachschlagtabelle 830 spezifizierten
Schlüsseln
ausgeführt
wird, und ihr Ergebnis wird ausgegeben.
-
(2) Datenschlüssel-Lesen:
-
Die
ist die Leseoperation durch einen Anschluss, der mit der Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit-Schnittstelle 704 verbunden
ist, in welcher die Schlüsselleseoperation
bezüglich
der Schlüsseltabelle 820 durch
Verwenden des Index des Datenschlüssels unter den durch das Indexpaar in
der Schlüsselpaar-Nachschlagtabelle 830 spezifizierten
Schlüsseln
ausgeführt
wird, und ihr Ergebnis wird ausgegeben.
-
(3) Schlüsselpaar-Lesen:
-
Dies
ist die Leseoperation durch einen Anschluss, der mit der Schlüsselpaar-Steuereinheit 720 verbunden
ist, in welcher sowohl der Programmschlüssel als auch der Datenschlüssel des
durch das Indexpaar in der Schlüsselpaar-Nachschlagtabelle 830 spezifizierten
Schlüsselpaares
von der Schlüsseltabelle 820 durch
Verwenden der jeweiligen Indizes ausgelesen werden, und die erhaltenen
zwei Schlüssel
werden ausgegeben.
-
(4) Schlüsselpaar-Schreiben:
-
Dieses
ist die Schreiboperation durch einen Anschluss, der mit der Schlüsselpaar-Steuereinheit 720 verbunden
ist, in welcher der Programmschlüssel
und der Datenschlüssel,
als Parameter gegeben, separat in der Schlüsseltabelle 820 durch
die Schlüsselschreiboperation
der Schlüsseltabelle 820 gespeichert
werden. Die Indizes der als ein Ergebnis erhaltenen Schlüsseleinträge werden
in den Programmschlüsselindex
und den Datenschlüsselindex
in der Schlüsselpaar-Nachschlagtabelle 830 gespeichert.
-
Die
Schlüsselpaar-Tabelle 810 hat
Schnittstellen zum Bereitstellen derselben Operation aus einem Blickpunkt
der Schlüsselpaar-Steuereinheit 720. Folglich
sind die drei Operationen der Schlüsselpaar-Steuereinheit 720 einschließlich der
Registrierung eines neuen Schlüsselpaares,
des Lesens eines existierenden Schlüsselpaares, und des Schreibens
eines existierenden Schlüsselpaares,
dieselben wie in der ersten Ausführungsform.
-
In
der zweiten Ausführungsform
sind jedoch die folgenden Operationen zu der Schlüsselpaar-Tabelle 810 und
der Schlüsselpaar-Steuereinheit 720 neben
den Operationen der ersten Ausführungsform hinzugefügt, um einen
Mechanismus bereitzustellen, durch den ein Prozess eine Vielzahl
von Datenschlüsseln
verwendet.
-
Zunächst ist
die zu der Schlüsselpaar-Tabelle 810 hinzuzufügende Operation
wie folgt.
-
* Datenschlüssel-Schreiben:
-
Dies
ist die Schreiboperation durch einen Anschluss, der mit der Schlüsselpaar-Steuereinheit 720 verbunden
ist, in welcher der Programmschlüsselindex,
der Datenschlüssel,
und die Schlüsselpaarmarke
als Parameter empfangen werden.
-
Zuerst
wird der Datenschlüssel
in die Schlüsseltabelle 820 durch
die Schlüsselschreib-Operation der
Schlüsseltabelle 820 gespeichert.
Der Index des als ein Ergebnis erhaltenen Schlüsseleintrags und der als ein
Parameter empfangene Programmschlüsselindex werden in den Datenschlüsselindex 831-2 bzw.
den Programmschlüsselindex 831-1 des Schlüsselpaares
gespeichert, das durch die Schlüsselpaarmarke
als der Index spezifiziert ist.
-
Als
Nächstes
ist die der Schlüsselpaar-Steuereinheit 720 hinzuzufügende Operation
wie folgt.
-
* Registrierung eines
neuen Datenschlüssels:
-
Hierbei
werden eine erste Schlüsselpaarmarke
zum Spezifizieren des Prozesses, der den Datenschlüssel besitzt,
eine zweite Schlüsselpaarmarke
zum Spezifizieren des neu zu registrierenden Datenschlüssels, und
die Schlüsseldaten,
in welchen der zu registrierende Datenschlüssel durch Verwenden des Programmschlüssels der
ersten Schlüsselpaarmarke
chiffriert werden, von dem Prozessorkerns 201 empfangen.
Die Schlüsseldaten
werden in das chiffrierte Schlüsselpaarregister 726 gespeichert,
selbst wenn es nicht die Schlüsselpaardaten sind.
-
Zuerst
wird die Operation zum Lesen eines Schlüsselpaares bezüglich der
Schlüsseltabelle 820 durch
Verwenden der ersten Schlüsselpaarmarke
als den Index ausgeführt,
und das Schlüsselpaar
wird an das Schlüsselpaarregister 724 ausgelesen.
-
Die
Schlüsselpaar-Chiffrier-Verarbeitungseinheit 725 dechiffriert
Daten auf dem chiffrierten Schlüsselpaarregister 726 durch
Verwenden des Programmschlüssels 724-1 auf
dem Schlüsselpaarregister 724 durch
Betrachten dieser Daten als den chiffrierten Schlüssel, und
speichert ihr Ergebnis an den Datenschlüssel 724-2 des Schlüsselpaarregisters 724.
-
Die
Schlüsselpaar-Steuereinheit 720 registriert
den Index des Programmschlüssels,
der durch Verwenden der ersten Schlüsselpaarmarke und des Datenschlüssels 724-2 des
Schlüsselpaarregisters 724 ausgelesen
ist als das Schlüsselpaar
durch Verwenden der Operation zum Schreiben eines Datenschlüssels der
Schlüsselpaar-Tabelle 810.
-
Durch
diese Operation kann ein neues Schlüsselindexpaar, in welchem der
Index des registrierten Datenschlüssels und der Index des mit
diesem Datenschlüssel
zu verwendenden Programmschlüssels
gepaart sind, gebildet werden.
-
Dieses
ist, mit anderen Worten, die Operation zum Gruppieren einer Vielzahl
von Schlüsselpaaren,
die den gemeinsamen Programmschlüssel
gemeinsam nutzen. Darüber
hinaus ist die den Programmschlüssel
verwendende Chiffrierverarbeitung in der Operation zum Hinzufügen des
Schlüsselpaares
zu der Gruppe erforderlich, so dass es nur für diese Prozesse möglich ist,
die den Programmschlüssel kennen.
-
Die
oben beschriebene Datenschlüssel-Registrierungsoperation
ergibt die durch Verwenden des Programmschlüssels chiffrierten Daten, aber
es ist auch möglich,
diese Operation zu modifizieren, so dass sie die Daten ergibt, die
durch Verwenden eines anderen, von dem Programmschlüssel unterschiedlichen
Schlüssels
chiffriert sind, so wie dem öffentlichen
Schlüssel
des Prozessors oder einem anderen Datenschlüssel. In diesem Fall ist sie
vielmehr die Operation zum Gruppieren gemäß einem anderen Schlüssel als
Gruppieren gemäß dem Programmschlüssel, so
dass es anwendbar auf die Situation ist, wo der Schlüssel unter
Programmen gemeinsam genutzt werden soll.
-
In
der ersten Ausführungsform
ist ein begrenzender Mechanismus beschrieben worden, in dem die Übereinstimmung
der Schlüsselpaarmarkenwerte
als eine Bedingung für
den Erfolg des Datentransfers und der Betriebsmanipulation festgelegt ist.
In der zweiten Ausführungsform
sollen der Datentransfer und die Betriebsmanipulation für die Schlüsselpaare
zugelassen werden, die durch denselben Prozess erzeugt sind, selbst
wenn die Schlüsselpaarmarken
unterschiedlich sind. Und zwar werden, zusätzlich zu dem in der ersten
Ausführungsform
verwendeten Schlüsselpaarmarkenwert
selbst, der Programmschlüsselindex
und der Datenschlüsselindex des
durch diese Schlüsselpaarmarke
spezifizierten Schlüsselpaares
auch als das Kriterium zum Beurteilen verwendet, ob der Datentransfer
oder die Betriebsmanipulation zugelassen ist oder nicht.
-
Wie
für das
Kontext-Umschalten durch das Betriebssystem, ist der für die erste
Ausführungsform oben
beschriebene beispielhafte Fall auch auf die zweite Ausführungsform
anwendbar.
-
Man
beachte, dass die erste und zweite Ausführungsform oben durch Verwenden
von durch funktionale Elemente gebildete Konfigurationen beschrieben
worden sind, aber diese Funktionen stellen nur die logische Aufteilung
dar und geben nicht die physikalische Anordnung der funktionalen
Elemente auf dem Prozessor an. Zum Beispiel wird das Schlüsselpaar
als eine Menge in einer Tabelle in den obigen Ausführungsformen
gespeichert, aber die physikalische Anordnung auf dem Prozessor
kann so sein, dass z.B. eine die Programmschlüssel speichernde Tabelle in
einer Nähe
der Anweisungs-Dechiffrier-Verarbeitungseinheit bereitgestellt sein
soll, während
eine die Datenschlüssel
speichernde Tabelle in einer Nähe
der Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit
bereitgestellt sein soll.
-
Wie
oben beschrieben, werden gemäß der vorliegenden
Erfindung der Programmschlüssel
zum Dechiffrieren des Programms und der Datenschlüssel zum
Chiffrieren/Dechiffrieren der Daten als ein kryptographisch untrennbares
Paar innerhalb des Prozessors gehandhabt, so dass es für den Prozessor
möglich
wird, Prozesse zu schützen,
die tatsächlich
das Programm ausführen,
ohne Intervention durch das Betriebssystem. Folglich wird es möglich, die
Geheiminformation des Programms nicht nur vor anderen Benutzerprogrammen
sondern auch vor dem Betriebssystem zu verbergen.
-
Außerdem ist,
gemäß der vorliegenden
Erfindung, eine Marke zum Identifizieren des Prozesses, der ein
Ziel des Schutzes durch den Prozessor ist, an Daten innerhalb des
Prozessors angefügt,
so dass es möglich
wird, das Umschalten von Prozessen auszuführen während eines Aufrechterhaltens der
Schutzzieldaten in der dechiffrierten Form innerhalb des Innenspeichers.
-
Unter
der Annahme, dass das Programmchiffrierschlüssel-Verteilungsschema das Kryptosystem für einen öffentlichen
Schlüssel
verwendet, schlägt
die vorliegende Erfindung nämlich
im Grunde ein Schlüsselverwaltungsschema
vor, in dem der Programmschlüssel
(erster Schlüssel)
zum Dechiffrieren des chiffrierten Programms und der Datenschlüssel (zweiter
Schlüssel)
zum Chiffrieren/Dechiffrieren von Daten, die durch dieses Programm
verarbeitet werden, das durch den Mikroprozessor erzeugt wird, in
einer Zuordnung als das Schlüsselpaar
aufrecht erhalten werden.
-
Gemäß diesem
Schema dechiffriert der Mikroprozessor das chiffrierte Programm
durch Verwenden des ersten Schlüssels,
erzeugt den dem ersten Schlüssel
entsprechenden zweiten Schlüssel, und
vergibt einen Identifizierer an eine Kombination dieser Schlüssel. Der
erste Schlüssel
und der zweite Schlüssel
werden in die Schlüsselpaar-Tabelle
als das Schlüsselpaar
geschrieben, und der Identifizierer wird verwendet durch die nachfolgende
Verarbeitung für
den Zweck eines Identifizierens dieses Schlüsselpaares. Während der
Ausführung
des dechiffrierten Programms wird der Identifizierer angegeben,
der dem Schlüsselpaar
des ersten Schlüssels
gegeben ist, der beim Dechiffrieren dieses Programms verwendet ist.
Wenn die Ausführung
des dechiffrierten Programms durch die Unterbrechung oder Ähnliches unterbrochen
werden soll, werden die durch dieses Programm verarbeiteten Daten
mit Verwenden des dem aktuellen Identifizierer entsprechenden zweiten Schlüssels chiffriert, und
an den Außenspeicher
oder Ähnliches
gesichert. Das Zugriffsrecht bezüglich
der verarbeiteten Daten wird gemäß der Übereinstimmung
des Schlüsselpaares
beurteilt, so dass der Schutz von Daten unter Prozessen kryptographisch garantiert
wird.
-
Um
dieses Schema zu realisieren, hat der Mikroprozessor der vorliegenden
Erfindung eine Anweisungs-Dechiffrier-Verarbeitungseinheit zum Dechiffrieren
des chiffrierten Programms durch Verwenden des ersten Chiffrierschlüssels (Programmschlüssel), eine
Daten-Chiffrierung/Dechiffrier-Verarbeitungseinheit
zum Chiffrieren/Dechiffrieren der Daten, die durch das dechiffrierte
Programm (d.h. den Ausführungszustand
des Prozesses) verarbeitet sind, durch Verwenden des zweiten Chiffrierschlüssels (Datenschlüssel), eine
Schlüsselpaar-Verwaltungseinheit
mit einem ersten Speicherbehälter
(Schlüsselpaar-Tabelle)
zum Speichern des ersten und zweiten Schlüssels im Paar, und einen zweiten
Speicherbehälter
(Registerdatei) zum Speichern einer Marke (Identifizierer) zum Identifizieren
dieses Schlüsselpaares
zusammen mit programmbezogenen Daten.
-
Der
Programmschlüssel
und der Datenschlüssel
werden als untrennbares Paar gespeichert, und in dem Fall eines
Betreibens dieses Paares von der Programmseite, kann dieses Schlüsselpaar
nur in einer chiffrierten Form betrieben werden, die durch Verwenden
des für
den Prozessor spezifischen Geheimschlüssels erhalten ist. Auf diese
Weise wird es möglich,
die Analyse des Programms selbst kryptographisch schwierig zu machen,
und auch die Analyse des Ausführungszustands
des Programms schwierig zu machen, selbst von dem Betriebssystem
aus, zu einer Zeit eines Ausführens
des chiffrierten Programms. Außerdem
kann, durch Anfügen
einer Marke zum Identifizieren des Schlüsselpaares an jeweilige entsprechende
Daten, der Datentransfer mit Verwenden der Chiffrierverarbeitung
innerhalb einer Spanne ausgeführt
werden, die zum Erhalten des Geheimnisses minimal erforderlich ist.
-
Der
Programmschlüssel
zum Dechiffrieren des chiffrierten Programms ist durch das Kryptosystem
für einen öffentlichen
Schlüssel
gegeben. Der Mikroprozessor hat auch eine Datenschlüssel-Erzeugungseinheit,
und erzeugt den Datenschlüssel
zum Chiffrieren/Dechiffrieren von Daten, die durch das Programm
verarbeitet werden sollen, das durch diesen Programmschlüssel dechiffriert
ist, wenn der neue Programmschlüssel
gegeben ist. Das auf diese Weise erzeugte Schlüsselpaar wird in der Schlüsselpaar-Tabelle
gespeichert.
-
Der
Mikroprozessor hat einen dritten Speicherbereich (Systemregister)
zum Speichern des wirksamen Schlüsselpaar-Identifizierers,
der ein Identifizierer des wirksamen Schlüsselpaares ist, das durch das
aktuell ausgeführte
Programm verwendet wird. Wenn ein Übergang zu dem Kernel-Modus aufgrund der
Unterbrechung oder von Ähnlichem
getätigt
wird, während
das Programm in dem Benutzer-Modus ausgeführt wird, wird der wirksame Schlüsselpaar-Identifizierer
auf einen spezifischen, den Kernel-Modus angebenden Wert umgeschaltet. Auf
diese Weise können
das Programm des Benutzer-Modus und das Unterbrechungsverarbeitungsprogramm
klar getrennt werden. Wenn das Unterbrechungsverarbeitungsprogramm
die Daten, die in dem zweiten Speicherbereich durch das Programm
des Benutzer-Modus
gespeichert sind, nach außen
sichert, transferiert die Daten-Chiffrier/Dechiffrier-Verarbeitungseinheit
die Daten an den Außenspeicher durch
Verwenden des Chiffrierschlüssels,
der durch den an diese Daten angefügten Identifizierer spezifiziert
ist. Auf diese Weise können
Daten sicher geschützt
werden, selbst wenn die Abweichung bzw. Ausnahme aufgrund der Unterbrechung
oder von Ähnlichem
auftritt.
-
Die
Schlüsselpaar-Tabelle
speichert eine Vielzahl von Schlüsselpaaren,
wobei jedes Schlüsselpaar
durch Paaren des ersten Schlüssels
(Programmschlüssel)
und des zweiten Schlüssels
(Datenschlüssel)
in einer Eineindeutigkeit gebildet ist.
-
Alternativ
kann die Schlüsselpaar-Tabelle
einen Nachschlag-Speicherungsbereich
zum Speichern eines Index des ersten Schlüssels und eines Index des zweiten
Schlüssels
in Zuordnung, und einen Schlüsselspeicherungsbereich
zum getrennten Speichern des ersten und zweiten Schlüssels enthalten.
In diesem Fall hat der Schlüsselindex
selbst eine kleine Größe, so dass
für den
Nachschlag-Speicherungsbereich nur eine kleine Speicherkapazität erforderlich
ist. Außerdem
sind der separat gespeicherte erste und zweite Schlüssel durch
die Indizes spezifiziert, so dass die Indizes zum Spezifizieren
einer Information von Schlüsselpaaren
durch angemessenes Kombinieren des Programmschlüssels und des Datenschlüssels der
verarbeiteten Daten verwendet werden können, z.B. in dem Fall, wo
eine Vielzahl unterschiedlicher Daten bezüglich desselben Programms in
der Multitask-Umgebung
verarbeitet werden.
-
Der
Mikroprozessor hat auch eine Speicherzugriffseinheit, die mit dem
zweiten Speicherbereich und dem dritten Speicherbereich verbunden
ist. Die Speicherzugriffseinheit hat eine Datentransfer-Beurteilungseinheit
zum Beurteilen, ob der Datentransfer zugelassen ist oder nicht,
gemäß einem
Identifizierer des Schlüsselpaares,
das an die zu transferierenden Daten angefügt ist, und dem wirksamen Schlüsselpaaridentifizierer.
-
Der
Mikroprozessor hat auch eine Logikoperationseinheit, die mit dem
zweiten Speicherbereich und dem dritten Speicherbereich verbunden
ist. Die Logikoperationseinheit hat eine Operationsausführungs-Beurteilungseinheit
zum Beurteilen, ob die Operationsausführung zugelassen ist oder nicht,
gemäß einem
an den Operanden der Operation angefügten Identifizierer und dem
wirksamen Schlüsselpaar-Identifizierer.
-
Auf
diese Weise kann die Sicherheit der Daten weiter verbessert werden
durch Anfügen
des Identifizierers zum Identifizieren des Schlüsselpaares an die innerhalb
des Mikroprozessors handzuhabenden Daten, und Verwenden des Identifizierers des
an die Daten angefügten
Schlüsselpaares
zum Beurteilen des Zugriffsrechts oder der Operationsausführungsmöglichkeit
zu einer Zeit des Datentransfers oder der Betriebsmanipulation.
-
Der
zweite Speicherbereich ist durch eine Vielzahl von Einträgen gebildet,
und jeder Eintrag hat programmbezogene Daten und einen Identifizierer zum
Identifizieren des für
diese Daten verwendeten Schlüsselpaares.
Mit dieser Konfiguration, wenn die Verarbeitung in dem Kernel-Modus
aufgrund der Unterbrechung angefordert wird, und der wirksame Schlüsselpaar-Identifizierer
in dem dritten Speicherbereich einen den Kernel-Modus angebenden
Wert annimmt, wird es z.B. möglich,
nur die Daten, des gewünschten
Eintrags und den entsprechenden Identifizierer zu chiffrieren und
diese an den Außenspeicher
zu sichern. Zur Zeit des Unterbrechungsauftretens wird es nämlich möglich, zusätzlich zu
dem Speichern der gesamten Daten in dem zweiten Speicherbereich,
nur einen Teil der Daten in dem zweiten Speicherbereich zu speichern.