DE60214640T2 - Mikroprozessor mit verbesserten Taskverwaltungs- und Tabellenverwaltungsvorrichtungen - Google Patents

Mikroprozessor mit verbesserten Taskverwaltungs- und Tabellenverwaltungsvorrichtungen Download PDF

Info

Publication number
DE60214640T2
DE60214640T2 DE60214640T DE60214640T DE60214640T2 DE 60214640 T2 DE60214640 T2 DE 60214640T2 DE 60214640 T DE60214640 T DE 60214640T DE 60214640 T DE60214640 T DE 60214640T DE 60214640 T2 DE60214640 T2 DE 60214640T2
Authority
DE
Germany
Prior art keywords
task
key
cache
program
address
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 - Fee Related
Application number
DE60214640T
Other languages
English (en)
Other versions
DE60214640D1 (de
Inventor
c/o Toshiba Corporation M. Minato-ku Hashimoto
Kensaku Morristown Fujimoto
Kenji Kawasaki-shi Shirakawa
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Application granted granted Critical
Publication of DE60214640D1 publication Critical patent/DE60214640D1/de
Publication of DE60214640T2 publication Critical patent/DE60214640T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • 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/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Description

  • Die vorliegende Erfindung bezieht sich auf einen Mikroprozessor, der in der Lage ist, eine illegale Änderung von Ausführungs-Codes zu verhindern und Zieldaten unter einer Multi-Task-Programmausführungs-Umgebung zu verarbeiten.
  • Ein offenes System, in dem Hardware-Informationen eines Computers zur allgemeinen Verwendung, wie etwa einem PC, und System-Programminformationen des Betriebssystems (BS) eher offenbart als verborgen sind, wird heute breit verwendet. Im offenen System kann der Endanwender jegliche gewünschte Verbesserung durch Modifizieren des Systemprogramms vornehmen.
  • Unter solchen Umständen gibt es, um den Urheberschutz für von Anwendungsprogrammen gehandhabten Daten oder den Urheber-Rechtsschutz für Programme selbst zu garantieren, einen Bedarf an Hardware mit einer Geheimnisschutzfähigkeit, die auf der Annahme basiert, dass das BS des Systems bösartige Vorgänge in Bezug auf Applikationen ausführen kann. Solche Hardware mit einer Geheimnisschutzfähigkeit ist insbesondere in Form eines Mikroprozessors vorgeschlagen worden (siehe gemeinsam zugewiesene mitanhängige US-Patente US-2001/0018736 und US-2001/0014157 und Lie et al., "Architectural Support for Copy and Tamer Resistant Software", Computer Architecture News 28(5), Seite 168 ff.).
  • Solch ein Mikroprozessor mit einer Geheimnisschutzfähigkeit hat eine Funktion zum Verschlüsseln eines Programms und von Daten, die von diesem Programm unter der Multi-Task-Umgebung gehandhabt werden, um sie vor Ausspionieren und Änderung zu schützen. Nachfolgend wird ein solcher Mikroprozessor als ein fälschungs-resistenter Mikroprozessor bezeichnet.
  • Der Hauptzweck des fälschungsresistenten Mikroprozessors ist es, die Rechte des Urheberrechts-Inhabers von Programmen, Inhalten und Netzwerkdiensten durch Schützen von auf dem Endanwender-System betriebenen Anwendungen zu schützen. Spezifischer sind die drei Hauptbedenken (1) Schutz von in Programmen implementierten Algorithmen, (2) Schutz von Betriebsgeheimnissen und in Programmen eingebetteten Inhalten und (3) Schutz der Programm-Operationen vor Änderung.
  • Der Schutz von in Programmen implementierten Algorithmen ist notwendig, um die Urheberrechts-Inhaber der Programme zu schützen. Der Schutz der in Programmen eingebetteten Handelsgeheimnisse ist notwendig, um illegale Kopien von durch die Programme gehandhabten Inhalten zu verhindern. Der Schutz vor illegaler Änderung ist notwendig, um beispielsweise die Rechte von Diensteanbietern zu schützen.
  • Bei einer Anwendung, in der ein Programm, welches einen Netzwerkdienst nutzt oder eine Gebühreninformation mit einem Server austauscht, ist es besonders wichtig, die illegale Änderung zu verhindern, so dass die Gebühreninformations-Übertragungsoperation korrekt ausgeführt wird. Als praktisches Beispiel ist es bekannt, dass ein Programm zum Reproduzieren von DVDs auf einem PC analysiert worden ist, um das Betriebsgeheimnis zum Entschlüsseln der DVD-Verschlüsselung zu erhalten und es wurde ein Programm (DeCSS) zum illegalen Kopieren von DVDs erstellt.
  • Im offenen System sind Mechanismen zum einfachen Schützen von Geheimnissen von Anwendungsprogrammen konventioneller Weise vorgeschlagen worden und die folgenden Erfinder haben eine Schutzumgebung zum Schützen von Geheimnissen unabhängig vom Betriebssystem, welches die Systemressourcen verwaltet, für jedes aus einer Mehrzahl von Programmen (Programme von einer Mehrzahl unterschiedlicher Programmanbieter oder einer Mehrzahl von unterschiedlichen Programmen eines einzelnen Anbieters), die in einer pseudo-parallelen Weise auf einem einzelnen System auszuführen sind (siehe gemeinsam zugewiesene, mitanhängige US-Patente US-2001/0018736, US-2001/0014157, US-2002/0051536, US-2002/0101995 beispielsweise) vorgeschlagen. Solch eine Schutzumgebung wird als eine "Mehrparteien-Anwendungsschutzumgebung" bezeichnet.
  • 18 zeigt allgemein eine Mehrparteien-Anwendungsschutzumgebung. In 18 wird ein beispielhafter Fall, in dem ein Anwender 12 ein Programm von einem Anbieter 1 21-1 aus einer Mehrzahl von Softwareanbietern 21-1 bis 21-n erwirbt, betrachtet. Ein System 2, das vom Anwender 12 verwendet wird, hat einen eingebauten Mikroprozessor und dieser Prozessor-A 3 hat einen Geheimschlüssel-A 5, für diesen Prozessor eindeutig ist. Ein öffentlicher Schlüssel-A 13 entsprechend dem Geheimschlüssel-A ist der Öffentlichkeit offenbart.
  • Der Softwareanbieter 1 entwickelt ein Programm 22-1, wählt einen Programmschlüssel-1 24-1 als einen Verschlüsselungsschlüssel aus und erstellte ein verschlüsseltes Programm 23-1 durch Verschlüsseln eines Klartextprogramms 22-1. Dann stellt der Softwareanbieter 1 einen Verteilungsschlüssel 1 25-1 durch Verschlüsseln des Programmschlüssels-1 unter Verwendung des öffentlichen Schlüssels-A, der für den Prozessor-A eines Distributions-Zielsystems 2 eindeutig ist, her.
  • Obwohl in der Figur nicht gezeigt, entwickelt der Softwareanbieter 1 auch eine Mehrzahl von unterschiedlichen Programmen neben dem Programm 22-1, wählt Programmschlüssel für entsprechende Programme und stellt verschlüsselte Programme und Distributionsschlüssel her. Zur Erläuterung wird hier nur ein einzelnes Programm beschrieben.
  • Der Softwareanbieter 1 liefert das verschlüsselte Programm 23-1 und den verschlüsselten Distributionsschlüssel 25-1 über ein Netzwerk an das Zielsystem 2. Das gelieferte Programm 23-1 und der Verteilungsschlüssel 25-1 werden in einem Sekundärspeicher (beispielsweise einer Festplatte) des Systems gespeichert. Das Programm 23-1 führt Ausführungs-Code und Daten (Initialisierungsdaten etc.) aus und zum Zeitpunkt der Ausführung werden sie in verschlüsseltem Zustand zu einem externen Speicher 8 ausgelesen, der außerhalb des Mikroprozessors 3 vorgesehen ist. Das verschlüsselte Programm im externen Speicher 8 wird als ein geschütztes Programm bezeichnet.
  • Der Mikroprozessor-A liest den Verteilungsschlüssel 25-1 und entschlüsselt ihn unter Verwendung des Geheimschlüssels-A entsprechend einem öffentlichen Schlüssel-A, um den Programmschlüssel-1 zu erhalten. Die Schlüssel-Entschlüsselungsverarbeitung wird in einer Schutzlogik 6 innerhalb des Mikroprozessors durchgeführt.
  • Als nächstes entschlüsselt der Mikroprozessor-A das Programm 1 unter Verwendung des Programmschlüssels-1 und liest es in einen Cachespeicher 4 ein. Die Entschlüsselung und das Einlesen in den Cachespeicher 4 wird durch einen vorgegebenen Cache-Algorithmus gemäß der Ausführung des Programms für jeden Teil separat realisiert, so dass nicht das gesamte Programm gleichzeitig in den Cachespeicher 4 eingelesen wird. Das in den Cachespeicher 4 eingelesene Programm ist im Klartext-Zustand, so dass es im Kern 6 ähnlich wie die üblichen nicht verschlüsselten Programme ausgeführt wird. Ein Teil zum Handhaben des Programmschlüssels-1 und des Klartext-Programmes wird durch den Kern 6 des Prozessors-A ausgeführt und es gibt für das BS keinen Raum zu einer Intervention. Die Inhalte des Cachespeichers 4 und der im Mikroprozessor bereitgestellte Geheimschlüssel 5 können nicht direkt von außen ausgelesen werden, außer hinsichtlich der von der Prozessor-Spezifikation definierten Operationen.
  • Man beachte, dass, obwohl in der Figur nicht gezeigt, für die im Cachespeicher 4 gespeicherte Klartext-Information ein Identifizierer zum Identifizieren des beim Entschlüsseln dieser Klartext-Information verwendeten Verschlüsselungs-Schlüssels an jede Zeile des Cachespeicher s4 angehängt ist, um zu garantieren, dass das Geheimnis unabhängig zwischen Programmen aufrecht erhalten wird, selbst wenn der Anwender eine Mehrzahl unterschiedlicher Programme von einer Mehrzahl von Programmanbietern 21-1 bis 21-n erwirbt. Die Programmschlüssel sind für unterschiedliche Programme unterschiedlicher Programmanbieter unterschiedlich, so dass die Unabhängigkeit des Programms durch Einstellen einer Task der Cache-Linie und des zu seiner Verschlüsselung verwendeten Schlüssels entsprechend garantiert wird.
  • Nunmehr sind die durch die vorliegende Erfindung zu lösenden Probleme wie folgt:
    • (1) Um die Task-Identifikations-Funktion zu realisieren, gibt es die Notwendigkeit, eine Tabelle zum Halten des Programmschlüssels jeden Programms entsprechend der Task-ID innerhalb des Prozessors zu haben. Die Einrichtung einer solchen Tabelle wird vom BS, welches das System verwaltet, angewiesen, so dass es einen Bedarf daran gibt, eine Funktion zum Betreiben der Tabelle aus dem BS-Programm bereitzustellen. Diese Tabellen-Betriebsfunktion muss offensichtlich die Anforderung an Geheimnisschutz erfüllen.
  • Auch spielt die Task-korrespondierende Schlüsseltabelle eine zentrale Rolle beim Geheimnisschutz, aber es ist aufgrund der Begrenztheit von Ressourcen unter Erwägung der Kosten unmöglich, die Kapazität der Tabelle unbegrenzt zu vergrößern. Aus diesem Grund muss, welche Programme mit den Einträgen der Tabelle alloziert werden sollten und wie die Einträge wiederverwendet werden sollen, vom BS gemäß der Absicht des Systemanwenders verwaltet werden.
  • Solche Operationen des BS bergen die Möglichkeit des Einführens eines Defektes in den Geheimnisschutz. Man nehme beispielsweise an, dass in einem Zustand, wo die Task-ID #1 einem Programmschlüssel X zugewiesen ist, das BS dieselbe Task-ID #1 einem anderen Programmschlüssel Y realloziert. In diesem Fall können, falls die Cache-Linie, welcher der Tag der Task-ID #1 zugewiesen ist, im Cache-Speicher bleibt, diese Daten von dem Programm das mit dem Programmschlüssel Y korrespondiert, ausgelesen werden. Dies verletzt das Prinzip des Geheimnisschutzes.
  • Somit ist das erste zu lösende Problem die Bereitstellung einer Task-Zustandsverwaltung und Tabellenverwaltungs-Mechanismus zum Verhindern einer solchen Verletzung.
    • (2) Es gibt zwei Arten von Programm-Verschlüsselungsverfahren, einschließlich eines Verfahrens, bei dem die Entschlüsselungsverarbeitung in Einheiten von Cache-Linien abgeschlossen wird und eines Verfahrens, in dem Daten in einer Mehrzahl von Cache-Linien für die Entschlüsselung einer Cache-Linie notwendig sind. Das erstere Verfahren beeinflusst die Speicherkapazität und den Austausch von Einheiten von Linien nicht, aber das letztere Verfahren ist mit den folgenden Problemen assoziiert.
  • Bei dem Verfahren, bei dem Daten einer Mehrzahl von Cache-Linien für die Entschlüsselung einer Cache-Linie erforderlich sind, gibt es, wenn der Wahlfreizugriff auf den Speicher auftritt, eine Notwendigkeit, die Speicherbereiche vor und hinter den erforderlichen Speicherbereichen auszulesen. Aus diesem Grund wird ein großer Overhead verursacht.
  • Auch gibt es, da das Entschlüsselungsergebnis von Daten der benachbarten Linien abhängt, die Möglichkeit einer so genannten Block-Austausch-Attacke. Die Block-Austausch-Attacke ist eine Attacke, bei der ein Angreifer in geeigneter Weise die gemäß demselben Geheimnis verschlüsselten Blockinformationen so austauscht, dass der Systemzustand gemäß der Absicht des Angreifers geändert wird. Man nehme beispielsweise an, dass der Angreifer herausfindet, dass eine an einer Adresse X angeordnete Linie P ein Bereich entsprechend einer Gebührenoperation ist, aus dem Timing der Kommunikation oder dergleichen. Mann nehme dann an, dass der Angreifer auch weiß, dass der vom Programm bereitgestellte Dienst nicht nachteilig beeinträchtigt ist, selbst wenn eine andere Linie Q, die unter Verwendung desselben Programmschlüssels verschlüsselt ist, ausgeführt wird. Wenn in diesem Fall die Linie P durch die Linie Q ersetzt wird, kann der Angreifer nur dem Gebührenberechnen entgehen, ohne den Dienst des Programmes zu beeinträchtigen. Eine ähnliche Attacke ist auch auf von dem Programm gehandhabten Daten anwendbar.
  • Das obige Problem kann gelöst werden, falls jedem Block ein getrennter Schlüssel gegeben wird, aber falls der getrennte Verschlüsselungsschlüssel für jeden Block im Verteilungsschlüssel gespeichert wird, wird der Algorithmus zum Verschlüsseln des Verteilungsschlüssels unter Verwendung des öffentlichen Schlüssels enorm und verursacht einen Overhead in der Entschlüsselungs-Verarbeitung. Auch ergibt sich die Notwendigkeit, eine Tabelle mit einer enormen Kapazität zum Verwalten solcher Schlüssel innerhalb des Mikroprozessors vorzusehen, so dass es vom Standpunkt der Schlüsselverteilung und der Verwaltungskosten nicht praktisch ist.
  • Zusätzlich muss das allgemeine Programm nicht notwendigerweise immer eine vorgegebene Adresse aufweisen, an der es angeordnet werden muss, und die Adresse, an der es anzuordnen ist, kann abhängig von einer Konfiguration des Zielsystemes (Konfiguration der Bibliothek und des gemeinsamen Speichers, der mit anderen Programmen zu teilen ist) verändert werden. Dies wird Relokation genannt. Im Falle des Ausführens der Verschlüsselung für jeden Block muss das Problem der Relokation berücksichtigt werden.
  • Somit ist das zweite zu lösende Problem die Bereitstellung eines Mikroprozessors, der einen kleinen Verarbeitungs-Overhead aufweist, der den Datenaustausch-Angriff schwierig macht und der eine Geheimnis-Informationsverwaltungs-Fähigkeit aufweist, welche die Relokation berücksichtigt.
    • (3) Drei Elemente, die die Applikation bilden, sind ein Programm (Ausführungs-Codes), Daten und Kontext-Informationen, aber diese werden innerhalb des Prozessors unterschiedlich gehandhabt. Die Ausführungs-Codes und die Daten umfassen den Hauptkörper des Programmes, während der Kontext eine Zustandsinformation ist, die in einem Speicher für den Zweck der Wiederaufnahme der Task zu speichern ist, nachdem die Ausführung der Task unterbrochen wird.
  • Im Allgemeinen wird das Programm innerhalb des Mikroprozessors nicht ungeschrieben, aber wenn Daten im Cache verändert werden, werden die Daten zum externen Speicher zurückgeschrieben.
  • Auch werden auf Programm und Daten in Einheiten von Cache-Linien zugegriffen, aber die Kontext-Information nimmt oft eine Größe an, die nicht in einer einzelnen Cache-Linie gespeichert werden kann. Zu einem Zeitpunkt des Kontext-Umschaltens werden Informationen über eine Mehrzahl von Cache-Linien kollektiv gelesen oder geschrieben.
  • Beim Austauschen dieser Informationen mit unterschiedlichen Eigenschaften mit dem externen Speicher werden getrennte Verschlüsselungs-Verarbeitungen erforderlich sein, aber es wird auch eine Senkung der Hardwarekosten verlangt.
  • Somit ist das dritte zu lösende Problem die Bereitstellung eines Mikroprozessors, welcher dieselbe Verschlüsselungs-Verarbeitungs-Hardware für diese Informationen gemeinsam verwenden kann.
  • US 5 666 411 bezieht sich auf ein System zum Schützen von proprietärer Software vor Offenbarung und unautorisierter Verwendung, das einen Krypto-Prozessor enthält, der geschützte Programme rechiffrieren kann.
  • US 5 805 711 bezieht sich auf ein Verfahren zum Sichern von Daten und Programm-Code einer elektronischen Frankiermaschine.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein Mikroprozessor bereitgestellt, der umfasst: Eine Task-Zustandstabelle, die dafür konfiguriert ist, einen Task-Identifizierer einer Task zuzuweisen, die irgendeinen aus einer Mehrzahl von Zuständen annehmen kann, und der Task entsprechend dem Task-Identifizierer einen Zustand zuzuweisen; ein Task-Register, das dafür konfiguriert ist, den Task-Identifizierer der aktuell ausgeführten Task zu speichern; eine Schnittstelle, die dafür konfiguriert ist, ein Programm in Einheiten von Cache-Linien auszulesen, wenn eine Anforderung bezüglich der Task gemacht wird, wobei das Programm in einer verschlüsselten Form gespeichert wird, die durch Verwenden eines Programmschlüssels auf einem externen Speicher erhalten wird; eine Verschlüsselungs-Verarbeitungs-Einheit, die dafür konfiguriert ist, Entschlüsselungs-Schlüssel zu erzeugen, die für unterschiedliche Cache-Linien unterschiedlich sind, gemäß dem Programmschlüssel, und einen von der Schnittstelle eingelesenen Inhalt zu entschlüsseln; einen von einer Mehrzahl von Cache-Linien gebildeten Cache-Speicher, wobei jede Cache-Linie einen „Tag" aufweist und dafür konfiguriert ist, den Task-Identifizierer zu speichern, der einen beim Entschlüsseln jeder Cache-Linie im „Tag" jeder Cache-Linie verwendeten Entschlüsselungs-Schlüssel entspricht; und eine Zugriffs-Prüfeinheit, die dafür konfiguriert ist, den im Tag jeder Cache-Linie gespeicherten Task-Identifizierer mit einem Wert des Task-Registers zu vergleichen und einen Inhalt jeder Cache-Linie zu verwerfen, wenn der Task-Identifizierer im Tag und der Wert des Task-Registers nicht übereinstimmen.
  • Gemäß einem anderen Aspekt der vorliegenden Erfindung wird ein Verschlüsselungs-Verarbeitungs-Verfahren bereitgestellt, welches umfasst: Speichern eines Task-Identifizierers einer aktuell ausgeführten Task in einem Task-ID-Register; Lesen eines in verschlüsselter Form gespeicherten Programms, bei dem das Programm in Einheiten von Blöcken in einem externen Speicher verschlüsselt ist, in Einheiten von Cache-Linien, wenn eine Anforderung nach einer Task gestellt wird, um die Task auszuführen; Speichern eines Identifizierers einer angeforderten Task in einem vorgegebenen Bereich einer Cache-Linie; Vergleichen des in jeder Cache-Linie gespeicherten Task-Identifizierers mit dem im Task-ID-Register gespeicherten Task-Identifizierer; und Entschlüsseln eines durch den Einleseschritt eingelesenen Inhalt, wenn der in jeder Cache-Linie gespeicherte Task-Identifizierer mit dem im Task-ID-Register gespeicherten Task-Identifizierer übereinstimmt.
  • Die vorliegende Erfindung kann entweder in Hardware oder als Software in einem Universal-Computer implementiert werden. Weiterhin kann die vorliegende Erfindung mit einer Kombination von Hardware und Software implementiert werden. Die vorliegende Erfindung kann auch durch eine Einzelverarbeitungs-Apparatur oder ein verteiltes Netzwerk von Verarbeitungs-Apparaturen implementiert werden.
  • Da die vorliegende Erfindung durch Software implementiert werden kann, umfasst die vorliegende Erfindung Computer-Code, der einem Universal-Computer auf jedem geeigneten Träger-Medium bereitgestellt wird. Das Träger-Medium kann jegliches Speicher-Medium umfassen, wie etwa eine Floppy-Disk, eine CD-ROM, eine Magnetvorrichtung oder eine programmierbare Speichervorrichtung oder jegliches transientes Medium, wie etwa jegliches Signal, z. B. ein elektrisches, optisches oder Mikrowellen-Signal.
  • Andere Merkmale und Vorteile der vorliegenden Erfindung werden aus der nachfolgenden Beschreibung in Verbindung mit den beigefügten Zeichnungen ersichtlich.
  • 1 ist ein Blockdiagramm, welches eine Mehrparteien-Anwendungs-Schutzumgebung unter Verwendung eines Mikroprozessors gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 2 ist ein Blockdiagramm, welches eine beispielhafte Ausführungsform eines Mikroprozessors gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 3 ist Diagramm, welches eine Block-entsprechende Verschlüsselungs-Schlüsselerzeugungs-Prozedur in der Mehrparteien-Anwendungsschutzumgebung von 1 zeigt.
  • 4 ist ein Diagramm, welches Konfigurationen eines Informations-Anordnungs-Deskriptors und eines Verteilungsschlüssels und einer Speicher-Map eines in einer Ausführungsform der vorliegenden Erfindung verwendeten virtuellen Adressraums zeigt.
  • 5 ist eine Tabelle, die Beispiele von Task-Steuerbefehlen zeigt, die in einer Ausführungsform der vorliegenden Erfindung verwendet werden können.
  • 6 ist ein Diagramm, das beispielhafte Task-Zustandsübergänge gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 7 ist ein Blockdiagramm, das Task-Registrierungs-Operationen im Mikroprozessor von 2 zeigt.
  • 8 ist Flussdiagramm, das eine Task-Registrierungs-Verarbeitungsprozedur im Mikroprozessor von 2 zeigt.
  • 9 ist Blockdiagramm, das eine Konfiguration eines Instruktions-Caches im Mikroprozessor von 2 zeigt.
  • 10 ist ein Blockdiagramm, das Konfigurationen einer Schlüsselwert-Tabelle und eines Schnell-Verschlüsselungs-Schlüsselverarbeitungs-Moduls im Mikroprozessor von 2 zeigt.
  • 11 ist Blockdiagramm, das eine Konfiguration eines Daten-Caches im Mikroprozessor von 2 zeigt.
  • 12 ist ein Flussdiagramm, das eine Task-Ausführ-Startverarbeitungs-Prozedur im Mikroprozessor von 2 zeigt.
  • 13 ist ein Flussdiagramm, das eine Verarbeitungsprozedur zum Einlesen eines Instruktions-Caches in dem Mikroprozessor von 2 zeigt.
  • 14 ist ein Diagramm, das eine Datenstruktur innerhalb eines Daten-Caches im Mikroprozessor von 2 zeigt.
  • 15 ist ein Flussdiagramm, das eine Verarbeitungsprozedur zum Speichern eines Task-Zustands im Mikroprozessor von 2 zeigt.
  • 16 ist ein Flussdiagramm, das eine Verarbeitungsprozedur zur Wiederaufnahme einer unterbrochenen Task im Mikroprozessor von 2 zeigt.
  • 17 ist ein Flussdiagramm, das eine Task-Beendigungs-(Lösch-)Verarbeitungsprozedur im Mikroprozessor von 2 zeigt.
  • 18 ist ein Blockdiagramm, das eine konventionelle Mehrparteien-Anwendungsschutzumgebung zeigt.
  • Zuerst werden die Hauptmerkmale der vorliegenden Erfindung kurz beschrieben.
  • Um das erste Problem zu lösen, werden der tatsächlich in der Cache-Linie gespeicherte Task-Identifizierer und der durch das BS zugewiesene Task-Identifizierer verglichen und der Zugriff auf die Cache-Linie wird nur gestattet, wenn sie übereinstimmen, während der Inhalt der Cache-Linie verworfen wird, wenn sie nicht übereinstimmen.
  • Um dies zu realisieren, weist der Mikroprozessor eine Task-Zustandstabelle zum Zuweisen eines Identifizierers an die Task auf, die eine Mehrzahl von Zuständen annehmen kann, und zum Aufrechterhalten eines Zustands der Task entsprechend dem Task-Identifizierer, ein Task-Register zum Halten des aktuell ausgeführten Task-Identifizierers, eine Schnittstelle zum Einlesen in Einheiten von Cache-Linien des in verschlüsseltem Zustand gespeicherten Programms unter Verwendung eines vorgegebenen Programmschlüssels im externen Speicher, wenn es eine Anforderung bezüglich der Task gibt, eine Verschlüsselungs-Verarbeitungs-Einheit zum Erzeugen eines Entschlüsselungsschlüssels für jede Cache-Linie gemäß dem Programmschlüssel und zum Entschlüsseln des von der Schnittstelle gelesenen Inhalts, einen ersten von einer Mehrzahl von Cache-Linien mit entsprechendem Text zum Halten eines Task-Identifizierers gebildeten ersten Cache-Speicher, entsprechend dem beim Entschlüsseln der Cache-Linie im Tag verwendeten Entschlüsselungsschlüssel und eine Zugriffs-Verifikations-Einheit zum Vergleichen des im Tag der Cache- Linie gehaltenen Task-Identifizierers und des Werts des Task-Registers und Verwerfen des Inhalts der Cache-Linie, wenn diese Werte nicht übereinstimmen.
  • Um das zweite Problem zu lösen, wird es ermöglicht, die Entschlüsselung unter Verwendung von Schlüsseln auszuführen, die für unterschiedliche Blöcke unterschiedlich sind, anhand einer kleinen Menge an Geheimnissen.
  • Um dies zu realisieren, wird der Mikroprozessor mit dem Folgenden versehen.
    • (a) Einem Prozessorkern, der eine Leseanforderung durch Spezifizieren einer Adresse des externen Speichers, der eine Mehrzahl von Programmen speichert, die jeweils gemäß den einmaligen Programmschlüsseln verschlüsselt sind, erteilt;
    • (b) eine Schnittstelle zum Lesen eines Datenblocks der spezifizierten Adresse des externen Speichers in Reaktion auf die Leseanforderung des Prozessorkerns;
    • (c) eine Task-Schlüsseltabelle zum Halten des Programmschlüssels, korrspondierend dem jeder Task zugewiesenen Task-Identifizierer, der eine Einheit der Programmablaufsteuerung ist;
    • (d) eine Offset-Tabelle zum Halten einer Anfangs-Adresse, an der ein Programm als ein Offset-Wert angeordnet ist, für jeden Task-Identifizierer;
    • (e) eine Schlüsselerzeugungs-Einheit zum Berechnen eines relativen Adresswertes aus der durch die Leseanforderung spezifizierten Adresse und dem vom Task-Identifizierer der Offset-Tabelle spezifizierten Offset-Wert und Erzeugen eines Blockentsprechungsschlüssels, in dem der relative Adresswert unter Verwendung des Programmschlüssels verschlüsselt ist;
    • (f) eine Verschlüsselungs-Verarbeitungs-Einheit zum Entschlüsseln des ausgelesenen Datenblocks unter Verwendung des Blockentsprechungsschlüssels;
    • (g) einen Cache-Speicher, in dem der entschlüsselte Datenblock in Einheiten von Cache-Linien gelesen wird.
  • Auch werden zu einem Zeitpunkt der Task-Ausführungsunterbrechung die physischen Adressen, an denen das Programm und die Daten angeordnet sind, oft vom System-Ressourcen-Management geändert (Relokation) und um das in Einheiten von Blöcken verschlüsselte Programm zu entschlüsseln und normal auszuführen, gibt es einen Bedarf daran, dass die Informationen in einem gewissen Adressraum angeordnet wird. Aus diesem Grund wird im Falle der Berechnung der relativen Adresse eine virtuelle Adresse verwendet, die als Differenz zwischen der Zieladresse und der Programm-Startadresse ausgedrückt wird (Offset-Adresse).
  • Auf diese Weise kann der Blockaustausch effektiv verhindert werden und der beschränkte physische Speicher kann effizient eingesetzt werden.
  • Um das dritte Problem zu lösen, wird der Mikroprozessor mit dem Folgenden versehen:
    • (a) einer Schnittstelle zum Auslesen in Einheiten von Cache-Linien des Ausführungs-Codes und der Daten des Programm-Codes, die in verschlüsseltem Zustand im externen Speicher gespeichert sind;
    • (b) einem ersten Cache mit einer Offset-Tabelle zum Halten des Offset-Wertes, der die Programm-Startadresse ist, zum Halten des Ausführungs-Codes im Klartext-Zustand in jeder Cache-Linie;
    • (c) einem zweiten Cache mit einem Adressbereichs-Register, der einen Adressbereich der Daten hält, um die Daten im Klartext-Zustand in jeder Cache-Linie zu halten;
    • (d) einem mit dem ersten und zweiten Cache durch einen gemeinsamen Bus verbundene Schlüsselwert-Tabelle zum Halten des beim Verschlüsseln des Programms verwendeten Verschlüsselungsschlüssels;
    • (e) eine mit dem ersten und zweiten Cache und der Schlüsselwert-Tabelle durch einen gemeinsamen Bus verbundene Verschlüsselungs-Verarbeitungs-Einheit zum Empfangen des Verschlüsselungsschlüssels und des Offset-Werts aus der Schlüsselwert-Tabelle bzw. dem ersten Cache, Entschlüsseln des Ausführungs-Codes anhand des Verschlüsselungsschlüssels und des Offset-Werts und Überführen in den ersten Cache, Empfangen des Verschlüsselungsschlüssels und des Adressbereichs aus der Schlüsselwert-Tabelle bzw. dem zweiten Cache, und Entschlüsseln der Daten gemäß dem Verschlüsselungsschlüssel und dem Adressbereich und Liefern an den zweiten Cache.
  • Bei dieser Konfiguration ist es möglich, einen Mikroprozessor zu realisieren, der eine effiziente Verschlüsselungs-Verarbeitungs-Struktur hat, die zwischen den Caches geteilt wird.
  • Nunmehr unter Bezugnahme auf die 1 bis 17 wird eine Ausführungsform des Mikroprozessors gemäß der vorliegenden Erfindung im Detail beschrieben.
  • 1 zeigt eine Mehrparteien-Applikationsschutzumgebung, auf welche die vorliegende Erfindung anzuwenden ist.
  • Ein Softwareanbieter 121 stellt ein Pogramm 122 her und verteilt es an einem Mikroprozessor-A 103, der innerhalb eines Zielsystems 102 eines Systemanwenders 112 vorgesehen ist. Um das zu verteilende Programm zu schützen, wird das Klartext-Programm 122 verschlüsselt.
  • Spezifischer wird das von Ausführungs-Codes und Daten wie etwa Initialisierungsdaten gebildete Programm durch Verwenden eines vom Softwareanbieter 121 ausgewählten Programmschlüssels verschlüsselt, und der für die Verschlüsselung verwendete Programmschlüssel wird unter Verwendung eines öffentlichen Schlüssels-A des Prozessors-A des Zielsystems 102 verschlüsselt, um einen Verteilschlüssel zu erzeugen.
  • An diesem Punkt teilt der Softwareanbieter 121 das Programm und die Initialisierungsdaten in eine Mehrzahl von Blöcken und verschlüsselt sie unter Verwendung eines unterschiedlichen Schlüssels für jeden Block. Man beachte jedoch, dass es keinen Bedarf dafür gibt, dass der Softwareanbieter 121 so viele Schlüssel wie die Anzahl von Blöcken auswählt, und dass es ausreicht, zwei Dinge auszuwählen, einschließlich einer Konstanten Cx als Basis zum Erzeugen einer Mehrzahl von Schlüsseln und eines Schlüssels Kx zum Verschlüsseln der Mehrzahl von anhand Cx erzeugten Schlüsseln. Wie unten im Detail beschrieben wird, wird ein blockverschlüsseltes Programm 123 durch die Verschlüsselung unter Verwendung eines unterschiedlichen Schlüssels für jeden Block gemäß diesen zwei Konstanten erzeugt. Dann werden für Cx und Kx unter Verwendung des öffentlichen Schlüssels-A des Prozessors-A verschlüsselt, um einen Verteilungsschlüssel Kx[A], Cx[A] herzustellen.
  • Man beachte, dass in 1 aus Gründen der Einfachheit nur ein einzelner Softwareanbieter gezeigt wird, aber hier die Mehrparteien-Umgebung angenommen wird, so dass angenommen wird, dass der Anwender 112 entsprechende blockverschlüsselte Programme aus einer Mehrzahl von Anbietern erwirbt und sie im System 102 speichert.
  • Das verteilte blockverschlüsselte Programm wird in einem Sekundärspeicher 107, wie etwa einer Festplatte, einmal zusammen mit dem Verteilungsschlüssel gespeichert und in dem vom Speicher 108 gesicherten Bereich 109-1 zum Zeitpunkt der Ausführung geladen. Dieses Lesen in den Speicher wird durch ein BS 110 zum Verwalten von Ressourcen des Systems 102 ausgeführt. Das Programm selbst und der Verteilungsschlüssel können in einer einzelnen Datei oder in getrennten Dateien gespeichert werden. Der Speicher 108 weist ebenfalls Bereiche 109-n für andere Programme desselben Anbieters 121 oder andere Programme anderer Anbieter auf, aber ihre Beschreibung wird zum Nutzen der Erläuterung weggelassen.
  • Der Prozessor-A liest den Verteilungsschlüssel 125 ein und verschlüsselt den Verteilungsschlüssel unter Verwendung des Geheimschlüssels-A in einer Schutzlogik 108. Das im Speicher 108 angeordnete verschlüsselte Programm wird in den Cache-Speicher 104 in Einheiten von Blöcken eingelesen und in Einheiten von Blöcken unter Verwendung des entschlüsselten Verteilungsschlüssels entschlüsselt. Zu diesem Zeitpunkt ist ein Merkmal des Prozessors-A, dass er die Fähigkeit zum Erzeugen eines Blockentsprechungsschlüssels entsprechend jeglichem aus einer Mehrzahl von verschlüsselten Blöcken aus einer begrenzten Zahl von Geheimnissen, wie etwa beispielsweisezwei Konstanten Kx und Cx, und zum Ausführen der Entschlüsselung in Einheiten von Blöcken aufweist.
  • 2 zeigt eine Hardware-Konfiguration des Mikroprozessors-A, der in 1 gezeigt ist. Der Prozessor-A hat einen Kern 902, einen Instruktions-Cache 903, einen Daten-Cache 904, ein Schnellverschlüsselungs-Schlüsselverarbeitungs-Modul (FCM: Fast Ciphering Module) 911, das von diesen Caches zu teilen ist, eine Schlüsselwert-Tabelle (KVT, Key Value Table) 912, ein Verteilschlüssel-Verwaltungs-Modul 913 und eine Bus-Schnittstelle (BIU) 906, die innerhalb einer Prozessorpackung 200 angeordnet und über einen internen Bus 905 miteinander verbunden sind.
  • Der Kern 902, das Schnellverschlüsselungs-Schlüsselverarbeitungs-Modul 911, die Schlüsselwert-Tabellen 912 und das Verteilschlüssel-Management-Modul 913 bilden die Schutzlogik 106 von 1.
  • Der Kern 902 weist ein Registerfeld 915 und einen Task-Umschalter 914 auf. Der Task-Umschalter 914 führt das Task-Umschalten aus, d.h. das Speichern und Wiedergewinnen des Kontextes ist, wenn eine Unterbrechung stattfindet. Der Kontext wird entsprechend der Ausführungsform der Task erzeugt und entsprechend der Task verwaltet. Um dies zu realisieren, hat der Task-Umschalter 914 intern eine Task-Zustandstabelle 921 und eine Hash-Berechnungs-Einheit 922. Die Task-Zustandstabelle 921 hält den Task-Zustand entsprechend der Task-ID, wie unten beschrieben. Obwohl nicht in der Figur gezeigt, erteilt ebenfalls der Kern 902 eine Notiz zur Änderung des Kontexts im Registerfeld, ein Verteilschlüssel-Einstellkommando, etc.
  • Der Instruktions-Cache 903 speichert die Ausführungs-Codes des Programms zwischen. Zusätzlich zu einem üblichen Cache-Tag für das Identifizieren der Adresse ist ebenfalls ein Tag zum Identifizieren eines geschützten Tasks daran angehängt und es wird die Unabhängigkeit der Anwendung zwischen den internen Daten des Mikroprozessors garantiert. Man beachte dass, obwohl in 2 nicht gezeigt, der Instruktions-Cache 903 intern eine Offset-Tabelle 1207 (siehe 9) zum Beschreiben von Startadressen (Offsets) des Programms (Ausführungs-Codes) und der Daten aufweist, wie unten beschrieben.
  • Der Daten-Cache 904 zwischenspeichert verschiedene Informationen, die sich auf ein Programm beziehen, wie etwa Initialisierungsdaten, Stack-Daten, dynamische Daten etc. des Programms.
  • Das schnelle (symmetrische) Verschlüsselungs-Schlüsselverarbeitungs-Modul 911 weist ein Schlüsselerzeugungs-Modul 1312 und ein Verschlüsselungs-Verarbeitungs-Modul 1313 auf. Das Schlüsselerzeugungs-Modul 1312 ermittelt einen Blockschlüssel und einen relativen Adresswert eines Verarbeitungs-Zielblockes durch den internen Bus 905 und erzeugt den Verschlüsselungsschlüssel entsprechend jedem Block durch das unten zu beschreibende Verfahren. Das Verschlüsselungs-Verarbeitungs-Modul 1313 führt die Verschlüsselungs-/Entschlüsselungs-Verarbeitung des entsprechenden Blocks unter Verwendung des erzeugten Verschlüsselungs-Schlüssels für jeden Block aus. Die Blockverschlüsselungs-Verarbeitung erfordert eine Mehrzahl von Takten, so dass ebenfalls ein Dispatcher zum Ermöglichen der Parallelverarbeitung einer Mehrzahl von Modulen enthalten ist.
  • Die Schlüsselwert-Tabelle (KVT) 912 durchsucht die Tabelle gemäß der aus dem Cache gesendeten Tabellen-ID-Information und liefert den Schlüsselwert an das schnelle Verschlüsselungs-Schlüsselverarbeitungs-Modul 911.
  • Das Verteilschlüssel-Verwaltungs-Modul 913 richtet die Entschlüsselung des Verteilungsschlüssels unter Verwendung des öffentlichen Schlüssels und einer Entschlüsselungs-Ergebnis-Tabelle ein.
  • Der Mikroprozessor hat auch einen Task-Kanal 916, wie durch die gestrichelte Linie in 2 angezeigt, der Informationen der derzeit ausgeführten Task und der kontext-gesicherten Task aus dem Kern 902 an die anderen Module überträgt. Außerhalb der Mikroprozessorpackung 200 sind ein RAM 907 als externer Speicher und eine so genannte South-Bridge 908 zum Verbinden von Peripherie-Schaltungen vorgesehen und die Datenübertragung und die Pufferung aus/zum internen Bus 905 zum/aus dem externen Speicher 907 und die South-Bridge 908 werden von der Bus-Schnittstelle 905 ausgeführt.
  • 3 zeigt eine Prozedur für die Verschlüsselung des Programms in Einheiten von Blöcken. Diese Verarbeitung wird durch die Blockentsprechungs-Verschlüsselungs-Verarbeitungs-Einheit 126 des Softwareanbieters 121 von 1 ausgeführt.
  • Ein Programmbereich 1001 des vom Softwareanbieter entwickelten Klartext-Anwendungs-Programms wird durch eine Mehrzahl von Blöcken (Block-0 bis Block-n) in Einheiten von 128 Bits (16 Bytes) gebildet. In Bezug auf diesen Gesamtbereich werden vorab zwei Konstanten Kx und Cx ausgewählt.
  • Als erstes wird eine Summe der Konstante Cx und einer relativen Anfangs-Adresse jedes Blocks in Bezug auf einen Anfang des Programms erhalten. Beispielsweise ist das oberste Byte des ersten Blocks "0", so dass Cx + 0 berechnet wird (S1002-0). Der Wert Cx + 0 wird unter Verwendung des Geheimschlüssels Kx verschlüsselt, um einen Blockentsprechungsschlüssel Kv0 zu erzeugen (S1003-0). Der Klartext-Block 1001-0 wird unter Verschlüsselung dieses Blockentsprechungsschlüssels Kv0 verschlüsselt (S1004-0), um einen verschlüsselten Block 1005-0 zu erzeugen.
  • In ähnlicher Weise ist das oberste Byte des zweiten Blocks 1 "16" und die relative Adresse in Bezug auf den Anfang des Programms wird "16", so dass Cx + 16 berechnet wird (S1002-1). Die relative Adresse des (n + 1)-ten Blocks n ist "16n", so dass Cx + 16n berechnet wird (S1002-n). Durch Verschlüsseln dieser Werte unter Verwendung von Kx werden die Verschlüsselungsschlüssel Kv1 bis Kvn der entsprechenden Blöcke erzeugt (S1004-1 bis S1004-n). Der Klartext-Block-1 bis Block-n werden durch die entsprechenden Verschlüsselungsschlüssel verschlüsselt, um die verschlüsselten Blöcke 1005-1 bis 1005-n zu erzeugen.
  • In 3 werden die Verschlüsselungs-Verarbeitungen S1003-0 bis S1003-n und S1004-0 bis S1004-n als voneinander unabhängig gezeigt, aber es ist auch möglich, eine einzelne Verschlüsselungs-Verarbeitung wiederholt durch Verändern von Parametern zu verwenden, und es ist auch möglich, sie durch Software zu realisieren.
  • Gemäß den in 3 gezeigten Verschlüsselungsverfahren kann der Softwareanbieter 121 die Verschlüsselungs-Verarbeitung ausführen, ohne der absoluten Adresse gewahr zu werden, an der das Programm im Zielsystem 102 angeordnet wird. Der Softwareanbieter kann nicht den absoluten Adresswert raten, so dass, falls der Blockentsprechungsschlüssel gemäß dem Absolut-Adresswert zu erzeugen ist, es entweder nötig würde, eine Mitteilung über die absolute Adresse, an der das Programm angeordnet ist, vorab vom Zielsystem 102 zu empfangen und dann das verschlüsselte Programm entsprechend der angeordneten Adresse zu erzeugen oder es würde möglich werden, unbegrenzt viele verschlüsselte Programme entsprechend den möglichen angeordneten Adressen zu verteilen. In jedem Fall würden die Verteilungskosten des Programms selbst beachtlich groß werden.
  • Beim Verfahren von 3 sind die Geheimnisse, die verteilt werden müssen, nur der Schlüssel Kx und die Konstante Cx und es werden eine Mehrzahl von Blockentsprechungs-Verschlüsselungsschlüsseln unter Verwendung der relativen Adresse jedes Blocks erzeugt, so dass die Verarbeitungslast auf Softwareanbieter-Seite vermindert werden kann und die ökonomische Anforderung erfüllt werden kann.
  • Die Blöcke 1005-0 bis 1005-n werden so verschlüsselt zum Zielsystem 102 gemeinsam mit dem Verteilschlüssel Kx[A], Cx[A] übertragen. Im Zielsystem 102, wenn einmal die Geheimnis-Informationen Kx, Cx und der relative Adresswert des Blockes gegeben sind, ist es möglich, jeden Block unabhängig innerhalb des Mikroprozessors zu entschlüsseln, ohne jegliche Abhängigkeit von der absoluten Adresse des Speichers, an der er angeordnet ist, oder Daten der anderen Blöcke.
  • Dies passt effizient zum derzeitigen BS, welches voraussetzt, dass die Relokation der Applikationsprogramme und zur derzeitigen Computer-Architektur, die durch Wahlfreizugriffe auf den Speicher charakterisiert ist.
  • Auch unterscheidet sich selbst, falls der Angreifer illegale Austäusche der Blöcke vornimmt, der relative Adresswert für jeden Block, so dass auch der Blockverschlüsselungsschlüssel unterschiedlich ist und daher wird der durch den Angreifer beabsichtigte Vorgang nicht ausgeführt.
  • Als nächstes werden die Operationen auf der Zielsystemseite 102 im Detail beschrieben.
  • Vor der Ausführung des Programmes alloziert das BS 110 Bereiche des Speichers 108 jeweils für Ausführungs-Codes, die Initialisierungsdaten (statische Daten) und einen Arbeitsbereich (Stack) des vom Softwareanbieter 102 empfangenen Anwendungsprogramms. In dieser Phase ist das Programm noch in dem verschlüsselten Zustand. Die Startadressen der allozierten Speicherbereiche werden vom Systemzustand geändert, das heißt der kooperativ arbeitenden anderen Programm-Module und der Anordnung des geteilten Speichers, so dass das BS, welches das System verwaltet, die Adressen der Bereiche gemäß der Situation (Relokation) frei bestimmt. Das BS 110 bestimmt auch den Speicherbereich zum Anordnen des Verteilungsschlüssels und liest die Verteilungsschlüssel-Informationen ein.
  • Das BS 110 beschreibt die Adress-Information dieser Bereiche in einer Struktur, die Informations-Anordnung-Deskriptor (IAD) zum Speicher genannt wird.
  • 4 zeigt eine Speicherkarte eines virtuellen Adressraums einer gewissen Task und einer Struktur des Informations-Anordnungs-Beschreibers 1111 und der Verteilschlüssel-Information 1121. Auf der Speicherkarte sind das Programm 1102, die Initialisierungs-(statischen) Daten 1103, der Arbeitsbereich (Stack) 1104, der Informations-Anordnungs-Beschreiberbereich 1105 und der Verteilschlüsselbereich 1106 angeordnet.
  • Der Informations-Anordnungs-Deskriptor 1111 enthält eine Programmbereichs-Startadresse (Programm-Offset) 1112, eine Datenbereichs-Startadresse (Statischer Daten-Offset) 1113, eine Datenbereichs-Endadresse (statisches Datenende) 1114, eine Arbeitsbereichs-Startadresse (Stack Offset) 1115, eine Arbeitsbereich-Endadresse (Stack-Limit) 1116 und einen Verteilschlüssel-Startadresse (Verteilschlüssel-Offset) 1117.
  • Der Verteilungsschlüssel 1121 enthält einen Programmschlüssel (Kx) 1122, eine Programm-Geheimnis-Konstante (Cx) 1123, einen Initialisierungs-Datenschlüssel (Kdi) 1124, eine Initialisierungs-Daten-Geheimnis-Konstante (Cdi) 1125, eine Initialisierungs-Datengröße (Sdi) 1126, einen Arbeitsbereichs-(Stack)schlüssel (Kdw) 1127, eine Arbeitsbereichs-Geheimnis-Konstante (Cdw) 1128 und eine Arbeitsbereichs-Größe (Sdw) 1129.
  • Wenn das im Speicher angeordnete Programm in den Mikroprozessor 103 eingelesen und entschlüsselt und ausgeführt wird, erteilt das BS 110 verschiedene privilegierte Befehle (Task-Steuerkommandos) zum Steuern des Task-Zustands gemäß der Informations-Anordnungs-Deskriptor, um so den Task-Zustand zu verwalten.
  • 5 zeigt einige Beispiele von Task-Steuerkommandos und 6 zeigt den Zustandsübergang der Task. Die Task-Steuerkommandos beinhalten eine Registrierung der Task in der internen Tabelle (Register), ein Starten der Task (Start), ein Speichern des suspendierten Task-Zustands (Suspend), eine Wiederaufnahme der suspendierten Task (Continue) und eine Beendigung der Task, das heißt eine Löschung der Task-Geheimnis-Information aus der internen Tabelle (Delete). Dann macht gemäß diesen Task-Steuerkommandos der Task-Zustand Transitionen, wie in 6 gezeigt, vom Null-Zustand 201 zu einem INIT-Zustand 202, einem RUN-Zustand 203, einem STOPPED-Zustand 204, einem SUSPEND-Zustand 205, etc.
  • Im Folgenden werden die Operation zum Ausführen der Task, insbesondere die Registrierung der Task, die Ausführung der Task, die Unterbrechung der Task und die Beendigung der Task detailliert beschrieben.
  • <Registrierung der Task>
  • 1. Registrier-Verarbeitungsfluss:
  • Zuerst, um die Task zu registrieren, erteilt das BS 110 ein "Register"-Kommando, welches ein privilegiertes Kommando ist, in dem die ID der zu registrierenden Task und eine Anfangs-Adresse des Informations-Anordnungs-Deskriptors dieses Programms als Parameter verwendet werden. Durch Erteilen des "Register"-Kommandos wird der Verteilschlüssel 1121 für dieses Programm entschlüsselt und der zum Entschlüsseln jedes Speicherblocks zu verwendende Schlüssel und die relativen Adress-Informationen werden in verschiedenen Tabellen innerhalb des Mikroprozessors in Bezug auf die Task-ID registriert (unten beschrieben).
  • 7 zeigt einen Umriss der Task-Registrierungs-Vorgangs im Mikroprozessor (Hardware) 103 und 8 zeigt den Verarbeitungsfluss des "Register"-Befehls.
  • Wenn der Register-Befehl unter Verwendung der Adresse des Informations-Anordnungs-Deskriptors (IAD) 1111 und der Task-ID #1 als Parameter erteilt wird, überprüft der Task- Umschalter 914 innerhalb des Kerns 902 den Task-Zustand (S301). Falls der Task-Zustand nicht NULL ist (S301 NEIN), wird der Task-Zustand auf INVALID gesetzt und wird als Fehler verarbeitet (S308). Falls der Task-Zustand NULL ist (S301 JA), schreibt der Kern 902 eine Registrierungs-Anforderung, welche die Informations-Anordnungs-Deskriptor-Adresse und die Task-ID enthält, in einen Sequencer 913-1 des Verteilungsschlüssel-Verwaltungs-Moduls 913, wie in 7 durch die gestrichelte Linie (1) angezeigt.
  • Der Sequencer 913-1 überträgt eine Speicher-Lese-Anforderung in Bezug auf den Informations-Anordnungs-Deskriptorbereich zur BIU 906, wie durch eine gestrichelte Linie (2) in 7 angezeigt, und die BIU 906 liefert den Informations-Anordnungs-Deskriptor 1111 an den Sequencer 913-1, wie durch eine gestrichelte Linie (3) in 7 angezeigt. Der Sequencer 913-1 analysiert diesen Informations-Anordnungs-Deskriptor, um die Offset-Adressen und Bereiche entsprechend dem Programm, den Initialisierungsdaten und dem Arbeitsbereich und der Verteilungsschlüssel-Offset-Adresse 1117 zu ermitteln (S302).
  • Als nächstes überträgt der Sequencer 913-1 eine Lese-Anforderung in Bezug auf die Verteilschlüssel-Adresse an die BIU 906. Die BIU 906 liefert den Inhalt des Verteilschlüssels an das öffentliche Schlüssel-Entschlüsselungs-Modul 91302, wie durch eine gestrichelte Linie (4) in 7 angezeigt. Das öffentliche Schlüssel-Entschlüsselungs-Modul 913-2 entschlüsselt den Verteilungsschlüssel 1121 (siehe 4), um die Programm-Geheimnis-Konstante (Cx), die Initialisierungsdaten-Geheimnis-Konstante und die Arbeitsbereichs-Geheimnis-Konstante zu erhalten (S303).
  • Als nächstes schreibt das öffentliche Schlüssel-Entschlüsselungs-Modul 913-2 die Offset-Adressen des Programms, der Initialisierungsdaten und des Arbeitsbereiches, die bei S302 erhalten worden sind, in eine Offset-Tabelle (siehe 9) des Instruktions-Caches 903, wie durch eine gestrichelte Linie (5) in 7 angezeigt.
  • In ähnlicher Weise schreibt das öffentliche Schlüssel-Entschlüsselungs-Modul 913-2 die Verschlüsselungsschlüssel (Geheimnis-Konstanten) des Programms, die Initialisierungsdaten und den Arbeitsbereich, die bei S303 ermittelt worden sind, in die Schlüsselwert-Tabelle 912 (S305). Auf diese Weise werden die Tabellen eingerichtet und die Registrierung der Task wird abgeschlossen.
  • Wenn die Registrierung der Task abgeschlossen ist, macht der Task-Zustand einen Übergang von NULL nach INIT (S306) und dieser Zustandsübergang wird dem Kern 902 durch die Unterbrechung (S307) notifiziert, so dass das BS sicherstellen kann, dass die Vorbereitung für die Ausführung der Task beendet ist.
  • 2. Einrichtung von Tabellen:
  • Bevor die Einrichtung von verschiedenen Tabellen innerhalb des Mikroprozessors beschrieben wird, werden die Konfigurationen des Instruktions-Caches 903, des schnellen Verschlüsselungs-Schlüsselverarbeitungs-Moduls (FCM) 911, der Schlüsselwert-Tabelle (KVT) 912 und des Daten-Caches 904, welche den Mikroprozessor bilden, unter Bezugnahme auf die 9 bis 11 beschrieben.
  • 9 zeigt ein Detail des Instruktions-Caches 903. Der Instruktions-Cache 903 beinhaltet eine Instruktions-Verwaltungs-Einheit (MMU) 1201 mit einem TLB (Translation Lookaside Buffer) 1202, einen Instruktions-Cache-Speicher 1203, ein aktuelles Task-ID-Register 1204, eine Cache-Zugriffs-Überprüfungs-Einheit 1205, eine Task-ID-Schreibeinheit 1206 und eine Offset-Tabelle 1207.
  • Der Cache-Speicher 1203 wird durch eine Mehrzahl von Cache-Linien in einer vorgegebenen Größe gebildet und jede Cache-Linie hat einen Tag zum Halten der Task-ID der durch diese Cache-Linie (Block) auszuführenden Task. Die Cache-Zugriffs-Prüfeinheit 1205 vergleicht die im Tag gehaltene Task-ID und den aktuellen Task-ID-Registerwert und gestattet Zugriff nur, wenn sie übereinstimmen. Der Inhalt dieser Cache-Linie wird verworfen, wenn sie nicht übereinstimmen.
  • 10 zeigt Details der Schlüsselwert-Tabelle (KVT) 912 und des schnellen Verschlüsselungs-Schlüsselverarbeitungs-Moduls (FCM) 911. Die KVT 912 beinhaltet eine Tabellen-Zugriffs-Steuereinheit 1301, ein aktuelles Task-ID-Register 1302, eine Task-Schlüssel-(oder Programmschlüssel-)Tabelle 1303, eine Kontextschlüssel-Tabelle 1304 und eine Datenschlüssel-Tabelle 1305. Obwohl in 10 nicht gezeigt, enthält die Datenschlüssel-Tabelle 1305 vier Tabellen (Tabelle-0 bis Tabelle-3). Die KVT 912 ist mit dem internen Bus 905 über einen Bus 1315 verbunden.
  • Das schnelle Verschlüsselungs-Schlüsselverarbeitungs-Modul (FCM) 911 beinhaltet ein Dispatcher 1311, ein Schlüsselerzeugungs-Modul 1312 und ein Verschlüsselungs-Verarbeitungs-Modul 1312. Das Schlüsselerzeugungs-Modul 1312 hat drei Teile 1312-1 bis 1312-3 parallel als Schlüsselerzeugungs-Einheiten und das Verschlüsselungs-Verarbeitungs-Modul 1313 hat drei Teile 1313-1 bis 1313-3 als Verschlüsselungs-Verarbeitungs-Einheiten. Der Abwickler 1311 leitet die Verarbeitung an vakante Teile der Schlüsselerzeugungs-Einheiten und der Verschlüsselungs-Verarbeitungs-Einheiten, um so die parallele Verarbeitung zu ermöglichen. Der FCM 911 ist mit dem internen Bus 905 über einen Bus 1314 verbunden.
  • Von der KVT 912 zum FCM 911 wird der Verschlüsselungsschlüssel durch einen Bus 1316 übertragen und der relative Adresswert wird über einen Bus 1317 übertragen.
  • 11 zeigt ein Detail des Daten-Caches 904. Der Daten-Cache 904 enthält ein aktuelles Task-ID-Register 1401, eine MTRR (Memory Type Range Register/Speichertyp-Bereichsregister) Tabelle 1403 zum Halten des Adressbereichs, eine MTRR-Tabellen-Verwaltungs- und Vergleichs-Einheit 1402 zum Verwalten der MTRR-Tabelle und Vergleichen des Adressbereichs der MTRR-Tabelle mit der Zieladresse, eine Verschlüsselungs-Attribut-Ausgabeeinheit 1411, einen Daten-Cache-Speicher 1431, eine MMU 1442 mit einem Daten-TLB 1433 und ein Speicher-Ablauf-Kontext-Identifizier-Register 1434.
  • Die Verschlüsselungs-Attribut-Ausgabeeinheit 1411 weist ein Lesedaten-Schlüsselidentifizier-Register 1412, ein Lese-Kontext-Schlüsselidentifizierer-Register 1413, ein Schreibdaten-Schlüsselidentifizierer-Register 1414, ein Schreib-Kontext-Schlüsselidentifizierer-Register 1415 und eine Zugriffs-Prüfeinheit 1421 für den Zweck des Überprüfens der Verschlüsselungs-Attribute der Daten und des Kontexts zu einem Zeitpunkt des Zurückschreibens auf den externen Speicher auf. Die MMU 1442 führt den Speicherzugriff durch Umwandeln der aus dem Kern 902 ausgegebenen virtuellen Adresse in die absolute Adresse gemäß der vorgegebenen Umwandlungs-Information aus.
  • Die sechs Arten der KVT 912, das heißt die Programmschlüssel-Tabelle 1303, die Kontextschlüssel-Tabelle 1304 und die Datenschlüssel-Tabellen 1305 (0 bis 3) werden durch die Task-IDs indexiert und sind zum Halten von zwei Arten von Geheimnis-Informationen in der Lage, die für die Schlüsselerzeugung zu verwenden sind. Die zwei Arten von für die Blockentschlüsselungs-Schlüsselerzeugung zu verwendenden Geheimnis-Informationen, wie etwa Kx 1122 und Cx 1123 für das in 4 gezeigte Programm werden beispielsweise in einen Eintrag der Task-ID #1 in der Programmschlüssel-Tabelle 1303 der KVT 912 geschrieben.
  • Andererseits wird der Offset-Wert 1112 dieses Programmbereichs in einen Eintrag der Task-ID #1 in der Offset-Tabelle 1207 innerhalb des Instruktions-Caches 903 geschrieben.
  • Die MTRR-Tabelle 1403 des Daten-Caches 904 wird durch die Task-ID und einen MTRR-Identifizierer, der einen Wert im Bereich von 0 bis 3 annimmt, identifiziert. Die MTRR-Tabelle 1403 hat nämlich vier MTRRs (Adressbereichsregister) pro einer Task und der Adressbereich des Datenbereichs und der Schlüsselwert können in jedem von diesen registriert werden. Zu einem Zeitpunkt der Task-Registrierung werden die MTRRs mit MTRR-Identifizierer 0 und 1 entsprechend im Initialisierungsdaten- und des Arbeitsbereichs (Stack) eingerichtet. Auch werden die Inhalte der MTRR mit MTRR-Identifizierern 2 und 3 auf "0" initialisiert.
  • Wenn eine Task auf den Speicher referenziert, werden die Zieladresse und die Adresse der MTRRs verglichen und das Verschlüsselungs-Attribut (das heißt der Schlüssel) entsprechend dem passenden MTRR wird verwendet. Die Verschlüsselungs-Schlüsselerzeugung in der oben beschriebenen Prozedur wird auch auf die Daten angewendet, indem der relative Adresswert mit einer Top-Adresse des MTRR als Offset verwendet wird.
  • Um das Auftreten eines Widerspruchs bei den Tabelleninhalten zu verhindern, werden alle Operationen in Bezug auf diese Task im Kern 902 während eines Zeitraums verboten, in dem diese Tabellen wiederbeschrieben werden.
  • Wenn das Wiederschreiben der Tabellen abgeschlossen ist, wird der Zustand des Eintrags entsprechend dieser Task-ID in der Task-Zustandstabelle 921 des Task-Schalters (STS) 914 von NULL zu INIT umgeschrieben und der Abschluss der Registrierung wird dem Kern 902 durch Unterbrechung („Interruption") notifiziert.
  • Man beachte, dass diese Ausführungsform auf den Fall der Implementierung dieser Registrierungs-Operation durch Hardware gerichtet ist, aber dass sie als Software implementiert werden könnte, die im Prozessor als Firmware inkorporiert ist. Man beachte jedoch, dass es einen Bedarf daran gibt, sich darum zu kümmern, die Änderung der Firmware durch einen bösartigen Systemnutzer zu verhindern.
  • <Ausführung der Task>
  • 1. Start der Ausführung der Task:
  • Um die Task auszuführen, führt das BS das "Start"-Kommando unter Verwendung der Task-ID als Parameter in Bezug auf die Task im INIT-Zustand aus. Dann wird die Kontrolle zu einem oberen Ende des Programmbereichs verschoben. Falls das "Start"-Kommando durch Spezifizieren der Task in einem anderen als dem INIT-Zustand ausgeführt wird, wird es als Fehler prozessiert und nichts wird ausgeführt.
  • 12 zeigt den Prozessfluss des Task-Ausführ-Startkommandos. Wenn das "Start"-Kommando für eine Task durch Spezifizieren seiner Task-ID erteilt wird, wird zuerst bewertet, ob ihr Task-Zustand INIT ist oder nicht, das heißt ob sie in einem Zustand ist, wo die Vorbereitung für die Ausführung der Task abgeschlossen ist oder nicht (S401). Wenn das "Start"-Kommando durch Spezifizieren des Task-Identifizierers der Task in einem anderen als dem INIT-Zustand erteilt wird (S401 NEIN), wird der Zustand der Task-Zustandstabelle 921 auf INVALID (S407) gesetzt und sie wird als ein Fehler verarbeitet.
  • Wenn die Task in ihrem INIT-Zustand ist (S401 JA), wird die im Kern 902 gehaltene derzeitige Task-ID auf die neue Task gesetzt (S402) und der Registerbereich 915 wird initialisiert (S403). Auch wird der Wert des Programmzählers (nicht gezeigt) auf einen Anfang des Programmbereichs eingestellt (S404).
  • Dann wird die neue Task-ID dem Instruktions-Cache 903, dem Daten-Cache 904 und der Schlüsselwert-Tabelle 912 über den Task-Kanal 916 notifiziert und in den entsprechenden aktuellen Task-ID-Registern 1204, 1401 und 1302 gehalten (S405). Danach wird der Task-Zustand in Task-Zustandstabelle 921 des Kerns 902 von INIT nach RUN umgeschrieben (S406) und die Ausführung wird gestartet.
  • Bei dieser Ausführungsform wird das durch Verschlüsselung in Einheiten von Blöcken geschützte Programm ausgeführt, so dass, wenn das Programm im externen Speicher in den Cache eingelesen wird, die Entschlüsselung des Programms in Einheiten von Blöcken gemäß dem entsprechend der Task-ID registrierten Programmschlüssel ausgeführt und der als Entschlüsselungs-Ergebnis erhaltene Klartext wird in den Cache gelesen und ausgeführt. Zu diesem Zeitpunkt wird der Offset in der Offset-Tabelle 1297 innerhalb des Instruktions-Caches 903 gemäß der angeordneten Speicheradresse zu einem Zeitpunkt der Task-Registrierung registriert und ein Unterschied zwischen der Speicheradresse und dem Offset wird als relativer Adresswert verwendet, so dass die Entschlüsselung korrekt ausgeführt werden kann, egal an welcher Adresse das BS das vom Programmierer verschlüsselte Programm anordnet.
  • Man beachte, dass diese Ausführungsform auf den beispielhaften Fall des Machens eines Übergangs vom NULL-Zustand zum RUN-Zustand über den intermediären INIT-Zustand gerichtet ist, aber der Zweck dafür darin besteht, die Reaktions-Unmöglichkeitszeit zu verkürzen, die in der öffentlichen Schlüssel-Algorithmus-Verarbeitung relativ lang ist, indem die Verarbeitung des öffentlicher-Schlüssel-Algorithmus des Verteilschlüssels synchron ausgeführt wird. Falls die Reaktions-Unmöglichkeitszeit tolerabel ist, kann der intermediäre INIT-Zustand weggelassen werden (siehe gemeinsam zugewiesene mitanhängige US-Patentanmeldung mit der Serien-Nr. 10/059,217 für die asynchrone öffentliche Schlüssel-Algorithmus-Verarbeitung).
  • 2. Einlesen in den Instruktions-Cache:
  • Als nächstes wird die Verarbeitung des Einlesens in den Instruktions-Cache 903 unter Bezugnahme auf den Verarbeitungsfluss von 13 beschrieben.
  • Die Cache-Linie, die in den Cache eingelesen wird, nachdem die Ausführung der Task begonnen hat, wird mit dem Task-ID-Tag dieser Task zusätzlich zum normalen Tag assoziiert, um zu entscheiden, ob die Speicheradresse passt oder nicht. Dann, wenn es einen Zugriff auf die Cache-Linie gibt, die in den Cache gelesen wird, entscheidet die Zugriffs-Prüfeinheit 1205 des Instruktions-Caches 903, ob der mit der Linie assoziierte Task-ID-Tag und die zugegriffene aktuelle Task-ID übereinstimmen oder nicht. Falls sie nicht übereinstimmen, wird dies als ein Cache-Fehltreffer gehandhabt, selbst falls der Memory-Adress-Tag übereinstimmt, und die Information dieser Cache-Linie wird aus dem externen Speicher neu ausgelesen. Selbst falls der Inhalt des externen Speichers, der dieser Linie entspricht, von einer anderen Task wieder gelesen wird, wird er durch Ausführen der Entschlüsselung unter Verwendung des Schlüssels entsprechend der Task-ID der neu zugegriffenen Task gelesen. Anders ausgedrückt, wird das Ergebnis der Entschlüsselung unter Verwendung eines anderen als des korrekten Schlüssels ausgeführt, so dass die normale Verarbeitung nicht ausgeführt wird.
  • Man beachte, dass in der nachfolgenden Beschreibung der relativen Adressen gemäß der virtuellen Adresse ausgeführt wird, aber die Beurteilung von Cache-Treffern/Fehltreffern in Bezug auf die absolute Adresse ausgeführt wird. Dies liegt daran, falls die virtuelle Adresse für die Bewertung von Cache-Treffern/Fehltreffern verwendet wird, ein Phänomen, das Alias genannt wird, bei dem derselbe Speicher-Block in einer Mehrzahl im Cache existiert, auftreten wird. Dieses Phänomen wird besonders problematisch, wenn derselbe absolute Adressbereich von einer Mehrzahl von Tasks zu teilen ist. Aus diesem Grund werden Cache-Treffer/Fehltreffer in dieser Ausführungsform durch die absolute Adresse beurteilt.
  • 13 zeigt den Verarbeitungsfluss für das Einlesen in den Instruktions-Cache 903. Bei diesem Fluss sind die Operationen des Instruktions-Caches 903, der FCM 911 und der BIU 906 aus Gründen der Vereinfachung kollektiv gezeigt.
  • Zuerst, wenn es eine Leseanforderung vom Kern 902 gibt, sendet der Instruktions-Cache 903 die Leseanforderung für den Ziel-Adressblock zur BIU 906. Die Leseanforderung enthält Informationen bezüglich einer Anforderungs-ID, Vorhandensein/Abwesenheit des Schutzes, eines Zieladressenbereichs und einer Anforderungs-Quell-ID.
  • Hier wird bewertet, ob die Zieladresse und der mit der Cache-Linie assoziierte Adress-Tag, der in den Cache gelesen wird, übereinstimmen oder nicht (S501). Wenn die absoluten Adressen nicht übereinstimmen (S501 NEIN), wird dies als Cache-Fehltreffer angesehen und die Akquisition der Offset-Adresse entsprechend der Leseanforderungs-Task-ID wird neu gestartet. Die Offset-Adresse wird aus einem Eintrag entsprechend der derzeitigen Task-ID in der Offset-Tabelle 1207 ermittelt (S502).
  • Als nächstes wird die relative Adresse aus dem ermittelten Offset-Wert berechnet. Die relative Adresse wird durch Subtrahieren des Offset-Werts von der Speicheradresse erhalten (S503). Man beachte, dass, wenn es einen Zugriff auf den Cache-Speicher während der Ausführung der geschützten Task gibt, der Instruktions-Cache 903 die Berechnung der relativen Adresse parallel zum Zugriff auf den Cache-Speicher ausführt.
  • Der Instruktions-Cache 903 sendet den erhaltenen relativen Adresswert und die Task-ID über den internen Bus 905 an die Schlüsselwert-Tabelle (KVT) 912. Zu diesem Punkt wird die Anforderungs-ID angeheftet. Die KVT 912 ermittelt einen Wert des Schlüssels entsprechend der Task-ID aus der Task-Schlüssel-Tabelle 1303 und sendet den Schlüsselwert und den Offset-Wert an das Schlüsselerzeugungs-Modul 1312 des schnellen Verschlüsselungs-Schlüsselverarbeitungs-Moduls (FCM) 911 über den Kanal 1316. Zum selben Zeitpunkt sendet die KVT 912 den Offset-Wert, die Anforderungs-ID und die Anforderungs-Quellen-ID über den Kanal 1317 an das Verschlüsselungs-Verarbeitungs-Modul 1313 des FCM 911.
  • Wenn der Schlüsselwert und der Offset-Wert aus der KVT 912 empfangen werden, beginnt das Schlüsselerzeugungs-Modul 1312 des FCM 911 unmittelbar mit der Berechnung des Schlüssels entsprechend diesem Block. Es wird nämlich ein durch Addieren des relativen Adresswertes zur Geheim-Konstante Cx des Programms ein Zwischenwert erhalten (S504) und der erhaltene Zwischenwert wird unter Verwendung des Geheimnisschlüssels Kx des Programmes verschlüsselt, um den Blockentsprechungsschlüssel zu erzeugen, der dem Block des Programms entspricht (S505).
  • Diese Schlüsselberechnung ist die Verschlüsselungs-Verarbeitung, so dass sie die Zeit einer Mehrzahl von Zyklen erfordert. Um die Kalkulation effizient auszuführen, wird das Schlüsselerzeugungs-Modul 1312 mit einer Mehrzahl von Schlüsselerzeugungseinheiten 1312-1 bis 1312-3 versehen und der Abwickler 1311 leitet die Verarbeitungsanfrage an die vakante Schlüsselerzeugungs-Einheit weiter. Wenn eine Anforderung durch eine Mehrzahl der Verschlüsselungs-Blöcke gebildet wird, werden die Schritte S502 bis S505 durch Inkrementieren des relativen Adresswerts wiederholt, bis die Schlüssel entsprechend allen Verschlüsselungsblöcken erzeugt sind.
  • Andererseits puffert die BIU 906 das Ergebnis des Lesens aus dem externen Speicher, bis es die Daten in einer Größe des Verschlüsselungsblocks wird. Wenn die ungeschützten, nicht verschlüsselten Daten ab dem Anfang angefordert werden, werden die Daten direkt zum Anforderungs-Quell-Instruktions-Cache gesendet, aber in dieser Ausführungsform ist es die Anforderung nach verschlüsselten Daten, so dass das Ergebnis des Lesens an den FCM 911 gesendet wird. Das Verschlüsselungs-Verarbeitungs-Modul 1313 des FCM 911 entschlüsselt die von der BIU 906 gelieferten Daten unter Verwendung des vom Schlüsselerzeugungs-Modul 1312 erzeugten Blockverschlüsselungs-Schlüssels (S506).
  • Die Entschlüsselung erfordert die Zeit einer Mehrzahl von Zyklen, so dass, wenn der nächste Verschlüsselungs-Block, der die Cache-Linie bildet, eintrifft, bevor die vorherige Entschlüsselungs-Verarbeitung abgeschlossen ist, eine andere Verschlüsselungs-Verarbeitungs-Einheit alloziert wird und die Verarbeitungen parallel ausgeführt werden. 10 zeigt nur die Verschlüsselungs-Verarbeitungs-Einheiten 1313-1 bis 1313-3, aber durch Vorbereiten einer ausreichenden Anzahl an Verschlüsselungs-Verarbeitungs-Einheiten wird es möglich, die Entschlüsselungs-Verarbeitung auszuführen, ohne Verzögerungen zu verursachen, selbst wenn die Daten in kürzeren Intervallen als der Verarbeitungszyklus der Verschlüsselungs-Verarbeitungs-Einheiten eintreffen.
  • Der Block, für den die Entschlüsselung abgeschlossen ist, wird über den internen Bus unmittelbar zum Anforderungs-Quell-Instruktions-Cache 903 gesendet. Der Instruktions-Cache 903 speichert die Daten in dieser Cache-Linie und wenn alle Daten, die die Cache-Linie bilden, empfangen sind, schreibt der Instruktions-Cache 903 eine Anzeige, dass die Linie gültig ist, eine Anzeige, dass Verschlüsselung angewendet ist, und die ausgeführte Task-ID in den Cache-Tag (S507).
  • Wenn die Cache-Linie gültig wird, liest der Kern 902 die Daten aus dieser Cache-Linie und nimmt die Ausführung des Programms wieder auf (S508).
  • Als nächstes wird der Fall erwogen, bei dem die Zieladresse und der Adress-Tag (absoluter Adressanteil) der Cache-Linie bei S501 übereinstimmen, das heißt der Fall, wo die Task B, die eine andere Task-ID als die Task A hat, die ausgeführt worden ist, unabsichtlich einen Zugriff auf denselben Speicherbereich gemacht hat und die Cache-Linie ein Treffer ist. Die Tatsache, dass die absolute Adresse des Caches getroffen ist, impliziert, dass die Task B Zugriffsrecht in Bezug auf den Speicher an dieser Adresse im Sinne des konventionellen Ressourcen-Managements hat.
  • In diesem Fall vergleicht die Zugriffs-Prüfeinheit 1205 des Instruktions-Caches 903 weiterhin den Wert des aktuellen Task-ID-Registers 1204 und des mit dieser Cache-Linie assoziierten Task-ID Tags (S509). Wenn sie nicht übereinstimmen, das heißt, wenn das aktuelle Task-ID-Register 1204 "B" ist, aber die Task-ID des Cache-Linien-Tags "A" ist und seine Verschlüsselungs-Charakteristik anzeigt, dass es beispielsweise eine verschlüsselte Linie ist (S509 NEIN), wird der Cache gelöscht und die Schritte S502 bis S507 werden in Bezug auf die Task-ID der Task B wiederholt. Das heisst, es wird die relative Adresse aus der Offset-Adresse der Task B berechnet und das Ergebnis der Entschlüsselung der Daten des externen Speichers entsprechend der Cache-Linien-Adresse unter Verwendung des Programmschlüssels der Task B wird in diese Cache-Linie eingelesen.
  • Wenn die Programmschlüssel der Task A und der Task B übereinstimmen, werden diese Tasks nur dasselbe Programm ausführen, selbst wenn sie getrennt eingelesen werden, aber wenn der Schlüssel, der ursprünglich beim Verschlüsseln der Daten des externen Speichers verwendet worden ist, der Programmschlüssel Task A ist und der Schlüssel der Task B sich davon unterscheidet, wird die Task B ein unsinniges Programm ausführen, das sich von dem beabsichtigten Programm unterscheidet, so dass die bezweckte Attacke nicht geführt werden kann.
  • Wenn andererseits der Wert des aktuellen Task-ID-Registers 1204 und des Task-ID-Tags der Cache-Linie übereinstimmen (S509 JA), wird der Inhalt der angeforderten Adresse an den Kern 902 gesendet (S508).
  • Auf diese Weise, wenn die Cache-Linie wieder von einer anderen Task während der Ausführung einer Task eingelesen wird, wird der Inhalt des externen Speichers in die Cache-Linie eingelesen, indem er unter Verwendung eines anderen Schlüssels als des beabsichtigten Schlüssels verschlüsselt wird. Das Programm, das das Ergebnis der Verschlüsselung durch Verwendung eines anderen als des beabsichtigten Schlüssels ausführte, wird offensichtlich nicht die normalen Operationen durchführen.
  • Diese Kontrolle kann nicht durch die Privilegien des BS überschrieben werden. Falls das BS frei die Task-Schlüsseltabelle 1303 bedienen kann, würde es möglich sein, die Geheimnisse des anderen Programms zu ermitteln, aber in der vorliegenden Erfindung sind die Fälle, bei denen das BS die Operationen der Geheimnis-Information und die Task-Zustands-Verwaltung, wie durch die Registrierung des Programmschlüssel repräsentiert, ausführen kann, auf die Erteilung einer Reihe von Task-Steuerkommandos beschränkt, wie in 5 gezeigt. Folglich kann im Mikroprozessor der vorliegenden Erfindung das Programm oder die Daten der Applikation nicht korrekt ausgeführt oder eingelesen werden, wenn nicht der Schlüssel entsprechend jedem Block des Programms oder der Daten der Anmeldung bekannt ist, selbst vom BS mit den Privilegien bezüglich der Ressourcen.
  • Mit diesem Mechanismus ist es möglich, eine Mehrparteien-Programmschutzumgebung bereitzustellen, welche die Unabhängigkeit des Anwendungsprogramms garantiert.
  • Man beachte, dass die obige Beschreibung aussagte, dass die rasche Entschlüsselungs-Verarbeitung durch eine Mehrzahl der Verschlüsselungs-Verarbeitungs-Einheiten 1313 in Relation zu S506 möglich ist, aber kein Bedarf besteht, eine Mehrzahl an Verschlüsselungs-Verarbeitungs-Einheiten bereitzustellen, falls eine einzelne Verschlüsselungs-Verarbeitungs-Einheit einen hinreichenden Durchsatz hat. Beispielsweise ist es für die durch die Repetition derselben Art von Operationen wie bei DES gebildete Verschlüsselungs-Verarbeitung bekannt, dass ein hoher Durchsatz durch Handhaben der Verarbeitung durch Pipelines erhalten werden kann.
  • Jedoch erfordert die Implementierung von solchen Pipelines hohe Kosten wegen der Hardware-Skalierung und der Schwierigkeit beim Design. Auch erfordert die Verschlüsselungs-Verarbeitungs-Einheit, die in Form von generell verfügbarem IP bereitgestellt wird, ein anspruchsvolles Know-how und Zeit für den Entwurf, so dass das Entwerfen der für die erforderliche Verarbeitungsleistung bei jeder Gelegenheit geeigneten Verschlüsselungs-Verarbeitungs-Einheit eine signifikant schwere Bürde sein kann. Wenn die verschiedenen Bedingungen berücksichtigt werden sollen, ist es vorteilhaft, eine Mehrzahl der existierenden Verschlüsselungs-Verarbeitungs-Einheiten parallel zu betreiben, wie bei dieser Ausführungsform, hinsichtlich eines Standpunkts der Flexibilität des Entwurfs. Auch ist es bei der Reduktion der Gesamtkosten einschließlich der Hardware-Entwurfskosten effektiv.
  • 3. Ausführungs-Verarbeitung am Daten-Cache:
  • Als nächstes wird der Betrieb des Daten-Caches beschrieben. Der Schutz solcher Daten wie etwa der Initialisierungsdaten und des Arbeitsbereichs (Stack) kann durch Anwenden des Verschlüsselungsschutzes unter Verwendung eines beliebigen Verschlüsselungsschlüssels auf die dynamisch von der Task gesicherten Datenbereiche realisiert werden. Es ist möglich, eine Mehrzahl von geschützten Bereichen, wie etwa den Initialisierungs-Datenbereich, den Arbeitsbereich, den dynamischen Bereich etc. zu definieren und entsprechend unterschiedliche Schlüssel zu setzen. Beispielsweise liegen im Falle der Initialisierungsdaten die bereits verschlüsselten Daten im externen Speicher vor und das Procedere zu ihrem Auslesen und Entschlüsseln kann dasselbe sein wie im Falle des Programms grundsätzlich.
  • Im Falle des oben beschriebenen Programms (Ausführungs-Codes) wird das Verschlüsselungs-Attribut durch Vergleichen der aktuellen Task-ID und der Task-ID des Cache-Tags im Instruktions-Cache 903 bewertet, aber im Falle der Daten unterscheidet sie sich dahingehend, dass das Verschlüsselungs-Attribut durch Vergleichen der aktuellen Task-ID und des MTRR (Adressbereich-Register) bewertet wird.
  • Wenn es einen Datenzugriff gibt, wird das Zugriffs-Attribut in der MTRR-Tabellen-Verwaltung und Vergleichseinheit 1402 des Daten-Caches 904, gezeigt in 11, beurteilt. Genauer gesagt, wenn die aktuelle Task-ID und die Zieladresse in die MTRR-Tabellenverwaltung und die Vergleichseinheit 1402 eingegeben werden, werden der Adressbereich der Einträge (0 bis 3) der MTRR-Tabelle 1403 entsprechend der Task-ID und die Zieladresse verglichen.
  • Falls es nur einen MTRR-Eintrag gibt, der passt, werden seine Attribute unbedingt übernommen und ein Satz der Task-ID und der MTRR-Eintritts-ID wird das Verschlüsselungs-Attribut dieses Speicherzugriffs.
  • Falls die MTRR-Einträge überlappende Adressbereiche haben, so dass die Zieladresse zu den Adressbereichen einer Mehrzahl von MTRR-Einträgen passt, wird ein MTRR gemäß der für den MTRR vorab definierten Prioritäts-Reihenfolge ausgewählt und er wird für das Verschlüsselungs-Attribut dieses Speicherzugriffs verwendet.
  • Das durch die MTRR-Tabellenverwaltungs- und Vergleichseinheit 1402 auf diese Weise bestimmte Speicherzugriffs-Attribut wird vorübergehend im Lesedatenschlüssel-ID-Register 1412 der Verschlüsselungs-Attribut-Ausgabeeinheit 1411 im Falle des Datenlesens gespeichert. Auch wird in der MTRR-Tabellenverwaltungs- und Vergleichseinheit 1402 der relative Adresswert aus der Anfangs-Adresse des MTRR-Eintrags, der traf, und der Zieladresse des Speicherzugriffs berechnet.
  • Dieses Speicherzugriffs-Attribut und relativer Adresswert werden über den internen Bus 905 zur Schlüsselwert-Tabelle (KVT) 912 gesendet, wie im Falle des Zugriffs auf den Programmspeicher.
  • Diese Sequenz, mit der der Daten-Cache das Datenlesen an die BIU 906 anfordert, das Speicherzugriffs-Attribut zur KVT 912 gesendet wird, die Daten zum FCM 911 gesendet und dort entschlüsselt und zum Daten-Cache zurückgeschickt werden, ist derselbe wie im Falle des Instruktions-Caches.
  • Schließlich werden das Speicherzugriffs-Attribut und der relative Adresswert in den Cache-Tag geschrieben und das Lesen in den Cache wird abgeschlossen.
  • Als nächstes werden das sich auf asynchrones Schreiben in den Daten-Cache in dem Fall, dass er einen Adress-Umwandlungsmechanismus aufweist, und einen Mechanismus zum Lösen dieses Problems in dieser Ausführungsform beschrieben.
  • 14 zeigt eine Datenstruktur des Daten-Caches in dieser Ausführungsform. Der Daten-Cache-Speicher 1431 wird durch 256 Linien 1501-0 bis 1501-255 gebildet. Jede Linie (beispielsweise Linie 0) hat einen Linienpuffer 1501-0-0 zum Speichern des Inhalts des externen Speichers, ein absolutes Adress-Tag 1501-0-1, einen relativen Adresswert 1501-0-2, einen Task-Identifizierer 1501-0-3, einen MTRR-Identifizierer 1501-0-4 und einen Flag-Bereich 1501-0-5.
  • Der Daten-Cache 904 unterscheidet sich vom Instruktions-Cache 903 dahingehend, dass Fälle vorkommen können, wo die Daten temporär im externen Speicher zu einem Zeitpunkt des Daten-Zurückschreibens gesichert werden, das heißt zu einem Zeitpunkt der Unterbrechung etc.
  • Die durch eine Task A gelesene Cache-Linie wird nicht notwendigerweise zum externen Speicher zurückgeschrieben, indem sie während der Ausführung der Task A geflasht wird. Es gibt auch die Möglichkeit, während der Ausführung einer anderen Task B geflasht zu werden. In dem Fall, dass der Prozessor einen Adress-Umwandlungsmechanismus aufweist, ist es möglich, unterschiedliche Speicher-Maps für verschiedene Tasks zu haben, so dass die absoluten Speicheradresse der Cache-Linie nicht eindeutig aus der virtuellen Adresse bestimmt werden kann.
  • Konventionellerweise wird dieses Problem durch Bereitstellen eines Absolut-Adress-Tags 1501-0-1 im Cache-Tag und geben der absoluten Adress-Speicherinformation, so dass die Speicheradresse der Cache-Linie bestimmt werden kann, unabhängig davon, welche Task aktuell ausgeführt wird.
  • Wenn jedoch die Verschlüsselung, die einen block-entsprechenden Schlüssel der vorliegenden Erfindung verwendet, auf diesen Mechanismus angewendet wird, tritt jedoch das folgende Problem auf. Wie oben beschrieben, wird der block-entsprechende Schlüssel aus dem Relativ-Adresswert erzeugt, der eine Differenz zwischen der virtuellen Adresse der Cache-Line und dem Offset-Wert ist. Im Allgemeinen kann dieser relative Adresswert nicht aus der absoluten Adresse erzeugt werden, so dass die Datenverschlüsselung nicht zu einem Zeitpunkt des Zurückschreibens des Caches ausgeführt werden kann.
  • Bei dieser Ausführungsform wird dieses Problem der Verschlüsselung zum Zeitpunkt des Zurückschreibens durch Bereitstellen eines Tags 1501-0-2 zum Speichern des relativen Adresswerts im Cache-Tag des Daten-Cache-Speichers 1431 und Speichern des relativen Adresswerts, der zu einem Zeitpunkt des Sicherstellens dieser Cache-Linie gegeben ist, gelöst. Das Schreiben des Tags wird zu einem Zeitpunkt der Bestimmung des Verschlüsselungs-Attributs dieser Cache-Linie ausgeführt.
  • Als ein anderes Verfahren kann eine ähnliche Funktion durch Speichern der virtuellen Adresse im Cache-TAG realisiert werden. Zu einem Zeitpunkt des Ausführens des asynchronen Zurückschreibens des Caches wird die Speicherbereichs-Information in der MTRR-Tabelle 1403 gespeichert, so dass es hinreicht, den relativen Adresswert durch Ermitteln der Offset-Informationen des MTRR aus der virtuellen Adresse und dem Task-Identifizierer zu berechnen.
  • Im Daten-Cache 904 ist es neben den Initialisierungsdaten und dem durch den Verteilungsschlüssel bestimmten Arbeitsbereich möglich, zwei Datenbereiche hinzuzufügen. Diese Bereiche werden durch die MTRR(Adressbereich-Register)-IDs 2 und 3 spezifiziert.
  • Das Hinzufügen des Datenbereichs wird ausgeführt, wenn die Task ein spezielles "setkey" genanntes Kommando erteilt. Der Daten-Verschlüsselungsschlüssel, die ergänzende Konstante, der Speicherbereich und die MTRR-ID werden in einem vorgegebenen Register des Prozessors gespeichert, und das "setkey"-Kommando wird erteilt. Das "setkey"-Kommando ist nur für das Datenverschlüsselungs-Attribut der eigenen Task-ID gültig, so dass es keinen Bedarf gibt, die Task-ID im Kommando explizit zu spezifizieren.
  • Das "setkey"-Kommando wird innerhalb des Kerns 902 ausgeführt, indem es in die zwei Schritte eines Zugriffs auf die MTRR-Tabelle 1403 des Daten-Caches 904 und einem Zugriff auf die Daten-Schlüsseltabelle 1305 der Schlüsselwert-Tabelle 912 zerlegt wird.
  • Im Anfangszustand der Task sind die MTRR (Adressbereich-Register)-IDs 2 und 3 in einem ungültigen Zustand, das heißt in einem Zustand, in dem die Adressbereichs-Größe 0 ist. In diesem Zustand kann kein Speicherzugriff zum Adressbereich passen.
  • Wenn das "setkey"-Kommando erteilt wird, wird zuerst die Daten-Cache-Linie, die zur Task-ID und zur MTRR-ID passt, geflasht.
  • Als nächstes wird der Verschlüsselungsschlüssel in einen durch die Task-ID und die MTRR-ID indizierten Eintrag in der Datenschlüssel-Tabelle 1305 der Schlüsselwert-Tabelle 912 geschrieben.
  • Als nächstes wird der Adressbereich in einen durch die spezifizierte Task-ID und die MTRR-ID indizierten Eintrag in der MTRR-Tabelle 1403 des Daten-Caches 904 geschrieben.
  • Wenn die Adressbereichs-Größe des MTRR 0 übersteigt, wird ihre Verschlüsselungs-Spezifikation gültig. Danach folgt das Schreiben der zusätzlichen Daten wie im Falle der Initialisierungsdaten.
  • Um die MTRR-Einstellung zu ändern, das heißt das Attribut des Datenbereichs zu ändern, wird das "setkey"-Kommando wieder erteilt. Wie oben beschrieben, wenn das "setkey"-Kommando erteilt wird, werden die Linien im Cache, die der MTRR-ID entsprechen, alle geflasht und zu dem externen Speicher herausgeschrieben. Danach wird die neue Einstellung in die Datenschlüssel-Tabelle 1305 und die MTRR-Tabelle 1403 geschrieben und es wird das Lesen/Schreiben gemäß der neuen Einstellung begonnen.
  • Die verschlüsselten Daten, die einmal zum externen Speicher zurückgeschrieben und gespeichert werden, können nur korrekt ausgelesen werden, wenn der Verschlüsselungsschlüssel Kx, die supplementäre Konstante Cx und die Offset-Adresse mit den zuvor verwendeten übereinstimmen. Selbst falls der Verschlüsselungs-Schlüssel und die supplementäre Konstante übereinstimmen, kann, falls die Offset-Adresse nicht übereinstimmt, der korrekte Wert nicht entschlüsselt werden. Diese Tatsache ist beim Lesen/Schreiben der Plattendaten und des gemeinsamen Speichers, der zwischen den Tasks zu teilen ist, wichtig. Aus diesem Grund werden, wenn das "setkey"-Kommando ausgeführt wird, die entsprechenden Cache-Linien unbedingt geflasht.
  • In Gegensatz dazu, selbst wenn ein Datenbereich zu einem Bereich einer anderen absoluten Speicheradresse im externen Speicher kopiert wird, können solange, wie der die oberste Adresse des MTRR spezifizierende Bereich in Übereinstimmung mit einer bewegten Adresse eingestellt ist, die Originaldaten korrekt unter der Bedingung gelesen werden, dass der Verschlüsselungsschlüssel und die supplementäre Konstante übereinstimmen.
  • Auf diese Weise kann bei dieser Ausführungsform selbst bei der Datenverschlüsselung das individuelle Verschlüsselungs-Schlüsselschema in Einheiten von Blöcken für den Zweck des Verhinderns der Blockaustausch-Attacke und des Speicher-Rearrangement (Relokation) kompatibel gemacht werden, ohne jeglichen Widerspruch zu verursachen.
  • <Suspension der Task>
  • Im Multi-Tasking-BS wird die Ausführung der Task oft durch eine Unterbrechung suspendiert. Nach Unterbrechung wird der Unterbrechungs-Handler des BS ausgeführt und gemäß Bedarf wird entweder die Ausführung zu einer anderen Task umgeschaltet oder die Ausführung wird ohne Umschalten der Task zur ursprünglichen Task zurückgegeben.
  • Im Prozessor dieser Ausführungsform wird, wenn es eine Unterbrechungsaufforderung vom Unterbrechungs-Controller gibt, die Ausführung der geschützten Task unterbrochen und die Ausführung des Unterbrechungs-Handlers an der vom Unterbrechungs-Vektor spezifizierten Adresse gestartet. Das heißt, die Registerwerte (Kontext-Informationen) der geschützten Task, die bislang verwendet worden ist, werden im Register-Puffer (Feld) 915 des Kerns 902 vom Unterbrechungs-Handler gesichert und vor einem Lesen durch andere Tasks einschließlich des BS geschützt. Durch diese Unterbrechung macht der Wert der Task-Zustandstabelle 921 einen Übergang von RUN zu STOPPED, wie in dem Zustandsübergang von 6 gezeigt.
  • Im STOPPED-Zustand belegt der Kontext der suspendierten Task den Register-Puffer 915 des Kerns 902, aber wenn ein SUSPEND-Kommando (Task-Ausführzustands-Speicherkommando) in diesem Zustand erteilt wird, wird der Inhalt des Register-Puffers in einem durch das SUSPEND-Kommando spezifizierten Speicherbereich gespeichert und der Task-Zustand macht einen Übergang zu SUSPEND. Der Unterbrechungs-Handler kann den Inhalt des Register-Puffers nicht auslesen, aber der Unterbrechungs-Handler kann den Inhalt des Register-Puffers gemeinsam in den Speicher speichern.
  • In dem Fall, bei dem die Unterbrechungs-Verarbeitungszeit lang ist, oder dem Fall, bei dem ein Task-Umschalten auftritt, wird der Inhalt des Register-Puffers im Cache- Speicher gespeichert. Es kann auch den Fall geben, bei dem eine gespeicherte Kontext-Information weiter zum externen Speicher ausgeschrieben wird. In diesem Fall wird die Kontext-Information an den externen Speicher ausgeschrieben, nachdem sie unter Verwendung eines vorgegebenen Kontext-Schlüssels verschlüsselt wurde.
  • Um die Task im SUSPEND (gespeicherten)-Zustand wieder aufzunehmen, wird ein "resume"-Kommando durch Spezifizieren der Task-ID und der Speicheradresse der Kontext-Information erteilt, wie in den 5 und 6 gezeigt.
  • Um die Task aus dem STOPPED-Zustand (ein Zustand, in dem die Registerwerte nicht gespeichert, sondern lediglich gesichert sind) wieder aufzunehmen, wird das "continue"-Kommando erteilt. Beispielsweise werden in dem Fall, bei dem die Unterbrechungs-Verarbeitung rasch beendet wird und ein Task-Umschalten nicht auftritt, oder beim Zähler-Inkrementier-Verarbeiten des Software-Timers die Registerwerte, die bislang verwendet wurden, nicht gespeichert, sondern lediglich im Register-Pufferfeld 915 gesichert. In diesem Fall werden die Registerwerte aus dem Register-Puffer wiedergewonnen und die Ausführung der Task vor Unterbrechung wird wieder aufgenommen. Der Task-Zustand kehrt von STOPPED zu RUN zurück.
  • 15 zeigt den Verarbeitungsfluss, wenn das "suspend"(Task-Zustandsspeicher)-Kommando erteilt wird.
  • Als erstes, wenn das "suspend"-Kommando erteilt wird, wird Bezug genommen auf die Task-Zustandstabelle 921 und es wird beurteilt, ob der spezifizierte Task-Zustand STOPPED ist oder nicht (S601). Wenn er nicht STOPPED ist (S601 NEIN), impliziert dies, dass die bislang verwendeten Registerwerte nicht im Register-Puffer (Bereich) 915 des Kerns 902 gespeichert sind, so dass das in diesem Zustand erteilte "suspend"-Kommando ungültig wird und der Task-Zustand wird auf INVALID gesetzt (S605).
  • Wenn der spezifizierte Task-Zustand STOPPED ist (S601 JA), wird der Inhalt des Register-Pufferbereichs 915 in den Speicherbereich der durch das "suspend"-Kommando spezifizierten Adresse geschrieben und das Speichern wird begonnen (S602).
  • Das Speichern wird grundsätzlich als Speichern in den Cache realisiert und die ID der bis dahin ausgeführten Task dann durch den Task-Kanal 916, bevor das Speichern beginnt, wird im Speicherablauf-Kontext-Identifizier-Register 1434 des Daten-Caches gehalten. Dann wird die Cache-Linie zum Schreiben der Kontext-Information im Daten-Cache-Speicher 1431 gesichert und der Datentransfer wird begonnen. Wann immer das Schreiben der Linie abgeschlossen ist, werden der den Kontext anzeigende Identifizierer und die Task-ID in den Tag der Cache-Linie geschrieben.
  • Das Speichern der Kontext-Information überschreibt den ursprünglichen Speicherinhalt vollständig. Die Kontext-Information hat eine Größe, die ein ganz-zahliges Vielfaches der Cache-Linien-Größe ist und ihre oberste Adresse ist immer an der Cache-Linien-Größe ausgerichtet, so dass der normalerweise benötigte Vorgang (Schreib-Allozierung) zum Auslesen des Speicherinhalts vor dem Schreiben unnötig wird.
  • Dann wird der Hash-Wert des gesamten Inhalts des Register-Puffers in der Hash-Berechnungs-Einheit 922 des Kerns 902 berechnet und der Hash-Wert wird am Ende der Registerinformation im Speicher zusammen mit der Task-ID angehängt (S603). In dem Fall, in dem viele Linien involviert sind, berechnet der Task-Umschalter (STS) 914 des Kerns 902 den Hash, während er die Information des Register-Pufferbereichs 915 sequenziell in die Cache-Linien schreibt. Wenn die Task-ID und der Hash-Wert am Ende des Kontextbereichs geschrieben werden und der TAG angehängt wird, wird die Ausführung des "suspend"-Kommandos abgeschlossen und der Task-Zustand macht einen Übergang zu SUSPEND (S604).
  • Die gespeicherte Kontextinformation wird zum externen Speicher 108 asynchron in Bezug auf die Ausführung der Task herausgeschrieben. Zu einem Zeitpunkt des Herausschreibens zu dem externen Speicher unterscheidet sich die Handhabung der Kontextinformation von der der anderen Informationen in zwei Punkten. Der eine ist die Handhabung des relativen Adresswertes und der andere ist ein Unterschied bei der Leseverarbeitung.
  • Die Kontextinformation wird durch eine Mehrzahl von Blöcken gebildet, aber es wird derselbe Wert als relativer Adresswert verwendet und der relative Adresswert ist durch eine vorgegebene Konstante gegeben. Dies liegt daran, dass die Kontextinformation den daran angehängten Hash-Wert hat, so dass sie bereits resistent gegenüber Blockaustausch ist. Wenn die Cache-Linie, in der die Kontextinformation gespeichert ist, zu flashen ist, wird das extrahierte Verschlüsselungs-Attribut vorübergehend im Schreibkontext-Schlüssel-ID-Register 1415 gespeichert. Die nachfolgende Verarbeitung ist dieselbe wie im Falle des Herausschreibens des Daten-Caches.
  • 16 zeigt den Prozessfluss zu einem Zeitpunkt der Wiederaufnahme der Task aus den gespeicherten Kontextinformationen.
  • Zuerst, wenn das "resume"-Kommando unter Verwendung der Task-ID und der Speicherungs-Speicheradresse als Parameter erteilt wird, um die Ausführung der Task durch Einlesen der gespeicherten Kontextinformationen wieder aufzunehmen, wird beurteilt, ob der spezifizierte Task-Zustand SUSPEND ist oder nicht (S701). Wenn sie nicht im SUSPEND-Zustand ist (S701 NEIN), wird die Kontextinformation nicht gespeichert, so dass der Task-Zustand auf INVALID gesetzt wird (S707). Anders ausgedrückt, ist das "resume"-Kommando ungültig, wenn der Task-Zustand in einem anderen Zustand als SUSPEND ist.
  • Wenn er im SUSPEND-Zustand ist (S701 JA), werden die Adresse und die Task-ID zum Daten-Cache 904 über die Adresslinie bzw. den Task-Kanal gesendet. Wenn die Adresse des Cache trifft und der Tag anzeigt, dass der Kontext und die Task-ID übereinstimmen, werden die Daten im Cache-Speicher 1431 zum Register-Puffer übertragen und wird die Task-Wiederaufnahme-Verarbeitung gestartet (S702).
  • Parallel zur Datenübertragung zum Register-Puffer wird die Hash-Berechnung ausgeführt (S703). Es wird beurteilt, ob der kalkulierte Hash-Wert mit dem erwarteten Wert übereinstimmt oder nicht (S704), und falls sie nicht übereinstimmen, wird die Wiederaufnahme-Verarbeitung unterbrochen und es wird der Task-Zustand auf INVALID gesetzt (S707).
  • Wenn der Hash-Wert übereinstimmt (S704 JA), wird die ID der spezifizierten Task auf das aktuelle Task-Register gesetzt (S705), der Task-Zustand macht einen Übergang zu RUN und die Ausführung wird wieder aufgenommen (S706).
  • Obwohl im Verarbeitungsfluss von 16 nicht beschrieben, ist der Fall, bei dem der Cache für den Bereich der durch das "resume"-Kommando spezifizierten Kontextinformationen nicht trifft, der Fall, bei dem die gespeicherten Daten zum externen Speicher herausgeschrieben werden. In diesem Fall wird das Datenlesen aus dem externen Speicher gestartet. Das heißt, die im Task-ID-Register 1401 gehaltene Task-ID und die Leseanforderung für den Speicher entsprechend der durch das "resume"-Kommando spezifizierten Adresse werden aus dem Daten-Cache 904 zur BIU 906 gesendet. Dann werden die Task-ID und das den Kontext anzeigende Verschlüsselungs-Attribut zur Schlüsselwert-Tabelle 912 gesendet und der Schlüssel zur Entschlüsselung wird in FCM 911 erzeugt. Die Kontextinformation der zu irgendeinem Zeitpunkt gespeicherten Task wird unter Verwendung desselben Schlüssels vollständig verschlüsselt, so dass die Schlüsselerzeugung in Einheiten von Blöcken hier nicht ausgeführt wird.
  • Die Blöcke, für welche die Entschlüsselung abgeschlossen ist, werden sequenziell zum Daten-Cache 904 gesendet und der Task-Umschalter (STS) 914 liest ihre Inhalte in den Register-Pufferbereich 915. Die nachfolgende Verarbeitung ist die gleiche wie im Falle des Cache-Treffers.
  • <Beendigung der Task>
  • Um die Task zu beenden und die allozierte Task-ID und die verschiedenen Tabellen innerhalb des Prozessors zum Nutzen einer anderen neuen Task wieder zu verwenden, wird das "delete"-Kommando durch Spezifizieren der Task-ID erteilt. In dieser Ausführungsform kann die Task-ID der Task, die einmal registriert ist, nicht zum Nutzen einer neuen Task verwendet werden, während das System arbeitet, um ein illegales Ausspionieren des Inhalts der Task bis dahin zu verhindern.
  • 17 zeigt den Verarbeitungsfluss im Falle der Task-Löschung.
  • Zuerst, wenn das "delete"-Kommando in Bezug auf die Task erteilt wird, wird beurteilt, ob der Zustand der spezifizierten Task einer von INIT, STOPPED oder SUSPEND ist oder nicht (S801). Wenn der Task-Zustand nicht in einem der obigen Zustände ist (das heißt, wenn der Task-Zustand RUN oder NULL ist), wird der Task-Zustand auf INVALID gesetzt (S805) und wird als ein Fehler behandelt.
  • Wenn der Task-Zustand in einem der obigen Zustände ist (S801 JA), werden die Cache-Linien mit dem Tag entsprechend der spezifizierten Task geflasht (S802).
  • Als Ergebnis werden die entsprechenden Schlüsseltabellen 1303 bis 1305, die Offset-Tabelle 1207 des Instruktions-Caches und die MTRR-Tabelle 1403 des Daten-Caches ebenfalls gelöscht (S803).
  • Wenn diese Vorgänge abgeschlossen sind, wird der Task-Zustand auf NULL gesetzt (S804).
  • Das "delete"-Kommando soll eher vom BS als der Task selbst erteilt werden und das "delete"-Kommando kann nur in Bezug auf eine Task in einem anderen Zustand als RUN und NULL erteilt werden.
  • Wenn die Task gelöscht wird und der Task-Zustand zum NULL-Zustand wird, ist es möglich, eine neue Task auszuführen, indem der Verteilungsschlüssel unter Verwendung des "register"-Kommandos wieder registriert wird.
  • Wie beschrieben, wird das Programm gemäß der vorliegenden Erfindung in Einheiten von Blöcken durch ein einfaches Verfahren anhand einer kleinen Anzahl von Geheimnissen verschlüsselt/entschlüsselt, so dass es möglich wird, eine Blockaustausch-Attacke zu verhindern, und es möglich wird, die Ressourcen-Verwaltung und Verarbeitungslasten sowohl auf Seiten des Softwareanbieters als auch auf Seiten des Mikroprozessors zu mindern.
  • Auch wird gemäß der vorliegenden Erfindung die relative Adresse basierend auf dem virtuellen Speicherraum für die block-entsprechende Verschlüsselung verwendet, so dass es möglich wird, das Problem der Relokation effizient zu behandeln.
  • Auch werden gemäß der vorliegenden Erfindung die Schlüsselwert-Tabelle und das Schnellverschlüsselungs-Schlüsselverarbeitungs-Modul zwischen den Caches geteilt, so dass es möglich wird, die Hardware-Kosten zu verringern.
  • Es sollte auch angemerkt werden, dass neben den bereits oben erwähnten viele Modifikationen und Variationen der obigen Ausführungsformen gemacht werden können, ohne von den neuartigen und vorteilhaften Merkmalen der vorliegenden Erfindung abzuweichen. Dementsprechend sollen alle solchen Modifikationen und Variationen als innerhalb des Schutzumfangs der anhängigen Ansprüche beinhaltet sein.

Claims (12)

  1. Mikroprozessor, umfassend: eine Task-Zustandstabelle (921), die dafür konfiguriert ist, einen Task-Identifizierer einer Task zuzuweisen, die irgendeinen aus einer Mehrzahl von Zuständen annehmen kann, und der Task entsprechend dem Task-Identifizierer einen Zustand zuzuweisen; ein Task ID-Register (1302), das dafür konfiguriert ist, den Task-Identifizierer einer aktuell ausgeführten Task zu speichern; eine Schnittstelle (906), die dafür konfiguriert ist, ein Programm (109) in Einheiten von Cache-Linien auszulesen, wenn eine Anforderung bezüglich der Task gemacht wird, wobei das Programm (109) in einer verschlüsselten Form gespeichert ist, die durch Verwenden eines Programmschlüssels (124) auf einem externen Speicher (907; 108) erhalten wird; eine Verschlüsselungs-Verarbeitungs-Einheit (911), die dafür konfiguriert ist, Entschlüsselungs-Schlüssel zu erzeugen, die für unterschiedliche Cache-Linien unterschiedlich sind, gemäß dem Programmschlüssel (124), und einen von der Schnittstelle (906) eingelesenen Inhalt zu entschlüsseln; gekennzeichnet durch einen von einer Mehrzahl von Cache-Linien gebildeten Cache-Speicher (903; 104), wobei jede Cache-Linie einen „Tag" aufweist und dafür konfiguriert ist, den Task-Identifizierer zu speichern, der einen beim Entschlüsseln jeder Cache-Linie im „Tag" jeder Cache-Linie verwendeten Entschlüsselungs-Schlüssel entspricht; und eine Zugriffs-Prüfeinheit (1205), die dafür konfiguriert ist, den im Tag jeder Cache-Linie gespeicherten Task-Identifizierer mit einem Wert des Task ID-Registers (1302) zu vergleichen und einen Inhalt jeder Cache-Linie zu verwerfen, wenn der Task-Identifizierer im Tag und der Wert des Task ID-Registers (1302) nicht übereinstimmen.
  2. Mikroprozessor nach Anspruch 1, weiterhin umfassend: eine Schlüsselwert-Tabelle (912), die dafür konfiguriert ist, den Programmschlüssel (124) in Relation zum Task-Identifizierer zu speichern; wobei die Verschlüsselungs-Verarbeitungs-Einheit (911) den Inhalt unter Verwendung des Programmschlüssels (124) entschlüsselt, der in Übereinstimmung mit dem Task-Identifizierer gespeichert ist, wenn ein Vergleichsergebnis durch die Zugriffs-Prüfeinheit (1205) anzeigt, dass der Task-Identifizierer im Tag und der Wert des Task-ID-Registers (1302) übereinstimmen.
  3. Mikroprozessor nach Anspruch 2, wobei die Task zumindest zwei Arten von Zuständen einschließlich NULL und RUN einnehmen kann und die Schlüsselwert-Tabelle (912) den Programmschlüssel (124) und den anhand des Programmschlüssels (124) erzeugten Entschlüsselungsschlüssel speichert, wenn ein Task-Zustand einen Übergang von NULL nach RUN macht.
  4. Mikroprozessor gemäß einem der vorstehenden Ansprüche, weiterhin umfassend eine Offset-Tabelle (1207), die dafür konfiguriert ist, eine oberste Adresse zu speichern, an der ein Programm entsprechend der Task als ein Offset-Wert angeordnet ist; wobei die Verschlüsselungs-Verarbeitungs-Einheit (911) die Entschlüsselungsschlüssel anhand des Offset-Werts und des Programmschlüssels (124) erzeugt und den Inhalt, der in Einheiten von Cache-Linien gelesen wird, entschlüsselt.
  5. Mikroprozessor nach Anspruch 4, weiterhin umfassend: eine Adressen-Umwandlungseinheit (902, 904, 906), die dafür konfiguriert ist, einen Zugriff auf den externen Speicher (907; 108) vorzunehmen, indem eine virtuelle Adresse anhand einer vorgegebenen Umwandlungsinformation in eine absolute Adresse umgewandelt wird; und einen Prozessorkern (902), der dafür konfiguriert ist, eine Leseanforderung durch Spezifizieren einer Adresse des externen Speichers (907; 108) in Form einer virtuellen Adresse zu erteilen; wobei die Verschlüsselungs-Verarbeitungs-Einheit (911) die Entschlüsselungsschlüssel durch Berechnen eines relativen Adresswertes aus den von der Leseanforderung spezifizierten virtuellen Adresse und den durch den Task-Identifizierer in der Offset-Tabelle (1207) spezifizierten Offset-Wert und Verschlüsseln des relativen Adresswerts unter Verwendung des Programmschlüssels (124) berechnet.
  6. Mikroprozessor nach Anspruch 1, wobei die Task zumindest drei Arten von Zuständen einschließlich NULL, RUN und SUSPEND annehmen kann und der Mikroprozessor weiterhin einen anderen Cache-Speicher umfasst, der dafür konfiguriert ist, vorübergehend einen Ausführungszustand einer unterbrochenen Task zu speichern, wenn die aktuell ausgeführte Task unterbrochen wird.
  7. Mikroprozessor nach Anspruch 1, weiterhin umfassend: ein Sicherungsregister (915), das dafür konfiguriert ist, vorübergehend einen Ausführungszustand des Programms (109) zu sichern, wenn eine Unterbrechung während der Ausführung der Task auftritt; und eine Hash-Berechnungs-Einheit (922), die dafür konfiguriert ist, einen Cache-Wert an den Inhalt des Sicherungsregisters (915) anzuhängen und den Inhalt des Sicherungsregisters (915) und den Hash-Wert in eine vorgegebene Linie des Cache-Speichers (903; 104) zu schreiben, wenn eine Ausführungszustands-Speicheraufforderung vorgenommen wird; wobei die Verschlüsselungs-Verarbeitungs-Einheit (911) konfiguriert ist, den in die Cache-Linie in Einheiten von Cache-Linien eingeschriebenen Ausführungszustand unter Verwendung eines vorgegebenen Verschlüsselungsschlüssels zu verschlüsseln und den Ausführungszustand zum externen Speicher (907; 108) zurück zu schreiben.
  8. Mikroprozessor nach Anspruch 7, wobei jede Cache-Linie des Cache-Speichers einen Flag aufweist, der anzeigt, dass der Ausführungszustand in jeder Cache-Linie gespeichert ist.
  9. Mikroprozessor nach Anspruch 7, wobei die Verschlüsselungs-Verarbeitungs-Einheit (911) den Ausführungszustand in einer verschlüsselten Form in den Cache-Speicher (903; 104) liest, den Ausführungszustand unter Verwendung des Verschlüsselungsschlüssels in Einheiten von Cache-Linien entschlüsselt und den Ausführungszustand an das Sicherungsregister (915) liefert, wenn eine Ausführungszustands-Wiedergewinn-Aufforderung vorgenommen wird; und die Hash-Berechnungseinheit (922) den Hash-Wert verifiziert und eine Wiedergewinnung des Ausführungszustandes nur dann gestattet, wenn eine Verifikation erfolgreich ist.
  10. Verschlüsselungs-Verarbeitungs-Verfahren, umfassend: Speichern eines Task-Identifizierers einer aktuell ausgeführten Task in einem Task-ID-Register (1302); Lesen eines in verschlüsselter Form gespeicherten Programms (109), bei dem das Programm in Einheiten von Blöcken in einem externen Speicher (907; 108) verschlüsselt ist, in Einheiten von Cache-Linien, wenn eine Anforderung nach einer Task gestellt wird, um die Task auszuführen; gekennzeichnet durch Speichern eines Identifizierers einer angeforderten Task in einem vorgegebenen Bereich einer Cache-Linie; Vergleichen des in jeder Cache-Linie gespeicherten Task-Identifizierers mit dem im Task-ID-Register (1302) gespeicherten Task-Identifizierer; und Entschlüsseln eines durch den Einleseschritt eingelesenen Inhalt, wenn der in jeder Cache-Linie gespeicherte Task-Identifizierer mit dem im Task-ID-Register (1302) gespeicherten Task-Identifizierer übereinstimmt.
  11. Verschlüsselungs-Verarbeitungs-Verfahren nach Anspruch 10, weiterhin umfassend: Verwerfen eines Inhalts jeder Cache-Linie, wenn ein in jeder Cache-Linie gespeicherter Task-Identifizierer nicht mit dem im Task-ID-Register (1302) gespeicherten Task-Identifizierer übereinstimmt.
  12. Trägermedium, das computerlesbare Anweisungen zum Steuern eines Computers trägt, um das Verfahren eines der Ansprüche 10 bis 11 durchzuführen.
DE60214640T 2001-09-28 2002-09-27 Mikroprozessor mit verbesserten Taskverwaltungs- und Tabellenverwaltungsvorrichtungen Expired - Fee Related DE60214640T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001304488A JP4226816B2 (ja) 2001-09-28 2001-09-28 マイクロプロセッサ
JP2001304488 2001-09-28

Publications (2)

Publication Number Publication Date
DE60214640D1 DE60214640D1 (de) 2006-10-26
DE60214640T2 true DE60214640T2 (de) 2007-01-11

Family

ID=19124403

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60214640T Expired - Fee Related DE60214640T2 (de) 2001-09-28 2002-09-27 Mikroprozessor mit verbesserten Taskverwaltungs- und Tabellenverwaltungsvorrichtungen

Country Status (6)

Country Link
US (2) US7424622B2 (de)
EP (1) EP1298518B1 (de)
JP (1) JP4226816B2 (de)
KR (1) KR100503906B1 (de)
CN (1) CN1410876A (de)
DE (1) DE60214640T2 (de)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4226816B2 (ja) 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
JP4115759B2 (ja) * 2002-07-01 2008-07-09 株式会社東芝 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム
US7900055B2 (en) 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7925891B2 (en) 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7539876B2 (en) 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
US7536560B2 (en) 2003-04-18 2009-05-19 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic key size
US7321910B2 (en) 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US8060755B2 (en) 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7529367B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent cipher feedback mode cryptographic functions
US7519833B2 (en) 2003-04-18 2009-04-14 Via Technologies, Inc. Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
US7502943B2 (en) 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7844053B2 (en) 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7392400B2 (en) 2003-04-18 2008-06-24 Via Technologies, Inc. Microprocessor apparatus and method for optimizing block cipher cryptographic functions
US7529368B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US7542566B2 (en) 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US6996698B2 (en) * 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
US7472285B2 (en) * 2003-06-25 2008-12-30 Intel Corporation Apparatus and method for memory encryption with reduced decryption latency
JP4624732B2 (ja) * 2003-07-16 2011-02-02 パナソニック株式会社 アクセス方法
WO2005020111A2 (en) * 2003-08-21 2005-03-03 Koninklijke Philips Electronics, N.V. Hardware register access via task tag id
JP4309726B2 (ja) * 2003-09-01 2009-08-05 株式会社東芝 マイクロプロセッサ
JP4263976B2 (ja) 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
US20050097300A1 (en) * 2003-10-30 2005-05-05 International Business Machines Corporation Processing system and method including a dedicated collective offload engine providing collective processing in a distributed computing environment
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
JP4282472B2 (ja) * 2003-12-26 2009-06-24 株式会社東芝 マイクロプロセッサ
JP4559794B2 (ja) * 2004-06-24 2010-10-13 株式会社東芝 マイクロプロセッサ
JP4490192B2 (ja) * 2004-07-02 2010-06-23 株式会社エヌ・ティ・ティ・ドコモ マルチタスク実行システム
JP4668556B2 (ja) * 2004-07-02 2011-04-13 株式会社エヌ・ティ・ティ・ドコモ タスク管理システム
JP2006023957A (ja) * 2004-07-07 2006-01-26 Sony Corp 半導体集積回路及び情報処理装置
US8954751B2 (en) * 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
US7657756B2 (en) * 2004-10-08 2010-02-02 International Business Machines Corporaiton Secure memory caching structures for data, integrity and version values
US20060242429A1 (en) * 2004-12-21 2006-10-26 Michael Holtzman In stream data encryption / decryption method
JP4737592B2 (ja) * 2005-02-16 2011-08-03 ルネサスエレクトロニクス株式会社 データ処理装置
JP4721737B2 (ja) * 2005-03-17 2011-07-13 富士通株式会社 データのバックアップ方法、バックアップ処理システム、およびコンピュータプログラム
US7843830B1 (en) * 2005-05-05 2010-11-30 Force 10 Networks, Inc Resilient retransmission of epoch data
CN100447702C (zh) * 2005-05-23 2008-12-31 联想(北京)有限公司 一种防止未被授权程序在计算机系统运行的方法及其系统
US7684566B2 (en) 2005-05-27 2010-03-23 Microsoft Corporation Encryption scheme for streamed multimedia content protected by rights management system
JP4372061B2 (ja) * 2005-07-01 2009-11-25 パナソニック株式会社 機密情報実装システム及びlsi
US8321690B2 (en) * 2005-08-11 2012-11-27 Microsoft Corporation Protecting digital media of various content types
CN100354789C (zh) * 2005-08-19 2007-12-12 华为技术有限公司 一种内容群组的数字版权保护方法及系统
US7970133B2 (en) * 2006-01-19 2011-06-28 Rockwell Collins, Inc. System and method for secure and flexible key schedule generation
US8001591B2 (en) * 2006-01-31 2011-08-16 Freescale Semiconductor, Inc. Distributed resource access protection
US7991965B2 (en) * 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US20070297606A1 (en) * 2006-06-27 2007-12-27 Tkacik Thomas E Multiple key security and method for electronic devices
US8285877B1 (en) * 2006-12-05 2012-10-09 Nvidia Corporation Intelligent background data conversion
US8588421B2 (en) * 2007-01-26 2013-11-19 Microsoft Corporation Cryptographic key containers on a USB token
JP2009044677A (ja) * 2007-08-10 2009-02-26 Panasonic Corp 機密情報処理装置、機密情報処理機器、及び機密情報処理方法
JP4976991B2 (ja) * 2007-11-22 2012-07-18 株式会社東芝 情報処理装置、プログラム検証方法及びプログラム
JP2009199414A (ja) * 2008-02-22 2009-09-03 Renesas Technology Corp マイクロコンピュータ
US8112634B2 (en) * 2008-06-04 2012-02-07 Samsung Electronics Co., Ltd. Security-enhanced storage devices using media location factor in encryption of hidden and non-hidden partitions
US8429330B2 (en) * 2008-09-12 2013-04-23 Sandisk Technologies Inc. Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations
US8145855B2 (en) 2008-09-12 2012-03-27 Sandisk Technologies Inc. Built in on-chip data scrambler for non-volatile memory
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8745411B2 (en) * 2008-11-07 2014-06-03 Broadcom Corporation Protecting external volatile memories using low latency encryption/decryption
JP2010128392A (ja) * 2008-11-28 2010-06-10 Canon Inc ハッシュ処理装置及びその方法
JP5322620B2 (ja) 2008-12-18 2013-10-23 株式会社東芝 情報処理装置、プログラム開発システム、プログラム検証方法及びプログラム
JP5304345B2 (ja) * 2009-03-11 2013-10-02 富士通株式会社 コンテンツ処理装置、コンテンツ処理システム、およびコンテンツ処理プログラム
US8578175B2 (en) * 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US8819446B2 (en) 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
ES2390796T3 (es) * 2009-07-27 2012-11-16 Nagravision S.A. Método de implementación de un procesador para garantizar la integridad de un software
JP2011071760A (ja) * 2009-09-25 2011-04-07 Canon Inc 情報処理装置、情報処理装置のジョブ処理方法、及びプログラム
JP5377748B2 (ja) 2010-02-18 2013-12-25 株式会社東芝 プログラム
JP2011181000A (ja) * 2010-03-03 2011-09-15 Toshiba Corp コントローラ、半導体記憶装置および半導体記憶装置の制御方法
US8751789B2 (en) * 2010-09-17 2014-06-10 International Business Machines Corporation General purpose distributed encrypted file system
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
US8745408B2 (en) * 2011-04-08 2014-06-03 Infineon Technologies Ag Instruction encryption/decryption arrangement and method with iterative encryption/decryption key update
JP5775738B2 (ja) * 2011-04-28 2015-09-09 富士通株式会社 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
JP5316592B2 (ja) * 2011-06-09 2013-10-16 富士通セミコンダクター株式会社 セキュアプロセッサ用プログラム
KR101869059B1 (ko) * 2012-02-28 2018-06-20 삼성전자주식회사 저장 장치 및 그것의 메모리 컨트롤러
EP2653992A1 (de) * 2012-04-17 2013-10-23 Itron, Inc. Mikrocontroller mit Konfiguration für externe Speicherentschlüsselung
US8572410B1 (en) 2012-07-18 2013-10-29 Freescale Semiconductor, Inc. Virtualized protected storage
JP6214142B2 (ja) * 2012-10-09 2017-10-18 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
US20140181402A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies
US20140310536A1 (en) * 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
TW201512894A (zh) * 2013-09-24 2015-04-01 hong-jian Zhou 資料存取系統及其資料與指令傳輸裝置
US9223965B2 (en) 2013-12-10 2015-12-29 International Business Machines Corporation Secure generation and management of a virtual card on a mobile device
US9235692B2 (en) 2013-12-13 2016-01-12 International Business Machines Corporation Secure application debugging
US10223289B2 (en) * 2015-07-07 2019-03-05 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US20170116003A1 (en) * 2015-10-27 2017-04-27 International Business Machines Corporation Dynamic determination of the applicability of a hardware accelerator to a request
US9886390B2 (en) * 2015-11-10 2018-02-06 International Business Machines Corporation Intelligent caching of responses in a cognitive system
CN107145308B (zh) * 2017-05-04 2021-06-22 惠州Tcl移动通信有限公司 移动终端、及其sd卡操作控制方法、系统、存储装置
IT201700050153A1 (it) * 2017-05-09 2018-11-09 St Microelectronics Srl Modulo hardware di sicurezza, relativo sistema di elaborazione, circuito integrato e dispositivo
US10509666B2 (en) * 2017-06-29 2019-12-17 Ati Technologies Ulc Register partition and protection for virtualized processing device
TWI670960B (zh) 2018-06-14 2019-09-01 笠眾實業有限公司 在公眾網路下進行驗證連線的車聯網系統及其連線方法
US11595192B2 (en) * 2020-04-24 2023-02-28 Dell Products L.P. System and method of migrating one or more storage class memories from a first information handling system to a second information handling system
WO2023022787A1 (en) * 2021-08-18 2023-02-23 Micron Technology, Inc. Selective cache line memory encryption
CN117519955B (zh) * 2024-01-08 2024-03-29 浪潮电子信息产业股份有限公司 一种加速设备的控制方法、系统、装置及加速设备

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3976978A (en) * 1975-03-26 1976-08-24 Honeywell Information Systems, Inc. Method of generating addresses to a paged memory
US4168396A (en) * 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
US4463420A (en) * 1982-02-23 1984-07-31 International Business Machines Corporation Multiprocessor cache replacement under task control
US4558176A (en) * 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
JPS6079446A (ja) 1983-10-06 1985-05-07 Hitachi Ltd 多重仮想記憶デ−タ処理装置
US4887296A (en) * 1984-10-26 1989-12-12 Ricoh Co., Ltd. Cryptographic system for direct broadcast satellite system
JPH0192833A (ja) * 1987-10-02 1989-04-12 Satoru Kubota 暗号翻訳の回路を内蔵することにより、ソフトウェアの違法なコピーを防止するマイクロプロセッサ
US5097533A (en) * 1988-11-29 1992-03-17 International Business Machines Corporation System and method for interfacing computer application programs written in different languages to a software system
JPH03204744A (ja) 1990-01-08 1991-09-06 Nec Corp アドレス変換機構
JP2846697B2 (ja) 1990-02-13 1999-01-13 三洋電機株式会社 キャッシュメモリ制御装置
JPH03235143A (ja) 1990-02-13 1991-10-21 Sanyo Electric Co Ltd キャッシュメモリ制御装置
JP3235144B2 (ja) 1991-08-02 2001-12-04 ソニー株式会社 量子箱列の作製方法
JP3235143B2 (ja) 1991-11-25 2001-12-04 ソニー株式会社 アルカリ電池
JP3204744B2 (ja) 1992-07-22 2001-09-04 株式会社東芝 信号遅延メモリ回路
US5319705A (en) * 1992-10-21 1994-06-07 International Business Machines Corporation Method and system for multimedia access control enablement
JP3381079B2 (ja) 1993-03-16 2003-02-24 日本電信電話株式会社 キャッシュメモリを用いた排他制御システム
JP3381080B2 (ja) 1993-03-16 2003-02-24 日本電信電話株式会社 処理の中断が可能な排他制御方式
JPH06266621A (ja) 1993-03-17 1994-09-22 Nippon Telegr & Teleph Corp <Ntt> データアクセス方法
JPH06282488A (ja) 1993-03-25 1994-10-07 Mitsubishi Electric Corp キャッシュ記憶装置
JP3381086B2 (ja) 1993-07-09 2003-02-24 日本電信電話株式会社 排他制御可能なマルチプロセッサシステム
US5805711A (en) * 1993-12-21 1998-09-08 Francotyp-Postalia Ag & Co. Method of improving the security of postage meter machines
US5666411A (en) * 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
JPH08180001A (ja) * 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
JPH07311712A (ja) 1994-05-19 1995-11-28 Toshiba Corp 障害復旧方法
JPH09259044A (ja) 1996-03-21 1997-10-03 Fuji Xerox Co Ltd 機密保護機能付き情報処理装置および機密保護方法
US6427162B1 (en) * 1996-05-02 2002-07-30 Sun Microsystems, Inc. Separate code and data contexts: an architectural approach to virtual text sharing
US6311290B1 (en) * 1997-02-14 2001-10-30 Intel Corporation Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
JP3376956B2 (ja) * 1999-05-14 2003-02-17 日本電気株式会社 プロセッサ間通信装置
US6816488B1 (en) * 1999-05-21 2004-11-09 Advanced Micro Devices, Inc. Apparatus and method for processing data frames in a network switch
US20010031050A1 (en) * 2000-02-14 2001-10-18 Lateca Computer Inc. N.V. Key generator
US7270193B2 (en) * 2000-02-14 2007-09-18 Kabushiki Kaisha Toshiba Method and system for distributing programs using tamper resistant processor
EP1182556B1 (de) * 2000-08-21 2009-08-19 Texas Instruments France Auf Aufgaben basierte adaptive Profilerstellung und Fehlerbeseitigung
JP4226816B2 (ja) 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ

Also Published As

Publication number Publication date
US20030065933A1 (en) 2003-04-03
KR100503906B1 (ko) 2005-07-27
EP1298518A2 (de) 2003-04-02
US20090006864A1 (en) 2009-01-01
US7424622B2 (en) 2008-09-09
EP1298518A3 (de) 2004-04-21
EP1298518B1 (de) 2006-09-13
JP4226816B2 (ja) 2009-02-18
DE60214640D1 (de) 2006-10-26
US7673155B2 (en) 2010-03-02
JP2003108442A (ja) 2003-04-11
CN1410876A (zh) 2003-04-16
KR20030027803A (ko) 2003-04-07

Similar Documents

Publication Publication Date Title
DE60214640T2 (de) Mikroprozessor mit verbesserten Taskverwaltungs- und Tabellenverwaltungsvorrichtungen
DE10196006B4 (de) Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung
KR100491991B1 (ko) 내부 메모리형 내탬퍼 프로세서 및 비밀보호방법
DE102019113352A1 (de) Technologien für sichere e/a mit speicherverschlüsselungs-engines
DE60124845T2 (de) Mikroprozessor mit Programm- und Datenschutzfunktion in einer Multitasking Umgebung
CN1331056C (zh) 集成系统中的数据访问方法和系统
DE69731714T2 (de) Dynamische Dienstklassen für eine internationale kryptographische Struktur
CN100465938C (zh) 搜索存储在便携式存储装置中的权限对象的方法和设备
DE69725833T2 (de) Gesicherte zweiteilige Benutzer-Authentifizierung in einem Rechnernetz
DE102018115491A1 (de) System, vorrichtung und verfahren zur seitengranularen, softwaregesteuerten speicherverschlüsselung mit mehreren schlüsseln
DE60303476T2 (de) Verfahren und server für eine programm-aktualisierung
US20120246478A1 (en) Information sharing system, computer, project managing server, and infomation sharing method used in them
DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
DE112009002502T5 (de) Multilayer inhalte-schützender Mikrocontoller
US20090165141A1 (en) Information usage control system and information usage control device
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE10196440B4 (de) Steuern des Zugriffs auf mehrere isolierte Speicher in einer isolierten Ausführungsumgebung
DE102019128261A1 (de) Datenfreigabesteuerung auf der Basis von Authentifizierung und Verbindungsstreckenschutz
DE112018002947T5 (de) Computersystem-software/firmware und prozessoreinheit mit einem sicherheitsmodul
US11748493B2 (en) Secure asset management system
DE102020134207A1 (de) Sichere Adressübersetzungsdienste unter Verwendung kryptographisch geschützter physischer Hostadressen
JP2009064462A (ja) マイクロプロセッサ
JP2723231B2 (ja) ソフトウェア権利管理制御方法
DE102019110440A1 (de) Replay-Schutz für Speicher auf der Basis eines Schlüsselauffrischens
US10296468B2 (en) Storage system and cache control apparatus for storage system

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee