-
HINTERGRUND
DER ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf eine Technik zum Verbessern
einer Sicherheit in einer Halbleitervorrichtung, wie beispielsweise
einer LSI-Vorrichtung, verwendet in einem mittels Schlüssel installierten System.
-
Die
Japanische Patentanmeldung No. 2001-286881, angemeldet durch den
Anmelder der vorliegenden Unterlagen, offenbart eine Technik zum
Verbessern der Sicherheit und der Vertraulichkeit eines Schlüssels in
einem mittels Schlüssel
installierten System, verglichen mit herkömmlichen Techniken.
-
Eine
Aufgabe der vorliegenden Erfindung ist es, eine Hochsicherheits-Halbleitervorrichtung
zu schaffen. Eine andere Aufgabe der vorliegenden Erfindung ist
es, ein Hochsicherheits-Inhalt-Wiedergabeverfahren zu schaffen.
-
Diese
Aufgabe wird durch die Ansprüche
1, 9 und 17 gelöst.
-
Das
Dokument D1 befasst sich mit dem Schützen einer Eigentums-Software
gegen eine Veröffentlichung
und eine nicht autorisierte Benutzung. Sie erreicht dieses Ziel
durch zuerst Verteilen der Software, die unter der Steuerung eines
Verteilungs-Chiffriereinrichtungsschlüssels verschlüsselt worden
ist. Bevor diese Programme verwendet werden können, müssen sie kundenspezifisch dadurch
angepasst werden, dass sie unter der Steuerung eines zweiten Chiffriereinrichtungsschlüssels zurückverschlüsselt werden;
solche kundenspezifischen Programme werden nicht auf irgendeinem
Computersystem, ein anderes als ein solches, das mit einem Prozessor-Chip
aufgebaut ist, der einen Krypto-Mikroprozessor einsetzt, laufen.
Der Krypto-Mikroprozessor ist in der Lage, diese Zurückverschlüsselung
durchzuführen.
Der kundenspezifische Vorgang erfordert einen Zugang zu einem entfernten
Austausch-Datenbanksystem mittels eines Modems, um diese Aufgabe
durchzuführen.
Deshalb ist ersichtlich, dass die D1 mit einem Verfahren befasst
ist, das sehr unterschiedlich zu demjenigen ist, das in der vorliegenden
Erfindung beschrieben ist. Es befasst sich nicht mit der Fähigkeit, den
Krypto-Prozess innerhalb des Prozessors durch Unterteilen davon
in Sequenzen unter der Steuerung des Werts, enthalten in einem Mode-ID-Register,
zu steuern.
-
Das
Dokument D2 befasst sich mit einem Programmschlüssel, gehalten innerhalb eines
Mikroprozessors, um ein Programm zu entschlüsseln, und einem Datenschlüssel zum
Verschlüsseln/Entschlüsseln von Daten,
die durch das Programm verarbeitet werden. Beide dieser Schlüssel werden
als ein kryptographisch untrennbares Paar innerhalb des Mikroprozessors
behandelt, so dass es für
den Mikroprozessor möglich
wird, die Prozesse, die tatsächlich
das Programm ausführen,
ohne den Eingriff des Betriebssystems zu schützen, und es wird zusätzlich möglich, geheime
Informationen des Programms nicht nur gegenüber anderen Benutzer-Programmen,
sondern auch gegenüber
dem Betriebssystem, zu verbergen.
-
Die
vorliegende Erfindung zieht dieses Konzept weiterhin dahingehend
heran, dass es sich auf eine Technik zum Verbessern der Sicherheit
innerhalb der Halbleitervorrichtung bezieht, durch Unterteilen der
Operationen, durchgeführt
durch einen Verschlüsselungsabschnitt,
in eine Vielzahl von Sequenzen, wobei jede davon unabhängig oder
in Kombination mit einer anderen unter der Steuerung eines Verschlüsselungs-Steuerabschnitts
ausgeführt
werden kann. D2 beruht auf einem Bit, um zu Steuern, ob kryptographische
Funktionen global innerhalb des Systems freigegeben oder gesperrt
sind; es ist nicht möglich,
die Ausführung
einer Sequenz zuzulassen, während
nicht die Ausführung
einer anderen Sequenz zugelassen wird, so dass eine nicht autorisierte
Ausführung
bestimmter Sequenzen nicht verhindert werden kann. D2 ist demzufolge
weit von den Offenbarungen der vorliegenden Erfindung entfernt.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
1 zeigt
ein Blockdiagramm, das den Aufbau einer sicheren LSI-Vorrichtung
mit einer Halbleitervorrichtung gemäß einer Ausführungsform
der vorliegenden Erfindung darstellt.
-
2 stellt
den gesamten Ablauf einer Entwicklung und Herstellung, die die sichere
LSI-Vorrichtung der 1 verwenden, dar.
-
3 zeigt
ein Flussdiagramm eines gesamten Verfahrensablaufes eines Boot-Programms.
-
4 zeigt
ein Flussdiagramm einer Anfangswert-Einstellungsverarbeitung SZ1.
-
5 stellt
einen Verschlüsselungsabschnitt
und Komponenten, die dazu relevant sind, in der sicheren LSI-Vorrichtung
der 1, dar.
-
6 stellt
ein Verfahren zum Einstellen eines gemeinsamen Busses und eines
privaten Busses in der sicheren LSI-Vorrichtung der 1 dar.
-
7 stellt
einen externen Host I/F und Komponenten, die dazu relevant sind,
in der sicheren LSI-Vorrichtung der 1, dar.
-
8 stellt
einen Betrieb des externen Host I/F in dem Produkt-Operations-Modus
dar.
-
9 stellt
eine Zugangssteuerung eines sicheren Speichers dar.
-
10 stellt
den ersten Teil eines Datenflusses eines normalen Boot-Vorgangs
in dem Produkt-Operations-Modus dar.
-
11 stellt
den zweiten Teil des Datenflusses des normalen Boot-Prozessors in
dem Produkt-Operations-Modus dar.
-
BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSFORMEN
-
Nachfolgend
wird eine Ausführungsform
der vorliegenden Erfindung unter Bezugnahme auf die Zeichnungen
beschrieben.
-
1 zeigt
ein Blockdiagramm, das einen inneren Aufbau einer sicheren LSI-Vorrichtung gemäß der vorliegenden
Ausführungsform
darstellt. In 1 kann die sichere LSI-Vorrichtung 1 mit
einem externen Speicher 100 (einschließlich eines Flash-Speichers 101 und
eines RAM 102) über
einen externen Bus 120 verbunden sein. Der Betriebs-Modus der sicheren
LSI-Vorrichtung 1 kann durch Zuführen einer Modus-ID zu der
sicheren LSI-Vorrichtung 1 eingestellt werden.
-
Die
Hauptkomponenten der sicheren LSI-Vorrichtung 1, die für die vorliegende
Ausführungsform
relevant sind, werden kurz beschrieben.
-
Die
sichere LSI-Vorrichtung 1 besitzt einen sicheren Speicher
(z.B. einen sicheren Flash) 10, umfassend einen nicht wieder
beschreibbaren Bereich 11. Der nicht wieder beschreibbare
Bereich 11 umfasst ein Schreib-Zeichen 12 für den nicht
wieder beschreibbaren Bereich. Wenn einmal eine Modus-ID in dem
sicheren Speicher 10 geschrieben ist, wird der Zeichen-Wert
des Schreib-Zeichens 12 für den nicht wieder beschreibbaren
Bereich von „WRITABLE" zu „WRITTEN" geändert, und
ein Schreiben in dem nicht wieder beschreibbaren Bereich 11 wird
danach verboten. Es sollte angemerkt werden, dass der sichere Speicher 10 aus
einem Flash-Speicher in der vorliegenden Ausführungsform auf gebaut ist, allerdings
ist die vorliegende Erfindung nicht hierauf beschränkt. Irgendein
Typ eines Speichers kann verwendet werden, solange wie er nicht
flüchtig ist.
-
Ein
Verschlüsselungsabschnitt 2 führt eine
Verschlüsselung
und Entschlüsselung
von Programmen durch. Der Verschlüsselungsabschnitt 2 umfasst
einen arithmetischen Privatschlüssel-Verarbeitungsabschnitt (arithmetischen
Verschlüsselungs-Verarbeitungsabschnitt) 20,
eine Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung
(Verschlüsselungs-Steuerabschnitt) 30 und
einen Speicherabschnitt 35 zum Speichern einer Programm-Verschlüsselungs-Grundstruktur
(Seed). Der arithmetische Privatschlüssel-Verarbeitungsabschnitt 20 umfasst
Register zum Speichern von verschiedenen Schlüsseln, oder dergleichen, und ist
dazu in der Lage, eine Vielzahl von Sequenzen auszuführen, umfassend
ein Verfahren zum Verschlüsseln oder
Entschlüsseln
von Programmen. Die Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 bestimmt,
ob eine Ausführung
jeder der Sequenzen, die durch den arithmetischen Privatschlüssel-Verarbeitungsabschnitt 20 ausgeführt werden
können,
zuzulassen ist, und verhindert den Betrieb des arithmetischen Privatschlüssel-Verarbeitungsabschnitts 20 in
Bezug auf eine Sequenz, deren Ausführung dahingehend bestimmt
wird, dass sie unzulässig
ist. Die Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 umfasst
ein Modus-ID-Speicher-Register 31. Die Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 bestimmt,
ob eine Ausführung
jeder Sequenz basierend auf dem Wert der Modus-ID, gespeichert in
dem Modus-ID-Speicher-Register 31,
zuzulassen ist. Weiterhin umfasst die Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 ein
Verschlüsselungs-Typ-Identifizierer-Speicher-Register 32 zum
Speichern eines Verschlüsselungs-Typ-Identifizierers.
Der Verschlüsselungs-Typ-Identifizierer
zeigt an, welcher Algorithmus und welche Schlüssellänge zum Verschlüsseln eines
Schlüssels
oder Programms verwendet werden. Details der Struktur und der Betriebsweise
des Verschlüsselungsabschnitts 2 werden
später
beschrieben werden.
-
Eine
Modus-Abfolgesteuereinrichtung 40 umfasst auch ein Modus-ID-Speicher-Register 41.
Die Modus-Abfolgesteuereinrichtung 40 steuert die Betriebsweise
einer externen Host-Schnittstelle (I/F) 50, d.h. welche
Schnittstelle zum Lesen eines Programms oder von Daten, gespeichert
in dem externen Speicher 100, zu verwenden ist, entsprechend
einer Modus-ID, gespeichert in dem Modus-ID-Speicher-Register 41,
und des Werts eines Jumpers 43. Mit dieser Anordnung ist
es möglich,
zu steuern, ob ein grobes (binäres)
Programm, gespeichert in dem externen Speicher 100, ausgeführt werden
kann oder nicht. Die Modus-Abfolge Steuereinrichtung 40 umfasst
weiterhin ein Verschlüsselungs-Typ-Identifizierer-Speicher-Register 42 zum
Speichern eines Verschlüsselungs-Typ-Identifizierers.
Der Verschlüsselungs-Typ-Identifizierer
zeigt an, welches Verfahren für
eine Verschlüsselung
eines Schlüssels
verwendet wird.
-
Die
externe I/F 50 sendet/empfängt ein Programm oder Daten
zu/von dem externen Speicher 100 über entweder einen Durchgangsabschnitt 52 oder
eine Kryptographiemaschine 53 für eine Programm-Entschlüsselung
(nachfolgend bezeichnet als eine „Programm-Entschlüsselungs-Kryptographie-Engine" 53), die
in einem Programm-Verarbeitungsabschnitt 51 enthalten
ist, und einen Durchgangsabschnitt 56 und eine Kryptographie-Engine 58 für eine Daten-Verschlüsselung/Entschlüsselung
(nachfolgend bezeichnet als „Daten-Verschlüsselungs/Entschlüsselungs-Kryptographie-Engine" 58), die
indem Daten-Verarbeitungsabschnitt 55 enthalten sind, gemäß der Steuerung
durch die Modus-Abfolgesteuereinrichtung 40.
-
Ein
Programmeingang über
den Durchgangsabschnitt 52 wird nicht innerhalb der sicheren
LSI-Vorrichtung 1 mit Ausnahme dann ausgeführt, wenn
sich die sichere LSI-Vorrichtung 1 in
einem Administrator-Modus befindet oder mit der Anwendungs-Programm-Entwicklung
befasst ist (beschrieben später).
Das bedeutet, dass der Durchgangsabschnitt 52 dann aktiviert
wird, wenn ein grobes (binäres)
Programm verschlüsselt
wird oder wenn ein bereits verschlüsseltes Programm wieder verschlüsselt wird,
und zwar unter Verwendung eines anderen Schlüssels. Die sichere LSI-Vorrichtung 1 ist
so strukturiert, dass die Betriebsweise der sicheren LSI-Vorrichtung 1 nicht
zu einem Programm fortschreitet, das über den Durchgangsabschnitt 52 eingegeben ist,
mit der Ausnahme dann, wenn sich die sichere LSI-Vorrichtung 1 in
dem Administrator-Modus befindet oder mit einer Anwendungs-Programm-Entwicklung
befasst ist (beschrieben später).
Deshalb kann, zum Beispiel, gerade dann, wenn die sichere LSI-Vorrichtung 1,
aufgebaut als ein kommerzielles Produkt, ein grobes (binäres) Programm über den
Durchgangsabschnitt 52 liest, die sichere LSI-Vorrichtung 1 nicht
das grobe (binäre) Programm
ausführen.
-
Ein
Boot-ROM 60 speichert ein Boot-Programm zum Steuern eines
Boot-Up-Vorgangs
der sicheren LSI-Vorrichtung 1. Ein HASH-Berechnungsabschnitt 70 berechnet einen
HASH-Wert zum Verifizieren der Gültigkeit
eines Programms, das in die sichere LSI-Vorrichtung 1 eingelesen ist.
-
Weiterhin
sind, in dem externen Speicher 100, Programme in dem Flash-Speicher 101 gespeichert, und
Daten (Inhalte) sind in dem RAM 102 gespeichert. Das externe
Tool 110 speichert verschiedene Anfangswerte, die zu dem
sicheren Speicher 10 des ersten Boot-Up der sicheren LSI-Vorrichtung 1 übertragen
sind und darin gespeichert sind. Der Typ des Anfangswerts variiert
in Abhängigkeit
von einem ausgewählten
Betriebs-Modus.
-
2 stellt
den gesamten Ablauf einer Entwicklung und Herstellung, die die sichere
LSI-Vorrichtung 1 der 1 verwendet,
dar. Wie in 2 dargestellt ist, arbeitet
die sichere LSI-Vorrichtung 1 in den folgenden vier Betriebs-Modi:
Administrator-Modus (Modus-ID: 00), Schlüssel-Erzeugungs-Modus (Modus-ID:
01), Entwicklungs-Modus (Modus-ID:
10) und Produkt-Betriebs-Modus (Modus-ID: 11).
-
Wenn
auf den Administrator-Modus eingestellt wird, arbeitet die sichere
LSI-Vorrichtung 1 als
eine LSI-Vorrichtung für
einen Administrator (nachfolgend bezeichnet als „Administrator-LSI-Vorrichtung"). In der Administrator-LSI-Vorrichtung
wird ein Schlüssel-Erzeugungs-Programm
entwickelt (PA1) und das entwickelte Schlüssel-Erzeugungs-Programm wird unter
Verwendung irgendeines Schlüssel-Erzeugungs-Schlüssels verschlüsselt (PA2).
-
Wenn
auf den Schlüssel-Erzeugungs-Modus
eingestellt wird, arbeitet die sichere LSI-Vorrichtung 1 als eine
LSI-Vorrichtung für
eine Schlüssel-Erzeugung
(nachfolgend bezeichnet als eine „Schlüssel-Erzeugungs-LSI-Vorrichtung"). In der Schlüssel-Erzeugungs-LSI-Vorrichtung
wird das Erzeugungs-Programm für den
verschlüsselten
Schlüssel,
erzeugt in der Administrator-LSI-Vorrichtung, installiert (PB1)
und das Schlüssel-Erzeugungs-Programm
wird ausgeführt,
um verschiedene Schlüssel
(PB2) zu erzeugen.
-
Wenn
auf den Entwicklungs-Modus eingestellt ist, arbeitet die sichere
LSI-Vorrichtung 1 als
eine LSI-Vorrichtung für
eine Entwicklung (nachfolgend bezeichnet als eine „Entwicklungs-LSI-Vorrichtung"). In der Entwicklungs-LSI-Vorrichtung
wird ein Anwendungs-Programm, das in einem tatsächlichen Produkt ausgeführt werden
soll, entwikkelt (PC1). Das Anwendungs-Programm wird unter Verwendung
des gemeinsamen Programm-Schlüssels
(PC2) verschlüsselt.
-
Wenn
auf den Produkt-Operations-Modus eingestellt wird, arbeitet die
sichere LSI-Vorrichtung 1 als eine
tatsächliche
Produkt-LSI-Vorrichtung. Das Anwendungs-Programm, erzeugt in der
Entwicklungs-LSI-Vorrichtung, und verschlüsselt mit dem gemeinsamen Programm-Schlüssel, wird
in der Produkt-LSI-Vorrichtung installiert. Innerhalb der Produkt-LSI-Vorrichtung
wird das installierte Anwendungs-Programm zu einem Anwendungs-Programm, verschlüsselt mit
einem programmeigenen Schlüssel
(PD1), umgewandelt. Das Anwendungs-Programm, verschlüsselt mit
dem programmeigenen Schlüssel,
wird in einem normalen Betrieb des Produkts ausgeführt. Diese
Umwandlungsverarbeitung kann auch in der Entwicklungs-LSI-Vorrichtung
(PC3) für
den Zweck eines Debugging des Anwendungs-Programms ausgeführt werden
(PC4).
-
Die
sichere LSI-Vorrichtung 1 arbeitet so, wie dies nachfolgend
beschrieben ist, durch Ausführen
des Boot-Programms, gespeichert in dem Boot-ROM 60.
-
3 zeigt
ein Flussdiagramm, das den gesamten Ablauf des Boot-Programms darstellt.
Wenn die sichere LSI-Vorrichtung 1 hochgefahren wird, wird
das Boot-Programm,
gespeichert in dem Boot-ROM 60, durch eine CPU 65 ausgeführt. Wie 3 zeigt,
wird jede Hardware zuerst initialisiert (SZ0). Dann werden die verschiedenen
Anfangswerte von dem externen Tool 110 gelesen und in den
sicheren Speicher 10 eingestellt (SZ1).
-
4 zeigt
ein Flussdiagramm, das die den Anfangswert einstellende Verarbeitung
SZ1 darstellt. Zunächst
wird, an einer Sprungeinrichtung 44, bestimmt, ob der sichere
Speicher 10 in der LSI-Vorrichtung (SZ11) montiert ist
oder nicht. Als nächstes
wird bestimmt, ob ein Schreib-Zeichen 12 für den unbeschreibbaren
Bereich „WRITTEN" (SZ12) anzeigt oder
nicht. Wenn es „WRITTEN" (Ja an SZ12) anzeigt,
wird die Verarbeitung SZ1 beendet, da ein Anfangswert bereits in
dem sicheren Speicher 10 eingestellt ist. Wenn das Schreib-Zeichen 12 für den unbeschreibbaren
Bereich „WRITABLE" (Nein an SZ12) anzeigt,
werden Anfangswerte in den sicheren Speicher 10 hineingeschrieben.
Zusätzlich
zu der Modus-ID werden ein eigener Schlüssel für das verschlüsselte Programm,
Adressen-Verwaltungs-Informationen
und ein dateneigener Schlüssel
in den unbeschreibbaren Bereich 11 des sicheren Speichers 10 hineingeschrieben
(SZ13, SZ16 bis SZ18). Falls die erste Bestimmung anzeigt, dass
der sichere Speicher 10 außerhalb der LSI-Vorrichtung
(Nein an SZ14) existiert, wird die Modus-ID mit einem Wert überschrieben,
der den Produkt-Operations-Modus anzeigt (SZ15). Als eine Folge
arbeitet ein Produkt, das einen si cheren Speicher 10 außerhalb
seiner LSI-Packung besitzt, nur dann, wenn es sich in dem Produkt-Operations-Modus
befindet.
-
Als
nächstes
wird das Schreib-Zeichen 12 für den unbeschreibbaren Bereich
auf „WRITTEN" gesetzt (SZ19),
wodurch ein Überschreiben
in dem nicht wieder überschreibbaren
Bereich 11 danach verhindert wird. Weiterhin werden ein
Verschlüsselungs-Typ-Identifizierer und
ein Installations-Modus-Zeichen in allgemeinen Bereichen 13 und 14 geschrieben
(SZ1A). Wenn die Modus-ID einen Modus, einen anderen als den Administrator-Modus (Nein an SZ1B),
anzeigt, werden ein verschlüsselter,
gemeinsamer Schlüssel
und ein Erzeugungs-Schlüssel
für einen
verschlüsselten
Schlüssel
in die allgemeinen Bereiche 13 und 14 zusätzlich zu
dem Verschlüsselungs-Typ-Identifizierer
und einem Installations-Modus-Zeichen
geschrieben (SZ1C).
-
Danach
wird, wie wiederum 3 zeigt, eine Vorverarbeitung
SZ2 ausgeführt.
Hierbei wird die Modus-ID, eingestellt in dem nicht wieder beschreibbaren
Bereich 11 des sicheren Speichers 10, in das Modus-ID-Speicher-Register 31 der
Schlüssel-Erzeugungs-Aktualisierungs-Abfolgesteuereinrichtung 30 und
in das Modus-ID-Speicher-Register 41 der Modus-Abfolgesteuereinrichtung 40 eingestellt.
Weiterhin wird ein Verschlüsselungs-Typ-Identifizierer,
eingestellt in dem allgemeinen Bereich 13 des sicheren
Speichers 10, in dem Verschlüsselungs-Typ-Identifizierer-Speicher-Register 32 der
Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 und
in dem Modus-ID-Speicher-Register 42 der
Modus-Abfolgesteuereinrichtung 40 eingestellt. Weiterhin
werden die Adressen-Verwaltungs-Informationen, gespeichert in dem
unbeschreibbaren Bereich 11 des sicheren Speichers 10,
in einem Adressen-Segment-Speicher-Register 81 eines MEMC 80 eingestellt.
Die Vorgänge,
beschrieben vorstehend, entsprechen den Anfangs-Wert-Einstell-Phasen PA0, PB0, PC0 und
PD0 von 2.
-
Danach
wird der Vorgang in einem Modus, bestimmt gemäß dem Wert der Modus-ID, durchgeführt (SZ3).
-
Wenn
die Modus-ID „00" ist, wird die sichere
LSI-Vorrichtung 1 auf den Administrator-Modus eingestellt,
um eine grobe (binäre)
Programm-Ausführungs-Verarbeitung
SA1 oder eine Programm-Verschlüsselungs-Verarbeitung
SA2, in Abhängigkeit
von dem Wert der Sprungeinrichtung 43 (bestimmt an SA0),
auszuführen.
In der Schlüssel-Erzeugungs-Programm-Entwicklungs-Phase
PA1 wird eine grobe (binäre)
Programm-Ausführungs-Verarbeitung SA1
ausgeführt,
um ein Schlüssel-Erzeugungs-Programm
zu erzeugen. Das Schlüssel-Erzeugungs-Programm
wird in dem externen Speicher 100 gespeichert. In der Schlüssel-Erzeugungs-Programm-Verschlüsselungs-Phase
PA2 wird das Schlüssel-Erzeugungs-Programm
mit irgendeinem Schlüssel-Erzeugungs-Schlüssel verschlüsselt.
-
Wenn
die Modus-ID „01" ist, wird die sichere
LSI-Vorrichtung 1 auf den Schlüssel-Erzeugungs-Modus eingestellt, um eine
Schlüssel-Generator-Erzeugungs-Verarbeitung
SB1 oder eine Schlüssel-Management/Ausgabe-Verarbeitung
SB2 in Abhängigkeit
von dem Wert des Installations-Modus-Zeichens (bestimmt an SB0)
auszuführen.
In der Schlüssel-Generator-Erzeugungs-Phase
PB1 wird die Schlüssel-Generator-Erzeugungs-Verarbeitung SB1
ausgeführt,
und das Schlüssel-Erzeugungs-Programm,
verschlüsselt
mit irgendeinem Schlüssel-Erzeugungs-Schlüssel, wird
erneut mit einem programmeigenen Schlüssel verschlüsselt. In
der Schlüssel-Verwaltungs/Ausgabe-Phase
PB2 wird das Schlüssel-Erzeugungs-Programm,
verschlüsselt
mit dem programmeigenen Schlüssel,
ausgeführt,
wodurch die Schlüssel-Verwaltungs/Ausgabe-Verarbeitung
SB2 ausgeführt
wird, um einen Schlüssel
zu erzeugen.
-
Wenn
die Modus-ID „10" ist, wird die sichere
LSI-Vorrichtung 1 auf den Entwicklungs-Modus eingestellt,
um eine Programm-Verschlüsselungs-Verarbeitung
SC1, eine Verarbeitung SC2 für
eine grobe (binäre) Programm-Ausführung, eine
Programm-Installations-Verarbeitung
SC3 oder eine Ausführungs-Verarbeitung SC4
für ein
verschlüsseltes
Programm, in Abhängigkeit
von dem Wert der Sprungeinrichtung 43 (bestimmt an SC0),
auszuführen.
In der Anwendungs-Programm-Entwicklungs-Phase PC1 wird eine grobe
(binäre)
Programm-Ausführungs-Verarbeitung
SC2 ausgeführt,
um ein Anwendungs-Programm zu entwickeln. Das entwickelte Anwendungs-Programm
wird in dem externen Speicher 100 gespeichert. In der Anwendungs-Programm-Verschlüsselungs-Phase
PC2 wird die Programm-Verschlüsselungs-Verarbeitung
SC1 ausgeführt.
In der Anwendungs-Programm-Installations-Phase PC3 wird eine Programm-Installations-Verarbeitung
SC3 ausgeführt.
In der Anwendungs-Programm-Debugg-Phase PC4 wird eine Ausführungs-Verarbeitung
SC4 des verschlüsselten
Programms ausgeführt.
Die Programm-Installations-Verarbeitung SC3 und die Ausführungs-Verarbeitung
SC4 des verschlüsselten
Programms sind dieselben wie die Verarbeitung SD1 und SD2 in dem
Produkt-Operations-Modus, jeweils.
-
Wenn
die Modus-ID „11" ist, wird die sichere
LSI-Vorrichtung 1 auf den Produkt-Operations-Modus eingestellt, um eine
Programm-Installations-Verarbeitung SD1 oder eine normale Boot-Verarbeitung
SD2 in Abhängigkeit
von dem Wert des Installations-Modus-Zeichens
(bestimmt an SD0) auszuführen.
In der Produkt-Installations-Phase PD1 wird eine Programm-Installations-Verarbeitung
SD1 ausgeführt.
In der Produkt-Operations-Phase
PD2 wird eine normale Boot-Verarbeitung SD2 ausgeführt.
-
5 stellt
den Verschlüsselungsabschnitt 2 und
Komponenten, die dafür
relevant sind, dar. Wie in 5 dargestellt
ist, umfasst die Schlüssel-Erzeugungs/Aktualisierungs-Abfolgesteuereinrichtung 30 Register 33 und
einen Steuerabschnitt 34 zusätzlich zu dem Modus-ID-Speicher-Register 31 und
dem Verschlüsselungs-Typ-Identifizierer-Speicher-Register 32.
Die Register 33 sind so vorgesehen, um den jeweiligen Sequenzen
zu entsprechen, die durch den arithmetischen Verarbeitungsabschnitt 20 für den privaten
Schlüssel
auf einer Basis eins zu eins ausgeführt werden. Jedes der Register 33 speichert
die Anzahl von Ausgaben einer entsprechenden einen der Sequenzen.
Der Steuerabschnitt 34 nimmt auf die Register 31 und 33 Bezug,
um zu bestimmen, ob eine Ausführung
jeder Sequenz zuzulassen ist (ob eine Ausführung jedes Programms in dem
Boot-ROM 60 und einem externen Programm zuzulassen ist),
und steuert die Betriebsweise des arithmetischen Verarbeitungsabschnitts 20 für den privaten
Schlüssel.
In der sicheren LSI-Vorrichtung 1 wird,
wenn jede Sequenz einmal ausgegeben ist, 1 (eins) zu einem entsprechenden
einen der Register 33 hinzugefügt.
-
Eine
Programm-Verschlüsselungs-Grundstruktur
(Seed) 35 wird für
eine Entschlüsselung
oder eine Erzeugung eines Schlüssels
verwendet. Die Programm-Verschlüsselungs-Grundstruktur 35 umfasst
eine Programm-Verschlüsselungs-Grundstruktur für einen
gemeinsamen Schlüssel
und eine Programm-Verschlüsselungs-Grundstruktur für einen
eigenen Schlüssel.
-
In
dem Produkt-Operations-Modus und dem Entwicklungs-Modus beschränkt der
Steuerabschnitt 34 die Betriebsweise des Verschlüsselungsabschnitts 2 so,
dass die Folge einer Einstellung von Werten, gespeichert in dem
sicheren Speicher 10 in den jeweiligen Registern des Verschlüsselungsabschnitts 2 (sichere Flash-Ladeeinrichtung)
und die Sequenz einer Erzeugung/Entschlüsselung eines Schlüssels (Schlüssel-Abfolgesteuereinrichtung)
jeweils nur einmal ausgegeben werden können. Zum Beispiel kann, wenn
einmal die Modus-ID, gespeichert in dem sicheren Speicher, in dem
Modus-ID-Speicher-Register 31 durch
ein Boot-Programm zu dem Zeitpunkt eines Bootens der sicheren LSI-Vorrichtung 1 gespeichert
ist, die gespeicherte Modus-ID nicht erneut geän dert werden. Weiterhin wird,
falls ein gemeinsamer Schlüssel
und ein eigener Schlüssel
zu dem Zeitpunkt eines Bootens der sicheren LSI-Vorrichtung 1 entschlüsselt werden,
und die entschlüsselten
Schlüssel
in den Registern innerhalb des arithmetischen Verarbeitungsabschnitts 20 für den privaten Schlüssel gespeichert
sind, irgendein Schlüssel
erneut erzeugt/entschlüsselt
werden. Demzufolge ist es, gerade wenn ein Schlüssel-Erzeugungs-Programm in dem externen
Speicher 100 installiert ist, unmöglich, einen Schlüssel zu
erzeugen. Ein einmal entschlüsselter,
eigener Schlüssel
wird in einem Eigen-Schlüssel-Speicher-Register
der externen I/F 50 gespeichert. Das verschlüsselte Programm
wird unter Verwendung dieses eigenen Schlüssels ausgeführt. Eine
Aktualisierung von Programmen wird unter Verwendung eines gemeinsamen
Schlüssels
oder eines eigenen Schlüssels,
gespeichert in Registern innerhalb des arithmetischen Verarbeitungsabschnitts 20 für den privaten
Schlüssel,
durchgeführt.
-
In
dem Schlüssel-Erzeugungs-Modus
und dem Administrator-Modus wird die Beschränkung auf die Schlüssel-Abfolgesteuereinrichtung
entfernt, so dass ein Schlüssel
erzeugt werden kann.
-
Hierbei
kann ein Speicher-Register einer Benutzungsnummer für jede Programm-Verschlüsselungs-Grundstruktur,
anstelle der Sequenz-Ausgabe-Zahl-Speicher-Register 33,
vorgesehen sein. Das Speicher-Register für die Benutzungsnummer der
Programm-Verschlüsselungs-Grundstruktur
speichert die Zahl von Malen, für
die die Verschlüsselungs-Grundstruktur
verwendet worden ist. Da der Programm-Verschlüsselungs-Schlüssel für eine Erzeugung/Entschlüsselung
eines Schlüssels
verwendet wird, ist eine Erzeugung/Entschlüsselung von Schlüsseln durch
Begrenzen der Zahl von Benutzungen der Programm-Verschlüsselungs-Grundstruktur
durch die Modus-ID und durch Zählen
der Zahl von Benutzungen der Programm-Verschlüsselungs-Grundstruktur begrenzt.
-
Die
Programm-Verschlüsselungs-Grundstruktur
muss nicht sowohl die Programm-Verschlüsselungs-Grundstruktur
für den
gemeinsamen Schlüssel
als auch die Programm-Verschlüsselungs-Grundstruktur für einen
eigenen Schlüssel
umfassen.
-
6 stellt
ein Verfahren zum Einstellen eines gemeinsamen Busses und eines
privaten Busses dar. Hierbei bedeutet der „private Bus" ein Bus, der extern
nicht zugreifbar ist, allerdings nicht notwendigerweise physikalisch
von dem externen I/F 50 abhängt. Das bedeutet, dass, in
einem Register, das so eingestellt ist, um mit einem privaten Bus 91 verbunden
zu sein, ein Lesen und ein Schreiben, basierend auf einem externen Zugriff,
unterbunden wird.
-
Adressen
werden zu den Registern und anderen Elementen, die innerhalb der
sicheren LSI-Vorrichtung 1 vorgesehen sind, zugeordnet.
Unter diesen Adressen werden die Adressen von Registern und den
anderen Elementen, die mit einem gemeinsamen Bus 92 („0X00000" bis „0X10000" in 6)
verbunden sind, in dem Adressen-Speicherabschnitt 82 für den gemeinsamen
Bus gespeichert. Wenn ein externer Zugriff empfangen wird, nimmt
ein Adressen-Bestimmungsabschnitt 83 für einen externen Zugriff auf
den Adressen-Speicherabschnitt 82 für den gemeinsamen Bus Bezug,
um zu bestimmen, ob der externe Zugriff auf den gemeinsamen Bus 92 gerichtet
ist oder nicht. Falls dies der Fall ist, akzeptiert der Adressen-Bestimmungsabschnitt 83 den
externen Zugriff. Andererseits bedeutet, wenn der externe Zugriff
nicht ein Zugriff auf den gemeinsamen Bus 92 ist, dies,
dass der externe Zugriff ein Zugriff auf den privaten Bus 91 ist,
und deshalb wird der externe Zugriff abgewiesen.
-
Wenn
ein Zugriff von der CPU 65 (interner Zugriff) empfangen
wird, wird ein solcher Bestimmungs-Vorgang nicht durchgeführt, und
ein interner Zugriff wird akzeptiert.
-
7 stellt
die externe I/F 50 und Komponenten, die dazu relevant sind
dar. In 7 speichert ein Adressen-Segment-Speicher-Register 81 Adressen-Verwaltungs-Informationen, die
die Korrespondenz zwischen den jeweiligen Bereichen des externen
Speichers 100 und den Adressen darstellen. Hierbei ist
der externe Speicher 100 in den ersten Bereich (Programme
innerhalb eines vorbestimmten Bereichs), den zweiten Bereich (Programme
außerhalb
des vorbestimmten Bereichs), den dritten Bereich (Daten innerhalb
des vorbestimmten Bereichs) und den vierten Bereich (Daten außerhalb
des vorbestimmten Bereichs) unterteilt, und das Adressen-Segment-Speicher-Register 81 speichert
die Adressen, getrennt für
diese vier Bereiche.
-
Ein
Komparator 85 nimmt auf die Adressen-Verwaltungs-Informationen,
gespeichert in dem Adressen-Segment-Speicher-Register 81,
Bezug, und bestimmt, welcher des ersten bis vierten Bereichs der
Adresse von Informationen, um eingegeben/ausgegeben zu werden, darin
hineinfällt.
Der Komparator 85 schickt das Bestimmungsergebnis zu einem
Eingangs/Ausgangs-Steuersignal-Erzeugungsabschnitt 84.
-
Der
Eingangs/Ausgangs-Steuersignal-Erzeugungsabschnitt 84 bestimmt,
welche Schnittstelle der externen I/F 50 basierend auf
der Modus-ID und dem Sprungeinrich tungs-Bestimmungsergebnis aktiviert
wird, die von der Modus-Abfolgesteuereinrichtung 40 ausgegeben
werden, und den Ausgang des Komparators 85. Der Eingangs/Ausgangs-Steuersignal-Erzeugungsabschnitt 84 schickt
das Bestimmungsergebnis als ein Eingangs/Ausgangs-Steuersignal zu
einem Eingangs/Ausgangs-Modus-Steuerabschnitt 54. Der Eingangs/Ausgangs-Modus-Steuerabschnitt 54 aktiviert
irgendeine der Schnittstellen entsprechend dem empfangenen Eingangs/Ausgangs-Steuersignal.
Es sollte angemerkt werden, dass dann, wenn die Modus-ID den Produkt-Operations-Modus
anzeigt, ein Durchgangsabschnitt 52b zum Ausführen (nachfolgend
bezeichnet als „Ausführung durch
den Abschnitt 52b")
immer inaktiv gehalten wird, wodurch die Operation der sicheren
LSI-Vorrichtung 1 so
beschränkt
ist, dass ein grobes (binäres)
Programm, gespeichert in dem externen Speicher 100, nicht
ausgeführt
wird.
-
In
dem Administrator-Modus oder in einem Debugging-Prozess des Entwicklungs- Modus werden Programme,
gespeichert in dem ersten Bereich des externen Speichers 100,
in die sichere LSI-Vorrichtung 1 über den Ausführungs-Durchgangsabschnitt 52b des
Programm-Verarbeitungsabschnitts 51 gelesen. In dem Schlüssel-Erzeugungs-Modus,
dem Produkt-Operations-Modus oder dem Entwicklungs-Modus, mit Ausnahme
des Debugging-Prozesses, werden die Programme, gespeichert in dem
ersten Bereich, über
die Programm-Entschlüsselungs-Kryptographie-Engine 53 gelesen.
Diese Programme können
in der sicheren LSI-Vorrichtung 1 ausgeführt werden.
Andererseits werden Programme, gespeichert in dem zweiten Bereich des
externen Speichers 100, in die sichere LSI-Vorrichtung 1 über einen
Durchgangsabschnitt 52a für eine Verschlüsselung
(nachfolgend bezeichnet als „Verschlüsselungs-Durchgangsabschnitt 52a") des Programm-Verarbeitungsabschnitts 51 hineingelesen.
Diese Programme werden zu dem Verschlüsselungsabschnitt 2 zugeführt und
verschlüsselt
oder erneut verschlüsselt.
Diese Programme können
nicht in der sicheren LSI-Vorrichtung 1 ausgeführt werden.
-
Weiterhin
werden Daten, gespeichert in dem dritten Bereich des externen Speichers 100,
in die sichere LSI-Vorrichtung 1 über die Daten-Verschlüsselungs/Entschlüsselungs-Kryptographie-Engine 58 des
Daten-Verarbeitungsabschnitts 55 hineingelesen. Daten,
gespeichert in dem vierten Bereich des externen Speichers 100,
werden in die sichere LSI-Vorrichtung 1 über den
Durchgangsabschnitt 56 des Daten-Verarbeitungsabschnitts 55 hineingelesen.
-
Das
Programm, gelesen durch den Verschlüsselungs-Durchgangsabschnitt 52a,
wird in dem arithmetischen Verarbeitungsabschnitt 20 für den privaten
Schlüssel
des Verschlüsselungsabschnitts 2 verschlüsselt oder
erneut verschlüsselt.
Dann wird das verschlüsselte
oder erneut verschlüsselte
Programm über
den Verschlüsselungs-Durchgangsabschnitt 52a übertragen
und in den ersten Bereich des externen Speichers 100 hineingeschrieben.
Danach kann das Programm in der sicheren LSI-Vorrichtung 1 ausgeführt werden.
-
Daten
werden in das Adressen-Segment-Speicher-Register 81 und
das Modus-ID-Speicher-Register 41 über den
privaten Bus 91 eingestellt. Das bedeutet, dass eine Daten-Einstellung
durch einen internen Zugriff durchgeführt wird. Weiterhin kann dieser
Daten-Einstellungs-Vorgang nur einmal durchgeführt werden, nachdem die sichere
LSI-Vorrichtung 1 zurückgesetzt
wird.
-
8 stellt
einen Betrieb der externen I/F 50 dar, der dann durchgeführt wird,
wenn sich die sichere LSI-Vorrichtung 1 in dem Produkt-Operations-Modus
befindet. Wie in 8 dargestellt ist, wird ein
Anwendungs-Programm, verschlüsselt
mit einem gemeinsamen Schlüssel,
in dem zweiten Bereich (außerhalb
des vorbestimmten Bereichs) des externen Speichers 100 gespeichert,
bevor es in der sicheren LSI-Vorrichtung 1 installiert
wird. Demzufolge kann das Anwendungs-Programm nicht so, wie es ist,
ausgeführt
werden. Das bedeutet, dass ein Anwendungs-Programm, das mit einem
gemeinsamen Schlüssel
verschlüsselt
ist und in dem zweiten Bereich gespeichert ist, über den Verschlüsselungs-Durchgangsabschnitt 52a gelesen
wird, wenn es in der sicheren LSI-Vorrichtung 1 installiert
ist. Das Anwendungs-Programm wird mit einem gemeinsamen Schlüssel entschlüsselt und
wird dann erneut mit einem eigenen Schlüssel verschlüsselt. Das
Anwendungs-Programm
für eine
erneute Verschlüsselung
wird über
den Verschlüsselungs-Durchgangsabschnitt 52a wieder übertragen
und in dem ersten Bereich (innerhalb des vorbestimmten Bereichs)
des externen Speichers 100 gespeichert. Das Anwendungs-Programm, verschlüsselt mit
dem eigenen Schlüssel,
und gespeichert in dem ersten Bereich, wird in die sichere LSI-Vorrichtung 1 über die
Programm-Entschlüsselungs-Kryptographie-Engine 53 hineingelesen
und in der sicheren LSI-Vorrichtung 1 ausgeführt.
-
In
dem Entwicklungs-Modus wird der nachfolgende Vorgang durchgeführt. Wenn
der Debugging-Prozess durchgeführt
wird, wird ein Programm, das ausgeführt werden soll, in den ersten
Bereich (innerhalb des vorbestimmten Bereichs) geschrieben. Mit
einer solchen Vorbereitung wird das Programm in die sichere LSI-Vorrichtung 1 über den
Ausführungs-Durchgangsabschnitt 52b hineingelesen
und darin sogar dann ausgeführt,
wenn dies ein grobes (binäres)
Programm ist. Wenn der Verschlüsselungs-Vorgang
durchgeführt
wird, wird ein Programm, das verschlüsselt werden soll, in den zweiten
Bereich (außerhalb
des vorbestimmten Bereichs) hineingeschrieben. Mit einer solchen
Präparation
wird eine Verschlüsselungs-Sequenz
zu dem Zeitpunkt ausgeführt,
wenn die sichere LSI-Vorrichtung 1 gebootet
wird, und das Programm wird mit einem gemeinsamen Schlüssel verschlüsselt und
in dem externen Speicher 100 gespeichert. Wenn ein mit
einem Debugging-Vorgang verarbeitetes Programm installiert wird,
wird ein Programm, das erneut verschlüsselt werden soll. in den zweiten
Bereich (außerhalb
des vorbestimmten Bereichs) geschrieben. Weiterhin wird, wenn ein verschlüsseltes
Programm im Debugging-Verfahren verarbeitet wird, das verschlüsselte Programm,
das im Debugging-Verfahren verarbeitet werden soll, in den ersten
Bereich (innerhalb des vorbestimmten Bereichs) hineingeschrieben.
Mit einer solchen Vorbereitung wird das Programm entschlüsselt und
ausgeführt.
-
9 stellt
eine Zugangs-Steuerung des sicheren Speichers 10 dar. Wie
in 9 dargestellt ist, umfasst ein Zugangs-Steuerabschnitt 95 ein
Register 96 zum Speichern von Adressen des unbeschreibbaren
Bereichs 11, ein Register 97 zum Speichern einer
Adresse des Schreib-Zeichens 12 für den unbeschreibbaren Bereich
und einen Schreib-Zulassungs-Bestimmungsabschnitt 98.
Die Register 96 und 97 sind so ausgelegt, dass,
wenn einmal Daten in die Register 96 und 97 hineingeschrieben
sind, ein anderer Schreib-Vorgang
mittels einer Zeichen-Verwaltung, oder dergleichen, unterbunden
wird.
-
Die
Zugangs-Steuerung wird wie folgt durchgeführt. Ein Zugang von der CPU
65 zu
dem sicheren Speicher
10 wird immer über den Zugangs-Steuerabschnitt
95 durchgeführt. Wenn
ein gegebener Befehl der „Lese" Befehl ist, werden
Daten in dem sicheren Speicher
10 zu dem privaten Bus
91 ungeachtet
davon ausgegeben, ob eine Adresse, auf die zugegriffen werden soll,
innerhalb des unbeschreibbaren Bereichs oder des allgemeinen Bereichs
vorhanden ist. Andererseits nimmt, wenn ein gegebener Befehl der „Schreib" Befehl ist, der
Schreib-Zulassungs-Bestimmungsabschnitt
98 auf eine Adresse,
auf die zugegriffen werden soll, eine Adresse, gespeichert in dem
Register
96, und den Wert des Schreib-Zeichens
12 für den unbeschreibbaren Bereich
Bezug, um zu bestimmen, ob ein Schrei ben durchgeführt wird
oder nicht. Genauer gesagt wird die folgende Bestimmung vorgenommen:
(Zeichen „WRITTEN" und unbeschreibbarer
Bereich) | ...
Schreiben ist nicht zugelassen |
(Zeichen „WRITTEN" und allgemeiner
Bereich) | ...
Schreiben ist zugelassen |
(Zeichen „WRITABLE" und unbeschreibbarer
Bereich) | ...
Schreiben ist nicht zugelassen |
(Zeichen „WRITABLE" und allgemeiner
Bereich) | ...
Schreiben ist zugelassen |
-
Der
sichere Speicher 10 umfasst die Befehle von „Sektor
löschen", „Chip löschen", usw.. Wenn das Schreib-Zeichen 12 des
unbeschreibbaren Bereichs „WRITTEN" ist, wird der „Sektor
löschen" Befehl für den allgemeinen
Bereich akzeptiert, wird allerdings nicht für den unbeschreibbaren Bereich
akzeptiert. Der „Chip löschen" Befehl wird nicht
akzeptiert.
-
Gerade
bei der Wiedergabe der Inhalte (Daten) wird die Sicherheit durch
Einsetzen des folgenden Verfahrens verbessert.
-
Daten
werden zuerst in dem vierten Bereich (außerhalb des vorbestimmten Bereichs)
des externen RAM 102 gespeichert. Während man sich in dem vierten
Bereich befindet, sind die Daten solche Daten, die mit einem gemeinsamen
Daten-Schlüssel
(unterschiedlich gegenüber
dem gemeinsamen Programm-Schlüssel)
oder groben (binären)
Daten verschlüsselt
sind. Demzufolge ist dabei eine Möglichkeit vorhanden, dass die
Daten betrügerisch
durch eine LSI-Vorrichtung verwendet werden, d.h. dort ist eine
Verwundbarkeit in der Sicherheit vorhanden.
-
Um
eine solche Verwundbarkeit zu beseitigen, insbesondere für die Inhalte,
wie beispielsweise Bilder, Musik, oder dergleichen, die gegen eine
betrügerische
Benutzung geschützt
werden sollten, ist ein Programm zum Wiedergeben der Inhalte so
ausgelegt, dass nur Inhalte, gespeichert in dem dritten Bereich
(innerhalb des vorbestimmten Bereichs) des externen RAM 102,
wiedergegeben werden können.
Die Daten, gespeichert in dem dritten Bereich, werden durch die
Daten-Verschlüsselungs/Entschlüsselungs-Kryptographie-Engine 58 entschlüsselt, wenn
die Daten in die sichere LSI-Vorrichtung 1 hineingelesen
werden. Ein dateneigener Schlüssel,
verwendet in diesem Entschlüsse lungs-Vorgang,
wird von einer eigenen ID und Zufallszahlen erzeugt, und deshalb
ist der dateneigene Schlüssel
nicht nur unter den jeweiligen, sicheren LSI-Vorrichtungen 1 unterschiedlich,
sondern ist auch bei jedem Boot-Up-Vorgang unterschiedlich. Demzufolge
ist es nicht wahrscheinlich, dass die Daten betrügerisch verwendet werden, und
die Sicherheit wird verbessert. Weiterhin ist es nicht wahrscheinlich,
dass ein Programm zum Wiedergeben von Inhalten auch mit dem eigenen
Schlüssel
verschlüsselt
wird, und es ist deshalb unwahrscheinlich, dass er manipuliert wird.
-
Die 10 und 11 stellen
einen Datenfluss des normalen Boot-Vorgangs in dem Produkt-Operations-Modus
dar. In 10 wird ein verschlüsselter,
programmeigener Schlüssel
Enc (programmeigener Schlüssel,
MK0), Enc (MK0, CK), der in dem unbeschreibbaren Bereich 11 des
sicheren Speichers 10 gespeichert ist, in dem Verschlüsselungs-Schlüssel-Speicher-Register
des arithmetischen Verarbeitungsabschnitts 20 des privaten
Schlüssels
eingestellt. Dann wird der eigene Schlüssel des verschlüsselten
Programms unter Verwendung einer Verschlüsselungs-Grundstruktur des
installierten Programms entschlüsselt,
um dadurch einen programmeigenen Schlüssel zu erhalten. Der erhaltene,
programmeigene Schlüssel
wird in dem Speicher-Register für
den programmeigenen Schlüssel
der Programm-Entschlüsselungs-Kryptographie-Engine 53 der
externen I/F 50 eingestellt. Danach wird die dateneigene
ID, gespeichert in dem unbeschreibbaren Bereich 11 des
sicheren Speichers 10, in dem Speicher-Register für die eigene
ID des arithmetischen Verarbeitungsabschnitts 20 für den privaten
Schlüssel
eingestellt. Weiterhin werden Zufallszahlen durch die CPU 65 erzeugt, und
die erzeugten Zufallszahlen werden in dem Zufallszahl-Speicher-Register
des arithmetischen Verarbeitungsabschnitts 20 für den privaten
Schlüssel
eingestellt. Dann wird der dateneigene Schlüssel von der dateneigenen ID
und den Zufallszahlen durch den arithmetischen Verarbeitungsabschnitt 20 des
privaten Schlüssels
erzeugt. Der erzeugte, dateneigene Schlüssel wird in dem Speicher-Register
für den
dateneigenen Schlüssel
der Daten-Verschlüsselungs/Entschlüsselungs-Kryptographie-Engine 58 der
externen I/F 50 eingestellt.
-
Danach
wird, in 11, ein Anwendungs-Programm
Enc (Anwendungs-Programm, programmeigener Schlüssel), das mit dem programmeigenen
Schlüssel
verschlüsselt
worden ist und in dem externen Speicher 100 gespeichert
worden ist, über
die Programm-Entschlüsselungs-Kryptographie-Engine 53 der
externen I/F 50 entschlüsselt.
Das entschlüsselte
Anwendungs-Programm wird zu dem HASH Berechnungsabschnitt 70 über tragen,
um den HASH Wert zu berechnen. Der berechnete HASH Wert wird mit
dem HASH Wert, gespeichert in dem allgemeinen Bereich 13 des
sicheren Speichers 10, gespeichert, um zu prüfen, ob
das Anwendungs-Programm manipuliert worden ist oder nicht. Falls
die HASH Werte gleich zueinander sind, geht das Programm weiter
zu dem Anwendungs-Programm Enc (Anwendungs-Programm, programmeigener
Schlüssel),
gespeichert in dem externen Speicher 100, um die Anwendung
auszuführen.
Falls die HASH Werte nicht gleich zueinander sind, wird bestimmt,
dass ein bestimmter Betrug vorgenommen worden ist, und ein Kontroll-Vorgang
für einen
betrügerischen
Zugang wird ausgeführt.
-
Das
Anwendungs-Programm wird durch die CPU 65 ausgeführt. Das
bedeutet, dass die CPU 65 innerhalb der sicheren LSI-Vorrichtung 1 die
Zugangs-Steuerung als eine Master-Vorrichtung durchführt. Demzufolge
wird der externe Zugangs-Adressen-Bestimmungsabschnitt 83 nicht
in die darauf folgenden Prozesse eingebunden, die interne Zugangs-Prozesse
sind. Ein Inhalt (originaler Inhalt), verschlüsselt mit dem gemeinsamen Daten-Schlüssel, wird
von dem vierten Bereich (nicht reproduzierbarer Bereich) des externen
RAM 102 in die sichere LSI-Vorrichtung 1 durch
das Anwendungs-Programm gelesen. Der Inhalt der in die sichere LSI-Vorrichtung 1 hineingelesen
ist, wird in dem arithmetischen Verarbeitungsabschnitt 20 für den privaten Schlüssel unter
Verwendung des gemeinsamen Daten-Schlüssels, geschrieben in dem sicheren
Speicher 10, entschlüsselt.
Danach wird der Inhalt mit dem dateneigenen Schlüssel über die Daten-Verschlüsselungs/Entschlüsselungs-Kryptographie-Engine 58 in
dem Daten-Verarbeitungsabschnitt 55 der externen I/F 50 verschlüsselt. Der
verschlüsselte
Inhalt wird in den dritten Bereich (reproduzierbarer Bereich) des
externen RAM 102 geschrieben. Nachdem er in den dritten
Bereich hineingeschrieben ist, ist der Inhalt, verschlüsselt mit
dem dateneigenen Schlüssel,
reproduzierbar. In dem Fall eines Reproduzieren des Inhalts wird
der Inhalt mit dem dateneigenen Schlüssel über die Daten-Verschlüsselungs/Entschlüsselungs-Kryptographie-Engine 58 entschlüsselt, die
in dem Daten-Verarbeitungsabschnitt 55 der externen I/F 50 vorgesehen
ist.
-
Wie
vorstehend beschrieben ist, wird, gemäß der vorliegenden Erfindung,
nur eine Sequenz, bestimmt durch den Verschlüsselungs-Steuerabschnitt, dass
eine Ausführung
der Sequenz zugelassen ist, durch den arithmetischen Verschlüsselungs-Verarbeitungsabschnitt
ausgeführt.
Demzufolge kann eine betrügerische Ausführung der Sequenz
verhindert werden. Weiterhin sind, in der externen Schnittstelle,
der Programm-Verarbeitungsabschnitt
und der Daten-Verarbeitungsabschnitt unabhängig voneinander strukturiert.
Demzufolge wird das Risiko einer betrügerischen Ausführung eines
Programms verteilt. Weiterhin kann, da ein Inhalt, der verschlüsselt ist,
unter Verwendung des dateneigenen Schlüssels, erzeugt von der eigenen
ID, in dem reproduzierbaren Bereich des externen Speichers gespeichert
ist, der Inhalt nicht durch eine unterschiedliche LSI-Vorrichtung reproduziert
werden, die nicht denselben, dateneigenen Schlüssel besitzt. Deshalb kann
eine betrügerische
Ausführung
des Inhalts verhindert werden. Demzufolge wird das Sicherheitsniveau
verbessert.