-
Vorrichtungen
und Verfahren zum Entschlüsseln
von verschlüsselten
Daten und zum Anordnen der verschlüsselten Daten in einem Speicherraum, der
zur Ausführung
verwendet wird.
-
Die
vorliegende Erfindung bezieht sich auf Vorrichtungen zum Entschlüsseln von
verschlüsselten
Daten, insbesondere dann, wenn ein Programm ausgeführt und
verwendet wird, und weiterhin auf Vorrichtungen zum Entschlüsseln, die
verschlüsselte Daten
entschlüsseln,
während
ein Sicherheitsschutz realisiert wird, ebenso wie auf solche Verfahren
zum Entschlüsseln.
-
Herkömmlich wird,
wenn Daten und ein Programm, die für Sicherheitszwecke verschlüsselt worden
sind, entschlüsselt
werden, um auf einem Computersystem wiedergegeben oder ausgeführt zu werden,
ein eine Entschlüsselung
unterstützendes
Programm auf dem Computersystem ausgeführt; allerdings können, in
einem offenen Computersystem, dessen Spezifikation für die Öffentlichkeit
offen ist, Programme einfach analysiert und geändert werden. Demzufolge sind
einige unrechtmäßige Vorgänge möglich, wie
beispielsweise (i) ein die Entschlüsselung unterstützendes
Programm zu ändern
und (ii) ein entschlüsseltes
Programm zu ändern,
das nicht dahingehend angenommen wird, dass auf dieses Bezug genommen
wird oder dass es geändert
wird, und zwar ein solches, das aufrufbar oder änderbar ist.
-
Um
einen Sicherheitsschutz zu erhöhen, sind
andere Verfahren vorgeschlagen worden, in denen, zum Beispiel, das
die Entschlüsselung
unterstützende
Programm selbst verschlüsselt
ist, und wenn eine Datenverschlüsselung
durchgeführt
wird, wird das die Entschlüsselung
unterstützende
Programm entschlüsselt
(japanische, ungeprüfte
Patentveröffentlichung No. 09-006232 ),
und eine Authentizität
des die Entschlüsselung
unterstützenden
Programms wird geprüft,
bevor der Entschlüsselungsvorgang
startet (japanische, ungeprüfte
Patentanmeldungs-Offenlegung No.
11-039156 ). In diesen Fallen ist es so aufgebaut, dass
eine Änderung
der die Entschlüsselung
unterstützenden
Programme verhindert wird, um die Sicherheit der entschlüsselten
Programme und Daten zu schützen.
-
Ein
System zum Schützen
digitaler Informationen durch Begrenzen des Zugangs zu den digitalen
Informationen in dem entschlüsselten
Zustand ist in der
US-A-6,052,780 beschrieben.
Die verschlüsselten,
digitalen Informationen sind in einem ausführbaren Computerprogramm gespeichert,
umfassend ein Entschlüsselungsprogramm
zum Entschlüsseln der
verschlüsselten
Informationen unter einem erfolgreichen Abschluss eines Authentisierungsvorgangs
durch einen Benutzer.
-
Die
US-Patentanmeldung
2002/0016918 A1 beschreibt ein Informationssicherheitsverfahren
für einen
ausführbaren
Code, der auf einer so genannten polymorphen Maschine beruht. Die
polymorphe Maschine ersetzt auf einer zufälligen Basis einen Teil eines
ausführbaren
Codes, der von einer originalen Applikation mit einem zusammengestellten,
ausführbaren
Code zusammengestellt ist, entsprechend einem funktionalen Äquivalent,
allerdings einem physikalisch unterschiedlichen Quellencode. Dementsprechend
wird das Erhalten eines Quellencodes durch einen umgekehrten Aufbau
verhindert. Das Dokument beschreibt weiterhin eine Vielzahl von
anderen Sicherheitsmerkmalen, die in einer geschichteten Form ausgeführt werden
können,
einschließlich
einer Just-in-time-Instruktions-Code-Entschlüsselung
und von in situ erzeugten Chiffrieralgorithmen.
-
Die
US-Patentanmeldung
2002/00388428 A1 beschreibt eine Vielzahl von Algorithmen
für einen digitalen
Datenschutz. Allgemein wird, vor Ablaufenlassen eines ausführbaren
Codes, eine Maschine für eine
Entschlüsselung
und zur Sicherheitsprüfung ausführbarer
Code-Blöcke
ausgeführt.
Nur nachdem der Code verifiziert worden ist, speichert die Maschine
Bereiche des ausführbaren
Codes blockweise in geeigneten RAM-Stellen für eine Ausführung. In den weiterhin beschriebenen
Ausführungsformen
werden unterschiedliche Ausführungsblöcke in dem
RAM in einer Zufalls-Sequenz ausgerichtet oder nur ein einzelner,
ausführbarer
Code-Block wird in dem RAM zu einem Zeitpunkt gespeichert, während die
RAM-Stellen entsprechend zu den anderen Blöcken leer gehalten werden oder
Dummy-Daten halten. Dementsprechend ist der vollständige Programmcode
niemals in einer entschlüsselten
Form zu einem Zeitpunkt verfügbar.
-
Gerade
wenn das Entschlüsselungsverfahren
durch Ausführen
eines authenti schen, die Entschlüsselung unterstützenden
Programms durchgeführt
wird, wird, wenn die Steuerung mit einer Benutzung einer nicht legitimen
Unterbrechung, und dergleichen, ü bernommen
wird, nachdem ein entschlüsseltes
Programm oder Daten in einen Speicher in dem Computersystem hinein
geladen worden sind, das geladene Programm oder werden die Daten
zugreifbar oder veränderbar,
und die Sicherheit kann nicht geschützt werden.
-
Im
Hinblick auf die Probleme, die vorstehend erwähnt sind, ist es eine Hauptaufgabe
der vorliegenden Erfindung, eine Vorrichtung zum Entschlüsseln von
verschlüsselten
Daten und ein Verfahren zu schaffen, die die Sicherheit während des
Vorgangs von einer Entschlüsselung
bis zu der Ausführung
von verschlüsselten
Programmen und Daten erhöhen, und
weiterhin eine Vorrichtung zum Entschlüsseln von verschlüsselten
Daten und ein Verfahren zu schaffen, die einen Sicherheitsschutz
durch Verhindern von unrechtmäßigen Referenzen
und Änderungen
realisieren, oder unrechtmäßige Referenzen
auf ein minimales Niveau begrenzen, und zwar in Bezug auf Programme
oder Daten, die entschlüsselt
worden sind und in einen Speicher hinein geladen worden sind.
-
Dies
wird durch die Merkmale der unabhängigen Ansprüche gelöst.
-
Die
vorliegende Erfindung schafft auch eine Anordnung, bei der Positionsinformationen
gespeichert werden, nachdem sie verschlüsselt sind, und die Ladeeinheit
entschlüsselt
die Positionsinformationen, so dass jedes der entschlüsselten
Teilprogramme in jeden Platzbereich entsprechend den entschlüsselten
Positionsinformationen angeordnet wird.
-
Mit
dieser Anordnung ist es möglich,
eine Situation zu verhindern, bei der die Position bzw. der Platz,
in die das entschlüsselte
Teilprogramm eingeladen worden ist, über eine nicht legitime Referenz auf
Speicherplatzinformationen aufgedeckt werden kann; deshalb ist es
möglich,
die Sicherheit für
das Programm, das in den Speicher eingeladen worden ist, zu erhöhen.
-
Die
vorliegende Erfindung schafft weiterhin eine Anordnung, bei der,
zu einem Zeitpunkt eines Anordnens jedes Teilprogramms in einen
Platzbereich, wenn eine Größe des Platzbereichs
größer als eine
Größe des Teilprogramms
ist, die Ladeeinheit Dummy-Daten
in einen Platzbereich hineinschreibt, der ein Teil des Platzbereichs
ist, der nicht, aufgrund einer Differenz zwischen den Größen, überschrieben worden
ist.
-
Mit
dieser Anordnung ist es möglich,
eine Situation zu verhindern, bei der ein solcher Bereich eines
Teilprogramms, der nicht in dem Überschreibvorgang
gelöscht
wird, in dem Speicher für
eine lange Zeit verbleibt; deshalb ist es möglich, das Risiko zu verringern,
dass auf einen solchen Bereich eines Teilprogramms in einer nicht
legitimen Art und Weise Bezug genommen wird.
-
Die
vorliegende Erfindung schafft weiterhin eine Anordnung, bei der,
wenn eine vorgegebene Zeitdauer abläuft, nachdem ein Teilprogramm,
das in einen Platzbereich hinein angeordnet ist, endet, ausgeführt zu werden,
bevor ein anderes Teilprogramm in den Platzbereich hinein angeordnet
wird, die Ladeeinheit das eine Teilprogramm löscht.
-
Mit
dieser Anordnung ist es möglich,
eine Situation zu verhindern, bei der ein Teilprogramm, das in seiner
Verarbeitung endet, im Speicher für eine lange Zeitdauer verbleibt;
deshalb ist es möglich,
das Risiko zu vermeiden, dass auf das Teilprogramm in einer nicht
legitimen Art und Weise zugegriffen wird.
-
Die
vorliegende Erfindung schafft auch eine die verschlüsselten
Daten entschlüsselnde
Vorrichtung, die weiterhin eine einen Schlüssel einbettende Einheit aufweist,
die so betreibbar ist, um in mindestens einem der Teilprogramme
eingebettet zu werden, und zwar im voraus während eines Verfahrens einer
Programm-Verschlüsselung,
wobei ein Teil oder der gesamte Verschlüsselungs-Schlüssel in
einem Entschlüsselungsvorgang
oder einem anderen Teilprogramm verwendet wird, wobei die Entschlüsselungseinheit
den Entschlüsselungsvorgang
dieses anderen Teilprogramms, unter Verwendung des Verschlüsselungs-Schlüssels, der
in das mindestens eine Teilprogramm eingebettet ist, das bereits
entschlüsselt
worden ist, und in dem Platzbereich angeordnet ist, durchführt.
-
Mit
dieser Anordnung ist, gerade dann, wenn ein nicht legitimer Benutzer
die Kontrolle des Systems übernimmt
und versucht, ein bestimmtes Teilprogramm in den Speicher einzuladen,
um darauf in einer nicht legitimen Art und Weise zuzugreifen, da das
andere Teilprogramm, das einen Verschlüsselungs-Schlüssel besitzt,
der für
die Entschlüsselung dieses
bestimmten Teilprogramms erforderlich ist, nicht in dem Speicher
existiert, keine nicht legitime Referenz möglich.
-
Zusätzlich ist
es auch, um die ähnlichen,
vorteilhaften Effekte zu erreichen, akzeptierbar, dass die die verschlüsselten
Daten entschlüsselnde
Vorrichtung weiterhin eine ein Programm einbettende Einheit, die
so betreibbar ist, um in mindestens eines der Teilprogramme eingebettet
zu sein, und zwar im voraus während
eines Verfahrens einer Programmverschlüsselung, ein einen Verschlüsselungs-Schlüssel erzeugendes
Programm zum Erzeugen eines Teils oder des gesamten Verschlüsselungs-Schlüssels, der
in einem Entschlüsselungsvorgang
eines anderen Teilprogramms verwendet wird, wobei die Entschlüsselungseinheit
den Entschlüsselungsvorgang dieses
anderen Teilprogramms durchführt,
unter Verwendung des Verschlüsselungs-Schlüssels, der über die
Ausführung
des den Verschlüsselungs-Schlüssels erzeugenden
Programms erzeugt ist, das in dem mindestens einen Teilprogramm
eingebettet ist, das bereits verschlüsselt worden ist und in dem
Speicherraum angeordnet worden ist, oder dass die die verschlüsselten
Daten entschlüsselnde
Vorrichtung weiterhin einen Verschlüsselungs-Schlüssel für eine einen
Schlüssel
einbettende Einheit besitzt, die so betreibbar ist, um in mindestens
eines der Teilprogramme eingebettet zu werden, und zwar im voraus
während
des Vorgangs einer Programmverschlüsselung, einen Verschlüsselungs-Schlüssel für einen
Schlüssel,
der dazu verwendet wird, um einen Verschlüsselungs-Schlüssel zu
entschlüsseln,
der in einem Entschlüsselungsvorgang
eines anderen Teilprogramms verwendet werden soll, wobei die Entschlüsselungseinheit
den Entschlüsselungsvorgang
dieses anderen Teilprogramms durchführt, und zwar unter Verwendung
des Verschlüsselungs-Schlüssels, der
mit dem Verschlüsselungs-Schlüssel für einen
Schlüssel entschlüsselt ist,
der von dem mindestens einen Teilprogramm erhalten ist, das bereits
entschlüsselt
ist und in dem Speicherraum angeordnet ist, aufweist.
-
Weiterhin
ist es auch möglich,
eine Anordnung zu haben, bei der die Ladeeinheit dynamisch eine
absolute Adresse jedes Platzbereichs bestimmt, bevor eines der Teilprogramme,
das entschlüsselt werden
soll, zuerst in den Speicherraum angeordnet wird.
-
Mit
dieser Anordnung ändert
sich die Position in dem Speicher, in dem das Programm eingeladen
ist, zu jedem Zeitpunkt, zu dem das Programm ausgeführt wird;
deshalb ist gerade dann, wenn ein nicht legitimer Benutzer versucht,
auf die Inhalte eines Programms in einer nicht legitimen Art und
Weise durch Betrachten der Inhalte des Speichers zuzugreifen, während die
Ladeposition vermutet wird, die Möglichkeit des Versuchs, dass
dieser erfolgreich ist, niedrig.
-
Die
vorliegende Erfindung schafft auch eine Anordnung, bei der die Entschlüsselungseinheit
jedes Teilprogramm unter Verwendung eines Entschlüsselungsunterstützungsprogramms
entschlüsselt,
wobei die die verschlüsselten
Daten entschlüsselnde
Vorrichtung weiterhin eine ein Entschlüsselungsprogramm bestätigende
Einheit aufweist, um eine Authentizität des Entschlüsselungsunterstützungsprogramms
zu bestätigen,
und die Entschlüsselungseinheit
die das Entschlüsselungsprogramm bestätigende
Einheit die Authentizität
des Entschlüsselungsunterstützungsprogramms
vor einer Entschlüsselung
jedes Teilprogramms bestätigen
lässt, und
jedes Teilprogramm nur dann entschlüsselt, wenn die Authentizität bestätigt ist.
-
Mit
dieser Anordnung ist es nicht möglich, auf
die Inhalte des Programms in einer nicht legitimen Art und Weise über einen
Missbrauch des Entschlüsselungsunterstützungsprogramms
zuzugreifen; deshalb ist es möglich,
das Sicherheitsniveau zu allen Zeitpunkten einer Entschlüsselung
zu verbessern.
-
Es
ist auch akzeptierbar, eine Anordnung zu haben, bei der die die
verschlüsselten
Daten entschlüsselnde
Vorrichtung weiterhin eine einen nicht legitimen Zugriff verhindernde
Einheit aufweist, die so betreibbar ist, um, wenn eine Unterbrechung
erfasst wird, einen einen nicht legitimen Zugriff verhindernden
Vorgang durch Löschen
von einem oder mehreren Teilprogramm(en), die bereits in dem Speicherraum
angeordnet sind, durchzuführen.
-
Mit
dieser Anordnung ist es möglich,
auf die Inhalte des Programms in einer nicht legitimen Art und Weise über einen
Missbrauch einer Unterbrechung zuzugreifen.
-
Zusätzlich ist
es auch möglich,
eine Anordnung zu haben, bei der die den nicht legitimen Zugriff verhindernde
Einheit ein Dummy-Programm besitzt, das dann ausgeführt wird,
wenn der den nicht legitimen Zugriff verhindernde Vorgang durchgeführt wird.
-
Auch
ist es, indem eine Anordnung vorhanden ist, bei der die den nicht
legitimen Zugriff verhindernde Einheit im voraus eine Registrierung
von einer Position oder mehreren Positionen, wobei an jeder davon
eine Unterbrechung für
eine Prüfung
eines legitimen Programms auftritt, empfängt und keinen den nicht legitimen
Zugriff verhindernden Vorgang dann durchführt, wenn die erfasste Unterbrechung an
einer der registrierten Positionen aufgetreten ist, möglich, eine
Schwierigkeit zu vermeiden, die durch eine Situation hervorgerufen
ist, bei der gerade nicht legitime Unterbrechungen verhindert werden
müssen,
um nicht legitime Zugriffe zu verhindern.
-
Es
ist auch akzeptierbar, dass die die verschlüsselten Daten entschlüsselnde
Vorrichtung weiterhin eine Speicherstelleninformations-Speichereinheit
aufweist, die so betreibbar ist, um darin Speicherplatzinformationen
zu speichern, die verschlüsselt
worden sind, und, für
jedes Teilprogramm, einen Speicherplatz in der Speichereinheit anzeigt,
wobei die Entschlüsselungseinheit
von der Speichereinheit liest und jedes der Teilprogramme entsprechend
den Speicherplatzinformationen entschlüsselt, die die Entschlüsselungseinheit
von der Speicherplatzinformations-Speichereinheit gelesen hat und
entschlüsselt
hat.
-
Mit
dieser Anordnung werden nur legitime Teilprogramme ausgeführt. Mit
anderen Worten ist es möglich,
einen nicht legitimen Zugriff, der durch einen nicht legitimen Benut zer
durchgeführt
wird, zu verhindern, der ein Programm ausführt, das für den Zweck des nicht legitimen
Zugriffs dient und in eine Speichervorrichtung anstelle des legitimen
Teilprogramms gespeichert worden ist. Zusätzlich ist es auch akzeptierbar,
dass die die verschlüsselten
Daten entschlüsselnde
Vorrichtung weiterhin eine Speicherplatzinformations-Authentifizierungseinheit
aufweist, die so betreibbar ist, um zu beurteilen, ob die Speicherplatzinformationen
authentisch sind, wobei dann, wenn die die Speicherplatzinformationen
authentifizierende Einheit eine Bestätigung ermittelt, die Entschlüsselungseinheit
von der Speichereinheit liest und jedes der Teilprogramme entschlüsselt.
-
Weiterhin
können
die vorteilhaften Effekte, die hier erwähnt sind, erreicht werden durch
(i) ein verschlüsseltes
Daten entschlüsselndes
Verfahren, das durch die verschlüsselte
Daten entschlüsselnde Vorrichtung,
gemäß der vorliegenden
Erfindung, ausgeführt
wird, oder (ii) ein Programm, über
das ein Computer dieses Entschlüsselungsverfahren
ausführen
lässt.
Zusätzlich
sind die nachfolgenden Punkte dabei nützlich, die vorteilhaften Effekte,
die vorstehend erwähnt
sind, zu erreichen: das Programm, das die Speicherplatzinformations-
und Verschlüsselungs-Schlüssel, den
Verschlüsselungs-Schlüssel, erzeugt,
und die das verschlüsselte
Programm erzeugende Vorrichtung, die das Programm verschlüsselt, während der „Verschlüsselungs-Schlüssel für einen
Schlüssel" erzeugt wird, wobei
alle davon durch die die verschlüsselten
Daten Entschlüsselungsvorrichtung
verwendet werden, die die vorstehend angegebenen Merkmale besitzt.
-
1 zeigt
ein Blockdiagramm der Struktur einer Programmladeeinrichtung, die
eine Ausführungsform
der Vorrichtung zum Entschlüsseln
von verschlüsselten
Daten der vorliegenden Erfindung ist, dargestellt in einem Computersystem,
in dem die Programmladeeinrichtung arbeitet;
-
2 zeigt
eine konzeptmäßige Zeichnung, um
die Korrespondenz in der Ausführungsform
zwischen Speicheradresseninformationen und Speicherstellen von Teilprogrammen
darzustellen, wobei die Speicherstellen in einer sekundären Speichervorrichtung
vorhanden sind und durch die Speicheradresseninformationen spezifiziert
sind;
-
3 zeigt
eine konzeptmäßige Zeichnung, um
ein Beispiel der Struktur und der Inhalte der Speicherstelleninformationen
in der vorliegenden Ausführungsform
darzustellen;
-
4 zeigt
eine konzeptmäßige Zeichnung, um
zu zeigen, wie Teilprogramme, entschlüsselt in der vorliegenden Ausführungsform,
in dem gemeinsam geteilten Speicher angeordnet sind;
-
5 zeigt
ein Flussdiagramm, das die Betriebsweise der Programmladeeinrichtung
in dem Verschlüsselungs-
und Ladevorgang eines verschlüsselten
Programms in der vorliegenden Ausführungsform darstellt;
-
6 stellt Beispiele von Bereichsadresseninformationen
dar;
-
7 stellt
andere Beispiele von Bereichsadresseninformationen dar;
-
8 zeigt
eine konzeptmäßige Zeichnung, um
die allgemeine Struktur des die Dummy-Daten einbettenden Prozesses,
entlang einer Zeitachse, darzustellen;
-
9 zeigt
ein Blockdiagramm, um die Struktur der Programmladeeinrichtung in
einem modifizierten Beispiel darzustellen;
-
10 zeigt
eine schematische Zeichnung, um die Aufruf-Beziehung zwischen Teilprogrammen, definiert
durch die Aufruf-Beziehungsinformationen, darzustellen;
-
11 zeigt
eine schematische Zeichnung, um Speicherstellen von Teilprogrammen
zum Zeitpunkt eines Entschlüsselungsvorgangs
entlang einer Zeitachse darzustellen;
-
12 zeigt
ein Blockdiagramm, um die Struktur der Programmladeeinrichtung in
einem Modifikationsbeispiel darzustellen;
-
13 zeigt
ein Blockdiagramm, um die Struktur der Programmladeeinrichtung in
einem Modifikationsbeispiel darzustellen;
-
14 zeigt
ein Blockdiagramm, um die Struktur der Programmladeeinrichtung in
einem anderen Modifikationsbeispiel darzustellen;
-
15A bis 15E zeigen
konzeptmäßige Zeichnungen,
um darzustellen, wie entschlüsselte Teilprogramme
in dem Modifikationsbeispiel in dem gemeinsam geteilten Speicher
M angeordnet sind;
-
16 stellt die Inhalte der Speicherverwaltungsinformationen
in dem Modifikationsbeispiel dar; und
-
17 zeigt
ein Flussdiagramm, um den Ablauf des Vorgangs einer Bestimmung der
Speicherstelle eines Teilprogramms in dem Modifikationsbeispiel
darzustellen.
-
Bester Modus zum Ausführen der Erfindung
-
Das
Nachfolgende beschreibt eine Ausführungsform einer Vorrichtung
zum Entschlüsseln
von verschlüsselten
Daten der vorliegenden Erfindung unter Bezugnahme auf die Zeichnungen.
-
Allgemeiner Aufbau
-
1 zeigt
ein Blockdiagramm der Strukturen einer Programmladeeinrichtung 1,
die eine Ausführungsform
der Vorrichtung zum Entschlüsseln
von verschlüsselten
Daten der vorliegenden Erfindung, und dazu in Bezug stehenden Vorrichtungen,
ist, dargestellt mit anderen Vorrichtungen in einem Computersystem,
in dem die Programmladeeinrichtung und dazu in Bezug stehende Vorrichtungen
arbeiten. In der vorliegenden Ausführungsform sind verschlüsselte Daten,
die durch die Vorrichtung zum Entschlüsseln von verschlüsselten
Daten entschlüsselt werden
sollen, ein Programm.
-
Die
Programmladeeinrichtung 1 in der vorliegenden Ausführungsform
liest, gemäß einer
Anweisung von einem Betriebssystem (nachfolgend bezeichnet als das
OS), ein verschlüsseltes
Programm von einer sekundären
Speichervorrichtung S und entschlüsselt es und lädt es dann
in einen gemeinsam geteilten Speicher M, verwendet zur Ausführung, hinein. "Laden" bedeutet ein Programm
in einen Speicherraum hinein anzuordnen, um es auszuführen.
-
Die
Charakteristika der Programmladeeinrichtung 1 liegen in
der Verwendung des Überlegungsverfahrens,
das eine herkömmliche
Technik ist, die dazu verwendet wird, Speicher zu verwalten, um eine
Sicherheit von verschlüsselten
Programmen zu schützen.
Das Überlegungsverfahren
ist eine Technik, die dazu verwendet wird, ein Programm in einen Speicher
hinein zu speichern, der kleiner in der Größe als das Programm ist. Das Überlegungsverfahren ist
dasjenige, ein Programm in Segmente (nachfolgend bezeichnet als "Teilprogramme") zu unterteilen und
sie in einen selben Speicherbereich zu gestaffelten Zeiten anzuordnen.
Obwohl ein Speicher groß genug
zum Anordnen des gesamten Programms darin gleichzeitig vorhanden
ist, setzt die Programmladeeinrichtung 1 in der vorliegenden
Ausführungsform universell
das Überlegungsverfahren
ein, um einen Sicherheitsschutz zu realisieren. Insbesondere verschlüsselt die
Programmladeeinrichtung 1 das Programm in der Form einer
Gruppe von Teilprogrammen und speichert es, und wenn das Programm
ausgeführt
werden muss, entschlüsselt
die Programmladeeinrichtung 1 das Programm in Einheiten
von Teilprogrammen und lädt
sie zu einem selben Bereich des gemeinsam geteilten Speichers M
durch aufeinander folgendes Überschreiben
eines mit dem anderen. Weiterhin ist, da die Position und die Zeitabstimmung
eines Anordnens der Teilprogramme bestimmt werden, während eine
Geheimhaltung berücksichtigt wird,
die Fähigkeit
eines Sicherheitsschutzes sehr viel höher.
-
Die
Vorgänge
einer Entschlüsselung
und eines Ladens werden in Einheiten von Teilprogrammen durchgeführt, die
einen Objektcode, erzeugt von einer Quellendatei oder einer Gruppe
von Quellendateien, die zueinander in Bezug gesetzt sind, bezeichnen.
Genauer gesagt bezeichnet ein Objektcode ein Unterprogramm, das
eine Programmkomponente ist, oder ein Dateiverzeichnismodul selbst.
-
Durch
Laden eines Programms in Segmenten ähnlich diesem wird die Möglichkeit,
dass die Inhalte des gesamten Programms in einer nicht legitimen
Referenz aufgedeckt werden, klein. Dies kommt daher, dass, um auf
das gesamte Programm Bezug zu nehmen, eine nicht legitime Referenz
zu jedem Zeitpunkt wiederholt werden muss, zu dem ein Teilprogramm
geladen wird.
-
Es
sollte allerdings angemerkt werden, dass ein Sicherheitsschutz nicht
in dem Überlegungsverfahren
berücksichtigt
wird, da der ursprüngliche Zweck
des Überlegungsverfahrens
derjenige ist, Speicherressourcen einzusparen. Demzufolge verbleibt
ein Teilprogramm, das dahingehend beendet wurde, dass es verarbeitet
wird, in dem Speicher, bis es durch ein nächstes Teilprogramm überschrieben wird.
Auch ist es, da die Adresse des Bereichs, an der das Programm eingeladen
ist, festgelegt ist, einfach für
einen Dechiffrierer, auf das Programm zuzugreifen. Zusätzlich ist
es möglich,
teilweise auf das Programm Bezug zu nehmen oder es zu verändern, und
zwar in einer nicht legitimen Art und Weise, indem eine Unterbrechungsfunktion
missbraucht wird oder ein missbräuchlicher
Eingriff in das die Entschlüsselung
unterstützende
Programm vorgenommen wird.
-
Die
Programmladeeinrichtung 1 der vorliegenden Erfindung führt das Überlegungsverarbeitungsverfahren
durch Anordnen davon so, dass der Sicherheitsschutz berücksichtigt
wird, ebenso wie Prüfungen,
ob ein Missbrauch der Unterbrechungsfunktion oder ein Missbrauch
des Entschlüsselungsunterstützungsprogramms
vorhanden ist, aus.
-
Aufbau
-
Allgemeiner Aufbau
-
Das
Nachfolgende beschreibt den Aufbau der Programmladeeinrichtung 1.
-
Die
Programmladeeinrichtung 1 weist eine Steuereinheit 11,
die den gesamten Prozess steuert; eine Entschlüsselungseinheit 12,
die verschlüsselte Daten,
einschließlich verschlüsselter
Teilprogramme, unter Verwendung eines eine Entschlüsselung
unterstützenden
Programms P entschlüsselt;
eine das Entschlüsselungsunterstützungsprogramm
authentifizierende Einheit 13, die eine Authentizität des die Verschlüsselung
unterstützenden
Programms P vor einer Entschlüsselung
prüft;
eine eine Speicherstelle definierende Einheit 14, die die
Position und den Zeitpunkt des Anordnens eines entschlüsselten
Teilprogramms in den gemeinsam geteilten Speicher M bestimmt; und
eine einen nicht legitimen Zugriff verhindernde Einheit 15,
die einen nicht legitimen Zugriff verhindert, der dadurch vorgenommen
werden kann, dass eine Unterbrechung in das Teilprogramm hinein,
das ausgeführt
werden soll, in dem gemeinsam geteilten Speicher M vorgenommen wird,
auf.
-
Weiterhin
weist die Programmladeeinrichtung 1 eine Speichereinheit 16,
die darin verschiedene Arten von verschlüsselten Informationen, verwendet
in dem Programmentschlüsselungsvorgang,
und einen Verschlüsselungsschlüssel speichert;
und eine Speicheradresseninformations-Authentifizierungseinheit 17,
die eine Authentizität
von Speicheradresseninformationen bestätigt (wird später erläutert),
die in der Speichereinheit 16 gespeichert sind; auf. Die Entschlüsselungseinheit 12 ist
aus einer Speicherplatz-Entschlüsselungseinheit 121,
einer Speicherplatzinformations-Entschlüsselungseinheit 122 und einer
Teilprogramm-Entschlüsselungseinheit 123,
die unterschiedliche Arten von Daten, jeweils, handhaben, aufgebaut.
-
Die
Informationen, gespeichert in der Speichereinheit 16, umfassen
einen Verschlüsselungsschlüssel 161,
der in dem Entschlüsselungsvorgang verwendet
wird; Speicheradresseninformationen 162, die eine Position
in der sekundären
Speichervorrichtung S anzeigen, in die hinein ein verschlüsseltes
Teilprogramm, das ein Entschlüsselungs-Target ist, gespeichert
werden soll; und eine Speicherstelleninformation 163, die
eine Position in dem gemeinsam geteilten Speicher M anzeigt, in
die hinein das entschlüsselte
Teilprogramm gespeichert werden soll.
-
Auf
die Speicheradresseninformationen 162 wird Bezug genommen,
wenn das entschlüsselte Teilprogramm,
das ein Verschlüsselungs-Target
ist, von der sekundären
Speichervorrichtung S gelesen wird. Da die Speicheradresseninformationen 162 gespeichert
werden, nachdem sie verschlüsselt
worden sind, entschlüsselt
die Speicheradressen-Entschlüsselungseinheit 121 diese.
Dann prüft,
nachdem die Speicheradresseninformatio nen 162 entschlüsselt sind,
die Speicheradresseninformations-Authentifizierungseinheit 17 deren
Authentizität
(prüft,
ob sie missbraucht worden sind).
-
2 zeigt
eine konzeptmäßige Zeichnung, um
die Korrespondenz zwischen den Speicheradresseninformationen 162 und
Speicherstellen von Teilprogrammen zu zeigen, wobei die Speicherstellen
in einer sekundären
Speichervorrichtung S vorhanden sind und durch die Speicheradresseninformationen 162 spezifiziert
sind. Die Speicheradresseninformationen 162 sind aus Identifikationsinformationen 210 der
Teilprogramme und Adresseninformationen 220, die anzeigen,
an welchen Positionen die Teilprogramme jeweils in der sekundären Speichervorrichtung
S gespeichert sind, aufgebaut. Dabei sind so viele Teile von Speicheradresseninformationen
wie die Anzahl von Teilprogrammen vorhanden. Die Teile der Adresseninformationen 220 sind
verschlüsselt.
-
Die
Speicherstelleninformationen 163 sind Informationen, die
definieren, an welcher Position des gemeinsam geteilten Speichers
M jedes der Teilprogramme, nachdem es entschlüsselt ist, angeordnet werden
sollte. Die Stellenpositionen, definiert im voraus, zu haben, ist
eine Voraussetzung zum Ausführen
des Überlegungsverfahrens,
mit dem jedes Teil von Daten sequenziell in einen vorbestimmten Bereich
hinein überschrieben
wird. Die Speicherstelleninformationen 163 werden, nachdem
sie verschlüsselt
sind, gespeichert, und werden entschlüsselt, wenn auf sie durch die
die Speicherstelleninformationen entschlüsselnde Einheit 122 zurückgegriffen
wird.
-
3 zeigt
eine konzeptmäßige Zeichnung, um
ein Beispiel des Aufbaus und der Inhalte der Speicherstelleninformationen
darzustellen. Die Speicherstelleninformationen zeigen an, welches
Programm in den gemeinsam geteilten Speicher S zu welchem Zeitpunkt
angeordnet werden sollte (d.h. in welcher Reihenfolge). Der Teilprogramm-Speicherbereich in
dem gemeinsam geteilten Speicher M ist in drei Bereiche unterteilt.
-
Die
Speicherstelleninformationen 163, dargestellt in 3,
sind aus Bereich-Identifikations-Informationsbereichen 310 und
Teilprogramm-Identifikations-Informationsbereichen 320 zusammengesetzt.
Die Bereich-Identifikations-Informationsbereiche 310 speichern
darin Identifikationsinformationen, die anzeigen, zu welchem Bereich
die Informationen in Bezug gesetzt sind. Die Teilprogramm-Identifikations-Informationen 320 speichern
darin (i) Identifikations-Informationen des Teilprogramms, das in
den Bereich, angezeigt durch die Identifikations-Informationen,
gespeichert in dem Bereich-Identifikations-Informationsbereich 310,
angeordnet werden soll, und (ii) Daten, die anzeigen, in welcher
Reihenfolge jedes Teilprogramm angeordnet werden soll.
-
Die
Speicherstelleninformationen 163 zeigen an, dass der Teilprogramm-Speicherbereich in
dem gemeinsam geteilten Speicher Min drei Bereiche unterteilt ist,
und dass drei Teilprogramme aufeinander folgend in dem Bereich 1,
vier Teilprogramme in dem Bereich 2 und zwei Teilprogramme in dem
Bereich 3 angeordnet werden können.
-
4 zeigt
eine konzeptmäßige Zeichnung, um
zu zeigen, wie Teilprogramme, die entschlüsselt sind, in dem gemeinsam
geteilten Speicher M gemäß den Speicherstelleninformationen 163 zu
dem Zeitpunkt einer Programmausführung
angeordnet sind. 4 stellt die Teilprogramme dar,
die jeweils in einem der drei Speicherbereiche in dem gemeinsam geteilten
Speicher M angeordnet sind, und zwar entlang der Zeitachse (horizontale
Achse) der Programmausführung
des Programms. Zum Beispiel sind die Teilprogramme A, B und C sequenziell
in dem Bereich 1 angeordnet, und während der Zeitperiode t1 existieren
das Teilprogramm A (der Bereich 1), das Teilprogramm B (der Bereich
2) und das Teilprogramm H (der Bereich 3) nebeneinander in dem gemeinsam
geteilten Speicher M. Die Teilprogramme, die nebeneinander in dem
gemeinsam geteilten Speicher M in derselben Zeitperiode existieren,
können
eine Unabhängigkeit
voneinander haben, zum Beispiel durch Aufrufen eines Verfahrens
in einem anderen Teilprogramm während
der Ausführung
des Prozesses.
-
Die
Speicherstelleninformationen werden, wie vorstehend erwähnt ist,
durch die die Speicherstelle definierende Einheit 14 vor
dem Verschlüsselungsvorgang
des Programms, das ein Verschlüsselungs-Target
ist, erzeugt. Dieser Erzeugungsvorgang ist grundsätzlich derselbe
wie der Erzeugungsvorgang desselben Typs von Stelleninformationen,
verwendet in dem herkömmlichen Überlegungsverfahren;
allerdings wird, in der vorliegenden Ausführungsform, dieser Erzeugungsvorgang
in einer solchen Art und Weise durchgeführt, dass ein Sicherheitsschutz
berücksichtigt
wird. Der Erzeugungsprozess in der vorliegenden Ausführungsform
wird später
erläutert.
-
Beschreibung der Hauptteile des Aufbaus
-
Das
Nachfolgende erläutert
weiterhin im Detail die Hauptteile des Aufbaus, der bis hier allgemein erläutert worden
ist.
-
Die das Entschlüsselungs-Unterstützungsprogramm authentifizierende
Einheit 13
-
Die
das Entschlüsselungs-Unterstützungsprogramm
authentifizierende Einheit 13 bestätigt, ob das Entschlüsselungs-Unterstützungsprogramm
P authentisch ist, und zwar vor dem Entschlüsselungsvorgang der verschiedenen
Arten von verschlüsselten
Daten. Genauer gesagt führt,
(i) wenn die Teilprogramm-Entschlüsselungseinheit 123 dazu übergeht, ein
verschlüsseltes
Teilprogramm zu entschlüsseln, (ii)
wenn die Speicheradressen-Entschlüsselungseinheit 121 dazu übergeht,
verschlüsselte
Speicheradresseninformationen zu entschlüsseln, und (iii) wenn die Speicherstelleninformations-Entschlüsselungseinheit 122 dazu übergeht,
verschlüsselte
Speicherstelleninformationen zu entschlüsseln, die Entschlüsselungs-Unterstützungsprogramm-Authentifizierungseinheit 13 einen
Authentifizierungsprozess des Entschlüsselungs-Unterstützungsprogramms
P auf eine Anforderung von jeder dieser Komponenten hin durch. Die
Entschlüsselungs-Unterstützungsprogramm-Authentifizierungseinheit 13 führt das
Ergebnis des Authentifizierungsprozesses zu der Quelle der Anforderung
zurück.
Wenn das Ergebnis der Authentifizierung "authentisch (nicht missbraucht)" ist, empfängt die
Entschlüsselungs-Unterstützungsprogramm-Authentifizierungseinheit 13 Daten,
die ein Entschlüsselungs-Target
sind, von der Quelle der Anforderung, und sendet sie zu dem Entschlüsselungs-Unterstützungsprogramm
P, und empfängt dann
das Ergebnis des Entschlüsselungsprozesses von
dem Entschlüsselungs-Unterstützungsprogramm
P und überträgt es zu
der Quelle der Anforderung.
-
Das
Authentifizierungsprogramm, durchgeführt durch die Entschlüsselungs-Unterstützungsprogramm-Authentifizierungseinheit 13,
ist dasjenige, zu bestätigen,
dass das Entschlüsselungs-Unterstützungsprogramm
P nicht zwischen dem letzten Zeitpunkt, zu dem das Programm ausgeführt wurde,
und dem momentanen Zeitpunkt missbraucht wurde. Für die Beurteilung
einer Authentizität
wird auf einige Punkte, die die folgenden umfassen, Bezug genommen:
(i) ob die Größe des Entschlüsselungs-Unterstützungsprogramms
P geändert
worden ist, (ii) Daten und Zeitpunkte von Aktualisierungen, und
(iii) Einwege-Hash-Werte des Entschlüsselungs-Unterstützungsprogramms
P. Es sollte angemerkt werden, dass das Verfahren einer Authentifizierung
nicht hierauf begrenzt ist, und es ist auch akzeptierbar, eine Technik
zu verwenden, die in Verfahren einer Authentifizierung von elektronischen
Signaturen verwendet wird. Um diesen Authentifizierungsvorgang durchzuführen, speichert
die Entschlüsselungs-Unterstützungsprogramm-Authentifizierungseinheit 13 darin die
Größe des Entschlüsselungs- Unterstützungsprogramms
P zu dem Zeitpunkt der ersten Ausführung und Informationen über Datum
und Zeiten von Aktualisierungen ebenso wie über Hash-Werte.
-
Die Speicheradresseninformations-Authentifizierungseinheit 17
-
Die
Speicheradresseninformations-Authentifizierungseinheit 17 bestätigt, ob
Speicheradresseninformationen authentisch sind, wobei die Speicheradresseninformationen
durch das Entschlüsselungs-Unterstützungsprogramm
P entsprechend einer Anweisung von der Speicheradressen-Entschlüsselungseinheit 121 entschlüsselt worden
sind. Dies dient dazu, zu bestätigen,
dass die Speicheradresseninformationen nicht zwischen dem letzten Zeitpunkt,
zu dem sie ausgeführt
wurden, und dem momentanen Zeitpunkt missbraucht worden sind.
-
Die
Speicheradresseninformations-Authentifizierungseinheit 17 führt den
Authentifizierungsvorgang der Speicheradresseninformationen unter
Verwendung einer Authentifizierungstechnik durch, die normal eine
solche Einwege-Hash-Funktion verwendet, und führt das Ergebnis zu der Speicheradressen-Entschlüsselungseinheit 121 zurück. Um diesen Authentifizierungsprozess
durchzuführen,
speichert die Speicheradresseninformations-Authentifizierungseinheit 17 darin
Informationen, die notwendig sind, die sich auf Speicheradresseninformationen
beziehen (der Hash-Wert zu dem Zeitpunkt der ersten Entschlüsselung
und andere Teile von Informationen, allgemein verwendet in dem Authentifizierungsprozess).
-
Die Steuereinheit 11
-
Wenn
die OS spezifiziert, welches Teilprogramm entschlüsselt werden
soll, überträgt die Steuereinheit 11 Identifikationsinformationen
des Teilprogramms, die entschlüsselt
werden sollen, zu der Speicheradressen-Entschlüsselungseinheit 121,
und weist die Speicheradressen-Entschlüsselungseinheit 121 an,
die Speicheradresse des Teilprogramms zu erhalten und zu entschlüsseln. Wenn
die Speicheradressen-Entschlüsselungseinheit 121 die
entschlüsselte
Speicheradresse ausgibt, sendet die Steuereinheit 11 sie
zu der Teilprogramm-Entschlüsselungseinheit 123 und
weist die Teilprogramm-Entschlüsselungseinheit 123 an,
das Teilprogramm zu entschlüsseln.
Parallel hierzu sendet die Steuereinheit 11 Identifikationsinformationen
des Teilprogramms, das das Entschlüsselungs-Target ist, zu der
Speicherstelleninformations-Entschlüsselungseinheit 122,
und weist die Speicherstelleninformations- Entschlüsselungseinheit 122 an,
Speicherstelleninformationen für
das Teilprogramm zu entschlüsseln.
-
Die
Steuereinheit 11 lädt
das entschlüsselte Teilprogramm,
das durch die Teilprogramm-Entschlüsselungseinheit 123 ausgegeben
worden ist, in einen der Bereiche in den gemeinsam geteilten Speichers
M entsprechend zu den Speicherstelleninformationen, ausgegeben durch
die Speicherstelleninformations-Entschlüsselungseinheit 122.
Wie in 3 dargestellt ist, sind die Speicherstelleninformationen
aus Identifikationsinformationen jedes Teilprogramms und aus Identifikationsinformationen
jedes Bereichs aufgebaut, und dort sind keine Informationen vorhanden,
die umfasst sind, die einen absoluten Adressenwert jedes Bereichs
anzeigen. Der absolute Adressenwert jedes Bereichs ist in der Steuereinheit 11 gespeichert.
-
Während des
Prozesses, der vorstehend erwähnt
ist, weist, wenn dort ein Problem in Bezug auf das Entschlüsselungs-Unterstützungsprogramm
P oder die Speicheradresseninformationen vorhanden ist (wenn eines
oder beide davon dahingehend bestätigt wurden, nicht authentisch
zu sein), die Steuereinheit 11 andere Komponenten an, den
Prozess fortzuführen
und einen Prozess eines Löschens
verschiedener Arten von Daten durchzuführen (Teilprogramme, Speicherstelleninformationen
und Speicheradresseninformationen), die bis hier an diesem Punkt
entschlüsselt
worden sind.
-
Speicherstellen-Definitionseinheit 14
-
Zu
dem Zeitpunkt einer Verschlüsselung
des Teilprogramms erzeugt die Speicherstellen-Definitionseinheit 14 die
Speicherstelleninformationen 163, auf die in dem Entschlüsselungsprozess,
der vorstehend erwähnt
ist, Bezug genommen wird, und speichert sie in die Speichereinheit 16 hinein.
Das Teilprogramm wird durch die das verschlüsselte Programm erzeugende
Vorrichtung C verschlüsselt.
Die das verschlüsselte
Programm erzeugende Vorrichtung C wandelt das Programm (eine Gruppe
von Teilprogrammen), das ein Verschlüsselungs-Target ist, in eine
Ausführungsform
um und verschlüsselt
das umgewandelte Programm, bevor es in der sekundären Speichervorrichtung
gespeichert wird, so dass jedes Teilprogramm in dem Speicher in
der Reihenfolge angeordnet ist, die in den Speicherstelleninformationen spezifiziert
ist.
-
Zuerst
erhält
die Speicherstellen-Definitionseinheit 14 von den Header-Informationen, und
dergleichen, verschiedene Arten von Informationen, die zum Bestimmen
der Stellen in dem Speicher für
die Teilprogramme notwendig sind. Weiterhin erhält die Speicherstellen-Definitionseinheit 14 solche
Kriterien, die als wichtig zu dem Zeitpunkt einer Bestimmung angesehen
werden sollten (diejenigen, die als Parameter durch einen System-Administrator
spezifiziert sind), umfassend Informationen über den gemeinsam geteilten
Speicher M (z.B. den Teilprogrammspeicherbereich und die Anzahl
von Bereichen, die darin umfasst sind, und deren Größen), in denen
das Teilprogramm zu dem Zeitpunkt einer Ausführung angeordnet werden soll.
Die Speicherstellen-Definitionseinheit 14 erzeugt Speicherstelleninformationen
von diesen Arten von Informationen. Genauer gesagt nimmt die Speicherstellen-Definitionseinheit 14 auf
die Informationen, wie folgt, Bezug, wenn die Speicherstelleninformationen
erzeugt werden:
- (1) Die Größe jedes Teilprogramms (die
Größe vor einer
Verschlüsselung,
d.h. die Größe nach
einer Entschlüsselung)
- (2) Eine Abhängigkeit
zwischen den Teilprogrammen (die Beziehung zwischen dem Teilprogramm, das
aufruft, und dem Teilprogramm, das aufgerufen ist, und der Anzahl
von Aufrufen)
- (3) Das Niveau einer Vertraulichkeit jedes Teilprogramms
- (4) Das Niveau einer Funktion, die erforderlich ist
-
Der
Prozess einer Bestimmung von Stellen in dem Speicher entsprechend
zu diesen Teilen von Informationen wird auch in dem herkömmlichen Überlegungsvorgang
durchgeführt;
allerdings wird, in der vorliegenden Ausführungsform, da ein Sicherheitsschutz
des Programms vorgesehen ist, das Element (3) als wichtiger angesehen,
und das Element (4) besitzt eine geringere Priorität, verglichen
mit dem Fall, bei dem eine Speicherstelle unter dem normalen Überlegungsverfahren
bestimmt wird.
-
Dementsprechend
erzeugt die Speicherstellen-Definitionseinheit 14 solche
Speicherstelleninformationen, durch die der Lade- und Löschvorgang
für ein
Teilprogramm, das ein hohes Niveau einer Vertraulichkeit besitzt,
häufig
wiederholt wird, so dass ein solches Teilprogramm in dem gemeinsam
geteilten Speicher M für
eine minimale Zeitdauer angeordnet ist und durch ein anderes Teilprogramm überschrieben
wird, sobald der Vorgang abgeschlossen ist. Die Niveaus einer Vertraulichkeit
von Teilprogrammen können
spezifiziert werden, zum Beispiel über eine Evaluierung jedes
Teilprogramms durch einen System-Administrator, wobei die Evaluierungswerte
der Vertraulichkeit in die Speicherstellen-Definitionseinheit 14 als
Parameter eingegeben werden.
-
Zusätzlich ist
es auch möglich,
Speicherstelleninformationen in der folgenden Art und Weise zu spezifizieren:
die Speicherstellen-Definitionseinheit 14 erzeugt eine
Mehrzahl von Mustern von Stelleninformationen als Kandidaten, unter
Verwendung von Algorithmen, die herkömmlich zum Bestimmen von Speicherstelleninformationen
verwendet werden. Dann wird die Vielzahl der Stelleninformationskandidaten
entsprechend einem Satz von Kriterien im Hinblick auf einen Sicherheitsschutz
evaluiert, und der beste eine wird als Stelleninformationen spezifiziert werden.
Eines der Kriterien ist, zum Beispiel, "die abgeschätzte Länge der Zeitperiode, während der
ein Teilprogramm, das ein hohes Niveau einer Vertraulichkeit besitzt,
in dem Speicher existieren wird".
Alternativ ist es auch akzeptierbar, dass ein System-Administrator
auf die Mehrzahl der Stelleninformationskandidaten, erzeugt durch
die Speicherstellen-Definitionseinheit 14, Bezug nimmt,
und einen davon auswählt.
-
Weiterhin
wäre es,
wenn es notwendig ist, den gesamten Wert der Größen der Teilprogramme, entwickelt
in dem Speicher zu derselben Zeit (die Größe des Teils des Programms,
auf das zu einem Zeitpunkt Bezug genommen werden kann), kleiner zu
machen, am besten, die Größe des Speichers,
in den die Teilprogramme hinein geladen werden, kleiner zu machen.
-
Es
sollte angemerkt werden, dass die Speicherstellen-Definitionseinheit 14 ein
Bestandteil der das verschlüsselte
Programm erzeugenden Vorrichtung C sein kann, anstelle eines Bestandteils
der Programmladeeinrichtung 1.
-
Die einen nicht legitimen Zugriff verhindernde
Einheit 15
-
Die
einen nicht legitimen Zugriff verhindernde Einheit 15 führt Vorgänge zum
Verhindern einer nicht legalen Programmanalyse durch, die unter
Verwendung von Unterbrechungen vorgenommen werden können, um
das Teilprogramm, ausgeführt
in dem gemeinsam geteilten Speicher M, zu analysieren.
-
Eine
Unterbrechungseinrichtung bedeutet, dass, während ein Prozess auf dem Computersystem
ausgeführt
wird, ein anderes Ereignis, das eine höhere Priorität besitzt,
auftritt. Allgemein gesagt wird, wenn eine Unterbrechung auftritt,
der Prozess, der ausgeführt
wird, zeitweilig unterbrochen, und ein anderer Prozess für das unterbrochene
Ereignis wird durchgeführt
werden. Indem vorteilhaft von dieser Funktion Gebrauch gemacht wird,
ist es möglich,
ein Programm an einem Punkt, der wahlweise ausgewählt ist,
zu unterbrechen, und auf die Inhalte des Speichers oder eines Registers
an diesem Punkt Be zug zu nehmen, oder dieselbe Verarbeitung nach Ändern der
Inhalte des Speichers oder eines Registers wieder aufzunehmen.
-
Zum
Beispiel ist es, indem eine Unterbrechung unmittelbar auftritt,
nachdem die Programmladeeinrichtung 1 die Speicheradresseninformationen entschlüsselt, möglich, auf
die entschlüsselten
Speicheradresseninformationen Bezug zu nehmen. Auch ist es, indem
eine Unterbrechung auftritt, nachdem die Verschlüsselung auftritt und das Einladen
eines Teilprogramms abgeschlossen sind, möglich, auf die Inhalte des
Teilprogramms, angeordnet in dem gemeinsam geteilten Speicher M,
Bezug zu nehmen.
-
Um
solche Situationen zu verhindern, unterbricht die einen nicht legalen
Zugriff verhindernde Einheit 15 den Prozess, der durch
eine andere Komponente ausgeführt
werden soll, oder löscht
das Teilprogramm, das in dem gemeinsam geteilten Speicher M hinein
geladen ist, und zwar unter Erfassung einer Unterbrechung.
-
Genauer
gesagt gibt, unter Erfassung einer Unterbrechung, die den nicht
legalen Zugriff verhindernde Einheit 15 eine Trap-Anweisung
aus, die dazu dient, den Prozess des Programms, das auf dem Computersystem
ausgeführt
werden soll, das die Programmladeeinrichtung 1 darin besitzt,
zu unterbrechen, und nimmt auf eine IDT (Interrupt Descriptor Table – Unterbrechungs-Deskriptor-Tabelle) in
der CPU Bezug. Eine IDT ist eine Tabelle, die Informationen über Handler
definiert, die Unterbrechungsanweisungen entsprechen. In dieser
vorliegenden Ausführungsform
sind solche Handler dahingehend definiert, dass sie zum Ausführen einer
Unterbrechung eines Programms und zum Löschen der Inhalte, gespeichert
in dem Speicherbereich für
das verschlüsselte
Teilprogramm des gemeinsam geteilten Speichers M, verwendet werden.
Die den nicht legitimen Zugriff verhindernde Einheit 15 verschiebt den
Prozess zu einem solchen Handler, so dass eine Unterbrechung des
Programms und eine Löschung der
Speicherinhalte ausgeführt
werden.
-
Auch
führt,
parallel zu dem Prozess, der vorstehend erwähnt ist, die den nicht legitimen
Zugriff verhindernde Einheit 15 einen Prozess zum Ausführen von
Dummy-Programmen
durch. Dummy-Programme werden dazu verwendet, die Person abzulenken,
die versucht, die Kontrolle über
einen Missbrauch von Unterbrechungen zu übernehmen, während das
Programm unterbrochen ist oder Speicherinhalte gelöscht werden.
Hier wird angenommen, dass der Prozess eines Dummy-Programms ein
solcher ist, der nicht die Prozesse von anderen Programmen beeinflusst,
zum Beispiel "Anzeigen
nur von Zeichenfolgen" oder "Ausgeben eines Ergebnisses,
das entgegengesetzt zu einem Ergebnis einer Ausführung eines verschlüsselten
Programms ist". Wenn
eine Unterbrechung erfasst wird, ruft die einen nicht legitimen
Zugriff verhindernde Einheit 15 ein Dummy-Programm auf,
das in die Ausführungsumgebung
im Voraus eingeladen worden ist, und lässt dieses ablaufen.
-
Operation
-
Als
nächstes
erläutert
das Nachfolgende die Operation bzw. Betriebsweise der Programmladeeinrichtung 1,
die den Aufbau so besitzt, wie dies vorstehend erwähnt ist,
unter Bezugnahme auf die Zeichnungen, und mit einem Schwerpunkt
der Beschreibung auf der Steuereinheit 11.
-
5 zeigt
ein Flussdiagramm, das die Betriebsweise der Programmladeeinrichtung 1 in
dem Entschlüsselungs-
und Ladevorgang eines verschlüsselten
Programms darstellt. Es sollte allerdings angemerkt werden, dass
der Prozess, der durch die den nicht legalen Zugriff verhindernde
Einheit 15 durchgeführt
wird, nicht in der Zeichnung dargestellt ist, da er in einer unterbrechenden
Art und Weise ausgeführt
wird. Auch sind der Prozess einer Verschlüsselung des Programms und der
Prozess eines Erzeugens der Speicherstelleninformationen, die parallel
ausgeführt
werden sollen, nicht in der Zeichnung dargestellt.
-
Der
Prozess einer Verschlüsselung
und eines Ladens beginnt, wenn die Steuereinheit 11 eine Anweisung
zum Ausführen
des Prozesses empfängt (die
Identifikationsinformationen umfasst, die ein Teilprogramm, das
verarbeitet werden soll, spezifizieren), und zwar von außen (die
OS oder ein Programm, das auf dem System ausgeführt werden soll) (S501: Ja).
Die Anweisung zum Ausführen
des Prozesses wird von der OS übertragen,
wenn das Target-Programm aktiviert wird, und wenn, nach der Aktivierung,
das Teilprogramm ausgeführt
wird, nachdem entschlüsselt
worden ist und Aufrufe eines anderen Teilprogramms geladen worden
sind. Mit einer Anweisung zu dem Zeitpunkt einer Aktivierung ist
das Teilprogramm, das einen Eintrittspunkt des Programms besitzt,
das Entschlüsselungs-Target.
Mit einer Anweisung nach der Aktivierung sind die Identifikationsinformationen
des Teilprogramms, das aufgehoben ist, das Target des Prozesses.
-
Unter
Empfang der Anweisung sendet die Steuereinheit 11 die Identifikationsinformationen
des spezifizierten Teilprogramms zu der Speicheradressen-Entschlüsselungseinheit 121 und
weist sie an, die Speicheradresse zu entschlüsseln, so dass das spezifizierte
Teilprogramm von der sekundären
Speichervorrichtung S gelesen wird.
-
Nachdem
die Anweisung für
die Steuereinheit 11 empfangen ist, liest die Speicheradressen-Entschlüsselungseinheit 121 die
Speicheradresseninformationen (die verschlüsselt sind) für das Teilprogramm
von der Speichereinheit 16 (S502) und weist auch die Entschlüsselungs-Unterstützungsprogramm-Authentifizierungseinheit 13 an,
zu bestätigen,
ob das Entschlüsselungs-Unterstützungsprogramm
P authentisch ist.
-
Wenn
das Entschlüsselungs-Unterstützungsprogramm
P dahingehend bestätigt
ist, dass es authentisch ist (S503: Ja), entschlüsselt die Speicheradressen-Entschlüsselungseinheit 121 die
Speicheradresseninformationen, gelesen im Schritt S502, unter Verwendung
des Entschlüsselungs-Unterstützungsprogramms
P. Zu diesem Zeitpunkt erhält
die Speicheradressen-Entschlüsselungseinheit 121 von der
Speichereinheit 16 einen Verschlüsselungsschlüssel für die Entschlüsselung
dieser Speicheradresseninformationen und sendet den Verschlüsselungsschlüssel und
die Informationen über
die verschlüsselte
Speicheradresse zu dem Entschlüsselungs-Unterstützungsprogramm
P, so dass der Entschlüsselungsvorgang
durchgeführt
wird (S504).
-
Umgekehrt
informiert, wenn das Verschlüsselungs-Unterstützungsprogramm
dahingehend bestätigt
ist, dass es nicht authentisch ist (wenn beurteilt ist, dass es
missbraucht worden ist) (S503: Nein), die Entschlüsselungs-Unterstützungsprogramm-Authentifizierungseinheit 13 die
Steuereinheit 11 über
das Beurteilungsergebnis. Die Steuereinheit 11 informiert
die OS über
die Erfassung des Missbrauchs und unterbricht die Prozesse einer
Entschlüsselung
und eines Ladens (S514).
-
Die
Speicheradressen-Entschlüsselungseinheit 121,
die im Schritt S504 die Informationen über die verschlüsselte Speicheradresse
erhalten hat, sendet sie zu der Speicheradresseninformations-Authentifizierungseinheit 17,
so dass der Authentifizierungsvorgang durchgeführt wird. Die Speicheradresseninformations-Authentifizierungseinheit 17 führt den
Authentifizierungsvorgang unter Verwendung einer Authentifizierungstechnik
durch, die normalerweise eine solche Einwege-Hash-Funktion verwendet,
und führt
das Ergebnis zu der Speicheradressen-Entschlüsselungseinheit 121 zurück. Die
Speicheradressen-Entschlüsselungseinheit 121 sendet das
Ergebnis zu der Steuereinheit 11.
-
Wenn
die Speicheradresseninformationen dahingehend bestätigt sind,
dass sie nicht authentisch sind, und zwar als eine Folge des Authentifizierungsvorgangs
(S505: Nein), informiert die Steuereinheit 11 die OS, dass "die Speicheradresse
nicht legitim ist",
und unterbricht die Prozesse einer Entschlüsselung und eines Ladens (S514).
-
Andererseits
erhält,
wenn die Speicheradresseninformationen dahingehend bestätigt sind, dass
sie authentisch sind (S505: Ja), die Steuereinheit 11,
von der Speicheradressen-Entschlüsselungseinheit 121,
die Informationen über
die entschlüsselte
Speicheradresse. Dann geht die Steuereinheit 11 weiter
zu den Vorgängen
eines Lesens, von der sekundären
Speichervorrichtung S, und eines Entschlüsselns des Teilprogramms, das
ein Target einer Entschlüsselung
und eines Ladens ist. Genauer gesagt weist, zuerst, die Steuereinheit 11,
die Teilprogramm-Entschlüsselungseinheit 123 an,
wie der Entschlüsselungsvorgang
auszuführen
ist, um den Vorgang zu starten.
-
Nachdem
die Anweisung von der Steuereinheit 11 empfangen ist, liest
die Teilprogramm-Entschlüsselungseinheit 123 zuerst,
von der Speicherposition in der sekundären Speichervorrichtung S, das
spezifizierte, verschlüsselte
Teilprogramm und einen Verschlüsselungsschlüssel für eine Entschlüsselung
des Teilprogramms (S506). Dann weist die Teilprogramm-Entschlüsselungseinheit 123 die
Entschlüsselungs-Unterstützungsprogramm-Authentifizierungseinheit 13 an,
einen Authentifizierungsvorgang des Entschlüsselungs-Unterstützungsprogramms
P durchzuführen,
und führt
das Ergebnis zu der Steuereinheit 11 zurück.
-
Wenn
das Entschlüsselungs-Unterstützungsprogramm
P dahingehend bestätigt
ist, das es authentisch ist (S507: Ja), sendet die Teilprogramm-Entschlüsselungseinheit 123 das
entschlüsselte
Teilprogramm, erhalten im Schritt S506, mit dem Entschlüsselungsschlüssel zu
dem Entschlüsselungs-Unterstützungsprogramm
P, so dass der Entschlüsselungsvorgang
des Teilprogramms durchgeführt
wird (S508).
-
Umgekehrt
informiert, wenn das Entschlüsselungs-Unterstützungsprogramm
P dahingehend bestätigt
ist, dass es nicht authentisch ist (S507: Nein), die Teilprogramm-Entschlüsselungseinheit 123 die
Steuereinheit 11 über
das Ergebnis. Die Steuereinheit 11 informiert die OS, dass "ein Missbrauch des
Entschlüsselungs-Unterstützungsprogramms
erfasst worden ist",
und führt
die Prozesse einer Entschlüsselung
und eines Ladens des Teilprogramms durch. Auch löscht, falls nicht irgendein
entschlüsseltes
Teilprogramm vorhanden ist, das bereits in dem gemeinsam geteilten
Speicher M hinein geladen worden ist, die Steuereinheit 11 dieses
ebenso wie es die entschlüsselte
Speicheradresse löscht (S514).
-
Nachdem
der Entschlüsselungsvorgang
des Teilprogramms abgeschlossen worden ist, gibt die Teilprogramm-Entschlüsselungseinheit 123 das
entschlüsselte
Teilprogramm zu der Steuereinheit 11 aus. Die Steuereinheit 11 führt den
Vorgang eines Anordnens des entschlüsselten Teilprogramms in den
Raum in dem gemeinsam geteilten Speicher M durch. Genauer gesagt
weist, zuerst, die Steuereinheit 11 die Speicherstellen-Informations-Entschlüsselungseinheit 122 an,
die Informationen über
die entschlüsselte
Speicherstelle und den Verschlüsselungsschlüssel von
der Speichereinheit 16 zu lesen (S509).
-
Die
Speicherstellen-Informations-Entschlüsselungseinheit 122 lässt die
Entschlüsselungs-Unterstützungs-Programm-Authentifizierungseinheit 13 einen
Authentifizierungsvorgang des Entschlüsselungs-Unterstützungsprogramms
P durchführen.
-
Wenn
das Entschlüsselungs-Unterstützungsprogramm
P dahingehend bestätigt
ist, authentisch zu sein (S510: Ja), sendet die Speicherstellen-Informations-Entschlüsselungseinheit 122 die
Informationen über
die verschlüsselte
Speicherstelle und den Verschlüsselungsschlüssel zu
dem Entschlüsselungs-Unterstützungsprogramm
P, so dass der Entschlüsselungsvorgang
durchgeführt
wird, und führt
die Speicherstellen-Informationen,
die entschlüsselt
worden sind, zu der Steuereinheit 11 zurück (S511).
Die Steuereinheit 11 ordnet das Teilprogramm, entschlüsselt im
Schritt S508, in den gemeinsam geteilten Speicher M entsprechend
den Informationen über
die entschlüsselte
Speicherstelle an (S512).
-
Wenn
das Entschlüsselungs-Unterstützungsprogramm
P dahingehend bestätigt
ist, nicht authentisch zu sein, und zwar im Schritt S510 (S510: Nein),
informiert die Speicherstellen-Informations-Entschlüsselungseinheit 122 die
Steuereinheit 11 über
das Ergebnis. Die Steuereinheit 11 löscht das Teilprogramm, entschlüsselt im
Schritt S508, und führt
den Vorgang fort (S514). Zusätzlich
löscht,
falls dort irgendein Teilprogramm vorhanden ist, das bereits in
den Speicherraum hinein geladen worden ist, die Steuereinheit 11 dieses
ebenso.
-
Die
Vorgänge,
die bis hier erwähnt
sind, werden wiederholt werden, bis das gesamte Target-Programm
endet verarbeitet zu werden (S513: Ja).
-
Zusammenfassung
-
Wie
bis hier erwähnt
ist, entschlüsselt
die Programm-Ladeinrichtung 1 der vorliegenden Ausführungsform,
unter Verwendung des Überlegungsverfahrens,
das verschlüs selte
Programm, das ein Entschlüsselungs-Target
ist, in Einheiten von Teilprogrammen, und ordnet die entschlüsselten
Teilprogramme in einem vorbestimmten Bereich des Speichers über einen Überschreibungsvorgang
entsprechend zu den Speicherstellen-Informationen an, die unter Berücksichtigung
eines Sicherheitsschutzes eingestellt worden sind; und die Programm-Ladeeinrichtung 1 verhindert
dadurch eine nicht legitime Bezugnahme auf das gesamte Programm.
Weiterhin wird ein Sicherheitsschutz stärker über die folgenden Vorgänge sichergestellt:
(1) Prüfung
eines nicht legitimierten Angriffs auf das Entschlüsselungs-Unterstützungsprogramm,
indem eine Authentizität
des Entschlüsselungs-Unterstützungsprogramms
zu jedem Zeitpunkt geprüft
wird, zu dem ein Teilprogramm entschlüsselt wird, (2) es wird schwierig
gemacht, nicht legitim auf das entschlüsselte Programm Bezug zu nehmen,
durch Verschlüsseln
auch der Speicherstellen-Informationen,
die anzeigen, wo die entschlüsselten
Teilprogramme in dem Speicher angeordnet worden sind, und (3) Verhinderung
nicht legitimer Bezugnahmen unter Ausnutzung von Unterbrechungen,
durch Löschen
entschlüsselter
Daten (z.B. Teilprogramme), wenn eine Unterbrechung erfasst wird.
-
Modifikations-Beispiele
-
Das
Folgende erläutert
sechs Modifikations-Beispiele, die für die Ausführungsform, die vorstehend
erwähnt
ist, möglich
sind.
-
Modifikations-Beispiel 1
-
In
der vorstehend erwähnten
Ausführungsform
beurteilt die einen nicht legitimen Zugriff verhindernde Einheit 15 alle
Unterbrechungen, die nicht legitim sind, und unterbricht den Vorgang
und löscht die
entschlüsselten
Daten; allerdings sind dabei einige Unterbrechungen vorhanden, die
legitim sind. in dem vorliegenden Modifikations-Beispiel wird der Prozess
so durchgeführt,
dass legitime Unterbrechungen akzeptiert werden.
-
Die
Struktur der die gesamten verschlüsselten Daten entschlüsselnde
Vorrichtung in dem vorliegenden Modifikations-Beispiel ist dieselbe
wie die eine in der vorstehend er wähnten Ausführungsform, und nur ein Teil
des Vorgangs, durchgeführt
durch die den nicht legitimen Zugang verhindernde Einheit, ist unterschiedlich.
Demzufolge wird die Zeichnung für die
Struktur weggelassen, allerdings wird auf die Einheit so Bezug genommen,
dass sie eine einen nicht legitimen Zugriff verhindernde Einheit 15' ist, um eine Unterscheidung
vorzunehmen.
-
Die
einen nicht legitimen Zugriff verhindernde Einheit 15' in dem vorliegenden
Modifikations-Beispiel verhindert eine inverse Analyse eines Programms,
wo eine Unterbrechung in einer nicht legitimen Art und Weise verwendet
wird, während
Unterbrechungen für
legitimierte Debugger zugelassen werden, indem solche Unterbrechungen
zugelassen werden, die sich auf Debugger für den Zweck eines Prüfens einer
Fehlfunktion, und dergleichen, beziehen, was ein legitimierter Vorgang
ist. Ein Debugger ist eine Funktion, um den Prozess eines Programms an
einer erwünschten
Position anzuhalten (zu unterbrechen), und um es möglich zu
machen, auf die Speicherinhalte in diesem Zustand Bezug zu nehmen
oder diese zu ändern,
um Fehlfunktionen zu prüfen.
-
Ein
Anhalten eines Programms über
das Unterbrechen wird durch Einstellen, im Voraus, von Unterbrechungspunkten,
wobei an jedem davon eine Unterbrechung auftritt, durchgeführt, und
wobei eine Unterbrechung so auftreten kann, dass das Programm zu
jedem Zeitpunkt angehalten wird, zu dem der Prozess an einen der
Unterbrechungspunkte kommt. Es ist auch möglich, detaillierte Zustände so einzustellen,
dass jede Arbeit eine Vorbedingung zum Anhalten des Programms an
jedem Unterbrechungspunkt besitzt. Entsprechend dem Verarbeitungsverfahren
der einen nicht legitimen Zugriff verhindernden Einheit 15 der
vorstehend erwähnten Ausführungsform
hält allerdings
das Programm dann an, wenn die OS eine Unterbrechung für ein Unterbrechen
auftreten lässt;
deshalb ist es nicht möglich, bei
einer Fehlfunktion zu prüfen.
-
Dementsprechend
unterscheidet die einen nicht legitimen Zugriff verhindernde Einheit 15' des vorliegenden
Modifikations-Beispiels Unterbrechungen, die zu Debuggern in Bezug
gesetzt sind (Unterbrechungen für
das Unterbrechen), von anderen Unterbrechungen in der folgenden
Art und Weise:
Nachdem ein Programm, das ein Verschlüsselungs-Target
ist, in eine ausführbare
Form durch die das verschlüsselte
Programm erzeugende Vorrichtung C umgewandelt ist, empfängt die
einen nicht legitimen Zugriff verhindernde Einheit 15', von einem legitim
autorisierten Benutzer, eine Einstellung von Unterbrechungspunkten
in dem Programm in der ausführbaren
Form, während
sie sich noch in einer Vor-Verschlüsselungs-Stufe befindet. Die
den nicht legitimen Zugriff verhindernde Einheit 15' speichert darin
Positions-Informationen
(ausgedrückt
in Zeilen-Zahlen, einen Namen von Funktionen, Adressen, usw.,),
der Unterbrechungspunkte, die eingestellt werden müssen.
-
Dann überwacht,
an der Stufe einer Entschlüsselung
und eines Ladens des Programms, die einen nicht legitimen Zugriff
verhindernde Einheit 15' Unterbrechungen
(in derselben Art und Weise, wie die den nicht legitimen Zugriff
verhindernde Einheit 15 dies vornimmt). Wenn eine Unterbrechung
auftritt, während
das Programm ausgeführt
wird, vergleicht die den nicht legitimen Zugriff verhindernde Einheit 15 die
Position eines Auftretens mit positionsmäßigen Informationen eines Unterbrechungspunkts,
die gespeichert worden sind. Wenn die Position des Auftretens zu
einer der Positionen der Unterbrechungspunkte passt, die im Voraus
in der Unterbrechungspunkt-Position in den Unterbrechungspunkt-Positions-Informationen
eingestellt worden sind, wird der Vorgang, wie in der Ausführungsform
erwähnt
ist, wie beispielsweise Löschen
der Speicherinhalte, nicht durchgeführt werden, und dem Benutzer
wird ermöglicht,
die Ausführung
fortzuführen.
-
Umgekehrt
unterbricht, wenn eine Unterbrechung an einer Position aufgetreten
ist, die unterschiedlich zu den Positionen ist, die im Voraus eingestellt
sind, die den nicht legitimen Zugriff verhindernde Einheit 15', entsprechend
der einen nicht legitimen Zugriff verhindernden Einheit 15,
die Ausführung
des Programms und führt
den Vorgang eines Löschens
der verschlüsselten
Daten, wie beispielsweise von Teilprogrammen, in dem Speicher M, durch.
-
Modifikations-Beispiel 2
-
Das
Nachfolgende erläutert
ein Modifikations-Beispiel, das noch besser einen Sicherheitsschutz
der Speicherstellen-Informationen sicherstellt.
-
In
der vorstehend erwähnten
Ausführungsform
werden Speicherstellen-Informationen,
die einmal erzeugt sind, wiederholt mit denselben Inhalten zu jedem
Zeitpunkt verwendet, zu dem ein als Target verschlüsseltes
Programm entschlüsselt
und geladen wird. Mit anderen Worten wird, wenn ein verschlüsseltes
Programm ausgeführt
wird, jedes der Teilprogramme, das das Programm bildet, an derselben
Adresse in dem Speicherraum zu demselben Zeitpunkt zu jeder Zeit
angeordnet. Demzufolge ist es schwer zu sagen, dass dort keine Möglichkeit
vorhanden ist, dass die Inhalte der Speicherstellen-Informationen über eine
wiederholte Ausführung
des Programms decodiert werden können,
während
die Daten im Speicherraum überwacht
werden. Wenn die Speicherstellen-Informationen
decodiert sind, werden nicht legitime Bezugnahmen unter Verwendung
der Informationen möglich.
-
Das
vorliegende Modifikations-Beispiel zielt deshalb darauf, zu verhindern,
dass die Speicherstellen-Informationen decodiert werden, und stellt
einen Sicherheitsschutz des verschlüsselten Programms sicher. Demzufolge
werden, in dem vorliegenden Modifikations-Beispiel, die Speicherstellen-Informationen
so erzeugt, dass sich die Speicherstellen-Positionen der Teilprogramme, die das
Programm bilden, dynamisch zu jedem Zeitpunkt ändern, zu dem das Programm
ausgeführt
wird.
-
Genauer
gesagt werden die Speicherstellen-Informationen so eingestellt,
dass sich der Absolut-Adressenwert, der jedem der drei Bereiche
in dem gemeinsam geteilten Speicher M zugeordnet werden soll, zu
jedem Zeitpunkt ändert,
zu dem das Programm ausgeführt
wird.
-
Der
Aufbau der gesamten Vorrichtung zum Entschlüsseln von verschlüsselten
Daten in dem vorliegenden Modifikations-Beispiel ist derselbe wie
derjenige in der vorste hend erwähnten
Ausführungsform,
und nur ein Teil des Vorgangs, durchgeführt durch die die Speicherstelle
definierende Einheit, ist unterschiedlich. Demzufolge wird die Zeichnung
der Struktur der gesamten Vorrichtung weggelassen werden, allerdings
wird die die Speicherstelle definierende Einheit in dem vorliegenden
Modifikations-Beispiel nachfolgend als eine eine Speicherstelle
definierende Einheit 14' zum
Vornehmen einer Unterscheidung bezeichnet werden.
-
6 stellt 3 Muster von Bereichs-Adressen-Informationen 601, 602 und 603 dar,
die durch die die Speicherstelle definierende Einheit 14' gespeichert
sind und zum Ändern
der Adresse der Bereiche verwendet werden. Jeder Teil von Bereichs-Adressen-Informationen ist
aus einer Kombination eines Bereichs und einer absoluten Adresse, zugeordnet
zu dem Bereich, aufgebaut und besitzt einen Bereich-Identifizierer-Abschnitt 610 und
einen Absolut-Adressen-Wert-Abschnitt 620.
-
In
der vorstehend erwähnten
Ausführungsform
speichert die Steuereinheit 11 darin nur eine Art von Informationen,
die den Bereichs-Adressen-Informationen entsprechen (z.B. die Bereichs-Adressen-Information 610),
und verwendet sie. in dem vorliegenden Modifikations-Beispiel wählt die
die Speicherstelle definierende Einheit 14' eines der drei Muster von Bereichs-Adressen-Informationen
aus und überträgt sie zu
der Steuereinheit 11, wenn die Speicherstellen-Informationen
erzeugt werden. Wenn ein Teilprogramm entschlüsselt und geladen ist, bestimmt
die Steuereinheit 11 die Absolut-Adresse jedes Bereichs
entsprechend dem ausgewählten Muster
von Bereichs-Adressen-Informationen, und erhält weiterhin eine Stellen-Adresse
in dem gemeinsam geteilten Speicher M für das entschlüsselte Teilprogramm
entsprechend zu der Absolut-Adresse jedes Bereichs und der Speicherstellen-Informationen.
-
Die
die Speicherstelle definierende Einheit 14' kann ein Muster von Bereichs-Adressen-Informationen
auswählen,
entweder (i) wenn ein Befehl zum Anweisen des Programms zu der Programmladeeinrichtung 1 eingegeben
ist, oder (ii) wenn die Prozesse zum Entschlüsseln und Laden des Programms
begonnen worden sind und bevor das erste Teilprogramm geladen wird.
-
Es
sollte angemerkt werden, dass die Absolut-Adressen der Bereiche
nicht notwendigerweise in der Art und Weise, wie vorstehend erwähnt ist,
geändert
werden müssen,
wobei ein Muster zu einem anderen geändert wird. Es ist auch möglich, die
Speicherstelle in Positionen durch "Gleiten" der absoluten Adresse zu ändern.
-
7 stellt
Bereichs-Adressen-Informationen entsprechend zu dem Verfahren dar,
mit dem Absolut-Adressen-Werte geändert werden, indem sie gleiten.
In den Bereichs-Adressen-Informationen 700 liegen
ein Bereich und ein Absolut-Adressen-Wert in einer Korrespondenz
eins zu eins vor, und jeder Absolut-Adressen-Wert umfasst eine Variante
(eine Gleitbreite), die eines von α, β und γ ist. Die die Speicherstelle
definierende Einheit 14' ändert die
Absoluten-Adressen der Bereiche durch Ändern des Werts jeder Varianten.
-
Es
ist auch akzeptierbar, dass der Wert jeder Varianten dahingehend
bestimmt wird, dass er ein wahlweiser Wert ist, der ein eine Zufallszahl
erzeugendes Programm verwendet (z.B. eine Zufallszahl-Erzeugungsfunktion,
oder eine solche, die Zeitinformationen, gespeichert in dem Zeitgeber,
verwendet, usw.). Der Wert jeder Varianten wird so bestimmt, dass
ein Zustand erfüllt
ist, dass "die Summe des
Werts einer Varianten (d.h. die Gleitbreite) für einen Bereich und die Größe des Teilprogramms,
die in dem Bereich geladen werden sollen, nicht größer als die
Größe des Bereichs
ist". Der Grund
hierfür
ist derjenige, dass eine Situation vermieden werden sollte, in der
ein Teilprogramm so lokalisiert worden ist, um teilweise außerhalb
des Bereichs lokalisiert zu sein, wenn geglitten wird.
-
Es
sollte angemerkt werden, dass es auch möglich ist, dies so anzuordnen,
dass die die Speicherstelle definierende Einheit 14' darin die Bereichs-Adressen,
verwendet dann, wenn das Programm zum letzten Mal ausgeführt wurde,
speichert, und sicherstellt, unter Bezugnahme darauf, dass die absoluten
Adressen der Bereiche unterschiedlich gegenüber solchen zu dem letzten
Zeitpunkt sind.
-
Die Änderungen
der Bereichs-Adressen können
durch die Steuereinheit 11 selbst durchgeführt werden,
anstelle davon, dass sie durch die Steuereinheit 11, entsprechend
zu den Informationen, die in der die Speicherstelle definierenden
Einheit 14' gespeichert
sind, wie dies vorstehend erwähnt
ist, durchgeführt
werden.
-
Modifikations-Beispiel 3
-
Das
Nachfolgende erläutert
ein Modifikations-Beispiel, das besser einen Sicherheitsschutz für die Teilprogramme
in dem Speicher durch Verhindern, dass ein besonderes Teilprogramm
in dem gemeinsam geteilten Speicher M für eine lange Zeit angeordnet
wird, sicherstellt.
-
Der
Grund, warum das Überlegungsverfahren,
mit dem die Teilprogramme in denselben Bereichen überschrieben
werden, in der vorstehend erwähnten
Ausführungsform
verwendet wird, ergibt sich aufgrund des Risikos, dass nicht legitime
Referenzen hoch werden, wenn ein bestimmtes Teilprogramm in dem
gemeinsam geteilten Speicher für
eine lange Zeit angeordnet verbleibt; allerdings wird, in Abhängigkeit
von der Größe eines
Teilprogramms, das durch ein anderes überschrieben werden soll, ein Teil
des Teilprogramms, das verarbeitet worden ist, in dem Speicher verbleiben,
ohne gelöscht
zu werden, gerade dann, wenn das Überlegungsverfahren verwendet
wird.
-
Zum
Beispiel wird, wenn Teilprogramme in dem Speicher in der Art und
Weise, wie dies hier dargestellt ist, angeordnet sind, für die drei
Teilprogramme, die aufeinander folgend in dem Bereich 1 angeordnet
sind, angenommen, dass das Teilprogramm B und das Teilprogramm C
jeweils nur die Hälfte
der Größe des Teilprogramms
A besitzen, das zuerst angeordnet wurde. In diesem Fall wird die
letztere Hälfte
des Teilprogramms A nicht durch das Überschreiben mit den Teilprogrammen
B und C gelöscht
und verbleibt in dem Bereich 1. In einem Fall, in dem die letztere
Hälfte
des Teilprogramms A insbesondere ein hohes Niveau einer Vertraulichkeit
besitzt, ist es nicht sehr wünschenswert,
dass es für
eine lange Zeit, im Hinblick auf einen Sicherheitsschutz, dort angeordnet
verbleibt.
-
In
dem Bereich 3 verbleiben, trotz der Tatsache, dass der Prozess des
Teilprogramms H an dem Ende der Zeitperiode t1 abgeschlossen ist,
die Daten des Teilprogramms H von dem Beginn der Zeitperiode t2
an, bis das nächste
Teilprogramm I angeordnet wird.
-
In
dem vorliegenden Modifikations-Beispiel wird, zu jedem Zeitpunkt,
zu dem ein Teilprogramm entschlüsselt
und in dem Speicherraum angeordnet wird, geprüft, ob dort ein Unterschied
zwischen der Größe des Anordnungsbereichs
und der Größe des Teilprogramms
vorhanden ist. Wenn die Bereichsgröße größer ist, wird das Problem,
das vorstehend erwähnt
ist, durch Einbetten von (Überschreiben
mit) Dummy-Daten (ein Dummy-Programm)
in den Raumbereich in diesem Bereich gelöst. Wenn eine Verarbeitung
eines Teilprogramms beendet wird, wird eine abgelaufene Zeit, beginnend
von diesem Punkt an, gemessen, und wenn eine vorbestimmte Zeit abgelaufen
ist, wird der gesamte Bereich mit Dummy-Daten überschrieben. Dieser Prozess,
der hier erwähnt
ist, wird durch eine Steuereinheit durchgeführt werden. (Nachfolgend wird
auf diese als die Steuereinheit 11' Bezug genommen, um sie von der Steuereinheit 11 in
der Ausführungsform
zu unterscheiden.)
-
8 zeigt
eine konzeptmäßige Zeichnung, um
den allgemeinen Aufbau des Dummy-Daten-Einbettungsprozesses darzustellen.
Die Zeichnung zeigt die Anordnung der Teilprogramme in einem bestimmten
Bereich N und wie die Dummy-Daten entlang der Zeitachse eingebettet
werden. In den Zeitperioden T2, T3 und T5 wird, da die Größe jedes
der Teilprogramme, das lokalisiert werden soll, klein ist, ein Teil der
Dummy-Daten eingebettet, um die Differenz zwischen der Bereichsgröße und der
Teilprogrammgröße aufzufüllen. In
der Zeitperiode T4 wird ein Teil der Dummy-Daten in den gesamten
Bereich eingebettet, da dort ein Zeitablauf einer vorbestimmten
Länge, nachdem
die Verarbeitung des unmittelbar vorhergehenden Teilprogramms beendet
ist, vorhanden ist.
-
Wenn
die Steuereinheit 11' ein
Teilprogramm, entschlüsselt
durch die Teilprogramm-Entschlüsselungseinheit 123,
in einem der Bereiche in dem gemeinsam geteilten Speicher M entsprechend der
Speicherstellen-Informationen lokalisiert, erhält die Steuereinheit 11' die Größe des Teilprogramms nach
der Entschlüsselung
(die Größe, die
durch die die Speicherstelle definierende Einheit 14' als ein Teil der
Speicherstellen-Informationen
spezifiziert ist) und erhält
auch die Größe des Stellen-Bereichs durch
Bezugnahme auf den gemeinsam geteilten Speicher M.
-
Die
Steuereinheit 11' vergleicht
die Werte dieser zwei Größen und
liest, wenn die Bereichsgröße größer ist,
die Dummy-Programm-Daten weitestgehend als die Differenz zwischen
den Größen von dem
Dummy-Programm-Speicherbereich, und bettet die Daten in den Raum-Bereich
in diesem Bereich ein (der Raum nach dem Ende des Teilpro gramms und/oder
der Raum vor dem Beginn des Teilprogramms). Durch diesen Vorgang
werden die Daten des Teilprogramms, das unmittelbar zuvor in diesem Bereich
angeordnet wurde, vollständig
gelöscht
werden.
-
Der
Dummy-Daten-Einbettungs-Prozess entsprechend zu einer Zeitspanne
wird durchgeführt, nachdem
die Verarbeitung eines Teilprogramms beendet ist. Wenn die Verarbeitung
eines Teilprogramms, geladen in einen Bereich hinein, beendet ist,
beginnt die Steuereinheit 11' ein
Messen der ablaufenden Zeit mit einem eingebauten Zeitgeber für diesen
bestimmten Bereich. Wenn die abgelaufene Zeit einen vorbestimmten
Wert erreicht, dann werden, falls ein nächstes Teilprogramm, das in
diesen Bereich hinein geladen werden soll, bis jetzt noch nicht
entschlüsselt
worden ist, dann die Dummy-Daten in den gesamten Bereich eingebettet
werden.
-
Über diesen
Vorgang werden die Daten des Teilprogramms, das unmittelbar zuvor
in dem Bereich angeordnet worden ist, vollständig gelöscht werden. Die Dummy-Daten
sind praktisch ein Programm, das tatsächlich nicht ausgeführt wird,
oder ein Code eines Programms, der eine nicht bedeutungsvolle Verarbeitung,
wenn es ausgeführt
wird, durchführt.
-
Modifikations-Beispiel 4
-
In
dem vorliegenden Modifikations-Beispiel wird ein Sicherheitsschutz
für jedes
Teilprogramm dadurch verstärkt,
dass eine unterschiedliche Anordnung für die Speicherstelle der Verschlüsselungsschlüssel und
der Vorgänge,
um die Verschlüsselungsschlüssel zu
erhalten, vorgenommen wird. Genauer gesagt wird es so angeordnet,
dass ein Verschlüsselungsschlüssel zum
Entschlüsseln
eines Teilprogramms von einem anderen Teilprogramm erhalten werden
kann, das legitim in den gemeinsam geteilten Speicher M vor diesem
einen Teilprogramm hinein geladen worden ist.
-
In
dem vorliegenden Modifikations-Beispiel werden, in jedem Teilprogramm,
entweder (i) ein Verschlüsselungsschlüssel zum
Entschlüsseln
eines anderen Teilprogramms, das durch dieses bestimmte Teilprogramm
aufgerufen werden soll, oder (ii) einige Daten, verwendet zum Erhalten
des Verschlüsselungsschlüssels, eingebettet.
Wenn das aufgerufene Teilprogramm entschlüsselt werden muss, werden der
Verschlüsselungsschlüssel oder
die Daten zum Erhalten des Verschlüsselungsschlüssels, der
in das aufgerufene Teilprogramm eingebettet ist, verwendet werden.
-
Grund-Beispiel
-
Die
Grund-Ausführungsform
dieses Verfahrens ist wie folgt: zuerst wird, bevor die das verschlüsselte Programm
erzeugende Vorrichtung C ein aufrufendes Teilprogramm verschlüsselt, ein
Verschlüsselungsschlüssel, verwendet
für ein
Verschlüsseln
eines aufgerufenen Teilprogramms, in das aufrufende Teilprogramm
eingebettet. Dann wird das aufrufende Teilprogramm verschlüsselt. Darauf
folgend wird die Einbettungsstelle des Verschlüsselungsschlüssels in
der Speichereinheit 16 gespeichert.
-
Als
nächstes
liest, wenn das aufgerufene Teilprogramm entschlüsselt werden muss, die Teilprogramm-Entschlüsselungseinheit 123 von
der Speichereinheit 16 die eingebetteten Stellen-Informationen,
die zu dem aufrufenden Teilprogramm in Bezug gesetzt sind, und liest
den Verschlüsselungsschlüssel von
dem aufrufenden Teilprogramm, angeordnet in dem gemeinsam geteilten
Speicher M, entsprechend den einbettenden Stelleninformationen, und
entschlüsselt
dann das aufgerufene Teilprogramm unter Verwendung des Verschlüsselungsschlüssels.
-
Eine
Situation ist zum Beispiel dort gegeben, wo ein nicht legitimer
Benutzer die Kontrolle in einer nicht legitimen Art und Weise übernimmt
und eine Aufruf-Anweisung, die ausgegeben ist, besitzt, die zum
Laden eines erwünschten
Teilprogramms in den Speicher hinein dient. In einem solchen Fall
existiert das legitimierte Teilprogramm, in Bezug auf das angenommen
wird, dass es das erwünschte
Teilprogramm aufruft, nicht in dem gemeinsam geteilten Speicher
M; deshalb ist es nicht möglich,
den Verschlüsselungsschlüssel zu
erhalten und das erwünschte
Teilprogramm entsprechend dem Verfahren des vorliegenden Modifikations-Beispiels
zu entschlüsseln.
Demzufolge wird das Teilprogramm, das durch den nicht legitimierten
Benutzer erwünscht
ist, nicht in den gemeinsam geteilten Speicher M hinein geladen
werden, und es ist möglich,
nicht legitime Referenzen zu verhindern.
-
Weitergebildete Beispiele
-
Der
Grund-Modus des vorliegenden Modifikations-Beispiels ist so, wie
dies vorstehend erwähnt ist.
Es ist auch möglich,
noch besser einen Sicherheitsschutz sicherzustellen, indem eine
weitere Einstellung vorgenommen wird. Das Nachfolgende erläutert dieses
weitergebildete Beispiel.
-
Weitergebildetes Beispiel 1
-
9 stellt
eine Programm-Ladeeinrichtung 9 des vorliegenden, weitergebildeten
Beispiels dar, die einen Verschlüsselungsschlüssel, verwendet
für die
Verschlüsse lung/Entschlüsselung
des aufgerufenen Teilprogramms von einem Teil der Code in dem aufrufenden
Teilprogramm, erzeugt, mit einer Anordnung, bei der eine Komponente,
die eine Verschlüsselung
durchführt
(die das verschlüsselte
Programm erzeugende Vorrichtung C9), und eine Komponente, die eine
Entschlüsselung
durchführt
(die das Teilprogramm entschlüsselte
Einheit 923), jeweils dieselbe Verschlüsselungsschlüssel-Erzeugungseinrichtung gemeinsam
haben (die Schlüssel-Erzeugungseinheiten 901a und 901b).
Es sollte angemerkt werden, dass die Bauelemente, die dieselben
Vorgänge
wie solche in der Programm-Ladeeinrichtung 1 durchführen, mit
denselben Bezugszeichen versehen sind, und eine Erläuterung
wird weggelassen.
-
Vorgang zu Zeitpunkten der
Verschlüsselung
-
Die
das verschlüsselte
Programm erzeugende Vorrichtung C9 erzeugt zuerst Aufruf-Relations-Informationen,
die eine Aufruf-Relation zwischen Teilprogrammen anzeigen, und wandelt
dann jedes Teilprogramm in eine ausführbare Form um. Als nächstes erzeugt
die das verschlüsselte
Programm erzeugende Vorrichtung C9 einen Verschlüsselungsschlüssel für jedes
Teilprogramm unter Bezugnahme auf die Aufruf-Relations-Informationen, und
verschlüsselt
jedes Teilprogramm unter Verwendung jedes Verschlüsselungsschlüssels.
-
10 zeigt
eine schematische Zeichnung, um die Aufruf-Relation zwischen den
Teilprogrammen darzustellen.
-
Das
Nachfolgende erläutert
den Vorgang, der zum Verschlüsseln
eines Teilprogramms dient und der durch die das verschlüsselte Programm
erzeugende Vorrichtung C9 durchgeführt wird. Zu Anfang erfasst
die das verschlüsselte
Programm erzeugende Vorrichtung C9 ein Teilprogramm, das ein anderes
Teilprogramm aufruft, unter Bezugnahme auf die Aufruf-Relations-Informationen,
und liest dann einen Teil der Ausführungs-Form-Code des aufgerufenen Teilprogramms.
Darauf folgend sendet die das verschlüsselte Programm erzeugende
Vorrichtung C9 den gelesenen Code zu der Schlüssel-Erzeugungseinheit 901a und
weist sie an, einen Verschlüsselungsschlüssel zu
erzeugen. Die Schlüssel-Erzeugungseinheit 901a berechnet
den Hash-Wert für
den Code und führt
den Hash-Wert zu der das verschlüsselte
Programm erzeugenden Vorrichtung C9 als einen Verschlüsselungsschlüssel zurück.
-
Die
das verschlüsselte
Programm erzeugende Vorrichtung C9 verschlüsselt das aufgerufene Teilprogramm
unter Verwendung dieses Verschlüsselungsschlüssels und hängt an das
verschlüsselte, aufgerufene
Teilprogramm Informationen an, die die Position des Codes, verwendet
für die
Erzeugung des Verschlüsselungsschlüssels (ein
Offset des Codes in der Ausführungsform
des aufgerufenen Teilprogramms), anzeigen. Dann speichert die das
verschlüsselte
Programm erzeugende Vorrichtung C9 das verschlüsselte, aufgerufene Teilprogramm
in die sekundäre
Speichervorrichtung S hinein.
-
In
einem Fall, in dem ein Teilprogramm durch eine Mehrzahl von Teilprogrammen
aufgerufen ist, wird das aufgerufene Teilprogramm mit Verschlüsselungsschlüsseln verschlüsselt, die
von Coden erzeugt sind, die jeweils Teil jedes der aufgerufenen Teilprogramme
sind. Auf diese Art und Weise wird eine Vielzahl von Mustern von
verschlüsselten
Teilprogrammen aus einem aufgerufenen Teilprogramm erzeugt. In einem
solchen Fall ist es notwendig, dieses so anzuordnen, dass die Komponente,
die den Entschlüsselungsvorgang
durchführt,
in der Lage ist, die Korrespondenz zu verstehen, indem zum Beispiel Identifikations-Informationen
jedes aufgerufenen Teilprogramms an jedes entsprechende Muster eines verschlüsselten
Teilprogramms vor einem Speichern der verschlüsselten Teilprogramme in der
sekundären
Speichervorrichtung S angehängt
sind. Es sollte allerdings angemerkt werden, dass ein Verschlüsselungsschlüssel nur
dann notwendig ist, wenn das aufgerufene Teilprogramm aufgerufen
wird, während
es sich nicht in dem Speicher befindet, gerade dann, wenn eine Vielzahl
von Teilprogrammen vorhanden ist, die das Teilprogramm aufrufen;
deshalb ist es nicht notwendig, einen Verschlüsselungsschlüssel von
einem aufrufenden Teilprogramm zu erzeugen, das den Aufruf nur vornimmt,
während
sich das aufrufende Teilprogramm in dem Speicher befindet.
-
Zum
Beispiel können,
wie für
das Teilprogramm H, dargestellt in 10, Verschlüsselungsschlüssel jeweils
aus den Teilprogrammen C und F aufgebaut werden. Es sollte allerdings
angemerkt werden, dass, wenn die folgenden zwei Bedingungen beide
erfüllt
sind, der Verschlüsselungsschlüssel zum
Entschlüsseln
des Teilprogramms H nur von dem Teilprogramm F aufgebaut sein sollte,
und es ist nicht notwendig, einen Verschlüsselungsschlüssel von
dem Teilprogramm C zu erzeugen:
- (i) Ein Entschlüsseln und
Laden des Teilprogramms H wird dann getriggert, wenn das Teilprogramm
H durch das Teilprogramm F aufgerufen wird; und
- (ii) Die Speicher-Stellen-Informationen definieren, dass, zu
dem Zeitpunkt, zu dem das Teilprogramm C das Teilprogramm H aufruft,
das Teilprogramm H bereits in den Speicher hinein geladen worden
ist.
-
Vorgang zum Zeitpunkt einer Entschlüsselung
-
Das
Nachfolgende erläutert
den Vorgang, der zum Entschlüsseln
eines verschlüsselten
Teilprogramms dient und der durch die Teilprogramm-Entschlüsselungseinheit 923 an
der Stufe einer Programmausführung
durchgeführt
wird. Zuerst empfängt
die das Teilprogramm entschlüsselnde
Einheit 923 von der Steuereinheit 911 (i) Identifikations-Informationen eines
aufgerufenen Teilprogramms, das entschlüsselt werden soll und in den
gemeinsam geteilten Speicher M hinein geladen werden soll, (ii) Identifikations-Informationen eines
aufrufenden Teilprogramms. Als nächstes
liest die Teilprogramm-Entschlüsselungseinheit 923 das
verschlüsselte,
aufgerufene Teilprogramm, das entschlüsselt werden soll, von der
sekundären
Speichervorrichtung S.
-
Darauf
folgend liest die Teilprogramm-Entschlüsselungseinheit 923,
von dem verschlüsselten, aufgerufenen
Teilprogramm, solche Informationen, die die Position eines Codes
anzeigen, von denen ein Verschlüsselungsschlüssel erzeugt
werden soll, und liest auch, von dem aufgerufenen Teilprogramm,
das in den gemeinsam geteilten Speicher M hinein geladen ist, den
Code, der durch die Code-Position angezeigt ist. Darauf folgend
sendet die Teilprogramm-Entschlüsselungseinheit 923 den
gelesenen Code zu der Schlüssel-Erzeugungseinheit 901b und lässt diese
den Verschlüsselungsschlüssel erzeugen.
Dann entschlüsselt
die das verschlüsselte
Programm entschlüsselnde
Einheit 923 das verschlüsselte,
aufgerufene Teilprogramm mit diesem Verschlüsselungsschlüssel. Sobald
der Entschlüsselungsvorgang
abgeschlossen ist, wird der Verschlüsselungsschlüssel gelöscht.
-
11 zeigt
eine schematische Zeichnung, um Speicherstellen von Teilprogrammen
zum Zeitpunkt eines Entschlüsselungsvorgangs
entlang der Zeitachse darzustellen. In dem Beispiel, das in dieser Zeichnung
dargestellt ist, wird das Laden des Teilprogramms H in den Bereich
3 dann getriggert, wenn das Teilprogramm H durch das Teilprogramm
F aufgerufen wird, das bereits in den Bereich 1 hinein geladen worden
ist. Darauf folgend wird das Teilprogramm H, das bereits in den
Bereich 3 hinein geladen worden ist, durch das Teilprogramm C aufgerufen, das
in den Bereich 2 später
hinein geladen wird.
-
Dementsprechend
entschlüsselt
die Teilprogramm-Entschlüsselungseinheit 923 das
Teilprogramm H mit einem Verschlüsselungsschlüssel, erzeugt
von dem Teilprogramm F. Die Teilprogramm-Entschlüsselungseinheit 923 führt nicht
den Entschlüsselungsvorgang
durch, wenn das Teilprogramm C das Teilprogramm H aufruft. Es kann
entweder die Steuereinheit 911 oder die Teilprogramm-Entschlüsselungseinheit 923 sein,
die beurteilt, dass der Entschlüsselungsvorgang
nicht durchgeführt
werden muss, wenn das Teilprogramm C das Teilprogramm H aufruft.
Diese Beurteilung kann (i) durch Vergleichen der Identifikations-Informationen des
aufgerufenen Teilprogramms mit den Speicherstellen-Informationen oder
(ii) durch Prüfen,
ob das aufgerufene Teilprogramm bereits in den Speicher M eingeladen
worden ist oder nicht, vorgenommen werden.
-
Verbessertes Beispiel 2
-
Das
Nachfolgende erläutert
ein anderes, verbessertes Beispiel:
Die das verschlüsselte Programm
erzeugende Vorrichtung C12 des vorliegenden, verbesserten Beispiels,
dargestellt in 12, bettet in ein aufgerufenes
Teilprogramm, während
des Verschlüsselungsvorgangs,
ein Schlüssel-Erlangungs-Programm
zum Erlangen eines Verschlüsselungsschlüssels für ein aufgerufenes
Teilprogramm ein (die Schlüssel-Erlangungs-Programm-Erzeugungseinheit 1201 und
die das verschlüsselte
Programm erzeugende Vorrichtung C12). Wenn das aufgerufene Teilprogramm
entschlüsselt
wird, erhält
die Teilprogramm-Entschlüsselungseinheit 1223 den
Verschlüsselungsschlüssel, indem
das Schlüssel-Erlangungs-Programm,
eingebettet in das aufrufende Teilprogramm, ausgeführt wird,
und entschlüsselt
das aufgerufene Teilprogramm unter Verwendung des Verschlüsselungsschlüssels.
-
Vorgang zum Zeitpunkt einer
Verschlüsselung
-
Der
Vorgang, durchgeführt
durch die das verschlüsselte
Programm erzeugende Vorrichtung C12, ist derselbe wie derjenige
in der vorstehend erwähnten
Ausführungsform,
bis zu dem Schritt eines Umwandelns des Programms, das verschlüsselt werden soll,
in eine ausführbare
Form und eines Unterteilens des Programms in Teilprogramme. Das
Nachfolgende erläutert
einen Vorgang, der durch die das verschlüsselte Programm erzeugende
Vorrichtung C12 durchgeführt
wird, wenn ein Teilprogramm verschlüsselt wird.
-
Die
das verschlüsselte
Programm erzeugende Vorrichtung C12 erzeugt einen Verschlüsselungsschlüssel K für ein Teilprogramm,
das verschlüsselt werden
soll, und speichert dann den Verschlüsselungsschlüssel K in
einer vorbestimmten Speicher-Position, ebenso wie sie Informationen
hält, die die
Speicher-Position anzeigen (eine Adresse, ein Offset, oder dergleichen).
Diese Speicher-Position kann in einem vorbestimmten Bereich innerhalb
der sekundären
Speichervorrichtung S, oder innerhalb eines anderen Teilpro gramms,
das in den gemeinsam geteilten Speicher M hinein geladen wird, wenn das
Teilprogramm entschlüsselt
werden soll, oder dergleichen, vorliegen. Die das verschlüsselte Programm
erzeugende Vorrichtung C12 weist die Schlüsselerlangungsprogramm-Erzeugungseinheit 1201 auf
die Speicher-Position hin und lässt
sie ein solches Schlüssel-Erlangungs-Programm
erzeugen, das "einen
Vorgang zum Lesen des Verschlüsselungsschlüssels K
von der Speicher-Position und Schreiben davon in eine vorbestimmte
Position hinein (einen Bereich, der zum Speichern des Verschlüsselungsschlüssels K
für das
bestimmte Teilprogramm zugeordnet ist) innerhalb der Speichereinheit 16" schreibt.
-
Wenn
das Verfahren, das vorstehend erwähnt ist, für das bestimmte Teilprogramm
beendet ist, bettet die das verschlüsselte Programm erzeugende
Vorrichtung C12 das Schlüssel-Erlangungs-Programm
in ein anderes Teilprogramm ein, das dazu dient, dieses bestimmte
Teilprogramm aufzurufen. Das Schlüssel-Erlangungs-Programm wird in
eine Position, zum Beispiel, unmittelbar vor dem Vorgang eingebettet,
indem das besondere Teilprogramm aufgerufen wird.
-
Wenn
für jedes
von allen der Teilprogramme die Vorgänge zum Erzeugen eines Schlüssel-Erlangungs-Programms
und zum Einsetzen des Schlüssel-Erlangungs- Programms in jedes
aufrufende Teilprogramm abgeschlossen sind, verschlüsselt die
das verschlüsselte
Programm erzeugende Vorrichtung C12 die Teilprogramme.
-
Vorgang zu Zeitpunkten einer
Entschlüsselung
-
Der
Vorgang eines Erlangens eines Verschlüsselungsschlüssels, verwendet
beim Entschlüsseln,
ist ähnlich
zu demjenigen in der vorstehend erwähnten Ausführungsform. Wenn eine Anweisung zum
Entschlüsseln
eines Teilprogramms empfangen ist, liest die Teilprogramm-Entschlüsselungseinheit 1223 den
Verschlüsselungsschlüssel K unter
Bezugnahme auf den Bereich, der innerhalb der Speichereinheit 16 vorliegt,
und wird zum Speichern des Verschlüsselungsschlüssel K für dieses
bestimmte Teilprogramm zugeordnet, und führt den Entschlüsselungsvorgang
unter Verwendung dieses Verschlüsselungsschlüssels K
durch. Dieser Verschlüsselungsschlüssel K ist
dann in diesen Bereich über
eine Ausführung
des Schlüssel-Erlangungs-Programms, eingebettet
in das aufrufende Teilprogramm, das bereits in dem gemeinsam geteilten
Speicher M eingeladen worden ist, geschrieben worden. Wenn der Entschlüsselungsvorgang
beendet ist, löscht
die Teilprogramm-Entschlüsselungseinheit 1223 den
Verschlüsselungsschlüssel K von
dem Bereich. Gerade wenn dasselbe Teilprogramm erneut aufgerufen
wird, wird, da das Schlüssel- Erlangungs-Programm,
eingebettet in das aufrufende Teilprogramm, den Verschlüsselungsschlüssel K in
denselben Bereich zu diesem Zeitpunkt hinein schreibt, dort kein
Problem beim Löschen
des Verschlüsselungsschlüssels K vorhanden
sein.
-
Über diesen
Vorgang ist es möglich,
das Risiko zu verringern, dass der Verschlüsselungsschlüssel in
dem vorliegenden Modifikations-Beispiel gestohlen wird, verglichen
mit einem Fall, in dem ein Verschlüsselungsschlüssel, der
für alle
Teilprogramme gemeinsam ist, immer in einer vorbestimmten Stelle,
wie beispielsweise einer Speichereinheit, gespeichert ist. Auch
wenn ein Verschlüsselungsschlüssel für ein Teilprogramm
durch irgendeine Möglichkeit
gestohlen werden sollte, wird dabei kein Einfluss auf die anderen
Teilprogramme vorhanden sein. Weiterhin ist es möglich, ihn so anzuordnen, dass
ein aufrufendes Teilprogramm nur dann verschlüsselt werden kann, wenn es
durch ein legitimiertes, aufrufendes Programm in dem originalen,
legitimierten Vorgangsablauf aufgerufen wird; deshalb wird man,
gerade dann, wenn eine Person, die nicht legitim die Kontrolle übernommen
hat, versucht, ein bestimmtes Teilprogramm, das in den Speicher
hinein für
den Zweck einer nicht legitimen Referenz geladen ist, zu erhalten,
nicht in der Lage sein, eine nicht legitime Referenz vorzunehmen,
da dort kein Verschlüsselungsschlüssel verfügbar sein
wird.
-
Anmerkungen für Modifikation-Beispiel 4
-
Es
sollte angemerkt werden, dass, in der vorstehenden Erläuterung,
Daten oder ein Programm zum Erlangen eines Verschlüsselungsschlüssels, verwendet
in dem Entschlüsselungsvorgang
eines aufgerufenen Teilprogramms, in ein aufrufendes Teilprogramm
eingebettet ist, allerdings ist es auch akzeptierbar, dass die Daten
oder das Programm in bestimmten anderen Stellen eingebettet sind.
Zum Beispiel ist es auch akzeptierbar, die Daten oder das Programm
zum Erlangen eines Verschlüsselungsschlüssels in
eines der Teilprogramme einzubetten (nicht das aufrufende Teilprogramm),
das in dem gemeinsam geteilten Speicher existiert, wenn der Aufruf
vorgenommen wird. Auch ist es, als eine Alternative, akzeptierbar,
dass dann, wenn ein Teilprogramm beendet wird, ausgeführt zu werden,
und für
den gemeinsam geteilten Speicher gelöscht wird, die Steuereinheit
nur die Daten oder das Programm liest, die zum Erlangen eines Verschlüsselungsschlüssels dienen
und in diesem Teilprogramm eingebettet worden sind, und speichert
die Daten oder das Programm in einen Bereich ausschließlich dafür hinein
und verwendet sie dann in ei nem Entschlüsselungsvorgang, der später für ein anderes
Teilprogramm durchgeführt
werden soll.
-
In
der Erläuterung
vorstehend ist es so angeordnet, dass die Daten oder das Programm
zum Erlangen eines Verschlüsselungsschlüssels in
ein einzelnes Teilprogramm (ein aufrufendes Teilprogramm) eingebettet
sind; allerdings ist auch akzeptierbar, wenn sie in eine Vielzahl
von Teilprogrammen eingebettet sind.
-
Zum
Beispiel ist es, um einen Verschlüsselungsschlüssel selbst
einzubetten, akzeptierbar, dass der Verschlüsselungsschlüssel in
eine Vielzahl von Teilprogrammen unterteilt und eingebettet wird,
die sich in dem gemeinsam geteilten Speicher M befinden, wenn ein
Teilprogramm, das ein Entschlüsselungs-Target
ist, aufgerufen wird, und dass, zu dem Zeitpunkt einer Entschlüsselung,
die Teilprogramm-Entschlüsselungseinheit
diese unterteilten Verschlüsselungsschlüssel liest
und sie zusammensetzt, um den Verschlüsselungsschlüssel zu
erhalten. Es wäre
eine gute Idee, dass die Speicher-Informations-Definiereinheit, zum Beispiel, separat,
zu dem Zeitpunkt einer Verschlüsselung,
einige Informationen spezifiziert, die anzeigen (i), von welchen Stellen
dieser Teilprogramme die unterteilten Verschlüsselungsschlüssel gelesen
werden sollen, und (ii) in welcher Reihenfolge die unterteilten
Verschlüsselungsschlüssel, die
gelesen worden sind, zusammengesetzt werden sollten, um einen Verschlüsselungsschlüssel zu
erhalten.
-
Wenn
ein einen Verschlüsselungsschlüssel erlangendes
Programm verwendet wird, ist es auch möglich, zum Beispiel, den Verschlüsselungsschlüssel für das Teilprogramm
H in der folgenden Art und Weise zu erhalten, in einem Fall, in
dem die Teilprogramme in der Reihenfolge von A, C und dann H, ausgeführt werden:
(i) wenn das Teilprogramm A ausgeführt wird, schreibt das den
Verschlüsselungsschlüssel erlangende
Programm, eingebettet in das Teilprogramm A, die erste Hälfte des
Verschlüsselungsschlüssels für das Teilprogramm
H in die erste Hälfte
des Verschlüsselungsschlüssel-Speicherbereich
in die Speichereinheit 16 hinein, und (ii) wenn das Teilprogramm
C ausgeführt
wird, schreibt die den Verschlüsselungsschlüssel erlangende
Einheit, eingebettet in das Teilprogramm C, die zweite Hälfte des Verschlüsselungsschlüssels für das Teilprogramm
H in die zweite Hälfte
des Verschlüsselungsschlüssel-Speicherbereichs
hinein. Über
diesen Vorgang wird, wenn das Teilprogramm H aufgerufen wird, der Verschlüsselungsschlüssel für das Teilprogramm
H in der Speichereinheit in einem vollständigen Zustand gespeichert.
-
Es
sollte angemerkt werden, dass es möglich ist, die unterschiedlichen
Verfahren, die vorstehend erwähnt
sind, in Kombination zu verwenden, solange wie dort keine Inkompatibilität vorhanden
ist.
-
Weiterhin
weist, in der Erläuterung
vorstehend, die das verschlüsselte
Programm erzeugende Vorrichtung die Komponente auf, die den Vorgang
eines Einbettens eines Verschlüsselungsschlüssels in ein
verschlüsseltes
Programm durchführt,
wie beispielsweise die Schlüssel-Erzeugungseinheit 901a, oder
die Erzeugungseinheit 1201 für das Schlüssel-Erlangungs-Programm; allerdings
ist es auch akzeptierbar, dass die Programm-Ladeeinrichtung eines von diesen zusammen
mit der Speicherstellen-Definiereinheit aufweist.
-
In
dem vorliegenden Modifikations-Beispiel ist die die verschlüsselten
Daten entschlüsselnde Vorrichtung
der vorliegenden Erfindung als die Programm-Ladeeinrichtung zusammen
mit der Komponenten, die den Vorgang eines Einbettens eines Verschlüsselungsschlüssels in
ein verschlüsseltes
Programm hinein durchführt,
wie beispielsweise die Schlüssel-Erzeugungseinheit 901a,
oder die Erzeugungseinheit 1201 für das Schlüssel-Erlangungs-Programm, wobei jedes davon
ein Teil der das verschlüsselte
Programm erzeugenden Vorrichtung ist, ausgeführt.
-
Modifikations-Beispiel 5
-
In
dem vorliegenden Modifikations-Beispiel wird ein Sicherheitsschutz
durch Verschlüsselung, mit
der Verwendung eines Verschlüsselungsschlüssels für einen
Schlüssel,
einen Verschlüsselungsschlüssel, der
in den Verschlüsselungs/Entschlüsselungs-Vorgängen für ein Teilprogramm
verwendet wird, verstärkt.
Zusätzlich
wird, vor dem Verschlüsselungs-Vorgang
für das
Programm, ein Verschlüsselungsschlüssel für einen
Schlüssel
individuell für
jedes der Teilprogramme erzeugt. Jeder "Verschlüsselungsschlüssel für einen
Schlüssel" wird in den Verschlüsselungs/Entschlüsselungs-Vorgängen für einen
Verschlüsselungsschlüssel zu
dem Zeitpunkt einer Verschlüsselung/Entschlüsselung
jedes Teilprogramms, das durch ein entsprechendes Teilprogramm aufgerufen
werden soll, verwendet.
-
13 zeigt
ein Blockdiagramm, um die Strukturen der Programm-Ladeeinrichtung 1b und der
in Bezug stehenden Vorrichtungen in dem vorliegenden Modifikations-Beispiel
zu zeigen. In dieser Anordnung sind eine individuelle Verschlüsselungsschlüssel-Erzeugungseinheit 1301 (in
der das verschlüsselte
Programm erzeugenden Vorrichtung C13) und eine Verschlüsselungsschlüssel-Entschlüsselungseinheit 1302 (in
der Programm-Ladeeinrichtung 1b) zu der Struktur in der
vorstehend erwähnten Ausführungsform
hinzugefügt.
-
Vorgang zu Zeitpunkten einer Verschlüsselung
-
Das
Folgende beschreibt einen Vorgang, in dem die das verschlüsselte Programm
erzeugende Vorrichtung C13 ein Teilprogramm verschlüsselt. Zuerst
weist die das verschlüsselte
Programm erzeugende Vorrichtung C13 die den individuellen Verschlüsselungsschlüssel erzeugende
Einheit 1301 an, "einen
Verschlüsselungsschlüssel für einen
Schlüssel" individuell für jedes
der Teilprogramme zu erzeugen. Dann bettet die das verschlüsselte Programm erzeugende
Vorrichtung C13 jeden 'Verschlüsselungsschlüssel für einen
Schlüssel" in jedes Teilprogramm
ein, und erzeugt gleichzeitig Informationen, die eine Einbettungsstelle
anzeigen ("Einbettungsstellen-Informationen").
-
Darauf
folgend verschlüsselt
die das verschlüsselte
Programm erzeugende Vorrichtung C13 das Teilprogramm unter Verwendung
eines Verschlüsselungsschlüssels für ein verschlüsseltes
Programm (dieser Verschlüsselungsschlüssel ist
für alle Teilprogramme
gemeinsam). Dann erfasst die das verschlüsselte Programm erzeugende
Vorrichtung C13 ein anderes Teilprogramm, das dieses Teilprogramm
aufruft, das sich auf Ruf-Relations-Informationen bezieht, die dieselben
wie diejenigen, verwendet in dem Modifikations-Beispiel 4, sind.
-
Als
nächstes
verschlüsselt
die das verschlüsselte
Programm erzeugende Vorrichtung C13 den Verschlüsselungsschlüssel zum
Verschlüsseln des
Teilprogramms, unter Verwendung "des
Verschlüsselungsschlüssels für den Schlüssel", entsprechend zu
dem aufrufenden Teilprogramm. Dann sendet die das verschlüsselte Programm
erzeugende Vorrichtung C13 zu der Speichereinheit 16 (i)
den verschlüsselten
Verschlüsselungsschlüssel, (ii)
Identifikations-Informationen des entsprechenden Teilprogramms und
des aufrufenden Teilprogramms, und (iii) die Einbettungsstellen-Informationen,
die im Voraus erzeugt wurden, so dass die Speichereinheit 16 diese
in dem Bereich für
einen verschlüsselten
Verschlüsselungsschlüssel speichert.
-
Vorgang zu Zeitpunkten einer
Entschlüsselung
-
Der
Entschlüsselungsvorgang
wird durch die den Verschlüsselungsschlüssel entschlüsselnde
Einheit 1302 und die das Teilprogramm entschlüsselnden
Einheit 1323 durchgeführt.
Die Teilprogramm-Entschlüsselungseinheit 1323,
die dabei ist, ein bestimm tes Teilprogramm zu entschlüsseln, informiert
zuerst die den Verschlüsselungsschlüssel entschlüsselte Einheit 1302 über Identifikations-Informationen
(erhalten von der Steuereinheit 11) des Teilprogramms,
das verschlüsselt
werden soll, und eines anderen Teilprogramms, das das Teilprogramm
aufruft. Entsprechend zu diesen Identifikations-Informationen liest die den Verschlüsselungsschlüssel entschlüsselnde
Einheit 1302 von diesen Sätzen "eines verschlüsselten Verschlüsselungsschlüssels" und "einbettenden Stellen-Informationen
eines Verschlüsselungsschlüssel für einen
Schlüssel", die in der Speichereinheit 16 gespeichert
sind, entsprechend zu jedem Teilprogramm, einen solchen Satz, der
einer Kombination des Teilprogramms, das entschlüsselt werden soll, und dem
aufrufenden Teilprogramm entspricht.
-
Als
nächstes
liest die Verschlüsselungsschlüssel-Entschlüsselungseinheit 1302 den "Verschlüsselungsschlüssel für einen
Schlüssel" von einer vorbestimmten
Stelle in einem der aufrufenden Teilprogramme, die in dem gemeinsam
geteilten Speicher M vorhanden sind, wobei die vorbestimmte Stelle
durch die einbettenden Stellen-Informationen angezeigt sind. Dann
entschlüsselt
die Verschlüsselungsschlüssel-Entschlüsselungseinheit 1302,
unter Verwendung des Verschlüsselungsschlüssels für einen
Schlüssel, "den verschlüsselten
Verschlüsselungsschlüssel" für das Teilprogramm,
um entschlüsselt
zu werden, um so einen Verschlüsselungsschlüssel zu
erhalten, und gibt ihn zu der Teilprogramm-Entschlüsselungseinheit 1323 aus.
-
Die
Teilprogramm-Entschlüsselungseinheit 1323 entschlüsselt das
Teilprogramm unter Verwendung des entschlüsselten Verschlüsselungsschlüssels.
-
In
der Erläuterung
vorstehend besitzt das Teilprogramm einen Verschlüsselungsschlüssel gemeinsam
dafür,
um damit verschlüsselt
zu werden, und "einen
Verschlüsselungsschlüssel für einen Schlüssel", um zu verschlüsseln/zu
entschlüsseln, wobei
der Verschlüsselungsschlüssel individuell
für jedes
Teilprogramm vorgesehen wird; allerdings ist auch akzeptierbar,
dass jedes Teilprogramm jeweils einen individuellen Verschlüsselungsschlüssel besitzt.
-
Auch
weist, in der Erläuterung
vorstehend, die das verschlüsselte
Programm erzeugende Vorrichtung (i) die den individuellen Verschlüsselungsschlüssel erzeugende
Einheit 1301, (ii) die Komponente, die die einbettenden
Stellen-Informationen erzeugt, und (iii) die Komponente, die den
Vorgang eines Speicherns des verschlüsselten Verschlüsselungsschlüssels und
der einbettenden Stellen-Informationen in die Speichereinheit 16 hin ein
durchführt, auf;
allerdings ist es auch akzeptierbar, dass die Programm-Ladeeinrichtung sie
zusammen mit der die Speicherstelle definierenden Einheit aufweist.
-
Modifikations-Beispiel 6
-
In
dem vorliegenden Modifikations-Beispiel kann, wenn ein Teilprogramm
in den gemeinsam geteilten Speicher M hinein geladen wird, die Stellen-Position
dynamisch innerhalb des Programm-Stellen-Bereichs bestimmt werden.
In dem vorliegenden Modifikations-Beispiel wird, im Gegensatz zu
der Ausführungsform,
in der die Stellen-Position entsprechend den Speicherstellen-Informationen festgelegt
ist, jedes Teilprogramm in einer unterschiedlichen Position, zu
jedem Zeitpunkt einer Ausführung,
angeordnet. Demzufolge ist es möglich,
das Risiko von nicht legitimen Referenzen und eines Missbrauchs
des Teilprogramms, eingeladen in den Speicher hinein, zu verringern,
und einen Sicherheitsschutz besser sicherzustellen.
-
Struktur
-
14 zeigt
ein Blockdiagramm, um die Struktur der Programm-Ladeeinrichtung 1c in
dem vorliegenden Modifikations-Beispiel darzustellen. Dieselben
Komponenten wie in der Programm-Ladeeinrichtung 1 in der
Ausführungsform
sind mit denselben Bezugszeichen versehen. Die strukturellen Merkmale
der Programm-Ladeeinrichtung 1c sind diejenigen, dass sie
eine Speicherstellen-Bestimmungseinheit 140 anstelle der
Speicherstellen-Informations-Entschlüsselungseinheit 152 und
die Speicherverwaltungs-Informationen 160 anstelle von Speicherstellen-Informationen
besitzt.
-
Die
Speicherstellen-Bestimmungseinheit 140 bestimmt, wenn ein
Teilprogramm aufgerufen ist und in dem Speicher M lokalisiert werden
soll, eine Speicherstellen-Position für das Teilprogramm entsprechend
zu einer Anweisung von der Steuereinheit 11 und weist auf
die Steuereinheit 11 auf die bestimmte Position hin. Die
Speicherstellen-Bestimmungseinheit 140 erzeugt
auch die Speicherverwaltungs-Informationen und aktualisiert sie,
die zum Verwalten der Speicherstellen-Positionen der Teilprogramme
in dem Speicher verwendet werden. Das Nachfolgende erläutert weiterhin
im Detail den Vorgang, durchgeführt
durch die Speicherstellen-Bestimmungseinheit 140, unter
Bezugnahme auf spezifische Beispiele der Programm-Anordnung.
-
Die 15A bis 15E zeigen
konzeptmäßige Zeichnungen,
um darzustellen, wie verschlüsselte
Teilprogramme in dem Programm-Stellen-Bereich 150 in dem
gemeinsam geteilten Speicher M zu dem Zeitpunkt einer Ausführung des
Programms lokalisiert werden. Die Speicherstellen-Bestimmungseinheit 140 sieht,
innerhalb des Programm-Stellen-Bereichs 150,
nach einem Raum-Bereich, der groß genug für ein Teilprogramm ist, um neu
darin angeordnet zu werden, und falls dort ein solcher Raum-Bereich
vorhanden ist, informiert sie die Steuereinheit 11 über die
Adresse des Raum-Bereichs als die Stellen-Position. Umgekehrt informiert, wenn
dort kein solcher Raum-Bereich vorhanden ist, die Speicherstellen-Bestimmungseinheit 140 die Steuereinheit 11 über die
Adresse des Stellen-Bereichs für
ein Teilprogramm, das bereits in dem Programm-Stellen-Bereich 150 angeordnet
worden ist, so dass das angeordnete Teilprogramm durch das neue
Teilprogramm überschrieben
wird.
-
16 stellt die Inhalte der Speicherverwaltungs-Informationen 160 dar,
die für
die Teilprogramme, angeordnet so, wie dies in 15 dargestellt
ist, dienen, und sie werden sequenziell erzeugt oder durch die Speicherstellen-Bestimmungseinheit 140 aktualisiert.
Die Speicherverwaltungs-Informationen 160 umfassen (i)
Identifikations-Informationen 1601, die das Teilprogramm,
das ein Target ist, anzeigen, (ii) eine Start-Adresse 1602,
die die Speicher-Position (seine Start-Adresse) des Teilprogramms
anzeigt, (iii) eine Größe 1603 und
(iv) eine Stellen-Reihenfolge 1604, die X wie in dem X-ten
Teilprogramm, um in dem gemeinsam geteilten Speicher M angeordnet
zu werden, anzeigt. Die Speicherstellen-Bestimmungseinheit 140 erzeugt
einen neuen Teil von Speicherverwaltungs-Informationen für ein Teilprogramm, um neu
angeordnet zu werden, und löscht
den Teil der Speicherverwaltungs-Informationen für das Teilprogramm, die durch
die neuen überschrieben
werden sollen; deshalb sind dort so viele Teile an Speicherverwaltungs-Informationen wie
die Anzahl der Teilprogramme, die momentan in dem Programm-Stellen-Bereich 150 lokalisiert
sind, vorhanden.
-
Wie
in 15A dargestellt ist, werden die Teilprogramme
A, B und C sequenziell in dem Programm-Stellen-Bereich 150 angeordnet.
Entsprechend hierzu erzeugt die Speicherstellen-Bestimmungseinheit 140 sequenziell
Speicherverwaltungs-Informationen, die jedem der Teilprogramme entsprechen
(16A). Es sollte angemerkt werden, dass, obwohl
das Teilprogramm A, das zuerst angeordnet wird, an dem Beginn des
Programm-Stellen-Bereichs 150 in
der Zeichnung positioniert ist, die Position nicht an dem Beginn
festgelegt werden muss. Dies kommt daher, dass dann, wenn sie an dem
Beginn festgelegt ist, das erste Teilprogramm und einige folgende
Teilprogramme unvermeidbar in nahezu denselben Positionen zu jedem
Zeitpunkt angeordnet werden würden,
wenn sie aus geführt
werden, und demzufolge würde
die Aufgabe des vorliegenden Modifikations-Beispiels nicht erreicht werden, wobei
die Aufgabe diejenige ist, eine nicht legitime Referenz durch dynamisches Ändern der
Stellen-Positionen zu jedem Zeitpunkt einer Ausführung schwierig zu machen.
Demzufolge wird, wenn das erste Teilprogramm lokalisiert wird, die
Position soweit wie ein Offset, bestimmt unter Verwendung von Zufalls-Zahlen,
oder dergleichen, vorhanden ist, geglitten, so dass es möglich ist,
zu vermeiden, die Stellen-Position an dem Beginn des Programm-Stellen-Bereichs 150 festgelegt
zu haben.
-
An
dem Zustand, dargestellt in 15A, wird
das Teilprogramm D durch das Teilprogramm C aufgerufen. Zu diesem
Zeitpunkt ist kein Raum-Bereich, groß genug zum Anordnen des Teilprogramms D
darin, vorhanden; deshalb bestimmt die Speicherstellen-Bestimmungseinheit 140 die
Speicherstellen-Position des Teilprogramms D, so dass das Teilprogramm
A, das sich in den Speicher M für
die längste
Zeit an diesem Punkt befunden hat, durch das Teilprogramm D überschrieben
wird. Mit anderen Worten bestimmt die Speicherstellen-Bestimmungseinheit 140 die
Start-Position des Teilprogramms D in dem Speicher als denselben
Wert zu demjenigen des Teilprogramms A. 15B stellt
den Zustand dar, in dem das Teilprogramm D entsprechend zu solchen Speicherstellen-Informationen lokalisiert
ist. Da die Größe des Teilprogramms
D groß ist,
erstreckt sich die letztere Hälfte
des Teilprogramms D über
die erste Hälfte
des Teilprogramms B. An diesem Punkt löscht die Speicherstellen-Bestimmungseinheit 140 die
Speicherverwaltungs-Informationen,
die sich auf die Teilprogramme A und B beziehen, und erzeugt die
Speicherverwaltungs-Informationen, die sich auf das Teilprogramm
D beziehen.
-
Darauffolgend
bestimmt die Speicherstellen-Bestimmungseinheit 140 die
Speicherstellen-Position für
das Teilprogramm E (15C), das Teilprogramm F (15D) und das Teilprogramm G (15E), in der angegebenen Reihenfolge. Die Speicherstellen-Bestimmungseinheit 140 aktualisiert auch
die Speicherverwaltungs-Informationen 160 entsprechend
zu der Einen, die in 168 dargestellt
ist, und dann 16C, sequenziell. (166 entspricht 15C und 16C 15E.)
-
Wenn
ein Teilprogramm in den Speicher hinein geladen wird, um ein anderes
Teilprogramm zu überschreiben,
muss es nicht notwendigerweise so, wie dies in 158 dargestellt
ist, angeordnet werden, wo Speicherstellen-Informationen so bestimmt sind,
dass ein Teilprogramm, das in dem Speicher für die längste Zeit angeordnet worden
ist, überschrieben
wird, und zwar von seiner Start-Position an, durch ein anderes Teilpro gramm.
Alternativ ist es auch möglich,
dass eine Stellen-Position so bestimmt wird, wie dies in 15D dargestellt ist, wo ein Teilprogramm durch
ein anderes Teilprogramm überschrieben
wird, beginnend von irgendwo in der Mitte. Diese Anordnung wird
so vorgenommen, dass zwei oder mehr Teilprogramme gelöscht werden
(vollständig
oder teilweise), und zwar durch ein Teilprogramm in einer Überschreibung.
In 15D ist es so angeordnet, dass das Teilprogramm
D überschrieben wird,
beginnend von irgendwo in der Mitte, und zwar durch das Teilprogramm
F, das kleiner als das Teilprogramm D ist, damit das Teilprogramm
D die erste Hälfte
des Teilprogramms E auch überschreibt.
-
Durch
eine Anordnung auf diese Art und Weise ist, gerade dann, wenn auf
die Inhalte des Speichers M in einer nicht legitimen Art und Weise
an dieser Stufe der 15D, zum Beispiel, Bezug genommen
wird, das einzige Teilprogramm, auf das Bezug genommen werden kann,
um abzuschließen, das
Teilprogramm F. Falls das Teilprogramm D überschrieben worden ist, und
zwar von seiner Start-Position aus, durch das Teilprogramm F, dann
müsste nicht
nur auf das Teilprogramm F, sondern auch auf das Teilprogramm E,
vollständig
Bezug genommen werden. Die Speicherstellen-Bestimmungseinheit 140 beurteilt,
ob der Überschreibungs-Vorgang,
dargestellt in 15D, notwendig ist oder nicht,
und wo das Überschreiben
beginnen sollte, und die Beurteilung wird von den Positionen des
Teilprogramms D und dem folgenden Teilprogramm E in dem Programm-Stellen-Bereich,
und der Größe des Teilprogramms
F, das die anderen überschreiben
soll, vorgenommen.
-
Es
sollte angemerkt werden, dass, um den Vorgang, der vorstehend erwähnt ist,
durchzuführen, die
Speicherstellen-Bestimmungseinheit 140 von der Steuereinheit 11 die
Identifikations-Informationen und die Größe des Teilprogramms, um in
den Speicher hinein angeordnet zu werden, erhält. Solche Informationen, wie
die Start-Adresse und die Größe des Programm-Stellen-Bereichs
in dem Speicher M, werden auch im Voraus gespeichert.
-
Betriebsweise
-
Das
Nachfolgende erläutert
die Betriebsweise der Programm-Ladeeinrichtung 1c (teilweise
der Speicherstellen-Bestimmungseinheit 140) in dem Vorgang
eines Bestimmens der Speicherstelle der Teilprogramme.
-
17 zeigt
ein Flussdiagramm, um den Ablauf des Vorgangs einer Bestimmung der
Speicherstelle eines Teilprogramms darzustellen. Es sollte angemerkt
werden, dass der Vorgang, dargestellt in der Zeichnung, ein Teil
des Programm-Entschlüsselungsvorgangs
und des Speicherstellen-Vorgangs, die durch die Programm-Ladeeinrichtung 1c durchgeführt werden,
ist. Der Vorgang in der Zeichnung ist eine Alternative zu dem Vorgang,
durchgeführt
durch die Programm-Ladeeinrichtung 1, in der Ausführungsform,
dargestellt als Schritte S509 bis S511 in 5.
-
Zuerst
sendet die Steuereinheit 11, die eine Anforderung empfangen
hat, dass ein Teilprogramm geladen werden muss, (i) die Anforderung
zum Bestimmen einer Speicherstelle, (ii) die Identifikations-Informationen
des Teilprogramms und (iii) die Größe des Teilprogramms, zu der
Speicherstellen-Bestimmungseinheit 140 (S1701). Es wird
angenommen, dass, vor der Anforderung, die Steuereinheit 11 ein
Lesen des Teilprogramms von der sekundären Speichervorrichtung S beendet
hat und dieses auch entschlüsselt
hat.
-
Die
Speicherstellen-Bestimmungseinheit 140 nimmt auf die Größen der
Teilprogramme, die lokalisiert worden sind, 1603, und die
Start-Adressen 1602, die in die Speicherverwaltungs-Informationen 160 eingeschlossen
worden sind, Bezug und prüft
die Position und die Größe des Raum-Bereichs
in dem Programm-Stellen-Bereich 150. Die Speicherstellen-Bestimmungseinheit 140 vergleicht
die Größe mit der
Größe des Teilprogramms,
erhalten von der Steuereinheit 11, und beurteilt, ob dort
ein Raum-Bereich, der groß genug
zum Anordnen des Teilprogramms darin ist, vorhanden ist (S1702).
-
Wenn
dort ein Raum groß genug
vorhanden ist (S1703: Ja), weist die Speicherstellen-Bestimmungseinheit 140 die
Steuereinheit 11 auf die Adresse des Raum-Bereichs hin
(S1704), und erzeugt die Speicherverwaltungs-Informationen für das Teilprogramm
(S1708). Von den Speicherverwaltungs-Informationen 160 werden,
wie für
die Identifikations-Informationen 1601 und die Größe 1603,
die Informationen, empfangen von der Steuereinheit 11,
so verwendet, wie sie sind; für
die Start-Adresse 1602 wird die Adresse, auf die die Steuereinheit 11 hingewiesen
worden ist, verwendet. Die Speicherstellen-Bestimmungseinheit 140 zählt die
Anzahl von Teilprogrammen, die lokalisiert worden sind, unter Verwendung
eines eingebauten Zählers,
und spezifiziert die Werte "der
Reihenfolge, mit der sie angeordnet werden, 1604", unter Verwendung
des Zählerwerts.
-
Wenn
dort kein Raum-Bereich groß genug vorhanden
ist (S1703: Nein), nimmt die Speicherstellen-Bestimmungseinheit 140 auf
die Reihenfolge, wie sie lokalisiert werden sollen, 1604,
Bezug, die in den Speicherverwaltungs-Informationen 160 umfasst sind,
und wählt
ein Teilprogramm aus, das in dem Speicher als das früheste angeordnet
wurde (d.h. das eine, das den kleinsten Wert als die Reihenfolge, in
der es angeordnet werden soll, 1604, besitzt), unter den
Teilprogrammen, die momentan in dem Speicher vorhanden sind, als
das eine, das gelöscht
werden soll (S1705). Darauf folgend weist die Speicherstellen-Bestimmungseinheit 140 die
Steuereinheit 11 auf die Adresse des Bereichs, wo das Teilprogramm, das
gelöscht
werden soll, angeordnet ist, hin (S1706).
-
Wenn
die Größe des Teilprogramms,
das neu angeordnet werden soll, größer als das Teilprogramm ist,
das gelöscht
werden soll (siehe 158), wird die
Steuereinheit 11 auf die Start-Adresse des Teilprogramms,
das gelöscht
werden soll, hingewiesen. Umgekehrt wird, wenn die Größe des Teilprogramms,
das neu angeordnet werden soll, kleiner als das Teilprogramm ist,
das gelöscht
werden soll (siehe 15D), die Adresse irgendwo in
der Mitte des Bereichs, in der das Teilprogramm, das gelöscht werden soll,
angeordnet ist, der Steuereinheit 11 übermittelt. Es ist auf diese
Art und Weise angeordnet, da, wie früher erwähnt ist, es besser ist, falls
eine Vielzahl von Teilprogrammen, die bereits in dem Speicher angeordnet
worden sind, durch Laden eines Teilprogramms überschrieben wird. Der Wert
der Adresse wird so spezifiziert, dass das neu angeordnete Teilprogramm
an den beiden Seiten der Grenze zwischen dem Teilprogramm, das gelöscht werden
soll, und dem folgenden Teilprogramm vorhanden ist (d.h. die Teilprogramme
D und E in 15C). Der Wert kann von der
End-Adresse des Teilprogramms, das gelöscht werden soll, der Start-Adresse
des folgenden Teilprogramms und der Größe des neu angeordneten Teilprogramms
lokalisiert werden.
-
Weiterhin
erzeugt die Speicherstellen-Bestimmungseinheit 140 die
Speicherverwaltungs-Informationen des neu angeordneten Teilprogramms (S1708)
und löscht
die Speicherstellen-Informationen des Teilprogramms, die durch das
neu angeordnete Teilprogramm überschrieben
worden sind (S1707).
-
Zusammenfassung
-
Wie
bisher erläutert
ist, ist es, entsprechend der Programm-Ladeeinrichtung 1c in
dem vorliegenden Modifikations-Beispiel, da die Speicherstellen-Positionen
dynamisch bestimmt werden, möglich,
das Risiko zu verringern, dass auf die Teilprogramme, die in den
Speicher geladen sind, nicht legitim oder missbräuchlich Bezug genommen wird,
und um demzufolge einen Sicherheitsschutz besser sicherzustellen.
-
Es
sollte angemerkt werden, dass, in der Erläuterung vorstehend, die zuvor
existierenden Teilprogramme durch ein neu angeordnetes Teilprogramm überschrieben
werden; allerdings ist es auch akzeptierbar, falls die existierenden
Teilprogramme zuerst gelöscht
werden, und dann die neu angeordneten Teilprogramme in dem Bereich,
erhalten von dem Löschen,
angeordnet werden. Wenn der Überschreibungs-Vorgang
verwendet wird, wird, wenn ein zuvor existierendes Teilprogramm
größer als
das neu angeordnete Teilprogramm ist, ein Teil des zuvor existierenden
Teilprogramms in dem Speicher verbleiben; allerdings ist es, wenn
der Vorgang verwendet wird, in dem ein Löschen vor einem Anordnen des
Teilprogramms auftritt, möglich,
die Situation zu vermeiden, in der ein Teil des Teilprogramms verbleibt.
Der Bereich, der durch Dummy-Daten überschrieben werden soll, wird
von den Start-Positionen und den End-Positionen sowohl des zuvor
existierenden Teilprogramms als auch des neu angeordneten Teilprogramms
beurteilt.
-
Zusätzlich wird,
in der Erläuterung
vorstehend, der Stellen-Bereich dynamisch innerhalb des Programm-Stellen-Bereichs
zu jedem Zeitpunkt geändert,
zu dem das Programm ausgeführt
wird; allerdings ist es auch akzeptierbar, es so anzuordnen, dass
die Adresse des Programm-Stellen-Bereichs auch zu jedem Zeitpunkt
geändert
wird, zu dem das Programm ausgeführt
wird. In einem solchen Fall bestimmt, wenn die Ausführung des
Programms beginnt, die Steuereinheit 11 die Adresse des
Programm-Stellen-Bereichs und weist die Speicherstellen-Bestimmungseinheit
daraufhin. Auf diese Art und Weise ist es noch schwieriger, nicht
legitim auf die Inhalte des Programm-Stellen-Bereichs Bezug zu nehmen,
und der Sicherheitsschutz wird verbessert.
-
Weiterhin
ist es auch akzeptierbar, die Größe des Programm-Stellen-Bereichs
wahlweise einzustellen. Wenn die Größe des Programm-Stellen-Bereichs
klein ist, wird die Anzahl von Programmen, die darin angeordnet
werden sollen, ebenso klein; deshalb sind, gerade dann, wenn eine
nicht legitime Bezugnahme auftritt, Informationen, die nach außen treten,
begrenzt.
-
Das
vorliegende Modifikations-Beispiel ist dasselbe wie die Modifikations-Beispiele
2 und 3 dahingehend, dass dessen Aufgabe diejenige ist, die Situation
zu verhindern, wo, "da
die Stellen-Positionen der Teilprogramme festgelegt sind, es einfacher ist,
eine nicht legitime Bezugnahme vorzunehmen". Demzufolge ist es auch möglich, das
vorliegende Modifikations-Beispiel in jedem dieser Modifikations-Beispiele
zu kombinieren. Mit anderen Worten ist es akzeptierbar, die Adresse
des Programm-Stellen-Bereichs in dem vorliegenden Modifikations-Beispiel
zu jedem Zeitpunkt zu ändern,
zu dem das Programm ausgeführt
wird, unter Verwendung des Verfahrens, das in dem Modifikations-Beispiel
2 darge stellt ist. Auch ist es, in einem Fall, in dem die zuvor existierenden
Teilprogramme durch das neu angeordnete Teilprogramm überschrieben
werden, und noch Teile der vorherigen, existierenden Programme verbleiben,
wie dies in den 15B und 15D dargestellt
ist, akzeptierbar, die verbleibenden Teile mit Teilen der Dummy-Daten
wie in dem Modifikations-Beispiel 3 zu überschreiben. (Der Bereich,
der durch die Dummy-Daten überschrieben
werden soll, wird aus den Start-Positionen und den Größen der zuvor
existierenden Teilprogrammen und der Start-Position und der Größe der neu
angeordneten Teilprogramme beurteilt werden.)
-
Industrielle Anwendbarkeit
-
Die
Entschlüsselungs-Vorrichtung
für verschlüsselte Daten
der vorliegenden Erfindung ist beim Erhöhen eines Sicherheitsschutzes
nützlich, und
zwar während
und nach dem Entschlüsselungsvorgang,
der Daten allgemein, die für
den Zweck einer Ausführung
und einer Referenz entschlüsselt werden
sollen.
-
Zusätzliche
Informationen
-
Das
Nachfolgende sind Hinweise, die sich auf die Ausführungsform
und die Modifikations-Beispiele, die bis hier erwähnt worden
sind, beziehen.
-
In
der Ausführungsform
wird nur das Programm, das mit dem Entschlüsselungs-Unterstützungs-Programm entschlüsselt werden
soll, in Teilprogramme unterteilt, um so einen Sicherheitsschutz zu
aktualisieren; allerdings ist es auch akzeptierbar, dass das Entschlüsselungs-Unterstützungs-Programm
auch als eine Gruppe von Teilprogrammen verschlüsselt wird, und entschlüsselt wird,
in den Speicher hinein geladen wird und in Einheiten von Teilprogrammen
ausgeführt
wird. Auf diese Art und Weise ist es möglich, das Risiko zu verringern,
zu bewirken, dass die Inhalte der Algorithmen und der Verschlüsselungsschlüssel, verwendet
in dem Entschlüsselungs-Vorgang,
von dem Entschlüsselungs-Unterstützungs-Programm
in dem Speicher gelesen werden, und um demzufolge ein höheres Niveau
eines Sicherheitsschutzes zu realisieren.
-
Zusätzlich zu
dem Vorgang, der in der Ausführungsform
erwähnt
ist, ist es auch möglich,
dass, um zu prüfen,
ob dieses Teilprogramm nicht verändert
ist, wenn es ausgeführt
wird, nachdem es in den Speicher M hinein geladen ist, die Inhalte
jedes Teilprogramms zum Zeitpunkt, zu dem sie in den Speicher M
hinein geladen werden, mit solchen zu dem Zeitpunkt eines Abschlusses
der Ausführung
verglichen werden. Wenn eine Ver änderung
erfasst wird, wird der Vorgang unterbrochen, und die verschlüsselten
Daten werden gelöscht.
-
Der
Verschlüsselungsschlüssel, der
vorstehend erwähnt
ist, ist ein Verschlüsselungsschlüssel, der
in einem Verschlüsselungs-Verfahren
so, wie, zum Beispiel, DES, verwendet wird, und ist so angeordnet,
dass der Verschlüsselungsschlüssel gewöhnlich in
einem vorbestimmten Bereich des Programms eingebettet ist, oder
in einem Bereich oder einer Datei verdeckt ist, die nicht durch
den Benutzer betrachtet werden kann; allerdings kann das Verschlüsselungs-Verfahren
ein unterschiedliches sein. Um das Verschlüsselungs-Verfahren zu vereinfachen,
ist auch akzeptierbar, einfach eine exklusive, logische ODER Verknüpfung der
Werte zu berechnen. Das Verfahren eines Verdeckens des Schlüssels ist
nicht auf das Vorstehende beschränkt.
-
Zusätzlich können die
Teilprogramm-Entschlüsselungseinheit,
die Speicher-Adressen-Entschlüsselungseinheit
und die Speicherstellen-Informations-Entschlüsselungseinheit zusammen eine einzelne
Komponente bilden, oder können
alternativ individuelle Komponenten sein. Wenn sie eine einzelne
Komponente zusammen bilden, spezifiziert eine Einheit, die einen
Entschlüsselungsvorgang
anfordert, als ein Parameter, Informationen, die einen Typ von Daten,
der entschlüsselt
werden soll, anzeigen, und die Entschlüsselungseinheit führt den
Entschlüsselungsvorgang,
unter Bezugnahme auf die Informationen, entsprechend zu dem Typ
der Daten, der spezifiziert ist, durch.
-
Weiterhin
ist die Erläuterung
unter der Annahme vorgenommen worden, dass das Entschlüsselungs-Target
ein Programm ist; allerdings ist es auch möglich, dass das Entschlüsselungs-Target
Daten, andere als ein Programm, sind.
-
Es
ist auch akzeptierbar, es so anzuordnen, dass ein Programm in Einheiten
von Modulen oder Einheiten von Programmen unterteilt wird, um Teilprogramme
zu erhalten. Alternativ ist es auch akzeptierbar, dass, in einem
Fall, in dem einige Teile im Voraus präpariert sind, wie beispielsweise
DLL, sie so kombiniert werden, um ein einzelnes Programm zu betreiben,
wobei jedes dieser Teile entweder individuell oder zusammen als
ein Teilprogramm herangezogen werden kann. Die Prämisse der
vorliegenden Erfindung ist diejenige, dass eine Vielzahl von Teilprogrammen
zusammen als ein einzelnes Programm arbeitet, und es ist nicht ein
wesentlicher Punkt, wie Teilprogramme erzeugt werden.
-
Zusätzlich kann
jede der Vorrichtungen und der Anordnungen, die in der Ausführungsform
und den Modifikations-Beispielen angegeben sind, als ein Programm,
um durch einen Computer ausgeführt
zu werden, aktualisiert werden. Wenn jedes davon als ein Programm
aktualisiert ist, ist es auch akzeptierbar, es so anzuordnen, dass
das die verschlüsselten Daten
entschlüsselnde
Programm selbst als ein Gruppe von verschlüsselten Teilprogrammen gesichert
wird, und entschlüsselt
und in Einheiten von Teilprogrammen ausgeführt wird.
-
Die
charakteristischen Anordnungen, die in Bezug auf die Ausführungsform
und das Modifikations-Beispiel angegeben sind, können in Kombination verwendet
werden, solange wie dort keine Inkompatibilität vorhanden ist.