DE10392528T5 - Microcode-Patch-Authentifizierung - Google Patents

Microcode-Patch-Authentifizierung Download PDF

Info

Publication number
DE10392528T5
DE10392528T5 DE10392528T DE10392528T DE10392528T5 DE 10392528 T5 DE10392528 T5 DE 10392528T5 DE 10392528 T DE10392528 T DE 10392528T DE 10392528 T DE10392528 T DE 10392528T DE 10392528 T5 DE10392528 T5 DE 10392528T5
Authority
DE
Germany
Prior art keywords
patch
microcode
microcode patch
digital signature
hash digest
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.)
Ceased
Application number
DE10392528T
Other languages
English (en)
Inventor
James II. Portland Sutton
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 DE10392528T5 publication Critical patent/DE10392528T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

Maschinenlesbares Medium, das Befehle bereitstellt, die, wenn sie von einem Satz von einem oder mehreren Prozessoren ausgeführt werden, bewirken, daß der Satz von Prozessoren Vorgänge durchführt, die Folgendes umfassen:
Erstellen eines Hash-Digests für einen Mikrocodepatch;
Verschlüsseln des Hash-Digests zum Erstellen einer digitalen Signatur; und
Kombinieren der digitalen Signatur und des Mikrocodepatchs zum Liefern an einen Zielprozessor, um Mikrocode im Zielprozessor zu patchen.

Description

  • BESCHREIBUNG
  • ALLGEMEINER STAND DER TECHNIK
  • Ein typischer Befehl in einem Computerprozessor führt eine Reihe von Vorgängen aus, wobei Mikrobefehle, die jeden Vorgang definieren, in einem nichtflüchtigen Speicherbereich in Form von Mikrocode codiert werden. Der Mikrocode definiert alles oder einen Teil des ausführbaren Befehlssatzes für den Prozessor und kann auch interne Vorgänge definieren, die nicht in durch Software zugänglichen Code umgesetzt sind. Der Mikrocode wird in der Regel in einen Festspeicher (read-only memory, ROM) im Prozessor gesetzt, wenn der Prozessor gefertigt wird. Mikrocode muß jedoch manchmal modifiziert werden, nachdem der Prozessor gefertigt und sogar nachdem der Prozessor in Betrieb genommen wurde.
  • Mikrocodepatches ermöglichen eine derartige Modifikation durch Einfügen neuer Mikrobefehle anstelle der ursprünglichen Mikrobefehle. Die Mikrocodepatches können über verschiedene Wege (wie beispielsweise durch Herunterladen über einen Nachrichtenkanal, Installieren durch einen Servicetechniker oder Bereitstellung mit einem Betriebssystem) dem Prozessor geliefert werden und werden dann im Prozessor zur Verwendung im Betrieb gespeichert.
  • Da der Mikrocode-ROM nicht einfach verändert werden kann, werden Mikrocodepatches in der Regel in einen Patch-Speicher im Prozessor, wie beispielsweise einen Direktzugriffsspeicher (random-access memory, RAM), gesetzt und Hinweise auf die modifizierten Mikrobefehle werden zum Patch-RAM anstatt zum ROM umgeleitet. Da der Patch-RAM flüchtig sein kann, werden die Mikrocode-Patches für gewöhnlich entweder auf Festplatte oder im BIOS (Basic Input-Output System, einfaches Eingabe-/Ausgabesystem) gespeichert und werden in den Patch-RAM geladen, wenn das System gestartet wird.
  • Wenn ein Prozessor in einer sicheren Umgebung verwendet werden soll, sollten verschiedene Sicherheitsvorkehrungen beim Design der Software und/oder Hardware vorgenommen werden, um einen Schutz gegen das Manipulieren des Betriebs der sicheren Funktionen bereitzustellen. Die Möglichkeit zum Einfügen von nicht autorisierten Mikrocodepatches in einen Prozessor stellt einen Weg dar, mit dem ein feindseliger Angreifer herkömmlichen Sicherheitsmaßnahmen entgegenwirken kann.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung kann durch Bezugnahme auf die folgende Beschreibung und die begleitenden Zeichnungen, die zum Veranschaulichen von Ausführungsformen der Erfindung verwendet werden, verstanden werden.
  • 1 zeigt ein Blockschema eines Systems zum Validieren und Installieren von Mikrocodepatches gemäß einer Ausführungsform der Erfindung.
  • 2 zeigt ein Blockschema eines Systems zum Umwandeln von Mikrocodepatches in eine für die Lieferung sichere Form gemäß einer Ausführungsform der Erfindung.
  • 3 zeigt ein Patchpaket, das vom System von 2 zum System von 1 gelieferte Elemente enthält, gemäß einer Ausführungsform der Erfindung.
  • 4 zeigt ein Ablaufdiagramm eines Gesamtprozesses zum Vorbereiten, Liefern und Validieren eines Patchpakets gemäß einer Ausführungsform der Erfindung.
  • 5 zeigt ein Ablaufdiagramm eines Prozesses zum Vorbereiten eines Patchpakets gemäß einer Ausführungsform der Erfindung.
  • 6 zeigt ein Ablaufdiagramm eines Prozesses zum Validieren eines Patchpakets gemäß einer Ausführungsform der Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten ausgeführt. Es versteht sich jedoch, daß Ausführungsformen der Erfindung ohne diese spezifischen Einzelheiten ausgeübt werden können. In anderen Beispielen sind wohl bekannte Schaltkreise, Strukturen und Techniken nicht im Detail gezeigt, um nicht ein Verständnis dieser Beschreibung zu verschleiern.
  • Hinweise auf "eine Ausführungsform", "Ausführungsbeispiel", "verschiedene Ausführungsformen" usw. weisen darauf hin, daß die beschriebene(n) Ausführungsformen) ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft aufweisen kann/können, aber nicht notwendigerweise jede Ausführungsform das bestimmte Merkmal, die bestimmte Struktur oder die bestimmte Eigenschaft beinhaltet. Des Weiteren können die für unterschiedliche Ausführungsformen beschriebenen Merkmale, Strukturen oder Eigenschaften in einer einzigen Ausführungsform kombiniert werden. Weiterhin bezieht sich die wiederholte Verwendung des Ausdrucks "in einer Ausführungsform" nicht notwendigerweise auf dieselbe Ausführungsform, was jedoch möglich ist.
  • Bezugnahmen hierin auf Kryptographie können Verschlüsselung und/oder Entschlüsselung beinhalten. Bezugnahmen hierin auf "symmetrische" Kryptographie, Schlüssel, Verschlüsselung oder Entschlüsselung beziehen sich auf kryptographische Techniken, in denen derselbe Schlüssel für die Verschlüsselung und die zugehörige Entschlüsselung verwendet wird. Der wohl bekannte Data Encryption Standard (DES, Datenverschlüsselungsstandard), der 1993 als Federal Information Publishing Standard FIPS PUB 46-2 veröffentlicht wurde, und der Advanced Encryption Standard (AES, erweiterter Verschlüsselungsstandard), der 2001 als FIPS PUB 197 veröffentlicht wurde, sind Beispiele von symmetrischer Kryptographie. Bezugnahmen hierin auf "asymmetrische" Kryptographie, Schlüssel, Verschlüsselung oder Entschlüsselung beziehen sich auf kryptographische Techniken, in denen verschiedene, aber anverwandte Schlüssel für die Verschlüsselung und die zugehörige Entschlüsselung verwendet werden. Kryptographische Techniken mit sogenanntem "öffentlichen Schlüssel", einschließlich der wohl bekannten Rivest-Shamir-Adleman-Technik (RSA-Technik), sind Beispiele asymmetrischer Kryptographie. Einer von zwei anverwandten Schlüsseln eines asymmetrischen kryptographischen Prozesses wird hierin als ein privater Schlüssel (da er im Allgemeinen geheimgehalten wird) und der andere Schlüssel als ein öffentlicher Schlüssel (da er im Allgemeinen frei verfügbar gemacht wird) bezeichnet. In manchen Ausführungsform kann entweder der private oder der öffentliche Schlüssel zur Verschlüsselung verwendet werden, während der andere Schlüssel bei der zugehörigen Entschlüsselung verwendet wird.
  • Ausführungsformen der Erfindung können in einer Hardware, Firmware oder Software oder einer Kombination dieser umgesetzt sein.
  • Ausführungsformen der Erfindung können auch als auf einem maschinenlesbaren Medium gespeicherte Befehle umgesetzt sein, die von mindestens einem Prozessor zum Durchführen der oben beschriebenen Vorgänge gelesen und ausgeführt werden. Ein maschinenlesbares Medium kann einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer von einer Maschine (z. B. einem Computer) lesbaren Form beinhalten. Ein maschinenlesbares Medium kann beispielsweise Festspeicher (read-only memory, ROM); Direktzugriffsspeicher (random-access memory, RAM); Magnetplattenspeichermedien; optische Speichermedien; Flash-Speichervorrichtungen; elektrische, optische, akustische oder eine andere Form von verbreiteten Signalen (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) und andere beinhalten.
  • Verschiedene Ausführungsformen der Erfindung umfassen das Codieren und/oder Decodieren eines Mikrocodepatchs (hierin auch einfach als ein "Patch" bezeichnet), so daß der Patch als gültig authentifiziert werden kann, bevor er in einem Zielprozessor (einem Prozessor, in dem der Patch verwendet werden soll) installiert wird. Das Codieren/Decodieren kann einen oder mehrere der folgenden Vorgänge umfassen: 1) Verschlüsselung/Entschlüsselung, 2) die Verwendung von kryptographischen Hash-Funktionen, 3) die Verwendung von digitalen Signaturen, 4) usw. Ein Zielsystem ist das System, in dem der Patch installiert werden soll, während es sich bei einem Herkunftssystem um das System handelt, das den Patch für die sichere Lieferung zum Zielsystem vorbereitet. In einer Ausführungsform wird ein üblicher Satz von Patches für einen bestimmten Computersystemtyp erstellt, wobei "Typ" auf eine bestimmte Generation, eine bestimmte Modellnummer, eine beliebige Kategorie innerhalb der Modellnummer usw. hinweisen kann. Nachdem ein Patch erstellt wurde, kann er vor der Lieferung an jedes der Zielsysteme, für die er gedacht ist, auf die hierin beschriebene Art und Weise codiert werden. In jedem Zielsystem können ein oder mehrere Patches decodiert und wie hierin beschrieben installiert werden, so daß die Patches zu einem betriebsbereiten Teil des Zielsystems werden.
  • Es kann ein beliebiges praktisches Verfahren zur Lieferung verwendet werden, einschließlich u. a. Lieferung über eine Nachrichtenstrecke, Installieren durch einen Techniker, Einbindung in ein Betriebssystem durch den Hersteller dieses Betriebssystems, Einbindung in ein BIOS (basic Input-output System, einfaches Eingabe-/Ausgabesystem) usw. Nachdem der Patch geliefert wurde, kann er in seiner codierten Form gespeichert werden, bis er betriebsbereit installiert wird. Die betriebsbereite Installation beinhaltet das Decodieren des codierten Patchs, das Validieren, daß der Patch autorisiert ist, und das Setzen des Patchs in einen Patch-Speicher. Das Validieren kann einen der oder beide folgenden Vorgänge beinhalten: 1) Bestimmen, daß der Patch nicht modifiziert worden ist, seit er im Herkunftssystem für die Lieferung vorbereitet wurde, und 2) Bestimmen, daß der Patch in einem autorisierten System vorbereitet wurde. In einer Ausführungsform wird der codierte Patch auf der Festplatte oder im BIOS des Zielsystems gespeichert, um jedes Mal, wenn das System gestartet wird, in einem flüchtigen Patch-RAM betriebsbereit installiert zu werden. In einer anderen Ausführungsform wird der codierte Patch in einem nichtflüchtigen Patch-Speicher betriebsbereit installiert und nicht während nachfolgender Startvorgänge neu installiert.
  • 1 zeigt ein Blockschema eines Systems zum Validieren und Installieren von Mikrocodepatches gemäß einer Ausführungsform der Erfindung. In der dargestellten Ausführungsform von 1 enthält das System 100 einen Prozessor 110, einen Chipsatz 130, eine Festplatte 140, einen Hauptspeicher 150 und eine Kommunikationsschnittstelle 160. Der Prozessor 110 kann einen Mikrocode-ROM 112, einen Patch-Speicher 114, einen sicheren Speicher 118 und einen oder mehrere Schlüssel 116 enthalten. Der Chipsatz 130 kann ein BIOS 132 enthalten. Ein Patchpaket (im Folgenden beschrieben) kann auf der Festplatte 140, im BIOS 132 und/oder in einem anderen Teil des Systems 100, der nichtflüchtigen Speicher enthält, gespeichert werden.
  • In manchen Ausführungsformen können die Vorgänge des Decodierens, Validierens und Installierens des Patchs mittels einer im Mikrocode-ROM 112 enthaltenen Sequenz von Mikro befehlen durchgeführt werden. In einer bestimmten Ausführungsform wird die Sequenz durch Ausführen eines speziellen Befehls eingeleitet, der die Ausführung auf die Einsprungstelle der Sequenz überträgt. In einer anderen bestimmten Ausführungsform wird die Sequenz als Reaktion auf das Schreiben eines vorbestimmten Werts in einen vorbestimmten Abschnitt eines maschinenspezifischen Register (MSR) eingeleitet. Es können auch andere Verfahren zum Einleiten der Sequenz verwendet werden.
  • Die Daten, an denen während des Decodierens, Validierens und Installierens des Patchs gearbeitet wird, können sich im sicheren Speicher 118 befinden, der so gesichert sein kann, daß er gegenüber Zugriff durch einen nicht sicheren Code nicht verfügbar ist. In manchen Ausführungsformen kann der sichere Speicher 118 zu verschiedenen Zeitpunkten den codierten Patch, den decodierten Patch und Zwischenprodukte, die während der Decodierung des codierten Patchs erstellt wurden, enthalten. In einer Ausführungsform weist der sichere Speicher 118 nicht genügend Speichervermögen auf, um alle zuvor erwähnten Patches und/oder Zwischenprodukte aufzunehmen, und kann gleichzeitig lediglich Teile des codierten Patchs, des decodierten Patchs und/oder der Zwischenprodukte enthalten.
  • In einer Ausführungsform ist der sichere Speicher 118 ein fest zugeordneter RAM-Speicher, der entweder im Prozessor 110 oder außerhalb des Prozessors 118, der nur für sichere Vorgänge verwendet wird, angeordnet sein kann. In einer anderen Ausführungsform ist der sichere Speicher 118 ein fest zugeordneter Cache-Speicher des Prozessors 110 und der Zugriff auf den fest zugeordneten Cache-Speicher ist für alle anderen Vorgänge während des Decodierens, Validierens und Installierens des Patchs blockiert. Andere Ausführungsformen können andere Verfahren zur Bereitstellung des sicheren Speichers 118 während der beschriebenen Vorgänge anwenden.
  • Obwohl das System 100 eine bestimmte Ausführungsform darstellt, können auch andere Ausführungsformen verwendet werden. In einer Ausführungsform beispielsweise kann das BIOS 132 in den Prozessor 110 eingebunden sein und eine andere Ausführungsform weist möglicherweise keinen Chipsatz 130 auf.
  • In einer Ausführungsform sind die Schlüssel 116 ein oder mehrere Sicherheitsschlüssel (Werte, die beim Codieren und/oder Decodieren verwendet werden), die in den Prozessor 110 eingebettet worden sind. Eingebettete "Schlüssel" werden im Prozessor 110 auf eine derartige Weise eingebaut, daß verhindert wird, daß sie von der Software des Systems 100 geändert und von nicht sicherer Software gelesen werden. In einer bestimmten Ausführungsform können eingebettete Schlüssel nicht direkt von einer beliebigen Software gelesen werden, ein oder mehrere bestimmte Befehle können jedoch bewirken, daß ein spezifischer eingebetteter Schlüssel zur Verwendung in einer Decodiersequenz in eine andere Hardware übertragen wird.
  • In einer Ausführungsform ist ein bestimmter eingebetteter Schlüssel einer der zwei Schlüssel für einen asymmetrischen kryptographischen Algorithmus, wobei der andere der zwei Schlüssel in dem Patch-Herkunftssystem unter sicherer Kontrolle behalten wird. In einer anderen Ausführungsform enthält ein bestimmter eingebetteter Schlüssel einen Hash-Wert eines öffentlichen Schlüssels für einen asymmetrischen kryptographischen Algorithmus, wobei der öffentliche Schlüssel mit dem zugehörigen Patch geliefert wird. Andere Ausführungsformen können andere Arten von Schlüsseln als eingebettete Schlüssel beinhalten.
  • In manchen Ausführungsformen befindet sich der Mikrocode 112 in einem nichtflüchtigem Speicher, wie beispielsweise einem Festspeicher (read-only memory, ROM), und kann nach der Herstellung nicht direkt geändert werden. Ein Patch kann in den Patch-Speicher 114 für den Systembetrieb gesetzt werden, so daß, als Reaktion auf einen Hinweis auf einen Abschnitt des modifizierten Mikrocodes, der Hinweis zum Patch-Speicher 114 umgeleitet wird, um auf den modifizierten Mikrocode zuzugreifen. In einer Ausführungsform enthält der Patch-Speicher 114 einen RAM und der Patch wird jedes Mal, wenn das System 100 zurückgesetzt und/oder neu gestartet wird, im RAM des Patch-Speichers 114 installiert. In einer anderen Ausführungsform enthält der Patch-Speicher 114 eine nichtflüchtige Speicherform, wie beispielsweise einen Flash-Speicher, und jeder Patch bleibt, nachdem er installiert wurde, im Patch-Speicher 114 intakt, bis der Patch durch einen nachfolgenden Patch ersetzt wird.
  • Vor der Installation kann ein codierter Patch in einem nichtflüchtigen Speicher, wie beispielsweise dem BIOS 132 oder auf der Festplatte 140, gespeichert werden, um jedes Mal, wenn der Patch im Patch-Speicher 114 installiert wird, decodiert und validiert zu werden. In einer Ausführungsform kann ein Patch von einem BIOS-Anbieter im BIOS 132 gespeichert und mittels BIOS-residentem Code während eines anfänglichen Startvorgangs installiert werden. In einer anderen Ausführungsform kann ein Patch von einem Betriebssystem-Anbieter auf der Festplatte gespeichert und zu einem späteren Zeitpunkt beim Startvorgang mittels eines Betriebssystemstart-Ladeprogramms installiert werden. Beide Ausführungsformen können im selben System kombiniert werden.
  • In einer Ausführungsform werden Patches über eine Kommunikationsverbindung (z. B. das Internet) geliefert, über die Kommunikationsschnittstelle 160 empfangen und zur Verwendung gespeichert. In anderen Ausführungsformen können Patches über andere Mittel geliefert werden.
  • 2 zeigt ein Blockschema eines Systems zum Umwandeln von Patches in eine für die Lieferung sichere Form gemäß einer Ausführungsform der Erfindung. In der dargestellten Ausführungsform von 2 enthält das System 200 einen Prozessor 210, einen Chipsatz 230, eine Festplatte 240, einen Hauptspeicher 250 und eine Kommunikationsschnittstelle 260. Die grundlegenden Funktionen jeder dieser Einrichtungen können ihren Gegenstücken in 1 ähnlich sein. Das System 200 befindet sich jedoch, als Ausgangspunkt von Patches, in einer Ausführungsform in einer schätzbaren zentralisierten Installation, in der ein Schutz gegen Angreifer für das gesamte System 200 bereitgestellt werden kann. In der dargestellten Ausführungsform kann dieser Schutz durch einen sicheren Perimeter 270 bereitgestellt sein. Der Ausdruck "Perimeter" bedeutet, so wie er hierin verwendet wird, eher konzeptionell als physisch und der sichere Perimeter 270 kann zahlreiche Schutzmaßnahmen enthalten, einschließlich u. a. physischem Schutz des Systems 200, beschränktem Zugriff vom Personal auf das System 200, einer Firewall oder anderer Schutzsoftwareeinrichtungen, um nicht autorisierten Eingriff in das System durch die Kommunikationsschnittstelle 260 usw. zu verhindern. Das System 200 kann auch interne Sicherheitsfunktionen, die den in 1 gezeigten ähneln, einsetzen. In einer Ausführungsform wird das System 200 zum Erstellen von Patchpaketen für eine einzige Art von Zielsystem verwendet. In einer anderen Ausführungsform wird das System 200 zum Erstellen unterschiedlicher Patchpakete für mehrere Arten von Zielsystemen verwendet.
  • Der Code für die Patches kann entweder im System 200 erstellt werden oder an anderer Stelle erstellt und zum System 200 zur Vorbereitung der zugehörigen Patchpakete geliefert werden. Zu verwendende und im System 200 zu speichernde Informationen können u. a. nicht verschlüsselte Patches 244, verschlüsselte Patches 242 und/oder zugehörige Schlüssel 246 enthalten, die alle als auf der Festplatte 240 gespeichert gezeigt sind. Da unterschiedliche Zielsysteme unterschiedliche Patches erfordern können und unterschiedliche Schlüssel umfassen, kann die Festplatte 240 in verschiedene Speicherbereiche segmentiert werden, wobei jeder Speicherbereich für einen separaten Satz von Patches und zugehörigem Schlüssel/zugehörigen Schlüsseln ist.
  • 3 zeigt ein Patchpaket, das vom System von 2 zum System von 1 lieferbare Elemente enthält, gemäß einer Ausführungsform der Erfindung. In einer Ausführungsform enthält ein Patchpaket 300 einen Patchkopf 310, ein Patch 320 und eine digitale Signatur 330. Eine andere Ausführungsform kann auch einen oder mehrere lieferbare Schlüssel 340 beinhalten. Der Patchkopf 310 enthält identifizierende Informationen, die u. a. eine oder mehrere der folgenden Informationen identifizieren können: die Art des Zielsystems, für das der Patch gedacht ist, die Art des Patchs, wo der Patch verwendet werden soll, wie der Patch verwendet werden soll und eine beliebige andere relevante Information, die von dem Zielsystem 100 möglicherweise benötigt wird. In einer Ausführungsform ist der Patchkopf 310 nicht verschlüsselt, um die Identifizierung und Anordnung des Patchpakets 300 durch das Zielsystem 100 vor der Authentifizierung und/oder Entschlüsselung des Patchs zu erleichtern. Der Patch 320 enthält den Mikrocode zum Setzen in den Patch-Speicher 114, obwohl der Patch 320 in verschlüsselter Form sein kann, während er sich im Patchpaket 300 befindet. Die Verschlüsselung des Patchs 320 kann verwendet werden, um Geschäftsgeheimnisse oder andere vertrauliche Informationen, die vom Patch selbst abgeleitet sein könnten, zu schützen. Die digitale Signatur 330 beinhaltet Daten zum Validieren der Authentizität des zu installierenden Patchs, so daß eine Änderung des Patchs nach der Vorbereitung des Patchpakets erkannt werden kann. In einer Ausführungsform wird die digitale Signatur 330 lediglich für den Patch 320 erstellt. In einer anderen Ausführungsform wird die digitale Signatur 330 sowohl für den Patch 320 als auch für den Patchkopf 310 erstellt, so daß eine nicht autorisierte Veränderung an einem dieser beiden vom Zielsystem 100 erkannt werden kann. In noch anderen Ausführungsformen kann die digitale Signatur 330 auch für andere Komponenten des Patchpakets 300 erstellt werden.
  • In einer Ausführungsform werden alle vom Zielsystem 100 benötigten Schlüssel bei der Herstellung in den Prozessor 110 eingebettet. Bei einer bestimmten derartigen Ausführungsform enthält das Patchpaket 300 keinerlei Schlüssel, die zum Decodieren des Patchs verwendet weiden sollen. In einer anderen bestimmten Ausführungsform werden einer oder mehrere der vom System 100 zu verwendenden Schlüssel als ein Teil des Patchpakets 300 an das System 100 geliefert und werden hierin als lieferbare Schlüssel 340 (der Plural des Ausdrucks "Schlüssel" umfasst ebenfalls Ausführungsformen, die nur einen einzigen lieferbaren Schlüssel aufweisen) bezeichnet. Die lieferbaren Schlüssel 340 können anderen Schlüsseln, die entweder im Zielsystem 100 oder im Herkunftssystem 200 verwendet werden, zugeordnet sein. In einer bestimmten Ausführungsform beispielsweise enthält ein lieferbarer Schlüssel den öffentlichen Schlüssel eines Paars aus öffentlichem Schlüssel und privatem Schlüssel in einem asymmetrischen kryptographischen Algorithmus, wobei der private Schlüssel im Herkunftssystem 200 verbleibt, und ein vom öffentlichen Schlüssel abgeleiteter Hash-Wert wird in den Prozessor 100 eingebettet und zum Validieren der Authentizität des gelieferten öffentlichen Schlüssels verwendet. Ein eingebetteter Hash-Wert kann auch zum Validieren eines oder mehrerer Schlüssel verwendet werden, die durch andere Mittel bereitgestellt wurden, z. B. ein oder mehrere mit einem Betriebssystem-Upgrade auf die Festplatte gesetzte oder mit einem BIOS-Upgrade in das BIOS gesetzte Schlüssel. Andere Ausführungsformen können andere Kombinationen aus Schlüsseln und Verschlüsselungsschemata verwenden. Jedes der Elemente des Patchpakets 300 wird in der Offenbarung im Folgenden ausführlicher beschrieben.
  • In noch einer anderen Ausführungsform kann ein eingebetteter Schlüssel oder Hash-Wert mit einer Kette von Schlüsselzertifikaten verwendet werden. In einer derartigen Ausführungsform wird der eingebettete Schlüssel bzw. Hash-Wert zum Validieren eines zweiten Schlüssels verwendet, der zum Validieren eines dritten Schlüssels verwendet wird, usw., wodurch mehrere Sicherheitsschichten bereitgestellt werden, wobei jeder Schlüssel einer bestimmten Schicht zugeordnet ist. Die Schlüssel können über eines oder mehrere der zuvor erwähnten Lieferverfahren und/oder über nicht beschriebene Verfahren geliefert werden.
  • 4 zeigt ein Ablaufdiagramm eines Gesamtprozesses zum Vorbereiten, Liefern und Validieren eines Patchpakets gemäß einer Ausführungsform der Erfindung. In der dargestellten Ausführungsform von 4 weist das Ablaufdiagramm 400 zwei Teile auf. Die Blöcke 410 bis 430 zeigen einen Patchschaffungsprozess, in dem ein Patch-Herkunftssystem einen bestehenden Patch für eine sichere Lieferung vorbereitet. Die Blöcke 440 bis 495 zeigen einen Patchvalidierungs- und -installationsprozess, der im Zielsystem durchgeführt wird.
  • In einer Ausführungsform beginnt der Patchschaffungsprozess mit dem Verschlüsseln des Patchs in Block 410. Wie zuvor erwähnt, verschlüsseln manche Ausführungsformen den Patch möglicherweise nicht, da der Inhalt des Patchs nicht als vertraulich erachtet wird und keinen Schutz benötigt. Gleich ob der Patch verschlüsselt ist oder nicht, können die Vorgänge der Blöcke 420 und 430 zum Zulassen des Erkennens einer Manipulation des Patchs vor seiner Installation im Zielsystem verwendet werden. In Block 420 wird eine digitale Signatur für den Patch erstellt. In einer Ausführungsform wird die digitale Signatur sowohl für den Patchkopf als auch den Patch erstellt, so daß keiner dieser beiden manipuliert werden kann, ohne daß dies erkannt wird. In einer anderen Ausführungsform wird die digitale Signatur für den Patch, nicht jedoch für den Patchkopf erstellt. In noch einer anderen Ausführungsform wird die digitale Signatur auch für die lieferbaren Schlüssel erstellt. In Block 430 werden die digitale Signatur und der Patch, zusammen mit beliebigen anderen eingebundenen Elementen, kombiniert, um ein Patchpaket zu bilden.
  • Wenn der Patch in Block 410 verschlüsselt wurde, wird der verschlüsselte Patch in Block 430 eingebunden.
  • Nachdem das Patchpaket erstellt wurde, kann das Patchpaket über ein beliebiges praktikables Mittel an das Zielsystem geliefert werden. Der Patchvalidierungs- und -installationsprozess, der im Zielsystem stattfindet, beginnt in Block 440 damit, daß das Patchpaket empfangen und gespeichert wird. Das Patchpaket kann auf der Festplatte 140, im BIOS 132 oder in einem beliebigen praktikablen Speicherort im Zielsystem 100 gespeichert werden.
  • In einer Ausführungsform werden Patches nicht in einem betriebsbereiten Zustand installiert, bevor das System gestartet wird; ein Prozess, der in Block 450 beginnt. In Block 460 wird die digitale Signatur aus dem Patchpaket entschlüsselt und in Block 470 zum Validieren des Patchs verwendet. Die Entschlüsselung und Validierung kann eine beliebige von mehreren im Folgenden beschriebenen Formen annehmen. Wenn der Patch in Block 410 verschlüsselt wurde, wird er in Block 480 entschlüsselt, um den tatsächlichen Patch freizulegen. In Block 490 wird der freigelegte Patch im Prozessor 110 so installiert, daß er betriebsbereit gemacht wird. In Block 495 kann der Prozessor 110 unter Verwendung des gepatchten Mikrocodes arbeiten.
  • 5 zeigt ein Ablaufdiagramm eines Prozesses zum Vorbereiten eines Patchpakets gemäß einer Ausführungsform der Erfindung. Das Ablaufdiagramm 500 zeigt eine detailliertere Beschreibung des Patchschaffungsprozesses von 4. Die in 5 gezeigte Ausführungsform beinhaltet ein Verschlüsseln des Patchs und das Erstellen eines Digests (Auszugs), der zum Validieren, daß der empfangene Patch korrekt ist, verwendet werden soll. In einer Ausführungsform wird die Verschlüsselung des Patchs mit einem symmetrischen Verschlüsselungsalgorithmus (z. B. AES, DES usw.) durchgeführt. Ein Digest, so wie er hierin verwendet wird, ist ein Parameter, der beim Durchführen eines Vorgangs an einem Datenblock erhalten wurde, wobei identische Datenblöcke identischen Digests erzeugen, eine beliebige Änderung des Datenblocks jedoch wahrscheinlich einen anderen Digest erzeugt. In einer Ausführungsform ist der Digest ein Hash-Digest, d. h. ein Digest, der beim Anwenden eines Hashing-Algorithmußes auf den Patch erstellt wurde. In einer Ausführungsform wird zunächst der Digest erstellt und dann der Patch verschlüsselt, während in einer anderen Ausführungsform zunächst der Patch verschlüsselt und dann der Digest für den verschlüsselten Patch erstellt wird.
  • 5 zeigt beide Ausführungsformen. In der ersten Ausführungsform werden der unverschlüsselte Patch und der Patchkopf in Block 510 einem Hash-Prozess unterzogen, um einen Digest zu erstellen. In einer bestimmten Ausführungsform verwendet der Hash-Prozess den Secure Hash Algorithm (SHA-1, sicherer Hash-Algorithmus), der 1994 unter der Bezeichnung Federal Information Publishing Standard FIPS PUB 180-1 veröffentlicht wurde. Anschließend wird der Patch in Block 520 verschlüsselt. Wenn der Patch nicht verschlüsselt werden soll, kann Block 520 weggelassen werden. In der zweiten Ausführungsform wird der Patch in Block 530 zunächst verschlüsselt und der verschlüsselte Patch und der Patchkopf werden in Block 540 dem Hash-Prozess unterzogen, um den Digest zu erstellen. In beiden Ausführungsformen kann der Digest, wenn ein anschließender Vorgang erforderlich macht, daß der Digest aus einer bestimmten Anzahl von Bits besteht, in Block 550 aufgefüllt werden (d. h. ihm werden Daten hinzugefügt), um die Anzahl von Bits nach Bedarf zu erhöhen. Die Auffüllung kann aus vorbestimmten Daten oder Zufallsdaten bestehen. Der aufgefüllte Digest wird in Block 560 verschlüsselt, um eine digitale Signatur zu erstellen. In einem Beispiel wird der aufgefüllte Digest unter Verwendung des privaten Schlüssels eines Paars aus öffentlichem Schlüssel und privatem Schlüssel in einem asymmetrischen Verschlüsselungsprozess verschlüsselt. In einer bestimmten Ausführungsform hält die Verschlüsselung den RSA-Verschlüsselungsprozess unter Verwendung eines privaten Schlüssels von 2048 Bit ein. Wie wohl bekannt ist, weisen der Schlüssel und die verschlüsselte Nachricht im RSA-Verschlüsselungsprozess die gleiche Anzahl von Bits auf, was erforderlich macht, daß der Digest in Block 550 aufgefüllt wird, wenn der Digest kleiner als der Schlüssel ist. In einer anderen Ausführungsform weisen der Digest und der Schlüssel bereits die gleiche Größe auf und das Auffüllen in Block 550 kann eliminiert werden. In noch einer anderen Ausführungsform wird ein Verschlüsselungsverfahren verwendet, in dem der Schlüssel und die Nachricht nicht die gleiche Größe aufweisen müssen, wobei in diesem Fall das Auffüllen in Block 550 ebenfalls eliminiert werden kann. Die digitale Signatur, der Patch (verschlüsselt oder unverschlüsselt) und der Patchkopf werden in Block 570 zu einem Patchpaket für eine Lieferung an das Zielsystem kombiniert. In einer Ausführungsform kann das Patchpaket außerdem je nach den Systemanforderungen andere Informationen enthalten.
  • 6 zeigt ein Ablaufdiagramm eines Prozesses zum Validieren eines Patchpakets gemäß einer Ausführungsform der Erfindung. Das Ablaufdiagramm 600 zeigt eine detailliertere Beschreibung des Patchvalidierungs- und -Installationsprozesses von 4. Das Patchpaket wird in Block 610 aus dem Zielsystem bezogen. In einer Ausführungsform wurde das Patchpaket zuvor vom Zielsystem empfangen und in den Speicher gesetzt und wird aus diesem Speicher bezogen. In einer anderen Ausführungsform wird das Patchpaket in Block 610 bezogen, sobald es vom Zielsystem empfangen wird, ohne daß es zwischengespeichert wird. Während in einer Ausführungsform das gesamte Patchpaket, so wie es vom Herkunftssystem geliefert wurde, bezogen wird, werden in einer anderen Ausführungsform etwaige nicht erforderliche Elemente des Pakets herausgezogen, bevor das Patchpaket bezogen wird.
  • In einer Ausführungsform, in der ein Schlüssel im Patchpaket geliefert wird, kann in Block 612 ein Hash-Wert für den Schlüssel berechnet werden. Wenn dieser berechnete Hash-Wert mit einem im Prozessor 110 eingebetteten, zugehörigen Hash-Wert übereinstimmt, ist der Schlüssel validiert worden und kann in nachfolgenden Validierungsvorgängen verwendet werden. Wenn der berechnete Hash-Wert nicht mit dem eingebetteten Hash-Wert übereinstimmt, schlägt die Validierung fehl und die Steuerung kann zum Block 690 fortschreiten, der im Folgenden beschrieben wird. In einer Ausführungsform, die keinen gelieferten Schlüssel umfasst, können die Vorgänge der Blöcke 612 und 614 weggelassen werden.
  • Die digitale Signatur wird in Block 620 entschlüsselt, um den im Herkunftssystem erstellten Digest zu beziehen. In einer Ausführungsform wurde die digitale Signatur mit einem asymmetrischen Verschlüsselungsalgorithmus unter Verwendung des privaten Schlüssels eines Paars aus öffentlichem Schlüssel und privatem Schlüssel erstellt und die Entschlüsselung des Blocks 620 wird unter Verwendung des zugehörigen öffentlichen Schlüssels durchgeführt. Wenn der Digest während der Erstellung aufgefüllt wurde, bezieht der Vorgang des Blocks 620 den aufgefüllten Digest und die Auffüllung wird in Block 630 entfernt, um den Digest freizulegen, der zuvor in Block 510 oder 540 erstellt wurde. Wenn der Digest während der Erstellung nicht aufgefüllt wurde, erzeugt der Vorgang des Blocks 620 einen nicht-aufgefüllten Digest und der Block 630 kann weggelassen werden.
  • Zu diesem Zeitpunkt folgte der Prozess in Abhängigkeit davon, ob der Digest erstellt wurde, bevor oder nachdem der Patch im Ablaufdiagramm 500 verschlüsselt wurde. In einer Ausführungsform, in der der Digest vor der wie in den Blöcken 510 und 520 gezeigten Verschlüsselung erstellt wurde, wird der Patch in Block 640 entschlüsselt und es wird in Block 650 eine Hash-Funktion am entschlüsselten Patch und Patchkopf durchgeführt, um einen berechneten Digest zu erhalten. Der berechnete Digest wird in Block 660 mit dem tatsächlichen, in den Blöcken 620630 bezogenen Digest verglichen, um zu überprüfen, ob die zwei Digests übereinstimmen. Wenn die zwei Digests gleichwertig sind, ist der Patch validiert worden und kann in Block 680 installiert werden. In einer Ausführungsform beinhaltet das Installieren des Patchs das Setzen des Patchs in den Patch-Speicher 114 des Prozessors 110, so daß ein etwaiger versuchter Zugriff auf den gepatchten Mikrocode anstatt zum ursprünglichen Mikrocode 112 zum Patch-Speicher 114 geleitet wird.
  • Nun wieder mit Bezugnahme auf Block 630 kann in einer Ausführungsform, in der der Patch vor der Erstellung des Digests in den Blöcken 530 und 540 verschlüsselt wurde, der verschlüsselte Patch und Kopf in Block 645 einem Hash-Vorgang unterzogen werden, um den berechneten Digest zu erhalten. Der berechnete Digest kann in Block 665 mit dem tatsächlichen, in Block 630 aufgedeckten Digest verglichen werden, um zu überprüfen, ob sie übereinstimmen. Wenn festgestellt wird, daß sie gleichwertig sind, ist der Patch validiert worden und kann in Block 670 entschlüsselt werden. Der validierte und entschlüsselte Patch kann dann in Block 680 installiert werden. In beiden Ausführungsformen handelt es sich bei dem in den Blöcken 645, 650 verwendeten Hash-Vorgang um denselben Hash-Vorgang, der in den Blöcken 510, 540 verwendet wurde.
  • Wenn der berechnete Digest in entweder Block 660 oder Block 665 nicht mit dem tatsächlichen Digest übereinstimmt, weist dies darauf hin, daß das Patchpaket seit dessen Erstellung verändert wurde oder auf andere Weise für die Installation nicht geeignet ist. Eine derartige Veränderung/Nichteignung kann mehrere Ursachen haben, einschließlich u. a.: eines vorsätzlichen Versuchs von einer nicht autorisierten Person, den Patch zu ändern, eines nicht erkannten/nicht korrigierten Datenübertragungsfehlers während der Lieferung, der Lieferung des Patchpakets an ein falsches Zielsystem, eines Software- oder Hardwareversagens oder menschlichen Versagens. Ungeachtet der Ursache kann der Patchinstallationsprozess, wenn der tatsächliche Digest nicht mit dem berechneten Digest übereinstimmt, in Block 690 abgebrochen werden, indem der nicht validierte Patch nicht installiert wird. Das Abbrechen der Patchinstallation kann mehrere Formen annehmen, einschließlich u. a.: I) des Versuchs, den Patch neu zu installieren, 2) des Auslassens des defekten Patchs, aber Installieren anderer Patches, 3) des Zurücksetzens auf eine vorherige Version des Patchs, 4) des Herunterfahrens des Systems, 5) des Neustarts des Systems, 6) usw.
  • In einer Ausführungsform wird der Validierungsprozess der Blöcke 610670 für den gesamten Patch im sicheren Speicher 118 durchgeführt und der gesamte Patch wird nach der Validierung in Block 680 im Patch-Speicher 114 installiert. In einer anderen Ausführungsform, in der der sichere Speicher 118 nicht genügend Speichervermögen aufweist, um den gesamten Validierungsprozess auszuführen, kann der Validierungsprozess der Blöcke 610670 schrittweise an separaten Abschnitten des Patchs durchgeführt werden. Wenn ein beliebiger Abschnitt nicht auf diese Weise validiert wird, kann der Prozess in Block 690 wie zuvor beschrieben abgebrochen werden. Wenn alle Abschnitte auf diese Weise validiert werden, kann der Patch ein zweites Mal schrittweise validiert werden, wobei jeder Abschnitt im Patch-Speicher 114 installiert wird, wenn er validiert wird. Wenn ein beliebiger Abschnitt des Patchs beim zweiten Durchgang nicht validiert wird (was darauf hinweisen könnte, daß er nach der ersten Validierung manipuliert wurde), kann der Prozess in Block 690 abgebrochen werden. Wenn der Patch teilweise installiert worden ist, bevor in Block 690 abgebrochen wurde, kann der Abbruchprozess des Blocks 690 zusätzlich zu einem oder mehreren der zuvor aufgeführten Abbruchprozesse das Entfernen des neu installierten Patchs vom Patch-Speicher 114 beinhalten.
  • Die vorhergehende Beschreibung soll veranschaulichend und nicht einschränkend sein. Fachmännern werden Variationen in den Sinn kommen. Diese Variationen sollen Teil der verschiedenen Ausführungsformen der Erfindung sein, wobei diese Erfindung nur durch den Sinn und Schutzumfang der angehängten Ansprüche eingeschränkt ist.
  • ZUSAMMENFASSUNG
  • Mikrocodepatches werden vor der Lieferung zu einem Zielprozessor codiert, der die Mikrocodepatches installieren soll. Der Zielprozessor validiert die Mikrocodepatches vor der Installation. Die Sicherheit des Prozessors kann durch eine oder mehrere der folgenden Maßnahmen verbessert werden: (1) Ausführen der Validierung in einem sicheren Speicher, (2) Verwenden eines öffentlich/privaten Schlüsselpaars für die Verschlüsselung und Entschlüsselung des Mikrocodepatchs, (3) Verwenden mindestens eines Schlüssels, der in dem Zielprozessor eingebettet ist und durch nicht sichere Software nicht gelesen werden kann und (4) Verwenden eines Hash-Werts, der in dem Zielprozessor eingebettet ist, um zumindest einen nicht eingebetteten Schlüssel zu validieren.

Claims (30)

  1. Maschinenlesbares Medium, das Befehle bereitstellt, die, wenn sie von einem Satz von einem oder mehreren Prozessoren ausgeführt werden, bewirken, daß der Satz von Prozessoren Vorgänge durchführt, die Folgendes umfassen: Erstellen eines Hash-Digests für einen Mikrocodepatch; Verschlüsseln des Hash-Digests zum Erstellen einer digitalen Signatur; und Kombinieren der digitalen Signatur und des Mikrocodepatchs zum Liefern an einen Zielprozessor, um Mikrocode im Zielprozessor zu patchen.
  2. Medium nach Anspruch 1, wobei: das Kombinieren das Kombinieren eines Schlüssels mit der digitalen Signatur und dem Mikrocodepatch für die Lieferung an den Zielprozessor beinhaltet.
  3. Medium nach Anspruch 1, wobei: das Kombinieren das Kombinieren eines Hash-Werts eines Schlüssels mit der digitalen Signatur und dem Mikrocodepatch für die Lieferung an den Zielprozessor beinhaltet.
  4. Verfahren, das Folgendes umfaßt: Erstellen eines Hash-Digests für einen Mikrocodepatch; Verschlüsseln des Hash-Digests mit einem privaten Schlüssel für einen asymmetrischen kryptographischen Algorithmus, um eine digitale Signatur zu erstellen; und Kombinieren der digitalen Signatur und des Mikrocodepatchs zum Liefern an einen Prozessor, um Mikrocode des Prozessors zu patchen.
  5. Verfahren nach Anspruch 4, das weiterhin Folgendes umfaßt: Verschlüsseln des Mikrocodepatchs; wobei das Erstellen des Hash-Digests das Erstellen des Hash-Digests vor dem Verschlüsseln des Mikrocodepatchs beinhaltet; und wobei das Kombinieren das Kombinieren der digitalen Signatur mit dem verschlüsselten Mikrocodepatch beinhaltet.
  6. Verfahren nach Anspruch 4, das weiterhin Folgendes umfaßt: Verschlüsseln des Mikrocodepatchs; wobei das Erstellen des Hash-Digests das Erstellen des Hash-Digests nach dem Ver schlüsseln des Mikrocodepatchs beinhaltet; und wobei das Kombinieren das Kombinieren der digitalen Signatur mit dem verschlüsselten Mikrocodepatch beinhaltet.
  7. Maschinenlesbares Medium, das Daten enthält, die Folgendes umfassen: einen Mikrocodepatch zum Patchen von Mikrocode in einem Zielsystem; und eine digitale Signatur, die durch Verschlüsseln eines Digests, der durch Ausführen eines Hash-Vorgangs am Mikrocodepatch erstellt wurde, erzeugt wurde.
  8. Medium nach Anspruch 7, wobei die Daten weiterhin Folgendes umfassen: einen Schlüssel zum Entschlüsseln der digitalen Signatur, um den Digest zu erzeugen.
  9. Medium nach Anspruch 7, wobei die Daten weiterhin Folgendes umfassen: einen Hash-Wert eines Schlüssels zum Validieren des Mikrocodepatchs.
  10. Medium nach Anspruch 7, wobei: der Mikrocodepatch verschlüsselt ist.
  11. Gerät, das Folgendes umfaßt: einen Prozessor, der Mikrocode aufweist; einen sicheren Speicher, der mit dem Prozessor gekoppelt ist, um einen codierten Mikrocodepatch zu decodieren; und einen Mikrocodepatch-Speicher, der an den Mikrocode gekoppelt ist, um den decodierten Mikrocodepatch zu enthalten.
  12. Gerät nach Anspruch 11, wobei: der Mikrocode Mikrobefehle enthält, um den codierten Mikrocodepatch zu decodieren; und der sichere Speicher den codierten Mikrocodepatch, den decodierten Mikrocodepatch und/oder Zwischenprodukte während des Decodierens des Mikrocodepatchs zu enthalten hat.
  13. Gerät nach Anspruch 11, wobei: der Mikrocode Mikrobefehle enthält, um den codierten Mikrocodepatch zu decodieren; und der sichere Speicher gleichzeitig nicht mehr als einen Abschnitt des codierten Mikrocodepatchs, des decodierten Mikrocodepatchs und/oder von Zwischenprodukten während des Decodierens des Mikrocodepatchs zu enthalten hat.
  14. Gerät nach Anspruch 11, wobei: der Prozessor einen eingebetteten Schlüssel zur Verwendung zum Decodieren des codierten Mikrocodepatchs enthält.
  15. Gerät nach Anspruch 14, wobei: der eingebettete Schlüssel ein öffentlicher Schlüssel in einem asymmetrischen kryptographischen Algorithmus ist.
  16. Verfahren, das Folgendes umfaßt: Beziehen eines Mikrocodepatchs und einer zugehörigen digitalen Signatur; Entschlüsseln der digitalen Signatur in einem sicheren Speicher, um einen ersten Hash-Digest zu erhalten; Berechnen eines zweiten Hash-Digests mit dem Mikrocodepatch; Vergleichen des ersten Hash-Digests mit dem zweiten Hash-Digest; und Installieren des Mikrocodepatchs in einem Mikrocodepatch-Speicher in Reaktion auf eine Übereinstimmung zwischen dem ersten und dem zweiten Hash-Digest.
  17. Verfahren nach Anspruch 16, das weiterhin Folgendes umfaßt: Entschlüsseln des Mikrocodepatchs; wobei das Berechnen des zweiten Hash-Digests das Berechnen des zweiten Hash-Digests mit einer verschlüsselten Version des Mikrocodepatchs beinhaltet.
  18. Verfahren nach Anspruch 16, das weiterhin Folgendes umfaßt: Entschlüsseln des Mikrocodepatchs; wobei das Berechnen des zweiten Hash-Digests das Berechnen des zweiten Hash-Digests mit einer entschlüsselten Version des Mikrocodepatchs beinhaltet.
  19. Verfahren nach Anspruch 16, wobei: das Entschlüsseln der digitalen Signatur das Durchführen einer asymmetrischen Entschlüsselung unter Verwendung eines öffentlichen Schlüssels beinhaltet.
  20. Verfahren nach Anspruch 16, wobei: das Entschlüsseln der digitalen Signatur das Verwenden eines eingebetteten Schlüssels beinhaltet.
  21. Verfahren nach Anspruch 16, wobei: das Entschlüsseln der digitalen Signatur das Durchführen einer asymmetrischen Entschlüsselung unter Verwendung eines mit dem Mikrocodepatch bereitgestellten Schlüssels beinhaltet.
  22. Maschinenlesbares Medium, das Befehle bereitstellt, die, wenn sie von einem Satz von einem oder mehreren Prozessoren ausgeführt werden, bewirken, daß der Satz von Prozessoren Vorgänge durchführt, die Folgendes umfassen: Beziehen eines Mikrocodepatchs und einer zugehörigen digitalen Signatur; Entschlüsseln der digitalen Signatur, um einen ersten Hash-Digest zu erhalten; Berechnen eines zweiten Hash-Digests mit dem Mikrocodepatch; Vergleichen des ersten Hash-Digests mit dem zweiten Hash-Digest; und Installieren des Mikrocodepatchs in Reaktion auf eine Übereinstimmung zwischen dem ersten und dem zweiten Hash-Digest.
  23. Medium nach Anspruch 22, das weiterhin Folgendes umfaßt: Entschlüsseln des Mikrocodepatchs; wobei das Berechnen des zweiten Hash-Digests das Berechnen des zweiten Hash-Digests mit einer verschlüsselten Version des Mikrocodepatchs beinhaltet.
  24. Medium nach Anspruch 22, das weiterhin Folgendes umfaßt: Entschlüsseln des Mikrocodepatchs; wobei das Berechnen des zweiten Hash-Digests das Berechnen des zweiten Hash-Digests mit einer entschlüsselten Version des Mikrocodepatchs beinhaltet.
  25. Medium nach Anspruch 22, wobei: das Entschlüsseln der digitalen Signatur das Durchführen einer asymmetrischen Entschlüsselung unter Verwendung eines öffentlichen Schlüssels beinhaltet.
  26. Medium nach Anspruch 22, wobei: das Entschlüsseln der digitalen Signatur das Durchführen einer asymmetrischen Entschlüsselung unter Verwendung eines eingebetteten Schlüssels beinhaltet.
  27. Medium nach Anspruch 22, wobei: das Entschlüsseln der digitalen Signatur das Durchführen einer asymmetrischen Entschlüsselung unter Verwendung eines mit dem Mikrocodepatch und der zugehörigen digitalen Signatur bereitgestellten Schlüssels beinhaltet.
  28. System, das Folgendes umfaßt: einen Prozessor, der Mikrocode und einen eingebetteten Schlüssel aufweist; und ein Mikrocodepatchpaket, das sich in einer Speichereinrichtung und/oder einem BIOS (basic input-output system, einfaches Eingabe/Ausgabesystem) befindet, die/das mit dem Prozessor gekoppelt ist, wobei das Mikrocodepatchpaket einen Mikrocodepatch zum Patchen des Mikrocodes und eine digitale Signatur zum Validieren des Mikrocodepatchs unter Verwendung des eingebetteten Schlüssels enthält.
  29. System nach Anspruch 28, wobei: der Mikrocodepatch in einer verschlüsselten Form im Mikrocodepatchpaket vorliegt.
  30. System nach Anspruch 28, das weiterhin Folgendes umfaßt: einen sicheren Speicher zum Enthalten des Mikrocodepatchs während der Validierung.
DE10392528T 2002-04-12 2003-03-28 Microcode-Patch-Authentifizierung Ceased DE10392528T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/121,807 2002-04-12
US10/121,807 US20030196096A1 (en) 2002-04-12 2002-04-12 Microcode patch authentication
PCT/US2003/009640 WO2003088019A2 (en) 2002-04-12 2003-03-28 Microcode patch authentication

Publications (1)

Publication Number Publication Date
DE10392528T5 true DE10392528T5 (de) 2005-09-15

Family

ID=28790411

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10392528T Ceased DE10392528T5 (de) 2002-04-12 2003-03-28 Microcode-Patch-Authentifizierung

Country Status (8)

Country Link
US (1) US20030196096A1 (de)
CN (1) CN1659494B (de)
AU (1) AU2003224803A1 (de)
DE (1) DE10392528T5 (de)
GB (2) GB2403047B (de)
HK (1) HK1068423A1 (de)
TW (1) TWI268449B (de)
WO (1) WO2003088019A2 (de)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7260555B2 (en) 2001-12-12 2007-08-21 Guardian Data Storage, Llc Method and architecture for providing pervasive security to digital assets
USRE41546E1 (en) 2001-12-12 2010-08-17 Klimenty Vainstein Method and system for managing security tiers
US10360545B2 (en) 2001-12-12 2019-07-23 Guardian Data Storage, Llc Method and apparatus for accessing secured electronic data off-line
US7921284B1 (en) 2001-12-12 2011-04-05 Gary Mark Kinghorn Method and system for protecting electronic data in enterprise environment
US7930756B1 (en) 2001-12-12 2011-04-19 Crocker Steven Toye Multi-level cryptographic transformations for securing digital assets
US7565683B1 (en) 2001-12-12 2009-07-21 Weiqing Huang Method and system for implementing changes to security policies in a distributed security system
US7921288B1 (en) 2001-12-12 2011-04-05 Hildebrand Hal S System and method for providing different levels of key security for controlling access to secured items
US10033700B2 (en) 2001-12-12 2018-07-24 Intellectual Ventures I Llc Dynamic evaluation of access rights
US7178033B1 (en) 2001-12-12 2007-02-13 Pss Systems, Inc. Method and apparatus for securing digital assets
US7921450B1 (en) 2001-12-12 2011-04-05 Klimenty Vainstein Security system using indirect key generation from access rules and methods therefor
US7681034B1 (en) 2001-12-12 2010-03-16 Chang-Ping Lee Method and apparatus for securing electronic data
US8065713B1 (en) 2001-12-12 2011-11-22 Klimenty Vainstein System and method for providing multi-location access management to secured items
US7380120B1 (en) 2001-12-12 2008-05-27 Guardian Data Storage, Llc Secured data format for access control
US8006280B1 (en) 2001-12-12 2011-08-23 Hildebrand Hal S Security system for generating keys from access rules in a decentralized manner and methods therefor
US7950066B1 (en) 2001-12-21 2011-05-24 Guardian Data Storage, Llc Method and system for restricting use of a clipboard application
US8176334B2 (en) 2002-09-30 2012-05-08 Guardian Data Storage, Llc Document security system that permits external users to gain access to secured files
US8613102B2 (en) 2004-03-30 2013-12-17 Intellectual Ventures I Llc Method and system for providing document retention using cryptography
US7748045B2 (en) 2004-03-30 2010-06-29 Michael Frederick Kenrich Method and system for providing cryptographic document retention with off-line access
DE50302617D1 (de) * 2002-09-11 2006-05-04 Giesecke & Devrient Gmbh Geschützte kryptographische berechnung
US7512810B1 (en) 2002-09-11 2009-03-31 Guardian Data Storage Llc Method and system for protecting encrypted files transmitted over a network
US7836310B1 (en) 2002-11-01 2010-11-16 Yevgeniy Gutnik Security system that uses indirect password-based encryption
US7440571B2 (en) * 2002-12-03 2008-10-21 Nagravision S.A. Method for securing software updates
US7890990B1 (en) 2002-12-20 2011-02-15 Klimenty Vainstein Security system with staging capabilities
US8707034B1 (en) 2003-05-30 2014-04-22 Intellectual Ventures I Llc Method and system for using remote headers to secure electronic files
US7730543B1 (en) 2003-06-30 2010-06-01 Satyajit Nath Method and system for enabling users of a group shared across multiple file security systems to access secured files
US20050044408A1 (en) * 2003-08-18 2005-02-24 Bajikar Sundeep M. Low pin count docking architecture for a trusted platform
US8127366B2 (en) 2003-09-30 2012-02-28 Guardian Data Storage, Llc Method and apparatus for transitioning between states of security policies used to secure electronic documents
US7703140B2 (en) 2003-09-30 2010-04-20 Guardian Data Storage, Llc Method and system for securing digital assets using process-driven security policies
US20050223292A1 (en) * 2004-02-17 2005-10-06 Lee Chee S Single instruction type based hardware patch controller
US7873831B2 (en) * 2004-02-26 2011-01-18 Microsoft Corporation Digests to identify elements in a signature process
EP1607821A1 (de) 2004-06-17 2005-12-21 Nagracard S.A. Methode zur sicheren Programmaktualisierung in einem Sicherheitsmodul
US7707427B1 (en) * 2004-07-19 2010-04-27 Michael Frederick Kenrich Multi-level file digests
US7353375B2 (en) * 2004-10-07 2008-04-01 Hewlett-Packard Development Company, L.P. Method and apparatus for managing processor availability using a microcode patch
IL164571A0 (en) * 2004-10-14 2005-12-18 Yuval Broshy A system and method for authenticating and validating the validating the linkage between input filesand output files in a computational process
US7689819B2 (en) * 2005-07-29 2010-03-30 Broadcom Corporation Method and system for a self-booting Ethernet controller
US8028154B2 (en) * 2005-07-29 2011-09-27 Broadcom Corporation Method and system for reducing instruction storage space for a processor integrated in a network adapter chip
US7523299B2 (en) * 2005-07-29 2009-04-21 Broadcom Corporation Method and system for modifying operation of ROM based boot code of a network adapter chip
US20070088939A1 (en) * 2005-10-17 2007-04-19 Dan Baumberger Automatic and dynamic loading of instruction set architecture extensions
US20070113064A1 (en) * 2005-11-17 2007-05-17 Longyin Wei Method and system for secure code patching
US20080104403A1 (en) * 2006-09-29 2008-05-01 Shay Gueron Methods and apparatus for data authentication with multiple keys
US9280337B2 (en) * 2006-12-18 2016-03-08 Adobe Systems Incorporated Secured distribution of software updates
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
DE102007016170A1 (de) * 2007-04-02 2008-10-09 Francotyp-Postalia Gmbh Sicherheitsmodul für eine Frankiermaschine
US20090031107A1 (en) * 2007-07-24 2009-01-29 Via Technologies On-chip memory providing for microcode patch overlay and constant update functions
US20090031121A1 (en) * 2007-07-24 2009-01-29 Via Technologies Apparatus and method for real-time microcode patch
US20090031108A1 (en) * 2007-07-24 2009-01-29 Via Technologies Configurable fuse mechanism for implementing microcode patches
US20090031103A1 (en) * 2007-07-24 2009-01-29 Via Technologies Mechanism for implementing a microcode patch during fabrication
US20090031110A1 (en) * 2007-07-24 2009-01-29 Via Technologies Microcode patch expansion mechanism
US20090031090A1 (en) * 2007-07-24 2009-01-29 Via Technologies Apparatus and method for fast one-to-many microcode patch
US8375219B2 (en) * 2007-10-24 2013-02-12 Microsoft Corporation Program and operation verification
ES2372889T3 (es) 2008-01-20 2012-01-27 Nds Limited Utilización segura de datos.
US8954696B2 (en) 2008-06-24 2015-02-10 Nagravision S.A. Secure memory management system and method
EP2310976B1 (de) * 2008-06-24 2011-11-02 Nagravision S.A. Sicheres speicherverwaltungssystem und verfahren
TW201009707A (en) * 2008-08-25 2010-03-01 Asustek Comp Inc Method for loading and updating central processing unit (CPU) microcode into basic input/output system (BIOS)
US8402279B2 (en) * 2008-09-09 2013-03-19 Via Technologies, Inc. Apparatus and method for updating set of limited access model specific registers in a microprocessor
US8341419B2 (en) * 2008-09-09 2012-12-25 Via Technologies, Inc. Apparatus and method for limiting access to model specific registers in a microprocessor
US20100180104A1 (en) * 2009-01-15 2010-07-15 Via Technologies, Inc. Apparatus and method for patching microcode in a microprocessor using private ram of the microprocessor
US8423779B2 (en) * 2009-02-23 2013-04-16 Wms Gaming, Inc. Compounding security with a security dongle
US8316243B2 (en) * 2009-08-07 2012-11-20 Via Technologies, Inc. Apparatus and method for generating unpredictable processor-unique serial number for use as an encryption key
US20110153944A1 (en) * 2009-12-22 2011-06-23 Klaus Kursawe Secure Cache Memory Architecture
TWI497344B (zh) * 2010-05-17 2015-08-21 Via Tech Inc 微處理器及產生不可預測之鑰的方法
CA2804869C (en) * 2010-07-09 2016-05-24 Research In Motion Limited Microcode-based challenge/response process
EP2405376B1 (de) * 2010-07-09 2017-01-04 BlackBerry Limited Verwendung eines Mikrocode-Interpreters, der in einem Prozessor eingebaut ist
US9262631B2 (en) 2011-11-15 2016-02-16 Mstar Semiconductor, Inc. Embedded device and control method thereof
TWI467408B (zh) * 2011-11-15 2015-01-01 Mstar Semiconductor Inc 嵌入式元件與控制方法
US10031737B2 (en) * 2012-02-16 2018-07-24 Microsoft Technology Licensing, Llc Downloading and distribution of applications and updates to multiple devices
ITMI20120944A1 (it) * 2012-05-31 2013-12-01 St Microelectronics Srl Unità di controllo di circuiti di alimentazione per uno o più punti di carico di un sistema elettronico con nvm esterna di personalizzazione
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US9513687B2 (en) 2013-08-28 2016-12-06 Via Technologies, Inc. Core synchronization mechanism in a multi-die multi-core microprocessor
CN105306505A (zh) * 2014-07-11 2016-02-03 腾讯科技(深圳)有限公司 数据更新方法、终端及服务器
CN104899524B (zh) * 2015-05-25 2018-11-27 上海兆芯集成电路有限公司 中央处理器和验证主机板数据的方法
CN106709281B (zh) * 2015-07-14 2019-09-17 阿里巴巴集团控股有限公司 补丁发放和获取方法、装置
CN106559339B (zh) 2015-09-30 2019-02-19 华为技术有限公司 一种报文处理方法及装置
CN105302606A (zh) * 2015-11-03 2016-02-03 用友网络科技股份有限公司 基于项目权限的补丁下载方法及系统
US10659234B2 (en) 2016-02-10 2020-05-19 Cisco Technology, Inc. Dual-signed executable images for customer-provided integrity
TWI615732B (zh) * 2016-12-27 2018-02-21 瑞昱半導體股份有限公司 電子裝置之電子元件、啟動電子裝置的方法及加密方法
CN108052836B (zh) * 2017-12-11 2021-06-04 北京奇虎科技有限公司 一种补丁包的防篡改方法、装置及服务器
JP2020098506A (ja) * 2018-12-18 2020-06-25 ルネサスエレクトロニクス株式会社 マイクロコントローラ及び半導体装置
US11481206B2 (en) 2019-05-16 2022-10-25 Microsoft Technology Licensing, Llc Code update in system management mode
US11100229B2 (en) * 2019-07-18 2021-08-24 Infineon Technologies Ag Secure hybrid boot systems and secure boot procedures for hybrid systems
US11385903B2 (en) * 2020-02-04 2022-07-12 Microsoft Technology Licensing, Llc Firmware update patch
US11681513B2 (en) * 2020-05-14 2023-06-20 Texas Instmments Incorporated Controlled scope of authentication key for software update

Family Cites Families (101)

* 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 (ja) * 1978-11-30 1983-05-16 国産電機株式会社 液面検出装置
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
US4307214A (en) * 1979-12-12 1981-12-22 Phillips Petroleum Company SC2 activation of supported chromium oxide catalysts
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 (de) * 1980-09-13 1982-04-22 Robert Bosch Gmbh, 7000 Stuttgart Auslesesicherung bei einchip-mikroprozessoren
JPS58140862A (ja) * 1982-02-16 1983-08-20 Toshiba Corp 相互排他方式
US4521852A (en) * 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
JPS59111561A (ja) * 1982-12-17 1984-06-27 Hitachi Ltd 複合プロセツサ・システムのアクセス制御方式
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 (ja) * 1985-03-11 1986-09-12 Hitachi Ltd アドレス変換装置
FR2592510B1 (fr) * 1985-12-31 1988-02-12 Bull Cp8 Procede et appareil pour certifier des services obtenus a l'aide d'un support portatif tel qu'une carte a memoire
FR2601535B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Procede pour certifier l'authenticite d'une donnee echangee entre deux dispositifs connectes en local ou a distance par une ligne de transmission
FR2601525B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Dispositif de securite interdisant le fonctionnement d'un ensemble electronique apres une premiere coupure de son alimentation electrique
FR2601476B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Procede pour authentifier une donnee d'habilitation externe par un objet portatif tel qu'une carte a memoire
FR2618002B1 (fr) * 1987-07-10 1991-07-05 Schlumberger Ind Sa Procede et systeme d'authentification de cartes a memoire electronique
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 (fr) * 1988-12-20 1993-01-08 Bull Cp8 Dispositif de traitement de donnees comportant une memoire non volatile electriquement effacable et reprogrammable
JPH02171934A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd 仮想計算機システム
JPH02208740A (ja) * 1989-02-09 1990-08-20 Fujitsu Ltd 仮想計算機制御方式
JPH0617217B2 (ja) * 1989-02-28 1994-03-09 水澤化学工業株式会社 非晶質シリカ・アルミナ系球状粒子及びその製法
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 (ja) * 1989-06-30 1997-03-12 株式会社日立製作所 仮想計算機における表示制御方式
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 (ja) * 1989-09-21 1998-11-18 株式会社日立製作所 多重仮想空間アドレス制御方法および計算機システム
CA2010591C (en) * 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
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
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
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 (ja) * 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
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
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
JP2765411B2 (ja) * 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
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 (ja) * 1992-12-18 1994-07-08 Hitachi Ltd 仮想計算機システムの入出力割込み制御方法
US5469557A (en) * 1993-03-05 1995-11-21 Microchip Technology Incorporated Code protection in microcontroller with EEPROM fuses
FR2703800B1 (fr) * 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
FR2704341B1 (fr) * 1993-04-22 1995-06-02 Bull Cp8 Dispositif de protection des clés d'une carte à puce.
JPH06348867A (ja) * 1993-06-04 1994-12-22 Hitachi Ltd マイクロコンピュータ
FR2706210B1 (fr) * 1993-06-08 1995-07-21 Bull Cp8 Procédé d'authentification d'un objet portatif par un terminal hors ligne, objet portatif et terminal correspondants.
US5555385A (en) * 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5584023A (en) * 1993-12-27 1996-12-10 Hsu; Mike S. C. Computer system including a transparent and secure file transform mechanism
UA41387C2 (uk) * 1994-01-13 2001-09-17 Сертко, Інк Спосіб установлення вірогідного перевірюваного зв'язку, спосіб захищеного зв'язку, спосіб оновлення мікропрограмного забезпечення, спосіб здійснення шифрованого зв'язку та спосіб надання перевіреному на справжність пристрою права на проведення електронної транзакції
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
US5473692A (en) * 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
JPH0883211A (ja) * 1994-09-12 1996-03-26 Mitsubishi Electric Corp データ処理装置
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
US5802268A (en) * 1994-11-22 1998-09-01 Lucent Technologies Inc. Digital processor with embedded eeprom memory
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
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
US5757915A (en) * 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
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
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
US5923884A (en) * 1996-08-30 1999-07-13 Gemplus S.C.A. System and method for loading applications onto a smart card
US5844986A (en) * 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
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
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
US7213152B1 (en) * 2000-02-14 2007-05-01 Intel Corporation Modular bios update mechanism
US6625730B1 (en) * 2000-03-31 2003-09-23 Hewlett-Packard Development Company, L.P. System for validating a bios program and memory coupled therewith by using a boot block program having a validation routine
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US6976163B1 (en) * 2000-07-12 2005-12-13 International Business Machines Corporation Methods, systems and computer program products for rule based firmware updates utilizing certificate extensions and certificates for use therein
US7069452B1 (en) * 2000-07-12 2006-06-27 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
US6463549B1 (en) * 2000-09-28 2002-10-08 Motorola, Inc. Device and method for patching code residing on a read only memory module utilizing a random access memory for storing a set of fields, each field indicating validity of content of a group, and for receiving an address of a memory portion of the read only memory
US7095858B2 (en) * 2001-05-10 2006-08-22 Ranco Incorporated Of Delaware System and method for securely upgrading firmware
US6993648B2 (en) * 2001-08-16 2006-01-31 Lenovo (Singapore) Pte. Ltd. Proving BIOS trust in a TCPA compliant system
US7484105B2 (en) * 2001-08-16 2009-01-27 Lenovo (Singapore) Ptd. Ltd. Flash update using a trusted platform module
US7237126B2 (en) * 2001-09-28 2007-06-26 Hewlett-Packard Development Company, L.P. Method and apparatus for preserving the integrity of a management subsystem environment

Also Published As

Publication number Publication date
AU2003224803A1 (en) 2003-10-27
TWI268449B (en) 2006-12-11
HK1068423A1 (en) 2005-04-29
GB2419990A (en) 2006-05-10
CN1659494A (zh) 2005-08-24
GB2403047A (en) 2004-12-22
TW200402659A (en) 2004-02-16
WO2003088019A3 (en) 2004-03-04
CN1659494B (zh) 2011-06-08
US20030196096A1 (en) 2003-10-16
WO2003088019A2 (en) 2003-10-23
GB0602345D0 (en) 2006-03-15
GB2419990B (en) 2006-11-01
GB0422098D0 (en) 2004-11-03
GB2403047B (en) 2006-04-12

Similar Documents

Publication Publication Date Title
DE10392528T5 (de) Microcode-Patch-Authentifizierung
DE60303476T2 (de) Verfahren und server für eine programm-aktualisierung
DE112005001666B4 (de) Verfahren zum Bereitstellen von privaten Direktbeweis-Schlüsseln in signierten Gruppen für Vorrichtungen mit Hilfe einer Verteilungs-CD
DE60314060T2 (de) Verfahren und Vorrichtung zur Schlüsselverwaltung für gesicherte Datenübertragung
EP2899714B1 (de) Gesichertes Bereitstellen eines Schlüssels
DE60202605T2 (de) Verfahren zur sicherung eines elektronischen geräts, sicherheitssystem und elektronisches gerät
DE69837303T2 (de) Informationsverarbeitungsvorrichtung und Verfahren und Aufzeichnungsmedium zum Ausführen mittels öffentlicher Schlüssel verschlüsselter Programme
DE102008021567B4 (de) Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
DE102006046456B4 (de) Schaltkreis-Anordnung, Verfahren zum Hochfahren einer Schaltkreis-Anordnung, Verfahren zum Betreiben einer Schaltkreis-Anordnung und Computerprogrammprodukte
EP1393146B1 (de) Verfahren und system zur verteilten erstellung eines programms für einen programmierbaren, tragbaren datenträger
DE102015209116A1 (de) Verfahren und Aktualisierungsgateway zum Aktualisieren eines eingebetteten Steuergerätes
DE102005030590A1 (de) Sicheres Korrektursystem
EP2567501B1 (de) Verfahren zum kryptographischen schutz einer applikation
DE102009013384A1 (de) System und Verfahren zur Bereitstellung einer sicheren Anwendungsfragmentierungsumgebung
DE112005001654T5 (de) Verfahren zum Übermitteln von Direct-Proof-Privatschlüsseln an Geräte mittels einer Verteilungs-CD
DE102015209108A1 (de) Verfahren und Entscheidungsgateway zum Autorisieren einer Funktion eines eingebetteten Steuergerätes
WO2009040207A1 (de) Verfahren und system zum schutz gegen einen zugriff auf einen maschinencode eines gerätes
EP2442251B9 (de) Individuelle Aktualisierung von Computerprogrammen
EP3337085B1 (de) Nachladen kryptographischer programminstruktionen
EP2434424B1 (de) Verfahren zur Erhöhung der Sicherheit von sicherheitsrelevanten Online-Diensten
EP3552344B1 (de) Bidirektional verkettete blockchainstruktur
EP3248136B1 (de) Verfahren zum betreiben einer computereinheit mit einer sicheren laufzeitumgebung sowie eine solche computereinheit
DE102005046696A1 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
DE102020216030A1 (de) Verfahren zum abgesicherten Start einer Recheneinheit
DE102020206039A1 (de) Erstellen einer Container-Instanz

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8131 Rejection