DE112004002259B4 - Access to private data about the status of a data processing machine from a publicly accessible storage - Google Patents

Access to private data about the status of a data processing machine from a publicly accessible storage Download PDF

Info

Publication number
DE112004002259B4
DE112004002259B4 DE112004002259T DE112004002259T DE112004002259B4 DE 112004002259 B4 DE112004002259 B4 DE 112004002259B4 DE 112004002259 T DE112004002259 T DE 112004002259T DE 112004002259 T DE112004002259 T DE 112004002259T DE 112004002259 B4 DE112004002259 B4 DE 112004002259B4
Authority
DE
Germany
Prior art keywords
processor
data
private
memory
status data
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
DE112004002259T
Other languages
German (de)
Other versions
DE112004002259T5 (en
Inventor
Scott Robinson
Gustavo Espinosa
Steven Bennett
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE112004002259T5 publication Critical patent/DE112004002259T5/en
Application granted granted Critical
Publication of DE112004002259B4 publication Critical patent/DE112004002259B4/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data

Abstract

Gemäß einer Ausführnungsform der Erfindung ist ein Verfahren zum Betreiben einer Datenverarbeitungsmaschine beschrieben, wobei Daten zum Status der Maschine an einen Ort in einem Speicher geschrieben werden. Dabei handelt es sich um einen Ort, der für Software zugänglich ist, die für die Maschine geschrieben sein kann. Die geschriebenen Statusdaten sind codiert. Diese Statusdaten können aus dem Speicher gemäß einem Decodierungsprozeß abgerufen werden. Andere Ausführungsformen sind ebenfalls beschrieben und beansprucht.According to one embodiment of the invention, a method for operating a data processing machine is described, wherein data on the status of the machine are written to a location in a memory. This is a location accessible to software that may be written for the machine. The written status data is coded. This status data may be retrieved from the memory according to a decoding process. Other embodiments are also described and claimed.

Description

ALLGEMEINER STAND DER TECHNIKGENERAL PRIOR ART

Einige der Ausführungsformen der Erfindung betreffen die Art und Weise, wie Prozessoren Statusdaten von einem Speicher eines Computersystems ablesen und in diesen schreiben. Andere Ausführungsformen sind ebenfalls beschrieben.Some embodiments of the invention relate to the manner in which processors read and write status data from a memory of a computer system. Other embodiments are also described.

Aufgrund verschiedener Designanforderungen können einige Prozessoren Daten mit privatem Status in öffentlich zugängliche Speicher schreiben. Das Format, die Semantik und der Ort dieser Privatdaten können je nach Design-Implementierung unterschiedlich sein. In der Literatur, die den Prozessor beschreibt, sind solche Speicherregionen oft als „RESERVIERT” markiert, was anzeigt, daß ihr Inhalt nicht gelesen oder modifiziert werden sollte, da sie Privatdaten enthalten. Da diese Daten in einen öffentlich zugänglichen Speicher geschrieben sind, können unglücklicherweise Software-Anwendungen, Betriebssysteme oder externe Agenten (z. B. Eingabe-Ausgabe-Vorrichtungen) auf die Speicherregion zugreifen und die Privatstatusdaten, die darin gespeichert sind, in unzulässiger Weise verwenden. Zugriff und Benutzung dieser Privatdaten durch nicht berechtigte Einheiten kann zu irrtümlichen und/oder unerwünschten Auswirkungen auf Prozessor- und Plattformhersteller und Endnutzer führen.Due to various design requirements, some processors may write private state data to publicly accessible memory. The format, semantics and location of this private data may vary depending on the design implementation. In the literature describing the processor, such storage regions are often marked as "RESERVED," indicating that their contents should not be read or modified because they contain private data. Unfortunately, because this data is written to publicly accessible memory, software applications, operating systems, or external agents (eg, input-output devices) may access the memory region and improperly use the private state data stored therein. Accessing and using this Private Information by unauthorized entities may result in erroneous and / or undesirable effects on processor and platform manufacturers and end users.

US 2001/0018736 A1 offenbart einen manipulationssicheren Mikroprozessor, der Kontextinformationen für ein Programm speichert, dessen Ausführung unterbrochen werden soll, wobei die Kontextinformationen einen Ausführungszustand des Programms und die Verschlüsselung des Ausführungscodes für dieses Programm anzeigen. Die Ausführung des Programms kann durch Rückgewinnen des Ausführungszustands des Programms aus der gespeicherten Kontextinformation neu gestartet werden. US 2001/0018736 A1 discloses a tamper-resistant microprocessor storing context information for a program whose execution is to be interrupted, the context information indicating an execution state of the program and the encryption of the execution code for that program. The execution of the program may be restarted by retrieving the execution state of the program from the stored context information.

US 5,655,125 offenbart ein Register zur Identifizierung von Prozessoreigenschaften, wie beispielsweise, ob der Prozessor statische logische Vorrichtungen umfasst. Die offenbarte Vorrichtung umfasst des Weiteren eine Übertragungsschaltung, um bei Empfang eines ersten Codes den Inhalt des Registers vom Prozessor zu einem System zu übertragen, das mit dem Prozessor gekoppelt ist. US 5,655,125 discloses a register for identifying processor characteristics, such as whether the processor includes static logic devices. The disclosed apparatus further comprises a transmission circuit for, upon receipt of a first code, transferring the contents of the register from the processor to a system coupled to the processor.

Die Aufgabe der Erfindung besteht darin, ein Verfahren sowie eine Vorrichtung bereitzustellen, durch das beziehungsweise durch die in öffentlich zugängliche Speicher geschriebene Privat-Status-daten vor einer unzulässigen Verwendung geschützt sind.The object of the invention is to provide a method and a device by which the private status data written in publicly accessible memories is protected against unauthorized use.

Diese Aufgabe wird gelöst durch ein Verfahren mit den Merkmalen gemäß Anspruch 1, eine Datenverarbeitungsmaschine mit den Merkmalen gemäß Anspruch 12 und ein System mit den Merkmalen gemäß Anspruch 20.This object is achieved by a method having the features according to claim 1, a data processing machine having the features according to claim 12 and a system having the features according to claim 20.

KURZE BESCHREIBUNG DER FIGURENBRIEF DESCRIPTION OF THE FIGURES

Die Ausführungsformen der Erfindung sind beispielhaft und nicht begrenzend in den Figuren der begleitenden Zeichnungen illustriert, wobei gleiche Bezugszeichen gleiche Elemente anzeigen. Es ist zu beachten, daß eine Bezugnahme auf „eine” Ausführungsform der Erfindung in dieser Offenbarung nicht notwendigerweise eine Bezugnahme auf dieselbe Ausführung bedeutet, und daß damit wenigstens eine Ausführungsform gemeint ist.The embodiments of the invention are illustrated by way of example and not limitation in the figures of the accompanying drawings, wherein like reference numerals indicate like elements. It should be noted that a reference to "an" embodiment of the invention in this disclosure does not necessarily mean a reference to the same embodiment, and is meant by at least one embodiment.

1 zeigt ein Blockdiagramm eines Computersystems, das die öffentliche Speicherung von Privatstatusdaten verschleiern/codieren kann, gemäß einer Ausführungsform der Erfindung. 1 Figure 12 is a block diagram of a computer system that may obscure / encode the public storage of private state data, according to an embodiment of the invention.

2 zeigt ein Flußdiagramm, das ein Verfahren zum Lesen eines codierten Privatstatusdatenwerts von einer Privatstatusspeicherregion gemäß einer Ausführungsform der Erfindung darstellt. 2 FIG. 10 is a flow chart illustrating a method of reading a coded private state data value from a private state memory region according to an embodiment of the invention. FIG.

3 zeigt ein Flußdiagramm, das ein Verfahren zum Speichern eines codierten Privatstatusdatenwertes in einer Privatstatusspeicherregion gemäß einer Ausführungsform der Erfindung darstellt. 3 FIG. 10 is a flowchart illustrating a method of storing a coded private state data value in a private state memory region according to an embodiment of the invention. FIG.

4 zeigt ein Blockdiagramm eines Computersystems, wobei der Prozessor dazu entworfen ist, seine Privatstatusdaten, die in den öffentlichen Speicher geschrieben sind, zu verschleiern/codieren, gemäß einer Ausführungsform der Erfindung. 4 Figure 12 shows a block diagram of a computer system wherein the processor is designed to obscure / encode its private status data written in public memory, according to one embodiment of the invention.

5 zeigt beispielhafte Funktionskomponenten, die benutzt werden können, um das Verschleiern/Codieren der Privatstatusdaten zu implementieren, gemäß einer Ausführungsform der Erfindung. 5 FIG. 12 shows example functional components that may be used to implement obfuscation / encoding of the private state data, according to one embodiment of the invention. FIG.

6 zeigt ein genaueres logisches Diagramm eines Teils einer beispielhaften Adreß-Verschleierungs/Codierungseinheit gemäß einer Ausführungsform der Erfindung. 6 shows a more detailed logic diagram of a portion of an exemplary address obfuscation / coding unit according to an embodiment of the invention.

GENAUE BESCHREIBUNGPRECISE DESCRIPTION

Der Prozessorstatus, wie er während des Betriebs eines Prozessors in einen Speicher geschrieben wird, umfaßt zwei Arten von Information oder Daten. Eine Art wird hier als Architekturdaten bezeichnet, während die andere als implementierungsspezifische Daten bezeichnet wird (hier auch als „Privatdaten” oder „Privatstatusdaten” bezeichnet).The processor status, as written to memory during operation of a processor, includes two types of information or data. One type is referred to herein as architectural data, while the other is referred to as implementation-specific data (also referred to herein as "private data" or "private status data").

Architekturdaten sind Statusinformationen, die allen Prozessoren einer jeweiligen Klasse gemäß der Bestimmung durch den Hersteller gemeinsam sind, d. h. sie weisen im Wesentlichen dieselbe High-Level-Schnittstelle zwischen Hardware und Software auf. Diese Schnittstelle wird als die Instruction Set Architecture (ISA) bezeichnet. Die Benutzung derselben ISA für mehrere unterschiedliche Prozessorimplementierungen unterstützt die Fähigkeit der Software, die ausdrücklich für eine Implementierung geschrieben wurde, unmodifiziert auf späteren Implementierungen zu laufen. Architecture data is status information that is common to all processors of a given class as determined by the manufacturer, ie, they have substantially the same high-level interface between hardware and software. This interface is referred to as the Instruction Set Architecture (ISA). Using the same ISA for several different processor implementations supports the ability of the software written specifically for an implementation to run unmodified on later implementations.

Eine ISA definiert den Status, der für eine Software verfügbar ist, die auf dem Prozessor läuft, ihr Format und ihre Semantik, sowie verfügbare Betriebsschnittstellen (z. B. Instruktionen, Ereignisse). Ein Teil der ISA-Spezifizierung beschreibt, wie der Prozessor eine oder mehrere Regionen im Speicher der Maschine benutzen kann, um ihren Betrieb zu unterstützen. Diese Speicherregionen können für Software und andere Vorrichtungen der Datenverarbeitungsmaschine zugänglich sein, in der der Prozessor angeordnet ist (z. B. Eingabe-Ausgabe-Vorrichtungen usw.). Der Prozessor kann diese Speicherregionen benutzen, um sowohl Architektur- als auch Privatstatusdaten zu speichern.An ISA defines the status that is available for software running on the processor, its format and semantics, as well as available operational interfaces (eg, instructions, events). Part of the ISA specification describes how the processor can use one or more regions in the memory of the machine to support its operation. These storage regions may be accessible to software and other devices of the data processing machine in which the processor is located (eg, input-output devices, etc.). The processor may use these storage regions to store both architectural and private status data.

Beispielsweise kann an Prozessoren gedacht werden, die die ISA des Intel® Pentium® Prozessors aufweisen, wie er von der Intel Corporation hergestellt wird, hier bezeichnet als die ISA IA-32. Der Prozessor kann Regionen im Speicher während bestimmter Vorgänge einsetzen. Wenn beispielsweise ein ISA-IA-32-Prozessor in den Systemmanagementmodus übergeht, speichert er verschiedene Werte in einer Speicherregion namens Systemmanagement-(SMM)-Status-Speicherbereich. Verschiedene Architekturdaten (z. B. die verschiedenen Maschinenregister wie z. B. ESI, EBP usw.) werden an Orten und in Formaten gespeichert, die in der Dokumentation für die ISA vorgegeben sind. Zusätzlich werden verschiedene Privatdaten in dem Systemmanagement-Statusspeicherbereich gespeichert. In der Dokumentation für die ISA sind diese Privatstatusbereiche als „reserviert” markiert; der Inhalt, das Format und die Semantik dieser Privatdaten sind nicht in der ISA-Dokumentation vorgegeben. Diese „reservierten” Speicherregionen werden hier als „Privatstatusregionen” bezeichnet.For example, processors having the ISA of the Intel® Pentium® processor as manufactured by Intel Corporation, referred to herein as the ISA IA-32, may be considered. The processor can use regions in memory during certain operations. For example, when an ISA IA-32 processor enters system management mode, it stores various values in a memory region called the system management (SMM) state memory area. Various architectural data (eg, the various machine registers such as ESI, EBP, etc.) are stored in locations and formats specified in the documentation for the ISA. In addition, various private data is stored in the system management status storage area. In the documentation for the ISA, these private status areas are marked as "reserved"; the content, format and semantics of this private data are not specified in the ISA documentation. These "reserved" storage regions are referred to herein as "private status regions."

Verschiedene Prozessoren können dazu entworfen sein, verschiedene Privatstatusdaten aufzuweisen, die hier auch als „Privatdaten” bezeichnet werden. Dies kann beispielsweise geschehen, um die Leistung zu verbessern oder Herstellungskosten zu senken. Beispielsweise können neue interne Register hinzugefügt werden, einige der alten können anders genutzt werden, und das Format oder der Ort ihres Inhalts, der in den Speicher geschrieben werden soll, können zwecks höherer Effizienz geändert werden. Als Resultat unterscheiden sich die Privatdaten für diese neueren Prozessoren in Inhalt, Format, Semantik oder Ort von denen der älteren Versionen.Various processors may be designed to have various private status data, also referred to herein as "private data." This can be done, for example, to improve performance or reduce manufacturing costs. For example, new internal registers may be added, some of the old ones may be used differently, and the format or location of their content to be written into memory may be changed for greater efficiency. As a result, the private data for these newer processors differ in content, format, semantics or location from those of the older versions.

Es kann zu Schwierigkeiten kommen, wenn Privatstatusdaten in öffentlich zugänglichen Bereichen wie z. B. dem Hauptspeicher oder einem anderen Speicher gespeichert werden. Hier ist es für Software wie z. B. das Basic Input Output System (BIOS), Betriebssysteme, den virtuelle Maschinenmanager oder Hypervisor, Gerätetreiber oder Applikationen und Hardware wie E/A-Vorrichtungen oder andere externe Agenten möglich, auf die Privatstatusdaten zuzugreifen (d. h. sie zu lesen und/oder zu schreiben). Die Benutzung dieser Privatstatusdaten durch solche Einheiten kann zu irrtümlichen und/oder unerwünschten Auswirkungen auf Prozessor- und Plattformhersteller und Endnutzer führen. Wenn eine Applikation beispielsweise von bestimmten Privatstatusdaten abhängig ist, die in einer Prozessorimplementierung verfügbar sind, könnte die Applikation fehlerhaft arbeiten, wenn sie auf einer unterschiedlichen Prozessorimplementierung läuft, die die Privatstatusdaten anders (oder gar nicht) implementiert. Software, die von Privatdaten abhängig ist, kann auch aufgrund interner Prozessor-Speicher-Kohärenzverhaltensweisen bzw. -richtlinien ausfallen, die von Implementierung zu Implementierung variieren. Softwareabhängigkeit von Privatstatusdaten kann dem Prozessorhersteller zur Verfügung stehende Implementierungsalternativen hinsichtlich der Privatstatusdatennutzung erschweren und/oder einschränken. Aus diesem Grund dokumentieren Prozessorhersteller oft diese Privatstatusdaten (und ihre Speicherung in einer Speicherregion) als RESERVIERT, wodurch sie anzeigen, daß diese in zukünftigen Implementierungen verändert werden können.It can be difficult to find private status data in publicly accessible areas such as: As the main memory or other memory. Here it is for software such. For example, the Basic Input Output System (BIOS), operating systems, virtual machine manager or hypervisor, device drivers or applications, and hardware such as I / O devices or other external agents may access (ie read and / or write) the private state data ). Use of such personal status data by such entities may result in erroneous and / or undesirable effects on processor and platform manufacturers and end users. For example, if an application depends on certain private state data that is available in a processor implementation, the application could malfunction if it runs on a different processor implementation that implements the home state data differently (or not at all). Software that relies on private data may also fail due to internal processor memory coherency behaviors that vary from implementation to implementation. Software dependency on private state data may complicate and / or limit the implementation options available to the processor manufacturer regarding private state data usage. For this reason, processor manufacturers often document this private state data (and its storage in a memory region) as RESERVED, indicating that it may be changed in future implementations.

Die oben genannte Möglichkeit, alte Software auf neueren Maschinen laufen zu lassen, geht davon aus, daß die alte Software auf die Privatdaten einer Maschine (die bei einer neueren Version der Maschine unterschiedlich sein können) nicht falsch zugegriffen hat. Allerdings wurde festgestellt, daß die Softwareentwickler Applikationen und Betriebssystemprogramme schreiben, die das Gegenteil tun, d. h., sie greifen auf Privatdaten, so wie sie z. B. im Hauptspeicher gespeichert sind zu und verlassen sich auf sie. Dies erzeugt ein Problem, da ältere Software auf einer neueren Maschine möglicherweise nicht korrekt läuft, obwohl die neuere Maschine dieselben Architekturdaten aufweist wie die ältere Maschine und immer noch die älteren Mechanismen zum Zugriff auf gespeicherte Statusdaten (z. B. Lade- und Speicherinstruktionen gemäß der ISA) „verstehen” kann. Dies liegt daran, daß bei der neueren Maschine ein Teil oder die Gesamtheit der Privatdaten geändert worden sein kann, was dazu führt, daß die Software nicht richtig arbeitet. Zusätzlich kann der Hersteller zögern, zukünftige Versionen seines Prozessors mit Verbesserungen auszustatten, da dies Kompatibilitätsprobleme mit älterer Software verursachen könnte.The above possibility of running old software on newer machines assumes that the old software did not access the machine's private data (which may be different on a newer version of the machine). However, it has been discovered that software developers write applications and operating system programs that do the opposite, that is, they access private data as described, for example, in US Pat. B. are stored in main memory and rely on them. This creates a problem because older software may not run correctly on a newer machine, although the newer machine has the same architectural data as the older machine and still has the older mechanisms for accessing stored status data (e.g., load and store instructions according to the ISA) can "understand". This is because with the newer machine, some or all of the private data may have been changed, resulting in the software not working properly. In addition, the Manufacturers are reluctant to provide future versions of their processor with enhancements as this could cause compatibility issues with older software.

Gemäß einer Ausführungsform der Erfindung sind eine Datenverarbeitungsmaschine und ein Verfahren zum Betreiben beschrieben, die einen Softwareentwickler davon abhalten können, Software zu schreiben, die von Privatstatusdaten (z. B. einem bestimmten Wert, seinem Ort, seiner Semantik oder seinem Format) abhängig ist, die in einer öffentlich zugänglichen Region des Speichers gespeichert sind. Dies kann es zukünftigen Versionen der Maschine erlauben, ein andersartiges Verhalten hinsichtlich privater Daten an den Tag zu legen, was erforderlich sein kann, da sich das interne Hardwaredesign der Maschine weiterentwickelt, während sie immer noch dieselbe ISA aufweisen, die benötigt wird, um ältere Software lauffähig zu machen.According to one embodiment of the invention, there is described a data processing engine and method for operating that may prevent a software developer from writing software that is dependent on home status data (eg, a particular value, its location, semantics or format), stored in a publicly accessible region of the memory. This may allow future versions of the machine to behave differently from private data, which may be required because the machine's internal hardware design evolves while still having the same ISA needed to run older software to make it workable.

Einige Ausführungsformen der Erfindung können die Anwendung von Architekturschnittstellen zu Daten fördern, die als Privatstatusdaten gespeichert sind. Beispielsweise können Instruktionen vorgesehen sein, um auf Daten zuzugreifen, die als Privatstatusdaten gespeichert sein können, indem die Identität der Daten spezifiziert wird, auf die zugegriffen werden soll, anstelle des Speicherortes der Daten in der Privatstatusdatenregion. Dies erlaubt dahingehend eine Implementierungsfreiheit, wie die Daten gespeichert sind (z. B. innerhalb der Privatstatusregion), während ein Architekturmechanismus zum Zugriff auf die Daten ausgebildet ist. Es wird beispielsweise angenommen, daß ein Datenelement, das in dem Systemmanagement-Statusspeicherbereich der ISA IA-32 (wie oben beschrieben) gespeichert ist, der Wert der CS-Segment-Basisadresse ist. Der Speicherort dieses Datenelements innerhalb des Statusspeicherbereichs ist nicht in der ISA-Spezifikation angegeben. Statt dessen kann von der ISA eine Instruktion bereitgestellt werden, welche die Daten indirekt adressiert. Das Datenelement kann in jeder möglichen Art und Weise in dem Statusspeicherbereich codiert und gespeichert sein, die für eine Prozessorimplementierung gewünscht wird (oder es muß überhaupt nicht in dem Statusspeicherbereich gespeichert sein und kann statt dessen beispielsweise in einem speziellen Register oder einem Ort im Prozessor angeordnet sein).Some embodiments of the invention may promote the application of architectural interfaces to data stored as private state data. For example, instructions may be provided to access data that may be stored as private state data by specifying the identity of the data to be accessed rather than the location of the data in the private state data region. This allows for freedom of implementation of how the data is stored (eg, within the private status region) while an architecture mechanism is configured to access the data. For example, it is assumed that a data item stored in the system management status storage area of the ISA IA-32 (as described above) is the value of the CS segment base address. The location of this data item within the state storage area is not specified in the ISA specification. Instead, an instruction may be provided by the ISA that indirectly addresses the data. The data element may be encoded and stored in whatever manner is desired in the status storage area desired for a processor implementation (or not at all stored in the status storage area and may instead be located, for example, in a particular register or location in the processor ).

Die Erfindung erlaubt es, daß Privatstatusdaten so codiert werden, daß eine schnelle Software-Decodierung der Daten vereitelt wird, im Gegensatz zu den vorgegebenen Architekturschnittstellen. Ausführungsformen der Erfindung können die Codierungskomplexität je nach Zielprozessor oder -plattform variieren. Sobald der Zielprozessor bekannt ist, kann ein Fachmann eine Ausführungsform der Erfindung wählen, die sicherstellt, daß softwarebasierte Verfahren zum Decodieren der gewählten Codierung mehr Zeit benötigen als das Benutzen der vorgegebenen Schnittstellen (z. B. Instruktionen). Beispielsweise können nicht vorgegebene Softwareverfahren dazu in der Lage sein, bestimmte Privatstatusdaten in 400 Takten zu decodieren (z. B. durch die Benutzung bestimmter Instruktionen und Algorithmen), während von der Architektur vorgegebene Instruktionen und Verfahren nur einen Bruchteil dieser Zeit benötigen würden. Eine Ausführungsform der Erfindung liegt in der Benutzung bestimmter Meßwerte, um die Kosten der Privatstatus-Decodierung zu messen, darunter beispielsweise die Meßwerte der Zeit (Geschwindigkeit) und des Leistungsverbrauchs.The invention allows private status data to be encoded to obviate rapid software decoding of the data, as opposed to the predetermined architectural interfaces. Embodiments of the invention may vary encoding complexity depending on the target processor or platform. Once the destination processor is known, one skilled in the art may choose an embodiment of the invention that ensures that software-based methods for decoding the selected encoding take more time than using the given interfaces (e.g., instructions). For example, non-predetermined software methods may be able to store certain private state data in 400 To decode clocks (for example, by the use of certain instructions and algorithms), while prescribed by the architecture instructions and procedures would require only a fraction of this time. One embodiment of the invention is the use of certain measurements to measure the cost of private state decoding, including, for example, time (speed) and power consumption measurements.

Der hier verwendete Begriff „Codieren” umfaßt Konzepte wie Verschlüsselung, Chiffrierung, Formatierung oder die Zuweisung oder Interpretation spezifischer Bitmuster. Von Codierungen durch Ausführungsformen dieser Erfindung wird hier als die Privatdaten „verschleiernd” gesprochen.The term "encoding" as used herein includes concepts such as encryption, ciphering, formatting, or the assignment or interpretation of specific bit patterns. Encodings by embodiments of this invention are referred to herein as "disguised" private data.

Bezugnehmend auf 1 ist ein Blockdiagramm eines Computersystems dargestellt. Software 120 läuft auf einer Plattform-Hardware 102. Die Plattform-Hardware 102 kann ein Personal-Computer (PC), ein Großrechner, ein tragbares Gerät, ein tragbarer Computer, ein Digitalempfänger oder jedes andere Rechnersystem sein. Die Plattform-Hardware 102 umfaßt einen Prozessor 110, Speicher 130 und kann eine oder mehrere Eingabe-Ausgabe-(E/A)-Vorrichtungen 140 aufweisen.Referring to 1 a block diagram of a computer system is shown. software 120 runs on a platform hardware 102 , The platform hardware 102 may be a personal computer (PC), a mainframe, a portable device, a portable computer, a digital receiver, or any other computer system. The platform hardware 102 includes a processor 110 , Storage 130 and may include one or more input-output (I / O) devices 140 exhibit.

Der Prozessor 110 kann jede Art von Prozessor sein, der dazu in der Lage ist, Software auszuführen, wie z. B. ein Mikroprozessor, ein Digitalsignalprozessor, ein Mikrocontroller oder ähnliches. Der Prozessor 110 kann einen Mikrocode, eine programmierbare Logik oder eine fest programmierte Logik zum Durchführen der Ausführung bestimmter Verfahrensausführungsformen der vorliegenden Erfindung aufweisen. Obwohl 1 nur einen solchen Prozessor 110 zeigt, kann mehr als ein Prozessor in dem System vorgesehen sein.The processor 110 can be any type of processor capable of executing software, such as: As a microprocessor, a digital signal processor, a microcontroller or the like. The processor 110 may include microcode, programmable logic or hard-coded logic for carrying out the execution of certain method embodiments of the present invention. Even though 1 just such a processor 110 For example, more than one processor may be provided in the system.

Die E/A-Vorrichtung oder E/A-Vorrichtungen 140 können beispielsweise Netzwerkschnittstellenkarten, Kommunikationsports, Videosteuerungen, Festplattensteuerungen, Systembusse und -steuerungen (z. B. PCI, ISA, AGP) oder Vorrichtungen sein, die in die Plattform-Chipsatzlogik oder den Prozessor integriert sind (z. B. Echtzeittaktuhren, programmierbare Taktgeber, Leistungszähler). Einige oder alle E/A-Vorrichtungen 140 können eine Direktspeicherzugriff-(DMA)-Fähigkeit besitzen, was es ihnen ermöglicht, den Speicher 130 unabhängig von der Steuerung durch den Prozessor 110 oder die Software 120 zu lesen und/oder zu beschreiben.The I / O device or I / O devices 140 For example, network interface cards, communication ports, video controllers, hard disk controllers, system busses and controllers (eg, PCI, ISA, AGP), or devices integrated with the platform chipset logic or processor (e.g., real-time clocks, programmable clocks, power meter). Some or all I / O devices 140 may have a direct memory access (DMA) capability, which allows them to access the memory 130 regardless of the control by the processor 110 or the software 120 to read and / or describe.

Der Speicher 130 kann eine Festplatte, eine Diskette, ein Schreib-Lese-Speicher (RAM), ein Zwischenspeicher, ein Lese-Speicher (ROM), ein Flash-Speicher, ein statischer Schreib-Lese-Speicher (SRAM), eine Kombination der genannten Vorrichtungen oder jede andere Art von Speichermedium sein, auf die der Prozessor 110 zugreifen kann. Der Speicher 130 kann Instruktionen und/oder Daten zum Durchführen der Verfahrensausführungsformen der vorliegenden Erfindung speichern. Der Speicher 130 kann ein öffentlich zugänglicher Bereich einer Registerdatei des Prozessors sein, oder er kann ein Bereich außerhalb des Prozessors sein, wie z. B. der Hauptspeicher. The memory 130 For example, a hard disk, a floppy disk, a random access memory (RAM), a cache, a read only memory (ROM), a flash memory, a static random access memory (SRAM), a combination of said devices, or any other type of storage medium to which the processor 110 can access. The memory 130 may store instructions and / or data for carrying out the method embodiments of the present invention. The memory 130 may be a publicly accessible portion of a register file of the processor, or it may be an area external to the processor, such as an external portion of the processor. B. the main memory.

Daten zum Status der Maschine 112, wie z. B. der Inhalt bestimmter interner Register 114, wird in einen Privatstatusbereich 132 im Speicher 130 geschrieben, wo die geschriebenen Statusdaten „codiert” oder „verschleiert” werden. Obwohl also der Ort, an den die Statusdaten geschrieben werden, öffentlich ist, indem von den E/A-Vorrichtungen oder der Software 120 (z. B. dem Betriebssystem 122 oder Applikationssoftware 124), die auf der Plattform-Hardware 102 läuft, auf ihn zugegriffen werden kann, macht es die Codierung schwierig, die Statusdaten in einem angemessenen Zeitrahmen zurückzuentwickeln (d. h. zu decodieren). Wenn die Statusdaten aus dem Speicher 130 abgerufen werden sollen, wird ein vorgegebener Decodierungsprozeß, z. B. ein vom Prozessor initiierter Decodierungsprozeß, der von dem Prozessorhersteller definiert wird, angewandt. Die Kontrolle über den Decodierungsprozeß kann mit bestimmten Prozessorfunktionen verbunden sein, wie z. B. spezifischen Instruktionen und Steuersignalen, wie weiter unten erläutert werden soll. Nicht vorgegebene Verfahren (alternative Softwareinstruktionen und Algorithmen) zum Zugreifen auf Statusdaten würden diese Steuerungen nicht aktivieren und könnten deshalb kostenintensiver sein.Data on the status of the machine 112 , such as For example, the content of certain internal registers 114 , becomes a private status area 132 In the storage room 130 where the written status data is "coded" or "obfuscated". Thus, although the location to which the status data is written is public, by the I / O devices or the software 120 (eg the operating system 122 or application software 124 ) on the platform hardware 102 running, the encoding makes it difficult to reverse engineer (ie decode) the status data in a timely manner. When the status data is out of memory 130 be retrieved, a predetermined decoding process, for. For example, a processor initiated decoding process defined by the processor manufacturer is used. Control over the decoding process may be associated with certain processor functions, such as: As specific instructions and control signals, as will be explained below. Unspecified procedures (alternative software instructions and algorithms) for accessing status data would not activate these controls and could therefore be more costly.

Die abgerufenen Daten können dann in den lokalen Status 112 versetzt werden, der für Software 120 oder die E/A-Vorrichtungen 140 zugänglich sein kann oder nicht. Der lokale Status 112 können beispielsweise eine Region in einem internen Zwischenspeicher oder Register sein, die nicht für unkontrollierten Zugriff über die Instruction Set Architecture (ISA) zur Verfügung stehen. In einigen Fällen kann über Software oder andere externe Agenten (z. B. E/A-Vorrichtungen) nicht auf den lokalen Status zugegriffen werden. In einigen Fällen ist der lokale Status ganz oder teilweise für Software oder andere externe Agenten zugänglich. In anderen Fällen kann auf den lokalen Status indirekt über spezielle Schnittstellen (z. B. Instruktionen) zugegriffen werden. Da der lokale Status intern im Prozessor und im „öffentlichen” Speicher angeordnet ist, kann der Prozessor den Zugriff auf den lokalen Status strikt diktieren.The retrieved data can then be in local status 112 be moved for software 120 or the I / O devices 140 can be accessible or not. The local status 112 For example, a region may be in an internal cache or register that is not available for uncontrolled access through the Instruction Set Architecture (ISA). In some cases, software or other external agents (such as I / O devices) can not access the local state. In some cases, all or part of the local status is accessible to software or other external agents. In other cases, the local status can be accessed indirectly via special interfaces (eg instructions). Since the local state is internally located in the processor and "public" memory, the processor can strictly dictate access to the local state.

Obwohl die Statusdaten, die in den öffentlich zugänglichen Bereich des Speichers 130 geschrieben sind, in einer codierten Form vorliegen, kann von der Software eine herstellerdefinierte Instruktion benutzt werden, die Teil der ISA für den Prozessor sein kann, um die Daten aus dem Speicher 130 abzurufen. Die Codierung sollte stark genug sein, um Softwareentwickler davon abzuhalten, eine solche Instruktion zu umgeben, wenn sie Zugriff auf die Statusdaten suchen. Ein Beispiel der internen Logik, die zum Lesen oder Abrufen der Statusdaten unter Benutzung eines Mikrooperations- oder Hardware-Steuersignals aus dem Speicher benötigt wird, soll weiter unten unter Bezugnahme auf 5 beschrieben werden.Although the status data in the publicly accessible area of the memory 130 may be in coded form, the software may use a vendor-defined instruction that may be part of the ISA for the processor to retrieve the data from memory 130 retrieve. The encoding should be strong enough to prevent software developers from surrounding such an instruction when seeking access to the status data. An example of the internal logic needed to read or fetch the status data from memory using a micro-operation or hardware control signal will be described below with reference to FIG 5 to be discribed.

In einer Ausführungsform muß der benutzte Codierungsprozeß nur stark genug sein, um einen Autor der Software 120 dazu zu veranlassen, beim Schreiben der Software ein Verfahren anzuwenden, das von einem Hersteller des Prozessors zum Zugreifen auf die Statusdaten von dem Speicher vorgegeben ist, anstatt das Verfahren zu umgehen. In anderen Fällen kann die Codierung stärker sein, wenn der Hersteller es dem Softwareentwickler erschweren möchte, auf die in dem Speicher vorhandenen Statusdaten (einschließlich bestimmter Werte, ihres Ortes, ihrer Semantik oder ihres Formats) zuzugreifen und sich auf diese zu verlassen.In one embodiment, the encoding process used need only be strong enough to be an author of the software 120 to cause the software to write using a method dictated by a manufacturer of the processor to access the status data from the memory instead of bypassing the method. In other cases, the coding may be stronger if the manufacturer wants to make it difficult for the software developer to access and rely on the status data (including certain values, location, semantics or format) present in the memory.

Steuersignale, die benutzt werden, um die Codierung und Decodierung der Privatstatusdaten zu steuern, können an Hardware-Statusmaschinen, Prozessorinstruktionen (auch bekannt als Makroinstruktionen), Betriebsmodi (z. B. PAL-Modi) oder Mode-Bits oder Instruktionsoperationsgruppen, Mikrocodes oder Mikrocode-Operationen (UOPs) und Hardware-Steuersignale oder Ereignisse gekoppelt oder für diese zugänglich sein.Control signals used to control the encoding and decoding of the private status data may be sent to hardware state machines, processor instructions (also known as macro instructions), operating modes (e.g., PAL modes), or mode bits or instruction operation groups, microcodes, or microcode Operations (UOPs) and hardware control signals or events may be coupled to or accessible to them.

Es können verschiedene Arten von Codierungsprozessen benutzt werden. Die Daten, die in die Privatstatusregion des Speichers geschrieben werden, können vor der Speicherung verändert werden. Diese Art des Codierungsprozesses wird als Datencodierung bezeichnet. Alternativ können die Adressen verändert werden, die benutzt werden, um auf Privatstatusdaten in Privatstatusregionen zuzugreifen. Diese Art Codierungsprozeß wird als Adreßverschleierung bezeichnet, und die Umwandlung von der Originaladresse in die verschleierte Adresse wird als Adressenzuordnung bezeichnet. Datencodierung und Adreßverschleierung werden im folgenden beschrieben.Various types of coding processes can be used. The data written to the private status region of the memory may be changed prior to storage. This type of encoding process is called data encoding. Alternatively, the addresses used to access private status data in private status regions may be changed. This type of encoding process is referred to as address veiling, and the conversion from the original address to the veiled address is referred to as address mapping. Data encoding and address obfuscation are described below.

Codierungsprozesse können entweder statisch oder dynamisch sein. Statische Codierungen verändern sich nicht im Laufe der Zeit, während die Maschine läuft (und den Codierungsprozeß durchführt). (Statische Codierungen können während der Initialisierung bzw. der Zurücksetzung des Prozessors oder während der Startphase neu konfiguriert werden, jedoch nicht später während des Betriebs.) Ein Prozeß, der statische Codierungen erzeugt, wird als eine statische Verschleierung bezeichnet.Encoding processes can be either static or dynamic. Static encodings do not change over time while the machine is running (and performing the encoding process). (Static codes can be used during the Initialization, or during the startup phase, but not later during operation.) A process that generates static encodings is referred to as static obfuscation.

Beispielsweise kann sich ein Speicherformat des Inhalts eines bestimmten Elements von Privatstatusdaten, wie es in den Speicher 130 geschrieben ist, verändern, während die Maschine ausführt. Dies wird als dynamische Verschleierung bezeichnet. Beispielsweise kann das Format immer dann nach einer zufälligen oder pseudozufälligen Sequenz (die der Prozessor erzeugt und verfolgt) zwischen Big-Endian und Little-Endian wechseln, wenn die Statusdaten in den Speicher geschrieben werden müssen; dieser Wechsel kann nur die Speicherregion(en) beeinflussen, aus der oder denen die Privatdaten abgelesen oder in die sie hineingeschrieben werden. Wiederum besteht hier die Absicht, das schnelle Rückentwickeln und Decodieren der Statusdaten aus einer Speicherregion in Speicher 130 zu erschweren, die öffentlich zugänglich ist.For example, a storage format may contain the contents of a particular item of private state data, such as memory 130 written, change while the machine is running. This is called dynamic obfuscation. For example, the format may switch between big-endian and little-endian after a random or pseudorandom sequence (which the processor generates and tracks) whenever the status data needs to be written to memory; this change can only affect the memory region (s) from which the private data is read or written to. Again, the intention here is to rapidly rebuild and decode the status data from a memory region in memory 130 difficult to make public.

In einer Ausführungsform werden Privatstatusdaten, wenn sie in einen Speicher geschrieben werden sollen, in eine Speicherregion (z. B. den Hauptspeicher) geschrieben, der zusammenhängende Adressen aufweist. In anderen Ausführungsformen ist der Privatdatenbereich nicht zusammenhängend und besteht aus mehr als einer gesonderten Speicherregion. Es ist nicht nötig, daß die Codierung die Privatstatusregion vollständig besetzt; d. h., einige Bits oder Bytes bleiben ungenutzt. Es kann ein gewisses Maß an Freiheit beim Entwerfen der Codierungs- und/oder Verschleierungsfunktionen erreicht werden, indem die Größe der Privatstatusregion geändert wird, indem sie beispielsweise größer ausgebildet wird, als dies strenggenommen zum Speichern der Privatdaten notwendig wäre. (Dies würde beispielsweise, wie später beschrieben, die Benutzung größerer Polynome im MISR (Multiple Input Shift Register) erlauben.)In one embodiment, private state data, when it is to be written to memory, is written to a memory region (eg, main memory) that has contiguous addresses. In other embodiments, the private data area is contiguous and consists of more than one separate storage region. It is not necessary that the coding completely occupy the private status region; d. h., some bits or bytes are left unused. Some degree of freedom in designing the encoding and / or obfuscation functions can be achieved by changing the size of the private status region, for example, by making it larger than strictly necessary to store the private data. (For example, this would allow the use of larger polynomials in the Multiple Input Shift Register (MISR), as described later.)

In einer Ausführungsform wird ein Multibyte-Wert (z. B. eine 32-Bit „lange” ganze Zahl) von Statusdaten in mehrere Teile aufgeteilt, die dann statt in einer Sequenz an nicht zusammenhängenden Orten gespeichert werden. Auf diese Weise kann ein 4-Byte-Wert in vier 1-Byte-Werte aufgeteilt werden, die an nicht zusammenhängenden Orten in einer Privatstatusregion gespeichert werden. Die Orte, an denen die vier 1-Byte-Werte gespeichert sind, können einem dynamischen und zufälligen Wechsel unterliegen, während die Maschine arbeitet. Natürlich sollten die Ausführungsformen auch dazu in der Lage sein, solche Daten zu lokalisieren und zu decodieren. Es ist zu beachten, daß die ISA bestimmte Anforderungen hinsichtlich der Atomarität der Zugriffe aufstellen kann, für den Fall, daß einzelne Datenwerte unter Benutzung multipler Speicherzugriffe gespeichert oder geladen werden.In one embodiment, a multibyte value (eg, a 32-bit "long" integer) of status data is divided into multiple parts, which are then stored in non-contiguous locations rather than in a sequence. In this way, a 4-byte value can be divided into four 1-byte values stored in non-contiguous locations in a private state region. The locations where the four 1-byte values are stored may undergo a dynamic and random change while the machine is operating. Of course, the embodiments should also be able to locate and decode such data. It should be noted that the ISA may impose certain requirements regarding the atomicity of the accesses in the event that individual data values are stored or loaded using multiple memory accesses.

In einer Ausführungsform der Erfindung werden die Adreßbits codiert, die zum Speicherzugriff benutzt werden. Diese Codierung von Adreßbits kann die Reihenfolge der Adreßbits (oder der Adreßbitgruppen) verändern. Ein Beispiel dafür kann das Umstellen vom Little-Endian-Format auf ein Big-Endian-Format innerhalb eines bestimmten Speicherbereichs sein. Andere Adreßmischzuordnungen sind möglich, wobei einige komplexere Umwandlungen umfassen.In one embodiment of the invention, the address bits used for memory access are encoded. This coding of address bits can change the order of the address bits (or address bit groups). An example of this may be moving from little-endian format to big-endian format within a particular memory area. Other address mixes are possible, with some involving more complex conversions.

Eine andere Art Adreßcodierung ordnet einen Satz von einzigartigen Adressen K einem anderen Satz von einzigartigen Adressen K zu; das heißt, daß das Zuordnen mathematisch gesehen bijektiv ist (sowohl injektiv (eins zu eins) als auch surjektiv (zu)). Hier können die oberen Adreßbits unverändert bleiben, während die unteren Adreßbits modifiziert werden. In solchen Fällen ist es möglich, Zuordnungen zu bilden, die einen bestimmten Speicherbereich sich selbst zuordnen. Das heißt, die Basis-Adreßverschiebung des Speicherabschnitts ist dieselbe, und die Größe der Speicherregion ist dieselbe. Dies ist eine attraktive Lösung, da nur die Daten innerhalb des Speicherabschnitts „verschleiert” werden. Das heißt, nur die Adreßbits innerhalb des Speicherabschnitts werden gemischt. 4 und 6 stellen Beispiele einer solchen Zuordnung und zugehöriger Adreßmischmechanismen dar.Another type of address coding assigns a set of unique addresses K to a different set of unique addresses K; that is, the assignment is mathematically bijective (both injective (one-to-one) and surjective (to)). Here, the upper address bits can remain unchanged while the lower address bits are modified. In such cases, it is possible to form mappings that map a particular memory area to itself. That is, the base address shift of the storage section is the same, and the size of the storage region is the same. This is an attractive solution because only the data within the memory section is "obfuscated". That is, only the address bits within the memory section are mixed. 4 and 6 illustrate examples of such an association and associated address mixing mechanisms.

Adreßverschleierungsmechanismen sind leichter benutzbar, wenn die Privatstatusregionen eine Größe oder eine Basisadresse aufweisen, die Potenzen der zugrundeliegenden N-ären Logik sind. Die meisten gegenwärtigen Prozessoren benutzen Binärlogik, weshalb Privatstatusregionen mit einer Größe oder Basisadresse, die eine Potenz von 2 ist, zu bevorzugen sind. (Es werden hier Binärlogik und -arithmetik behandelt, doch können bei Bedarf auch N-äre Logik und Arithmetik benutzt werden und werden im Allgemeinfall angenommen.) Filter und andere Mechanismen können benutzt werden, um Privatstatusregionen mit einer Größe oder Basisadresse zu verwalten, die nicht Potenzen der N-ären Logik sind. Solche Adreßbit-Manipulationen können neben verschiedenen Speicheranordnungen und virtuellen Speicherverfahren (z. B. Seitenorientierung, Segmentierung usw.) existieren.Address veiling mechanisms are easier to use when the private status regions have a size or base address that is powers of the underlying N-ary logic. Most current processors use binary logic, which is why private status regions with a size or base address that is a power of 2 are preferable. (Binary logic and arithmetic are treated here, but N-ary logic and arithmetic can be used if needed and are generally accepted.) Filters and other mechanisms can be used to manage private status regions with a size or base address that is not Powers of N-ary logic are. Such address bit manipulations may exist in addition to various memory arrangements and virtual memory methods (eg, page orientation, segmentation, etc.).

Adreßverschleierungsmechanismen können die Datenanordnung im Speicher verändern und dazu dienen, die Daten zu mischen, bisweilen jedoch nur mit einer Granularität des Speichers. Bei den meisten gegenwärtigen Prozessoren ist der Hauptspeicher Byteadressierbar, weshalb der Ort individueller Bytes eines Datenelements innerhalb der Privatstatusregion neu angeordnet werden kann, wobei jedoch die Datenbits innerhalb individueller Bytes nicht durch die Adreßverschleierung verändert werden (obwohl sie durch Datencodierungsmechanismen verändert werden können).Address veiling mechanisms may alter the data arrangement in memory and serve to mix the data, but sometimes only with granularity of the memory. For most current processors, the main memory is byte-addressable, and therefore the location of individual bytes of a data item within the private status region can be rearranged, however, the data bits within individual bytes are not altered by the address veiling (although they may be altered by data encoding mechanisms).

Bei diesen Ausführungsformen der Adreßzuordnung können die ursprünglichen Adreßzuordnungen durch einen Decodierungsprozeß extrahiert werden. Diese Extraktion ist die Anwendung einer Umkehrfunktion der Adreßzuordnungsfunktion. Die Auswahl der Zuordnungsfunktion kann unter Berücksichtigung dieser Anforderung erfolgen, da nicht alle Adreßzuordnungsfunktionen umkehrbar sind.In these address mapping embodiments, the original address assignments may be extracted by a decoding process. This extraction is the application of an inverse function of the address assignment function. The selection of the assignment function can take place in consideration of this requirement, since not all address assignment functions are reversible.

Eine Ausführungsform der Erfindung codiert die Datenbits, die in den Speicher geschrieben werden. Diese Datencodierungen können die Daten umformen, die in der Privatstatusregion gespeichert werden, ohne notwendigerweise von Adressierbarkeitsbeschränkungen eingeschränkt zu werden, wie z. B. der Größe des adressierbaren Speichers. Datensegmente können mit anderen Datensegmenten vertauscht werden. Beispielsweise können zwei Halbbytes (d. h. 4-Bit-Segmente in einem Byte) innerhalb jedes Byte vertauscht werden. Datencodierungen können bitweise exklusiv-OR innerhalb einer konstanten XOR-Maske erfolgen. Daten können auch bitweise exklusiv-OR mit der Ausgabe eines MISR (Multiple Input Feedback Shift Register) codiert werden. Datencodierungen können unter Benutzung einer kryptographischen Funktion erfolgen. In diesen Ausführungsformen können die Originaldaten durch einen Decodierungsprozeß extrahiert werden. Dieser Decodierungsprozeß sollte sicherstellen, daß er schneller ist als Decodierungsverfahren, die der Software zur Verfügung stehen, die auf der Plattform läuft (z. B. Benutzung von ISA-definierten Lade- und Speicheroperationen, mathematische Operationen usw.). Die Tabellen 470 und 480 aus 4 zeigen beispielsweise die Benutzung eines Vigenère-artigen Chiffre, der auf Daten (Bytes) innerhalb eines bestimmten 16-Byte-Abschnitts der Speicheradressen angewandt wird.An embodiment of the invention encodes the data bits written to memory. These data encodings can transform the data stored in the private state region without necessarily being constrained by addressability constraints, such as: B. the size of the addressable memory. Data segments can be swapped with other data segments. For example, two nibbles (ie, 4-bit segments in one byte) within each byte may be swapped. Data encodings can be bitwise exclusive OR within a constant XOR mask. Data can also be encoded bit by bit exclusive OR with the output of a MISR (Multiple Input Feedback Shift Register). Data encodings can be done using a cryptographic function. In these embodiments, the original data may be extracted by a decoding process. This decoding process should ensure that it is faster than decoding techniques available to the software running on the platform (eg, use of ISA-defined load and store operations, mathematical operations, etc.). The charts 470 and 480 out 4 show, for example, the use of a Vigenère type cipher applied to data (bytes) within a particular 16-byte portion of the memory addresses.

Einige der oben genannten Ausführungsformen können mit statischen Zuordnungen implementiert werden. Das heißt, sie verändern sich während der Betriebszeit von Prozessor oder Plattform nicht. Geeignete Zuordnungen können zum Zeitpunkt des Entwurfs, während der Herstellung, nach der Herstellung oder zu einem frühen Zeitpunkt des Systembetriebs (z. B. während des Systemstarts, beim Einschalten des Systems, bei Zurücksetzen des Prozessors) eingestellt werden. Verschiedene Prozessoren können, müssen aber nicht mit denselben statischen Zuordnungen konfiguriert sein. Wenn Zuordnungen nicht festgelegt sind, bis das System betriebsbereit ist (z. B. zum Systemstart), ist es möglich, bei jedem Prozessorstart eine neue Zuordnung zu wählen. In einer Ausführungsform können verschiedene Steuerungsgruppen (z. B. Betriebsmodi, Gruppen von Instruktionen) jeweils eine unterschiedliche Zuordnungskonfiguration benutzen. Innerhalb einer Steuerungsgruppe bleiben die Zuordnungen konstant. Zwischen Instruktionsgruppen oder Modi können die Zuordnungen jedoch unterschiedlich sein (müssen dies aber nicht).Some of the above embodiments may be implemented with static mappings. That is, they do not change during the operating time of the processor or platform. Suitable assignments may be made at the time of design, during manufacture, after manufacture, or early in system operation (eg, during system boot, when the system is powered up, when the processor is reset). Different processors may or may not be configured with the same static mappings. If mappings are not set until the system is ready (for example, at system startup), it is possible to choose a new mappings each time the processor starts up. In one embodiment, different control groups (eg, operation modes, groups of instructions) may each use a different assignment configuration. Within a control group, the assignments remain constant. However, between instruction groups or modes, the mappings may or may not be different.

Andere Ausführungsformen können mit dynamischen Zuordnungen implementiert sein, die sich verändern, während der Prozessor arbeitet. In einer Ausführungsform können sich Zuordnungskonfigurationen nur dann ändern, wenn gegenwärtig keine verbleibenden codierten Daten in einer Privatstatusregion des Speichers gespeichert sind. Diese Ausführungsform kann einen Zähler benutzen, der erhöht wird, wenn codierte Daten in eine Privatstatusregion des Speichers geschrieben werden, sodaß diese aktiviert wird. Der Zähler wird herabgesetzt, wenn die Privatstatusregion nicht länger als aktiv betrachtet wird. Wenn der Zähler null ist, kann die Zuordnungskonfiguration geändert werden. In einer Ausführungsform wird die Zuordnungskonfiguration für jede Privatstatusregion in einem Zuordnungsdeskriptor gespeichert. Der Zuordnungsdeskriptor kann an einem bekannten, nicht codierten Ort innerhalb der Privatstatusregion selbst gespeichert oder separat durch eine Verfolgungsstruktur wie z. B. eine Warteschlange oder eine Suchtabelle verwaltet werden, die innerhalb oder außerhalb des Prozessors vorgesehen sein kann. In einer Ausführungsform sind unterschiedliche Zuordnungen für jede Privatstatusregion möglich.Other embodiments may be implemented with dynamic allocations that change while the processor is operating. In one embodiment, mapping configurations may only change if no remaining encoded data is currently stored in a private status region of the memory. This embodiment may use a counter which is incremented when coded data is written to a private status region of the memory so that it is activated. The counter is decremented if the Private Status region is no longer considered active. If the counter is zero, the mapping configuration can be changed. In one embodiment, the mapping configuration for each private state region is stored in a mapping descriptor. The assignment descriptor may be stored at a known unencoded location within the private status region itself or separated by a tracking structure such as a tracking structure. For example, a queue or look-up table may be maintained that may be internal or external to the processor. In one embodiment, different associations are possible for each private status region.

2 zeigt Prozeß 200 zum Lesen eines codierten Privatstatus-Datenwerts aus einer Privatstatus-Speicherregion gemäß einer Ausführungsform der Erfindung. Der Prozeß kann durch eine Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie sie beispielsweise auf einem allgemein einsetzbaren Computersystem oder einer dedizierten Maschine läuft), oder eine Kombination der beiden umfassen. In einer Ausführungsform ist die Verarbeitungslogik in Prozessor 110 aus 1 implementiert. 2 shows process 200 for reading a coded private state data value from a private state memory region according to an embodiment of the invention. The process may be performed by processing logic, hardware (eg, circuitry, dedicated logic, programmable logic, microcode, etc.), software (such as running on a general purpose computer system or dedicated machine), or a combination of the two both include. In one embodiment, the processing logic is in processor 110 out 1 implemented.

Bezugnehmend auf 2 beginnt Prozeß 200 damit, daß die Verarbeitungslogik eine Adresse für das Datenelement bestimmt (Verarbeitungsblock 202). Als nächstes bestimmt die Prozeßlogik, ob das Datenelement in codierter Form in einer Privatstatusregion des Speichers gespeichert ist (Verarbeitungsblock 204).Referring to 2 begins process 200 in that the processing logic determines an address for the data element (processing block 202 ). Next, the process logic determines whether the data item is stored in coded form in a private status region of the memory (processing block 204 ).

Eine Ausführungsform der Erfindung benutzt ein Mikrocode-erzeugtes oder Hardware-erzeugtes Steuersignal, das der Verarbeitungslogik anzeigt, daß das abgefragte Datenelement einer Decodierung bedarf. Eine Abwesenheit dieses Signals führt dazu, daß der NEIN-Pfad zu Block 250 genommen wird.One embodiment of the invention utilizes a microcode-generated or hardware-generated control signal that indicates to the processing logic that the interrogated data item requires decoding. An absence of this signal causes the NO path to block 250 is taken.

Wenn das Datenelement nicht decodiert werden soll, geht die Verarbeitungslogik zu Verarbeitungsblock 250 über, wo sie ein Datenelement aus dem Speicher unter der Adresse lädt, die im Verarbeitungsblock 202 bestimmt wurde. Der Prozeß kann dann enden. Die geladenen Daten werden nicht decodiert; das heißt, keine Adreß- oder Datendecodierung wird durchgeführt. Es ist zu beachten, daß die Daten, die auf diesem Pfad gelesen werden, gewöhnlicher Art sein können (d. h. keine Privatstatusdaten sind), oder Privatstatusdaten in codierter Form sein können (auf die aber in einer nicht vorgegebenen Art und Weise zugegriffen wurde). If the data item is not to be decoded, the processing logic goes to processing block 250 over where it loads a data item from memory at the address in the processing block 202 was determined. The process can then end. The loaded data will not be decoded; that is, no address or data decoding is performed. It should be noted that the data read on this path may be of an ordinary nature (ie, are not private state data) or private state data may be in coded form (but accessed in an undefined manner).

Wenn allerdings das Datenelement decodiert werden soll, bestimmt die Verarbeitungslogik als nächstes anhand der Adresse, die in Verarbeitungsblock 202 bestimmt wurde, die Adresse, unter der es gespeichert ist (die Adresse kann verschleiert sein) (Verarbeitungsblock 210). Die Verarbeitungslogik lädt als nächstes das codierte Datenelement aus dem Speicher unter der Adresse, die in Verarbeitungsblock 210 bestimmt wurde (Verarbeitungsblock 220). Die Verarbeitungslogik decodiert dann das Datenelement, das in Verarbeitungsschritt 220 aus der Privatstatusregion des Speichers geladen wurde (Verarbeitungsblock 230). Der decodierte Wert ist ein Ergebnis von Prozeß 200. Der Prozeß kann dann enden. Oft wird der decodierte Zustand in einem Privatstatus-Zwischenspeicher oder dem privaten lokalen Zustand des Prozessors abgelegt.However, if the data item is to be decoded, the processing logic next determines from the address written in processing block 202 was determined, the address under which it is stored (the address may be obfuscated) (processing block 210 ). The processing logic next loads the encoded data item from memory at the address that is in processing block 210 was determined (processing block 220 ). The processing logic then decodes the data item in the processing step 220 has been loaded from the private status region of the memory (processing block 230 ). The decoded value is a result of the process 200 , The process can then end. Often, the decoded state is stored in a private state cache or the private local state of the processor.

3 zeigt Prozeß 300 zum Speichern eines Privatstatus-Datenwerts in einer Privatstatusregion des Speichers gemäß einer Ausführungsform der Erfindung. Der Prozeß kann durch eine Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Schaltungen, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie sie beispielsweise auf einem allgemein einsetzbaren Computersystem oder einer dedizierten Maschine läuft), oder eine Kombination der beiden umfassen. In einer Ausführungsform ist die Verarbeitungslogik in Prozessor 110 aus 1 implementiert. 3 shows process 300 for storing a private status data value in a private status region of the memory according to an embodiment of the invention. The process may be performed by processing logic, hardware (eg, circuitry, dedicated logic, programmable logic, microcode, etc.), software (such as running on a general purpose computer system or dedicated machine), or a combination of the two both include. In one embodiment, the processing logic is in processor 110 out 1 implemented.

Bezugnehmend auf 3 beginnt Prozeß 300 damit, daß die Verarbeitungslogik einen Datenwert und eine Speicheradresse eines Datenelements bestimmt (Verarbeitungsblock 302). Als nächstes bestimmt die Verarbeitungslogik, ob das zu speichernde Datenelement ein Privatstatuselement ist, das in codierter Form in einer Privatstatusregion des Speichers gespeichert werden soll (Verarbeitungsblock 304).Referring to 3 begins process 300 in that the processing logic determines a data value and a memory address of a data element (processing block 302 ). Next, the processing logic determines whether the data item to be stored is a private status item to be stored in coded form in a private status region of the memory (processing block 304 ).

Eine Ausführungsform der Erfindung benutzt ein Mikrocode-erzeugtes oder Hardware-erzeugtes Steuersignal, um der Verarbeitungslogik anzuzeigen, daß das geschriebene Datenelement einer Codierung bedarf. Eine Abwesenheit dieses Signals führt dazu, daß der NEIN-Pfad zu Block 350 eingeschlagen wird.One embodiment of the invention uses a microcode-generated or hardware-generated control signal to indicate to the processing logic that the written data item requires coding. An absence of this signal causes the NO path to block 350 is taken.

Wenn das Datenelement nicht in codierter Form in einer Privatstatusregion gespeichert werden soll, geht die Verarbeitungslogik zu Verarbeitungsblock 350 über, wo sie das Datenelement in uncodierter (unmodifizierter) Form im Speicher unter der Adresse speichert, die im Verarbeitungsblock 302 bestimmt wurde. Der Prozeß kann dann enden. Die geschriebenen Daten werden nicht codiert.If the data item is not to be stored in coded form in a private status region, the processing logic goes to processing block 350 where it stores the data item in uncoded (unmodified) form in memory at the address in the processing block 302 was determined. The process can then end. The written data is not coded.

Wenn allerdings das Datenelement in codierter Form in einer Privatstatusregion gespeichert werden soll, codiert die Verarbeitungslogik als nächstes das Datenelement (Verarbeitungsblock 310) und bestimmt eine verschleierte Adresse, unter der das Datenelement zu speichern ist (Verarbeitungsblock 320). Die Verarbeitungslogik speichert dann das nun codierte Datenelement im Speicher unter der Adresse, die in Verarbeitungsblock 320 bestimmt wurde (Verarbeitungsblock 330). Der Prozeß kann dann enden.However, if the data item is to be stored in coded form in a private status region, the processing logic next encodes the data item (processing block 310 ) and determines a concealed address under which the data item is to be stored (processing block 320 ). The processing logic then stores the now encoded data item in memory at the address specified in processing block 320 was determined (processing block 330 ). The process can then end.

Es ist zu beachten, daß die Verarbeitung, die in Verarbeitungsblock 310 und Verarbeitungsblock 320 durchgeführt wird, auch in umgekehrter Reihenfolge durchgeführt werden kann, d. h. die Verschleierung des Adreßwertes erfolgt vor der Codierung der Daten. Einige Ausführungsformen führen nur einen und nicht beide Verarbeitungsblöcke durch. Einige Ausführungsformen können die Verarbeitungsblöcke parallel ausführen.It should be noted that the processing used in processing block 310 and processing block 320 is carried out, can also be performed in reverse order, ie the obfuscation of the address value takes place before the encoding of the data. Some embodiments perform only one and not both processing blocks. Some embodiments may execute the processing blocks in parallel.

Bezugnehmend auf 4 ist ein Computersystem 402 in Form eines Blockdiagramms dargestellt. Dieses System 402 weist einen Prozessor 404 auf, der dazu entworfen ist, die Methodologie zu unterstützen, die oben zum Verschleiern der Privatstatusdaten im Speicher beschrieben wurde. Der Prozessor 404 weist einen Standardzwischenspeicher 410 und einen Privatzwischenspeicher 416 auf, wobei auf den letzteren auf dem System 402 ausgeführte Software nicht zugreifen kann und er dazu benutzt wird, die Privatstatusdaten in einer nicht codierten (nicht verschleierten Form) zu speichern. In dieser Ausführungsform ist ein System-Chipsatz 406 vorgesehen, um es dem Prozessor 404 zu ermöglichen, mit dem Speicher 408 zu kommunizieren. Der Chipsatz 406 kann eine Speichersteuerung (nicht dargestellt) sowie sonstige Logik umfassen, die benötigt wird, um eine Schnittstelle zu den Peripheriegeräten eines Computers (ebenfalls nicht dargestellt) herzustellen. In einigen Ausführungsformen kann die Funktionalität des Chipsatzes 406 oder ein funktionaler Untersatz im Prozessor 404 implementiert sein.Referring to 4 is a computer system 402 shown in the form of a block diagram. This system 402 has a processor 404 Designed to support the methodology described above for obfuscating private state data in memory. The processor 404 has a default cache 410 and a private cache 416 on, being on the latter on the system 402 can not access running software and is used to store the private state data in a non-encoded (non-obfuscated) form. In this embodiment, a system chipset is 406 provided to the processor 404 to allow with the memory 408 to communicate. The chipset 406 may include a memory controller (not shown) and other logic needed to interface with the peripherals of a computer (also not shown). In some embodiments, the functionality of the chipset 406 or a functional subset in the processor 404 be implemented.

In 4 ist der Speicher 408 gezeigt, wie er in einer öffentlich zugänglichen Region 418 die codierten Privatstatusdaten des Prozessors 404 speichert. Dies ist ein Beispiel, wobei eine Chiffre auf die Werte des internen Prozessorstatus des Prozessors 404 angewandt wurde, sodaß die tatsächlichen Werte nicht durch einfaches Überwachen und Lesen des Speichers 408 leicht abgerufen oder zurückentwickelt werden können.In 4 is the memory 408 shown as he is in a publicly accessible region 418 the coded private status data of the processor 404 stores. This is an example where a cipher refers to the values of the internal processor state of the processor 404 was applied so that the actual values are not obtained by simply monitoring and reading the memory 408 easily retrieved or reverse developed.

Wie oben beschrieben, kann die Verschleierung von Daten, die in der codierten Privatstatusregion 418 gespeichert sind, auf verschiedenen Wegen erzielt werden. 4 zeigt ein Beispiel eines solchen Mechanismus, wobei sowohl die Datenwerte codiert werden als auch das Datenlayout codiert/verschleiert wird. Erste Datenwerte in Tabelle 470 sind mit Hilfe einer Vigenère-Chiffre codiert, wodurch sich die Datenwerte ergeben, die in Tabelle 480 (im Folgenden beschrieben) gezeigt sind. Dann wird eine spezielle Zuordnung von logischen Adreßwerten der Privatstatusdaten zu physikalischen Adreßwerten angewandet, wobei die Zuordnungsresultate in Tabelle 490 dargestellt sind. Die physikalischen Adressen geben vor, wo die Privatstatusdaten tatsächlich im Speicher gespeichert werden. Von den physikalischen Adressen kann also gesagt werden, daß sie aus einer Codierung der logischen Adressen resultieren.As described above, the obfuscation of data stored in the coded private status region 418 are achieved in different ways. 4 shows an example of such a mechanism wherein both the data values are encoded and the data layout is encoded / obfuscated. First data values in table 470 are encoded using a Vigenère cipher, resulting in the data values shown in Table 480 (described below) are shown. Then a special assignment of logical address values of the private status data to physical address values is applied, the assignment results being shown in Table 490 are shown. The physical addresses specify where the private state data is actually stored in memory. The physical addresses can therefore be said to result from encoding the logical addresses.

Die Tabelle 470 in 4 namens „dechiffrierte Adreßdaten” weist eine Liste von Beispielen logischer Adressen und ihrer zugehörigen Privatstatusdatenwerte auf, die in nicht codierter Form in dem Zwischenspeicher 416 abgelegt sind. Hier wurden nur Null-Datenwerte ausgewählt, um die resultierende Codierung zu demonstrieren. Es ist zu beachten, daß ein „X” die nicht codierten oberen Bits der virtuellen und physikalischen Adressen der Statusdaten repräsentiert. Die Tabelle 490 namens „Privatstatus-Speicheradreßkarte” zeigt ein Beispiel für die Zuordnung zwischen nicht codierten und codierten Adressen. Hier sind nur die unteren 4 Bits codiert.The table 470 in 4 The "Decrypted Address Data" has a list of examples of logical addresses and their associated private state data values that are in uncoded form in the cache 416 are stored. Here, only null data values were selected to demonstrate the resulting encoding. It should be noted that an "X" represents the uncoded upper bits of the virtual and physical addresses of the status data. The table 490 named "Private State Memory Map" shows an example of mapping between non-encoded and encoded addresses. Here only the lower 4 bits are coded.

6 zeigt eine Ausführungsform einer programmierbaren (parametrisierten) Adreßzuordnungsfunktion, die in dem System aus 4 benutzt werden kann. In 6 würde das Polynom-Steuerregister 604 mit P0 = 1, P1 = 1, P2 = 0, P3 = 0 geladen, um das primitive Polynom x4 + x1 + x0 zu implementieren und das optionale Maskenregister 610 mit allen Nullwerten zu laden. Diese Logik ist eine Anwendung der Gleichungen, die allgemeine MISRs mit einer Bitbreite w bestimmen, und kann benutzt werden, um verschiedene Arten von Adreßcodierungs-Kombinationslogik zu konstruieren. Die parametrisierten MISR-Statusgleichungen sind: Si(t + 1) = Si-1(t) + Ii + (Pi·Sw-1(t)), 1 ≤ i ≤ w – 1 S0(t + 1) = I0 + (P0·Sw-1(t)) 6 FIG. 12 shows one embodiment of a programmable (parameterized) address mapping function that operates in the system 4 can be used. In 6 would be the polynomial control register 604 with P 0 = 1, P 1 = 1, P 2 = 0, P 3 = 0 loaded to implement the primitive polynomial x 4 + x 1 + x 0 and the optional mask register 610 to load with all zero values. This logic is an application of the equations that determine general MISRs with a bit width w, and can be used to construct various types of address coding combining logic. The parameterized MISR state equations are: S i (t + 1) = S i-1 (t) + I i + (P i * S w-1 (t)), 1 ≤ i ≤ w - 1 S 0 (t + 1) = I 0 + (P 0 * S w-1 (t))

Hier repräsentiert der Operator „+” eine Modulo-2-Addition (XOR) und „·” repräsentiert eine Modulo-2-Multiplikation (AND). Parameter „t” repräsentiert Zeit (Takte), S, den Status des i-ten Flipflop, Ii, das i-te Inputvektor-Bit, und Pi den i-sten Polynomkoeffizienten. Der Koeffizient Pw ist implizit 1. Um die Adreßmischausführungsform aus 4 zu erreichen, sind alle Si(t) mit den entsprechenden Adreßwerten Ai und Si(t + 1) mit Ausgabe Oi zu ersetzen. Andere Ausführungsformen sind möglich.Here, the operator "+" represents a modulo-2 addition (XOR) and "·" represents a modulo-2 multiplication (AND). Parameter "t" represents time (clocks), S, the status of the i-th flip-flop, I i , the ith input vector bit, and P i the i-th polynomial coefficient. The coefficient P w is implicitly 1. In order to handle the address mixing embodiment 4 To achieve, all S i (t) with the corresponding address values A i and S i (t + 1) to be replaced with output O i . Other embodiments are possible.

Primitive Polynome der Ordnung w sind insofern nützlich, als sie eine „maximale Sequenz” erzeugen können; das heißt, sie können alle Binärkombinationen oder -muster mit der Bitbreite w erzeugen. Es können primitive Polynome von bis zu 300 (Bitbreite 300) oder sogar höherer Ordnung benutzt werden.Primary polynomials of order w are useful in that they can produce a "maximal sequence"; that is, they can generate all binary combinations or patterns of bit width w. It can be primitive polynomials of up to 300 (bit width 300 ) or even higher order.

Um unter Benutzung von 4 die oben gezeigte Funktion zum Zugreifen auf Daten an der logischen Adreßverschiebung 0001 (wie in Eintrag 471 gezeigt) zu erläutern, wird auf den physikalischen Speicher an Ort 0010 zugegriffen (wie Eintrag 491 zeigt). Der zu dieser Adresse gehörende nicht codierte Inhaltswert (siehe Eintrag 471) besteht in diesem Fall ausschließlich aus Nullen. Wenn er allerdings, wie in Eintrag 481 gezeigt, in codierter Form gespeichert ist, erscheint eine Nicht-Null-Reihe (d. h. 11110101) in der öffentlichen Region 418 des Speichers 408. (Dieser Codierungschiffre wird an späterer Stelle genauer beschrieben.) Obwohl aus praktischen Gründen beschränkte Bitbreiten gezeigt sind, kann das Verfahren auf breitere oder parallele Bitscheibendaten angewandt werden.To use using 4 the function shown above for accessing data at the logical address offset 0001 (as in entry 471 to explain), the physical memory at location 0010 is accessed (as entry 491 shows). The unencoded content value belonging to this address (see entry 471 ) consists in this case exclusively of zeros. If he, however, as in entry 481 stored in coded form, a non-zero row (ie 11110101) appears in the public region 418 of the memory 408 , (This encoding cipher will be described in more detail later.) Although limited bit widths are shown for convenience, the method may be applied to wider or parallel bitmap data.

Speicherung und Abruf codierter Privatstatusdaten in Speicher 408, wie sie in 4 gezeigt sind, können unter Benutzung der logischen Blöcke aus 5 implementiert werden.Store and retrieve encoded private state data in memory 408 as they are in 4 can be shown using the logical blocks 5 be implemented.

Für dieses Beispiel wurde eine spezielle Mikrooperation (d. h. ein Steuersignal) für den Prozessor festgelegt, die (oder das) benutzt wird, wenn Privatstatusdaten im Speicher gespeichert oder aus diesem abgerufen werden.For this example, a special micro-operation (i.e., a control signal) has been set for the processor that will be used when storing or retrieving private status data in memory.

Eine Adreßerzeugungseinheit (AGU) 504 empfängt eine spezielle Mikrooperation und berechnet in dieser Ausführungsform eine logische Adresse mit einer hohen und einer niedrigen Komponente. In einer Ausführungsform ist die logische Adresse eine virtuelle Adresse. In einer anderen Ausführungsform, wie in 5 gezeigt, ist die logische Adresse eine lineare Adresse, wie sie in Intel® Pentium® Prozessoren zu finden ist. In einer weiteren Ausführungsform ist die logische Adresse eine physische Adresse, und es ist keine Übersetzung der hohen Adreßbits nötig. In 5 wird die hohe Komponente der Adresse einem linear-physikalischen Adreßübersetzungsblock (auch bezeichnet als Übersetzungspuffer oder TLB) 508 zugeführt, der diese hohe Komponente der linearen Adresse (die eine virtuelle Seitenzahl sein kann) in einen Teil einer physikalischen Adresse 509 übersetzt.An address generation unit (AGU) 504 receives a special micro-operation and in this embodiment calculates a logical address with a high and a low component. In one embodiment, the logical address is a virtual address. In another embodiment, as in 5 As shown, the logical address is a linear address as found in Intel® Pentium® processors. In another embodiment, the logical address is a physical address, and no translation of the high address bits is needed. In 5 the high component of the address is a linear-physical address translation block (also referred to as a translation buffer or TLB) 508 which supplies this high component of the linear address (which may be a virtual page number) into a part of a physical address 509 translated.

Eine Adreßverschleierungs- bzw. -codierungseinheit 514 soll in dieser Ausführungsform den niedrigen Teil des linearen Adreßwerts empfangen, der den jeweiligen Privatstatusdaten des Prozessors zugeordnet ist. In Reaktion darauf übersetzt die Adreßverschleierungseinheit 514 diese niedrige Komponente der linearen Adresse, um einen anderen Abschnitt der physikalischen Adresse 509 bereitzustellen. Der Wert dieses Abschnitts der physikalischen Adresse ist eine gemischte oder codierte Version der linearen Adresse, wie beispielsweise oben unter Bezugnahme auf 1 und 4 beschrieben.An address concealment unit 514 In this embodiment, it is intended to receive the low portion of the linear address value associated with the respective private state data of the processor. In response, the address veiling unit translates 514 this low component of the linear address to another section of the physical address 509 provide. The value of this portion of the physical address is a mixed or encoded version of the linear address, as described above with reference to FIG 1 and 4 described.

In einer Ausführungsform bestimmen die spezielle Mikrooperation oder das UOP-Signal (Steuersignal), ob die Adreßcodierungseinheit 514 die Adreßbits niedriger Ordnung codieren soll. Wenn das Steuersignal nicht bestätigt wird, können die Adreßbits niedriger Ordnung in nicht codierter Form durch die Einheit 514 oder an der Einheit 514 vorbei gelangen. Auch wenn das Codierungssteuersignal (oder die Signale) bestätigt werden, können einige Adreßbits uncodiert passieren. Dies kann geschehen, wenn beispielsweise nur eine Untergruppe der Adreßbits codiert werden muß, wenn die Privatstatus-Speicherregion kleiner ist als die Adreßraumgröße, die von den Bits niedriger Ordnung adressierbar ist. Andere Ausführungsformen existieren, wobei eine Adreßcodierung nach der linear-physikalischen Adreßübersetzung erfolgt und deshalb die Codierung von Adreßräumen ermöglicht wird, die größer als eine virtuelle Speicherseite sind. Ein Vorteil der in 5 gezeigten Ausführungsform ist, daß die linear-physikalische Übersetzung parallel zum Codierungsvorgang abläuft und nicht seriell, so daß sie potentiell schneller ist. Auch sind Codierungen oft nur für Privatstatus-Speicherregionen nötig, die kleiner sind als die virtuelle Speicherseitengröße.In one embodiment, the particular micro-operation or UOP signal (control signal) determines whether the address-coding unit 514 should encode the lower order address bits. If the control signal is not asserted, the lower order address bits may be in unencoded form by the unit 514 or at the unit 514 pass by. Even if the coding control signal (or signals) are acknowledged, some address bits may pass uncoded. This can be done, for example, if only a subset of the address bits need to be coded if the private state memory region is smaller than the address space size addressable by the lower order bits. Other embodiments exist wherein address coding occurs after the linear physical address translation and therefore allows the coding of address spaces larger than a virtual memory page. An advantage of in 5 In the embodiment shown, the linear-physical translation is parallel to the encoding process rather than serial, so that it is potentially faster. Also, encodings are often only needed for private state storage regions that are smaller than the virtual memory page size.

Die hohe Komponente der physikalischen Adresse (erzeugt von TLB 508) und die niedrige Komponente der physikalischen Adresse (erzeugt von der Adreßverschleierungs- bzw. -codierungseinheit 514) erzeugen, wenn sie verknüpft werden, eine physikalische Adresse 509, die auf den tatsächlichen Ort im Speicher 408 hinweist, wo die jeweiligen Statusdaten gespeichert sind. Die physikalische Adresse 509 wird in dieser Ausführungsform zunächst auf den Zwischenspeicher 410 angewandt, und wenn dies zu einem Fehlschlag führt, wird der Inhalt des Orts aus Speicher 408 abgerufen oder in Speicher 408 gespeichert (je nachdem, ob der Vorgang ein Lade- oder ein Speichervorgang ist). Andere Anordnungen der Speicherhierarchie sind möglich.The high component of the physical address (generated by TLB 508 ) and the low component of the physical address (generated by the address concealment unit 514 ), when linked, create a physical address 509 pointing to the actual place in the store 408 indicates where the respective status data is stored. The physical address 509 is first in this embodiment to the buffer 410 applied, and if this fails, the content of the location becomes memory 408 retrieved or in memory 408 stored (depending on whether the process is a load or a store). Other arrangements of the memory hierarchy are possible.

Es ist zu beachten, daß in dieser Ausführungsform eine Region im Speicher 408, die für die Speicherung der Privatstatusdaten bestimmt ist, nur einen Abschnitt der Seite einnehmen kann und am Rand einer virtuellen Speicherseite ausgerichtet sein kann. In diesem Fall passiert nur der Seitenverschiebungsabschnitt der linearen Adresse (also der niedrige Abschnitt der linearen Adresse) die Adreßverschleierungs- bzw. -codierungseinheit 514, um die codierte physikalische Seitenverschiebung zu erzeugen. Andere Implementierungen sind möglich. Zusätzlich kann die Adreßverschleierungs- bzw. -codierungseinheit 514 eine Bereichswahllogik enthalten, sodaß nur Adressen innerhalb spezifischer Regionen des Speichers codiert werden. Mit dieser Logik muß die Speicherregion nicht unbedingt am Rand einer virtuellen Speicherseite ausgerichtet sein oder eine Größe einer Potenz von 2 aufweisen. Intern kann die Adreßverschleierungs- bzw. -codierungseinheit 514 mit Hilfe von Mikrocode, Software, Suchtabellen, festverdrahteter Funktionslogik, programmierbarer Logik oder jeder Kombination dieser Verfahren implementiert werden (siehe 6 zu einem Schlüsselelement einer solchen Implementierung).It should be noted that in this embodiment, a region in memory 408 , which is intended to store the private state data, occupy only a portion of the page, and may be aligned with the edge of a virtual memory page. In this case, only the page shift portion of the linear address (that is, the low portion of the linear address) passes the address obfuscation unit 514 to generate the encoded physical page shift. Other implementations are possible. In addition, the address obfuscation or coding unit may 514 include range selection logic so that only addresses within specific regions of the memory are encoded. With this logic, the memory region need not necessarily be aligned with the edge of a virtual memory page or have a power size of 2. Internally, the address obfuscation or coding unit 514 be implemented by means of microcode, software, lookup tables, hardwired function logic, programmable logic, or any combination of these methods (see 6 to a key element of such an implementation).

Immer noch bezugnehmend auf 5 ist zu beachten, daß der Standardzwischenspeicher 410 des Prozessors in dieser Ausführungsform benutzt wird, um die codierten oder verschleierten Privatstatusdaten zu speichern. Wenn codierter Inhalt 510 entweder vom Zwischenspeicher 410 oder dem Speicher 408 zu liefern ist, kann er mit Hilfe einer Datencodierungs- und -decodierungseinheit 524 decodiert werden. Der decodierte Inhaltswert 520 wird dann in dieser Ausführungsform in dem Privatstatusbereich 516 des Prozessors gespeichert. Wie zuvor sind Zwischenspeicher 410 und Speicher 408 öffentlich zugänglich (z. B. durch das Betriebssystem), während der Privatstatusbereich nur den inneren Vorgängen des Prozessors zugänglich ist. Die Datencodierungs- und -decodierungseinheit 524 kann auch umgekehrt benutzt werden, wenn die Privatstatusdaten in codierter Form in den Speicher geschrieben werden. In einer solchen Ausführungsform würde die Einheit 524 einen Inhaltswert codieren, der aus dem Privatstatusbereich 516 stammen kann.Still referring to 5 Note that the default cache 410 of the processor in this embodiment is used to store the encoded or obfuscated private status data. If coded content 510 either from the cache 410 or the memory 408 It can be supplied by means of a data coding and decoding unit 524 be decoded. The decoded content value 520 then becomes in the private status area in this embodiment 516 saved by the processor. As before, there are buffers 410 and memory 408 while the private state scope is only accessible to the internal processes of the processor. The data encoding and decoding unit 524 can also be used vice versa if the private state data is written in memory in coded form. In such an embodiment, the unit would 524 encode a content value that is from the Private Status area 516 can come.

In einigen Ausführungsformen können in der ISA des Prozessors spezielle Instruktionen zum Zugriff auf einige oder alle Privatstatusdaten vorgesehen sein. Diese Instruktionen können, wenn sie ausgeführt werden, zum Transfer nicht codierter Daten von dem Privatstatusbereich 516 (siehe 5) führen, oder sie können spezielle Mikrooperationen oder Hardware-Steuersignale zum Zugreifen auf Region 418 in Speicher 408 (siehe 4) versenden, wo die Privatstatusdaten in codierter Form gespeichert sind. Während andere Instruktionen der ISA (z. B. normale Lade- und Speicherinstruktionen) auch dazu in der Lage sein können, auf die öffentlichen Regionen des Speichers 408 und/oder des Zwischenspeichers 410 zuzugreifen, resultieren aus einem solchen Lesezugriff Privatstatusdatenwerte, deren Adreßwerte entweder verschleiert sind und/oder deren Dateninhalt codiert ist. Entsprechend ist es ohne spezielle Hardwareunterstützung nicht möglich, die Privatstatusdaten innerhalb eines akzeptablen Zeitrahmens zurückzuentwickeln oder auf andere Weise wiederherzustellen.In some embodiments, special instructions for accessing some or all of the private status data may be provided in the ISA of the processor. These instructions, when executed, may transfer unencoded data from the private status area 516 (please refer 5 ) or special micro-operations or hardware control signals to access the region 418 in memory 408 (please refer 4 ), where the private status data is stored in coded form. While other instructions of the ISA (eg normal load and store instructions) may also be able to affect the public regions of the ISA memory 408 and / or the cache 410 From such a read access, private status data values whose address values are either obfuscated and / or whose data content is encoded result. Accordingly, without special hardware support, it is not possible to reverse engineer or otherwise restore the private state data within an acceptable time frame.

Obwohl der oben beschriebene Mechanismus logische Komponenten aufweist, die innerhalb einer Prozessorvorrichtung implementiert sind, sind andere Anordnungen möglich, wobei ein Teil der Logik oder die gesamte Logik beispielsweise im System-Chipsatz implementiert ist. Zusätzlich können spezielle Buszyklen für den Zugriff auf die Privatstatusregion 418 des Speichers 408 (4) definiert sein.Although the mechanism described above includes logic components implemented within a processor device, other arrangements are possible, with some or all of the logic implemented in the system chipset, for example. Additionally, special bus cycles can be used to access the private status region 418 of the memory 408 ( 4 ).

Unter Hinwendung auf 6 ist ein genaueres Design eines Beispiels eines programmierbaren 4-Bit-Adreßbit-Verschleierungs-(Codierungs)-Mechanismus gezeigt. Dieses Design kann für die Adreßverschleierungs- bzw. -codierungseinheit 514 aus 5 benutzt werden, und um die logisch-physikalische Adreßzuordnung (für die Bits niedriger Ordnung) in 4 zu erzeugen.Turning to 6 For example, a more detailed design of an example of a programmable 4-bit address bit obfuscation (coding) mechanism is shown. This design may be for the address veiling / coding unit 514 out 5 and the logical-physical address assignment (for the low order bits) in 4 to create.

Das logische Diagramm aus 6 ist eine Ausführungsform eines Kombinationslogikabschnitts eines 4 Bit breiten, MISR (Multiinput Linear Feedback Shift Register) mit einem Polynom vierter Ordnung unter Verwendung des oben beschriebenen Verfahrens. Diese Kombinationslogik wird von dem Polynomsteuerregister 604, dem optionalen Maskenregister 610 und der Eingabeadreßquelle 606 zugeführt. Es ist zu beachten, daß diese Logik kein vollständiges MISR ist, sondern die Zuordnungseigenschaften eines MISR ausnutzt.The logical diagram 6 FIG. 4 is one embodiment of a combination logic portion of a 4-bit wide, multi-input linear feedback shift register (MISR) with a fourth-order polynomial using the method described above. This combination logic is used by the polynomial control register 604 , the optional mask register 610 and the input address source 606 fed. It should be noted that this logic is not a complete MISR, but exploits the mappings properties of a MISR.

In 6 wird das Polynomkontrollregister 604 mit den Binärkoeffizienten eines Polynoms geladen. Um beispielsweise die Schaltung aus 6 zu konfigurieren, um die in 4 dargestellte logisch-physikalische Adreßzuordnung mit dem primitiven Polynom x4 + x1 + x0 zu implementieren, würde das Polynomkontrollregister 604 mit binären Koeffizienten P0 = 1, P1 = 1, P2 = 0, P3 = 0 geladen. Der Adreßbitvektor 0000 ist 0000 zugeordnet, wenn das optionale Maskenregister 610 auf 0000 eingestellt ist. Die Eingabeadreßquelle 606 repräsentiert die zu codierende logische 4-Bit-Adresse. Die optionale Maskenquelle 610 (z. B. das Steuerregister) erlaubt die Konstruktion verschiedener Zuordnungen.In 6 becomes the polynomial control register 604 loaded with the binary coefficients of a polynomial. For example, the circuit off 6 to configure the in 4 To implement the illustrated logical-physical address mapping with the primitive polynomial x 4 + x 1 + x 0 would be the polynomial control register 604 loaded with binary coefficients P 0 = 1, P 1 = 1, P 2 = 0, P 3 = 0. The address bit vector 0000 is assigned 0000 when the optional mask register 610 set to 0000. The input address source 606 represents the logical 4-bit address to be encoded. The optional mask source 610 (eg the control register) allows the construction of different assignments.

Wie oben beschrieben, können das Maskenregister 610 und das Polynomkontrollregister 604 während des Betriebs geändert werden. Beispielsweise können die Werte, die geladen werden, aus einer pseudozufälligen Datenquelle während der Einschalt-Rücksetzverarbeitung hergeleitet sein. Dies kann Versuche des Zugriffs auf Privatstatusdaten oder der Umgehung vorgegebener Zugriffsverfahren (wie z. B. der oben beschriebenen speziellen ISA-Instruktionen) verhindern. 6 ist eine Ausführungsform, die relativ effizient ist und bei moderatem Hardwareaufwand eine Programmierbarkeit mit Binärkoeffizient- und Maskenwerten mit verhältnismäßig wenigen Gatterverzögerungen erlaubt. Andere Logikentwürfe zum Implementieren der Adreßverschleierungs- bzw. -codierungseinheit 514 sind möglich. Zusätzliche Logik oder Assoziativspeicher (CAMs) können zur weiteren Beschränkung des Bereichs der von dem Adreßbit-Codiermechanismus modifizierten Adressen benutzt werden. Zusätzlich kann eine komplexere Logik für die Codierungs- und Decodierungsprozesse entworfen werden, um beispielsweise die Codierung zu verstärken (falls nötig).As described above, the mask register 610 and the polynomial control register 604 be changed during operation. For example, the values that are loaded may be derived from a pseudo-random data source during power-on reset processing. This may prevent attempts at accessing private state data or bypassing given access methods (such as the specific ISA instructions described above). 6 Figure 4 is an embodiment that is relatively efficient and, with moderate hardware overhead, allows programmability with binary coefficient and mask values with relatively few gate delays. Other logic designs for implementing the address obfuscation unit 514 are possible. Additional logic or associative memory (CAMs) may be used to further restrict the range of addresses modified by the address bit encoding mechanism. In addition, more complex logic can be designed for the encoding and decoding processes, for example, to enhance coding (if necessary).

Die Codierung der Inhaltswerte der Privatstatusdaten kann in ähnlicher Weise erreicht werden, wie oben für die Adreßverschleierung beschrieben wurde. Ein Ansatz ist es, die logischen Adreßverschiebungen (für ausgerichtete Regionen von Privatstatusdaten) oder einige konstante Abszissenwerte mit XOR zu verknüpfen, wobei die Inhalte eines gegebenen Priviatstatuselements zu kodieren sind. Ein anspruchsvollerer Codierungsmechanismus kann auf einen Strom von Privatstatusdatenwerten angewandt werden. Eine Variante eines rückgekoppelten Schieberegisterverfahrens (linear, nicht-linear, multi-Input usw.) kann mit einem Initialsamen benutzt werden. Der Initialsamen ist als der Ausgangsstatus definiert, der in das rückgekoppelte Schieberegister geladen wird. Für jeden Datenwert in Folge kann das rückgekoppelte Schieberegister vorgeschoben und sein Inhalt bitweise mit dem Inhalt des internen Registers XOR-verknüpft werden. Dies wird als eine Vigenère-Chiffre bezeichnet, und ein Beispiel hierfür ist in Tabellen 470, 480 aus 4 oben gezeigt, wobei jeder nicht codierte Inhalts-(Daten)-Wert in 470 null ist (z. B. Eintrag 471), aber nicht als solcher erscheint, wenn er in codierter Form in 480 (z. B. Eintrag 481) gespeichert ist im Speicher 408. Mit dieser Chiffre wird das Schieberegister benutzt, um eine pseudozufällige Sequenz von bitweisen XOR-Masken zu erzeugen. In diesem Fall wird jede pseudozufällige Maske mit Byte-Breite, während sie von einem MISR (siehe 480) erzeugt wird, bitweise mit dem nächsten Datenwert in der Adreßsequenz XOR-verknüpft. Nur das Polynom und der Schieberegister-Initialsamenwert werden benötigt, um exakt dieselbe Sequenz wieder zu erzeugen. In einer Ausführungsform kann die Konfigurierungsinformation (z. B. Polynom und Initialsamen) der Codierungs- und/oder Decodierungseinheit zusammen mit der codierten Statusregion in Speicher 408 gespeichert sein. Um den Privatstatus zu decodieren, würde die Konfigurierungsinformation (z. B. Polynom und Initialsamen) abgerufen (und möglicherweise unter Benutzung eines anderen festgelegten Codierungsverfahrens decodiert) und dann benutzt. Solange jede Maske in der Sequenz auf die entsprechenden Daten in derselben Reihenfolge angewandt wird (also z. B. eine Maske pro adressierbare Einheit angewandt wird), produziert (decodiert) die bitweise XOR-Maskierung die ursprünglichen Daten. Wie zuvor erläutert, können das Polynom und der MISR-Initialsamenwert mit Hilfe verschiedener Verfahren oder Beschränkungen geändert werden (z. B. beim Starten, während des Betriebs usw.). Um die ursprünglichen Daten wiederherzustellen, müssen das oder die Decodierungsverfahren angewandt werden, die für das oder die ursprünglich benutzten Codierungsverfahren geeignet sind, um nämlich die Codierung rückgängig zu machen. Vigenère-Chiffren sind nur ein Beispiel für Codierungsmechanismen für Privatstatus-Datenwerte, das effizient ist und eine Programmierbarkeit mit einfachen Binärkoeffizientenlisten, Samen usw. zuläßt, sowie einen moderaten Umfang der Hardware und nur einige wenige Gatterverzögerungen. Andere Ausführungsformen sind ebenfalls möglich.The encoding of the content values of the private state data may be accomplished in a manner similar to that described above for address obfuscation. One approach is to associate the logical address shifts (for aligned regions of private state data) or some constant abscissa values with XOR, where the contents of a given private state element are to be encoded. A more sophisticated encoding mechanism may be applied to a stream of private state data values. A variant of a feedback shift register method (linear, non-linear, multi-input, etc.) can be used with an initial name. The initial name is defined as the initial state loaded into the feedback shift register. For each data value in succession, the feedback shift register may be advanced and its contents bit-wise XORed with the contents of the internal register. This is called a Vigenère cipher, and an example of this is in tables 470 . 480 out 4 shown above, where each unencoded content (data) value in 470 is null (for example, entry 471 ), but does not appear as such when encoded in 480 (eg entry 481 ) is stored in memory 408 , This cipher uses the shift register to generate a pseudo-random sequence of bitwise XOR masks. In this case, any pseudo-random mask will be byte-wide while being generated by a MISR (see 480 ) is bit-wise XORed to the next data value in the address sequence. Only the polynomial and the shift register initial seed value are needed to recreate exactly the same sequence. In one embodiment, the configuration information (eg, polynomial and initial name) of the encoding and / or decoding unit may be stored in memory along with the encoded status region 408 be saved. To decode the private state, the configuration information (eg, polynomial and Initial names) (and possibly decoded using another fixed coding method) and then used. As long as each mask in the sequence is applied to the corresponding data in the same order (eg, one mask is applied per addressable unit), the bitwise XOR masking produces (decodes) the original data. As previously discussed, the polynomial and MISR initial seed value may be changed using various methods or constraints (eg, at startup, during operation, etc.). In order to recover the original data, the decoding method (s) suitable for the encoding method or methods originally used, namely to undo the encoding, must be used. Vigenère ciphers are just one example of private state data value encoding mechanisms that are efficient and allow programmability with simple binary coefficient lists, seeds, etc., as well as a moderate amount of hardware and only a few tag delays. Other embodiments are also possible.

In einer Ausführungsform der Erfindung kann der Prozessor die Privatstatusregion 132 im Speicher (siehe 1) an Übergängen zwischen Betriebsmodi des Prozessors nutzen. Beispielsweise kann der Prozessor auf die Privatstatusregion zugreifen, wenn er wie oben beschrieben in den Systemmanagement-Modus (SMM) eintritt. Diese Übergänge zwischen Betriebsmodi werden hier als Moduswechsel bezeichnet. Moduswechsel umfassen beispielsweise eine Bewegung zwischen Normalmodus und Systemmanagementmodus, zwischen einer virtuellen Maschine (VM) und einem virtuellen Maschinenmonitor (VMM) in einem virtuellen Maschinensystem, zwischen einem Betriebssystemprozeß auf Nutzerebene und dem Betriebssystemkern usw.In one embodiment of the invention, the processor may be the private status region 132 in memory (see 1 ) at transitions between operating modes of the processor. For example, the processor may access the Private Status Region when entering System Management Mode (SMM) as described above. These transitions between modes of operation are referred to herein as mode changes. Mode changes include, for example, movement between normal mode and system management mode, between a virtual machine (VM) and a virtual machine monitor (VMM) in a virtual machine system, between a user-level operating system process and the operating system kernel, etc.

In einer Ausführungsform der Erfindung kann der Prozessor die Privatstatusregion 132 im Speicher jederzeit nach Zuweisung der Privatstatusregion nutzen. Beispielsweise kann in einem virtuellen Maschinensystem der VMM eine Region im Speicher zur Prozessornutzung während des virtuellen Maschinenbetriebs vorsehen. Der VMM kann dem Prozessor den Ort der Privatstatusregion anzeigen (z. B. durch Ausführen einer in der ISA definierten Instruktion). Nachdem der Prozessor die Anzeige erhalten hat, steht es ihm frei, die Privatstatusregion in geeigneter Weise zu nutzen. Beispielsweise kann der Prozessor während Übergängen zwischen einer VM und dem VMM (d. h. an Moduswechselpunkten) auf die Privatstatusregion zugreifen. Außerdem kann der Prozessor während des Betriebs einer VM oder des VMM auf die Region zugreifen. Beispielsweise kann der Prozessor auf Steuerinformation aus der Privatstatusregion zugreifen, oder der Prozessor kann vorläufige Werte in der Privatstatusregion speichern.In one embodiment of the invention, the processor may be the private status region 132 in memory at any time after assigning the private status region. For example, in a virtual machine system, the VMM may provide a region in memory for processor utilization during virtual machine operation. The VMM may indicate to the processor the location of the private status region (eg, by executing an instruction defined in the ISA). Once the processor has received the advertisement, it is free to use the private status region as appropriate. For example, during transitions between a VM and the VMM (ie, mode switch points), the processor may access the private status region. Additionally, the processor may access the region during operation of a VM or VMM. For example, the processor may access control information from the private status region, or the processor may store tentative values in the private status region.

Die ISA kann außerdem einen Mechanismus vorsehen, wodurch der VMM bestimmen kann, daß eine Privatstatusregion nicht länger benutzt werden soll (z. B. durch Ausführen einer Instruktion). In anderen Ausführungsformen können Privatstatusregionen unter Benutzung anderer Verfahren zugeteilt werden. Beispielsweise kann eine Privatstatusregion durch Schreiben von modellspezifischen Registern (MSRs), durch Ausführen von Instruktionen in der ISA, durch Schreiben von Speicherorten usw. zugeteilt werden.The ISA may also provide a mechanism whereby the VMM may determine that a private status region should no longer be used (eg, by executing an instruction). In other embodiments, private status regions may be allocated using other methods. For example, a private status region may be assigned by writing model-specific registers (MSRs), by executing instructions in the ISA, by writing memory locations, and so on.

Obwohl die oben genannten Beispiele Ausführungsformen der vorliegenden Erfindung im Kontext von Ausführungseinheiten und logischen Schaltungen beschreiben, lassen sich andere Ausführungsformen der vorliegenden Erfindung mit Hilfe von Software erzielen. Beispielsweise kann die vorliegende Erfindung in einigen Ausführungsformen als ein Computerprogrammprodukt oder als Software vorgesehen sein, die eine Maschine oder ein computerlesbares Medium umfaßt, worauf Instruktionen gespeichert sind, die zum Programmieren eines Computers (oder anderer elektronischer Vorrichtungen) benutzt werden können, um einen Prozeß gemäß einer Ausführungsform der Erfindung durchzuführen. In anderen Ausführungsformen können Vorgänge von spezifischen Hardwarekomponenten durchgeführt werden, die Mikrocode, festverkabelte Logik oder irgendeine andere Kombination programmierter Computerkomponenten und maßgefertigter Hardwarekomponenten aufweisen.Although the above examples describe embodiments of the present invention in the context of execution units and logic circuits, other embodiments of the present invention may be accomplished by software. For example, in some embodiments, the present invention may be embodied as a computer program product or software that includes a machine or computer-readable medium having stored thereon instructions that may be used to program a computer (or other electronic device) to perform a process to perform an embodiment of the invention. In other embodiments, operations may be performed on specific hardware components that include microcode, hardwired logic, or any other combination of programmed computer components and custom hardware components.

So kann ein maschinenlesbares Medium einen Mechanismus zum Speichern oder Übertragen von Information in einer von einer Maschine (z. B. einem Computer) lesbaren Form aufweisen, ist aber nicht beschränkt auf, Disketten, Compact Disks, Lesespeicher (CDROMs) und magnetooptische Disks, Lesespeicher (ROMS), Schreib-Lese-Speicher (RAM), löschbare programmierbare Lesespeicher (EPROM), elektrisch löschbare programmierbare Lesespeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher, eine Übertragung über das Internet, elektrische, optische, akustische oder andere Formen von übertragenen Signalen (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) oder ähnliches.Thus, a machine-readable medium may include, but is not limited to, a mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer), floppy disks, compact disks, read-only memories (CDROMs), and magneto-optic disks, read-only memory (ROMS), random access memory (RAM), erasable programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), magnetic or optical cards, flash memory, transmission over the Internet, electrical, optical, acoustic or other Shapes of transmitted signals (eg, carrier waves, infrared signals, digital signals, etc.) or the like.

Ferner kann ein Entwurf mehrere Stufen durchlaufen, von der Erzeugung bis zur Simulation hin zur Herstellung. Daten, die einen Entwurf repräsentieren, können den Entwurf auf unterschiedliche Art und Weise repräsentieren. Zunächst, wie es in Simulationen nützlich ist, kann die Hardware unter Benutzung einer Hardware-Beschreibungssprache oder einer anderen funktionalen Beschreibungssprache repräsentiert werden. Außerdem kann auf einigen Stufen des Entwurfsprozesses ein Schaltungslevelmodell mit Logik- und/oder Transistorgattern erzeugt werden. Auch erreichen die meisten Entwürfe auf einer Stufe ein Datenlevel, das die physikalische Anordnung verschiedener Vorrichtungen im Hardwaremodell repräsentiert. Für den Fall, daß übliche Halbleiterherstellungsverfahren benutzt werden, können die Daten, die ein Hardwaremodell repräsentieren, die Daten sein, die das Vorhandensein oder die Abwesenheit verschiedener Merkmale auf verschiedenen Maskenschichten spezifizieren, die benutzt werden, um den integrierten Schaltkreis herzustellen. Bei jeder Repräsentation des Entwurfs können die Daten auf jeder Art maschinenlesbaren Mediums gespeichert werden. Eine optische oder elektrische Welle, die moduliert oder anders erzeugt wird, um solche Information zu übertragen, ein Speicher oder ein magnetischer oder optischer Speicher wie z. B. eine Disk können ein maschinenlesbares Medium sein. Jedes dieser Medien kann den Entwurf oder die Softwareinformation „tragen” oder „anzeigen”. Wenn eine elektrische Trägerwelle, die den Code oder den Entwurf anzeigt oder trägt, übertragen wird, sodaß ein Kopieren, Puffern oder eine Neuübertragung des elektrischen Signals durchgeführt wird, wird eine neue Kopie erstellt. So kann ein Kommunikationsanbieter oder ein Netzwerkanbieter Kopien eines Artikels (einer Trägerwelle) anfertigen, die Verfahren der vorliegenden Erfindung verkörpert.Furthermore, a design may go through several stages, from generation to simulation, to fabrication. Data representing a design can represent the design in different ways. First, as useful in simulations, the hardware may be represented using a hardware description language or other functional description language. In addition, at some stages of the design process, a circuit level model with logic and / or transistor gates may be generated. Also, most designs at one level achieve a level of data that represents the physical arrangement of various devices in the hardware model. In the event that conventional semiconductor manufacturing techniques are used, the data representing a hardware model may be the data that specifies the presence or absence of various features on different mask layers that are used to fabricate the integrated circuit. With each representation of the design, the data can be stored on any type of machine-readable medium. An optical or electrical wave that is modulated or otherwise generated to transmit such information, a memory or a magnetic or optical memory such. B. a disc may be a machine-readable medium. Each of these media may "carry" or "display" the design or software information. When an electric carrier wave indicating or carrying the code or design is transmitted so that copying, buffering or retransmission of the electrical signal is performed, a new copy is made. Thus, a communications provider or a network provider may make copies of an article (a carrier wave) embodying methods of the present invention.

In der vorangegangenen Beschreibung wurde die Erfindung unter Bezugnahme auf verschiedene Verfahren zum Zugreifen auf Daten zum Status einer Datenverarbeitungsmaschine von einem öffentlich zugänglichen Speicher beschrieben. Man wird jedoch verstehen, daß verschiedene Modifizierungen und Änderungen vorgenommen werden können, ohne vom breiteren Geist und Umfang der Ausführungsformen der Erfindung abzuweichen, die in den beiliegenden Ansprüchen definiert ist. Die Beschreibung und die Figuren sind dementsprechend als erläuternd und nicht als begrenzend zu verstehen.In the foregoing description, the invention has been described with reference to various methods for accessing data on the status of a data processing machine from a publicly accessible memory. It will, however, be understood that various modifications and changes may be made without departing from the broader spirit and scope of the embodiments of the invention as defined in the appended claims. The description and the figures are accordingly to be understood as illustrative rather than limiting.

Claims (26)

Verfahren zum Betreiben einer Datenverarbeitungsmaschine mit den folgenden Schritten: a) Anwenden eines Codierungsprozesses auf Privat-Statusdaten durch einen Prozessor (110), wobei die Privat-Statusdaten einen Status des Prozessors erfassen, b) Schreiben der codierten Privat-Statusdaten an einen Ort in einem Speicher (130), der für Software durch Ausführen eines ersten Befehls aus einer Mehrzahl von Befehlen in der Befehlssatzarchitektur des Prozessors zugänglich ist, und c) Erlangen des Status des Prozessors durch die Software, durch Ausführen eines zweiten Befehls der Mehrzahl von Befehlen in der Befehlssatzarchitektur des Prozessors, wobei das Ausführen des zweiten Befehls bewirkt, dass der Prozessor (110) die kodierten Privat-Statusdaten aus dem Speicher liest, die kodierten Privat-Statusdaten dekodiert, um dekodierte Privat-Statusdaten zu erzeugen, und die dekodierten Privat-Statusdaten im Prozessor speichert.A method of operating a data processing machine comprising the steps of: a) applying a coding process to private status data by a processor ( 110 ), the private status data detecting a status of the processor, b) writing the coded private status data to a location in a memory ( 130 ) accessible to software by executing a first instruction from a plurality of instructions in the instruction set architecture of the processor, and c) obtaining the status of the processor by the software by executing a second instruction of the plurality of instructions in the instruction set architecture of the processor, wherein the execution of the second instruction causes the processor to ( 110 ) reads the encoded private status data from the memory, decodes the encoded private status data to generate decoded private status data, and stores the decoded private status data in the processor. Verfahren nach Anspruch 1, wobei die Privat-Statusdaten entweder geschrieben werden a) an einem frei zugänglichen Ort in einer Registerdatei des Prozessors, b) in einen Zwischenspeicher oder c) in einen Speicher.The method of claim 1, wherein the private status data is either written a) in a freely accessible location in a register file of the processor, b) in a cache or c) in a memory. Verfahren nach Anspruch 1, wobei der Codierungsprozess ein solcher ist, bei dem der Ort des geschriebenen Inhalts eines jeweiligen internen Registers (114) des Prozessors sich wenigstens einmal zufallsgesteuert ändert, während die Schritte a) bis b) wiederholt werden.The method of claim 1, wherein the encoding process is one in which the location of the written content of a respective internal register ( 114 ) of the processor changes randomly at least once while repeating steps a) to b). Verfahren nach Anspruch 1, wobei die den Status der Maschine betreffenden Privat-Daten entweder ein Registerwert oder ein Wert aus dem Speicher (408) sind.Method according to claim 1, wherein the private data concerning the status of the machine is either a register value or a value from the memory ( 408 ) are. Verfahren nach Anspruch 1, wobei der Codierungsprozess ein solcher ist, bei dem das Speicherformat des geschriebenen Inhalts eines jeweiligen internen Registers (114) des Prozessors sich wenigstens einmal zwischen Big-Endian und Little-Endian zufallsgesteuert ändert, während die Schritte a) bis b) wiederholt werden.The method of claim 1, wherein the encoding process is one in which the storage format of the written contents of a respective internal register ( 114 ) of the processor randomly changes at least once between big-endian and little-endian while repeating steps a) to b). Verfahren nach Anspruch 1, wobei das Codieren ein Chiffrieren eines Werts der Privat-Daten umfasst, um die codierten Privat-Daten zu erhalten.The method of claim 1, wherein the encoding comprises encrypting a value of the private data to obtain the encoded private data. Verfahren nach Anspruch 1, wobei das Codieren eine Adreßcodierung umfasst, um den Adreßwert der Privat-Daten zu verschleiern.The method of claim 1, wherein the encoding comprises address coding to obfuscate the address value of the private data. Verfahren nach Anspruch 1, wobei der Codierungsprozess ein solcher ist, bei dem eine Chiffre auf den Inhalt eines jeweiligen Registers (114) angewandt wird, um einen codierten Wert zu erzeugen, der dann an den Ort im Speicher (130) geschrieben wird.The method of claim 1, wherein the encoding process is one in which a cipher is indexed to the contents of a respective register ( 114 ) is applied to generate a coded value, which is then sent to the location in memory ( 130 ) is written. Verfahren nach Anspruch 1, der des weiteren ein Speichern der dekodierten Privat-Statusdaten in einem Privat-Speicher des Prozessors umfasst.The method of claim 1, further comprising storing the decoded private status data in a private memory of the processor. Verfahren nach Anspruch 1, wobei das Erlangen umfasst: Lesen mehrerer Werte aus dem Speicher (408); und Kombinieren der gelesenen mehreren Werte, um einen einzelnen nicht codierten Wert der Privat-Daten zu bilden.The method of claim 1, wherein acquiring comprises: reading a plurality of values from the memory ( 408 ); and combining the read multiple values to form a single unencoded value of the private data. Verfahren nach Anspruch 1, wobei das Erlangen umfasst: Lesen mehrerer Werte aus einem oder mehreren nicht zusammenhängenden Speicherorten; Kombinieren der gelesenen Werte, um einen einzigen Wert zu bilden; und Decodieren des einzigen Werts, um einen einzigen nicht codierten Wert der Privat-Daten zu bilden.The method of claim 1, wherein obtaining comprises: Reading multiple values from one or more non-contiguous memory locations; Combining the read values to form a single value; and decoding the single value to form a single unencoded value of the private data. Datenverarbeitungsmaschine mit einem Prozessor (110) und einem Speicher, wobei die Datenverarbeitungsmaschine eingerichtet ist, a) einen Codierungsprozess auf Privat-Statusdaten durch den Prozessor (110) anzuwenden, wobei die Privat-Statusdaten einen Status des Prozessors erfassen, b) die codierten Privat-Statusdaten an einen Ort in einem Speicher (130) zu schreiben, der für Software durch Ausführen eines ersten Befehls aus einer Mehrzahl von Befehlen in der Befehlssatzarchitektur des Prozessors zugänglich ist, und c) den Status des Prozessors durch die Software, durch Ausführen eines zweiten Befehls der Mehrzahl von Befehlen in der Befehlssatzarchitektur des Prozessors zu erlangen, wobei das Ausführen des zweiten Befehls bewirkt, dass der Prozessor (110) die kodierten Privat-Statusdaten aus dem Speicher liest, die kodierten Privat-Statusdaten dekodiert, um dekodierte Privat-Statusdaten zu erzeugen, und die dekodierten Privat-Statusdaten im Prozessor speichert.Data processing machine with a processor ( 110 ) and a memory, wherein the data processing machine is set up, a) an encoding process to private status data by the processor ( 110 ), wherein the private status data capture a status of the processor, b) the encoded private status data to a location in a memory ( 130 ) accessible to software by executing a first instruction from a plurality of instructions in the instruction set architecture of the processor; and c) the status of the processor by the software by executing a second instruction of the plurality of instructions in the instruction set architecture of the processor obtaining, the execution of the second command causes the processor ( 110 ) reads the encoded private status data from the memory, decodes the encoded private status data to generate decoded private status data, and stores the decoded private status data in the processor. Datenverarbeitungsmaschine nach Anspruch 12, wobei der Prozessor (110) eine spezielle Lesemikrooperation aufweist, die benutzt wird, wenn der Prozessor (110) die Statusdaten aus der Speichereinheit liest.Data processing machine according to claim 12, wherein the processor ( 110 ) has a special read micro-operation which is used when the processor ( 110 ) reads the status data from the memory unit. Datenverarbeitungsmaschine nach Anspruch 13, wobei der Prozessor (110) ferner einen internen Zwischenspeicher (410) aufweist und die codierten Statusdaten an einen frei zugänglichen Ort in dem Zwischenspeicher (410) schreibt.Data processing machine according to claim 13, wherein the processor ( 110 ) an internal buffer ( 410 ) and the coded status data to a freely accessible location in the cache ( 410 ) writes. Datenverarbeitungsmaschine nach Anspruch 13, wobei der Prozessor (110) die Statusdaten wiedererlangt und die wiedererlangten Statusdaten an einen privaten Ort in der Datenverarbeitungsmaschine schreibtData processing machine according to claim 13, wherein the processor ( 110 ) retrieves the status data and writes the retrieved status data to a private location in the data processing engine Datenverarbeitungsmaschine nach Anspruch 13, wobei der Prozessor (110) die Statusdaten wiedererlangt und sich selbst in Vorbereitung auf die Wiederaufnahme der Ausführung einer unterbrochenen Aufgabe mit den wiedererlangten Statusdaten konfiguriert.Data processing machine according to claim 13, wherein the processor ( 110 ) regains the status data and configures itself with the retrieved status data in preparation for resuming the execution of an interrupted task. Datenverarbeitungsmaschine nach Anspruch 13, wobei für den Prozessor (110) eine vom Hersteller definierte Instruktion vorliegt, die bei Ausführung durch den Prozessor (110) die Statusdaten aus der Speichereinheit dekodiert und liest.Data processing machine according to claim 13, wherein for the processor ( 110 ) there is an instruction defined by the manufacturer which, when executed by the processor ( 110 ) decodes and reads the status data from the memory unit. Datenverarbeitungsmaschine nach Anspruch 12, wobei für den Prozessor (110) eine spezielle Mikrooperation definiert ist, um auf die codierten Statusdaten aus der Speichereinheit zuzugreifen, und wobei der Prozessor (110) eine Adreßverschleierungseinheit aufweist, um einen Adreßwert zu empfangen, der jeweiligen Statusdaten des Prozessors zugeordnet ist, wobei der Adreßwert von einer Meldung der speziellen Mikrooperation abgeleitet wurde, und die Verschleierungseinheit einen codierten physikalischen Adreßwert bereitstellt, der auf den tatsächlichen Ort in der Speichereinheit hinweist, an dem die jeweiligen Statusdaten gespeichert sind.Data processing machine according to claim 12, wherein for the processor ( 110 ) a special micro-operation is defined to access the encoded status data from the memory unit, and wherein the processor ( 110 ) comprises an address concealment unit for receiving an address value associated with respective status data of the processor, the address value being derived from a message of the particular microoperation, and the concealment unit providing a coded physical address value indicative of the actual location in the memory unit, where the respective status data is stored. Datenverarbeitungsmaschine nach Anspruch 12, wobei für den Prozessor (110) ein Hardware-Steuersignal zum Zugreifen auf die codierten Daten aus der Speichereinheit definiert ist, und wobei der Prozessor (110) einen internen Zwischenspeicher und eine Datenumwandlungseinheit aufweist, die Datenwerte von dem Zwischenspeicher als Resultat eines aus dem Hardwaresteuersignal abgeleiteten Zwischenspeicherzugriffs empfängt, und den Datenwert in die tatsächlichen Statusdaten des Prozessors decodiert.Data processing machine according to claim 12, wherein for the processor ( 110 ) a hardware control signal for accessing the encoded data from the memory unit is defined, and wherein the processor ( 110 ) has an internal buffer and a data conversion unit which receives data values from the buffer memory as a result of a buffer memory access derived from the hardware control signal, and decodes the data value into the actual status data of the processor. Computersystem, mit einem Prozessor (404), und einem mit dem Prozessor (404) kommunizierend verbundenen Hauptspeicher (408), der einen öffentlichen Bereich (416) aufweist, der dazu bestimmt ist, die Privat-Statusdaten des Prozessors (404) in codierter Form zu speichern, wobei der Prozessor (404) eingerichtet ist, a) einen Codierungsprozess auf Privat-Statusdaten durch den Prozessor (110) anzuwenden, wobei die Privat-Statusdaten einen Status des Prozessors erfassen, b) die codierten Privat-Statusdaten an einen Ort in einem Speicher (130) zu schreiben, der für Software durch Ausführen eines ersten Befehls aus einer Mehrzahl von Befehlen in der Befehlssatzarchitektur des Prozessors zugänglich ist, und c) den Status des Prozessors durch die Software, durch Ausführen eines zweiten Befehls der Mehrzahl von Befehlen in der Befehlssatzarchitektur des Prozessors zu erlangen, wobei das Ausführen des zweiten Befehls bewirkt, dass der Prozessor (110) die kodierten Privat-Statusdaten aus dem Speicher liest, die kodierten Privat-Statusdaten dekodiert, um dekodierte Privat-Statusdaten zu erzeugen, und die dekodierten Privat-Statusdaten im Prozessor speichert.Computer system, with a processor ( 404 ), and one with the processor ( 404 ) communicating main memory ( 408 ), which has a public area ( 416 ), which is intended to store the private status data of the processor ( 404 ) in coded form, the processor ( 404 ) a) an encoding process to private status data by the processor ( 110 ), wherein the private status data capture a status of the processor, b) the encoded private status data to a location in a memory ( 130 ) accessible to software by executing a first instruction from a plurality of instructions in the instruction set architecture of the processor; and c) the status of the processor by the software by executing a second instruction of the plurality of instructions in the instruction set architecture of the processor obtaining, the execution of the second command causes the processor ( 110 ) reads the encoded private status data from the memory, decodes the encoded private status data to generate decoded private status data, and stores the decoded private status data in the processor. System nach Anspruch 20, wobei der Prozessor (404) die Privat-Statusdaten vor dem Speichern im öffentlichen Bereich codiert.The system of claim 20, wherein the processor ( 404 ) encodes the private status data before saving in the public domain. System nach Anspruch 20, wobei der Prozessor (404) einen Wert, der aus dem öffentlichen Bereich abgelesen wurde, vor einer Benutzung decodiert.The system of claim 20, wherein the processor ( 404 ) a value coming from the public Range was decoded prior to use. System nach Anspruch 20, wobei der Prozessor (404) ferner eine interne Speichereinheit (428) aufweist, in der ein öffentlicher Bereich bestimmt ist, um eine Kopie der Privat-Statusdaten in codierter Form zu speichern.The system of claim 20, wherein the processor ( 404 ) an internal memory unit ( 428 ) in which a public area is designated to store a copy of the private status data in coded form. System nach Anspruch 23, wobei die interne Speichereinheit (428) entweder ein Zwischenspeicher oder eine Registerdatei ist.The system of claim 23, wherein the internal memory unit ( 428 ) is either a cache or a register file. System nach Anspruch 23, wobei ein privater Bereich in der internen Speichereinheit (416) bestimmt ist, um die Privat-Statusdaten in nicht codierter Form zu speichern.The system of claim 23, wherein a private area in the internal storage unit (16) 416 ) is determined to store the private status data in uncoded form. System nach Anspruch 20, das ferner einen Systemchipsatz (406) aufweist, der den Prozessor (404) mit dem Hauptspeicher kommunizierend verbindet.The system of claim 20, further comprising a system chipset ( 406 ) containing the processor ( 404 ) communicates with the main memory.
DE112004002259T 2003-11-26 2004-11-07 Access to private data about the status of a data processing machine from a publicly accessible storage Expired - Fee Related DE112004002259B4 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/724,321 2003-11-26
US10/724,321 US8156343B2 (en) 2003-11-26 2003-11-26 Accessing private data about the state of a data processing machine from storage that is publicly accessible
PCT/US2004/038734 WO2005055024A1 (en) 2003-11-26 2004-11-07 Accessing private data about the state of a data processing machine from storage that is publicly accessible

Publications (2)

Publication Number Publication Date
DE112004002259T5 DE112004002259T5 (en) 2006-10-26
DE112004002259B4 true DE112004002259B4 (en) 2013-06-06

Family

ID=34592462

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004002259T Expired - Fee Related DE112004002259B4 (en) 2003-11-26 2004-11-07 Access to private data about the status of a data processing machine from a publicly accessible storage

Country Status (6)

Country Link
US (3) US8156343B2 (en)
JP (2) JP2007515709A (en)
KR (1) KR100974973B1 (en)
CN (1) CN1886711B (en)
DE (1) DE112004002259B4 (en)
WO (1) WO2005055024A1 (en)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044408A1 (en) * 2003-08-18 2005-02-24 Bajikar Sundeep M. Low pin count docking architecture for a trusted platform
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
JP2005182499A (en) * 2003-12-19 2005-07-07 Matsushita Electric Ind Co Ltd Parallel arithmetic unit
US7203808B2 (en) * 2004-03-19 2007-04-10 Intel Corporation Isolation and protection of disk areas controlled and for use by virtual machine manager in firmware
US20060039554A1 (en) * 2004-08-18 2006-02-23 Roxio, Inc. High security media encryption
US9280473B2 (en) * 2004-12-02 2016-03-08 Intel Corporation Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner
US20060150247A1 (en) * 2004-12-30 2006-07-06 Andrew Gafken Protection of stored data
US20060259900A1 (en) * 2005-05-12 2006-11-16 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
US20060259903A1 (en) * 2005-05-12 2006-11-16 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
US8041958B2 (en) * 2006-02-14 2011-10-18 Lenovo (Singapore) Pte. Ltd. Method for preventing malicious software from execution within a computer system
US8694797B2 (en) * 2006-02-14 2014-04-08 Lenovo (Sinapore) Pte Ltd Method for preventing malicious software from execution within a computer system
US8146089B2 (en) * 2006-06-14 2012-03-27 Intel Corporation Sharing resources of a partitioned system
US9280659B2 (en) * 2006-12-29 2016-03-08 Intel Corporation Methods and apparatus for remeasuring a virtual machine monitor
US8904552B2 (en) * 2007-04-17 2014-12-02 Samsung Electronics Co., Ltd. System and method for protecting data information stored in storage
US8848924B2 (en) * 2008-06-27 2014-09-30 University Of Washington Privacy-preserving location tracking for devices
US8719588B2 (en) * 2008-06-30 2014-05-06 Atmel Corporation Memory address obfuscation
US9405931B2 (en) * 2008-11-14 2016-08-02 Dell Products L.P. Protected information stream allocation using a virtualized platform
JP2011232801A (en) * 2010-04-23 2011-11-17 Renesas Electronics Corp Information processing system and ic card
FR2990034B1 (en) * 2012-04-25 2014-04-25 Inside Secure METHOD FOR CONTROLLING CYCLIC REDUNDANCY PROTECTED AGAINST AUXILIARY CHANNEL ATTACK
US9015400B2 (en) * 2013-03-05 2015-04-21 Qualcomm Incorporated Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (HWTW)
US8983068B2 (en) * 2013-03-06 2015-03-17 Infineon Technologies Ag Masked nonlinear feedback shift register
US9251090B1 (en) * 2014-06-03 2016-02-02 Amazon Technologies, Inc. Hypervisor assisted virtual memory obfuscation
WO2017059396A1 (en) * 2015-09-30 2017-04-06 Clark Jonathan A Computer and method for transmitting confidential information in a network
KR102431928B1 (en) * 2015-10-29 2022-08-16 엘지디스플레이 주식회사 Memory Protection Device And Method And Organic Light Emitting Display Device Including The Same
US10437953B2 (en) * 2016-07-08 2019-10-08 efabless corporation Systems for engineering integrated circuit design and development
US10146604B2 (en) 2016-08-23 2018-12-04 Oracle International Corporation Bad block detection and predictive analytics in NAND flash storage devices
US11093588B2 (en) * 2017-06-26 2021-08-17 Micron Technology, Inc. Memory system including data obfuscation
CN109450592A (en) * 2018-09-29 2019-03-08 广东雅达电子股份有限公司 A kind of communication protocol recombination method
US11481336B2 (en) * 2019-08-19 2022-10-25 Micron Technology, Inc. Host assisted operations in managed memory devices
FR3101980B1 (en) * 2019-10-11 2021-12-10 St Microelectronics Grenoble 2 Processor

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0700002A1 (en) * 1994-08-31 1996-03-06 Motorola, Inc. Modular chip select control circuit and related circuit and methods
US5655125A (en) * 1992-12-29 1997-08-05 Intel Corporation Register for identifying processor characteristics
US20010018736A1 (en) * 2000-02-14 2001-08-30 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US20030055928A1 (en) * 2001-09-03 2003-03-20 Nec Corporation Automatic computer configuration system, method and program making use of portable terminal
US20030097551A1 (en) * 2001-11-16 2003-05-22 Fuller David W. System and method for a deploying a hardware configuration with a computer program

Family Cites Families (263)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3699532A (en) * 1970-04-21 1972-10-17 Singer Co Multiprogramming control for a data handling system
US3996449A (en) 1975-08-25 1976-12-07 International Business Machines Corporation Operating system authenticator
US4162536A (en) 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
US4037214A (en) 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4247905A (en) 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
US4278837A (en) 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
US4276594A (en) 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
US4207609A (en) * 1978-05-08 1980-06-10 International Business Machines Corporation Method and means for path independent device reservation and reconnection in a multi-CPU and shared device access system
JPS5823570B2 (en) * 1978-11-30 1983-05-16 国産電機株式会社 Liquid level detection device
JPS5576447A (en) 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4307447A (en) 1979-06-19 1981-12-22 Gould Inc. Programmable controller
US4319323A (en) 1980-04-04 1982-03-09 Digital Equipment Corporation Communications device for data processing system
US4419724A (en) * 1980-04-14 1983-12-06 Sperry Corporation Main bus interface package
US4366537A (en) 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys
US4403283A (en) * 1980-07-28 1983-09-06 Ncr Corporation Extended memory system and method
DE3034581A1 (en) 1980-09-13 1982-04-22 Robert Bosch Gmbh, 7000 Stuttgart READ-OUT LOCK FOR ONE-CHIP MICROPROCESSORS
US4521852A (en) 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
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
JPS59111561A (en) 1982-12-17 1984-06-27 Hitachi Ltd Access controlling system of composite processor system
US4630269A (en) * 1983-05-16 1986-12-16 Data General Corporation Methods for diagnosing malfunctions in a disk drive
US4759064A (en) 1985-10-07 1988-07-19 Chaum David L Blind unanticipated signature systems
US4975836A (en) 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
JPS61206057A (en) 1985-03-11 1986-09-12 Hitachi Ltd Address converting device
FR2592510B1 (en) 1985-12-31 1988-02-12 Bull Cp8 METHOD AND APPARATUS FOR CERTIFYING SERVICES OBTAINED USING A PORTABLE MEDIUM SUCH AS A MEMORY CARD
FR2601535B1 (en) 1986-07-11 1988-10-21 Bull Cp8 METHOD FOR CERTIFYING THE AUTHENTICITY OF DATA EXCHANGED BETWEEN TWO DEVICES CONNECTED LOCALLY OR REMOTELY THROUGH A TRANSMISSION LINE
FR2601476B1 (en) 1986-07-11 1988-10-21 Bull Cp8 METHOD FOR AUTHENTICATING EXTERNAL AUTHORIZATION DATA BY A PORTABLE OBJECT SUCH AS A MEMORY CARD
FR2601525B1 (en) 1986-07-11 1988-10-21 Bull Cp8 SECURITY DEVICE PROHIBITING THE OPERATION OF AN ELECTRONIC ASSEMBLY AFTER A FIRST SHUTDOWN OF ITS POWER SUPPLY
US5091846A (en) * 1986-10-03 1992-02-25 Intergraph Corporation Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency
JPS63253451A (en) * 1987-04-10 1988-10-20 Hitachi Ltd Control system for security of storage device
FR2618002B1 (en) 1987-07-10 1991-07-05 Schlumberger Ind Sa METHOD AND SYSTEM FOR AUTHENTICATING ELECTRONIC MEMORY CARDS
US5007082A (en) 1988-08-03 1991-04-09 Kelly Services, Inc. Computer software encryption apparatus
US5079737A (en) 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
US5434999A (en) 1988-11-09 1995-07-18 Bull Cp8 Safeguarded remote loading of service programs by authorizing loading in protected memory zones in a terminal
FR2640798B1 (en) 1988-12-20 1993-01-08 Bull Cp8 DATA PROCESSING DEVICE COMPRISING AN ELECTRICALLY ERASABLE AND REPROGRAMMABLE NON-VOLATILE MEMORY
JPH02171934A (en) 1988-12-26 1990-07-03 Hitachi Ltd Virtual machine system
JPH02208740A (en) 1989-02-09 1990-08-20 Fujitsu Ltd Virtual computer control system
US5781753A (en) 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
US5442645A (en) 1989-06-06 1995-08-15 Bull Cp8 Method for checking the integrity of a program or data, and apparatus for implementing this method
JP2590267B2 (en) 1989-06-30 1997-03-12 株式会社日立製作所 Display control method in virtual machine
US5022077A (en) 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
JP2825550B2 (en) 1989-09-21 1998-11-18 株式会社日立製作所 Multiple virtual space address control method and computer system
CA2010591C (en) 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
CA2027799A1 (en) 1989-11-03 1991-05-04 David A. Miller Method and apparatus for independently resetting processors and cache controllers in multiple processor systems
US5075842A (en) 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
EP0473913A3 (en) 1990-09-04 1992-12-16 International Business Machines Corporation Method and apparatus for providing a service pool of virtual machines for a plurality of vm users
US5108590A (en) 1990-09-12 1992-04-28 Disanto Dennis Water dispenser
US5230069A (en) 1990-10-02 1993-07-20 International Business Machines Corporation Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US5317705A (en) 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5287363A (en) * 1991-07-01 1994-02-15 Disk Technician Corporation System for locating and anticipating data storage media failures
US5437033A (en) 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
US5255379A (en) 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
US5453003A (en) 1991-01-09 1995-09-26 Pfefferle; William C. Catalytic method
US5551033A (en) 1991-05-17 1996-08-27 Zenith Data Systems Corporation Apparatus for maintaining one interrupt mask register in conformity with another in a manner invisible to an executing program
JPH04348434A (en) 1991-05-27 1992-12-03 Hitachi Ltd Virtual computer system
US5319760A (en) 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
US5522075A (en) 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5455909A (en) 1991-07-05 1995-10-03 Chips And Technologies Inc. Microprocessor with operation capture facility
JPH06236284A (en) 1991-10-21 1994-08-23 Intel Corp Method for preservation and restoration of computer-system processing state and computer system
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5574936A (en) 1992-01-02 1996-11-12 Amdahl Corporation Access control mechanism controlling access to and logical purging of access register translation lookaside buffer (ALB) in a computer system
US5486529A (en) 1992-04-16 1996-01-23 Zeneca Limited Certain pyridyl ketones for treating diseases involving leukocyte elastase
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5610981A (en) 1992-06-04 1997-03-11 Integrated Technologies Of America, Inc. Preboot protection for a data security system with anti-intrusion capability
US5237616A (en) * 1992-09-21 1993-08-17 International Business Machines Corporation Secure computer system having privileged and unprivileged memories
US5293424A (en) 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
US5796835A (en) 1992-10-27 1998-08-18 Bull Cp8 Method and system for writing information in a data carrier making it possible to later certify the originality of this information
JP2765411B2 (en) 1992-11-30 1998-06-18 株式会社日立製作所 Virtual computer system
EP0600112A1 (en) 1992-11-30 1994-06-08 Siemens Nixdorf Informationssysteme Aktiengesellschaft Data processing system with virtual memory addressing and memory access controlled by keys
US5668971A (en) * 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
JPH06187178A (en) 1992-12-18 1994-07-08 Hitachi Ltd Input and output interruption control method for virtual computer system
US5483656A (en) * 1993-01-14 1996-01-09 Apple Computer, Inc. System for managing power consumption of devices coupled to a common bus
US5469557A (en) 1993-03-05 1995-11-21 Microchip Technology Incorporated Code protection in microcontroller with EEPROM fuses
FR2703800B1 (en) 1993-04-06 1995-05-24 Bull Cp8 Method for signing a computer file, and device for implementing it.
FR2704341B1 (en) 1993-04-22 1995-06-02 Bull Cp8 Device for protecting the keys of a smart card.
JPH06348867A (en) 1993-06-04 1994-12-22 Hitachi Ltd Microcomputer
FR2706210B1 (en) 1993-06-08 1995-07-21 Bull Cp8 Method for authenticating a portable object by an offline terminal, portable object and corresponding terminal.
US5555385A (en) 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5825880A (en) * 1994-01-13 1998-10-20 Sudia; Frank W. Multi-step digital signature method and system
US5459869A (en) 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5604805A (en) * 1994-02-28 1997-02-18 Brands; Stefanus A. Privacy-protected transfer of electronic information
FR2717286B1 (en) 1994-03-09 1996-04-05 Bull Cp8 Method and device for authenticating a data medium intended to allow a transaction or access to a service or a place, and corresponding medium.
JP3642533B2 (en) * 1994-04-26 2005-04-27 株式会社東芝 Program card and computer using the same
US5684881A (en) 1994-05-23 1997-11-04 Matsushita Electric Industrial Co., Ltd. Sound field and sound image control apparatus and method
US5539828A (en) 1994-05-31 1996-07-23 Intel Corporation Apparatus and method for providing secured communications
US5473692A (en) 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5533123A (en) 1994-06-28 1996-07-02 National Semiconductor Corporation Programmable distributed personal security
US5978481A (en) 1994-08-16 1999-11-02 Intel Corporation Modem compatible method and apparatus for encrypting data that is transparent to software applications
JPH0883211A (en) * 1994-09-12 1996-03-26 Mitsubishi Electric Corp Data processor
DE69534757T2 (en) 1994-09-15 2006-08-31 International Business Machines Corp. System and method for secure storage and distribution of data using digital signatures
US6058478A (en) 1994-09-30 2000-05-02 Intel Corporation Apparatus and method for a vetted field upgrade
FR2725537B1 (en) 1994-10-11 1996-11-22 Bull Cp8 METHOD FOR LOADING A PROTECTED MEMORY AREA OF AN INFORMATION PROCESSING DEVICE AND ASSOCIATED DEVICE
US5903752A (en) 1994-10-13 1999-05-11 Intel Corporation Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system
US5606617A (en) 1994-10-14 1997-02-25 Brands; Stefanus A. Secret-key certificates
US5564040A (en) 1994-11-08 1996-10-08 International Business Machines Corporation Method and apparatus for providing a server function in a logically partitioned hardware machine
US6269392B1 (en) 1994-11-15 2001-07-31 Christian Cotichini Method and apparatus to monitor and locate an electronic device using a secured intelligent agent
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5555414A (en) 1994-12-14 1996-09-10 International Business Machines Corporation Multiprocessing system including gating of host I/O and external enablement to guest enablement at polling intervals
US5615263A (en) 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5764969A (en) 1995-02-10 1998-06-09 International Business Machines Corporation Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization
FR2731536B1 (en) 1995-03-10 1997-04-18 Schlumberger Ind Sa METHOD FOR SECURE INFORMATION RECORDING ON A PORTABLE MEDIUM
US5717903A (en) 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
JP3451595B2 (en) 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション Microprocessor with architectural mode control capable of supporting extension to two distinct instruction set architectures
JPH0944407A (en) * 1995-08-02 1997-02-14 Nec Eng Ltd Method for protecting data file and security system
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5633929A (en) * 1995-09-15 1997-05-27 Rsa Data Security, Inc Cryptographic key escrow system having reduced vulnerability to harvesting attacks
US5737760A (en) 1995-10-06 1998-04-07 Motorola Inc. Microcontroller with security logic circuit which prevents reading of internal memory by external program
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
JP3693721B2 (en) 1995-11-10 2005-09-07 Necエレクトロニクス株式会社 Microcomputer with built-in flash memory and test method thereof
IL116708A (en) 1996-01-08 2000-12-06 Smart Link Ltd Real-time task manager for a personal computer
WO1997025798A1 (en) 1996-01-11 1997-07-17 Mrj, Inc. System for controlling access and distribution of digital property
US5657445A (en) 1996-01-26 1997-08-12 Dell Usa, L.P. Apparatus and method for limiting access to mass storage devices in a computer system
US5860028A (en) * 1996-02-01 1999-01-12 Paragon Electric Company, Inc. I/O bus expansion system wherein processor checks plurality of possible address until a response from the peripheral selected by address decoder using user input
IL117085A (en) 1996-02-08 2005-07-25 Milsys Ltd Secure computer system
US5835594A (en) 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5978892A (en) 1996-05-03 1999-11-02 Digital Equipment Corporation Virtual memory allocation in a virtual address space having an inaccessible gap
US5809546A (en) * 1996-05-23 1998-09-15 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries including storage keys for controlling accesses to the buffers
US6175925B1 (en) 1996-06-13 2001-01-16 Intel Corporation Tamper resistant player for scrambled contents
US6205550B1 (en) 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
US6178509B1 (en) 1996-06-13 2001-01-23 Intel Corporation Tamper resistant methods and apparatus
US5729760A (en) 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5740178A (en) * 1996-08-29 1998-04-14 Lucent Technologies Inc. Software for controlling a reliable backup memory
WO1998012620A1 (en) 1996-09-20 1998-03-26 Mitsubishi Denki Kabushiki Kaisha Microcomputer having reset control function
US6055637A (en) 1996-09-27 2000-04-25 Electronic Data Systems Corporation System and method for accessing enterprise-wide resources by presenting to the resource a temporary credential
US5937063A (en) 1996-09-30 1999-08-10 Intel Corporation Secure boot
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5935242A (en) * 1996-10-28 1999-08-10 Sun Microsystems, Inc. Method and apparatus for initializing a device
JPH10134008A (en) 1996-11-05 1998-05-22 Mitsubishi Electric Corp Semiconductor device and computer system
US5852717A (en) 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
DE19649292A1 (en) 1996-11-28 1998-06-04 Deutsche Telekom Ag Access protection method for pay television
US5901225A (en) 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US5818939A (en) 1996-12-18 1998-10-06 Intel Corporation Optimized security functionality in an electronic system
US6412035B1 (en) 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US6148401A (en) 1997-02-05 2000-11-14 At&T Corp. System and method for providing assurance to a host that a piece of software possesses a particular property
US5953502A (en) 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
JP4000654B2 (en) 1997-02-27 2007-10-31 セイコーエプソン株式会社 Semiconductor device and electronic equipment
EP0970411B1 (en) 1997-03-27 2002-05-15 BRITISH TELECOMMUNICATIONS public limited company Copy protection of data
US6272637B1 (en) 1997-04-14 2001-08-07 Dallas Semiconductor Corporation Systems and methods for protecting access to encrypted information
US6557104B2 (en) * 1997-05-02 2003-04-29 Phoenix Technologies Ltd. Method and apparatus for secure processing of cryptographic keys
US6044478A (en) 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US5987557A (en) 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
US6175924B1 (en) 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US6584565B1 (en) 1997-07-15 2003-06-24 Hewlett-Packard Development Company, L.P. Method and apparatus for long term verification of digital signatures
US6014745A (en) 1997-07-17 2000-01-11 Silicon Systems Design Ltd. Protection for customer programs (EPROM)
US6212635B1 (en) 1997-07-18 2001-04-03 David C. Reardon Network security system allowing access and modification to a security subsystem after initial installation when a master token is in place
US5978475A (en) 1997-07-18 1999-11-02 Counterpane Internet Security, Inc. Event auditing system
US6188995B1 (en) 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
US5919257A (en) * 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
DE19735948C1 (en) 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Method for improving controllability in data processing equipment with translation-look-aside-buffer (TLB)
US6282657B1 (en) 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US5935247A (en) * 1997-09-18 1999-08-10 Geneticware Co., Ltd. Computer system having a genetic code that cannot be directly accessed and a method of maintaining the same
US6148379A (en) 1997-09-19 2000-11-14 Silicon Graphics, Inc. System, method and computer program product for page sharing between fault-isolated cells in a distributed shared memory system
US6182089B1 (en) 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US5987572A (en) * 1997-09-29 1999-11-16 Intel Corporation Method and apparatus employing a dynamic encryption interface between a processor and a memory
US6061794A (en) 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6357004B1 (en) 1997-09-30 2002-03-12 Intel Corporation System and method for ensuring integrity throughout post-processing
US5970147A (en) 1997-09-30 1999-10-19 Intel Corporation System and method for configuring and registering a cryptographic device
US5987604A (en) 1997-10-07 1999-11-16 Phoenix Technologies, Ltd. Method and apparatus for providing execution of system management mode services in virtual mode
US6085296A (en) 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6219787B1 (en) 1997-12-22 2001-04-17 Texas Instruments Incorporated Method and apparatus for extending security model to native code
US6378072B1 (en) 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6308270B1 (en) 1998-02-13 2001-10-23 Schlumberger Technologies, Inc. Validating and certifying execution of a software program with a smart card
US6108644A (en) 1998-02-19 2000-08-22 At&T Corp. System and method for electronic transactions
US6131166A (en) * 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
US6192455B1 (en) 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6374286B1 (en) 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
US6173417B1 (en) 1998-04-30 2001-01-09 Intel Corporation Initializing and restarting operating systems
US6339826B2 (en) 1998-05-05 2002-01-15 International Business Machines Corp. Client-server system for maintaining a user desktop consistent with server application user access permissions
US6397242B1 (en) 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
FR2778998B1 (en) 1998-05-20 2000-06-30 Schlumberger Ind Sa METHOD FOR AUTHENTICATING A PERSONAL CODE OF A USER OF AN INTEGRATED CIRCUIT CARD
DE69942712D1 (en) 1998-05-29 2010-10-14 Texas Instruments Inc Secure computing device
US6421702B1 (en) 1998-06-09 2002-07-16 Advanced Micro Devices, Inc. Interrupt driven isochronous task scheduler system
WO1999065579A1 (en) 1998-06-17 1999-12-23 Aristocrat Technologies Australia Pty. Ltd. Software verification and authentication
US6289438B1 (en) * 1998-07-29 2001-09-11 Kabushiki Kaisha Toshiba Microprocessor cache redundancy scheme using store buffer
US6339815B1 (en) 1998-08-14 2002-01-15 Silicon Storage Technology, Inc. Microcontroller system having allocation circuitry to selectively allocate and/or hide portions of a program memory address space
US6505279B1 (en) 1998-08-14 2003-01-07 Silicon Storage Technology, Inc. Microcontroller system having security circuitry to selectively lock portions of a program memory address space
JP2000076139A (en) 1998-08-28 2000-03-14 Nippon Telegr & Teleph Corp <Ntt> Portable information storage medium
US6363485B1 (en) 1998-09-09 2002-03-26 Entrust Technologies Limited Multi-factor biometric authenticating device and method
JP2000090002A (en) * 1998-09-09 2000-03-31 Toshiba Corp Data base managing system
US6463535B1 (en) 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform
US6230248B1 (en) 1998-10-12 2001-05-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for pre-validating regions in a virtual addressing scheme
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6609199B1 (en) * 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6330670B1 (en) 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US6445797B1 (en) 1998-12-16 2002-09-03 Secure Choice Llc Method and system for performing secure electronic digital streaming
US6463537B1 (en) 1999-01-04 2002-10-08 Codex Technologies, Inc. Modified computer motherboard security and identification system
US6282650B1 (en) 1999-01-25 2001-08-28 Intel Corporation Secure public digital watermark
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6560627B1 (en) * 1999-01-28 2003-05-06 Cisco Technology, Inc. Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
US6188257B1 (en) 1999-02-01 2001-02-13 Vlsi Technology, Inc. Power-on-reset logic with secure power down capability
EP1030237A1 (en) 1999-02-15 2000-08-23 Hewlett-Packard Company Trusted hardware device in a computer
US6272533B1 (en) 1999-02-16 2001-08-07 Hendrik A. Browne Secure computer system and method of providing secure access to a computer system including a stand alone switch operable to inhibit data corruption on a storage device
US7225333B2 (en) * 1999-03-27 2007-05-29 Microsoft Corporation Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US6615278B1 (en) * 1999-03-29 2003-09-02 International Business Machines Corporation Cross-platform program, system, and method having a global registry object for mapping registry equivalent functions in an OS/2 operating system environment
US6684326B1 (en) * 1999-03-31 2004-01-27 International Business Machines Corporation Method and system for authenticated boot operations in a computer system of a networked computing environment
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
CA2368858A1 (en) 1999-04-12 2000-10-19 Digital Media On Demand, Inc. Secure electronic commerce system
US6389537B1 (en) 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US6275933B1 (en) 1999-04-30 2001-08-14 3Com Corporation Security system for a computerized apparatus
EP1056014A1 (en) 1999-05-28 2000-11-29 Hewlett-Packard Company System for providing a trustworthy user interface
EP1055989A1 (en) 1999-05-28 2000-11-29 Hewlett-Packard Company System for digitally signing a document
US6321314B1 (en) 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US6633981B1 (en) 1999-06-18 2003-10-14 Intel Corporation Electronic system and method for controlling access through user authentication
US6158546A (en) 1999-06-25 2000-12-12 Tenneco Automotive Inc. Straight through muffler with conically-ended output passage
JP3602984B2 (en) * 1999-07-09 2004-12-15 富士通株式会社 Memory device
US6301646B1 (en) 1999-07-30 2001-10-09 Curl Corporation Pointer verification system and method
US6779114B1 (en) * 1999-08-19 2004-08-17 Cloakware Corporation Tamper resistant software-control flow encoding
US6529909B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Method for translating an object attribute converter in an information services patterns environment
JP2001148344A (en) 1999-09-09 2001-05-29 Nikon Corp Aligner, method for controlling output of energy source, laser using the method and method for manufacturing device
EP1085396A1 (en) 1999-09-17 2001-03-21 Hewlett-Packard Company Operation of trusted state in computing platform
US6535988B1 (en) 1999-09-29 2003-03-18 Intel Corporation System for detecting over-clocking uses a reference signal thereafter preventing over-clocking by reducing clock rate
US6374317B1 (en) 1999-10-07 2002-04-16 Intel Corporation Method and apparatus for initializing a computer interface
GB9923804D0 (en) 1999-10-08 1999-12-08 Hewlett Packard Co Electronic commerce system
GB9923802D0 (en) 1999-10-08 1999-12-08 Hewlett Packard Co User authentication
US6292874B1 (en) 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
JP4226760B2 (en) 2000-05-08 2009-02-18 株式会社東芝 Microprocessor, multitask execution method using the same, and multired execution method
JP3801833B2 (en) * 2000-02-14 2006-07-26 株式会社東芝 Microprocessor
FR2805074B1 (en) 2000-02-15 2003-06-27 Ascom Monetel Sa ANTI-INTRUSION DEVICE
WO2001063994A2 (en) 2000-02-23 2001-08-30 Iridian Technologies, Inc. Tamper proof case for electronic devices having memories with sensitive information
AU2001251701A1 (en) 2000-02-25 2001-09-03 Identix Incorporated Secure transaction system
WO2001065366A1 (en) 2000-03-02 2001-09-07 Alarity Corporation System and method for process protection
JP3710671B2 (en) * 2000-03-14 2005-10-26 シャープ株式会社 One-chip microcomputer, IC card using the same, and access control method for one-chip microcomputer
CA2341931C (en) 2000-03-24 2006-05-30 Contentguard Holdings, Inc. System and method for protection of digital works
US6633963B1 (en) 2000-03-31 2003-10-14 Intel Corporation Controlling access to multiple memory zones in an isolated execution environment
US6990579B1 (en) 2000-03-31 2006-01-24 Intel Corporation Platform and method for remote attestation of a platform
US6795905B1 (en) 2000-03-31 2004-09-21 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution
US6678825B1 (en) * 2000-03-31 2004-01-13 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
US6507904B1 (en) 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
CA2305078A1 (en) * 2000-04-12 2001-10-12 Cloakware Corporation Tamper resistant software - mass data encoding
US6976162B1 (en) 2000-06-28 2005-12-13 Intel Corporation Platform and method for establishing provable identities while maintaining privacy
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
GB0020416D0 (en) * 2000-08-18 2000-10-04 Hewlett Packard Co Trusted system
US20020062452A1 (en) 2000-08-18 2002-05-23 Warwick Ford Countering credentials copying
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US6948065B2 (en) 2000-12-27 2005-09-20 Intel Corporation Platform and method for securely transmitting an authorization secret
JP4098478B2 (en) * 2001-01-31 2008-06-11 株式会社東芝 Microprocessor
US7631160B2 (en) * 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
US8909555B2 (en) 2001-04-24 2014-12-09 Hewlett-Packard Development Company, L.P. Information security system
US6976136B2 (en) * 2001-05-07 2005-12-13 National Semiconductor Corporation Flash memory protection scheme for secured shared BIOS implementation in personal computers with an embedded controller
US7676430B2 (en) * 2001-05-09 2010-03-09 Lenovo (Singapore) Ptd. Ltd. System and method for installing a remote credit card authorization on a system with a TCPA complaint chipset
US20030061385A1 (en) * 2001-05-31 2003-03-27 Lucas Gonze Computer network interpretation and translation format for simple and complex machines
EP1271277A3 (en) 2001-06-26 2003-02-05 Redstrike B.V. Security system and software to prevent unauthorized use of a computing device
US20030018892A1 (en) 2001-07-19 2003-01-23 Jose Tello Computer with a modified north bridge, security engine and smart card having a secure boot capability and method for secure booting a computer
JP2003051819A (en) * 2001-08-08 2003-02-21 Toshiba Corp Microprocessor
US6996725B2 (en) * 2001-08-16 2006-02-07 Dallas Semiconductor Corporation Encryption-based security protection for processors
JP4226816B2 (en) * 2001-09-28 2009-02-18 株式会社東芝 Microprocessor
US7191464B2 (en) * 2001-10-16 2007-03-13 Lenovo Pte. Ltd. Method and system for tracking a secure boot in a trusted computing environment
JP4335516B2 (en) * 2001-12-04 2009-09-30 パナソニック株式会社 Video encoding apparatus and method using a plurality of processors
US7103771B2 (en) * 2001-12-17 2006-09-05 Intel Corporation Connecting a virtual token to a physical token
US20030126454A1 (en) 2001-12-28 2003-07-03 Glew Andrew F. Authenticated code method and apparatus
US7308576B2 (en) * 2001-12-31 2007-12-11 Intel Corporation Authenticated code module
US20030126453A1 (en) * 2001-12-31 2003-07-03 Glew Andrew F. Processor supporting execution of an authenticated code instruction
US7107460B2 (en) * 2002-02-15 2006-09-12 International Business Machines Corporation Method and system for securing enablement access to a data security device
US7343493B2 (en) * 2002-03-28 2008-03-11 Lenovo (Singapore) Pte. Ltd. Encrypted file system using TCPA
US6986028B2 (en) * 2002-04-22 2006-01-10 Texas Instruments Incorporated Repeat block with zero cycle overhead nesting
US7729386B2 (en) * 2002-09-04 2010-06-01 Tellabs Operations, Inc. Systems and methods for frame synchronization
US7818519B2 (en) * 2002-12-02 2010-10-19 Silverbrook Research Pty Ltd Timeslot arbitration scheme
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5655125A (en) * 1992-12-29 1997-08-05 Intel Corporation Register for identifying processor characteristics
EP0700002A1 (en) * 1994-08-31 1996-03-06 Motorola, Inc. Modular chip select control circuit and related circuit and methods
US20010018736A1 (en) * 2000-02-14 2001-08-30 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US20030055928A1 (en) * 2001-09-03 2003-03-20 Nec Corporation Automatic computer configuration system, method and program making use of portable terminal
US20030097551A1 (en) * 2001-11-16 2003-05-22 Fuller David W. System and method for a deploying a hardware configuration with a computer program

Also Published As

Publication number Publication date
JP2007515709A (en) 2007-06-14
DE112004002259T5 (en) 2006-10-26
JP5021078B2 (en) 2012-09-05
KR20060090296A (en) 2006-08-10
US20130067184A1 (en) 2013-03-14
US9348767B2 (en) 2016-05-24
CN1886711A (en) 2006-12-27
WO2005055024A1 (en) 2005-06-16
US20050114610A1 (en) 2005-05-26
JP2011076632A (en) 2011-04-14
US20130275772A1 (en) 2013-10-17
US9087000B2 (en) 2015-07-21
CN1886711B (en) 2014-07-23
US8156343B2 (en) 2012-04-10
KR100974973B1 (en) 2010-08-09

Similar Documents

Publication Publication Date Title
DE112004002259B4 (en) Access to private data about the status of a data processing machine from a publicly accessible storage
DE10195999B3 (en) A computer system comprising a memory controller, included in a chipset, for controlling accesses to an isolated memory for an isolated implementation
DE10196005B4 (en) Apparatus and method for isolated execution of isolated instructions
DE112012007063B4 (en) Merge adjacent collect/scatter operations
DE112005002298B4 (en) Increasing the performance of an address translation using translation tables comprising large address spaces
DE10196006B4 (en) Create a key hierarchy for use in an isolated execution environment
DE102018115491A1 (en) SYSTEM, APPARATUS AND METHOD FOR SIDE GRANULAR, SOFTWARE CONTROLLED MEMORY ENCRYPTION WITH SEVERAL KEYS
DE102018005977A1 (en) SLIDING COMBINATION TO FIXED COMMERCIAL CONVERSION
DE102009017496B4 (en) Memory access in a system with memory protection
DE202019005671U1 (en) Coexistence of trust domain architecture with multi-key total storage encryption technology on servers
DE102015006863A1 (en) Commands and logic to pause and resume paging in Secure Enclaves
DE102015002215A1 (en) Sorting processor, methods, systems and commands
DE112013005431T5 (en) Secure key derivation and cryptography logic for integrated circuits
DE102013200161A1 (en) Data encryption / compression based on memory address translation
DE102015002124A1 (en) Return Destination Restricted Procedural Return Instructions, Processors, Methods, and Systems
DE112004001605T5 (en) Computer system in which a secure execution environment is applied and in which a memory controller is formed, which is designed to erase the memory
DE202019005682U1 (en) Hardware-based paging mechanisms
DE102019109845A1 (en) Unified acceleration of a block secret code of a symmetric key for AES-SMS4-Camellia
DE102019128261A1 (en) Data sharing control based on authentication and link protection
DE102018129341A1 (en) Method and apparatus for multi-load and multi-store vector instructions
DE102018004290A1 (en) Cryptographic memory protection with multiple keys
DE102015007422A1 (en) An instruction set for eliminating misaligned memory accesses during processing of an array with misaligned data lines
DE102019109119A1 (en) HOST-MANAGED COHERENT DEVICE STORAGE
DE112007003206T5 (en) Reconfiguring a secure system
DE10196440T5 (en) Control access to multiple isolated stores in an isolated execution environment

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 112004002259

Country of ref document: DE

Date of ref document: 20061026

Kind code of ref document: P

8125 Change of the main classification

Ipc: G06F 12/14 AFI20060731BHDE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20130907

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140603