-
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.