-
Die
vorliegende Erfindung bezieht sich auf eine Anordnung und ein Verfahren,
die Firmwarevorrichtungen sicher aktualisieren. Im Besonderen bezieht
sich die vorliegende Erfindung auf eine Anordnung und ein Verfahren,
die einen Hypervisor verwenden, um eine sichere Umgebung zur Verfügung zu
stellen, um Firmwarevorrichtungen zu aktualisieren.
-
Firmware
ist ein Softwareprogramm oder ein Satz von Anweisungen, die auf
einer Hardwarevorrichtung programmiert sind. Firmware stellt die
Anweisungen zur Verfügung,
die steuern, wie die Vorrichtung mit anderer Computerhardware, einschließlich der
Hauptanordnung, kommuniziert. Firmware wird typischerweise im Flash
ROM (Read Only Memory – schreibgeschützter Datenspeicher)
einer Hardwarevorrichtung abgelegt. Während ROM im Wesentlichen ein "Read Only Memory" ist, ist Flash ROM
eine Art von Flashdatenspeicher, der gelöscht und neu beschrieben werden
kann.
-
Firmware
kann als "halbpermanent" betrachtet werden,
da sie unverändert
bleibt, es sei denn, sie wird durch einen Firmwareaktualisierer
aktualisiert. Es kann sein, dass Firmware von bestimmten Vorrichtungen,
wie zum Beispielen Festplatten und Videokarten dann und wann aktualisiert
werden muss zum Zweck, dass diese korrekt funktionieren (zum Beispiel
auf Grund eines neuen Betriebssystems, das auf dem Rechnersystem
installiert wird). Firmware wird auch aktualisiert, um die Funktionalität von Vorrichtungen
und deren Wirkungsgrad zu verbessern. Zum Beispiel machen Hersteller
von CD- und DVD-Laufwerken oft Firmwareaktualisierungen verfügbar, die
ermöglichen,
dass die Laufwerke schnellere Medien lesen können.
-
Hersteller
haben festgestellt, dass es sowohl billiger als auch flexibler ist,
die Firmware vom Hostrechnersystem zu laden. Als Ergebnis davon
ist eine große
Anzahl der gegenwärtigen
Hardware außerstande,
auf irgendeine nützliche
Weise zu funktionieren, bis der Hostcomputer sie mit der erforderlichen Firmware
ausgestattet hat. Diese Firmwarelast wird durch den Vorrichtungstreiber
gehandhabt.
-
In
gewisser Hinsicht ist Firmware genauso eine Softwarekomponente einer
aktiven Anordnung wie das Betriebssystem. Bei traditionellen Rechnersystemen
ist jedoch im Gegensatz zu den meisten modernen Betriebssystemen
ein Mangel an einem guten entwickelten Mechanismus für das Aktualisieren
der Firmware problematisch, um Programmfehler zu korrigieren und
Probleme der Funktionalität
anzugehen, die festgestellt werden, nachdem die Einheit ausgeliefert
wurde.
-
Eine
weitere Herausforderung, der sich traditionelle Firmwareaktualisierungen
gegenüber
sehen, ist, dass Mechanismen für
das Feststellen von Firmwareversionen und das Aktualisieren von
diesen nicht standardisiert sind. Als Ergebnis neigen diese Vorrichtungen
dazu, einen bedeutend höheren
Prozentsatz von firmwareabhängigen
Problemen der Funktionalität
aufzuweisen, als im Vergleich mit anderen Teilen eines modernen
Rechnersystems.
-
Herausforderungen
bezüglich
der Aktualisierung der Firmware werden durch die Erhöhung der Komplexität in modernen
Rechnersystemen verschärft.
Moderne Rechnersysteme können
mehr als ein Betriebssystem aufweisen, die zu einem gegebenen Zeitpunkt
auf der Anordnung ablaufen. Außerdem
ist eine wachsende Anzahl von Programmen bösartig, wie zum Beispiel Softwareviren.
Diese bösartigen
Anwendungen haben in den meisten traditionellen Anordnungen das
Potential dazu, die Firmware einer Vorrichtung zu aktualisieren
oder sogar zu löschen.
Diese Herausforderungen sind in großen Organisationen, die stabile
Anordnungen mit Standardsoftware einschließlich Vorrichtungstreibern
benötigen,
die vom Helpdesk der Organisationen nachverfolgt und verwaltet werden
können,
noch offensichtlicher.
-
Es
ist festgestellt worden, dass die oben genannten Herausforderungen
gelöst
werden unter Verwendung einer Anordnung, eines Verfahren und eines
Computerprogrammprodukts, die eine Firmwareaktualisierung an einem
Rechnersystem empfangen und verarbeiten. Das Rechnersystem führt einen
Hypervisor und ein oder mehrere Gastbetriebssysteme aus, und die
Firmwareaktualisierung bezieht sich auf eine durch das Rechnersystem
zugängliche Hardwarevorrichtung.
Die Hardwarevorrichtung ist von einem Typ, der mit Hilfe einer aktualisierbaren Firmware
programmiert wird. Der Hypervisor, der im Rechnersystem wirksam
wird, verarbeitet die empfangene Firmwareaktualisierung, in dem
er zuerst die Verwendung der Vorrichtung durch jedes der Gastbetriebssysteme
sperrt. Nachdem die Gastbetriebssysteme daran gehindert worden sind,
die Vorrichtung zu verwenden, wird die Firmware in der Vorrichtung
unter Verwendung der empfangenen Firmwareaktualisierung durch den
Hypervisor nachgerüstet.
Nachdem der Upgrade (die Aufrüstung)
der Firmware durchgeführt
worden ist, wird die Verwendung der Vorrichtung für jedes
Gastbetriebssystem zugelassen.
-
In
einer Ausführungsform
wird die Firmwareaktualisierung vor dem Upgrade der Firmware validiert.
In dieser Ausführungsform wird
das Ausführen des
Upgrades nur als Reaktion auf eine erfolgreiche Validierung der
Firmwareaktualisierung ausgeführt.
-
In
einer weiteren Ausführungsform
der Validierung beinhaltet die Validierung, ein Kennwort vom Anwender
des Rechnersystems zu erhalten, das verwendet wird, um Firmwareaktualisierungen
zu steuern. Das vom Anwender zur Verfügung gestellte Kennwort wird
mit einem erwarteten Kennwort verglichen. In dieser Ausführungsform
wird das Ausführen des
Upgrades nur durchgeführt,
wenn das empfangene Kennwort mit dem erwarteten Kennwort übereinstimmt.
-
In
einer weitern Ausführungsform
der Validierung wird eine mit der empfangenen Firmwareaktualisierung
mitgelieferte digitale Signatur analysiert. In dieser Ausführungsform
wird das Ausführen
des Upgrades nur ausgeführt
nach dem Verifizieren, dass die empfangene Firmwareaktualisierung
digital von einem autorisierten Anwender signiert worden ist. Zum
Beispiel signiert (verschlüsselt)
ein autorisierter Anwender unter Verwendung asymmetrischer Schlüssel die
Firmwareaktualisierung digital unter Verwendung des privaten Schlüssels des
autorisierten Anwenders. Der Hypervisor überprüft die digitale Signatur durch
Entschlüsseln
der signierten Firmwareaktualisierung unter Verwendung des öffentlichen
Schlüssels
des autorisierten Anwenders.
-
In
einer noch weiteren Ausführungsform
der Validierung, führt
der Hypervisor einen Hashalgorithmus gegen die empfangene Firmwareaktualisierung aus,
die zu einem Hashwert führt.
Der Hashwert wird mit einem erwarteten Hashwert verglichen. In dieser Ausführungsform
wird die Firmwareaktualisierung zurückgewiesen als Reaktion auf
den Hashwert, der nicht mit dem erwarteten Hashwert übereinstimmt, und
die Firmwareaktualisie rung wird als Reaktion auf den Hashwert akzeptiert,
der mit dem erwarteten Hashwert übereinstimmt.
Ein Systemadministrator kann zum Beispiel erwartete Hashwerte für Firmwareaktualisierungen
bereitstellen. Das Rechnersystem kann dann eine Firmwareaktualisierung
von einer öffentlichen
Quelle, wie zum Beispiel einer über das
Internet zugänglichen
Website herunterladen. Der Hypervisor stellt durch Ausführen des
Hashalgorithmus gegen die herunter geladene Firmwareaktualisierung
sicher, dass die Firmwareaktualisierung gültig ist. Wenn der Hashwert
nicht mit dem erwarteten Hashwert übereinstimmt und möglicherweise eine
verfälschte
Firmwareaktualisierung anzeigt, die böswilligen Code enthält, weist
der Hypervisor die Firmwareaktualisierung zurück.
-
In
einer Ausführungsform
trennt der Hypervisor, um die Verwendung der Vorrichtung zu sperren, die
aktualisiert wird, die Vorrichtung von jedem der Gastbetriebssysteme.
Der Hypervisor setzt dann jedes der Gastbetriebssysteme vorübergehend
aus. Nachdem die Firmware der Vorrichtung einem Upgrade unterzogen
worden ist, lässt
der Hypervisor die Verwendung der Vorrichtung dadurch zu, dass der Betrieb
jedes der Gastbetriebssysteme wieder aufgenommen wird und die Vorrichtung
mit jedem der Gastbetriebssysteme verbunden wird, nachdem der Betrieb
der Gastbetriebssysteme wieder aufgenommen wurde.
-
In
einer Ausführungsform
puffert der Hypervisor, um die Verwendung der Vorrichtung zu sperren,
die aktualisiert wird, Anfragen von den Gastbetriebssystemen in
einem Pufferspeicher. Nachdem die Firmware der Vorrichtung einem
Upgrade unterzogen worden ist, lässt
der Hypervisor die Verwendung der Vorrichtung zu, in dem er die
zwischengespeicherten Anfragen zur Vorrichtung zu sendet.
-
Das
Vorangehende ist eine Zusammenfassung und enthält daher notwendigerweise Vereinfachungen,
Verallgemeinerungen und das Auslassen von Details; als Folge davon
wird der Fachmann erkennen, dass die Zusammenfassung nur veranschaulichend
ist, und nicht beabsichtigt ist, in irgendeiner Weise einschränkend zu
sein. Andere Aspekte, erfinderische Merkmale und Vorteile der vorliegenden
Erfindung, wie einzig durch die Ansprüche definiert, werden offensichtlich
aus der nicht einschränkenden
detaillierten Beschreibung, die nachfolgend ausgeführt wird.
-
Die
vorliegende Erfindung kann besser verstanden werden und ihre zahlreiche
Ziele, Merkmale und Vorteile können
jenen, die in der Technik ausgebildet sind, klar gemacht werden
durch Bezugnahme auf die begleitenden Zeichnungen, wobei:
-
1 ein
Diagramm auf höherer
Ebene ist, das ausgewählte
Rechnerkomponenten zeigt, die unter Verwendung eines Hypervisor
bei der Aktualisierung der Firmware von Anordnungen verwendet wird;
-
2 ein
Ablaufdiagramm auf höherer
Ebene ist, das die Schritte zeigt, die ergriffen werden, um die
Firmware von Anordnungen unter Verwendung eines Hypervisor zu aktualisieren;
-
3 ein
Ablaufdiagramm ist, das die Schritte zeigt, die ergriffen werden,
um Firmwareaktualisierungssoftware zu validieren;
-
4 ein
Ablaufdiagramm ist, das Schritte zeigt, die vom Hypervisor ergriffen
werden, um das Rechnersystem auf eine Firmwareaktualisierung vorzubereiten;
-
5 ein
Ablaufdiagramm ist, das weitere Schritte zeigt, die vom Hypervisor
ergriffen werden, um die Firmwareaktualisierung zu initialisieren
und diese für
das (die) Gastbetriebssystem(e) verfügbar zu machen; und
-
6 ein
Blockdiagramm einer Datenverarbeitungsanlage ist, in der die hierin
beschriebenen Verfahren ausgeführt
werden können.
-
Das
Folgende beabsichtigt eine detaillierte Beschreibung eines Beispiels
für die
Erfindung zur Verfügung
zu stellen und sollte nicht als die Erfindung selbst eingrenzend
verstanden werden. Vielmehr kann eine beliebige Anzahl von Variationen
innerhalb des Schutzumfangs der Erfindung fallen, die in den Ansprüchen definiert
ist, die der Beschreibung folgen.
-
1 ist
ein Diagramm auf höherer
Ebene, das ausgewählte
Computerkomponenten zeigt, die dabei verwendet werden, unter Verwendung
eines Hypervisor Firmware der Vorrichtung zu aktualisieren. Ausgewählte Rechnersystemkomponenten 100 umfassen
einen Hypervisor 110, auf dem ein oder mehrere Gastbetriebssysteme
wirksam werden. In der gezeigten Ausführungsform werden zwei Gastbetriebssysteme
unter der Steuerung des Hypervisors 110 wirksam. Beispiele
für Gastbetriebssysteme umfassen
das LinuxTM Betriebssystem 120 und
ein Microsoft WindowsTM Betriebssystem 130 (wie
zum Beispiel Windows XPTM, Windows VistaTM, usw.).
-
Firmwareaktualisierungsquellen 140 umfassen
jede verfügbare
Quelle für
die Firmwareaktualisierung die für
das Rechnersystem zugänglich
ist und die verwendet wird, um die Firmware einer Vorrichtung einem
Upgrade zu unterziehen. Beispiele für Firmwareaktualisierungsquellen
umfassen Disketten, CD-RUMs und Dateien, die von Computernetzwerken 150,
wie zum Beispiel dem Internet oder einem Local Area Network (LAN)
zugänglich
sind. Aus Netzwerken zugängliche
Dateien umfassen Firmwareaktualisierungen, die von einer Website
im Internet oder aus Dateien zugänglich
sind, die von einem von einem LAN, wie zum Beispiel einem von einer Organisation
für seine
Angestellten zur Verfügung gestellten
LAN, zugänglichen
gemeinsamen Netzwerklaufwerk zugänglich
sind. Firmwareaktualisierungen sind häufig von der Website eines
Herstellers verfügbar,
um Funktionalität
der Vorrichtungen des Herstellers zu verbessern oder zur Verfügung zu
stellen. Die hierin gezeigte Verarbeitung kann verwendet werden,
um sicherzustellen, dass die auf Computernetzwerken 150 gefundenen
Firmwareaktualisierungen legitime Aktualisierungen sind (das heißt zugelassene),
und kann verwendet werden, um die Installation von verfälschten
Firmwareaktualisierungen zu verhindern, die böswilligen Code enthalten können, der
dazu entworfen wurden, den Betrieb des Rechnersystems zu beschädigen oder
zu unterbrechen.
-
Im
gezeigten Beispiel umfasst das ausgewählte Rechnersystem 100 zwei
Vorrichtungen (180 und 190), die vom Rechnersystem
aus zugänglich sind,
die jede zum Upgrade geeignete Firmware aufweisen, die ihren Betrieb
steuern. Beispiele für
solche Vorrichtungen umfassen Laufwerksteuerungen und Videoadapter.
Hersteller dieser Vorrichtungen liefern oft Firmwareaktualisierungen,
die auf der Firmware der Vorrichtung installiert werden. Die Firmwareaktualisierungen
umfassen die Software, die verwendet wird, um den Betrieb der Vorrichtung
zu steuern. In einigen Fällen
werden Vorrichtungen ausgeliefert, ohne dass Software auf der Firmware
der Vorrichtung installiert ist. In diesen Fällen umfasst die Firmwareaktualisierung
die initiale Firmware (Software), die in die Firmware der Vorrichtung
gela den wird, um die Funktionalität der Vorrichtung zur Verfügung zu
stellen. Während
einige Firmwareaktualisierungen auf eine bestimmte Vorrichtung beschränkt sind,
sind andere Firmwareaktualisierungen "generisch" und können auf eine große Vielzahl
von Vorrichtungen angewandt werden. Eine generische Videoadapterfirmware
kann zum Beispiel auf eine große
Vielzahl von Videoadaptern angewandt werden, um die Grundfunktionalität des Videoadapters
zur Verfügung zu
stellen. Generische oder grundlegende Firmwareaktualisierungen sind
oft in das Betriebssystem einbezogen und werden verwendet, um Vorrichtungen zu
initialisieren, wenn das Betriebssystem zum ersten Mal eingerichtet
wird.
-
2 ist
ein Ablaufdiagramm auf höherer Ebene,
das die Schritte zeigt, die ergriffen werden, um Firmware einer
Vorrichtung unter Verwendung eines Hypervisor zu aktualisieren.
Die Verarbeitung beginnt bei 200, woraufhin bei Schritt 210 der
Anwender des Rechnersystems eine Firmwareaktualisierung auswählt, die
in einer Vorrichtung zu installieren ist, die dem Rechnersystem
des Anwenders zugänglich ist.
Eine Feststellung wird ausgeführt,
ob die Firmware auf dem Rechnersystem geschützt ist (Entscheidung 220).
Wenn die Firmware auf dem Rechnersystem geschützt ist, dann verzweigt die
Entscheidung 220 zum "Ja" Zweig 225,
woraufhin in dem vordefinierten Verfahren 230 die Integrität der Firmwareaktualisierung
unter Verwendung von einem oder mehren von einer Vielzahl von unterschiedlichen
Validierungsverfahren validiert wird (siehe 3 und den
entsprechenden Text zu den Verarbeitungsdetails). Nachdem die Validierung
ausgeführt worden
ist, wird eine Feststellung ausgeführt, ob die Firmwareaktualisierung
gültig
ist (Entscheidung 240). Wenn die Firmwareaktualisierung
nicht gültig
ist, dann verzweigt die Entscheidung 240 zum "Nein" Zweig 248,
woraufhin die Verarbeitung bei 295 endet, ohne die Firmware
der Vorrichtung zu aktualisieren. Andernfalls verzweigt die Entscheidung 240 dann, wenn
die Aktualisierung gültig
ist, zum "Ja" Zweig 244,
um das Firmwareaktualisierungsverfahren fortzuführen. Zur Entscheidung 220 zurückkehrend,
verzweigt die Entscheidung 220, wenn die Firmware nicht
geschützt
ist, dann zum "Nein" Zweig 246 und umgeht
die Validierungsschritte 230 und 240.
-
Die
Verarbeitung der Firmwareaktualisierung fährt fort durch Vorbereiten
des Rechnersystems auf die Firmwareaktualisierung (vordefiniertes
Verfahren 250, siehe 4 und den
entsprechenden Text für die
Verarbeitungsdetails). Das Vorbereiten des Rechnersystems auf die
Firmwareaktualisierung beinhaltet, die Gastbetriebssysteme daran
zu hindern, die Vorrichtung zu verwenden, die aktualisiert wird,
bis die Aktualisierung vollständig
ist. Nachdem das Rechnersystem bereit ist, die Firmwa reaktualisierung
bei Schritt 260 zu akzeptieren, wird die Firmware der Vorrichtung
mit Hilfe des Firmwareaktualisierungscodes nachgerüstet. Nachdem
die Firmware der Vorrichtung durch das vordefinierte Verfahren 270 nachgerüstet worden
ist, wird die Aktualisierung auf dem Rechnersystem initialisiert
(siehe 5 und den entsprechenden Text für die Verarbeitungsdetails).
Die Initialisierung der Aktualisierung beinhaltet, den Gastbetriebssystemen
zu erlauben, die Vorrichtung zu verwenden. Die Aktualisierung der
Firmware der Vorrichtung durch den Hypervisor endet dann bei 295.
-
3 ist
ein Ablaufdiagramm, das die Schritte zeigt, die ergriffen werden,
um die Softwareintegrität
der Firmwareaktualisierung zu validieren. Diese Routine wird von
dem in 2 gezeigten vordefinierten Verfahren 230 aufgerufen.
In 3 beginnt die Validierung der Firmwareaktualisierung
bei 300, woraufhin eine Feststellung durchgeführt wird,
ob ein Kennwort verwendet wird, um die Aktualisierung der Firmware
einer vom Rechnersystem zugänglichen Vorrichtung
zu steuern (Entscheidung 305). In einer Organisation kann
zum Beispiel ein Systemadministrator dafür verantwortlich sein, die
Firmware einer Vorrichtung zu aktualisieren. In solch einer Organisation
würde ein
Anwender ein Kennwort zuliefern müssen, um die Firmware einer
Vorrichtung zu aktualisieren. Wenn das Kennwort, das benötigt wird,
um die Firmware einer Vorrichtung zu aktualisieren, nicht zugeliefert
wird, erlaubt der Hypervisor nicht, dass der Anwender die Firmware
aktualisiert. Wenn ein Kennwort verwendet wird, um Aktualisierungen
der Firmware einer Vorrichtung zu steuern, dann verzweigt die Entscheidung 305 zum "Ja" Zweig 308,
woraufhin bei Schritt 310 der Anwender zu einem Kennwort
aufgefordert wird, das verwendet wird (autorisiert ist), um die
Firmware einer Vorrichtung zu aktualisieren. Bei Schritt 315 vergleicht
der Hypervisor das Kennwort, das vom Anwender geliefert wurde, mit
einem abgespeicherten autorisierten Kennwort. Eine Feststellung
darüber
wird ausgeführt,
ob das vom Anwender bereitgestellte Kennwort mit einem Kennwort übereinstimmt,
das verwendet wird, um die Aktualisierungen der Firmware zu steuern
(Entscheidung 320). Wenn das vom Anwender zur Verfügung gestellte
Kennwort nicht mit einem autorisierten Kennwort übereinstimmt, das verwendet
wird, um die Aktualisierungen der Firmware zu steuern, dann verzweigt
die Entscheidung 320 zum "Nein" Zweig 322, woraufhin
die Verarbeitung zur aufrufenden Routine bei 325 zurückkehrt
mit einem Rückkehrcode,
der anzeigt, dass die Aktualisierung ungültig ist (siehe Entscheidung 240 gemäß 2 für die von
der aufrufenden Routine bei Empfang des Rückkehrcodes ausgeführte Verarbeitung).
Auf der anderen Seite, wenn das vom Anwender zur Verfügung gestellte
Kennwort mit einem Kennwort überein stimmt,
das verwendet wird, um Aktualisierungen der Firmware der Vorrichtung
zu steuern, verzweigt die Entscheidung 320 dann zum "Ja" Zweig 326,
um fortzufahren, die Integrität
der Firmwareaktualisierung zu validieren. Zu Entscheidung 305 zurückkehrend
verzweigt die Entscheidung 305, wenn kein Kennwort erforderlich
ist, um die Firmware der Vorrichtung zu aktualisieren, dann zum "Nein" Zweig 328,
der die Schritte 310 bis 325 umgeht.
-
Es
wird eine Feststellung durchgeführt,
ob eine digitale Signatur verwendet wird, um die Firmwareaktualisierung
zu validieren (Entscheidung 330). Wenn digitale Signaturen
verwendet werden, dann werden freigegebene Firmwareaktualisierungen
von einem autorisierten Anwender, wie zum Beispiel einem Administrator,
digital signiert. Ein Weg, die Firmwareaktualisierungen digital
zu signieren, besteht in der Verwendung asymmetrischer Schlüssel, wobei der
autorisierte Anwender die Firmwareaktualisierung mit Hilfe eines
privaten Schlüssels
digital signiert, um die Firmwareaktualisierung zu verschlüsseln. Die
digital signierte (verschlüsselte)
Firmwareaktualisierung kann mit Hilfe des öffentlichen Schlüssels des
autorisierten Anwenders entschlüsselt
werden. Wenn digitale Signaturen verwendet werden, dann verzweigt
die Entscheidung 330 zum "Ja" Zweig 332,
woraufhin der Hypervisor bei Schritt 335 versucht, die
Firmwareaktualisierung unter Verwendung eines öffentlichen Schlüssels zu
entschlüsseln, der
dem autorisierten Anwender (zum Beispiel einem Systemadministrator)
zugeordnet ist. Eine Feststellung darüber wird durchgeführt, ob
die digitale Signatur gültig
ist (Entscheidung 340), basierend darauf, ob der öffentliche
Schlüssel
in der Lage war, die Firmwareaktualisierung zu entschlüsseln, die
mit Hilfe des privaten Schlüssels
des autorisierten Anwenders verschlüsselt wurde. Wenn die di gitale
Signatur nicht verifiziert wird, dann verzweigt die Entscheidung 340 zum "Nein" Zweig 342,
woraufhin die Verarbeitung zur aufrufenden Routine bei 345 zurückkehrt
mit einem Rückkehrcode,
der anzeigt, dass die Aktualisierung ungültig ist (siehe Entscheidung 240 gemäß 2 für die von
der aufrufenden Routine bei Empfang des Rückkehrcodes ausgeführte Verarbeitung). Andernfalls
verzweigt die Entscheidung 340, wenn die digitale Signatur
verifiziert wird, dann zum "Ja" Zweig 346,
um fortzufahren, die Integrität
der Firmwareaktualisierung zu validieren. Zu Entscheidung 330 zurückkehrend,
verzweigt die Entscheidung 330, wenn keine digitale Signatur
verwendet wird, um die Firmwareaktualisierung zu validieren, dann
zum „Nein" Zweig 348 und
umgeht die Schritte 335 bis 345.
-
Eine
Feststellung darüber
wird durchgeführt, ob
die Firmwareaktualisierung mit Hilfe einer Hashtabelle gesteuert
wird (Entscheidung 350). Die Verwendung einer Hashtabelle
erlaubt Systemadministratoren, eine Liste von erwarteten Hashwerten
zur Verfügung
zu stellen, die verschiedenen Firmwareaktualisierungen zugehörig sind.
Auf diese Weise kann die tatsächliche
Firmwareaktualisierung aus einer im Internet zugänglichen öffentlichen Website abgerufen werden,
wobei die Sicherheit der Website unbekannt ist. Wenn die Firmwareaktualisierungen
mit Hilfe einer Hashtabelle gesteuert werden, dann verzweigt die
Entscheidung 350 zum "Ja" Zweig 355,
woraufhin der Hypervisor bei Schritt 360 einen Hashalgorithmus
gegen die Firmwareaktualisierung ausführt, die vom Anwender herunter
geladen wurde. Die Ausführung
des Hashalgorithmus führt
zu einem Hashwert. Bei Schritt 365 vergleicht der Hypervisor
den Hashwert, der sich aus dem Hashalgorithmus ergab, mit einem
erwarteten Hashwert durch Abrufen des erwarteten Hashwerts aus der
Vergleichstabelle 370, die eine Liste von erwarteten Hashwerten umfasst, die
verschiedenen freigegebenen Firmwareaktualisierungen entsprechen.
Die Vergleichstabelle 370 beinhaltet das Identifizieren
von Information über
die Firmwareaktualisierungen, wie zum Beispiel des Dateinamens der
Firmwareaktualisierung zusammen mit dem erwarteten Hashwert, wenn
der Hashalgorithmus gegen die vorgegebene Firmwareaktualisierungsdatei
ausgeführt
wird. Wenn die Firmwareaktualisierungsdatei verfälscht, geändert oder anderweitig kompromittiert
worden ist, stimmt der Hashwert nicht mit dem erwarteten Hashwert überein.
Eine Feststellung darüber
wird durchgeführt,
ob der Hashwert, der sich aus dem Hashalgorithmus ergibt, mit dem
erwarteten Hashwert übereinstimmt
(Entscheidung 375). Wenn der Hashwert, der sich aus dem Hashalgorithmus
ergibt, nicht mit dem erwarteten Hashwert übereinstimmt, dann verzweigt
die Entscheidung 375 zum „Nein" Zweig 378, woraufhin die Verarbeitung
zur aufrufenden Routine bei 380 zurückkehrt mit einem Rückkehrcode,
der anzeigt, dass die Aktualisierung ungültig ist. Andernfalls verzweigt die
Entscheidung 375, wenn der Hashwert, der sich aus dem Hashalgorithmus
ergibt, mit dem erwarteten Hashwert übereinstimmt, dann zum "Ja" Zweig 385, woraufhin
ein Rückkehrcode
an die aufrufende Routine zurückgegeben
wird, der anzeigt, dass die Firmwareaktualisierung validiert worden
ist. Zu Entscheidung 350 zurückkehrend verzweigt die Entscheidung 350,
wenn die Firmwareaktualisierung nicht mit Hilfe einer Hashtabelle
gesteuert wird, dann zum „Nein" Zweig 390,
woraufhin an die aufrufende Routine der Rückkehrcode zurückgegeben
wird, der anzeigt, dass die Firmwareaktualisierung validiert worden
ist. Siehe Entscheidung 240 gemäß 2 für die Verarbeitung,
die bei Empfang des Rückkehrcodes
von der aufrufenden Routine ausgeführt wird.
-
4 ist
ein Ablaufdiagramm, das die Schritte zeigt, die vom Hypervisor ergriffen
werden, um das Rechnersystem auf eine Firmwareaktualisierung vorzubereiten.
Die Verarbeitung beginnt bei 400, woraufhin bei Schritt 410 das
erste Gastbetriebssystem, das unter dem Hypervisor abläuft, aus
der Liste von Gastbetriebssystemen des Hypervisors 420 abgerufen
wird, die unter dem Hypervisor ablaufen. Bei Schritt 425 trennt
der Hypervisor die Vorrichtung vom ausgewählten Betriebssystem. Eine
Feststellung darüber
wird ausgeführt,
ob das Gastbetriebssystem vorübergehend
ausgesetzt wird oder ob vom Gastbetriebssystem an die Vorrichtung
gerichtete Anfragen durch den Hypervisor zwischengespeichert werden (Entscheidung 430).
In einer Ausführungsform
wird jedes der Gastbetriebssysteme auf dieselbe Weise behandelt
(entweder vorübergehend
ausgesetzt, oder die Anfragen werden zwischengespeichert), während in
einer anderen Ausführungsform
jedes Betriebssystem unterschiedlich behandelt werden kann, basierend
auf den Eigenschaften des bestimmten Gastbetriebssystems und der
Vorrichtung, die aktualisiert wird (das heißt, einige Gastbetriebssysteme bewältigen besser,
dass sie vorübergehend
ausgesetzt werden als andere, während
einige Vorrichtungen ziemlich häufig
verwendet werden, wodurch das Zwischenspeichern der verschieden
Anfragen an die Vorrichtung schwieriger gemacht werden). Der Hypervisor
entscheidet, ob er das Gastbetriebssystem vorübergehend aussetzt oder die
Anfragen des Gastbetriebssystems an die Vorrichtung zwischenspeichert.
Wenn das Gastbetriebssystem vorübergehend ausgesetzt
wird, dann verzweigt die Entscheidung 430 zum "Ja" Zweig 445,
woraufhin bei Schritt 450 das ausgewählte Gastbetriebssystem vorübergehend
ausgesetzt wird. Andernfalls verzweigt die Entscheidung 430,
wenn Anfragen vom ausgewählten Gastbetriebssystem
an die Vorrichtung zwischengespeichert werden, dann zum „Nein" Zweig 455,
woraufhin bei Schritt 460 Anfragen vom aus gewählten Gastbetriebssystem
an die Vorrichtung, die aktualisiert wird, vom Hypervisor zwischengespeichert
werden.
-
Eine
Feststellung darüber
wird durchgeführt, ob
es mehrere Gastbetriebssysteme gibt, die unter dem Hypervisor laufen
(Entscheidung 470). Wenn es mehrere Gastbetriebssysteme
gibt, die unter dem Hypervisor ablaufen, dann verzweigt die Entscheidung 470 zum "Ja" Zweig 475,
woraufhin bei Schritt 480 das nächste Gastbetriebssystem aus
der Liste 420 ausgewählt
wird und die Verarbeitung in der Schleife zurückkehrt, um das neu ausgewählte Gastbetriebssystem
daran zu hindern, die Vorrichtung zu verwenden (entweder durch vorübergehendes
Aussetzen des Gastbetriebssystems oder durch Zwischenspeichern von
Anfragen des Gastbetriebssystems an die Vorrichtung). Diese Schleife
fährt fort,
bis alle Gastbetriebssysteme, die unter dem Hypervisor ablaufen,
verarbeitet worden sind, wobei die Entscheidung 470 an
diesem Punkt zum "Nein" Zweig 485 verzweigt.
-
Bei
Schritt 490 stellt der Hypervisor sicher, dass er (der
Hypervisor) die Vorrichtung, die im Begriff ist, eine Firmwareaktualisierung
zu empfangen, nicht verwendet. Bei 495 kehrt die Verarbeitung
zu der aufrufenden Routine zurück
(siehe 2), um die Firmware der Vorrichtung unter Verwendung
der Firmwareaktualisierung, die angewandt wird, aufzurüsten.
-
5 ist
ein Ablaufdiagramm, das weitere Schritte zeigt, die vom Hypervisor
ergriffen werden, um die Firmwareaktualisierung zu initialisieren
und diese für
das (die) Gastbetriebssystem(e) verfügbar zu machen. Die Verarbeitung
beginnt bei 500, woraufhin bei Schritt 510 die
Vorrichtung, die mit neuem Firmwarecode aktualisiert worden ist,
zurückgesetzt wird.
Bei Schritt 520 wählt
der Hypervisor das erste Gastbe triebssystem aus der Liste 420 von
Gastbetriebssystemen des Hypervisors aus, die unter dem Hypervisor
ablaufen.
-
Eine
Feststellung darüber
wird durchgeführt, ob
das ausgewählte
Gastbetriebssystem vorübergehend
ausgesetzt worden ist (Entscheidung 530). Wenn das ausgewählte Gastbetriebssystem
vorübergehend
ausgesetzt worden ist, dann verzweigt die Entscheidung 530 zum "Ja" Zweig 535,
woraufhin bei Schritt 540 der Betrieb des ausgewählten Gastbetriebssystems
wieder aufgenommen wird und bei Schritt 545 die Vorrichtung
wieder mit dem ausgewählten
Gastbetriebssystem verbunden (zum Beispiel "mounted"). Andernfalls verzweigt die Entscheidung 530,
wenn das ausgewählte
Gastbetriebssystem nicht vorübergehend
ausgesetzt wurde, dann zum „Nein" Zweig 550,
woraufhin bei Schritt 555 die Vorrichtung wieder mit dem
ausgewählten
Gastbetriebssystem verbunden wird und bei Schritt 560 Anfragen,
die vom ausgewählten
Gastbetriebssystem an die Vorrichtung gesandt und vom "Hypervisor zwischengespeichert
wurden, verarbeitet werden (das heißt, die zwischengespeicherten
Anfragen werden an die Vorrichtung gesandt, nachdem die Vorrichtung zurückgesetzt
wurde).
-
Eine
Feststellung darüber
wird durchgeführt, ob
es mehrere Gastbetriebssysteme gibt, die unter dem Hypervisor ablaufen
(Entscheidung 570). Wenn es mehrere Gastbetriebssysteme
gibt, die unter dem Hypervisor ablaufen, dann verzweigt die Entscheidung 570 zum "Ja" Zweig 575,
woraufhin bei Schritt 580 das nächste Gastbetriebssystem aus
der Liste 420 ausgewählt
wird, und die Verarbeitung in der Schleife zurückkehrt, um die Verwendung
der Vorrichtung durch das neu ausgewählte Gastbetriebssystem zuzulassen
(entweder durch erneutes Aufnehmen des Betriebs des Gastbetriebssystem
oder durch Verarbeiten von zwischengespeicherten Anfragen). Diese
Schleife fährt
fort, bis alle Gastbetriebssysteme, die unter dem Hypervisor ablaufen,
verarbeitet worden sind, wobei zu diesem Zeitpunkt die Entscheidung 570 zum „Nein" Zweig 485 verzweigt, woraufhin
die Verarbeitung zur aufrufenden Routine bei 495 zurückkehrt
(siehe 2).
-
6 veranschaulicht
die Anordnung zur Informationsverarbeitung 600, die ein
vereinfachtes Beispiel für
ein Rechnersystem ist, das dazu in der Lage ist, die EDV-Operationen
auszuführen,
die hierin beschrieben werden. Die Anordnung zur Informationsverarbeitung 600 umfasst
einen oder mehrere Prozessoren 610, die mit dem Prozessorschnittstellenbus 612 verbunden
sind. Der Prozessorschnittstellenbus 612 verbindet die
Prozessoren 610 mit der Northbridge 615, die auch
als Memory Controller Hub (MCH) bekannt ist. Die Northbridge 615 ist
mit dem Systemdatenspeicher 620 verbunden und stellt ein Mittel
für den
(die) Prozessor(en) 610 zur Verfügung, um auf den Systemdatenspeicher
zuzugreifen. Die Graphiksteuereinheit 625 ist ebenfalls
mit der Northbridge 615 verbunden. In einer Ausführungsform
wird der PCI Express Bus 618 verwendet, um die Northbridge 615 mit
der Graphiksteuereinheit 625 zu verbinden. Die Graphiksteuereinheit 625 ist
mit der Anzeigeeinheit 630, wie zum Beispiel einen Computermonitor,
verbunden.
-
Northbridge 615 und
Southbridge 635 sind unter Verwendung des Bus 618 mit
einander verbunden. In einer Ausführungsform ist der Bus ein
Direct Media Interface (DMI) Bus, der Daten mit hoher Geschwindigkeit
in jeder Richtung zwischen Northbridge 615 und Southbridge 635 überträgt. In einer weiteren
Ausführungsform
wird ein Peripheral Component Interconnect (PCI) Bus verwendet,
um die Northbridge und die Southbridge zu verbinden. Die Southbridge 635,
auch bekannt als der I/O Controller Hub (ICH) ist ein Chip, der
im Wesentlichen Fähigkeiten
ein richtet, die mit langsameren Geschwindigkeiten arbeiten als die
Fähigkeiten,
die von der Nouthbridge zur Verfügung
gestellt werden. Die Southbridge 635 stellt typischerweise
verschiedene Busse zur Verfügung,
die verwendet werden, um verschiedene Komponenten zu verbinden.
Diese Busse können
PCI und PCI Express Busse, einen ISA Bus, einen System Management
Bus (SMBus oder SMB) und einen Low Pin Count (LPC) Bus umfassen.
Der LPC Bus wird häufig
benutzt, um Vorrichtungen mit niedriger Bandbreite, wie zum Beispiel
die Boot ROM und "Legacy" Ein/Ausgabe-Vorrichtungen
zu verbinden (unter Verwendung eines "Super I/O" Chip). Die "Legacy" Ein/Ausgabe-Vorrichtungen (698)
können serielle
und parallele Ports, Tastatur, Maus und Diskettensteuereinheit umfassen.
Der LPC Bus wird auch verwendet, um die Southbridge 635 mit
der Komponente einer vertrauenswürdigen
Plattform (TPC) 695 zu verbinden. Häufig in die Southbridge 635 einbezogene
weitere Komponenten umfassen einen Direct Memory Access (DMA) Controller,
einen Programmable Interrupt Controller (PIC) und eine Speichervorrichtungssteuereinheit,
die die Southbridge 635 unter Verwendung des Bus 684 mit
einer nichtflüchtigen
Speichervorrichtung 685, wie zum Beispiel einem Festplattenlaufwerk,
verbindet.
-
ExpressCard 655 ist
ein Slot, der verwendet wird, um im laufenden Betrieb einsteckbare
Vorrichtungen mit der Anordnung zur Informationsverarbeitung zu
verbinden. Die ExpressCard 655 unterstützt sowohl PCI Express als
auch USB Konnektivität,
da sie unter Verwendung sowohl des Universa Serial Bus (USB) als
auch des PCI Express Bus mit der Southbridge 635 verbunden
wird. Die Southbridge 635 umfasst den USB Controller 640,
der USB Konnektivität
an Vorrichtungen zur Verfügung
stellt, die mit dem USB verbunden sind. Diese Vorrichtungen umfassen
die Webcam (Kamera) 650, den Infrarot-(IR) Empfänger 648,
die Bluetooth Vorrichtung 646, die drahtlose Personal Area
Networks (PANS) zur Verfügung
stellt, Tastatur und Trackpad 644, und verschiedene andere über USB
verbundene Vorrichtungen 642, wie zum Beispiel eine Maus,
tragbare Speichervorrichtungen, Modems, Netzwerkkarten, ISDN Anschlüsse, Faxgeräte, Drucker,
USB Hubs, und viele andere über
USB verbundene Vorrichtungen.
-
Die
drahtlose Local Area Network (LAN) Vorrichtung 675 ist
durch den PCI oder PCI Express Bus 672 mit der Southbridge 635 verbunden.
Die LAN Vorrichtung 675 richtet typischerweise einen der IEEE
802.11 Standards von „über die
Luft" übertragenen
Modulationsverfahren ein, die alle dasselbe Protokoll verwenden,
um drahtlos zwischen der Anordnung zur Informationsverarbeitung 600 und
einem anderen Rechnersystem oder einer anderen Vorrichtung zu kommunizieren.
-
Die
optische Speichervorrichtung 690 ist unter Verwendung eines
Serial ATA (SATA) Bus 688 an die Southbridge 635 angeschlossen.
Serial ATA Adapter und Vorrichtungen kommunizieren über eine serielle
Verbindung hoher Geschwindigkeit. Der Serial ATA Bus wird auch verwendet,
um die Southbridge 635 mit anderen Formen von Speichervorrichtungen, wie
zum Beispiel Festplattenlaufwerken zu verbinden.
-
Eine
Audioschaltung 660, wie zum Beispiel eine Audiokarte, ist über den
Bus 658 an die Southbridge 635 angeschlossen.
Die Audioschaltung 660 wird verwendet, um Funktionalität zur Verfügung zu stellen,
wie zum Beispiel Audio Line-in und optisches digitales Audio in
Port 662, optischen digitalen Ausgang und Kopfhörerbuchse 664,
interne Lautsprecher 666 und internes Mikrophon 668.
-
Die
Ethernet Steuereinheit 670 ist mit der Southbridge 635 unter
Verwendung eines Bus, wie zum Beispiel des PCI oder des PCI Express
Bus verbunden. Die Ethernet Steuereinheit 670 wird verwendet,
um die Anordnung zur Informationsverarbeitung 600 mit einem
Computernetzwerk, wie zum Beispiel einem Local Area Network (LAN),
dem Internet und anderen öffentlichen
und privaten Computernetzwerken zu verbinden.
-
Während 6 eine
Ausführungsform
einer Anordnung zur Informationsverarbeitung zeigt, kann eine Anordnung
zur Informationsverarbeitung viele Formen annehmen. Zum Beispiel
kann eine Anordnung zur Informationsverarbeitung die Form eines Desktops,
eines Servers, eines tragbaren Geräts, eines Laptops, eines Notebooks
oder eines Computers oder einer Datenverarbeitungsanlage eines anderen Formfaktors
annehmen. Außerdem
kann eine Anordnung zur Informationsverarbeitung andere Formfaktoren,
wie zum Beispiel die eines persönlichen
digitalen Assistenten (PDA), einer Glücksspielvorrichtung, einer
ATM Maschine, einer tragbaren Telefonvorrichtung, einer Datenübertragungseinheit
oder anderer Vorrichtungen annehmen, die einen Prozessor und Datenspeicher
umfassen.
-
Eine
der bevorzugten Ausführungsformen der
Erfindung ist eine Clientanwendung, und zwar ein Satz von Anweisungen
(Programmcode) oder ein anderes funktionell beschreibendes Material
in einem Codemodul, das zum Beispiel im Speicher mit wahlfreiem
Zugriff des Computers vorliegend sein kann. Bis durch den Computer
angefordert, kann der Satz von Anweisungen in einem anderen Computerdatenspeicher,
zum Beispiel einem Festplattenlaufwerk oder einem entfernbaren Datenspeicher,
wie zum Beispiel einer optischen Platte (zur letztendlichen Verwendung
in einem CD-ROM) oder einer Diskette (zur letztendlichen Verwendung
in einem Diskettenlaufwerk) gespeichert oder über das In ternet oder ein anderes
Computernetzwerk herunter geladen werden. Auf diese Weise kann die
vorliegende Erfindung als ein Computerprogrammprodukt zu Verwendung in
einem Computer ausgeführt
werden. Außerdem wird,
obwohl die verschiedenen beschriebenen Verfahren in geeigneter Weise
in einem selektiv durch Software aktivierten oder neu konfigurierten,
universell einsetzbaren Computer eingerichtet sind, eine Person
mit gewöhnlichen
Kenntnissen in der Technik auch erkennen, dass solche Verfahren
in Hardware, in Firmware, oder in weiter spezialisierten Vorrichtungen
ausgeführt
werden können,
die eingerichtet sind, um die erforderlichen Schritte des Verfahrens
auszuführen.
Funktionell beschreibendes Material ist Information, die einer Maschine
Funktionalität
mitteilt. Funktionell beschreibendes Material umfasst, aber ist
nicht darauf eingegrenzt, Computerprogramme, Anweisungen, Regeln,
Daten und Definitionen für
berechenbare Funktionen, Objekte und Datenstrukturen.
-
Während bestimmte
Ausführungsformen
der vorliegenden Erfindung gezeigt und beschrieben worden sind,
wird es für
jene, die in der Technik ausgebildet sind, offensichtlich sein,
dass, basierend auf den Lehren hierin, Änderungen und Modifikationen durchgeführt werden
können,
ohne von dieser Erfindung und ihren allgemein gefassten Aspekten
abzuweichen. Deshalb sollen die anhängenden Ansprüche innerhalb
ihres Schutzumfangs alle diese Änderungen
und Modifikationen umfassen, die innerhalb des Geists und des Schutzumfangs
dieser Erfindung gelten. Weiterhin ist zu verstehen, dass die Erfindung einzig
durch die anhängenden
Ansprüche
definiert wird. Es wird von jenen mit Kenntnissen in der Technik
verstanden werden, dass, wenn eine bestimmte Nummer eines eingebrachten
Anspruchselements beabsichtigt wird, solch eine Absicht klar in
dem Anspruch vorgetragen wird, und in Abwesenheit von solch einer
Nennung keine solche Beschränkung vorliegt.
Für ein
nicht einschränkendes
Beispiel enthalten die folgenden angehängten Ansprüche als eine Hilfestellung
zum Verständnis
die Verwendung der einführenden
Begriffe "mindestens
ein" und "ein oder mehrere", um Anspruchselemente
einzubringen. Jedoch sollte die Verwendung von solchen Begriffen
nicht ausgelegt werden, um zu implizieren, dass die Einleitung eines
Anspruchselements durch den unbestimmten Artikel "ein" oder "eine" irgend einen beliebigen
Anspruch, der solch ein eingebrachtes Anspruchselement enthält, eingrenzt
auf Erfindungen, die nur ein solches Element enthalten, auch dann,
wenn der gleiche Anspruch die einführenden Formulierungen "ein oder mehrere" oder "mindestens ein" umfasst und unbestimmte
Artikel, wie zum Beispiel "ein"; das Gleiche gilt
für die
Verwendung von bestimmten Artikeln in den Ansprüchen.