-
Hintergrund
-
Ein elektronisches Gerät, wie z. B. ein Computer oder ein anderer Gerätetyp, kann ein Basic Input/Output-System (BIOS) umfassen, das für das Hochfahren des elektronischen Geräts zuständig ist. Während des Hochfahrens initialisiert und konfiguriert das BIOS Komponenten des elektronischen Geräts und lädt ein Betriebssystem in dem elektronischen Gerät. Zusätzlich kann das BIOS auch andere Dienste bereitstellen, wie z. B. einen Energieverwaltungsdienst, einen Wärmeverwaltungsdienst, einen BIOS-Aktualisierungsdienst etc.
-
Kurze Beschreibung der Zeichnungen
-
Einige Ausführungsformen werden in Bezug auf die folgenden Figuren beschrieben:
-
1, 3, 5 und 6 sind Blockdiagramme von Anordnungen gemäß verschiedener Ausführungen; und
-
2 und 4 sind Flussdiagramme von Prozessen gemäß verschiedener Ausführungen.
-
Ausführliche Beschreibung
-
Ein Basic Input/Output-System (BIOS) ist in der Regel der erste Code, der von einem elektronischen Gerät ausgeführt wird, wenn das elektronische Gerät startet. Beispiele für das elektronische Gerät umfassen einen Computer (z. B. Desktop-Computer, Notebook-Computer, Tablet-Computer, Server-Computer etc.), ein Handheld-Gerät (z. B. Personal Digital Assistant, Smartphone etc.), ein elektronischer Apparat, eine Spielkonsole oder einen beliebigen anderen elektrischen Gerätetyp. Das BIOS initialisiert und konfiguriert verschiedene Hardware-Komponenten des elektronischen Geräts und lädt und startet ein Betriebssystem (OS) des elektronischen Geräts. Der Code für das BIOS wird in der Regel auf einem nicht-flüchtigen Speicher, wie z. B. einem Flash-Speichergerät oder einem anderen Typ eines programmierbaren Festwertspeichers (ROM) gespeichert.
-
Das BIOS stellt auch andere Funktionen bereit, die in dem elektronischen Gerät aufgerufen werden können. Viele solcher anderer Funktionen des BIOS werden häufig in dem elektronischen Gerät durch Eintritt in einen System Management Mode (SMM) ausgeführt, welches ein Betriebsmodus ist, in dem die OS-Ausführung ausgesetzt ist. Bei einem elektronischen Gerät mit mehreren Prozessoren oder Prozessorkernen können auch alle bis auf einen der Prozessoren oder Prozessorkerne im SMM inaktiviert sein. Zum Eintritt in den SMM wird ein System Management Interrupt (SMI) durchgesetzt, und ein SMI-Handler (der Teil des BIOS ist) wird ausgeführt, häufig in einem Modus mit relativ hohen Privilegien, um die jeweilige(n) Funktion(en) auszuführen.
-
Beim Eintritt in den SMM zur Ausführung von BIOS-Funktionen können verschiedene Probleme auftreten. Erstens kann der normale Betrieb des elektronischen Geräts nicht fortlaufen, da die OS-Ausführung ausgesetzt ist. Außerdem ist in einem elektronischen Gerät, bei dem ein oder mehrere Prozessor(en) oder Prozessorkern(e) während des SMM inaktiviert sind, ein Teil der Verarbeitungskapazität des elektronischen Geräts vorübergehend deaktiviert, was bedeutet, dass ein solcher Teil der Verarbeitungskapazität zur Ausführung anderer Aufgaben nicht verfügbar ist. Weiter kann es schwierig sein, vorherzusagen, wie lange die SMM-Verarbeitung eventuell dauert, was eine Unsicherheit beim Betrieb des elektronischen Geräts verursachen kann. Weiter sind möglicherweise Statusinformationen für einen Benutzer des elektronischen Geräts nicht verfügbar, da bestimmte BIOS-Funktionen eine relativ lange Zeitspanne bis zum Abschluss benötigen (z. B. in der Größenordnung von Minuten), was in einer für den Benutzer verwirrenden Erfahrung resultieren kann, da der Benutzer nicht in der Lage ist, festzustellen, ob das elektronische Gerät ordnungsgemäß funktioniert oder nicht.
-
Die Sicherheit kann ebenfalls ein Problem darstellen, da Malware während des SMM-Betriebs angreifen kann, was zur Beschädigung des Systems führen kann. Sicherheitsmaßnahmen, die ergriffen werden, um jedwede solcher Angriffe gegen den SMM-Betrieb zu verhindern, können zu erhöhter Komplexität des Designs eines elektronischen Geräts führen. Beispiele für solche Sicherheitsmaßnahmen umfassen das Sperren bestimmter Speicherbereiche, einschließlich Register und/oder eines Teils des nicht-flüchtigen Speichers, wie z. B. eines Flash-Speichergeräts oder eines anderen programmierbaren Festwertspeichertyps, was Schutz gegen unerwünschte oder nicht autorisierte Veränderung des BIOS bieten kann. Diese Sicherheitsmaßnahmen können jedoch zu Einschränkungen der Leistung bestimmter BIOS-Funktionen führen, wie z. B. BIOS-Code-Aktualisierung, so dass solche BIOS-Funktionen nur zu bestimmten Zeiten ausgeführt werden können, wie z. B. beim Systemneustart.
-
Beispiele verschiedener Funktionen, die im SMM häufig ausgeführt werden, können eine beliebige oder eine Kombination der Folgenden umfassen: ein Dienst zur Aktualisierung des BIOS-Codes; ein Dienst, auf eine Einstellung des BIOS zuzugreifen oder diese zu ändern; ein Wärmeverwaltungsdienst zur Ausführung der Wärmeverwaltung (z. B. Steuerung von Kühlgeräten, wie z. B. Lüftern, in dem elektronischen Gerät); ein Energieverwaltungsdienst (Ableiten oder Wiederzuführen von Energie an bestimmte Hardware-Komponenten); ein Dienst zum Wechsel zwischen verschiedenen Energiezuständen des elektronischen Geräts (z. B. Ruhezustand, Schlafmodus, vollständig betriebsbereiter Zustand etc.); ein Dienst zur Prozessaktivierung einer Taste oder einer Tastenfolge (die die Aktivierung einer beliebigen Kombination mehrerer Tasten umfasst) des elektronischen Geräts (z. B. eine Taste zum Ein- oder Ausschalten einer drahtlosen Schnittstellenkomponente, eine Kurzbefehlssequenz zur Ausführung einer beliebigen zuvor definierten Aufgabe etc.); ein mit einem Umgebungslichtsensor des elektronischen Geräts verbundener Dienst (zur Erfassung von Licht in der Umgebung des elektronischen Geräts); ein Dienst zur Änderung einer Einstellung des BIOS; ein Dienst zur Änderung einer Einstellung einer Hardware-Komponente in dem elektronischen Gerät; ein Dienst zur Änderung einer Bootreihenfolge zu bootender Geräte des elektronischen Geräts; ein Dienst zum Handling eines bestimmten Call-Typs zwischen dem OS und dem BIOS (z. B. ein Interrupt 15 Call); ein Dienst zum Ausführen eines Befehls eines Embedded Controller; und ein Dienst zur Unterstützung eines alten Peripheriegeräts (z. B. ein Universal Serial Bus-Gerät) unter einer bestimmten Bedingung.
-
Obwohl oben verschiedene beispielhafte BIOS-Funktionen aufgeführt sind, wird angemerkt, dass andere oder alternative BIOS-Funktionen bei anderen Ausführungen verwendet werden können.
-
Gemäß einiger Ausführungen für robusteres Systemverhalten können Funktionen des BIOS in einer Domain bereitgestellt werden, die es erlaubt, dass die BIOS-Funktionen zugänglich sind, ohne dass das elektronische Gerät in den SMM eintreten muss. Die Domain kann sich außerhalb des elektronischen Geräts befinden, oder die Domäne kann sich in dem elektronischen Gerät befinden. Allgemein kann das BIOS als „BIOS in einer Cloud” betrachtet werden, auch bezeichnet als „BIOS.v”. Die Cloud kann sich entweder in dem elektronischen Gerät oder außerhalb des elektronischen Geräts befinden.
-
Zum Zugriff auf das BIOS in einer Cloud wird eine webbasierte Schnittstelle bereitgestellt. Allgemein kann sich eine „webbasierte Schnittstelle” auf eine Schnittstelle beziehen, die es einem Anfragenden erlaubt, auf eine Ressource unter Verwendung eines Datentransfers zuzugreifen, der über ein Netz, wie z. B. das Internet oder andere Netztypen, gesendet wird. Eine webbasierte Schnittstelle kann eine Modemschnittstelle zum Zugriff auf das BIOS bereitstellen, wobei die Schnittstelle unabhängig oder weniger abhängig von der zugrundeliegenden Plattform sein kann, einschließlich eines Betriebssystems und eines Chipsets (weiter unten diskutiert). 1 ist ein vereinfachtes Blockdiagramm eines elektronischen Geräts 100 gemäß einiger Ausführungen. Das elektronische Gerät 100 umfasst eine anfragende Einheit 102 (z. B. einen Virtual Machine Monitor, eine virtuelle Gastmaschine oder eine beliebige andere Einheit), die eine BIOS-Zugriffsanfrage 104 zustellen kann. Die BIOS-Zugangsanfrage 104 wird an eine webbasierte Schnittstelle 106 zugestellt. Eine Funktion, die die webbasierte Schnittstelle 106 bereitstellt, kann dann die BIOS-Zugriffsanfrage 104 an eine entsprechende BIOS-Funktion 108 in einer Cloud 110 leiten, wobei die Cloud 110 intern in dem elektronischen Gerät 100 oder an einem externen Ort, der über ein Netz zugänglich ist, angesiedelt sein kann. Obwohl sich die folgende Diskussion auf eine „BIOS-Funktion” im Singular bezieht, ist anzumerken, dass sich „BIOS-Funktion” auf eine einzelne BIOS-Funktion oder mehrere BIOS-Funktionen beziehen kann.
-
Ein Virtual Machine Monitor (VMM), auch als Hypervisor bezeichnet, verwaltet durch virtuelle Maschinen das Sharing der physischen Ressourcen, einschließlich der Hardware-Komponenten, des elektronischen Geräts. Der VMM virtualisiert die physischen Ressourcen. Jede virtuelle Maschine besitzt zugehörige virtualisierte physische Ressourcen, die durch den VMM verwaltet werden. Der VMM verarbeitet Anfragen für physische Ressourcen.
-
Eine „virtuelle Maschine” (auch als „virtuelle Appliance” oder „virtuelle Partition” bezeichnet) betrifft ein(e) beliebige(s) Partition oder Segment einer physischen Maschine (des elektronischen Geräts), die dazu bereitgestellt ist, eine physische Maschine zu virtualisieren oder emulieren. Aus Sicht eines Benutzers oder einer Anwendung sieht eine virtuelle Maschine wie eine physische Maschine aus. Eine virtuelle Maschine umfasst ein Betriebssystem (bezeichnet als ein Gastbetriebssystem) und mindestens ein Anwendungsprogramm. Eine „virtuelle Gastmaschine” kann eine virtuelle Maschine bezeichnen, die ein Gastbetriebssystem und eine Anwendung umfasst. Eine virtuelle Gastmaschine unterscheidet sich von einer Domain 0, die oft die erste Domain (oder virtuelle Maschine) ist, die von einem Virtual Machine Monitor gestartet wird.
-
Die webbasierte Schnittstelle 106 kann z. B. eine Webservice-Schnittstelle sein. Ein Webservice betrifft einen Mechanismus, der dazu ausgelegt ist, eine dialogfähige M2M-Interaktion über ein Netz zu unterstützen. Es ist zu beachten, dass bei einigen Ausführungen die Webservice-Schnittstelle auch eine Interaktion zwischen Einheiten in dem elektronischen Gerät 100 erlauben kann. Die Webservice-Schnittstelle kann gemäß eines Formats durch eine Web Services Description Language (WSDL) beschrieben werden, wie durch das World Wide Web Consortium (W3C) definiert. Alternativ dazu kann die Webservice-Schnittstelle einem Simple Object Access Protocol (SOAP) (ebenfalls definiert durch das W3C) entsprechen, das ein Protokoll zum Austausch strukturierter Informationen bei der Ausführung von Webservices über Netze ist.
-
Als noch eine weitere Alternative kann die webbasierte Schnittstelle 106 einer Representational State Transfer(REST)-Architektur entsprechen, die Clients und Server umfasst, wobei Clients Anfragen an Server zustellen können und Server Antworten an Clients bereitstellen können. Anfragen und Antworten sind um die Übertragung von Darstellungen von Ressourcen aufgebaut. Eine Ressource kann ein beliebiges kohärentes und sinnvolles Konzept sein, das angesprochen werden kann. Eine Darstellung einer Ressource ist typischerweise ein Dokument, das den aktuellen oder den angestrebten Zustand einer Ressource einfängt. In der REST-Architektur kann bei einigen Beispielen eine Anfrage, die von einem Client zugestellt wird, eine Hypertext Transfer Protocol (HTTP) Get-Anfrage sein. Der Server kann auf die HTTP Get-Anfrage eine HTTP-Antwort bereitstellen. Es ist zu beachten, dass Client und Server über ein Netz gekoppelt sein können, oder alternativ, dass sich Client und Server in dem elektronischen Gerät 100 befinden können.
-
In der webbasierten Schnittstelle 106 kann auf eine Ressource (z. B. eine interne BIOS-Funktion oder eine externe BIOS-Funktion) durch Ausgabe einer BIOS-Zugriffsanfrage zugegriffen werden, die eine Adresse der angeforderten Ressource enthält. Die Adresse kann eine Webadresse, wie z. B. ein Uniform Resource Locator (URL), eine Internet Protocol (IP)-Adresse oder eine beliebige andere Adresse sein, die die angeforderte Ressource eindeutig identifizieren kann.
-
Als Reaktion auf die BIOS-Zugriffsanfrage, die die an der webbasierten Schnittstelle 106 empfangene Adresse enthält, kann die Anfrage an eine geeignete der internen und externen BIOS-Funktionen geleitet werden. In einigen Fällen kann die Anfrage sowohl an die internen als auch an die externen BIOS-Funktionen geleitet werden.
-
Die Bereitstellung einer BIOS-Funktion an einem externen Ort kann bestimmte Vorteile bieten. So kann z. B. ein Service-Provider, der mit einem externen Server-Computer verbunden ist, automatische Prüfungen von BIOS-Aktualisierungen ausführen, ohne Client-Geräte, wie z. B. das elektronische Gerät 100, einzubeziehen. Der Service-Provider kann auch das Wiederherstellen einer früheren BIOS-Version kontrollieren, wie z. B. beim Erkennen eines Fehlers oder einer Beschädigung. Es kann weitere Dienste in Bezug auf das BIOS geben, die am externen Server-Computer auf leistungsfähigere und wirksamere Weise ausgeführt werden können.
-
Ein weiterer Vorteil, eine webbasierte Schnittstelle bereitzustellen, ist es, dass eine geringere Abhängigkeit von der speziellen Chipset- oder Betriebssystem-Architektur für Kommunikationen betreffend des Zugriffs auf die BIOS-Funktionalität möglich ist. Bei einigen Systemen z. B., die ein WINDOWS®-Betriebssystem von Microsoft verwenden, kann ein WMI(Windows Management Instrumentation)-Mechanismus, welches eine Ausführung von WBEM (Web Based Enterprise Management) ist, für den Zugriff auf BIOS-Funktionen von dem Betriebssystem aus verwendet werden. Eine Unterstützung von WMI ist aber möglicherweise nicht verfügbar oder in anderen Betriebsumgebungen selten, wie z. B. Umgebungen, die Linux oder andere Betriebssysteme verwenden. Als weitere Beispiele können bestimmte Unterbrechungsmechanismen, wie z. B. int15 oder int1A, mit bestimmten Typen von Chipsets verwendet werden. Das Verwenden einer offeneren Schnittstelle, wie z. B. einer webbasierten Schnittstelle gemäß einiger Ausführungen, vermindert die Abhängigkeit von bestimmten Chipset- und Betriebssystem-Architekturen. Des Weiteren kann das Befehlsformat für den Zugriff auf BIOS-Funktionen unter Verwendung von WMI oder anderen oben genannten Schemata veraltet und unflexibel sein. Eine webbasierte Schnittstelle erlaubt die Verwendung von Befehlen gemäß weiter verbreiteter Standards, wie z. B. XML (Extensible Markup Language) oder anderer Standards, für Kommunikationen zum Aufrufen der BIOS-Funktionalität, die offenere und ausbaufähigere Befehlsformate ermöglichen kann und die die Verwendung standardbasierter Validierungsmechanismen (z. B. XML-basierte Validierungsmechanismen) erlauben kann.
-
2 ist ein Flussdiagramm eines Prozesses gemäß einiger Ausführungen. Der Prozess kann von dem elektronischen Gerät 100 ausgeführt werden. Der Prozess empfängt (bei 202) eine Zugriffsanfrage auf eine BIOS-Funktion. Die Anfrage kann von einer webbasierten Schnittstelle (z. B. 106) empfangen werden. Der Prozess routet (bei 204) die Anfrage dann durch die webbasierte Schnittstelle 106 an die Cloud 110, die die BIOS-Funktion 108 umfasst.
-
Bei einigen Ausführungen ist die Cloud 110, in der die BIOS-Funktion 108 bereitgestellt wird, eine privilegierte Domain des elektronischen Geräts 100, wobei die privilegierte Domain eine Domain des elektronischen Geräts ist, die relativ sicher ist und die (ein) bestimmte(s) vordefinierte(s) Privileg(ien) besitzt, die nicht für andere Einheiten in dem elektronischen Gerät verfügbar sind. Allgemein bezieht sich eine „privilegierte Domain” auf eine Domain, die (ein) vordefinierte(s) Privileg(ien) besitzt, das/die es einer Einheit in der Domain erlaubt/erlauben, Funktionen in dem elektronischen Gerät auszuführen, die andere Einheiten (z. B. OS, Anwendungsprogramme etc.) nicht ausführen dürfen. Außerdem besitzt eine privilegierte Domain auch einen Sicherheitsmechanismus zum Schutz der privilegierten Domain gegen einen nicht autorisierten Zugriff oder Angriff.
-
Durch Verschieben von Funktionen des BIOS in die privilegierte Domain muss das elektronische Gerät 100 nicht in den SMM eintreten, um solche BIOS-Funktionen auszuführen, die in die privilegierte Domain verschoben wurden. Bei einigen Ausführungen kann der SMM-Betrieb vollständig entfallen. Bei anderen Ausführungen kann der SMM-Betrieb weiterhin aktiviert sein, um bestimmte BIOS-Funktionen auszuführen, während die übrigen BIOS-Funktionen durch die privilegierte Domain ausgeführt werden. Im letztgenannten Fall ist die Idee die, dass SMM nur für eine kleine Gruppe von BIOS-Funktionen aktiviert ist, so dass wirksame Maßnahmen ergriffen werden können, um Sicherheit zu bieten und/oder die Wirksamkeit zu verbessern.
-
Beispiele einer privilegierten Domain umfassen ein beliebiges oder eine beliebige Kombination der Folgenden: Domain 0, welches oft die erste Domain ist, die von einem Virtual Machine Monitor (auch bezeichnet als Hypervisor) gestartet wird, um Verwaltungsaufgaben auszuführen; ein Teil des Virtual Machine Monitor (oder Hypervisors); eine virtuelle Gastmaschine mit voreingestellten Einstellungen, um der virtuellen Gastmaschine erweiterte Privilegien und/oder Sicherheit bereitzustellen; oder ein anderer Domaintyp in dem elektronischen Gerät mit einem besonderen vordefinierten Privileg und/oder Sicherheitsmechanismus.
-
3 ist ein Blockdiagramm eines beispielhaften elektronischen Geräts 300 gemäß einigen Ausführungen. Das elektronische Gerät 300 umfasst einen VMM 302, der eine privilegierte Domain 304 erzeugt, die mindestens eine BIOS-Funktion 306 (eine beliebige oder Kombination der oben aufgeführten BIOS-Funktionen oder andere BIOS-Funktionen) umfasst. Die privilegierte Domain 304 umfasst auch die webbasierte Schnittstelle 106 von 1. Auf die BIOS-Funktion 306 in der privilegierten Domain 304 kann durch die webbasierte Schnittstelle 106 zugegriffen werden.
-
Bei einigen Beispielen ist die privilegierte Domain 304 die Domain 0, welches eine administrative Domain ist, die bei Systemstart von dem VMM 302 gestartet wird und die erhöhte Privilegien und Sicherheitsmechanismen besitzt. Beispiele von Aufgaben, die von der Domain 0 ausgeführt werden, umfassen das Erzeugen und Konfigurieren von Gastdomänen. Jede der Domain 0 und Gastdomänen wird als eine entsprechende virtuelle Maschine betrachtet.
-
Bei anderen Ausführungen kann die privilegierte Domain 304 ein anderer Typ virtueller Maschine sein, wie z. B. eine virtuelle Gastmaschine. Die privilegierte Domain 304 kann getrennt von dem VMM 302 sein, wie z. B. gemäß der Anordnung in 3. Bei alternativen Ausführungen kann die privilegierte Domain 304 Teil des VMM 302 sein. Bei solchen alternativen Ausführungen sind die BIOS-Funktion 306 und die webbasierte Schnittstelle 106 Teil des VMM 302.
-
Auf die BIOS-Funktion 306 kann durch eine Einheit 308 in dem elektronischen Gerät 300 zugegriffen werden. Bei einigen Beispielen ist die Einheit 308, die auf die BIOS-Funktion 306 in der privilegierten Domain 304 zugreifen kann, Teil einer virtuellen Gastmaschine 310. Eine solche Einheit 308 kann z. B. ein Gastbetriebssystem oder ein anderer Typ Einheit in der virtuellen Gastmaschine 310 sein. Bei anderen Beispielen kann die Einheit 308 extern einer jeglichen virtuellen Gastmaschine 310 sein, wie z. B. in Szenarien, in denen ein Host-Betriebssystem (nicht in 3 dargestellt) oder ein Anwendungsprogramm Zugriff auf die BIOS-Funktion 306 begehrt. Ein „Host-Betriebssystem” unterscheidet sich von einem „Gastbetriebssystem” darin, dass ein Gastbetriebssystem Teil einer virtuellen Maschine ist, wohingegen ein Host-Betriebssystem nicht Teil einer virtuellen Maschine ist.
-
Es gibt zwei alternative Mechanismen für die Einheit 308, um auf die BIOS-Funktion 306 in der privilegierten Domain 304 zuzugreifen. Ein erster Mechanismus umfasst, dass die Einheit 308 direkt eine Anfrage (312) an die webbasierte Schnittstelle 106 sendet, um Zugriff auf die BIOS-Funktion 306 in der privilegierten Domain 304 zu erhalten. Wie weiter unten diskutiert, kann dies durch das Vorhandensein eines virtuellen BIOS in der virtuellen Gastmaschine 310 ermöglicht werden.
-
Gemäß eines zweiten Mechanismus wird eine Anfrage (314), auf die BIOS-Funktion zuzugreifen, von dem VMM 302 abgefangen und von dem VMM 302 (entlang des Wegs 316) zu der webbasierten Schnittstelle 106 in der privilegierten Domain 304 geroutet. Bei einigen Ausführungen kann der VMM 302 eine Zugriffsanfrage auf die BIOS-Funktion 306 (von der Einheit 308 aus) abfangen und zur privilegierten Domain 304 routen, ohne dass der VMM 302 mit einem virtuellen BIOS konfiguriert werden muss. Dies verringert die Komplexität des Designs des VMM 302.
-
3 zeigt auch Hardware-Ressourcen 316 in dem elektronischen Gerät 300. Als Beispiele umfassen die Hardware-Ressourcen 316 einen Prozessor (oder mehrere Prozessoren), E/A-Geräte, einen flüchtigen Speicher, einen Sekundärspeicher, einen Flash-Speicher, einen Netzwerkschnittstellencontroller, eine Graphikkarte etc. Der Zugriff auf die Hardware-Ressourcen 316 durch virtuelle Gastmaschinen (wie z. B. 310) wird durch den VMM 302 verwaltet.
-
4 ist ein Flussdiagramm eines Prozesses gemäß einiger Ausführungen. Der Prozess von 4 kann z. B. durch Einheiten ausgeführt werden, die in 3 dargestellt sind. Der Prozess empfängt (bei 402) eine Anfrage, eine Funktion des BIOS (z. B. BIOS-Funktion 306 in 1 oder 3) aufzurufen. Diese Anfrage kann z. B. durch den VMM 302 von der Einheit 308 empfangen werden.
-
Der Prozess routet (bei 404) die Anfrage an die privilegierte Domain 304. Solches Routing kann durch den VMM 302 ausgeführt werden, oder alternativ kann das Routing durch ein virtuelles BIOS in der virtuellen Gastmaschine 310 ausgeführt werden. Bei Ausführungen mit einem virtuellen BIOS gibt eine Einheit (z. B. 308), die ein Gastbetriebssystem sein kann, in der virtuellen Gastmaschine 310, die auf ein BIOS (wie z. B. der BIOS-Funktion 306) zugreifen will, die Zugriffsanfrage an das virtuelle BIOS in der virtuellen Gastmaschine 310 aus. Das virtuelle BIOS routet dann die Zugriffsanfrage an die privilegierte Domain 304.
-
Die privilegierte Domain 304 bestimmt dann (bei 406), ob die angeforderte BIOS-Funktion ausgeführt werden soll oder nicht, basierend auf der Identifizierung einer Quelle der Anfrage oder auf der Identifizierung eines Kontexts der Anfrage oder auf der Identifizierung von sowohl der Quelle als auch des Kontexts der Anfrage. Bei Ausführungen, bei denen die privilegierte Domain die Bestimmung (406) basierend auf der Identifizierung der Quelle der Anfrage vornimmt, wird die angeforderte BIOS-Funktion dann ausgeführt, wenn die privilegierte Domain 304 bestimmt, dass die Quelle der Anfrage autorisiert ist, auf die angeforderte BIOS-Funktion zuzugreifen. Wenn die privilegierte Domain 304 jedoch bei solchen Ausführungen bestimmt, dass die Quelle der Anfrage nicht autorisiert ist, auf die angeforderte BIOS-Funktion zuzugreifen (wie z. B. in einem Szenario, in dem Malware die Anfrage ausgegeben hat), kann die privilegierte Domain 304 den Zugriff auf die angeforderte BIOS-Funktion verweigern. Auf diese Weise kann die privilegierte Domain 304 die BIOS-Funktion sicher ausführen.
-
Alternativ oder zusätzlich dazu nimmt die privilegierte Domain 304 die Bestimmung (406) basierend auf der Identifizierung des Kontexts der Anfrage vor. Der „Kontext” der Anfrage bezieht sich auf den aktuellen Zustand oder die aktuelle Umgebung des elektronischen Geräts (oder eines Teils des elektronischen Geräts) zum Zeitpunkt der zu verarbeitenden Anfrage. Die privilegierte Domain 304 bestimmt, ob die Anfrage ausgeführt werden kann, basierend darauf, ob die Anfrage im korrekten Kontext erfolgt (in anderen Worten, basierend darauf, ob der aktueller Zustand oder die aktuelle Umgebung des elektronischen Geräts (oder des Teils des elektronischen Geräts) eine Regel oder Regeln für die Ausführung der Anfrage erfüllt). Angenommen das elektronische Gerät kann z. B. legal in der Reihenfolge von Zustand S1 zu Zustand S2 zu Zustand S3 und zu Zustand S4 fortschreiten. Weiter angenommen, das Ausführen der angeforderten BIOS-Funktion würde das elektronische Gerät in Zustand S4 versetzen. Bei einem solchen Beispiel würde die privilegierte Domain 304 die Anfrage, die BIOS-Funktion auszuführen, nur dann erlauben, wenn sich das elektronische Gerät in Zustand S3 befindet (in anderen Worten, wenn der Kontext der Anfrage korrekt ist). Wenn sich das elektronische Gerät jedoch in Zustand S2 befände, dann würde die privilegierte Domain 304 die Ausführung der Anfrage nicht erlauben, da dies ein unzulässiger Wechsel wäre (der Kontext ist nicht korrekt).
-
Ein weiteres Beispiel, ob der Kontext einer Anfrage, eine BIOS-Funktion auszuführen, korrekt ist oder nicht, wird im Folgenden ausgeführt. Angenommen, das System stellt bereit, dass ein Befehl, eine Aktion auszuführen, die folgende Sequenz von Befehlen umfasst: (1) Sperren des Systems, (2) Ausführen der Aktion und (3) Entsperren des Systems. Die Anfrage, die BIOS-Funktion auszuführen, wäre vom Kontext her korrekt, wenn die Anfrage zur Ausführung nach einem Befehl, das System zu sperren, empfangen werden würde. Wenn die Anfrage jedoch vor Empfang des Befehls, das System zu sperren, empfangen werden würde, wäre die Anfrage vom Kontext her inkorrekt, und die Anfrage kann durch die privilegierte Domain nicht ausgeführt werden.
-
Gemäß einiger Ausführungen wird die angeforderte BIOS-Funktion ausgeführt, ohne dass in den SMM eingetreten werden muss – in anderen Worten, der SMM kann umgangen werden, um (eine) bestimmte BIOS-Funktion(en) auszuführen, die traditionell im SMM durch SMI BIOS-Handler ausgeführt werden. Durch Verwenden von Techniken oder Mechanismen gemäß einiger Ausführungen können die BIOS-Funktionen, die traditionell im SMM ausgeführt werden würden, stattdessen in einer vertrauenswürdigen Laufzeitumgebung ausgeführt werden, die von einer privilegierten Domain bereitgestellt wird.
-
Zusätzlich kann das Gesamtdesign eines elektronischen Geräts vereinfacht werden, da Sicherheitsmechanismen, die traditionell verwendet werden, wie z. B. das Sperren von Registern oder von Teilen des nicht-flüchtigen Speichers, entfallen können, da es die privilegierte Domain ist, die jetzt kontrolliert, ob eine Anfrage an eine BIOS-Funktion fortfahren darf.
-
Zusätzlich zum Ausführen der angeforderten BIOS-Funktion kann die privilegierte Domain 304 auch bestimmte Aufgaben vor der Ausführung der BIOS-Funktion ausführen. Die privilegierte Domain 304 kann z. B. bestimmen, ob eine Zugriffs- oder Ausführungsanfrage auf/von eine/r BIOS-Funktion richtig gebildet ist oder ob die zu schreibenden Daten (wie z. B. in dem Fall der BIOS Code-Aktualisierung) oder eine Einstellung einer BIOS-Richtlinie korrekt sind/ist (z. B. korrekte Größe, korrekter Verifizierungscode etc.). Dies kann Schutz gegen Fälle bieten, in denen Malware eine syntaktisch inkorrekte Anfrage verwendet, um auf BIOS-Funktionen in einem Versuch zuzugreifen, um BIOS-Fehlfunktionen als Folge der Verarbeitung der syntaktisch inkorrekten Befehlsanfrage zu verursachen. Die privilegierte Domain 304 kann auch bestimmen, ob eine Sicherungskopie von zu verändernden Daten (z. B. BIOS-Code) vor der Ausführung der BIOS-Funktion ausgeführt werden kann. Die privilegierte Domain 304 kann weiter bestimmen, ob die Batterie ausreichend geladen ist, um die angeforderte BIOS-Funktion zu abzuschließen. Im Allgemeinen kann die privilegierte Domain zuerst eine Anfrage, BIOS-Funktionseingänge auszulösen, die mit der Anfrage verknüpft sind, und einen Kontext der Anfrage und seinen Eingang validieren, bevor die privilegierte Domain anfängt, die Anfrage tatsächlich zu verarbeiten oder an das tatsächliche physische BIOS zur weiteren Verarbeitung zu routen.
-
In dem Kontext, den BIOS-Code zu aktualisieren, kann die privilegierte Domain 304 auch Metadaten und/oder einen Metacode, die mit der BIOS-Aktualisierung verknüpft sind, handhaben. Die Metadaten können Richtlinien oder Beschreibungen in Bezug darauf, welche(r) Teil(e) des BIOS-Codes zu aktualisieren ist/sind, und (einen) Zustand/Zustände, der/die mit dem Ausführen der Aktualisierung verknüpft ist/sind, bereitstellen (wie z. B. ein Zustand, der damit verknüpft ist, sicherzustellen, dass ein Aktualisierungscode-Bild für das Aktualisieren des BIOS-Codes eine korrekte Signatur aufweist, ein Zustand, der mit dem Wiederherstellen einer älteren BIOS-Codeversion im Fall eines Aktualisierungsfehlers verknüpft ist etc.). Der Metacode kann (ein) Verfahren in Bezug darauf definieren, wie Variablen und Einstellungen des BIOS zu aktualisieren sind. Die privilegierte Domain 304 kann einen Interpreter umsetzen, um Metadaten und/oder einen Metacode zu handhaben.
-
5 ist ein Blockdiagramm eines elektronischen Geräts 500 gemäß alternativer Ausführungen. Das elektronische Gerät 500 umfasst mehrere virtuelle Gastmaschinen 502A und 502B; obwohl zwei virtuelle Maschinen 502A und 502B in 5 gezeigt sind, ist anzumerken, dass bei alternativen Ausführungen nur eine virtuelle Gastmaschine oder mehr als zwei virtuelle Gastmaschinen vorhanden sein kann/können.
-
Jede virtuelle Gastmaschine 502A oder 502B umfasst ein entsprechendes Gastbetriebssystem 504A oder 504B sowie ein entsprechendes Anwendungsprogramm 506A oder 506B. Bei einigen Ausführungen umfasst jede virtuelle Gastmaschine 502A oder 502B ferner ein virtuelles BIOS 508A oder 508B. Ein Gastbetriebssystem 504A oder 504B, dafür ausgelegt, auf Dienste eines BIOS zuzugreifen, würde das entsprechende virtuelle BIOS 508A oder 508B (anstelle eines tatsächlichen BIOS) aufrufen. Bei einigen Ausführungen kann das virtuelle BIOS 508A oder 508B diese Anfrage dann direkt an eine privilegierte Domain 520 routen, die die BIOS-Funktion 306 umfasst. Wie bei Ausführungen gemäß 3, kann die privilegierte Domain 520 mit einer Domain 0 oder einer anderen virtuellen Maschine oder in dem VMM 302 ausgeführt sein.
-
Bei alternativen Ausführungen kann das virtuelle BIOS 508A oder 508B stattdessen die Zugriffsanfrage auf eine BIOS-Funktion durch den VMM 302 routen. Bei noch weiteren alternativen Ausführungen kann das virtuelle BIOS 508A oder 508B in der virtuellen Gastmaschine 502A oder 502B fehlen; in solchen Ausführungen kann eine Zugriffsanfrage auf eine BIOS-Funktion durch den VMM 302 abgefangen werden.
-
Das elektronische Gerät 500 umfasst ferner Hardware-Ressourcen 316 und einen Firmware Layer 510, der maschinenlesbare Anweisungen besitzt, einschließlich einem tatsächlichen BIOS 512 (in der weiteren Diskussion als ein „physisches BIOS” bezeichnet). Ein „physisches BIOS” oder „tatsächliches BIOS” bezeichnet einen BIOS-Code, der sich in einem nicht-flüchtigen Speicher befindet, wie z. B. einem Flash-Speicher oder einem anderen programmierbaren Festwertspeicher, und der bei Hochfahren des elektronischen Geräts 500 auszuführen ist. Das physische BIOS 512 kann eine reduzierte (vereinfachte) Version eines typischen physischen BIOS sein, da eine oder mehrere Funktion(en) des BIOS in die privilegierte Domain 520 verlegt worden sein kann/können, so dass diese Funktionen von der privilegierten Domain 520 ausgeführt werden, so dass ein Zugriff auf das physische BIOS 512 nicht ausgeführt werden muss. Es gibt jedoch bestimmte Funktionen des physischen BIOS 512, die in dem physischen BIOS 512 verbleiben; der Zugriff auf solche BIOS-Funktionen umfasst das Aufrufen des physischen BIOS 512. Ein solcher Aufruf kann von der privilegierten Domain 104 durch den VMM 302 erfolgen, wie durch den Weg 514 in 5 dargestellt.
-
Es ist auch zu beachten, dass Daten, die zwischen einem Betriebssystem und dem BIOS ausgetauscht werden, traditionell nicht geschützt sind, und in Folge dessen kann es sein, dass einige Systeme verschiedene proprietäre Schemata einsetzen, um einen gewissen Grad an Schutz für die zwischen dem Betriebssystem und dem BIOS ausgetauschten Daten zu bieten. Solch ein Schutz wird ausgeführt, weil die zwischen einem Betriebssystem und dem BIOS übertragenen Daten sensitive Informationen enthalten können, wie z. B. einen Benutzernamen, ein Passwort, ein Authentisierungs-Hash und/oder eine Authentisierungsrichtlinie. Ein beispielhaftes allgemeines Schutzschema ist, die zwischen dem Betriebssystem und dem BIOS ausgetauschten Informationen zu verschlüsseln. Da der Schutz durch Verwendung von Verschlüsselung das Verwenden und Speichern eines Schlüssels im BIOS (und dem Betriebssystem) umfassen würde, und weil es für gewöhnlich wenig Schutz für diesen Schlüssel gibt, kann der ermöglichte Schutz der zwischen dem Betriebssystem und dem BIOS ausgetauschten Informationen schwach sein. Da Kommunikation mit dem physischen BIOS 512 durch die privilegierte Domain 520 erfolgt, müssen traditionelle Mechanismen zum Schutz der Vertraulichkeit und/oder der Integrität von Daten (wie z. B. durch Verschlüsseln der Daten), die mit dem physischen BIOS 512 kommuniziert werden, nicht angewendet werden. Diese Lösung bietet Einfachheit und Leistungsverbesserungen, wobei höherer Schutz für Daten geboten wird, die an das physische BIOS kommuniziert werden, ohne tatsächlich besondere proprietäre Schutzmechanismen bereitstellen zu müssen.
-
Zusätzlich zu den virtuellen Gastmaschinen 502A und 502B und der privilegierten Domain 520 kann das elektronische Gerät 500 auch eine Service Domain Virtual Machine 516 umfassen, die einen Benutzerschnittstellen(UI)-Code 518 umfasst, der ausführbar ist, um eine Benutzerschnittstelle bereitzustellen. Die durch den UI-Code 518 bereitgestellte Benutzerschnittstelle in der Service Domain Virtual Machine 516 kann von einem Benutzer dazu verwendet werden, einen Status der privilegierten Domain 520 zu überwachen, so dass dem Benutzer Rückmeldung während der Ausführung der BIOS-Funktion 306 bereitgestellt werden kann. Die Benutzerschnittstelle kann auch dazu verwendet werden, um Einstellungen der privilegierten Domain 520 zu konfigurieren.
-
Wie ferner in 5 dargestellt, umfasst die privilegierte Domain 520 auch die webbasierte Schnittstelle 106, um den Zugriff auf die BIOS-Funktion 306 in der privilegierten Domain 520 zu erlauben. Der Zugriff auf die BIOS-Funktion 306 kann von einer Einheit in dem elektronischen Gerät 500 aus erfolgen. Bei weiteren Beispielen erlaubt die webbasierte Schnittstelle 106 über eine sichere Verbindung 526 den Webzugriff von einer Einheit 524 aus, die sich extern des elektronischen Geräts 500 befindet. Eine „sichere Verbindung” bezieht sich auf eine Netzverbindung, in der ein Sicherheitsmechanismus angewendet wird (z. B. Verschlüsselung von Daten, Einrichten eines sicheren Tunnels etc.), um nicht autorisierten Zugriff auf die über die Netzverbindung kommunizierten Daten zu verhindern. In einer Unternehmensumgebung (wobei ein Unternehmen ein Geschäft, eine Bildungsorganisation oder eine Behörde sein kann) erlaubt z. B. die sichere Verbindung 526, dass das elektronische Gerät 500 eine Kommunikation mit einem vertrauenswürdigen Server (524) aufbaut, wie z. B. einem Server, der konfiguriert ist, vordefinierte Dienste bereitzustellen. Ein Beispiel der vordefinierten Dienste, die von dem Server 524 bereitgestellt werden können, kann einen Dienst zur Aktualisierung des physischen BIOS 512 oder der BIOS-Funktion 306 umfassen. Bei anderen Beispielen können andere Dienste durch den Server 524 bereitgestellt werden. Die Verwendung der vertrauenswürdigen privilegierten Domain 520 erlaubt Calls einer BIOS-Funktion, die von außerhalb des elektronischen Geräts 500 stammen.
-
Bei einigen Ausführungen basiert das BIOS in einer Cloud auf den folgenden Vorbedingungen einer VMM-basierten Architektur: das physische BIOS kennt und vertraut der Hauptlaufzeiteinheit (VMM 302 in 3 oder 5), dass das physische BIOS bootet, und der vom BIOS vertraute VMM hat die Fähigkeit, alle E/A-Anfragen (auf den Zugriff auf die BIOS-Funktionalität) einzufangen und auszuschalten, die nicht von der privilegierten Domain stammen. Bei einigen Ausführungen kann ein BIOS-Verifizierungsmechanismus bereitgestellt werden, um den Ursprung des durch das elektronische Gerät zu bootenden VMM zu authentifizieren. Beispiele für einen solchen Verifizierungsmechanismus sind in der US-Patentanmeldung Nr. PCT/US2011/022814 beschrieben. Solche Verifizierungsmechanismen erlauben es einem Administrator oder einem anderen Benutzer, festzulegen, dass nur ein autorisierter VMM in dem elektronischen Gerät 100 oder 300 gebootet werden kann. Der Verifizierungsmechanismus stellt sicher, dass das VMM-Bild, das sich in dem elektronischen Gerät befindet, nicht schädlich verändert wurde und dass der VMM vertrauenswürdig ist. Das physische BIOS kann das VMM-Bild visuell verifizieren und sicherstellen, dass der VMM mit einem bekannten Satz gesteuerter Betriebseinstellungen gebootet wird, die zuvor festgelegt wurden.
-
Nach dem Verifizieren, dass ein autorisierter VMM gebootet wurde, kann das physische BIOS die Ausführung verschiedener Sicherheitsmaßnahmen aussetzen oder auslassen, die das physische BIOS normalerweise ausführen würde, um Beschädigung durch einen nicht autorisierten oder schadhaften Code zu verhindern. Das physische BIOS kann z. B. wählen, BIOS-Flash-Register und/oder Teile des Flash-Speichers nicht zu sperren.
-
3 und 5 zeigen Ausführungen, in denen das BIOS in der Cloud (z. B. die BIOS-Funktion 306) intern in einem elektronischen Gerät (300 oder 500) bereitgestellt wird. Es ist jedoch anzumerken, dass sich aus Sicht einer virtuellen Gastmaschine oder einer anderen Einheit des elektronischen Geräts, das auf BIOS-Dienste zugreifen möchte, die Cloud, einschließlich der BIOS-Dienste, an einem beliebigen Ort angesiedelt sein kann, einschließlich an einem Ort, der sich extern des elektronischen Geräts befindet.
-
6 zeigt ein Beispiel einer solchen Anordnung. 6 zeigt ein elektronisches Gerät 600, das eine virtuelle Gastmaschine 602, einen VMM 604 und Hardware-Ressourcen 606 aufweist. Das elektronische Gerät 600 umfasst ferner eine privilegierte Domain 608, die eine webbasierte Netzkommunikationsfunktion 610 aufweist. Die webbasierte Netzkommunikationsfunktion 610 stellt eine webbasierte Schnittstelle 611 bereit, die in der Lage ist, eine BIOS-Zugriffsanfrage entweder an eine interne BIOS-Funktion 612 (die Teil der privilegierten Domain 608 sein kann) oder an eine externe BIOS-Funktion 614 (auf die über ein Netz 616 Zugriff besteht) zu routen. Eine anfragende Einheit (z. B. der VMM 604 oder die virtuelle Gastmaschine 602) kann eine BIOS-Zugriffsanfrage an die webbasierte Schnittstelle 611 zustellen, die von der webbasierten Netzkommunikationsfunktion 610 bereitgestellt wird.
-
Bei einigen Ausführungen ist das Netz 616 ein sicheres Netz mit einem sicheren Mechanismus, um nicht autorisierten Zugriff auf Informationen zu verhindern, die zwischen Netzelementen über das Netz 616 kommuniziert werden.
-
Die externe BIOS-Funktion 614 kann Teil einer vertrauenswürdigen Umgebung 618 in einem Server-Computer 620 sein. Bei einigen Ausführungen kann die vertrauenswürdige Umgebung 618 auch in einer privilegierten Domain (z. B. Domain 0, sichere virtuelle Gastmaschine, Virtual Machine Monitor etc.) in dem Server-Computer 620 ausgeführt sein. Der Server-Computer 620 besitzt einen oder mehrere Prozessor(en) 622, Speichermedien 624 und eine Netzschnittstelle 626 zur Kommunikation über das Netz 616 mit dem elektronischen Gerät 600.
-
Verschiedene Module, wie z. B. die in den 1, 3, 5 und 6 dargestellten, können als maschinenlesbare Anweisungen ausgeführt sein, die auf einem oder mehreren Prozessor(en) ausgeführt werden können. Ein Prozessor kann einen Mikroprozessor, einen Mikrocontroller, ein Prozessormodul oder -teilsystem, einen programmierbaren integrierten Schaltkreis, ein programmierbares Gate-Array oder ein anderes Steuer- oder Rechengerät aufweisen.
-
Die maschinenlesbaren Anweisungen können in maschinenlesbaren oder computerlesbaren Speichermedien gespeichert werden, die als ein oder mehrere computerlesbare(s) oder maschinenlesbare(s) Speichermedium/Speichermedien ausgeführt sein können. Die Speichermedien können verschiedene Formen von Speichern umfassen, einschließlich Halbleiterspeichergeräte, wie z. B. dynamische oder statische Random Access Memories (DRAMs oder SRAMs), Erasable and Programmable Read-Only Memories (EPROMs), Electrically Erasable and Programmable Read-Only Memories (EEPROMs) und Flash-Speicher; Magnetplatten, wie z. B. Festplatten, Floppy Disks und Wechselplatten; andere magnetische Medien, einschließlich Tonband; optische Medien, wie z. B. Compact Disks (CDs) oder Digital Video Disks (DVDs); oder andere Typen von Speichergeräten. Es ist zu beachten, dass die oben diskutierten Anweisungen auf einem computerlesbaren oder maschinenlesbaren Speichermedium bereitgestellt werden können, oder alternativ auf mehreren computerlesbaren oder maschinenlesbaren Speichermedien, die in einem großen System verteilt sind, das ggf. mehrere Knoten aufweist. Solch(e) (ein) computerlesbare(s; n) oder maschinenlesbare(s; n) Speichermedium oder -medien wird/werden als Teil eines Artikels (oder Herstellungsartikels) betrachtet. Ein Artikel oder Herstellungsartikel kann sich auf eine beliebige gefertigte Einzelkomponente oder auf beliebige mehrere Komponenten beziehen. Das Speichermedium oder die -medien kann/können entweder in der Maschine angeordnet sein, auf der die maschinenlesbaren Anweisungen ausgeführt werden, oder an einer entfernten Stelle angeordnet sein, von der aus maschinenlesbare Anweisungen über ein Netz zur Ausführung heruntergeladen werden können.
-
In der vorstehenden Beschreibung sind zahlreiche Einzelheiten ausgeführt, um ein Verständnis des hierin offenbarten Gegenstands bereitzustellen. Die Ausführungen können jedoch ohne einige oder alle dieser Einzelheiten umgesetzt werden. Andere Ausführungen können Änderungen und Variationen der oben diskutierten Einzelheiten umfassen. Es ist beabsichtigt, dass die anhängenden Ansprüche solche Änderungen und Variationen abdecken.