DE60301782T2 - Apparate und verfahren zum entschüsseln von verschlüsselten datenblöcken und zum lokalisieren der verschlüsselten datenblöcke im für die ausführung verwendeten speicherbereich - Google Patents

Apparate und verfahren zum entschüsseln von verschlüsselten datenblöcken und zum lokalisieren der verschlüsselten datenblöcke im für die ausführung verwendeten speicherbereich Download PDF

Info

Publication number
DE60301782T2
DE60301782T2 DE60301782T DE60301782T DE60301782T2 DE 60301782 T2 DE60301782 T2 DE 60301782T2 DE 60301782 T DE60301782 T DE 60301782T DE 60301782 T DE60301782 T DE 60301782T DE 60301782 T2 DE60301782 T2 DE 60301782T2
Authority
DE
Germany
Prior art keywords
program
unit
decryption
memory
partial
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60301782T
Other languages
English (en)
Other versions
DE60301782D1 (de
Inventor
Rieko Asai
Yukie Syoda
Teruto Hirota
Yoshikatsu Ito
Taichi Sato
Hideki Matsushima
Toshihisa Abe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Application granted granted Critical
Publication of DE60301782D1 publication Critical patent/DE60301782D1/de
Publication of DE60301782T2 publication Critical patent/DE60301782T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system

Description

  • Vorrichtungen und Verfahren zum Entschlüsseln von verschlüsselten Daten und zum Anordnen der verschlüsselten Daten in einem Speicherraum, verwendet zur Ausführung.
  • 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üssung 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 Fällen 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.
  • Das Dokument WO 97/03398 bezieht sich auf eine schützende Software gegen eine Benutzung ohne eine Erlaubnis durch den Inhaber des Copyrights. Deshalb werden zwei unterschiedliche Schlüssel zum Verschlüsseln und Entschlüsseln des Software-Codes eingesetzt, wobei der letztere Schlüssel geheim für den Benutzer (privater Schlüssel) gehalten wird. Unterschiedliche Zugangsniveaus können für Programme definiert werden, einschließlich Zeitbegrenzungen der Benutzung.
  • Gerade wenn das Entschlüsselungsverfahren durch Ausführen eines authentischen, 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, wird 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öht, 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 erreicht.
  • Mit der Maßnahme der unabhängigen Ansprüche wird nur ein Teil des Programms in den Speicher, verwendet zum Ausführen des Programms, hinein geladen; deshalb ist es möglich, die Beschädigung auch dann zu minimieren, wenn eine Situation entsteht, in der die Daten in dem Speicher nicht rechtmäßig durch einen Missbrauch einer Unterbrechung herangezogen werden. Auch ist es, durch Anordnen so, dass die positionsmäßigen Informationen in den Speicherstelleninformationen, zumindest eines der Teilprogramme, in einen Stellenbereich hinein überschrieben werden, wo ein anderes Teilprogramm vor der Entschlüsselung des zumindest einen Teilprogramms angeordnet worden ist, möglich, die Zeitperiode zu verkürzen, während der ein bestimmtes Teilprogramm in dem Speicher, verwendet für die Ausführung des Programms, existiert, und um es schwieriger für das Teilprogramm zu machen, dass darauf in einer nicht legitimen Art und Weise Bezug genommen werden kann.
  • Weitere Merkmale und Vorteile der vorliegenden Erfindung sind Gegenstand der abhängigen Ansprüche.
  • 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.
  • 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 ver schlü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 hinen zu speichern, der kleiner in der Größe als das Programm ist. Das Überlegungsverfahren ist dasjenige, ein Programm in Segmente (nachfolgend bezeichnet als „Teilprogrammen) 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 aufeinanderfolgendes Ü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, bezeichnet. 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 beü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 auf, 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.
  • Weiterhin weist die Programmladeeinrichtung 1 eine Speichereinheit 16 auf, 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. 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 Speicheradresseninformationen 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 sollen, 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 M in drei Bereiche unterteilt ist, und dass drei Teilprogramme aufeinanderfolgend 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üzungsprogramm-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 Speicheradresseninforma tions-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 Identifkationsinformationen 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 werden, 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 Bezug 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 Ta belle, 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üssungs-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 dies 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 gemein sam 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üsselte 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, in dem 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 erwä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 vorstehend 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 Zeitinformatio nen, 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 1 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 (Ü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 Speicherstell 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 Teilprogramms 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 abgelaufende 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 Ver schlü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 Stellen-Informationen, 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üsselung/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, an. 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 Tailprogramm-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 den 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ührungs form, 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 Teilprogramms, 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, in dem 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 Einsetzens 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 Modifikations-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 ein gebettet 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 einem 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 aus gefü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 bestimmtes 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üsse lungsschlü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 hinein 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 wird 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 ausgefü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.
  • Darauf folgend 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 16B dargestellt ist, und dann 16C, sequenziell. (16B 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 15B 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 Teilprogramm. 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 hin ein 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 15B), 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 werden. 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 Teilprogrammist, 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 dargestellt 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.)
  • 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üsse lungsschlü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 arbeiten, 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.

Claims (16)

  1. Vorrichtung zum Entschlüsseln verschlüsselter Daten, die zum Zweck der Ausführung auf einem Computersystem ein Programm entschlüsselt, das verschlüsselt und gespeichert worden ist, wobei die Vorrichtung zum Entschlüsseln verschlüsselter Daten umfasst: eine Speichereinheit (S), die betrieben werden kann, um das Programm darin als eine Vielzahl von Teilprogrammen zu speichern, die verschlüsselt worden sind; eine Speicherplatzinformations-Erzeugungseinrichtung (14), die betrieben werden kann, um für jedes der Teilprogramme Speicherplatzinformationen (163) zu erzeugen, die Positionsinformationen einschließen, die anzeigen, in welchem Platzbereich jedes Teilprogramm anzuordnen ist, nachdem es entschlüsselt worden ist, wobei der Platzbereich in einem Speicherraum (M) enthalten ist, der für die Ausführung des Programms verwendet wird; eine Entschlüsselungseinheit (12), die betrieben werden kann, um die Teilprogramme sequenziell aus der Speichereinheit (S) zu lesen und zu entschlüsseln; eine Ladeeinheit (11), die betrieben werden kann, um jedes der entschlüsselten Teilprogramme in jedem Platzbereich anzuordnen, der durch die Positionsinformationen angezeigt wird, wobei die Speicherplatzinformationen (163) des Weiteren Zeitablaufinformationen enthalten, die einen Zeitablauf der Entschlüsselung anzeigen, und die Entschlüsselungseinheit (12) so eingerichtet ist, dass sie die Teilprogramme den Zeitablaufinformationen entsprechend entschlüsselt, dadurch gekennzeichnet, dass: die Positionsinformationen in Bezug auf jedes wenigstens eine der Teilprogramme anzeigen, dass ein Teilprogramm in einen Platzbereich überschrieben wird, in dem bereits ein oder mehrere andere Teilprogramme angeordnet worden sind, bevor das eine Teilprogramm entschlüsselt wird.
  2. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach Anspruch 1, wobei die Positionsinformationen gespeichert werden, nachdem sie verschlüsselt worden sind, und die Ladeeinheit die Positionsinformationen entschlüsselt, so dass jedes der entschlüsselten Teilprogramme entsprechend den entschlüsselten Positionsinformationen in jedem Platzbereich angeordnet wird.
  3. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach Anspruch 1 oder 2, wobei beim Anordnen jedes Teilprogramms in einem Platzbereich (150), wenn eine Größe des Platzbereichs größer ist als eine Größe des Teilprogramms, die Ladeeinheit (11) Blinddaten in einen Raumbereich schreibt, der ein Teil des Platzbereiches (150) ist, der aufgrund eines Unterschiedes zwischen den Größen noch nicht überschrieben worden ist.
  4. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach einem der Ansprüche 1 bis 3, wobei, wenn ein vorgegebener Zeitabschnitt vergeht, nachdem die Ausführung eines Teilprogramms, das in einem Platzbereich (150) angeordnet ist, endet, bevor ein weiteres Teilprogramm in dem Platzbereich angeordnet wird, die Ladeeinheit (11) das eine Teilprogramm löscht.
  5. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach einem der Ansprüche 1 bis 4, die des Weiteren umfasst: eine Schlüssel-Einbettungseinheit, die betrieben werden kann, um in wenigstens eines der Teilprogramme im Voraus während eines Vorgangs der Programmverschlüsselung einen Verschlüsselungsschlüssel (161), der bei einem Entschlüsselungsvorgang eines weiteren Teilprogramms verwendet wird, teilweise oder ganz einzubetten, wobei die Entschlüsselungseinheit (12) so eingerichtet ist, dass sie den Vorgang der Entschlüsselung dieses anderen Teilprogramms unter Verwendung des Verschlüsselungsschlüssels (161) durchführt, der in das wenigstens eine Teilprogramm eingebettet ist, das bereits entschlüsselt und in dem Speicherraum (M) angeordnet worden ist.
  6. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach einem der Ansprüche 1 bis 4, die des Weiteren umfasst: eine Programm-Einbettungseinheit, die betrieben werden kann, um im Voraus während eines Vorgangs der Programmverschlüsselung in wenigstens eines der Teilprogramme ein Programm zum Erzeugen eines Verschlüsselungsschlüssels (161) zum teilweisen oder vollständigen Erzeugen eines Verschlüsselungsschlüssels einzubetten, der bei einem Vorgang des Entschlüsselns eines anderen Teilprogramms verwendet wird, wobei die Entschlüsselungseinheit (12) so eingerichtet ist, dass sie den Vorgang der Entschlüsselung dieses anderen Teilprogramms unter Verwendung des Verschlüsselungsschlüssels (161) durchführt, der durch Ausführung des Programms zum Erzeugen eines Verschlüsselungsschlüssels erzeugt wird, das in das wenigstens eine Teilprogramm eingebettet ist, das bereits entschlüsselt und in dem Speicherraum angeordnet worden ist.
  7. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach einem der Ansprüche 1 bis 4, die des Weiteren umfasst: eine Einheit zum Einbetten eines Schlüssel-Verschlüsselungsschlüssels, die betrieben werden kann, um im Voraus während eines Vorgangs der Programmverschlüsselung in wenigstens eines der Teilprogramme einen Schlüssel-Verschlüsselungsschlüssel einzubetten, der verwendet wird, um einen Verschlüsselungsschlüssel zu entschlüsseln, der bei einem Vorgang des Entschlüsselns eines anderen Teilprogramms zu verwenden ist, wobei die Entschlüsselungseinheit (12) so eingerichtet ist, dass sie den Vorgang des Entschlüsselns dieses anderen Teilprogramms unter Verwendung des Verschlüsselungsschlüssels (161) durchführt, der mit dem Schlüssel-Verschlüsselungsschlüssel entschlüsselt wird, der von dem wenigstens einen Teilprogramm gewonnen wird, das bereits entschlüsselt und in dem Speicherraum (M) angeordnet worden ist.
  8. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach einem der Ansprüche 1 bis 7, wobei die Ladeeinheit (11) so eingerichtet ist, dass sie dynamisch eine absolute Adresse (620) jedes Platzbereiches bestimmt, bevor eines der Teilprogramme, das zuerst zu entschlüsseln ist, in dem Speicherraum (M) angeordnet wird.
  9. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach einem der Ansprüche 1 bis 8, wobei: die Entschlüsselungseinheit (12) so eingerichtet ist, dass sie jedes Teilprogramm unter Verwendung eines Entschlüsselungs-Hilfsprogramms (P) entschlüsselt, die Vorrichtung zum Entschlüsseln verschlüsselter Daten des Weiteren eine Entschlüsselungsprogramm-Bestätigungseinheit (13) umfasst, die betrieben werden kann, um die Authentizität des Entschlüsselungs-Hilfsprogramms (P) zu bestätigen, die Entschlüsselungseinheit (12) die Entschlüsselungsprogramm-Bestätigungseinheit (13) die Authentizität des Entschlüsselungs-Hilfsprogramms (P) bestätigen lässt, bevor jedes Teilprogramm entschlüsselt wird, und jedes Teilprogramm erst entschlüsselt, nachdem die Authentizität bestätigt ist.
  10. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach einem der Ansprüche 1 bis 9, die des Weiteren eine Einheit (15) zum Verhindern von illegalem Zugriff umfasst, die betrieben werden kann, um, wenn eine Unterbrechung erfasst wird, einen Vorgang zum Verhindern von illegalem Zugriff durchzuführen, indem eines oder mehrere Teilprogramme gelöscht werden, die bereits in dem Speicherraum (M) angeordnet worden sind.
  11. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach Anspruch 10, wobei die Einheit (15) zum Verhindern von illegalem Zugriff ein Blindprogramm ausführen lässt, wenn der Vorgang zum Verhindern von illegalem Zugriff durchgeführt wird.
  12. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach Anspruch 10 oder 11, wobei die Einheit (15) zum Verhindern von illegalem Zugriff im Voraus eine Registrierung einer oder mehrerer Positionen empfängt, an denen jeweils eine Unterbrechung zur legalen Programmprüfung stattfindet, und den Vorgang zum Verhindern von illegalem Zugriff nicht durchführt, wenn die erfasste Unterbrechung an einer der registrierten Positionen aufgetreten ist.
  13. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach einem der Ansprüche 1 bis 12, die des Weiteren umfasst: eine Speicherpositionsinformations-Speichereinheit (16), die betrieben werden kann, um darin Positionsinformationen (162) zu speichern, die verschlüsselt worden sind und für jedes der Teilprogramme eine Speicherposition in der Speichereinheit (S) anzeigen, wobei die Entschlüsselungseinheit (12) so eingerichtet ist, dass sie aus der Speichereinheit (S) jedes der Teilprogramme liest, und entsprechend den Speicherpositionsinformationen (162), die die Entschlüsselungseinheit (12) aus der Speicherpositionsinformations-Speichereinheit (16) gelesen und entschlüsselt hat, entschlüsselt.
  14. Vorrichtung zum Entschlüsseln verschlüsselter Daten nach Anspruch 13, die des Weiteren umfasst: eine Speicherpositionsinformations-Authentifizierungseinheit (17), die betrieben werden kann, um festzustellen, ob die Speicherpositionsinformationen (162) authentisch sind, wobei die Entschlüsselungseinheit (12) so eingerichtet ist, dass sie aus der Speichereinheit (S) jedes der Teilprogramme liest und entschlüsselt, wenn die Speicherpositionsinformations-Authentifizierungseinheit (17) eine positive Feststellung trifft.
  15. Verfahren zum Entschlüsseln verschlüsselter Daten, mit dem zum Zweck der Ausführung auf einem Computersystem ein Programm entschlüsselt wird, das verschlüsselt und gespeichert worden ist, wobei das Verfahren zum Entschlüsseln verschlüsselter Daten umfasst: einen Speicherschritt, mit dem das Programm als eine Vielzahl von Teilprogrammen, die verschlüsselt worden sind, in einer Speichereinrichtung (S) gespeichert wird; einen Speicherplatzinformations-Erzeugungsschritt, mit dem für jedes der Teilprogramme Speicherplatzinformationen (163) erzeugt werden, die Positionsinformationen enthalten, die anzeigen, in welchem Platzbereich jedes Teilprogramm anzuordnen ist, nachdem es entschlüsselt worden ist, wobei der Platzbereich in einem Speicherraum (M) enthalten ist, der für die Ausführung des Programms verwendet wird; einen Entschlüsselungsschritt, mit dem aus der Speichereinrichtung (S) eines der Teilprogramme, das ein Verschlüsselungs-Ziel ist, gelesen (S506) wird und das gelesene Teilprogramm entschlüsselt (S508) wird; einen Ladeschritt, mit dem (S512) das entschlüsselte Teilprogramm in dem Platzbereich angeordnet wird, der durch die Positionsinformationen angezeigt wird, wobei die Speicherplatzinformationen (163) des Weiteren Zeitablaufinformationen enthalten, die einen Zeitablauf der Entschlüsselung anzeigen, und mit dem Entschlüsselungsschritt (S508) das gelesene Teilprogramm entsprechend den Zeitablaufinformationen entschlüsselt wird, dadurch gekennzeichnet, dass: die Positionsinformationen in Bezug auf jedes wenigstens eines der Teilprogramme anzeigen, dass ein Teilprogramm in einen Platzbereich überschrieben wird, an dem bereits ein oder mehrere andere Teilprogramme angeordnet worden sind, bevor das eine Teilprogramm entschlüsselt wird.
  16. Computerlesbares Programm, das Befehle enthält, mit denen ein Computer zum Durchführen eines Verfahrens nach Anspruch 15 gesteuert wird.
DE60301782T 2002-08-01 2003-07-25 Apparate und verfahren zum entschüsseln von verschlüsselten datenblöcken und zum lokalisieren der verschlüsselten datenblöcke im für die ausführung verwendeten speicherbereich Expired - Lifetime DE60301782T2 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
JP2002225289 2002-08-01
JP2002225289 2002-08-01
JP2002359072 2002-12-11
JP2002359072 2002-12-11
JP2003157255 2003-06-02
JP2003157255 2003-06-02
PCT/JP2003/009422 WO2004013744A2 (en) 2002-08-01 2003-07-25 Apparatuses and methods for decrypting encrypted blocks of data and locating the decrypted blocks of data in memory space used for execution

Publications (2)

Publication Number Publication Date
DE60301782D1 DE60301782D1 (de) 2005-11-10
DE60301782T2 true DE60301782T2 (de) 2006-05-24

Family

ID=31499104

Family Applications (3)

Application Number Title Priority Date Filing Date
DE60314782T Expired - Lifetime DE60314782T2 (de) 2002-08-01 2003-07-25 Vorrichtung zum Generieren eines verschlüsselten Programms
DE60317242T Expired - Lifetime DE60317242T2 (de) 2002-08-01 2003-07-25 Apparate und Verfahren zum Entschlüsseln von verschlüsselten Datenblöcken und zum Lokalisieren der verschlüsselten Datenblöcke im für die Ausführung verwendeten Speicherbereich
DE60301782T Expired - Lifetime DE60301782T2 (de) 2002-08-01 2003-07-25 Apparate und verfahren zum entschüsseln von verschlüsselten datenblöcken und zum lokalisieren der verschlüsselten datenblöcke im für die ausführung verwendeten speicherbereich

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE60314782T Expired - Lifetime DE60314782T2 (de) 2002-08-01 2003-07-25 Vorrichtung zum Generieren eines verschlüsselten Programms
DE60317242T Expired - Lifetime DE60317242T2 (de) 2002-08-01 2003-07-25 Apparate und Verfahren zum Entschlüsseln von verschlüsselten Datenblöcken und zum Lokalisieren der verschlüsselten Datenblöcke im für die Ausführung verwendeten Speicherbereich

Country Status (5)

Country Link
US (2) US7228423B2 (de)
EP (3) EP1615100B1 (de)
CN (2) CN101145177B (de)
DE (3) DE60314782T2 (de)
WO (1) WO2004013744A2 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3043232A1 (de) 2003-08-26 2016-07-13 Panasonic Intellectual Property Corporation of America Programmausführungsvorrichtung
WO2005088460A1 (ja) * 2004-03-16 2005-09-22 Japan-Wave Inc. デジタルコンテンツの不正使用防止システム
US7971255B1 (en) * 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
JP4221385B2 (ja) * 2005-02-21 2009-02-12 日立オムロンターミナルソリューションズ株式会社 生体認証装置、端末装置及び自動取引装置
CN100555300C (zh) * 2005-03-25 2009-10-28 松下电器产业株式会社 程序变换装置、安全处理装置、计算机程序及记录媒体
US7953985B2 (en) 2005-05-09 2011-05-31 Panasonic Corporation Memory card, application program holding method, and holding program
WO2006129654A1 (ja) * 2005-06-01 2006-12-07 Matsushita Electric Industrial Co., Ltd. 電子機器、更新サーバ装置、鍵更新装置
US20080162948A1 (en) * 2005-11-16 2008-07-03 Markany Inc. Digital Information Storage System, Digital Information Security System, Method for Storing Digital Information and Method for Service Digital Information
CN101379527A (zh) * 2006-01-30 2009-03-04 皇家飞利浦电子股份有限公司 搜索数据信号中的水印
US8473754B2 (en) 2006-02-22 2013-06-25 Virginia Tech Intellectual Properties, Inc. Hardware-facilitated secure software execution environment
CN101510246B (zh) 2006-05-18 2011-12-07 松下电器产业株式会社 电子设备、内容再现控制方法以及集成电路
JP4048382B1 (ja) 2006-09-01 2008-02-20 富士ゼロックス株式会社 情報処理システムおよびプログラム
US20080077805A1 (en) * 2006-09-26 2008-03-27 Catherman Ryan C Securing Data Exchanged in Memory
JP2009139990A (ja) * 2007-12-03 2009-06-25 Internatl Business Mach Corp <Ibm> 情報の不正取得を防止する技術
US9137015B2 (en) * 2008-01-04 2015-09-15 Arcsoft, Inc. Protection scheme for AACS keys
EP2259205B1 (de) * 2008-03-28 2018-04-25 Panasonic Corporation Softwareaktualisierungsgerät, softwareaktualisierungssystem, änderungsprüfungsverfahren und änderungsprüfungsprogramm
JP4932034B2 (ja) * 2008-03-28 2012-05-16 パナソニック株式会社 ソフトウェア更新装置、ソフトウェア更新システム、無効化方法、及び無効化プログラム
CN102057618A (zh) * 2008-06-23 2011-05-11 松下电器产业株式会社 信息处理装置、加密密钥的管理方法、计算机程序及集成电路
JP2010039891A (ja) * 2008-08-07 2010-02-18 Nec Corp 情報処理装置、プログラム実行方法、プログラムおよび情報処理システム
JP2010114593A (ja) * 2008-11-05 2010-05-20 Hitachi Global Storage Technologies Netherlands Bv データ転送システム、データ転送方法、データ送信装置およびデータ受信装置
US8683214B2 (en) * 2009-09-17 2014-03-25 Panasonic Corporation Method and device that verifies application program modules
WO2011114617A1 (ja) 2010-03-15 2011-09-22 パナソニック株式会社 情報処理端末、機密情報アクセス制御方法、プログラム、記録媒体、及び集積回路
JP5644194B2 (ja) 2010-06-10 2014-12-24 株式会社リコー 情報保護装置及び情報保護プログラム
US8832855B1 (en) * 2010-09-07 2014-09-09 Symantec Corporation System for the distribution and deployment of applications with provisions for security and policy conformance
WO2012052862A1 (en) * 2010-10-21 2012-04-26 Nds Limited Code diversity method and system
US8499173B2 (en) * 2010-11-23 2013-07-30 Lockheed Martin Corporation Apparatus and method for protection of circuit boards from tampering
JP5772031B2 (ja) * 2011-02-08 2015-09-02 富士通株式会社 通信装置およびセキュアモジュール
US20120260106A1 (en) * 2011-04-07 2012-10-11 Apple Inc. System and method for binary layout randomization
US8443456B2 (en) * 2011-05-20 2013-05-14 Citrix Systems, Inc. Providing multiple layers of security to file storage by an external storage provider
JP5839659B2 (ja) 2011-06-20 2016-01-06 ルネサスエレクトロニクス株式会社 半導体装置
US20120331303A1 (en) * 2011-06-23 2012-12-27 Andersson Jonathan E Method and system for preventing execution of malware
JP5948680B2 (ja) 2011-09-13 2016-07-06 パナソニックIpマネジメント株式会社 コンテンツ再生システム、情報処理端末、メディアサーバ、セキュアデバイスおよびサーバ・セキュアデバイス
JP5988473B2 (ja) 2011-09-20 2016-09-07 株式会社Dnpハイパーテック モジュールの暗号化/復号化プログラム
US9607178B2 (en) * 2014-03-20 2017-03-28 Qualcomm Incorporated Protection against key tampering
US10078748B2 (en) * 2015-11-13 2018-09-18 Microsoft Technology Licensing, Llc Unlock and recovery for encrypted devices
US10564969B2 (en) * 2015-12-03 2020-02-18 Forrest L. Pierson Enhanced protection of processors from a buffer overflow attack
US11675587B2 (en) 2015-12-03 2023-06-13 Forrest L. Pierson Enhanced protection of processors from a buffer overflow attack
JP6729013B2 (ja) * 2016-06-07 2020-07-22 富士ゼロックス株式会社 情報処理システム、情報処理装置及びプログラム
CN106201925B (zh) * 2016-07-01 2019-03-22 四川效率源信息安全技术股份有限公司 一种西数硬盘的解密方法
EP3884412A1 (de) * 2018-11-19 2021-09-29 Secure Micro Ltd Computerimplementiertes verfahren

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4649510A (en) * 1982-04-30 1987-03-10 Schmidt Walter E Methods and apparatus for the protection and control of computer programs
JPH096232A (ja) 1995-06-21 1997-01-10 Ricoh Elemex Corp 暗号化システム、復号化システム、情報秘匿処理システムおよび情報秘匿通信システム
NO302388B1 (no) * 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
AU725098B2 (en) * 1995-07-14 2000-10-05 Christopher Nathan Drake Computer software authentication, protection, and security system
AU750845B2 (en) * 1996-06-13 2002-08-01 Intel Corporation Tamper resistant methods and apparatus
US6052780A (en) * 1996-09-12 2000-04-18 Open Security Solutions, Llc Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
JPH1139156A (ja) 1997-07-22 1999-02-12 Fuji Xerox Co Ltd 暗号化データ復号装置
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
CN1127240C (zh) * 1998-08-26 2003-11-05 英业达股份有限公司 多媒体数据的保密方法
US20010034846A1 (en) * 2000-02-28 2001-10-25 Peter Beery Digital data and software security protection
JP4186381B2 (ja) * 2000-05-10 2008-11-26 日本電気株式会社 プログラムを格納する記録媒体及びその実行方法
AU2001269354A1 (en) * 2000-05-12 2001-11-20 Xtreamlok Pty. Ltd. Information security method and system
EP1366404B1 (de) * 2000-07-18 2007-03-14 Simplex Major SDN.BHD Vorrichtung zum schutz digitaler daten

Also Published As

Publication number Publication date
WO2004013744A2 (en) 2004-02-12
DE60317242T2 (de) 2008-02-14
EP1615100A3 (de) 2006-06-07
CN101145177B (zh) 2011-06-15
CN1656434A (zh) 2005-08-17
DE60314782D1 (de) 2007-08-16
US7228423B2 (en) 2007-06-05
EP1466233B1 (de) 2005-10-05
US20040123122A1 (en) 2004-06-24
WO2004013744A3 (en) 2004-07-29
EP1615100B1 (de) 2007-07-04
US7747870B2 (en) 2010-06-29
EP1615100A2 (de) 2006-01-11
DE60301782D1 (de) 2005-11-10
CN101145177A (zh) 2008-03-19
CN100359425C (zh) 2008-01-02
DE60314782T2 (de) 2007-10-31
DE60317242D1 (de) 2007-12-13
EP1603001A3 (de) 2006-06-07
EP1603001B1 (de) 2007-10-31
EP1466233A2 (de) 2004-10-13
US20070294534A1 (en) 2007-12-20
EP1603001A2 (de) 2005-12-07

Similar Documents

Publication Publication Date Title
DE60301782T2 (de) Apparate und verfahren zum entschüsseln von verschlüsselten datenblöcken und zum lokalisieren der verschlüsselten datenblöcke im für die ausführung verwendeten speicherbereich
EP3274825B1 (de) Verfahren und ausführungsumgebung zum gesicherten ausführen von programmbefehlen
EP2899714B1 (de) Gesichertes Bereitstellen eines Schlüssels
DE102008006759B4 (de) Prozessor-Anordnung und Verfahren zum Betreiben der Prozessor-Anordnung ohne Verringerung der Gesamtsicherheit
DE60127310T2 (de) Vorrichtung zum schutz digitaler daten
DE112007003231B4 (de) Programmierbare Anzeigevorrichtung und Steuersystem
EP1798653B1 (de) Verfahren, Computerprogrammprodukt und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms
DE10254621A1 (de) Vorrichtung und Verfahren zum Erzeugen einer vertrauenswürdigen Umgebung
DE112011103164T5 (de) Datenverteilungsvorrichtung, Datenverteilungssystem, Client-Vorrichtung, Datenverteilungsverfahren, Datenempfangsverfahren, Programm und Datenträger,
EP3720039A1 (de) Verfahren für das konfigurieren eines sicherheitsmoduls mit mindestens einem abgeleiteten schlüssel
EP1150190B1 (de) Vorrichtung und Verfahren zur Steuerung und/oder Regelung einer Anlage
EP1636700A1 (de) Verfahren zum nachladen einer software in den bootsektor eines programmierbaren lesespeicher
EP2394232B1 (de) Vorrichtung und verfahren zum verhindern von unautorisierter verwendung und/oder manipulation von software
DE60212169T2 (de) Laden von software
DE102005046696B4 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
EP1844467A1 (de) Tragbarer datenträger mit wasserzeichen-funktionalität
KR101153969B1 (ko) 내부 사용자에 의해 개인 정보가 유출되는 것을 방지하기 위한 쿼리 툴 통제 방법 및 그 시스템
EP3963490B1 (de) Verfahren und vorrichtung zum übertragen eines boot-codes mit verbesserter datensicherheit
WO2018081093A1 (en) Software algorithm security
DE102021131424A1 (de) Verfahren und systeme zur sitzungsbasierten und gesicherten zugriffsteuerung auf ein datenspeichersystem
EP3798873B1 (de) Verfahren zum schützen einer computer-implementierten anwendung vor manipulation
DE102020206039A1 (de) Erstellen einer Container-Instanz
EP1482453A2 (de) Verfahren zum Laden von Daten in eine Speichereinrichtung
EP1105798B1 (de) Verfahren, anordnung sowie ein satz mehrerer anordnungen zum schutz mehrerer programme und/oder mehrerer dateien vor einem unbefugten zugriff durch einen prozess
CH712679B1 (de) Verfahren zur Maskierung und eindeutigen Signierung von Datenbank-Quellcodes.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: PANASONIC CORP., KADOMA, OSAKA, JP