DE102005014462B4 - Verfahren zum Starten eines sicheren Kernels in einem System - Google Patents

Verfahren zum Starten eines sicheren Kernels in einem System Download PDF

Info

Publication number
DE102005014462B4
DE102005014462B4 DE102005014462A DE102005014462A DE102005014462B4 DE 102005014462 B4 DE102005014462 B4 DE 102005014462B4 DE 102005014462 A DE102005014462 A DE 102005014462A DE 102005014462 A DE102005014462 A DE 102005014462A DE 102005014462 B4 DE102005014462 B4 DE 102005014462B4
Authority
DE
Germany
Prior art keywords
secure
node
nodes
processor
trusted agent
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
DE102005014462A
Other languages
English (en)
Other versions
DE102005014462A1 (de
Inventor
John H. Wilson
Ioannis T. Schoinas
Mazin S. Yousif
Linda J. Rankin
David W. Grawrock
Robert J. Greiner
James A. Sutton
Kushagra Vaid
Willard M. Wiseman
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 DE102005014462A1 publication Critical patent/DE102005014462A1/de
Application granted granted Critical
Publication of DE102005014462B4 publication Critical patent/DE102005014462B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Abstract

Verfahren zum Starten eines sicheren Kernels in einem System mit einer teilweise oder einer vollständig verbundenen Topologie, das System eine Mehrzahl von Knoten aufweist und jeder Knoten eine Mehrzahl von Prozessoren enthält; umfassend Laden eines Trusted Agents und eines sicheren Kernels in eine sichere Speichereinrichtung, die in dem System vorgesehen ist, wobei die sichere Speichereinrichtung für jeden der Knoten zugänglich ist, und Initiieren eines sicheren Starts auf einem bestimmten Prozessor, der in einem bestimmten Knoten enthalten ist, Konstruieren eines Spannbaums durch den bestimmten Prozessor, wobei der Spannbaum alle anderen Knoten des Systems in Bezug auf den bestimmten Knoten in einer Mehrzahl von Stufen einer Baumstruktur identifiziert; Senden einer sicheren Startmeldung an den anderen Knoten, der in dem Spannbaum identifiziert ist, durch den bestimmten Prozessor; als Antwort auf die sichere Startmeldung von dem anderen Knoten Validieren des in die sichere Speichereinrichtung geladenen Trusted Agents durch den bestimmten...

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Die Erfindung bezieht sich auf ein Verfahren zum Starten eines sicheren Kernels in einem System mit einer teilweise oder einer vollständig verbundenen Topologie.
  • Eine auf Verbindungen basierende Systemtopologie kann vielfache Knoten aufweisen, die durch Punkt-zu-Punkt-Verbindungen verbunden sind. Die Topologie muß nicht vollständig verbunden sein; das heißt, ein bestimmter Knoten muß nicht direkt mit allen anderen Knoten verbunden sein, aber jeder Knoten kann jeden anderen Knoten über vielfache Verbindungen erreichen, basierend auf konfigurierten Routingmechanismen. Als Beispiele können die Knoten ein Prozessor, ein Eingangs-/Ausgangs-(E-/A-)Hub oder eine andere solche Einheit sein.
  • Die US 2003/0188165 A1 offenbart ein Verfahren, welches ein sicheres Starten eines sicheren Kernels auf einer Mehrzahl von Prozessoren eines Systems darstellt, wobei das System eine teilweise verbundene Topologie oder eine vollständig verbundene Topologie aufweist, unter Verwendung eines Trusted Agents und Messen einer Identität des sicheren Kernels und Aufzeichnen der Identität in einer transitiven Vertrauenskette.
  • GONZALES-VALENZUELA, S.; LEUNG, V. C. M.: QoS routing for MPLS networks employing mobile agents. In: IEEE Network. ISSN 0890-8044. 2002, Vol. 16, Issue 3, S. 16–21 offenbart ein Verfahren, umfassend: Starten eines Agents auf einer Mehrzahl von Prozessoren eines Systems unter Verwendung eines Spannbaums, der über die Mehrzahl von Prozessoren konstruiert ist.
  • Zu Beginn des Systembetriebs wird darauf vertraut, dass die Prozessorhardware sich verhält wie vorgegeben, und es wird darauf vertraut, dass die Verbindungsmechanismen Verbindungsschichtmeldungen ausgeben, die durch Hardware von einem Verbindungscontroller an einen anderen Verbindungscontroller gesendet werden. Ferner stellen die Verbindungsmechanismen vertrauenswürdige Informationen über die Hardwarekomponenten an jedem Ende einer Verbindung bereit. In ähnlicher Weise wird darauf vertraut, dass die Hardwaremechanismen der E-/A-Hubs sich verhalten wie vorgegeben.
  • In bestimmten Ausführungen, kann ein gegebenes Protokoll, das auf einer Systemstruktur läuft, dazu verwendet werden, um auf einen Speicher zuzugreifen und ein einheitliches Erscheinen und Verhalten des gesamten Speichers als einen einzelnen physischen Adressraum beizubehalten, obwohl separate physische Speicher existieren können. Ein einheitliches Verhalten ist indes abhängig von Adressentschlüsselungs- und Routingmechanismen, die durch nicht-vertrauenswürdige Software konfiguriert werden. Folglich kann nicht auf ein solches Protokoll vertraut werden, um korrekt auf Speicher zuzugreifen, bevor die Konfiguration validiert wurde.
  • Insbesondere kann nicht darauf vertraut werden, dass es frei von Konfigurationsfehlern und falschen Betriebsabläufen, wie zum Beispiel Speicher-Aliasnamen, ist oder die gleiche physische Adresse mit unterschiedlichen Zuordnungen verwendet. Es besteht folglich ein Bedarf, eine vertrauenswürdige Umgebung in solch einem System zu starten.
  • Erfindungsgemäß wird diese Aufgabe durch ein Verfahren gemäß Anspruch 1 gelöst.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1A ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform dieser Erfindung.
  • 1B ist die Fortsetzung des Ablaufdiagramms von 1A.
  • 2 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform dieser Erfindung.
  • 3 ist ein Blockdiagramm eines Spannbaums, der gemäß einer Ausführungsform dieser Erfindung konstruiert ist.
  • 4 ist ein Blockdiagramm einer vertrauenswürdigen Hardwareverbindung gemäß einer Ausführungsform dieser Erfindung.
  • 5 ist ein Zeitdiagramm eines sicheren Starts gemäß einer Ausführungsform dieser Erfindung aus Sicht eines einleitenden logischen Prozessors.
  • 6 ist ein Zeitdiagramm eines sicheren Starts gemäß einer Ausführungsform dieser Erfindung aus Sicht eines antwortenden logischen Prozessors.
  • DETAILLIERTE BESCHREIBUNG
  • In mehreren Ausführungsformen kann ein sicherer Kernel, der auf allen Prozessoren in einer Systemtopologie läuft, sicher gestartet werden. Ferner kann eine Identität des sicheren Kernels auf sichere Art gemessen und aufgezeichnet werden, gemeinsam mit einem oder mehreren beim Startprozess verwendeten Software-Agenten. Auf diese Art kann eine transitive Vertrauenskette, die in zum Starten des sicheren Kernels verwendeter Hardware verwurzelt ist, aufgezeichnet werden.
  • In bestimmten Ausführungsformen, kann die vertrauenswürdige Hardware einen Master-E-/A-Hub umfassen, mit dem ein Master-Trusted-Platform-Modul (TPM) verbunden ist. Ein (nicht sicheres) Betriebssystem (OS) kann über Kenntnisse dieses Aspekts der Topologie verfügen. Ferner kann ein vertrauenswürdiger Software-Agent ausgeführt werden, derart, dass in keinerlei Art und Weise in seine Ausführung eingegriffen werden kann.
  • Ein Benutzer oder Systemadministrator kann den Wunsch haben, einen sicheren Kernel in ein System zu laden. So wie hier darauf Bezug genommen wird, bezieht sich der Begriff „sicher” auf die Fähigkeit, das System später zu untersuchen und zu bestimmen, ob ein bestimmter Kernel geladen wurde. Ferner, kann der Benutzer oder ein Dritter des Weiteren bestimmen, ob der Kernel in eine sichere Speicherumgebung geladen wurde. Dementsprechend, kann in einer Ausführungsform ein externer Agent Vertrauen feststellen oder entscheiden, dass dem innerhalb der sicheren Umgebung enthaltenen Kernel zu vertrauen ist, durch die ihm zur Verfügung gestellte Fähigkeit, Software in der sicheren Umgebung zu untersuchen.
  • In einer Ausführungsform kann, anstatt den gesamten Bereich einer Untersuchung zu unterziehen, ein kryptografischer Hashwert (z. B., ein Softwareidentifikationswert), der den sicheren Speicherbereich darstellt, untersucht werden. In einer Ausführungsform, kann der digital signierte sichere Softwareidentifikationswert in Hardware gespeichert werden, auf die der externe Agent zugreifen kann.
  • Bezug nehmend auf 1A, wird ein Ablaufdiagramm eines Verfahrens zum Starten eines sicheren Kernels auf einem Multiprozessorsystem gemäß einer Ausführungsform dieser Erfindung gezeigt. Wie in 1A gezeigt, kann ein Verfahren 100 durch das Laden eines Trusted Agents und eines sicheren Kernels in den Speicher (Block 110) beginnen. In einer Ausführungsform wird ein Non-Trusted OS den Trusted Agent und den sicheren Kernel in einen sicheren Bereich des Systemspeichers laden. Der Trusted Agent und der sichere Kernel können in einer Massenspeichereinheit, wie einem Laufwerk, gespeichert werden und in einen Systemspeicher geladen werden, auf den durch die Mehrzahl an Prozessoren des Systems zugegriffen werden kann. Zusätzlich kann das OS Seitentafeln konstruieren, um den sicheren Kernel und den Trusted Agent zu adressieren. Die Adresse und die Länge dieser Seitentafeln kann in einer Ausführungsform an besonderen Stellen in einem Master E-/A-Hub des Systems gespeichert werden. Das OS kann ebenfalls einen öffentlichen Schlüssel, der zum Authentifizieren des Moduls verwendet wird, speichern. In einer Ausführungsform kann der Trusted Agent ein sicherer authentifizierter Code sein, der verwendet wird, um eine Konfiguration des Systems und insbesondere eine Speicherkonfiguration des Systems zu validieren. Der Trusted Agent kann ferner dazu verwendet werden, das Ausführen des sicheren Kernels einzuleiten.
  • Als nächstes kann das OS einen sicheren Start auf einem einleitenden logischen Prozessor (ILP) (Block 120) ausgeben. Ein solcher sicherer Start kann ein sicherer Eintrittbefehl (SENTER) zum Einleiten eines sicheren Eintritts sein. Die Ausführung des SENTER-Befehls kann beim ILP die Ausgabe von besonderen Bus-Meldungen, sowohl innerhalb seines Sockets als auch der Sockets von anderen Prozessoren, verursachen und dann das Warten über ein erhebliches Zeitintervall auf nachfolgende Systemaktionen verursachen.
  • In einer Ausführungsform kann der ILP direkt an den Master E-/A-Hub gekoppelt werden, der wiederum direkt an ein Master-TPM gekoppelt sein kann. In einer solchen Ausführungsform, kann der ILP validieren, dass er einen vertrauenswürdigen Pfad zum Master-TPM hat. Zum Beispiel können vertrauenswürdige Verbindungsparameter im Socket des ILPs untersucht werden. Ein solcher Pfad kann ein vertrauenswürdiger Hardwarepfad sein, der nicht durch Firmware oder Software initialisiert werden muss. An diesem Punkt der Ausführung des Verfahrens kann in einer Ausführungsform, in der der ILP Teil eines Multiprozessorsockets ist, der ILP auch das Anhalten von anderen logischen Prozessoren (OLPs) im Socket verursachen.
  • Als nächstes kann der ILP einen Spannbaum (Block 130) konstruieren. Ein solcher Spannbaum kann gemäß einem gewünschten Algorithmus konstruiert werden. Der Spannbaum kann verwendet werden, um alle anderen Knoten des Systems, die mit dem ILP-Knoten in mehreren Stufen einer Baumstruktur verbunden sind, mit dem als Wurzel des Baumes wirkenden ILP zu identifizieren.
  • Knoten, die direkt mit dem ILP verbunden sind, können Knoten der zweiten Stufe sein, Knoten, die mit diesen Knoten der zweiten Stufe verbunden sind, können Knoten der dritten Stufe sein und so weiter. Ein solcher Spannbaum kann verwendet werden, um die richtige Konfiguration des Systems zu validieren und das Routing der auf Verbindungen basierenden Meldungen an die unterschiedlichen Knoten zu ermöglichen. Nur vertrauenswürdige Hardware und Verbindungen dürfen verwendet werden, um den Spannbaum zu konstruieren. In bestimmten Ausführungsformen kann der Spannbaum einen vertrauenswürdigen Sendemechanismus, womit der ILP eine Meldung an jeden Prozessor-Socket senden kann, ein Mittel für jeden Prozessor-Socket, um auf die Sendemeldung zu antworten und um diese Antworten zusammenzufassen, wenn diese über den Baum aufwärts an den ILP zurückgeleitet werden, und einen Barrieremechanismus, um zu gewährleisten, dass alle Prozessor-Sockets einen bekannten Zustand erreicht haben, bevor der ILP mit einer neuen Sendemeldung fortfährt, bereitstellen.
  • Immer noch Bezug nehmend auf 1A, kann bei Block 140 eine sichere Startmeldung an die anderen Sockets des Spannbaums gesendet werden. In einer Ausführungsform können solche Meldungen durch Verwendung dieses Spannbaumprotokolls gesendet werden, das Meldungen von der Wurzelstufe an die nächste Stufe (d. h., an die Knoten der Abwarts-Verbindungen) sendet, welche wiederum Meldungen an die nächst unterste Stufe sendet, und so weiter. Als Antwort kann jede Stufe Antwortpakete aufwärts zurück bis an ihre übermittelnde Stufe (d. h., an die Knoten der Aufwärts-Verbindung) senden. Dementsprechend kann, wenn alle Knoten die Meldung erhalten und dementsprechend antworten, ein endgültiges Zusammenfassungsantwortpaket zurück an den Wurzelknoten übermittelt werden. An diesem Punkt der Ausführung des Verfahrens, kann ein antwortender logischer Prozessor (RLP) auf jedem der Sockets ein Anhalten der OLPs auf diesem Socket verursachen.
  • Nun Bezug nehmend auf 1B, kann der ILP den Trusted Agent validieren (Block 150), wenn der ILP die Zusammenfassungsantwort erhält, die anzeigt, dass alle anderen Knoten den SENTER-Befehl richtig erhalten und darauf geantwortet haben. Eine solche Validierung kann zum Beispiel die Durchführung einer Hashberechnung und ein Vergleichen des Ergebnisses mit einem vorhergehend gespeicherten Hashwert umfassen. Solche Validierungsinformationen können dann an die RLPs gesendet werden (Block 160). Jeder der RLPs kann einzeln validieren, dass er auf den Trusted Agent im geschützten Speicherplatz zugreifen kann und den Trusted Agent validieren (Block 170).
  • Wenn die Validierungs-Zusammenfassungsantworten durch den ILP für jeden der RLPs empfangen werden, können die ILPs dann die Ausführung des Trusted Agents auf allen Sockets des Systems steuern (Block 180). Zum Beispiel kann der ILP in einer Ausführungsform Barrieremechanismen verwenden, um Teile des Trusted Agents zu starten, auf eine Anzeige von jedem Socket, dass er diesen Teil des Trusted Agents durchgeführt hat, warten, und dann mit dem nächsten Teil fortfahren. Solche Anzeigen können gesendet werden unter Verwendung des vorhergehend erörterten Spannbaum-Protokolls.
  • Die Hardware verwendet somit den Spannbaum, um den identischen Trusted Agent auf jedem Prozessor-Socket zu starten. Der Trusted Agent kann auf jedem Prozessor-Socket gleichzeitig in einer koordinierten Ausführung des SIMD-Typs (single instruction multiple data) ausgeführt werden. Diese Ausführungen des Trusted Agent wirken zusammen, um die Speicherkonfiguration der Topologie, unter Verwendung des Spannbaums zur Koordination und zur Kommunikation mit dem ILP, vollständig zu validieren. Wenn der Trusted Agent die Konfiguration vollständig validiert, kann die Ausführung des Trusted Agent auf dem ILP die Seitentafeln, die zum Adressieren des sicheren Kernels verwendet werden, validieren, den Hash des Kernels berechnen und den Hash im Master-TPM speichern.
  • Beim Abschluss der Ausführung des Trusted Agent, kann der ILP den sicheren Kernel starten (Block 190). In diesem Moment übernimmt der sichere Kernel den Systembetrieb und kann gemäß dem darin enthaltenen Code ausgeführt werden (Block 195). Zum Beispiel kann der sichere Kernel über alle Sockets des Systems ausgeführt werden.
  • Nun Bezug nehmend auf 2 wird ein Blockdiagramm eines Systems gemäß einer Ausführungsform dieser Erfindung gezeigt. Wie in 2 gezeigt, kann das System 200 ein Multiprozessorsystem sein, dass eine beliebige, teilweise verbundene Punkt-zu-Punkt-Architektur hat. Das heißt, dass bestimmte Knoten des Systems 200 direkt zusammen gekoppelt sein können, während andere Knoten über einen dazwischen gekoppelten Zwischenknoten kommunizieren können. In anderen Ausführungsformen kann das System 200 eine vollständig verbundene Topologie haben. In einer Ausführungsform kann das System 200 ein SMP (simultaneous multiprocessing) Servercomputer sein, obwohl der Bereich dieser Erfindung nicht derart beschränkt ist.
  • Das heißt, dass, obwohl in 2 als eine Server-Plattform gezeigt, zu verstehen ist, dass ein System in anderen Ausführungsformen irgendeine einer gewünschten Desktop-, Mobil-, Server- oder eine andere solche Plattform sein kann. In bestimmten Ausführungsformen, können die Verbindungen zwischen unterschiedlichen Komponenten von 2 Punkt-zu-Punkt-Verbindungen sein, die einen zusammenhängenden gemeinsamen Speicher innerhalb des Systems 200 bereitstellen und in einer solchen Ausführungsform können die Verbindungen und Protokolle, die zur Kommunikation dazwischen verwendet werden, eine gemeinsame Systemschnittstelle (CSI) bilden. Auf diese Art können mehrere Prozessoren, Speicher und andere Komponenten des Systems 200 zusammenhängend miteinander verbunden sein.
  • In der Ausführungsform von 2 können alle Komponenten des Systems 200 gemeinsam ein zusammenhängendes System bilden. Ein solches zusammenhängendes System kann zusammenhängende Transaktionen ohne irgendeine Befehlserteilung zwischen Kanälen, durch die die Transaktionen fließen, unterbringen. Obwohl hierin als ein zusammenhängendes System erörtert, ist zu verstehen, dass sowohl zusammenhängende als auch nicht zusammenhängende Transaktionen durch Komponenten innerhalb des Systems weitergegeben und beeinflusst werden können. Zum Beispiel kann ein Bereich von einem, einigen oder allen mit dem System 200 verbundenen Speichern für nicht zusammenhängende Transaktionen reserviert werden. Es ist ebenfalls zu verstehen, dass die Ausführungsformen dieser Erfindung nicht auf zusammenhängende Systeme beschränkt sind.
  • Wie in 2 gezeigt, kann ein erster Prozessor-Socket 210 eine Mehrzahl an Verarbeitungskernen 212a, 212b, 212c und 212d umfassen. Obwohl in der Ausführungsform von 2 als vier solcher Verarbeitungskerne aufweisend gezeigt, ist zu verstehen, dass Prozessor-Sockets in anderen Ausführungsformen eine größere oder geringere Anzahl solcher Kerne umfassen können. Wie des Weiteren in 2 gezeigt, können die Prozessorkerne über einen Bus oder Ring 215 zusammen gekoppelt sein. In bestimmten Ausführungsformen, wie zum Beispiel einer Ausführungsform gemäß eines CSI-Protokolls, kann der Prozessor-Socket ebenfalls zusätzliche Logikfunktionalität wie zum Beispiel Speichercontrollerfunktionen und CSI-Paket-Erzeugung und Routingmechanismen umfassen.
  • Als Beispiel ist in 2, innerhalb des Prozessor-Sockets 210 die Logikfunktionalität 216 gezeigt, die Speichercontroller- oder andere Logikfunktionalität umfassen kann. Die Logikfunktionalität 216 kann einen Knotenidentifikator (NID) mit dem Prozessor-Socket verbinden. Wie in 2 gezeigt, kann der Prozessor-Socket 210 einen Knotenidentifikator haben, der in einer Ausführungsform anzeigt, dass er der einleitende logische Prozessor ist. Die logische Funktion 216 kann einen Quelladressendecoder umfassen, der das Zuordnen der Adressen zu den entsprechenden Knoten (z. B. NIDs) durchführt für alle Elemente in einem Belegungsplan des physischen Speichers. Wenn richtig konfiguriert, kann jeder Prozessor-Socket Logikfunktionalität umfassen, die einen Quelladressendecoder aufweisen, der die gleiche Adresse an die gleichen Knoten liefert. Die NIDs können in einer Ausführungsform durch nicht vertrauenswürdige Firmware bei der Systeminitialisierung zugeordnet werden und können dementsprechend nicht eindeutig sein. Somit kann in bestimmten Ausführungsformen ein Trusted Agent verwendet werden, um zu bestimmen, ob die NIDs für jeden der Knoten tatsächlich eindeutig sind. In bestimmten Ausführungsformen kann die Logikfunktionalität 216 ebenfalls einen Zieladressendecoder aufweisen, die die Zuordnung der Adressen zu physischem Speicher ausführt, zum Beispiel zu physischem Speicher, der direkt mit einem gegebenen Prozessor-Socket verbunden ist.
  • Ein Speicher 218 kann direkt an den Prozessor-Socket 210 gekoppelt werden. Während der Speicher 218 direkt an den Prozessor-Socket 210 gekoppelt werden kann, ist zu verstehen, dass in verschiedenen Ausführungsformen jeder der Prozessor-Sockets innerhalb des Systems 200 auf den Speicher 218 zugreifen kann. Der Speicher 218 kann über eine Schnittstelle mit dem Prozessor-Socket 210 verfügen unter Verwendung der Speichercontrollerfunktion innerhalb der Logikfunktionalität 216. Ferner ist, obwohl in 2 nicht gezeigt, zu verstehen, dass jeder Prozessor-Socket einen oder mehrere damit verbundene Speicher haben kann. Während jeder Socket einen direkt daran gekoppelten physischen Speicher haben kann, können zusätzliche Speicherelemente wie Cache-Speicher mit den einzelnen Verarbeitungskernen innerhalb der Prozessor-Sockets verbunden werden. In einer Ausführungsform können alle Speicher innerhalb eines Systems als ein einzelner physischer Adressraum adressiert werden, obwohl eine Vielzahl von solchen Speichern existieren kann, von denen jeder direkt mit einem unterschiedlichen Prozessor-Socket verbunden ist.
  • Wie des Weiteren in 2 gezeigt, ist der Prozessor-Socket 210 direkt mit dem Prozessor-Socket 220, dem Prozessor-Socket 250 und dem Prozessor-Socket 260 verbunden. Des Weiteren, ist der Prozessor-Socket 210 direkt mit einem Master-E-/A-Hub 290 verbunden, der wiederum direkt an ein Master-TPM 292 gekoppelt ist. Obwohl hier nicht im Detail erörtert, können die Prozessor-Sockets 230, 240, 270 und 280 (und die Sockets 220, 250 und 260) gleichartige Verarbeitungskerne, Busse, Ringe und logische Funktionen haben, wie in Verbindung mit Prozessor-Socket 210 erörtert. Zuletzt wird in 2 des Weiteren ein zweiter E-/A-Hub 295 gezeigt, der direkt mit den Prozessor-Sockets 250, 260, 270 und 280 verbunden ist.
  • Jeder der E-/A-Hubs 290 und 295 kann eine Mehrzahl an Anschlüssen zur Bildung einer Schnittstelle mit daran gekoppelten E-/A-Einheiten umfassen. Zum Beispiel können in bestimmten Ausführungsformen solche E-/A-Einheiten Einheiten gemäß einem oder mehreren Bussystemen sein. In einer Ausführungsform können solche E-/A-Einheiten Peripheral Component Interconnect (PCI) ExpressTM Einheiten gemäß der Pheripheral Component Interconnect Express Base Specification Version 1.0a (veröffentlicht im Juli 2002) sein.
  • Das Master-TPM 292 kann ein vertrauenswürdiges Plattformmodul gemäß der Trusted Computing Platform Alliance (TCPA) Main Specification Version 1.1b (veröffentlicht am 22. Februar 2002) sein. Das Master-TPM 292 kann mit dem Erzeugen und Beibehalten einer sicheren Betriebsumgebung verbundene Daten schützen. In einer besonderen Ausführungsform, kann das Master-TPM 292 Schlüssel für spezifische Verschlüsselungs-, Entschlüsselungs- und/oder Validierungsverfahren umfassen. Das Master-TPM 292 kann ebenfalls Speicherplatz umfassen, um einen Digest-Wert und andere in der sicheren Umgebung zu verwendende Informationen zu halten. In einer Ausführungsform kann der Speicherplatz im Master-TPM 292 einen nichtflüchtigen Speicher (z. B. einen Flash-Speicher) umfassen, um seine Inhalte im Falle eines Stromausfalls zu bewahren.
  • Obwohl in der Ausführungsform von 2 mit vier oder fünf direkten Verbindungen für jeden Prozessor-Socket aufweisend gezeigt, können andere Ausführungsformen mehr oder weniger dieser direkten Verbindungen zwischen unterschiedlichen Sockets haben. Außerdem ist zu verstehen, dass in unterschiedlichen Ausführungsformen mehr oder weniger Sockets vorhanden sein können, wobei jeder unterschiedliche Anzahlen von Kernen und unterschiedliche Mengen an Logikfunktionalität aufweisen kann. Zum Beispiel kann ein einzelnes Prozessorsystem mit einem einzelnen E-/A-Hub und daran gekoppelten verbundenen E-/A-Einheiten ausgeführt werden. Alternativ kann ein Multiprozessorsystem ausgeführt werden, das eine unterschiedliche Anzahl von Prozessoren (wie zum Beispiel 4, 8, 16, oder 32) aufweist und eine angemessene Anzahl von E-/A-Hubs und anderen Komponenten können daran gekoppelt werden. Jede dieser Plattformtopologien kann Punkt-zu-Punkt-Verbindungen haben, um eine Kohärenz innerhalb eines zusammenhängenden Teils des Systems herzustellen, und ebenfalls nicht-kohärente Peer-to-Peer-Transaktionen zwischen daran gekoppelten E-/A-Einheiten zu ermöglichen. Zusätzlich können in bestimmten Ausführungsformen zusätzliche Komponenten im System 200 vorhanden sein, wie zum Beispiel Crossbars oder Router und ähnliches.
  • Nun Bezug nehmend auf 3 wird ein Blockdiagramm eines Spannbaums gemäß einer Ausführungsform dieser Erfindung gezeigt. Wie in 3 gezeigt, kann der Spannbaum 300 eine grafische Darstellung eines durch einen ILP konstruierten Spannbaums sein. Insbesondere entspricht der Spannbaum 300 einem Spannbaum für das System 200 von 2, in dem der Prozessor-Socket 210 den ILP umfasst. Zu bemerken ist, dass jeder Knoten des Spannbaums einen Knotenidentifikator hat, der dem Knotenidentifikator des dazu passenden Prozessor-Sockets von 2 entspricht. Wie in 3 gezeigt, hat der Knoten 310 auf Wurzelstufe einen Knotenidentifikator von 1, der dem Prozessor-Socket 210 von 2 entspricht. Die Knoten von Stufe zwei umfassen die Knoten, die direkt an den Prozessor-Socket 210 gekoppelt sind. Insbesondere umfassen die Knoten von Stufe zwei, wie in 3 gezeigt, die Knoten 315, 320, 325 und 330, von denen jeder den Knoten des Systems 200 entspricht, die direkt an den Prozessor-Socket 210 gekoppelt sind, nämlich den Prozessor-Sockets 220, 250 und 260 und den Master-E-/A-Hub 290.
  • Eine dritte Stufe von Knoten umfasst die Knoten 335, 340 und 350. Jeder dieser Knoten entspricht einem Knoten, der direkt mit einem Knoten der zweiten Stufe verbunden ist. Zum Beispiel ist der Knoten 335 (der z. B. dem E-/A-Hub 295 entspricht) direkt an den Prozessor-Socket 250 gekoppelt; der Knoten 340 (d. h., derjenige, der dem Prozessor-Socket 270 entspricht), ist direkt an den Prozessor-Socket 260 gekoppelt; und der Knoten 350 (d. h., derjenige, der der Prozessorsoftware 230 entspricht), ist direkt an den Prozessor-Socket 220 gekoppelt. Schließlich umfasst eine vierte Stufe von Knoten die Knoten 355 und 360, die beide direkt an einen Knoten der dritten Stufe, nämlich den Knoten 340, gekoppelt sind.
  • Somit dient ein Spannbaum zur Identifikation der Anzahl teilnehmender Sockets innerhalb eines Systems. Jeder Socket im System (außer dem Wurzelsocket) kann eine als eine Aufwärtsverbindung identifizierte Verbindung haben. Sendemeldungen, die durch den ILP erzeugt werden, können durch einen RLP von seiner Aufwärtsverbindung empfangen werden. Des Weiteren können alle Sockets, außer denjenigen, die Blätter sind (z. B., die Knoten der vierten Stufe von 3) als Abwärtsverbindungen identifizierte Verbindungen haben. Jeder Socket kann Sendemeldungen an seine Abwärtsverbindungen weitergeben. In bestimmten Ausführungsformen kann eine Nachschlagtafel oder eine andere Datenstruktur, die der in 3 gezeigten grafischen Darstellung entspricht, in einem mit dem Prozessor-Socket 210 zur Verwendung durch den ILP verbundenen Speicher gespeichert werden.
  • Somit umfasst der Spannbaum am Ende der Konstruktion des Spannbaums Informationen in Bezug auf die Anzahl von Knoten und die Stufen davon. Am Ende der Spannbaum-Aufzählung, können jedem der Knoten eindeutige Identifikatoren zugeordnet werden, und es kann ebenfalls eine Anzahl der Knoten unterhalb von einem gegebenen Knoten bestimmt und gespeichert werden. Somit kann wie in 3 gezeigt, zusätzlich zu den Knotenidentifikatoren (ebenfalls in 2 gezeigt) für jeden der Knoten ein zusätzlicher eindeutiger Identifikator des Spannbaums vorhanden sein (z. B., Knoten-ID 1 hat einen Spannbaum-Identifikator von 1, während Knoten-ID 5 einen Spannbaum-Identifikator von 2 hat).
  • Nun Bezug nehmend auf 4 wird ein Blockdiagramm einer vertrauenswürdigen Verbindungshardware gemäß einer Ausführungsform dieser Erfindung gezeigt. Eine solche vertrauenswürdige Verbindungshardware kann verwendet werden, um eine vertrauenswürdige Hardwareverbindung innerhalb eines Prozessor-Sockets zur Verwendung vor dem Abschluss der Ausführung eines Trusted Agents bereitzustellen. Einer solchen vertrauenswürdigen Hardwareverbindung kann vertraut werden, da keine Firmware oder Software für den Betrieb und die Übermittlung von Meldungen über die Verbindung benötigt wird. Die vertrauenswürdige Verbindungshardware 455a und 455b kann innerhalb eines Prozessor-Sockets enthalten sein (d. h., den Sockets 410a und 410b). Während zwei solche Sockets in 4 gezeigt werden, wird Socket 410a mit seinen Komponenten hierin erörtert werden. Wie in 4 gezeigt, kann die Hardwareverbindung 455a zwischen einem Prozessorkern 420a und einem Verbindungscontroller 450a gekoppelt sein. Unter Verwendung der vertrauenswürdigen Hardwareverbindung 455a, können vertrauenswürdige Verbindungsmeldungen vom Kern 420a gesendet und empfangen werden ohne, dass auf Software oder Firmware zurückgegriffen werden muss.
  • Im Gegensatz dazu, werden für normale System-Messaging- und Paketübermittlungen auf Verbindungen basierende Meldungen an/von Kern 420a über den Bus oder Ring 425a durch eine Kernschnittstelle 430a und eine Protocol Engine 435a übermittelt. In einer Ausführungsform kann die Protocol Engine 435a eine CSI Protocol Engine zum Formatieren der Daten und Meldungen in CSI-Pakete sein. Ferner koppelt ein Bus 440a die Protocol Engine 435a durch eine Crossbar 445a. Von dort können Daten und Meldungen an andere Knoten, an mit dem Prozessor-Socket verbundenen Speicher, an den Verbindungscontroller 450a, oder andere gewünschte Orte gesendet werden.
  • Da das Setup der Komponenten, die die Kernschnittstelle 430a, Protocol Engine 435a, und Crossbar 445a umfassen durch nicht-vertrauenswürdige Firmware erfolgt, kann dieser Pfad keinen nicht-fälschbaren Zugriffspfad vor der vollständigen Ausführung eines Trusted Agents bereitstellen. Somit kann die Hardwareverbindung 455a in mehreren Ausführungsformen einen nicht fälschbaren Zugriffspfad zwischen dem Kern 420a und dem Verbindungscontroller 450a bereitstellen, der insbesondere zur Verwendung vor der Validierung des Systems durch einen Trusted Agent geeignet ist. Zum Beispiel können vor der Validierung Verbindungscontroller wie die Verbindungscontroller 450a und 450b verwendet werden, um Verbindungsmeldungen zu erzeugen, die einen speziellen Befehl von einem Kern verwenden. Ein empfangender Verbindungscontroller kann somit den Verbindungsmeldungsinhalt erfassen und ihn über eine vertrauenswürdige Hardwareverbindung, wie der vertrauenswürdigen Hardwareverbindung 455a, direkt für einen Prozessorkern verfügbar machen. In bestimmten Ausführungsformen kann ein Ereignismechanismus von einem Verbindungscontroller zu einem Prozessorkern auftreten, derart, dass der Mikrocode im Kern über die Ankunft von neuen Verbindungsmeldungen auf der vertrauenswürdigen Hardwareverbindung informiert wird. Während der Verbindungsinitialisierung können Informationen, die die benachbarten Knoten betreffen, durch einen Verbindungscontroller erfasst werden und sowohl für die Protocol Engine als auch den Prozessorkern verfügbar sein. In solchen Ausführungsformen können solche Informationen einen Knotentyp oder einen Knotenidentifikator für die benachbarten Knoten umfassen.
  • Wie des Weiteren in 4 gezeigt, können Komponenten, die denjenigen, die vorhergehend unter Bezugnahme auf den Prozessor-Socket 410a erörtert wurden, entsprechen, im Prozessor-Socket 410b gefunden werden. Ferner kann eine vertrauenswürdige Verbindung zwischen den zwei Prozessoren durch eine Hardwareverbindung 460, die zwischen dem Verbindungscontroller 450a und dem Verbindungscontroller 450b gekoppelt ist, bewerkstelligt werden.
  • Diese vertrauenswürdige Verbindung kann verwendet werden, um vor der Validierung des Systems durch einen Trusted Agent auf Verbindungen basierende Meldungen zwischen den Prozessor-Sockets zu senden.
  • Nun Bezug nehmend auf 5, wird ein Zeitdiagramm eines sicheren Starts gemäß einer Ausführungsform dieser Erfindung, wie durch den ILP gesehen, gezeigt. Wie in 5 gezeigt, beginnt der sichere Start 500 durch das Laden eines Trusted Agents und eines sicheren Kernels in den Speicher (Segment 502). Wie vorhergehend erörtert, kann das nicht-vertrauenswürdige OS solche Ladevorgänge durchführen. Dann kann ein SENTER-Befehl an einen Prozessor-Socket geschickt werden, der einen gewünschten ILP umfasst (Segment 504). Ein solcher Befehl kann zum Beispiel durch ein nicht-vertrauenswürdiges OS ausgegeben werden.
  • Wenn der ILP den SENTER-Befehl empfängt, kann er einen gleichartigen Befehl an andere logische Prozessoren innerhalb seines Sockets und ebenfalls an andere Prozessor-Sockets, und insbesondere an einen antwortenden logischen Prozessor (RLP), von denen einer in jedem Prozessor-Socket vorhanden sein kann, ausgeben (Zeit 505). Das Bestimmen, welcher logische Prozessor der ILP und/oder RLP sein kann, kann in unterschiedlichen Ausführungsformen variieren und auf einer Software- oder Firmwarebestimmung basieren. In einer Ausführungsform kann der ILP zum Beispiel durch ein OS gewählt werden. Ferner kann der RLP innerhalb anderer Prozessor-Sockets durch alle logischen Prozessoren in einem gegebenen Socket gewählt werden. Bei der Zeit 510, kann der ILP prüfen, dass er direkt mit dem Master-E-/A-Hub verbunden ist. Bei der Zeit 515 kann der ILP eine SENTER-Busmeldung an die OLPs innerhalb seines Sockets senden, und jeder OLP kann auf den SENTER-Befehl antworten (Zeit 520).
  • An diesem Zeitpunkt kann das lokale SENTER-Ereignis (Segment 522) beginnen. Bei der Zeit 525 kann jeder OLP eine Bestätigung (ACK) ausgeben und in einen Wartezustand eintreten. Ein solcher Wartezustand kann durch die OLPs beibehalten werden, bis später durch den ILP der Befehl erfolgt, den Wartezustand zu verlassen.
  • Danach kann in eine globale SENTER-Befehls-Phase (Segment 528) eingetreten werden. Als erstes kann der ILP eine Meldungssuchbestätigung (ACK) von den Knoten innerhalb des Systems senden. Wenn die ACKs durch den ILP empfangen werden, kann er einen Continue-Befehl senden (Zeit 530). An diesem Zeitpunkt kann der ILP einen Spannbaum konstruieren.
  • Während die Konstruktion des Spannbaums unterschiedliche Formen annehmen kann, kann der Spannbaum in einer Ausführungsform durch das Senden von Impulssignalen konstruiert werden, die den Baum abwärts an eine nächst tiefere Stufe gesendeten Meldungen auf Verbindungsstufe entsprechen, und das Empfangen von Rücksendungen, die Meldungen auf Verbindungsstufe entsprechen, die rückwärts den Baum aufwärts kumulierten Ergebnissen entsprechen. Auf diese Art, kann jeder RLP, der eine Impulsmeldung empfängt, diese an seine Abwarts-Verbindungen weiterleiten und Rückmeldungen davon empfangen. Die auf Verbindungen basierende Meldung des Spannbaums, die gesendet wird, kann bei jedem Socket das Einstellen einer Stufe für jeden der Sockets verursachen.
  • Dann kann das Spannbaum-Bezeichnen stattfinden, in welcher jedem Knoten ein eindeutiger Identifikator zugeordnet werden kann.
  • Dementsprechend wird jedem Socket bei der Fertigstellung des Spannbaums ein eindeutiger Identifikator und eine Stufe zugeteilt, die ferner seine relative Position in Bezug auf den ILP und die Aufwärts- und Abwärts-Verbindungen zum und vom Socket anzeigen.
  • Bei der Validierung und Vervollständigung des Spannbaums, kann der ILP den SENTER-Befehl an alle anderen Prozessor-Sockets senden (Zeit 535). Als nächstes kann der ILP eine von den Knoten des Spannbaums erhaltene zusammenfassende Antwort zusammenfügen (Zeit 540). Ein Algorithmus über den Baum prüft, dass die Softwarekonfiguration der Topologie jedem Knoten einen eindeutigen Identifikator gegeben hat, die in einem Routingprotokoll des Systems verwendet werden kann.
  • Dann kann der ILP den Trusted Agent, den er bei der angegebenen Adresse im Master-E-/A-Hub findet, messen (d. h. den Hash berechnen) und authentifizieren (d. h., die Signatur prüfen) und den Hash-Wert, die Basisadresse und die Länge des Trusted Agents und einen Hash des öffentlichen Schlüssels, der zur Überprüfung der Signatur der anderen Prozessor-Sockets verwendet wird, senden (Zeit 550). Ein solches Senden kann unter Verwendung des Spannbaumprotokolls stattfinden. Wenn die anderen Sockets den Trusted Agent validieren, senden sie Antwortmeldungen, die dann durch den ILP bei Zeit 555 zusammengeführt werden. Wenn jeder Socket eine positive Antwort sendet, kann der ILP den Hash des Trusted Agents (z. B., das Master-TPM) laden, speichern und den Trusted Agent bei Zeit 560 starten. Wenn einer oder mehrere Sockets nicht positiv antworten, kann das sichere Starten in bestimmten Ausführungsformen beendet werden. In der in 5 gezeigten Ausführungsform, kann der Trusted Agent ein sicherer Trusted Agent (z. B., SINIT-AC genannt, für einen sicheren, mit Initialisierung authentifizierten Code) sein, obwohl der Bereich dieser Erfindung nicht derart beschränkt ist.
  • Dann kann der Trusted Agent ausgeführt werden (Segment 572). In einer Ausführungsform kann die Ausführung des Trusted Agent in einer losen Lock-Step-SIMD-Ausführung stattfinden. Das heißt, der gleiche Trusted Agent kann auf allen Sockets ausgeführt werden, wobei an bestimmten Barrieren innerhalb des Codes eine Synchronisierung erfolgt. Zum Beispiel kann der ILP eine Sendemeldung ausgeben, die einen Opcode und Daten auf allen Verbindungen aufweist. Jeder RLP kann die Daten erhalten und die Meldung auf seinen Abwärtsverbindungen weiterleiten, falls vorhanden, und die Daten verarbeiten. Wenn der RLP ein Blatt ist, kann er eine Antwortmeldung zurück an seine Aufwärtsverbindung senden. Wenn der RLP ein Zwischenknoten ist, kann er auf alle Antworten seiner Abwärtsverbindungen warten, alle Antworten unter Verwendung von Opcodes zusammenfassen und eine zusammengefasste Antwort an seine Aufwärtsverbindung senden. Wenn der ILP am Ende eine zusammengefasste Antwort von allen anderen Sockets erhält, kann die Ausführung in gleichartiger Weise zu einer nächsten Barriereposition fortgesetzt werden.
  • Während der Ausführung kann der Trusted Agent die lokale Konfiguration und den Quelladressendecoder auf jedem Prozessor-Socket validieren (Zeit 570). Ferner kann der Trusted Agent die Eindeutigkeit von jeder der Knotenidentifikationen für jeden Prozessor-Socket (Zeit 575) validieren. Zum Beispiel kann der Trusted Agent ein Senden der Quelladressendecoder an den ILP verursachen (Zeit 580). Dann kann der ILP die Ergebnisse eines Vergleichs der Quelladressendecoder zusammenfassen und analysieren (Zeit 585). Dann kann sich der Trusted Agent nach Validierung, Laden, Speichern und Starten des sicheren Kernels beenden (Zeit 590). Solche Validierungsinformationen (z. B. Hashwert) können in bestimmten Ausführungsformen in einem Master-TPM gespeichert werden. In einer Ausführungsform, kann der sichere Kernel ein sicherer Virtual Machine Monitor (SVMM) sein, obwohl der Bereich dieser Erfindung nicht derart beschränkt ist.
  • Immer noch Bezug nehmend auf 5, kann die Monitorinitialisierung (Segment 592) beim ILP ein Aktivieren aller Prozessorkerne in allen Sockets verursachen mit einem besonderen Befehl, der bei allen Prozessoren das Verlassen des Wartezustands verursacht. Folglich kommen bei Segment 596 alle Monitore zusammen und bei Zeit 598 nehmen alle Prozessorkerne teil und die sicheren Kernel-Betriebsabläufe können beginnen (Segment 599).
  • Nun Bezug nehmend auf 6, wird ein Zeitdiagramm eines sicheren Starts gemäß einer Ausführungsform dieser Erfindung gezeigt. Insbesondere zeigt 6 den zeitlichen Ablauf des sicheren Starts, aus Sicht eines antwortenden logischen Prozessors (RLP). Somit entspricht der sichere Start 600 in 6 eng demjenigen, der im Zeitdiagramm von 5 erfolgt. Zuerst erfolgt ein SENTER-Doorbell-Ereignis (Segment 604). Während eines solchen Ereignisses, wird der RLP unterbrochen durch den SENTER-Doorbell-Befehl vom ILP (Zeit 605). Bei Zeit 610 sendet der RLP eine SENTER-Abwärtsverbindungsmeldung an seine Abwärtsverbindungsknoten (wenn vorhanden). Bei Zeit 615 sendet der RLP die SENTER-Meldung an alle Prozessoren (d. h., OLPs) innerhalb seines Sockets. Jeder der anderen logischen Prozessoren im Socket kann auf den SENTER-Ablauf antworten (Zeit 620). Dann ereignet sich ein lokales SENTER-Ereignis (Segment 622), in dem jeder OLP ein ACK zurück an den ILP ausgibt und die OLPs treten in einen Wartezustand ein (bei Zeit 625).
  • Bei Segment 628, ereignet sich dann ein globales SENTER-Doorbell-Ereignis. Wenn alle ACKs von den Abwärtsverbindungsknoten durch den RLP empfangen werden, sendet er eine Continue-Meldung an den ILP (Zeit 630). Der RLP führt solche Continue-Meldungen bei Zeit 635 zusammen. Bei Zeit 640 kann der RLP dann die Validierungsinformationen vom ILP empfangen. In einer Ausführungsform kann der ILP Informationen in Bezug auf den Hashwert, die Basis, Größe und den Hash des öffentlichen Schlüssels des Trusted Agents senden. Ferner kann der RLP zu diesem Zeitpunkt diese Informationen an seine Abwärtsverbindungsknoten weiterleiten. Bei Zeit 645 kann der RLP den empfangenen Hash mit seinem Hash des Trusted Agent vergleichen.
  • Bei Zeit 650 empfängt der RLP Validierungsmeldungen von seinen nach unten führenden Knoten und führt diese Ergebnisse zusammen. Der RLP sendet ebenfalls eine Zusammenfassungsantwort über seinen nach oben führenden Knoten an den ILP. Danach lädt, authentifiziert und prüft der RLP basierend auf vom ILP erhaltenen Informationen die Signatur des Trusted Agents und startet den Trusted Agent (Zeit 655).
  • Wenn alle Prozessor-Sockets diesen Punkt erreichen, wird der Trusted Agent ausgeführt (Segment 672). Insbesondere validiert der Trusted Agent die lokale Konfiguration und die Knoten-IDs von jedem Prozessor-Socket (Zeit 660) und prüft und validiert den Quelladressendecoder innerhalb der Sockets (Zeiten 665 und 670). Der RLP kann Ergebnisse von dieser Validierung von den Abwärtsverbindungs-Sockets empfangen und die Ergebnisse zusammenführen und nach oben an den Aufwärtsverbindungs-Prozessor oder den ILP senden (Zeit 675). Dann tritt der RLP-Socket in einen speziellen Wartezustand ein (bei Zeit 680).
  • An diesem Punkt wird der sichere Kernel gestartet, zuerst auf dem ILP-Socket (Segment 692). Bei Zeit 685 aktiviert der sichere Kernel auf dem ILP alle Prozessorkerne auf allen Sockets mit einem speziellen Aktivierungsbefehl. An diesem Zeitpunkt kann der sichere Kernel seine Ausführung auf einigen oder allen Prozessoren des Systems fortsetzen. Zum Beispiel kann nach einem sicheren Start eine Virtual Machine Umgebung erzeugt werden, in der der SVMM als der am meisten bevorrechtigte Code innerhalb des Systems wirken kann und verwendet werden kann, um einen direkten Zugriff auf bestimmte Systemressourcen durch das OS oder Applikationen innerhalb der Virtual Machine zu verweigern.
  • Auf diese Art, können Ausführungsformen dieser Erfindung einen vertrauenswürdigen sicheren Kernel auf einer beliebig komplexen Serverhardwaretopologie, die durch nicht vertrauenswürdige Software und Firmware konfiguriert wurde, speichern und starten. Der Kernel kann dann fortfahren, um eine vertrauenswürdige Serverausführungsumgebung zu konstruieren, aufzuzeichnen und zu bestätigen. Ferner kann ein Trusted Agent in bestimmten Ausführungsformen auf eine SIMD-Art auf allen Prozessor-Sockets in einer Servertopologie und unter Verwendung eines vertrauenswürdigen Barriere-/Sendemechanismus ausgeführt werden, die Konfiguration einer beliebig komplexen Servertopologie kann validiert werden und durch transitives Vertrauen von Hardware durch den Trusted Agent, kann eine sichere Umgebung aufgezeichnet und gestartet werden.

Claims (2)

  1. Verfahren zum Starten eines sicheren Kernels in einem System mit einer teilweise oder einer vollständig verbundenen Topologie, das System eine Mehrzahl von Knoten aufweist und jeder Knoten eine Mehrzahl von Prozessoren enthält; umfassend Laden eines Trusted Agents und eines sicheren Kernels in eine sichere Speichereinrichtung, die in dem System vorgesehen ist, wobei die sichere Speichereinrichtung für jeden der Knoten zugänglich ist, und Initiieren eines sicheren Starts auf einem bestimmten Prozessor, der in einem bestimmten Knoten enthalten ist, Konstruieren eines Spannbaums durch den bestimmten Prozessor, wobei der Spannbaum alle anderen Knoten des Systems in Bezug auf den bestimmten Knoten in einer Mehrzahl von Stufen einer Baumstruktur identifiziert; Senden einer sicheren Startmeldung an den anderen Knoten, der in dem Spannbaum identifiziert ist, durch den bestimmten Prozessor; als Antwort auf die sichere Startmeldung von dem anderen Knoten Validieren des in die sichere Speichereinrichtung geladenen Trusted Agents durch den bestimmten Prozessor durch Durchführen einer Hash-Operation und Vergleich eines Ergebnisses der Hash-Operation mit einem gespeicherten Hash-Wert; Senden von Validierungsinformationen an einen antwortenden Prozessor, der in jedem der anderen Knoten enthalten ist, durch besagten bestimmten Prozessor; als Antwort auf ein Ergebnis der Validierung von den antwortenden Prozessoren, die in dem anderen Knoten enthalten sind, wobei das Ergebnis der Validierung durch Zugreifen auf in die sichere Speichereinrichtung geladenen Trusted Agent und durch individuelles Validieren von dem Trusted Agent durch die antwortenden Prozessoren, die in dem anderen Knoten enthalten sind, erhalten wird, Steuern der Ausführung von dem Trusted Agent auf allen Knoten, die in dem Spannbaum identifiziert sind, durch den bestimmten Prozessor unter Verwendung eines Barrieremechanismus mit einer Mehrzahl von Barrierepositionen, in denen der bestimmte Prozessor eine Sendemeldung ausgibt, die einen Opcode und Daten des Trusted Agents an jeder Barriereposition enthält; und als Antwort auf ein Ergebnis der Ausführung für den Trusted Agent Starten des in die sichere Speichereinrichtung geladenen sicheren Kernels durch den bestimmten Prozessor.
  2. Speichermedium, das ein Programm speichert, das so mit einem programmierbaren Computersystem zusammenwirken kann, dass ein Verfahren nach Anspruch 1 ausgeführt wird.
DE102005014462A 2004-06-03 2005-03-30 Verfahren zum Starten eines sicheren Kernels in einem System Expired - Fee Related DE102005014462B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/859,897 US7698552B2 (en) 2004-06-03 2004-06-03 Launching a secure kernel in a multiprocessor system
US10/859,897 2004-06-03

Publications (2)

Publication Number Publication Date
DE102005014462A1 DE102005014462A1 (de) 2005-12-29
DE102005014462B4 true DE102005014462B4 (de) 2013-01-17

Family

ID=33419035

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005014462A Expired - Fee Related DE102005014462B4 (de) 2004-06-03 2005-03-30 Verfahren zum Starten eines sicheren Kernels in einem System

Country Status (6)

Country Link
US (12) US7698552B2 (de)
JP (1) JP4065444B2 (de)
CN (1) CN1704922B (de)
DE (1) DE102005014462B4 (de)
GB (2) GB2429555B (de)
TW (1) TWI276967B (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US8881270B2 (en) 2002-12-20 2014-11-04 Creative Mines Llc Method and apparatus for selectively enabling a microprocessor-based system
US7127566B2 (en) 2003-12-18 2006-10-24 Intel Corporation Synchronizing memory copy operations with memory accesses
US7127567B2 (en) 2003-12-18 2006-10-24 Intel Corporation Performing memory RAS operations over a point-to-point interconnect
US7328368B2 (en) * 2004-03-12 2008-02-05 Intel Corporation Dynamic interconnect width reduction to improve interconnect availability
US7698552B2 (en) * 2004-06-03 2010-04-13 Intel Corporation Launching a secure kernel in a multiprocessor system
US7716494B2 (en) * 2004-07-15 2010-05-11 Sony Corporation Establishing a trusted platform in a digital processing system
US20060015732A1 (en) * 2004-07-15 2006-01-19 Sony Corporation Processing system using internal digital signatures
US7568102B2 (en) 2004-07-15 2009-07-28 Sony Corporation System and method for authorizing the use of stored information in an operating system
US7552326B2 (en) 2004-07-15 2009-06-23 Sony Corporation Use of kernel authorization data to maintain security in a digital processing system
US8254411B2 (en) * 2005-02-10 2012-08-28 International Business Machines Corporation Data processing system, method and interconnect fabric having a flow governor
US7254694B2 (en) * 2005-02-10 2007-08-07 International Business Machines Corporation Processors interconnect fabric with relay broadcasting and accumulation of partial responses
US7779252B2 (en) * 2006-03-21 2010-08-17 Harris Corporation Computer architecture for a handheld electronic device with a shared human-machine interface
US8127145B2 (en) * 2006-03-23 2012-02-28 Harris Corporation Computer architecture for an electronic device providing a secure file system
US8041947B2 (en) * 2006-03-23 2011-10-18 Harris Corporation Computer architecture for an electronic device providing SLS access to MLS file system with trusted loading and protection of program execution memory
US8060744B2 (en) * 2006-03-23 2011-11-15 Harris Corporation Computer architecture for an electronic device providing single-level secure access to multi-level secure file system
US8973094B2 (en) 2006-05-26 2015-03-03 Intel Corporation Execution of a secured environment initialization instruction on a point-to-point interconnect system
US7979714B2 (en) * 2006-06-02 2011-07-12 Harris Corporation Authentication and access control device
US7650469B2 (en) * 2006-09-06 2010-01-19 International Business Machines Corporation Determining whether a non-running processor has access to an address space
US8205024B2 (en) * 2006-11-16 2012-06-19 International Business Machines Corporation Protecting ownership transfer with non-uniform protection windows
US8146150B2 (en) * 2007-12-31 2012-03-27 Intel Corporation Security management in multi-node, multi-processor platforms
US8392985B2 (en) * 2008-12-31 2013-03-05 Intel Corporation Security management in system with secure memory secrets
US9202015B2 (en) * 2009-12-31 2015-12-01 Intel Corporation Entering a secured computing environment using multiple authenticated code modules
US8769373B2 (en) 2010-03-22 2014-07-01 Cleon L. Rogers, JR. Method of identifying and protecting the integrity of a set of source data
WO2012023050A2 (en) 2010-08-20 2012-02-23 Overtis Group Limited Secure cloud computing system and method
EP2801032B1 (de) * 2012-01-04 2020-01-01 Intel Corporation Bimodale funktionalität zwischen kohärenten links und speichererweiterung
US9075751B2 (en) 2012-08-09 2015-07-07 Intel Corporation Secure data protection with improved read-only memory locking during system pre-boot
US9063974B2 (en) * 2012-10-02 2015-06-23 Oracle International Corporation Hardware for table scan acceleration
US9262177B2 (en) 2012-12-19 2016-02-16 International Business Machines Corporation Selection of a primary microprocessor for initialization of a multiprocessor system
US8613090B1 (en) * 2013-02-21 2013-12-17 Atheer, Inc. Method for processing a secure system manager
US8990921B2 (en) 2013-02-21 2015-03-24 Atheer, Inc. Apparatus for processing with a secure system manager
US9250922B2 (en) 2013-02-28 2016-02-02 Qualcomm Incorporated Method and apparatus for prefetching peripheral device drivers for smart phones and other connected devices prior to HLOS boot
US10289853B2 (en) * 2016-03-31 2019-05-14 Microsoft Technology Licensing, Llc Secure driver platform
US10740496B2 (en) 2017-02-13 2020-08-11 Samsung Electronics Co., Ltd. Method and apparatus for operating multi-processor system in electronic device
RU2641226C1 (ru) * 2017-02-13 2018-01-16 Самсунг Электроникс Ко., Лтд. Способ функционирования secureos на многопроцессорных системах в мобильных устройствах
US10606764B1 (en) 2017-10-02 2020-03-31 Northrop Grumman Systems Corporation Fault-tolerant embedded root of trust using lockstep processor cores on an FPGA
US11151254B2 (en) * 2018-09-11 2021-10-19 Amari.Ai Incorporated Secure communications gateway for trusted execution and secure communications
CN112307481B (zh) * 2019-07-26 2023-10-10 杭州海康威视数字技术股份有限公司 一种系统可信启动方法、电子设备及计算机可读存储介质
US11481484B2 (en) * 2020-04-16 2022-10-25 Bank Of America Corporation Virtual environment system for secure execution of program code using cryptographic hashes
US11425123B2 (en) 2020-04-16 2022-08-23 Bank Of America Corporation System for network isolation of affected computing systems using environment hash outputs
US11423160B2 (en) 2020-04-16 2022-08-23 Bank Of America Corporation System for analysis and authorization for use of executable environment data in a computing system using hash outputs
US11528276B2 (en) 2020-04-16 2022-12-13 Bank Of America Corporation System for prevention of unauthorized access using authorized environment hash outputs
US11693940B2 (en) * 2021-06-23 2023-07-04 Intel Corporation Partitioned platform security mechanism

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030188165A1 (en) * 2002-03-29 2003-10-02 Sutton James A. System and method for execution of a secured environment initialization instruction

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4328542A (en) 1979-11-07 1982-05-04 The Boeing Company Secure implementation of transition machine computer
US5418970A (en) * 1986-12-17 1995-05-23 Massachusetts Institute Of Technology Parallel processing system with processor array with processing elements addressing associated memories using host supplied address value and base register content
EP0381645A3 (de) 1989-01-18 1992-08-05 International Business Machines Corporation Übertragungssystem und -verfahren zwischen einer Vielzahl von Prozessoren
US5446856A (en) * 1991-04-29 1995-08-29 Intel Corporation Circuitry and method for addressing global array elements in a distributed memory, multiple processor computer
US5822431A (en) 1996-01-19 1998-10-13 General Instrument Corporation Of Delaware Virtual authentication network for secure processors
US5913921A (en) * 1996-07-12 1999-06-22 Glenayre Electronics, Inc. System for communicating information about nodes configuration by generating advertisements having era values for identifying time reference for which the configuration is operative
US5841870A (en) * 1996-11-12 1998-11-24 Cheyenne Property Trust Dynamic classes of service for an international cryptography framework
US5930500A (en) * 1997-02-11 1999-07-27 Lsi Logic Corporation Parallel processor implementation of net routing
US6289447B1 (en) * 1997-03-24 2001-09-11 Intel Corporation Topology dependent compensation to improve performance of self-compensated components including processors based on physical relationship with other system components
US6009488A (en) 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
GB9818377D0 (en) * 1998-08-21 1998-10-21 Sgs Thomson Microelectronics An integrated circuit with multiple processing cores
CN1173280C (zh) 2000-10-26 2004-10-27 上海奇码数字信息有限公司 具有网络拓扑结构的自适应信息处理系统
US7483398B1 (en) 2001-05-18 2009-01-27 Cisco Technology, Inc. Method and system for detecting ring link provisioning mismatch
US7073059B2 (en) * 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
US6957318B2 (en) * 2001-08-17 2005-10-18 Sun Microsystems, Inc. Method and apparatus for controlling a massively parallel processing environment
US6857030B2 (en) 2001-09-12 2005-02-15 Sun Microsystems, Inc. Methods, system and article of manufacture for pre-fetching descriptors
GB2381427A (en) * 2001-10-27 2003-04-30 Hewlett Packard Co Spanning tree in peer to peer networks
US6745307B2 (en) * 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
US7024555B2 (en) 2001-11-01 2006-04-04 Intel Corporation Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment
US7398389B2 (en) * 2001-12-20 2008-07-08 Coretrace Corporation Kernel-based network security infrastructure
US7631196B2 (en) 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US6986006B2 (en) * 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
US20030233540A1 (en) 2002-06-13 2003-12-18 International Business Machines Corporation System and method for secured delivery of content stream across multiple channels
US20040003321A1 (en) 2002-06-27 2004-01-01 Glew Andrew F. Initialization of protected system
US7121460B1 (en) * 2002-07-16 2006-10-17 Diebold Self-Service Systems Division Of Diebold, Incorporated Automated banking machine component authentication system and method
CN1331318C (zh) 2002-08-19 2007-08-08 上海贝尔有限公司 一种用于通信系统的基于自陷保护与调试装置
US7454749B2 (en) * 2002-11-12 2008-11-18 Engineered Intelligence Corporation Scalable parallel processing on shared memory computers
JP4062441B2 (ja) 2003-07-18 2008-03-19 日本電気株式会社 並列処理システム及び並列処理プログラム
US20050028001A1 (en) 2003-07-29 2005-02-03 Jian Huang Secured software patching and upgrade method for densely deployed networks having spanning-tree topology
US7698552B2 (en) * 2004-06-03 2010-04-13 Intel Corporation Launching a secure kernel in a multiprocessor system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030188165A1 (en) * 2002-03-29 2003-10-02 Sutton James A. System and method for execution of a secured environment initialization instruction

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GONZALEZ-VALENZUELA, S.; LEUNG, V. C. M.: QoS routing for MPLS networks employing mobile agents. In: IEEE Network. ISSN 0890-8044. 2002, Vol. 16, Issue 3, S. 16 - 21. *

Also Published As

Publication number Publication date
US8250364B2 (en) 2012-08-21
US20080155256A1 (en) 2008-06-26
US9507952B2 (en) 2016-11-29
US20150059007A1 (en) 2015-02-26
US20100262823A1 (en) 2010-10-14
JP2005346689A (ja) 2005-12-15
GB2429555A (en) 2007-02-28
GB2414823B (en) 2007-04-11
US20080109638A1 (en) 2008-05-08
US20170098085A1 (en) 2017-04-06
US8464048B2 (en) 2013-06-11
US9779249B2 (en) 2017-10-03
US7725713B2 (en) 2010-05-25
GB2414823A (en) 2005-12-07
GB0620519D0 (en) 2006-11-22
GB0421213D0 (en) 2004-10-27
US9213865B2 (en) 2015-12-15
US20080109636A1 (en) 2008-05-08
US7770005B2 (en) 2010-08-03
TWI276967B (en) 2007-03-21
TW200540640A (en) 2005-12-16
US8874906B2 (en) 2014-10-28
DE102005014462A1 (de) 2005-12-29
US20050273602A1 (en) 2005-12-08
US20120239906A1 (en) 2012-09-20
US7698552B2 (en) 2010-04-13
US7757081B2 (en) 2010-07-13
US20100281255A1 (en) 2010-11-04
US20080109655A1 (en) 2008-05-08
US7774600B2 (en) 2010-08-10
US20160063261A1 (en) 2016-03-03
US8161280B2 (en) 2012-04-17
JP4065444B2 (ja) 2008-03-26
US20130254905A1 (en) 2013-09-26
GB2429555B (en) 2008-08-27
CN1704922B (zh) 2010-05-05
CN1704922A (zh) 2005-12-07

Similar Documents

Publication Publication Date Title
DE102005014462B4 (de) Verfahren zum Starten eines sicheren Kernels in einem System
JP7408725B2 (ja) コンピュータシステムの自動動作管理
DE102011103218A1 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
DE112015005024T5 (de) Öffnen lokaler Anwendungen von Browsern
CN110336810A (zh) 信息分享方法、平台及计算设备
DE102009031126A1 (de) Aktivieren der funktionalen Abhängigkeit in einem Multifunktionsgerät
EP3251012B1 (de) Prüfsystem zur prüfung eines computers eines computersystems in einem prüfnetzwerk
Kopper The Linux Enterprise Cluster: build a highly available cluster with commodity hardware and free software
DE102010054614A1 (de) Eindringen in eine gesicherte EDV-Umgebung unter Verwendung mehrerer authentifizierter Codemodule
DE112008004177T5 (de) System und Verfahren zum Booten eines Computersystems unter Verwendung von Preboot-Daten
CN107193634A (zh) 一种虚拟机的访问方法及装置
WO2015185508A1 (de) Routing-verfahren zur weiterleitung von task-anweisungen zwischen computersystemen, computernetz-infrastruktur sowie computerporgamm-produkt
WO2015185505A1 (de) Verfahren zur verteilung von tasks zwischen computersystemen, computernetz-infrastruktur sowie computerprogramm-produkt
Duan et al. BBB: Make benchmarking blockchains configurable and extensible
WO2007025724A2 (de) Verfahren zur verbesserung der vertrauenswürdigkeit von elektronischen geräten und datenträger dafür
DE102019104399A1 (de) Identifizierung einer computerverarbeitungseinheit
CN114138523A (zh) 异常程序处理方法、系统、终端及存储介质
CN117596050A (zh) 数据访问管控方法、装置及电子设备

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20130418

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