-
GEBIET DER ERFINDUNG
-
Die Erfindung bezieht sich allgemein auf das Gebiet von Verfahren zum sicheren Booten von Computern, zur sicheren Ausführung von Software-Modulen darauf, wobei die Software-Module Anwendungskomponenten und Betriebssystem-Abbildkomponenten aufweisen.
-
HINTERGRUND DER ERFINDUNG
-
Vom Blickwinkel der Sicherheit aus betrachtet, kann das Ausführen eines Universalbetriebssystems (general-purpose operating system oder GPOS) auf einem Computer, z. B. einem Personal-Computer (PC) als Risiko betrachtet werden, da Fehler in diesem GPOS (oder in Anwendungen, die auf dem GPOS ausgeführt werden) bewirken können, dass zerstörerische Software die Fehler dazu ausnutzt, unerwünschte Operationen wie das Stehlen von Kennwörtern (Keylogging) oder von sonstigen Informationen wie Unternehmensdaten (Screen-Scraping) usw. durchzuführen.
-
Zu den Standardverfahren zum Umgehen mit diesem Problem zählen die sogenannten „Sicherheits-Software”; Virtualisierungslösungen auf der Server-Seite; Virtualisierungslösungen auf der Client-Seite; und Software-Vertrauensketten oder sicher geladene (gebootete) Betriebssystem-Kernel. Diese Verfahren haben verschiedene Nachteile, die hauptsächlich aus möglichen Fehlern im GPOS entstehen.
-
Eine andere Möglichkeit, den obigen Problemen zu begegnen, stützt sich auf das Konzept zertifizierter und fehlerfreier GPOS. Nach Kenntnis der vorliegenden Erfinder ist jedoch keine zuverlässige Implementierung eines solchen Systems mit der gesamten Funktionalität, die von dem Markt für GPOSs gefordert wird, vorhanden. Bestimmte Komponenten in Betriebssystemen können zertifiziert werden (als bestimmten Sicherheitseigenschaften entsprechend), die das Konzept von sicheren Spezialbetriebssystemen (oder SPOS) z. B. für Chip-Karten ergeben. Der wichtigste Nachteil dieses Ansatzes (über die Unmöglichkeit, hunderte von Millionen Zeilen GPOS-Code zu zertifizieren, hinaus) besteht darin, dass das Grundkonzept eines GPOS (nämlich, dass es allgemein ist und leicht erweitert werden kann) in gewisser Weise dem Ziel entgegensteht, funktionale Eigenschaften eines sicheren OS nachzuweisen und festzuschreiben.
-
In diesem Zusammenhang haben die vorliegenden Erfinder eine sichere Lösung entworfen, um die Integrität der Anwendungs-Software, die auf einem Betriebssystem ausgeführt wird, einschließlich der Assets sicherzustellen, die diese Software verwaltet (z. B. geheime Unternehmensdaten).
-
Eine solche Lösung sollte insbesondere einer Arbeitsumgebung mit einer Datenverarbeitung nach dem „Bring-your-own”(BYO)-Prinzip zugutekommen. BYO bezieht sich allgemein auf „Bring your own device” (BYOD, bring dein eigenes Gerät mit), „bring your own technology” (BYOT, bring deine eigene Technologie mit) oder, eng damit verwandt, „bring your own behavior” (BYOB, bring dein eigenes Verhalten mit). BYOD oder BYOT betrifft eine Unternehmens-/Geschäftsrichtlinie darüber, wie Mitarbeiter persönliche mobile Einheiten zur Arbeit mitbringen und dort verwenden und auf eMails, Datenbanken und Dateien des Arbeitsgebers zugreifen können, während sie solche Einheiten ansonsten zuhause verwenden, wodurch auf persönliche Anwendungen/Daten durch dieselben Einheiten zugegriffen wird. Über Hardware hinaus dehnt BYOB dies auf Software aus, die auf der Einheit verwendet wird.
-
Da jegliche Software, die auf einem Computer ausgeführt wird, von einer Reihe von Viren oder zerstörerischer Software (malicious software oder Malware), die in dem Betriebssystem des PC vorhanden ist, angegriffen werden kann, besteht daneben eine bekannte Lösung darin, einen PC von einem externen Boot-Medium, das z. B. auf einer für Benutzer vertrauenswürdigen Einheit gespeichert ist, üblicherweise einer sicheren Einheit, neu zu starten, und ein neues und – vom Blickwinkel der Sicherheit aus betrachtet – sauberes Betriebssystem (operating system, OS) von dem externen Medium zu starten. Dieser Ansatz führt jedoch zu zusätzlichen Problemen, die Ausführungsformen der vorliegenden Erfindung ebenfalls zu lösen beabsichtigen.
-
Schließlich werden externe Boot-Medien häufig auf vertrauenswürdigen Einheiten (einschließlich sicherer, fälschungssicherer Einheiten) bereitgestellt, deren Einheitentyp allgemein bekannt ist. Eine Lösung für Online-Transaktionen, die entwickelt worden ist, ist zum Beispiel der sogenannte Zone Trusted Information Channel (oder kurz ZTIC), siehe z. B. „The Zurich Trusted Information Channel – An Efficient Defence against Man-in-the-Middle and Malicious Software Attacks” von Thomas Weigold, Thorsten Kramp, Reto Hermann, Frank Höring, Peter Buhler, Michael Baentsch, in P. Lipp, A.-R. Sadeghi und K.-M. Koch (Hrsg.): TRUST 2008, LNCS 4968, S. 75 bis 91, 2008. Springer-Verlag Berlin Heidelberg 2008.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Gemäß einem ersten Aspekt wird die vorliegende Erfindung als Verfahren zum Ausführen von Software-Modulen auf einem Computer verkörpert, wobei das Verfahren aufweist:
Ausführen eines Boot-Ladeprogramms zumindest teilweise auf dem Computer, bevorzugt in einem Hauptspeicher davon;
bei Ausführung des Boot-Ladeprogramms:
Zugreifen auf:
Anforderungen an einen Anfangssatz von Software-Modulen; und
Hardware-Spezifikationen des Computers,
Ermitteln innerhalb des Anfangssatzes eines oder mehrerer Kandidatensätze von Software-Modulen, die mit den Hardware-Spezifikationen kompatibel sind und als RAM-Platte speicherbar sind; und
Speichern der Software-Module eines Abschlusssatzes auf einer RAM-Platte, wobei es sich bei dem Abschlusssatz um einen des einen oder der mehreren Kandidatensätze handelt, und Anweisen, die auf der RAM-Platte gespeicherten Software-Module auszuführen,
wobei sowohl der Anfangssatz als auch der Abschlusssatz von Software-Modulen Anwendungskomponenten und Betriebssystem-Abbildkomponenten aufweist und des Weiteren bevorzugt Hardware-Komponententreiber aufweist.
-
Bei Ausführungsformen ist das Boot-Ladeprogramm anfänglich auf einer für Benutzer vertrauenswürdigen Einheit gespeichert, die mit dem Computer verbindbar ist, wobei das Verfahren des Weiteren vor dem Ausführen des Boot-Ladeprogramms einen Schritt aufweist zum:
Übertragenlassen, bei einer Verbindung der für Benutzer vertrauenswürdigen Einheit mit dem Computer, zumindest eines Teils des Boot-Ladeprogramms in den Computer, bevorzugt in den Hauptspeicher des Computers, zur nachfolgenden Ausführung des übertragenen Teils.
-
Bevorzugt sind die Software-Module anfänglich auf einer für Benutzer vertrauenswürdigen Einheit gespeichert, wobei letztere mit dem Computer verbindbar ist, wobei das Verfahren des Weiteren vor dem Speichern der Software-Module auf der RAM-Platte, einen Schritt aufweist zum:
Übertragen von Software-Modulen des Abschlusssatzes von der für Benutzer vertrauenswürdigen Einheit in den Hauptspeicher des Computers zur nachfolgenden Speicherung und Ausführung der übertragenen Software-Module als RAM-Platte.
-
Bei bevorzugten Ausführungsformen weist das Verfahren des Weiteren vor dem Speichern und Anweisen zum Ausführen der Software-Module als RAM-Platte einen Schritt auf zum:
Identifizieren eines Abschlusssatzes von Software-Modulen aus mehreren Kandidatensätzen von Software-Modulen gemäß Eingaben, die von der für Benutzer vertrauenswürdigen Einheit empfangen werden, bevorzugt aufgrund dessen, dass ein Teil des Boot-Ladeprogramms auf der für Benutzer vertrauenswürdigen Einheit interaktiv mit einem weiteren Teil des Boot-Ladeprogramms ausgeführt wird, das in dem Computer ausgeführt wird, bevorzugt in dem Hauptspeicher des Computers. Üblicherweise wird dies aufgrund einer Benutzerinteraktion über eine Anzeige und E/A-Funktionen ausgeführt, die in die für Benutzer vertrauenswürdige Einheit eingebaut sind.
-
Bevorzugt weist ein Ermitteln eines oder mehrerer Kandidatensätze von Software-Modulen, die als RAM-Platte speicherbar sind, ein Priorisieren von Software-Modulen auf, bevorzugt ein Priorisieren von Software-Modulen, die gemäß einem bestimmten Sicherheitskriterium besonders sicherheitsrelevant sind.
-
Bei Ausführungsformen weist das Verfahren des Weiteren auf:
Ermitteln eines zusätzlichen Satzes von Software-Modulen, die sich nicht in dem Abschlusssatz von Software-Modulen befinden, die auf der RAM-Platte auszuführen sind; und
Speichern von Software-Modulen dieses zusätzlichen Satzes, bevorzugt verschlüsselt, auf einem physischen Speichermedium des Computers zur nachfolgenden Ausführung.
-
Bevorzugt weist ein Zugreifen auf Hardware-Spezifikationen des Computers ein Durchführen von Tests auf im Hinblick auf eine(s) oder mehrere(s) von:
- – einer Kapazität des Hauptspeichers des Computers;
- – einer Prozessorarchitektur des Computers;
- – einer Kapazität eines Speichermediums des Computers; und
- – ob eine Virtualisierung unterstützt wird,
und bevorzugt sind zumindest einige der Tests logisch mit Software-Modulen des Anfangssatzes verbunden; und bevorzugter weist ein Ermitteln eines oder mehrerer Kandidatensätze von Software-Modulen, die als RAM-Platte speicherbar sind, ein Priorisieren von Software-Modulen gemäß Ergebnissen der durchgeführten Tests auf.
-
Bei bevorzugten Ausführungsformen weist das Verfahren des Weiteren auf:
Zuordnen von Speicher für die RAM-Platte, bevorzugt vor dem Ermitteln des einen oder der mehreren Kandidatensätze von Software-Modulen, die als RAM-Platte speicherbar sind;
und der Schritt zum Speichern der Software-Module weist auf:
Berechnen von Metadaten eines Dateisystems für die RAM-Platte gemäß den Software-Modulen des Abschlusssatzes, wobei die Metadaten angeben, welche Dateien, die diese Software-Module bilden, zu speichern sind und wo sie in dem Dateisystem zu speichern sind;
Schreiben der Metadaten in getrennte Speicherabschnitte, zum Beispiel Speicherblöcke, auf der RAM-Platte; und
Kopieren von Dateien von Software-Modulen des Abschlusssatzes in dem Dateisystem nacheinander in die Speicherabschnitte und gemäß den Metadaten.
-
Gemäß einem weiteren Aspekt kann die vorliegende Erfindung als Boot-Ladeprogramm verkörpert werden, das zumindest teilweise auf einem Computer, bevorzugt in einem Hauptspeicher davon, ausführbar ist und das so konfiguriert ist, dass eine Ausführung des Boot-Ladeprogramms bewirkt:
Zugreifen auf Anforderungen im Hinblick auf einen Anfangssatz von Software-Modulen und Hardware-Spezifikationen des Computers,
Ermitteln innerhalb des Anfangssatzes eines oder mehrerer Kandidatensätze von Software-Modulen, die mit den Hardware-Spezifikationen kompatibel sind und als RAM-Platte speicherbar sind; und
Speichern der Software-Module eines Abschlusssatzes auf einer RAM-Platte, wobei es sich bei dem Abschlusssatz um einen des einen oder der mehreren Kandidatensätze handelt, und Anweisen, die auf der RAM-Platte gespeicherten Software-Module auszuführen,
wobei sowohl der Anfangssatz als auch der Abschlusssatz von Software-Modulen Anwendungskomponenten und Betriebssystem-Abbildkomponenten aufweist und des Weiteren bevorzugt Hardware-Komponententreiber aufweist.
-
Gemäß einem noch weiteren Aspekt wird die Erfindung als für Benutzer vertrauenswürdige Einheit verkörpert, die aufweist:
eine Verbindungsschnittstelle, die eine Verbindung mit einem Computer ermöglicht; und
einen permanenten Speicher, der speichert:
das Boot-Ladeprogramm gemäß der Erfindung; und
bevorzugt Software-Module, die Anwendungskomponenten, Betriebssystem-Abbildkomponenten und bevorzugt Hardware-Komponententreiber aufweisen.
-
Bevorzugt weist der permanente Speicher auf
einen sicheren Speicher, in dem ein erster Abschnitt des Boot-Ladeprogramms gespeichert ist; und
einen nicht sicheren Speicher, in dem ein zweiter Abschnitt des Boot-Ladeprogramms gespeichert ist.
-
Bei bevorzugten Ausführungsformen befindet sich der zweite Abschnitt des Boot-Ladeprogramms verschlüsselt in dem nicht sicheren Speicher, wobei ein entsprechender Verschlüsselungsschlüssel oder Entschlüsselungsschlüssel in dem sicheren Speicher gespeichert ist.
-
Darüber hinaus kann der permanente Speicher zum Beispiel Software-Modultests zum Ermitteln speichern, ob die Software-Module mit den Hardware-Spezifikationen kompatibel sind und als RAM-Platte speicherbar sind, wobei die Software-Modultests bevorzugt logisch mit den Software-Modulen verbunden sind.
-
Bevorzugt ist das Boot-Ladeprogramm des Weiteren so konfiguriert, dass es als Teil von Software-Modultests zum Ermitteln, ob die Software-Module mit den Hardware-Spezifikationen kompatibel sind und als RAM-Platte speicherbar sind, bewirkt:
Anweisen eines Prozessors des Computers, einen virtualisierungssensitiven Code auszuführen und bei Beendigung der Ausführung Beendigungsdaten auszugeben;
Ermitteln auf Grundlage solcher Beendigungsdaten, ob die Ausführung in einer virtualisierten Umgebung durchgeführt wurde; und
Ermitteln des einen oder der mehreren Kandidatensätze von Software-Modulen ebenfalls dem gemäß, ob die Ausführung des virtualisierungssensitiven Codes in einer virtualisierten Umgebung durchgeführt wurde.
-
Bei Ausführungsformen ist das Boot-Ladeprogramm des Weiteren so konfiguriert, dass es als Teil von Software-Modultests zum Ermitteln, ob die Software-Module mit den Hardware-Spezifikationen kompatibel sind und als RAM-Platte speicherbar sind, bewirkt:
Zuordnen von Firmware-Daten zu einem Code, wobei die Firmware-Daten Programmcode einer Initialisierungs-Firmware und/oder Daten aufweisen, auf die durch die Initialisierungs-Firmware des Computers zugegriffen werden kann;
Bestätigen der Vertrauenswürdigkeit des Codes; und
Ermitteln des einen oder der mehreren Kandidatensätze von Software-Modulen ebenfalls dem gemäß, ob der Code bestätigt ist.
-
Gemäß einem weiteren Aspekt wird die Erfindung als System verkörpert, das aufweist: eine für Benutzer vertrauenswürdige Einheit gemäß der Erfindung und den Computer, mit dem die für Benutzer vertrauenswürdige Einheit verbindbar ist.
-
Einheiten, Vorrichtungen, Systeme und Verfahren, die die vorliegende Erfindung verkörpern, werden nun mithilfe von nicht beschränkenden Beispielen und unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
-
KURZBESCHREIBUNG VERSCHIEDENER ANSICHTEN DER ZEICHNUNGEN
-
1 stellt ein computerunterstütztes Universalsystem schematisch dar, das zum Implementieren eines oder mehrerer Verfahrensschritte geeignet ist, wie sie mit Ausführungsformen der Erfindung einhergehen;
-
2 veranschaulicht ausgewählte Komponenten einer für Benutzer vertrauenswürdigen Einheit schematisch, wie sie mit Ausführungsformen einhergehen; und
-
3.A und 3.B sind Ablaufpläne, die übergeordnete Schritte von Verfahren, die einen Computer in die Lage versetzen, von einer für Benutzer vertrauenswürdigen Einheit zu booten, gemäß Ausführungsformen veranschaulichen. 3.B veranschaulicht eine mögliche Abfolge von Schritten zum Implementieren des Schritts S5ii von 3.A. Die Akronyme BL, HW und SMs bedeuten Boot-Ladeprogramm, Hardware bzw. Software-Module;
-
4 veranschaulicht schematisch einen Prozess zum Ermitteln von Kandidatensätzen von Software-Modulen und zum Speichern von schutzwürdigen Software-Modulen auf einer RAM-Platte, wie sie mit Ausführungsformen einhergehen; und
-
5 veranschaulicht schematisch eine abstrakte Darstellung eines bestimmten Speicherabschnitts eines Dateisystems einer RAM-Platte und, wie Software-Moduldateien in einem solchen Speicherabschnitt gespeichert werden, gemäß Ausführungsformen.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Die folgende Beschreibung ist wie folgt strukturiert. Zunächst werden allgemeine Aspekte von Ausführungsformen der Erfindung beschrieben (Abschnitt 1). Die nächsten Abschnitte behandeln bevorzugte Szenarien und technische Implementierungsdetails einiger spezifischer Ausführungsformen (Abschnitte 2 und 3).
-
1. Allgemeine Aspekte von Ausführungsformen der Erfindung
-
1.1 Allgemeine Aspekte von computerunterstützten Systemen und Einheiten, die zum Implementieren von Ausführungsformen der Erfindung geeignet sind
-
1 stellt ein allgemeines computerunterstütztes System schematisch dar, das zum Implementieren von Verfahrensschritten geeignet ist, wie sie mit Ausführungsformen der Erfindung einhergehen.
-
Es ist ersichtlich, dass die hierin beschriebenen Verfahren großenteils nichtinteraktiv und über computerunterstützte Systeme wie zum Beispiel Server oder eingebettete Systeme automatisiert sind. Bei beispielhaften Ausführungsformen können die hierin beschriebenen Verfahren in einem (teilweise) interaktiven oder nichtinteraktiven System implementiert werden. Diese Verfahren können des Weiteren zumindest teilweise in Software, Firmware, Hardware oder Kombinationen davon implementiert werden. Bei beispielhaften Ausführungsformen werden die hierin beschriebenen Verfahren zumindest teilweise als ausführbare Programme (die z. B. Teil eines Boot-Ladeprogramms sind) implementiert und werden zumindest teilweise durch einen digitalen Spezial- oder Universalcomputer wie etwa einen Personal-Computer, einen Arbeitsplatzrechner, einen Minicomputer oder einen Großrechner ausgeführt. Das allgemeinste System 100 beinhaltet daher einen Universalcomputer 101.
-
Bei beispielhaften Ausführungsformen beinhaltet der Computer 101 im Hinblick auf die Hardware-Architektur, wie in 1 dargestellt, einen Prozessor 105, einen Speicher 110, der mit einer Speichersteuereinheit 115 verbunden ist, und eine oder mehrere Eingabe- und/oder Ausgabe(E/A)-Einheiten (oder Peripheriegeräte) 10, 145, die zur Datenübertragung über eine lokale Eingabe-/Ausgabe-Steuereinheit 135 verbunden sind. Bei der Eingabe-/Ausgabe-Steuereinheit 135 kann es sich um einen oder mehrere Busse oder sonstige drahtgebundene oder drahtlose Verbindungen nach dem Stand der Technik handeln, ohne auf diese beschränkt zu sein. Die Eingabe-/Ausgabe-Steuereinheit 135 kann zusätzliche Elemente wie zum Beispiel Steuereinheiten, Puffer (Caches), Treiber, Zwischenverstärker und Empfänger aufweisen, die der Einfachheit halber weggelassen werden, um Datenübertragungen zu ermöglichen. Des Weiteren kann die lokale Schnittstelle Adress-, Steuer- und/oder Datenverbindungen beinhalten, um entsprechende Datenübertragungen zwischen den oben genannten Komponenten zu ermöglichen. Wie hierin beschrieben, können die E/A-Einheiten 10, 145 im Allgemeinen eine beliebige allgemeine Verschlüsselungskarte oder Chip-Karte nach dem Stand der Technik beinhalten. Bei einer dieser Einheiten handelt es sich um eine für Benutzer vertrauenswürdige Einheit 10, die im Folgenden ausführlich erörtert wird.
-
Der Prozessor 105 ist eine Hardware-Einheit zum Ausführen von Software, im Besonderen von Software, die in dem Speicher 110 gespeichert ist. Der Prozessor 105 kann ein beliebiger nach Kundenwünschen angefertigter oder handelsüblicher Prozessor, eine Zentraleinheit (CPU), ein Hilfsprozessor von mehreren Prozessoren, die dem Computer 101 zugehörig sind, ein Mikroprozessor auf Grundlage eines Halbleiters (in Form eines Mikro-Chips oder eines Chip-Satzes), ein Makroprozessor oder allgemein eine beliebige Einheit zum Ausführen von Software-Befehlen sein.
-
Der Hauptspeicher 110 beinhaltet flüchtige Speicherelemente (z. B. einen Direktzugriffsspeicher (random access memory, RAM, wie etwa einen DRAM, SRAM, SDRAM usw.)) und möglicherweise nichtflüchtige (permanente) Speicherelemente (z. B. einen ROM, einen löschbaren, programmierbaren Festwertspeicher (erasable programmable read only memory, EPROM), einen elektrisch löschbaren, programmierbaren Festwertspeicher (electronically erasable programmable read only memory, EEPROM), einen programmierbaren Festwertspeicher (programmable read only memory, PROM), ein Band, eine CD-ROM (compact disc read only memory, Kompakt-Disk-Festwertspeicher), eine Platte, eine Diskette, ein Steckmodul, eine Kassette oder dergleichen usw.). Außerdem kann der Speicher 110 elektronische, magnetische, optische und/oder andere Arten von Speichermedien umfassen oder eine Verbindung zu diesen herstellen. Es ist zu beachten, dass der Speicher 110 eine verteilte Architektur aufweisen kann, wobei sich verschiedene Komponenten entfernt voneinander befinden, auf die jedoch durch den Prozessor 105 zugegriffen werden kann. Im Besonderen ist der Speicher 110 so gestaltet, dass eine RAM-Platte 121 daran angehängt werden kann. In ähnlicher Weise können sonstige Speicherabschnitte spezifischen Zwecken zugeordnet werden, z. B. zum Empfangen von Komponenten eines Boot-Ladeprogramms 16, 17 wie zum Beispiel eines Hauptmoduls 16, eines Überprüfungsmoduls/Prozessorbefehlsmoduls (processor instruction module oder PIM) 17 zur nachfolgenden Ausführung.
-
Im Betrieb können Software-/Programmcode, die mit Ausführungsformen dieser Erfindung einhergehen, zum Beispiel Software-/Programmcode, der in den Speicher 110 zu übertragen ist, ein oder mehrere getrennte Programme beinhalten, die jeweils eine Auflistung ausführbarer Befehle zum Implementieren von logischen Funktionen aufweisen. In dem Beispiel von 1 können Befehle in den Speicher 110 geladen werden, die dem Computer 101 ermöglichen, von der für Benutzer vertrauenswürdigen Einheit 10 zu starten und den Boot-Vorgang abzuschließen.
-
Die auf einer RAM-Platte zu speichernden Software-Module können Anwendungskomponenten und Betriebssystem-Abbildkomponenten und bevorzugt auch Hardware-Komponententreiber aufweisen. Der Speicher 110 kann auf diese Weise in den Stand versetzt werden, ein geeignetes Betriebssystem (OS) 111 (bevorzugt ein Spezial-OS oder SPOS) auszuführen. Nichtsdestotrotz arbeiten die hier erörterten neuartigen Verfahren zumindest teilweise, „bevor” jegliche OS-Komponente vollständig auf dem Host 101 geladen ist. Zumindest einige der Schritte arbeiten auf einer anderen Ebene, näher an der Hardware, wodurch das normale Verhalten des Computers 101 beeinträchtigt wird. Bei der Ausführung (und falls sie ausgeführt werden) steuert das OS 111 im Wesentlichen die Ausführung von Anwendungsprogrammen und stellt Zeitplanung, Eingabe-Ausgabe-Steuerung, Datei- und Datenverwaltung, Speicherverwaltung und Datenübertragungssteuerung sowie damit in Zusammenhang stehende Dienste bereit.
-
Zumindest ein Teil der hierin beschriebenen Verfahren kann in Form eines Quellprogramms, eines ausführbaren Programms (eines Objektcodes), eines Skripts oder jeder anderen Entität vorliegen, die einen auszuführenden Befehlssatz aufweist. Wenn es sich um ein Quellprogramm handelt, muss das Programm über einen Compiler, Assembler, Interpreter oder dergleichen, der in dem/den Speicher(n) der Einheit 10 und/oder des Host 101 enthalten sein kann, umgesetzt werden. Des Weiteren können die Verfahren als objektorientierte Programmiersprache, die über Klassen von Daten und Verfahren verfügt, oder als prozedurale Programmiersprache, die über Routinen, Unterroutinen und/oder Funktionen verfügt, geschrieben sein. In allen Fällen sind die hierin erörterten neuartigen Verfahren so gestaltet, dass sie bei Bedarf in Zusammenhang mit der Firmware 122 oder bei Bedarf mit der CPU 11 der Einheit ordnungsgemäß arbeiten.
-
Bei beispielhaften Ausführungsformen können eine herkömmliche Tastatur 150 und Maus 155 mit der Eingabe-/Ausgabe-Steuereinheit 135 verbunden werden. Zu sonstigen E/A-Einheiten 145 können zum Beispiel ein Drucker, ein Scanner, ein Mikrofon und dergleichen zählen. Schließlich können die E/A-Einheiten 10, 145 des Weiteren Einheiten, die Daten zwischen Ein- und Ausgängen übertragen, wie zum Beispiel eine Netzwerk-Schnittstellenkarte (network interface card, NIC) oder einen Modulator/Demodulator (zum Zugreifen auf andere Dateien, Einheiten, Systeme oder ein Netzwerk), einen Hochfrequenz-(HF-) oder einen anderen Sender-Empfänger, eine Telefonschnittstelle, eine Brücke, einen Router und dergleichen beinhalten, ohne auf diese beschränkt zu sein. Wie hierin beschrieben, kann es sich bei den E/A-Einheiten 140, 145 um eine beliebige allgemeine Verschlüsselungskarte oder Chip-Karte nach dem Stand der Technik handeln. Das System 100 kann des Weiteren eine Anzeigesteuereinheit 125 beinhalten, die mit einer Anzeige 130 verbunden ist. Bei beispielhaften Ausführungsformen kann das System 100 des Weiteren eine Netzwerk-Schnittstelle 160 zum Verbinden mit einem Netzwerk 165 beinhalten. Bei dem Netzwerk 165 kann es sich um ein Netzwerk auf Grundlage von IP zur Datenübertragung zwischen dem Computer 101 und einem beliebigen externen Server, Client und dergleichen über eine Breitbandverbindung handeln. Das Netzwerk 165 überträgt und empfängt Daten zwischen dem Computer 101 und externen Systemen, z. B. einem Server 30. Bei beispielhaften Ausführungsformen kann es sich bei dem Netzwerk 165 um ein verwaltetes IP-Netzwerk handeln, das durch einen Diensteanbieter verwaltet wird. Das Netzwerk 165 kann drahtlos implementiert werden, z. B. mithilfe von drahtlosen Protokollen und Technologien wie z. B. WiFi, WiMax usw. Bei dem Netzwerk 165 kann es sich auch um ein Netzwerk mit Paketvermittlung wie zum Beispiel um ein lokales Netzwerk, ein Weitverkehrs-Netzwerk, ein Hochgeschwindigkeits-Netzwerk, ein Internet-Netzwerk oder einen anderen, ähnlichen Typ von Netzwerkumgebung handeln. Das Netzwerk 165 kann ein festes drahtloses Netzwerk, ein drahtloses lokales Netzwerk (local area network, LAN), ein drahtloses Weitverkehrs-Netzwerk (wide area network, WAN), ein persönliches Netzwerk (personal area network, PAN), ein virtuelles privates Netzwerk (VPN), ein Intranet oder ein sonstiges geeignetes Netzwerksystem sein, und es beinhaltet Geräte zum Empfangen und Übertragen von Signalen.
-
Wenn es sich bei dem Computer 101 um einen PC, einen Arbeitsplatzrechner, eine intelligente Einheit oder dergleichen handelt, kann die Software in dem Speicher 110 des Weiteren ein grundlegendes Eingabe-/Ausgabe-System (basic input output system, BIOS) oder eine beliebige ähnliche Initialisierungs-Software 122 beinhalten. Bei dem BIOS handelt es sich um einen Satz von wesentlichen Software-Routinen, die Hardware beim Start initialisieren und testen. Es ist ansonsten im Allgemeinen in der Lage, ein OS zu starten und die Übertragung von Daten zwischen den Hardware-Einheiten zu unterstützen. Das BIOS ist üblicherweise im ROM gespeichert, sodass das BIOS ausgeführt werden kann, wenn der Computer 101 aktiviert wird.
-
Zum Zweck der Implementierung von Verfahren, wie sie hierin beschrieben werden, kann das BIOS 122 insbesondere so verwendet werden (mit ihm interagiert werden), dass der Boot-Prozess initiiert und abgeschlossen wird und möglicherweise auch eine Datenübertragung über ein Netzwerk initiiert wird. Allgemeiner kann jedoch jegliche geeignete Firmware 122 oder Schnittstelle zu einer Firmware (d. h. eine Kombination von permanentem Speicher und Programmcode und darin gespeicherten Daten, die „unterhalb” eines beliebigen OS 111 in dem Software-Stapel arbeitet) zu diesem Zweck verwendet werden. Dabei handelt es sich üblicherweise um das BIOS. Zu Beispielen für geeignete Firmware 122 oder eine Schnittstelle dazu zählen jedoch das Preboot-eXecution-Environment(PXE)-BIOS, das sogenannte Extensible-Firmware-Interface(EFI)-BIOS oder gar die Unified Extensible Firmware Interface (UEFI). Bei letzterem handelt es sich um eine Spezifikation, die eine Software-Schnittstelle zwischen dem Betriebssystem und der Plattform-Firmware definiert. Die UEFI soll die BIOS-Firmware-Schnittstelle ersetzen, die heutzutage in sämtlichen PC-kompatiblen Computern von IBM vorhanden ist. In der Praxis stellt die UEFI dieselben und sogar mehr Funktionen als ein herkömmliches PC-BIOS bereit und kann ebenfalls verwendet werden. Allgemeiner ausgedrückt, kann jegliche Initialisierungs-Firmware, die unterhalb des Betriebssystems in dem Software-Stapel arbeitet, möglicherweise zum Implementieren der vorliegenden Erfindung verwendet werden.
-
Wenn der Computer 101 in Betrieb ist, ist der Prozessor 105 zum Ausführen von in dem Speicher 110 gespeicherter Software, zum Übertragen von Daten in den und aus dem Speicher 110 und zum allgemeinen Steuern von Vorgängen des Computers 101 der Software entsprechend konfiguriert. Die hierin beschriebenen Verfahren werden vollständig oder zum Teil, üblicherweise jedoch letzteres, durch den Prozessor 105 gelesen, möglicherweise in dem Prozessor 105 zwischengespeichert und dann ausgeführt.
-
Die Abschnitte der hierin beschriebenen Verfahren, die in Software implementiert werden können, können in einem beliebigen computerlesbaren Medium zur Verwendung oder in Verbindung mit einem beliebigen computerbezogenen System oder Verfahren gespeichert werden.
-
Wie für einen Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung eine reine Hardware-Ausführungsform, eine reine Firmware- und/oder Software-Ausführungsform (Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform annehmen, in der Firmware-/Software- und Hardware-Aspekte kombiniert werden, die sämtlich hierin verallgemeinernd als „Module” „computerunterstützte Verfahren”, „Prozesse” oder „Schemata” usw. bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
-
Es kann eine beliebige Kombination eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine solche Vorrichtung oder Einheit oder um eine beliebige geeignete Kombination aus Obigen handeln, ohne auf diese beschränkt zu sein. Zu konkreteren Beispielen (einer nicht erschöpfenden Liste) des computerlesbaren Speichermediums würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (random access memory, RAM), ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine Magnetspeichereinheit oder eine beliebige geeignete Kombination der Obigen. Im Rahmen dieses Dokuments kann ein computerlesbares Speichermedium jedes physische Medium sein, das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal, in dem computerlesbarer Programmcode verkörpert wird, zum Beispiel im Basisband oder als Teil einer Trägerwelle beinhalten. Ein solches sich ausbreitendes Signal kann eine Vielfalt von Formen annehmen, darunter eine elektromagnetische Form, eine optische Form oder eine beliebige geeignete Kombination derselben, ohne auf diese beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen austauschen, verbreiten oder transportieren kann.
-
Auf einem computerlesbaren Medium verkörperter Programmcode kann mithilfe eines beliebigen geeigneten Mediums übertragen werden, zum Beispiel über Funk, Kabel, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder über eine beliebige geeignete Kombination der Obigen, ohne auf diese beschränkt zu sein.
-
Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorlegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben werden, zum Beispiel in einer objektorientierten Programmiersprache wie etwa Java, Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie zum Beispiel der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer eines Benutzers, zum Teil auf dem Computer des Benutzers (als eigenständiges Software-Paket) oder weiter zum Teil auf zwei oder mehr der Folgenden ausgeführt werden: auf dem Computer 101 des Benutzers, der für Benutzer vertrauenswürdigen Einheit 10 und einem entfernt angeordneten Computer 30. Der Host-Computer und der Server können durch eine beliebige Art von Netzwerk verbunden sein, darunter: ein lokales Netzwerk (LAN); ein Weitverkehrs-Netzwerk (WAN; eine Verbindung zu einem externen Computer (Internet, unter Verwendung eines Internet-Diensteanbieters).
-
Aspekte der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass zumindest einige der Blöcke der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle implementiert werden können. Diese Computerprogrammbefehle können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Befehle, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
-
Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand (article of manufacture) erzeugen, der Befehle beinhaltet, die die/den Funktion/Vorgang implementieren, die/der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
-
Die Computerprogrammbefehle können außerdem so auf einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten geladen werden, dass sie bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder sonstigen Einheiten ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführten Befehle Prozesse bereitstellen, um die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge zu implementieren.
-
Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang können zumindest einige der Blöcke in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der einen oder mehrere ausführbare Befehle zum Implementieren der angegebenen logischen Funktion(en) aufweist. Es ist außerdem zu beachten, dass bei einigen alternativen Implementierungen die in einem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten können. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf Grundlage von Hardware, die die angegebenen Funktionen oder Vorgänge ausführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen implementiert werden können.
-
1.2 Hauptausführungsformen und übergeordnete Varianten
-
Unter Bezugnahme auf 1 bis 4 wird zunächst ein Aspekt der Erfindung beschrieben, der ein Verfahren zum Ausführen von Software-Modulen auf einem Computer betrifft, wobei die Software-Module Anwendungskomponenten, Betriebssystem-Abbildkomponenten und bevorzugt auch Hardware-Komponententreiber aufweisen. Wie in 3 und 4 veranschaulicht, weist das Verfahren hauptsächlich die folgenden Schritte auf:
- – Schritt S4: Ausführen eines Boot-Ladeprogramms 16 zumindest teilweise auf dem Computer 101 bevorzugt in dem Hauptspeicher des Computers; und
- – bei Ausführung des Boot-Ladeprogramms:
• Schritt S5: Zugreifen auf:
• Anforderungen (S5i) an einen Anfangssatz (initial set, IS) von Software-Modulen SMn; und
• Hardware-Spezifikationen (S5ii) des Computers 101, z. B. eines PC,
• Schritt S6: Ermitteln innerhalb des Anfangssatzes eines oder mehrerer Kandidatensätze (candidate sets) CS1, CS2 von Software-Modulen, die mit den Hardware-Spezifikationen kompatibel sind (Schritt S6a) und die als RAM-Platte speicherbar sind (Schritt S6b);
• Auf diese Weise müssen die hier ausgewählten Software-Module einerseits mit den Hardware-Spezifikationen kompatibel sein und andererseits zum Speichern als RAM-Platte geeignet sein, was wiederum notwendigerweise von den Hardware-Funktionen der Maschine 101 abhängt. Es ist zu beachten, dass die RAM-Platte in dieser Phase möglicherweise noch nicht vorhanden ist, da sie bevorzugt gerade zum Zweck des Ausführens der beibehaltenen Software-Module eingerichtet wird. Die RAM-Platte kann jederzeit vor dem Speichern der Module darauf eingerichtet werden;
• Schritt S9: Speichern der Software-Module eines Abschlusssatzes (final set) FS auf einer RAM-Platte 121 und Anweisen, die auf der RAM-Platte gespeicherten Software-Module auszuführen. Bei dem Abschlusssatz FS handelt es sich um einen der Kandidatensätze CS1, CS2, .,., die z. B. gemäß einer geeigneten Richtlinie ausgewählt worden sind.
-
Die vorliegende Erfindung kann des Weiteren als Boot-Ladeprogramm oder ein beliebiges allgemeineres Computerprogrammcode-Produkt verkörpert werden, das bei Ausführung auf dem Computer 101 das Erreichen desselben ermöglicht. Was hier als Boot-Ladeprogramm bezeichnet wird, ist ein Satz von Software-Modulen 15, 16, 17 (als „Komponenten” oder „Teile” bezeichnet, um sie von den Software-Modulen SMn zu unterscheiden, die als RAM-Platte zu speichern sind), die bei Ausführung auf dem Computer 101 und möglicherweise interaktiv mit Komponenten 15 davon, die auf der Einheit 10 ausgeführt werden, verschiedene Operationen zum Booten des Computers 101 durchführen können. Üblicherweise ist das Boot-Ladeprogramm (oder zumindest ein Teil davon) durch die Initialisierungs-Firmware, z. B. das BIOS 122, erkennbar. Es weist im Besonderen Befehle für die Firmware 122 auf, eine Übertragung zumindest einiger seiner Komponenten 16, 17 auf den PC 101 zur nachfolgenden Ausführung auf dem PC zu initiieren. Die Komponenten 15, 16 und 17 des Boot-Ladeprogramms können als einzelne Entität (d. h. eine Boot-Aktivierungsentität) oder als getrennte Entitäten betrachtet werden, die in der Lage sind, so zu interagieren, dass sie das gewünschte Ergebnis bereitstellen.
-
Sowohl der Anfangssatz IS als auch der Abschlusssatz FS (wie auch die Kandidatensätze CS1, CS2, ...) der Software-Module SMm weisen Anwendungskomponenten und Betriebssystem-Abbildkomponenten und bevorzugt auch Hardware-Komponententreiber zum interagieren mit der Hardware des Computers auf und ermöglichen bei Ausführung, dass eine Anwendung ausgeführt wird und folglich ein Benutzer Vorgänge über den Computer durchführt. Da die Module direkt als RAM-Platte ausgeführt werden, ermöglicht das obige Verfahren, dass ein Betriebssystem und Anwendungs-Software, die auf dem Betriebssystem ausgeführt wird, auf dem Computer 101 ausgeführt werden, wobei sie nur eine geringe oder keine Spur darauf hinterlassen. Im Grunde wird es durch diese Lösung sehr schwierig (wenn nicht unmöglich), durch Untersuchen der Festplatte oder einer damit verbundenen Massenspeichereinheit nach dem Ende einer Sitzung zu erschließen, dass ein Benutzer den Computer benutzt hat. Dennoch besteht der wahre Zweck der vorliegenden Lösung darin, eine sichere Lösung bereitzustellen, um die Integrität der Anwendungs-Software, die auf dem Betriebssystem ausgeführt wird, einschließlich der Assets sicherzustellen, die diese Software verwaltet (z. B. geheime Unternehmensdaten, vertrauliche Daten, proprietäre Daten, Formate und Informationen usw.). Die obige Lösung ist zuverlässig, d. h. durch den Benutzer überprüfbar, und portierbar, d. h. nicht maschinenspezifisch.
-
Statt auf ein GPOS stützt sich das Bereitstellen einer Integritätssicherung bevorzugt auf ein Spezial-OS (SPOS) und Anwendungen. Die Software-Module SMn können entsprechend vorausgewählt werden.
-
Da es vermutlich für Benutzer (insbesondere in Bring-your-own-Szenarien, d. h. wenn Benutzer ihre private PC-Hardware für Unternehmensarbeiten benutzen) nicht akzeptabel wäre, ihr privates GPOS zu löschen, bestehen Ausführungsformen darin, vorübergehend in ein SPOS zu booten, z. B. über einen Mechanismus, der durch Verschlüsselungs-Hardware außerhalb des PC streng kontrolliert wird. Dies wird durch eine für Benutzer vertrauenswürdige Einheit erreicht, wie im Folgenden ausführlich beschrieben wird.
-
Die vorgeschlagene Lösung kann ausschließlich aus dem RAM, d. h. mit temporären Daten, ausgeführt werden und automatisch spurlos verschwinden, wenn der Benutzer wieder neu in sein privates GPOS bootet. Ergänzend zu der Ausführung ausgewählter Module (z. B. der schutzwürdigsten Module) als RAM-Platte kann das SPOS auch die lokale Festplatte des PC zum zusätzlichen Speichern weniger kritischer Anwendungen und Anwendungsdaten einsetzen oder einen entfernt angeordneten (Cloud-)Speicher für diesen Zweck einsetzen. In diesem Fall muss das System auf der lokalen Festplatte Platz schaffen; einen Festplattenbereich in Besitz nehmen; und kann dann ohne Netzwerkverbindung arbeiten. Bei Varianten muss der PC möglicherweise online sein, damit das SPOS die Möglichkeit bekommt, eine Verbindung mit einem Cloud-Server herzustellen.
-
Die Anforderungen in Bezug auf den Anfangssatz IS der Software-Module können anfangs im Hinblick auf Vorgänge ausgedrückt werden, die ein Benutzer auf dem PC haben möchte oder haben darf, und wie/wo sie durchzuführen sind. Bei diesen Vorgängen handelt es sich um Beispiel um:
- – eBanking-Anwendungen, bei denen auf Client-Kontodaten zugegriffen wird und möglicherweise auf Client-Assets zugegriffen wird/diese verwaltet werden; oder
- – eine sichere Anwendung für ein Nachrichtenübermittlungssystem.
-
Diese Anforderungen werden dann im Hinblick auf Software-Module umgesetzt, d. h. diejenigen Module, die zum Durchführen solcher Vorgänge erforderlich sind. Eine einfache Umsetzungstabelle kann ausreichen, um Vorgänge in Software-Module umzusetzen. Sonstige Entsprechungsprinzipien können verwendet werden. Bei Varianten werden die Anforderungen direkt im Hinblick auf Software-Module bereitgestellt.
-
Üblicherweise handelt es sich bei den Software-Modulen um übergeordnete Software-Komponenten, d. h. der Initialisierungs-Software, d. h. dem BIOS-System, übergeordnet.
-
Eine RAM-Platte ist per se bekannt. Weit gefasst ist eine RAM-Platte dasselbe wie eine Festplatte, abgesehen davon, dass sie einen flüchtigen RAM als Speichermedium verwendet. Eine Festplatte wie auch eine RAM-Platte stellen Speicher in Form einer Byte-Sequenz bereit. Auf einer Festplatte ist diese Byte-Sequenz in Blöcke einer bestimmten Größe unterteilt, sodass jedes Byte durch eine Blocknummer und einen Offset des Byte darin adressiert werden kann. Beim Speichern von Daten auf der RAM-Platte anstelle einer Festplatte werden Datenblöcke üblicherweise einfach zusammenhängend in dem RAM gespeichert. Angenommen, eine RAM-Platte weist zum Beispiel eine Blockgröße von 512 Byte auf, und es soll ein erster Block (mit einem Index 0) z. B. an einer Adresse 512000 gespeichert werden, dann würde ein zweiter Block (ein Block mit Index 1) an einer Adresse 512512 gespeichert werden, ein dritter an einer Adresse 513024 und so weiter. Wenn der n-te Block benötigt wird (Index n – 1): Statt eine Festplatte anzuweisen, den Block n zu lesen, werden einfach 512 Byte des Hauptspeichers gelesen, in dem obigen Beispiel etwa 512000 + 512*n.
-
Die Art, in der Daten bei beiden Plattenformen organisiert sind, kann übereinstimmen, und dies ist häufig der Fall. In der Praxis kommt es jedoch zu unterschiedlichen Auswirkungen. Wenn ein Block von der Platte gelesen wird, muss dieser Block zuerst in den RAM kopiert werden. Wenn er von der RAM-Platte gelesen wird, muss ein einigermaßen gut gestaltetes OS den Block nicht in einen anderen Bereich in dem RAM kopieren, da die Blöcke bereits in dem RAM gespeichert sind, sondern kann den Block stattdessen in situ lesen.
-
Darüber hinaus wird bei Festplatten üblicherweise versucht, eine solche Organisation zu erreichen, dass Dateien an einer Blockgrenze beginnen, wodurch es einfacher wird, sie zu lesen und in sie zu schreiben. Wenngleich das Aufrechterhalten einer solchen Struktur dazu beiträgt, die Organisation auch auf einer RAM-Platte zu vereinfachen, muss diese Struktur auf einer RAM-Platte nicht zwingend beibehalten werden. So würde dadurch, dass diese Struktur nicht erzwungen wird, ermöglicht, Dateien kompakter zu speichern und Speicher zu erhalten. Bei einer Festplatte wäre dies unerschwinglich teuer, da stets gesamte Blöcke gelesen und geschrieben werden müssen. Dies liegt daran, dass bei Festplatten zuerst der gesamte Block gelesen werden muss, wenn ein Teil eines Blocks geändert werden soll, er dann teilweise geändert werden und anschließend der gesamte Block modifiziert zurückgeschrieben werden muss. Bei einer RAM-Platte muss nur der erforderliche Teil geändert werden.
-
Des Weiteren werden bei einer Festplatte Blöcke nach Möglichkeit der Reihe nach zugeordnet, sodass nacheinander auf Blöcke zugegriffen werden kann, wenn sich die Platte unter dem Lesekopf dreht. Wenn Blöcke nicht der Reihe nach zugeordnet werden, muss die Festplatte jeden Block suchen, was einen untragbar großen Zeitaufwand bedeutet. Eine ähnliche Wirkung besteht bei einer RAM-Platte, die Einbuße ist jedoch vergleichsweise gering.
-
RAM-Platten werden häufig nur zum Lesen von Daten verwendet. In diesem Fall können die Daten anders organisiert werden, z. B. wie bei einer CDROM. Es ist nicht erforderlich, nicht verwendete Blöcke zu markieren, da keine Daten geschrieben werden und es nicht notwendig ist, nicht verwendete Blöcke für neue Daten zu suchen.
-
Wie oben erörtert, bringt es verschiedene technische Auswirkungen mit sich, wenn man sich auf eine RAM-Platte statt auf eine physische Platte stützt.
-
Unter Bezugnahme zurück auf die Hauptschritte des vorgeschlagenen Verfahrens ist zu beachten, dass der Algorithmus zum Suchen, welche Software-Module, die als RAM-Platte speicherbar sind, eine erhebliche Verbesserung erfährt, wenn der Ermittlungsschritt in zwei Teilschritte unterteilt wird:
- – Zuerst wird innerhalb des Anfangssatzes ein erster Teilsatz von Software-Modulen ermittelt, die mit den Hardware-Spezifikationen kompatibel sind; und
- – als Zweites werden innerhalb des ersten Teilsatzes ein oder mehrere zweite Teilsätze von Software-Modulen ermittelt, die als RAM-Platte speicherbar sind. Auf diese Weise werden nur diejenigen technisch relevanten Software-Module als mögliche Kandidaten für eine Ausführung als RAM-Platte erachtet.
- – Es können sogar noch weitere Teilschritte einbezogen werden, wie im Folgenden erörtert wird.
-
Unter Bezugnahme auf 1, 2 und 3 werden bei Ausführungsformen des obigen Verfahrens die Komponenten 15, 16, 17 des Boot-Ladeprogramms anfänglich auf einer für Benutzer vertrauenswürdigen Einheit 10 gespeichert. Ein Beispiel für eine geeignete Einheit ist die in der Einleitung erwähnte sogenannte Zone-Trusted-Information-Channel-Einheit. Auf diese Weise werden verbesserte Garantien im Hinblick auf das vorübergehende Booten der Maschine 101 bereitgestellt. Beispielsweise kann ein Arbeitgeber leicht die Kontrolle über das Boot-Ladeprogramm behalten, das auf der Einheit vorhanden ist, und es kann ansonsten eine strenge Verschlüsselungskontrolle auf der Einheit unabhängig von dem PC bereitgestellt werden, die möglicherweise nicht durch den Arbeitgeber bereitgestellt wird, sondern dem Mitarbeiter gehört.
-
Es ist zu beachten, dass neben Ausführungsformen des obigen Verfahrens (die optional eine für Benutzer vertrauenswürdige Einheit nutzen) die vorliegende Erfindung als für Benutzer vertrauenswürdige Einheit 10, die mit dem oben beschriebenen Boot-Ladeprogramm 15, 16 ausgestattet ist, oder sogar als allgemeineres System 100 verkörpert werden kann, das diese Einheit 10 und einen Computer 101 aufweist, mit dem die Einheit 10 verbindbar ist.
-
Wenngleich es sich bei der Einheit 10 bevorzugt um eine sichere Einheit handelt, d. h. die mit einem sicheren Speicher ausgestattet ist, ist dies nicht zwingend erforderlich. Sonstige Aspekte der für Benutzer vertrauenswürdigen Einheit werden im Folgenden erörtert. Die bereitgestellte (Schritt S1) Einheit 10 ist mit dem PC 101 verbindbar. Helm Verbinden (Schritt S2) der für Benutzer vertrauenswürdigen Einheit mit dem Computer wird dann zumindest ein Teil 16 des Boot-Ladeprogramms in den Hauptspeicher 110 des PC 101 zur nachfolgenden Ausführung S4 des übertragenen Teils 16 übertragen (Schritt S3).
-
Diese Übertragung wird üblicherweise durch oder über die Initialisierungs-Software 122, z. B. das BIOS, angewiesen. Da das Boot-Ladeprogramm bevorzugt nur teilweise übertragen wird (z. B. wird eine Komponente 16 davon auf den PC übertragen), kann folglich seine nachfolgende Ausführung teilweise auf dem PC (z. B. mit der Firmware 122 interagierend) und teilweise 15 auf der für Benutzer vertrauenswürdigen Einheit ausgeführt werden, wobei beide Teile 15, 16 interagierend ausgeführt werden.
-
Es ist zu beachten, dass bei Varianten die Komponente 16 des Boot-Ladeprogramms, die auf den PC übertragen worden ist, abhängig von den verfügbaren Typen von Satellitenverarbeitungsmitteln auch auf einer Graphikkarte oder einer sonstigen geeigneten Erweiterungskarte des Computers ausgeführt werden kann. Eine gleichzeitige (dennoch interaktive) Ausführung teilweise auf dem Computer, teilweise auf der Benutzereinheit ist wünschenswert, insbesondere bei einigen der im Folgenden beschrieben Ausführungsformen.
-
Die Software-Module SMn können ebenfalls anfänglich auf einer für Benutzer vertrauenswürdigen Einheit 10 gespeichert werden. In diesem Fall werden die Software-Module, die schließlich beibehalten werden (d. h. des Abschlusssatzes FS), zur nachfolgenden Speicherung und Ausführung als RAM-Platte von der für Benutzer vertrauenswürdigen Einheit 10 in den Hauptspeicher 110 des PC übertragen (Schritt S8). Bei Varianten könnten die Software-Module auf einem entfernt angeordneten Server oder sogar lokal auf dem PC gespeichert und ihre Integrität mithilfe von Verschlüsselungsprüfsummen oder dergleichen überprüft werden. Im ersten Fall ist ein zusätzlicher Datenübertragungsschritt erforderlich, um mit dem Server in Kontakt zu treten, selbst wenn noch kein OS ausgeführt wird. Im Folgenden wird ein spezifisches Verfahren erörtert, das dies ermöglicht.
-
Der Boot-Prozess kann so abgeschlossen werden durch:
- – Laden der abschließend beibehaltenen Software-Module von der für Benutzer vertrauenswürdigen Einheit (oder einer weiteren Quelle, dem lokalen Computer, dem Netzwerk usw.), und
- – bevorzugt Entschlüsseln dieser vor einem
- – Speichern der Module als RAM-Platte und Ausführen dieser.
-
Es ist zu beachten, dass im Hinblick auf eine Chronologie die Software-Module SMm vor dem Speichern der Software-Module auf der RAM-Platte, jedoch bevorzugt nach dem Ermitteln übertragen werden, welche möglichen Sätze von Software-Modulen, die einerseits mit den Hardware-Spezifikationen kompatibel sind und andererseits zum Speichern als RAM-Platte geeignet sind.
-
Bevorzugt handelt es sich dabei um das Boot-Ladeprogramm, das auf einer der beiden Seiten ausgeführt wird, d. h. auf dem Computer oder der Benutzereinheit, die am besten dazu geeignet ist, die Übertragung des Software-Moduls des Abschlusssatzes anzuweisen (möglicherweise durch Einbeziehen des BIOS 122).
-
Es wird nun im Besonderen auf 3 und 4 Bezug genommen, wobei Ausführungsformen des obigen Verfahrens des Weiteren einen Schritt S7 zum Identifizieren eines Abschlusssatzes FS von Software-Modulen aus mehreren Kandidatensätzen CS1, CS2 von Software-Modulen vor dem Speichern und Anweisen, die Software-Module als RAM-Platte auszuführen, aufweisen kann.
-
Diese Identifizierung S7 kann gemäß Eingaben ausgeführt werden, die von der für Benutzer vertrauenswürdigen Einheit 10 empfangen (Schritt S7b) werden, und dies geschieht bevorzugt aufgrund dessen, dass dieser Teil 15 des Boot-Ladeprogramms, der auf der vertrauenswürdigen Einheit 10 (interaktiv mit dem Teil 16, der auf dem PC ausgeführt wird) ausgeführt wird.
-
Es sind verschiedene Arten von Benutzereingaben möglich. Der Benutzer kann angewiesen werden anzugeben, welche Software-Module nur in dem RAM zu speichern sind oder auch auf der Festplatte des lokalen Computers gespeichert werden können. Zusätzliche Benutzereingaben können z. B. während der Ausführung eines beliebigen Tests T angefordert werden, wobei die Tests T zum Beispiel mit den Software-Modulen SM logisch verbunden sind. Beispielsweise könnten zusätzliche Eingaben einem Ortsbestimmungstest zugehörig sein („Wohnen Sie zurzeit in der Schweiz/Befindet sich Ihr Unternehmen in der Schweiz?”). Solche Informationen können jedoch auch durch sonstige Mittel wie zum Beispiel GPS-Einheiten, Zuordnungen von IP-Netzwerken zu Ländern usw. geschlossen werden. Eine noch weitere Eingabe könnte sich darauf beziehen, ob ein Unternehmens-PC erkannt wurde usw.
-
Wenn mehrere mögliche Sätze von Modulen (Kandidatensätze CS1, CS2, ...) gefunden worden sind, sind weitere Schritte erforderlich, um zu ermitteln, welcher Satz FS abschließend beizubehalten ist. Weitere Benutzerinteraktion oder Richtlinienüberprüfung kann zu diesem Zweck verwendet werden. Eingaben zum Überprüfen des Abschlusssatzes können zum Beispiel eingehen, nachdem die Kandidatensätze zur Überprüfung an den Benutzer übergeben (Schritt S7a) worden sind, oder auf Grundlage einer Wahl des Benutzers, die auf einer beliebigen früheren Stufe mitgeteilt worden ist, oder sogar auf Grundlage einer Standardauswahl, die bevorzugt durch den Benutzer modifizierbar ist.
-
Die zusätzliche Benutzerinteraktion (z. B. der Benutzer wählt den Abschlusssatz FS mithilfe von Steuerschaltflächen an der Einheit 10 und einer Anzeige aus einer Liste) wird bevorzugt über dieselbe Einheit 10 durchgeführt, die ansonsten zum Booten der Maschine verwendet wird, z. B. aufgrund des Teils des Boot-Ladeprogramms 15, der auf der Einheit 10 interaktiv mit dem Teil 16 ausgeführt wird, der auf dem PC 10 ausgeführt wird. Dennoch könnte die Entscheidung, welcher Abschlusssatz FS beizubehalten ist, automatisch durch sonstige Module getroffen werden, z. B. durch Module zur Bestätigung der Vertrauenswürdigkeit von Hardware oder Virtualisierungsprüfmodule 17, die im Folgenden beschrieben werden. Zu diesem Zweck wird bevorzugt die Einheit 10 verwendet, da möglicherweise gewünscht ist, dass bestimmte Vorgänge auf Grundlage des Vertrauens, das in die Maschine 101 und ihren Zustand besteht, aktiviert/deaktiviert werden können. Und in welchem Maß die Maschine vertrauenswürdig ist, kann erheblich variieren, insbesondere in einem BYO-Szenario.
-
Beispielsweise kann nur eine eMail-Sendefunktion zugelassen werden, selbst wenn geschlossen wird, dass der PC nicht (vollständig) vertrauenswürdig ist, und z. B. ermöglichen, die eMail durch die Einheit 10 zu überprüfen.
-
Bei Varianten kann eine Richtlinienüberprüfung dazu beitragen, einen optimalen Abschlusssatz FS von Software-Modulen mit oder ohne weitere Benutzerinteraktion zu identifizieren. Darüber hinaus könnte eine Benutzerinteraktion unabhängig von der zum Booten der Maschine verwendeten vertrauenswürdigen Einheit 10 einbezogen werden: Beispielsweise kann der Benutzer aufgefordert werden, einen Abschlusssatz FS von Modulen direkt auf dem PC während des Boot-Prozesses auszuwählen.
-
Bei Ausführungsformen kann der Schritt S6 zum Ermitteln der Kandidatensätze CS1, CS2 ein Priorisieren (Schritt S6c) der Software-Module gemäß einem beliebigen geeigneten Kriterium aufweisen. Diese Priorisierung kann von den Ergebnissen von Tests abhängen, die für die Software-Module ausgeführt werden, wie im Folgenden zu erörtern ist. Bevorzugt wird Software-Modulen, die besonders sicherheitsrelevant sind, Priorität dafür gegeben, als RAM-Platte gespeichert zu werden. Die Sicherheitskriterien könnten zum Beispiel auf den folgenden Überlegungen beruhen, nämlich ob:
- 1. Sicherheitsrelevante Daten modifiziert werden dürfen;
- 2. Sicherheitsrelevante Daten gelesen werden dürfen; und/oder
- 3. In keinem Fall auf sicherheitsrelevante Daten zugegriffen werden darf.
-
Beispielsweise kann die Absicht des Benutzers in Bezug auf solche schutzwürdigen Daten (z. B. ob solche schutzwürdigen Daten nur gelesen und nicht modifiziert werden dürfen) durch die für Benutzer vertrauenswürdige Einheit abgefragt werden, und auf Grundlage dieser Eingabe können Software-Module SM, die auf der für Benutzer vertrauenswürdigen Einheit gespeichert sind, deaktiviert, d. h. nicht in den Computer geladen, werden.
-
Sonstige Kriterien können abhängig von der Unternehmensrichtlinie definiert werden, z. B. Daten, die Einzelprojekte gefährden, anstatt das gesamte Unternehmen zu gefährden. Zahlreiche sonstige Beispiele sind möglich. Die vorliegenden Ausführungsformen sind nicht auf ein spezifisches Richtlinienschema beschränkt; geeignete Richtlinienschemata auszuwählen, ist für die vorliegende Erfindung im Wesentlichen orthogonal.
-
Wenngleich die schutzwürdigsten Software-Module wahrscheinlich als RAM-Platte gespeichert und ausgeführt werden, bleibt es dabei, dass Ausführungsformen des vorgeschlagenen Verfahrens sonstige Speicherunterstützung ergänzend zu der RAM-Platte verwenden können, wie zuvor erwähnt. Wie in 3.A oder 4 veranschaulicht, kann zum Beispiel ein zusätzlicher Satz AS von Software-Modulen ermittelt werden (Schritt S10), wobei der Satz AS Module aufweist, die nicht in dem Abschlusssatz FS von Software-Modulen vorhanden sind, die beibehalten werden, damit sie auf der RAM-Platte ausgeführt werden. Anschließend werden die Software-Module dieses zusätzlichen Satzes, bevorzugt verschlüsselt, auf einem physischen Speichermedium 120 des Computers zur nachfolgenden Ausführung (Schritt S11b) bei Bedarf gespeichert, Schritt S11a. Auf diese Weise kann eine größere Flexibilität im Hinblick auf die Auswahl von Software-Modulen, die auf dem PC ausgeführt werden, selbst in Zusammenhängen bereitgestellt werden, in denen RAM-Plattenfunktionen begrenzt sind (z. B. kann der RAM-Platte ein begrenzter Speicher zugeordnet werden). Ob dieser zusätzliche Satz von Modulen zu ermitteln ist, kann auf Grundlage von zusätzlichen Benutzereingaben oder einer Richtlinie entschieden werden.
-
Bei Varianten könnten die Software-Module des zusätzlichen Satzes sogar auf der für Benutzer vertrauenswürdigen Einheit selbst belassen werden (wobei es sich bei letzterer gewissermaßen ohnehin um ein physisches Speichermedium 120 des Computers handelt, nachdem sie mit dem Computer verbunden worden ist) und von dort aus ausgeführt werden. Da die Ausführung auf dieser Einheit üblicherweise langsam ist, werden die Software-Module des zusätzlichen Satzes bevorzugt in einem sekundären Speicher 120, d. h. „näher” an dem Hauptspeicher, und nicht in einem tertiären Speicher gespeichert.
-
Als nächstes werden die Hardware-Spezifikationen unter Bezugnahme auf 3 näher erläutert, auf die in Schritt S5ii zugegriffen wird, um die Kandidatensätze CS1, CS2 zu ermitteln (Schritt S6). Im Allgemeinen können vorliegende Verfahren ein Ergebnis einer Bewertung der Hardware-Spezifikationen verwenden, das zum Beispiel durch eine externe Entität bereitgestellt wird, die diese Bewertung durchführt, wie in 3.A veranschaulicht. Bevorzugt ist diese Bewertung jedoch Teil des Verfahrens, wie in 3.B veranschaulicht, die mögliche Schritte zum Implementieren von Schritt S5ii in 3.A veranschaulicht. In beiden Fällen kann ein Zugreifen auf Hardware-Spezifikationen des Computers eine Reihe von Tests T aufweisen (siehe 4 zur Veranschaulichung), wie in den Schritten S51.1 von 3.B dargestellt.
-
Zumindest Teile der durchzuführenden Tests T können unabhängig von den Software-Modulen bereitgestellt werden und sogar vor dem Zugriff auf die Benutzeranforderungen S5i ausgeführt werden. Bevorzugt weist jedoch jedes Software-Modul SM1, SM2 ..., wie in dem Anfangssatz IS bereitgestellt, nicht nur die (z. B. durch den Benutzer) auszuführende Software auf, sondern auch Metadaten, die die Tests T beschreiben, die auszuführen sind, bevor das Software-Modul verwendet werden kann (oder logische Verbindungen zu diesen Tests), wie in 4 symbolisch dargestellt. Die Tests T sind folglich in Ausführungsformen logisch mit den Software-Modulen verbunden.
-
Es ist zu beachten, dass solche Tests T als auszuwertende Bedingungen statt als durchzuführende Tests bereitgestellt werden können (sowohl Tests als auch Bedingungen werden hierin als „Tests” bezeichnet). Folglich kann jedes Software-Modul Tests aufweisen, die diesem zugehörig sind, die dazu führen zu ermitteln, ob und wo das Software-Modul gespeichert werden könnte, z. B. in einem flüchtigen Speicher (dem RAM des Computers), in einem permanenten Speicher (wie zum Beispiel auf einer Festplatte), oder ob durch den Computer, mit dem auch die für Benutzer vertrauenswürdige Einheit 10 verbunden ist, überhaupt nicht darauf zugegriffen werden darf. Wie in 3.B und 3.A zu sehen ist, führt das Ergebnis der obigen Testausführungen (oder Bedingungsauswertungen) zu verschiedenen Ergebnissen, die im Folgenden, und insbesondere in Schritt S6, verwendet werden.
-
Wie oben angemerkt, werden anstelle eines Speicherns der Tests T für jedes Software-Modul (z. B. darin integriert) die Tests bevorzugt als ausführbarer Programmcode bereitgestellt, der auszuführen ist, und werden getrennt von den Software-Modulen gespeichert. Die Tests können nichtsdestotrotz durch eine Kennung oder einen Verweis gekennzeichnet werden und sich die Software-Module SMi lediglich auf die entsprechende Kennung oder den entsprechenden Verweis beziehen. Dies hat den Vorteil, dass jeder Test nur einmal gespeichert wird, selbst wenn er von mehreren Software-Modulen gemeinsam genutzt wird. Dies wird in 4 veranschaulicht.
-
Es ist zu beachten, dass die Tests T, die logisch mit den Software-Modulen verbunden sind (wie in 4 dargestellt), ein umfassendes Interesse aufweisen können, das sonstige Software-Module betrifft. In diesem Fall kann eine Redundanz einer Testausführung vermieden werden, indem getestet wird, ob der Test bereits ausgewertet worden ist, Schritte S51.1.1 und S51.1.3 in 3.B. Nachdem ein allgemeiner Test durchgeführt worden ist, ist es auf diese Weise nicht erforderlich, ihn erneut durchzuführen. So könnten einige der Tests Software-Modulen zugeordnet werden, es muss jedoch nichts wiederholt werden, was bereits durchgeführt worden ist.
-
Im Einzelnen veranschaulicht 3.B ein Beispiel für Schritte zum Ermitteln, welche Software-Module verwendet werden können und wo sie zu speichern sind (auf der Festplatte des Computers oder nur auf einer RAM-Platte), in einem Zusammenhang, in dem die Tests logisch mit Software-Modulen verbunden sind (jedem Software-Modul können ein oder mehrere Tests zugehörig sein, wie in 3.B oder 4 dargestellt).
-
Zuerst wird in S51 ein erstes Software-Modul (oder das erste der verbleibenden Module) ausgewählt, das durch die für Benutzer vertrauenswürdige Einheit verwendet werden kann. Als Nächstes wird ein erster Test ausgewählt, der diesem Software-Modul zugehörig ist, S51.1. Wie oben angemerkt, wird geprüft, ob dieser selbe Test bereits ausgeführt worden ist (S51.1.1). In dem Fall werden die entsprechenden Ergebnisse abgerufen, S51.1.3. Anderenfalls wird der Test auf dem Computer ausgeführt, S51.1.2, und das Ergebnis des Tests wird gespeichert, S51.1.4. Wenn ein weiterer Test auszuführen ist, S51.1.5, wird anschließend dieser Test ausgewählt, S51.1.6, sodass jeder Test entsprechend dem Software-Modul ausgeführt wird.
-
Nachdem alle Tests ausgeführt worden sind, wird eine Bedingung ausgewertet, S51.2, die Teil des Software-Moduls ist, wodurch anschließend das Boot-Ladeprogramm darüber in Kenntnis gesetzt wird, ob des Software-Modul auf dem Computer, in einem permanenten oder flüchtigen Speicher (oder möglicherweise in beiden) gespeichert werden darf. Nachdem diese Entscheidung vermerkt worden ist, S51.3 bis 5, werden dieselben Schritte für alle nachfolgenden Software-Module SM wiederholt, S51.7.
-
Als Beispiel für einen globalen Test betrifft die vielleicht wichtigste Hardware-Spezifikation, auf die zugegriffen werden muss, die Kapazität des Hauptspeichers des Computers, da letzterer wiederum festlegt, welcher Speicher der RAM-Platte zugeordnet werden kann. Dennoch würde in einigen Szenarien, in denen begrenzte Anwendungen zulässig sind (z. B. gemäß Richtlinie) nur ein begrenzter Speicher ausreichen, sodass das Testen der Kapazität des Hauptspeichers einfach ausgelassen würde. in ähnlicher Weise könnte diese Kapazität in anderen Szenarien im Voraus bekannt sein oder gar vorhergesagt werden.
-
Zu sonstigen globalen Hardware-Spezifikationen, die sinnvollerweise getestet werden können, zählen:
- – die Prozessorarchitektur des Computers (z. B. 32- vs. 64-Bit, „64bit” in 4);
- – die Kapazität eines Speichermediums 120 des Computers; und
- – ob eine Virtualisierung unterstützt wird („hasvm„ in 4). Es ist zu beachten, dass sich dieser Test von dem Prüfen unterscheidet, ob der Computer (bereits) innerhalb einer virtuellen Umgebung („invm”) ausgeführt wird, die ein Sicherheitsrisiko darstellen kann, wie im Folgenden zu erörtern ist. Vielmehr prüft der Test „hasvm”, ob der Computer zum Implementieren eines Teils der vorliegenden Verfahren ein Starten eines virtuellen Computers, d. h. der unter der Steuerung der vorliegenden Verfahren bleiben würde, zulässt und Software innerhalb dieses virtuellen Computers ausführen lässt.
-
Darüber hinaus zählen zu sonstigen Tests, die durchgeführt werden könnten:
- – Wo befindet sich der Computer (Test misc)
- – Was möchte der Benutzer tun (nur Daten lesen oder Daten modifizieren)
-
Bevorzugt werden die obigen Hardware-Funktionen getestet, nachdem zwei andere Testtypen durchgeführt worden sind, und zwar (i) Prüfen der Vertrauenswürdigkeit der Maschine (Test „bios” in 4) und (ii) ob sich die Maschine bereits in einer virtualisierten Umgebung befindet (Test „invm” in 4). Dies liegt daran, dass es möglicherweise nicht sinnvoll ist, Hardware-Funktionen zu testen, wenn die Maschine nicht vertrauenswürdig ist. Umgekehrt können Informationen über die Hardware-Spezifikationen bereits vom Beginn des Boot-Prozesses an oder genau aus vorherigen Schritten des Prüfens der Vertrauenswürdigkeit der Maschine oder des Testens, ob sich die Maschine in einer virtualisierten Umgebung befindet, verfügbar sein. Allgemeiner ausgedrückt, können Hardware-Funktionen ungeachtet der in 3.A und 4 angenommenen Reihenfolge in verschiedenen Phasen des Prozesses getestet/bezogen werden.
-
Nun werden ausführlichere Aspekte der RAM-Plattenzuordnung unter Bezugnahme auf 3.A und 5 erörtert. Allgemeiner ausgedrückt und wie zuvor beschrieben, kann ein beliebiges Verfahren, das zum Speichern und Ausführen von Software-Modulen auf einer RAM-Platte geeignet ist, für den Implementierungsschritt S9 in Betracht gezogen werden. Im Folgenden werden zwei Hauptvarianten erörtert. Wenngleich die erste Variante etwas komplexer zu implementieren ist als die erste, ermöglicht sie eine kompaktere Dateispeicherung auf der RAM-Platte.
-
Zunächst beinhalten beide Varianten einen Schritt S9a zum Zuordnen von Speicher für die RAM-Platte, wie es sich im Allgemeinen implizit aus der RAM-Plattenbelegung ergibt. Ungeachtet der Darstellung in 3 wird diese Speicherzuordnung bevorzugt vor dem Schritt S6, d. h. vor dem Ermitteln der Kandidatensätze CS1, CS2 von Software-Modulen durchgeführt, da der Speicher, der der RAM-Platte zugeordnet ist, wiederum festlegt, wie viele/welche Software-Module tatsächlich als RAM-Platte gespeichert werden können. Ebenfalls bevorzugt wird diese Speicherzuordnung durchgeführt, nachdem Informationen über die Kapazität des Hauptspeichers des Computers bezogen worden sind, da letzteres festlegt, welcher Speicher der RAM-Platte zugeordnet werden kann, wie zuvor angemerkt. In einigen Szenarien, z. B. wo begrenzte Anwendungen zulässig sind (z. B. gemäß Richtlinie), könnte gar ein begrenzter, vorgegebener RAM-Plattenspeicher ausreichen, sodass die RAM-Plattenspeicherzuordnung sogar durchgeführt werden könnte, nachdem die Kandidatensätze CS1, CS2 ermittelt worden sind, die so eingeschränkt werden können, dass sie in den vorgegebenen RAM-Plattenspeicher passen. in diesem Fall kann der RAM-Platte in Schritt S9a Speicher gemäß dem vorgegebenen RAM-Plattenspeicher zugeordnet werden, wie in 3 dargestellt.
-
Im Wesentlichen wird bei der ersten Variante der Schritt zum Speichern der Software-Module in die folgenden Teilschritte unterteilt:
Zuerst werden in Schritt S9b Metadaten MD/ eines Dateisystems 121fs (für die RAM-Platte) gemäß den, d. h. auf Grundlage der Software-Module berechnet, die tatsächlich in dem Abschlusssatz FS beibehalten werden. Diese Metadaten geben an, welche Dateien (der Software-Module) zu speichern sind und wo sie in dem Dateisystem zu speichern sind, und genauer, welche Dateien in welchen Speicherabschnitten der RAM-Platte zu speichern sind. Die Originalität der ersten Variante besteht darin, dass die Metadaten unter Berücksichtigung von Dateien im Voraus berechnet werden, die später in Speicherabschnitten der RAM-Platte zu speichern sind. Mit anderen Worten, die Architektur des RAM-Dateisystems beruht zumindest teilweise auf den spezifischen, später zu speichernden Dateien, statt dass es sich um eine allgemeine Architektur handelt, der diese Dateien entsprechen müssen, anders als bei gewöhnlichen Gestaltungsverfahren für RAM-Plattendateisysteme.
Als Zweites werden die Metadaten in getrennte Speicherabschnitte, z. B. Speicherblöcke (oder einen Datenblock) geschrieben (Schritt S9c); und
Abschließend werden Dateien Fij von Software-Modulen des Abschlusssatzes in dem Dateisystem nacheinander in Speicherabschnitte und gemäß den Metadaten MD/ kopiert (Schritt S9d). Zur Veranschaulichung, 5 ist eine abstrakte Darstellung eines Abschnitts des verfügbaren RAM-Speicherplatzes.
In den Schritten S9b werden Metadaten berechnet, die im Besonderen die Metadaten MD/ beinhalten. In Schritt S9c werden die Metadaten MD/ in ihren jeweiligen Speicherblock geschrieben. Anschließend, Schritt S9d, werden Dateien gemäß den Metadaten MD/ in die Speicherblöcke kopiert. Da die Software-Module SM8, SM5, SM1 usw. als schutzwürdigste Module (die mit den Hardware-Funktionen der Maschine wie auch einer RAM-Plattenimplementierung kompatibel sind) beibehalten worden sind (siehe 4), werden ihre entsprechenden Dateien (wobei der Verständlichkeit halber nur zwei Dateien je Modul angenommen werden) in 5 nacheinander kopiert (F81, dann F82, dann F51 usw.). Es ist zu beachten, dass die Schritte S9c und S9d in einer beliebigen Reihenfolge, parallel usw. durchgeführt werden könnten.
-
Es werde etwa angenommen, das wie in dem Beispiel von 5 gilt:
- – Die beiden Dateien F81 und F82 des ersten beibehaltenen Software-Moduls SM8 weisen jeweils eine Größe von 20.000 Byte auf; und
- – Die beiden Dateien F51 und F52 des zweiten beibehaltenen Software-Moduls SM5 weisen jeweils eine Größe von 7.000 Byte auf.
-
Nun werde angenommen, dass die Metadaten MD1 2000. Byte einnehmen. Dann würden die Metadaten MD1 im Wesentlichen besagen:
Byte 0: Metadaten MD/:
F81, beginnt bei Byte 2.000, Größe 20.000
F82, beginnt bei Byte 22.000, Größe 20.000
F51, beginnt bei Byte 42.000, Größe 7.000
F52, beginnt bei Byte 49.000, Größe 7.000
Usw.
-
Folglich gilt in Schritt S9d:
- – Datei F81 wird an Byte 2.000 kopiert;
- – Datei F82 wird an Byte 22.000 kopiert;
- – Usw.
-
Der tatsächliche Aufbau kann in der Praxis etwas anders aussehen, z. B. damit Speicherausrichtungsanforderungen eingehalten werden. Die Beschreibung der ersten Variante oben veranschaulicht jedoch wesentliche Aspekte des Aufbaus. Im Besonderen lautet eine mögliche resultierende Datenfolge:
- – MD/
- – F81
- – F82
- – F51
- – F52
- – F11
- – F12
- – Usw.
-
Eine weitere mögliche Anordnung würde in einem Aufteilen von Metadaten bestehen, d. h.
- – MD81
- – F81
- – MD82
- – F82
- – MD51
- – F51
- – MD52
- – F52
- – MD11
- – F11
- – MD12
- – F12
- – Usw.
-
Wie oben beispielhaft dargestellt, werden im Hinblick auf jede kopierte Datei keine Metadaten a posteriori berechnet und gespeichert, wie es bei gewöhnlichen RAM-Plattendateisystemen der Fall ist. Tatsächlich und gemäß dieser zweiten Variante ist der Ablauf wie folgt:
- a. Speicher für die RAM-Platte zuordnen
- b. Ein Dateisystem auf der RAM-Platte erstellen, wie es z. B. gewöhnliche Betriebssysteme für Benutzerdaten verwenden;
- c. Die Dateien von den einzelnen Modulen auf die RAM-Platte kopieren, wie z. B. Dateien in einem gewöhnlichen GPOS kopiert würden. Auf diese Weise werden die Metadaten inkrementell erstellt, während die Dateien kopiert werden. Die Daten können jedoch nicht so effizient wie bei der vorherigen Variante gespeichert werden, bei der sämtliche Dateigrößen a priori berücksichtigt werden und ein optimaler Aufbau berechnet wird. Die zweite Variante führt lediglich zu einer Struktur, die Folgendem ähnelt, wenn zum Beispiel ein FAT32-Standarddateisystem für die RAM-Platte verwendet wird.
– Dateisystem-Metadaten;
– Dateizuordnungstabelle (file-allocation table, FAT), die angibt, welche Blöcke durch Dateien belegt sind, und die Blöcke angibt, die durch jede Datei belegt sind; und
– Blöcke von Metadaten für jedes Verzeichnis, jede Datei und Blöcke einzelner Dateien, die möglicherweise in einer beliebigen Reihenfolge verschachtelt sind, wie durch die Dateizuordnungstabelle (FAT) angegeben.
-
Das Ergebnis der vorherigen Variante ist kompakter als das Ergebnis gewöhnlicher RAM-Plattendateisysteme, was ein Einsparen erheblichen RAM-Speichers ermöglicht, da nicht zugeordnete Blöcke nicht nachverfolgt werden müssen und folglich keine Dateizuordnungstabelle (FAT) oder ähnliche Technik verwendet werden muss. Zusammengefasst: Die zweite Variante ist einfacher zu implementieren als die erste Variante. Demgegenüber stellt sie eine weniger effiziente Speicherverwaltung bereit. Es können jedoch Hybridlösungen in Betracht gezogen werden, die Aspekte der beiden obigen Varianten kombinieren.
-
Die Berechnung, die für die RAM-Plattenimplementierung erforderlich ist, wird bevorzugt auf dem Computer 101 selbst ausgeführt. Bei Varianten kann diese auch auf der für Benutzer vertrauenswürdigen Einheit 10 durchgeführt werden: In diesem Fall würde ein im Voraus erstelltes RAM-Plattenabbild auf den Computer übertragen. Eine noch weitere Option bestünde darin, alle möglichen Sätze von Software-Modulen CSp zu berechnen und jeden Satz als getrenntes mögliches Abbild auf der für Benutzer vertrauenswürdigen Einheit zu speichern. Dies würde jedoch dazu führen, dass die Module wahrscheinlich mehrfach gespeichert würden, was in den meisten gewöhnlichen Situationen nicht wünschenswert wäre. Dennoch kann eine solche Option in Betracht gezogen werden, wenn bekannt ist, dass nie mehr als z. B. zwei oder drei mögliche Sätze vorhanden sein werden.
-
Wie zuvor erwähnt, kann die vorliegende Erfindung auch als Boot-Ladeprogramm 15, 16 verkörpert werden, das zumindest teilweise in dem Hauptspeicher 110 des Computers 101 ausführbar ist, und so konfiguriert sein, dass eine Ausführung des Boot-Ladeprogramms bewirkt, dass die Schritte durchgeführt werden, die bereits oben in Bezug auf das Verfahren (beginnend mit den Hauptschritten S5, S6 und S9) erörtert worden sind.
-
Darüber hinaus kann die Erfindung des Weiteren als für Benutzer vertrauenswürdige Einheit 10, wie in 2 dargestellt, oder als computerunterstütztes System 100 (wie in 1) verkörpert werden, das die für Benutzer vertrauenswürdige Einheit 10 und den Computer 101 aufweist, üblicherweise einen PC, einen PC zur mobilen Verwendung, ein Notebook oder Netbook oder ein PDA oder ein Smartphone. Die Maschine 101 wird hierin als Computer, als Host-Computer oder einfach als PC bezeichnet.
-
Unter Bezugnahme allgemein auf 1 bis 3 weist die vertrauenswürdige Einheit 10 (auch als externer Vertrauensanker bezeichnet) im Besonderen auf:
- – eine Verbindungsschnittstelle 12, die eine Verbindung S2 mit einem Computer 101 ermöglicht; und
- – einen permanenten Speicher 14, der speichert:
• das Boot-Ladeprogramm, das so gestaltet ist, dass es zum Beispiel die Ausführung der oben bereits beschriebenen Operationen auf der Einheit 10 und/oder auf dem Computer 101 bei einer Verbindung der Einheit 10 mit dem Computer 101 über die Schnittstelle 12 ermöglicht oder auslöst; und
• bevorzugt auch die Software-Module, die Anwendungskomponenten, Betriebssystem-Abbildkomponenten und bevorzugter auch Hardware-Komponententreiber wie auch die durchzuführenden Tests T (oder nur die logischen Verbindungen zu den Tests) aufweisen.
-
Bei dieser Einheit handelt es sich üblicherweise um eine sichere Unternehmens- oder persönliche Einheit, das heißt, eine Einheit, die im Besitz und unter der Steuerung eines Unternehmens oder eines Benutzers ist, wie zum Beispiel eine USB-Einheit, bevorzugt ein USB-Flash-Laufwerk (eine Datenspeichereinheit, die einen Flash-Speicher zusätzlich zu einer integrierten Universal-Serial-Bus(USB)-Schnittstelle beinhaltet), ein Mobiltelefon oder einen persönlichen digitalen Assistenten (PDA), die nur von diesem Benutzer verwendet werden oder die im Besitz des Unternehmens sind, für das dieser Benutzer arbeitet, und durch dieses gesteuert werden. Üblicherweise weist diese Einheit ein Gewicht von weniger als 200 g, bevorzugt weniger als 60 g und bevorzugter weniger als 40 g auf.
-
Eine zuvor erwähnte Möglichkeit besteht darin, einen Dritten, z. B. einen Server 30 (siehe 1) einzubeziehen, im Besonderen zum Verteilen eines Teils oder der gesamten Software-Module SMn (statt dass sie auf der Einheit 10 gespeichert sind) oder sogar zur Unterstützung bei der Entscheidung, welcher Abschlusssatz ES von Modulen beizubehalten ist usw. In diesem Fall ist das Boot-Ladeprogramm des Weiteren so konfiguriert, dass es die Einheit 10 oder den Computer 101 anweist, eine Verbindung mit dem Server 30 herzustellen. Ein „zentraler” Server kann leichter aktualisiert werden, was die verschiedenen möglichen, sich ständig ändernden Software-Modulkomponenten und Richtlinienregeln betrifft.
-
Zu diesem Zweck kann das Boot-Ladeprogramm so konfiguriert werden, dass es interagiert:
- – mit der Initialisierungs-Firmware 122, um nachfolgend mit einer Netzwerkkarte 124 des Computers 101 zu interagieren, und dies, um eine Datenübertragung über das Netzwerk 165 (wie sie durch die Netzwerkkarte 124 ermöglicht wird) zu initiieren und eine Verbindung mit dem Server 30 herzustellen;
- – direkt mit der Netzwerkkarte 124 des Computers 101: Dies erfordert ein Zugreifen auf Netzwerkkarten-Treiber, die in diesem Fall auf der vertrauenswürdigen Einheit 10 gespeichert sind; und/oder
- – mit der Firmware 122, um ein OS teilweise auf dem Computer 101 auszuführen, d. h. die einzigen Komponenten des OS zu laden, die notwendig sind, um eine Verbindung mit dem Server 30 über den PC 101 herzustellen.
-
Datenübertragungen zwischen der Einheit 10 und der externen Entität 30 werden bevorzugt ausgeführt mithilfe von:
- – Einer HTTP-Verbindung von dem Server 30 zu der Einheit 10 durch den Computer 101;
- – Durchgängiger Berechtigungsprüfung; und
- – Ggf. Signatur- und sonstige Verschlüsselungsdaten 13, die in einem sicheren Speicher 141 der Einheit 10 gespeichert werden können.
-
Alternativ kann bevorzugt werden, die Einheit 10 mit einem Netzwerk-Zugriffsmittel, z. B. mit einer Netzwerkeinheit (drahtgebunden oder drahtlos) auszustatten, um sie zum Beispiel direkt mit einem Server zu verbinden. Eine solche Lösung ist etwas kostspieliger. Jedoch wird die Latenzzeit verringert, da keine zusätzlichen Interaktionen mit dem Computer 101 erforderlich sind, um mit dem Server in Kontakt zu treten. Hier können auch die Datenübertragungen mit dem Server 30 eine durchgängige Berechtigungsprüfung und Verschlüsselung verwenden.
-
Als Nächstes weist der permanente Speicher 14 unter Bezugnahme insbesondere auf 2 bevorzugt auf:
- – einen sicheren Speicher 141, in dem ein erster Teil 151 (oder bestimmte Abschnitte) des Boot-Ladeprogramms 15, 16, des Überprüfungsmoduls 17 usw. gespeichert werden kann; und
- – einen nicht sicheren Speicher 142, z. B. eine SD-Karte, in dem ein zweiter Teil 152 (oder sonstige Abschnitte) desselben Boot-Aktivierungsmoduls/derselben Boot-Aktivierungsmodule 15 bis 17 gespeichert werden kann.
-
Durch das Vorhandensein eines sicheren Speichers wird die für Benutzer vertrauenswürdige Einheit zu einer „sicheren” Einheit. Wenn der Computer 101 einen bestimmten Block oder einen beliebigen Datenblock des Boot-Ladeprogramms anfordert, wird die CPU 11 der Einheit durch Software, die sich in dem Speicher 14 befindet, aufgefordert, den angeforderten Block zu entschlüsseln, z. B. mithilfe von Verschlüsselungsdaten 13, die in dem sicheren Speicher 141 gespeichert sind, um den angeforderten Block bereitzustellen. Ein Entschlüsselungsschlüssel allein ist ausreichend, wenngleich bevorzugte Ausführungsformen symmetrische Verschlüsselung hierfür verwenden (folglich wird derselbe Schlüssel sowohl für die Entschlüsselung als auch für die Verschlüsselung verwendet).
-
Bevorzugt belegen der/die Abschnitt(e) des Boot-Aktivierungsmoduls/der Boot-Aktivierungsmodule 15 bis 17, die sich in dem sicheren Speicher befinden, aufgrund von Speicherbeschränkungen weniger als eine halbe Größe des sicheren Speichers. Idealerweise belegen jedoch sämtliche Teile der Boot-Aktivierungsmodule so wenig Speicher wie möglich. Beispielsweise sind einige Implementierungen erfolgreich getestet worden, die weniger als 4 ko für jeden Teil der Boot-Aktivierungsmodule 15 bis 17 belegen (ausgenommen Code zum Herstellen eines Kontakts mit einem Netzwerk-Server, der etwa 32 ko und üblicherweise weniger als 64 ko belegen würde). Fachleuchten ist ersichtlich, dass Code, der die Funktionen zum Herstellen eines Kontakts mit einem entfernt angeordneten Server implementiert, von mehreren Boot-Aktivierungsmodulen, die auf der für Benutzer vertrauenswürdigen Einheit 10 gespeichert sind, gemeinsam genutzt werden kann.
-
Die Verbindungsschnittstelle 12 der Einheit 10 kann zum Beispiel folgenden Typ aufweisen:
- – Universal Serial Bus oder USB;
- – External Small Computer System Interface oder SCSI;
- – External Serial Advanced Technology Attachment oder SATA;
- – Firewire; oder
- – Thunderbolt.
-
Allgemeiner könnte es sich jedoch um eine beliebige aktuelle oder künftige (drahtgebundene oder drahtlose) Verbindungseinheit handeln, die dem Computer ermöglicht, von der externen Einheit 10 zu booten. Darüber hinaus kann dieselbe Schnittstelle 12 des Weiteren der für Benutzer vertrauenswürdigen Einheit 10 ermöglichen, Daten mit einer beliebigen externen Einheit wie zum Beispiel einem Beamer, einem Drucker oder einer beliebigen sonstigen Ausgabeeinheit auszutauschen.
-
Wie gewöhnlich kann die für Benutzer vertrauenswürdige Einheit 10 mit einem Verarbeitungsmittel (oder einem Datenverarbeitungsmittel, d. h. einer CPU) 11 wie zum Beispiel einem Kryptoprozessor ausgestattet sein, das mit einem Speicher verbunden ist, der allgemeiner einen permanenten Speicher 14 und bevorzugt auch einen nicht permanenten Speicher aufweist (dies wird nicht ausdrücklich dargestellt, der nicht permanente Speicher kann jedoch als Teil des Verarbeitungsmittels 11 betrachtet werden).
-
Im vorliegenden Zusammenhang speichert der permanente Speicher im Besonderen computerunterstützte Verfahren, z. B. die oben erwähnten Boot-Aktivierungsmodule 15 bis 17, die durch die Verarbeitungsmittel 11, 105 auszuführen sind. Selbstverständlich könnten die hierin erwähnten Boot-Aktivierungsmodule 15 bis 17 als einzelnes Modul betrachtet werden, das mit verschiedenen Funktionen ausgestattet und in der Lage ist, auf der Einheit und auf dem Computer ausgeführt zu werden.
-
Gegebenenfalls weist die sichere Einheit 10 einen Kartenleser zum Lesen von Benutzeridentifikationsdaten auf, die auf einer Speicherkarte, z. B. dem nicht sicheren Speicher 142, oder einer beliebigen Chip-Karte gespeichert sind. Solche Daten, z. B. Benutzeridentifikationsdaten, wie sie auf der Karte gespeichert sind, können in geeigneter Weise sicher verwendet werden. Im Besonderen kann eine vertrauenswürdige Verbindung zwischen einem Benutzer (oder streng genommen der Einheit 10) und einem Dritten, z. B. dem Server 30, über den Host 101 und mithilfe solcher Daten hergestellt werden. Bei einer Variante können die Benutzeridentifikationsdaten direkt auf der sicheren Einheit gespeichert werden. Weitere gängige Schnittstellen (wie Steuerschaltflächen und eine Anzeige) können so bereitgestellt werden, dass eine Interaktion mit dem Benutzer ermöglicht wird. Vor allem kann eine solche vertrauenswürdige Anzeige an der sicheren Einheit 10 dazu verwendet werden, Zusicherungen des Benutzers über die Umgebung zu beziehen, in der er sich zurzeit befindet. Auf diese Weise kann ein Benutzer zum Beispiel, ohne darauf beschränkt zu sein, Anforderungen durch den Server 30 bestätigen, um zuzusichern, dass er sich nicht an einem öffentlichen Ort wie zum Beispiel einem Internet-Café befindet, wenn er den Computer 101 startet, um den Entscheidungsprozess 57 in Kenntnis zu setzen.
-
Wie zuvor erörtert, können mehrere Tests durchgeführt werden, um die Vertrauenswürdigkeit der Maschine 101 zu bewerten, z. B. bevor ermittelt wird, welche Module auf einer RAM-Platte gespeichert werden sollten. Eine Komponente 17 des Boot-Ladeprogramms kann für diesen Zweck vorgesehen werden. Über die zuvor erörterten globalen Tests hinaus sind zwei Typen von Tests von besonderem Interesse, die nun ausführlich erörtert werden. Bei dem ersten Testtyp dreht es sich um ein Ausführen eines virtualisierungssensitiven Codes auf der Maschine 101, um zu testen, ob die Ausführung des virtualisierungssensitiven Codes in einer virtualisierten Umgebung durchgeführt wurde. Dieser erste Testtyp wird nun kurz erörtert.
-
Im Wesentlichen weist die Ausführung dieses Testtyps die folgenden Schritte auf:
- – Schritt S51.1.2: Anweisen des Prozessors 105 des Computers 101, einen virtualisierungssensitiven Code auszuführen und bei Beendigung der Ausführung Beendigungsdaten auszugeben; und
- – Schritt S51.2: Ermitteln auf Grundlage solcher Beendigungsdaten, ob die Ausführung in einer virtualisierten Umgebung durchgeführt wurde; und
- – Dann können in Schritt S6 die Kandidatensätze von Software-Modulen ebenfalls dem gemäß ermittelt werden, ob die Ausführung des virtualisierungssensitiven Codes in einer virtualisierten Umgebung durchgeführt wurde. Wenn eine virtualisierte Umgebung erkannt wird, ist die Auswahl verfügbarer Software-Module gemäß Richtlinienregeln wahrscheinlich begrenzt oder wird möglicherweise verhindert.
-
Genauer gesagt, es werde angenommen, dass die Einheit 10 und ein Computer 101 bereitgestellt werden (Schritt S1 in 3). Dann werden bei einer Verbindung der Einheit (Schritt S2) bevorzugt die folgenden Operationen durchgeführt:
- – Der Computer 101 beginnt, von der für Benutzer vertrauenswürdigen Einheit 10 zu booten;
- – Der Prozessor 105 wird angewiesen, einen Referenzcode auszuführen;
• Der fragliche Code wird bevorzugt durch die Einheit 10 selbst bereitgestellt, z. B. durch die Boot-Ladeprogrammkomponente 17. Bei Varianten könnte eine Kennung oder gar eine Adresse des Codes an den Prozessor 105 übergeben werden. Dieser Code beinhaltet üblicherweise mehrere Befehle, die von der (Art der) getesteten Maschine abhängen können;
• Dieser Code wird so gewählt, dass er gegenüber einer virtualisierten Umgebung sensitiv ist, und wird daher als „virtualisierungssensitiver Code” bezeichnet. Im Besonderen wird dieser Code abhängig davon, ob er in einer virtualisierten Umgebung oder nativ ausgeführt wird, unterschiedlich ausgeführt und hat unterschiedliche Ausführungsmerkmale zur Folge. Die Ausführungsmerkmale können sich insbesondere unterscheiden in:
• Einem Ergebnis, das aus der Ausführung entsteht; und/oder
• Einem Rechenaufwand, der durch Zeitsteuerungseigenschaften, Prozessorzyklen usw. messbar ist. Beispielsweise würde eine Berechnung, die für x86-PCs von besonderem Interesse wäre, darin bestehen, zwischen einem realen Modus und einem geschützten Modus umzuschalten.
• Gemäß Befehl an den Prozessor findet die Ausführung des virtualisierungssensitiven Codes statt, während der Computer 101 zu booten beginnt, d. h. nachdem der Boot-Prozess begonnen hat und bevor er abgeschlossen wird, d. h. bevor entschieden wird, welches Software-Modul SMn zu laden ist.
• Der Prozessor 105 wird ferner angewiesen, bei Beendigung der Ausführung Beendigungsdaten (z. Bein Ergebnis, einen Zeitstempel oder ein mit einem Zeitstempel versehbares Ereignis usw.) auszugeben.
- – Der nächste Satz von Operationen besteht darin, auf Grundlage der Beendigungsdaten zu ermitteln, ob die Ausführung (nicht) in einer virtualisierten Umgebung durchgeführt wurde (oder entsprechend, ob die Ausführung in einer sicheren Umgebung, z. B. nativ, durchgeführt wurde); und
- – Wenn festgestellt wird, dass die Ausführung nicht in einer virtualisierten Umgebung durchgeführt wurde, schreitet der Prozess schließlich voran.
• Es können andere Bedingungen einbezogen werden, wie im Folgenden erörtert wird (z. B. kann auch das BIOS/die Firmware 122 getestet werden), bevor zu Schritt S6 übergegangen wird.
• Bei Ausführungsformen wird die Frage des Ermittelns, ob die Ausführung in einer virtualisierten Umgebung durchgeführt wurde, indirekt beantwortet, z. B. kann eine Benutzerinteraktivität erforderlich sein oder eine Verbindung zu einem Server 30, um einen Teil der Bewertung zu delegieren und aktualisierte Vergleiche auf dem Server 30 durchzuführen. Drei wahrscheinliche Szenarien sind vorstellbar:
• Wenn festgestellt wird, dass die Ausführung nicht in einer virtualisierten Umgebung durchgeführt wurde, wird der Boot-Prozess fortgesetzt.
• Wenn demgegenüber festgestellt wird, dass die Ausführung in einer virtualisierten Umgebung durchgeführt wurde, wird der Boot-Prozess modifiziert, wenn nicht sogar abgebrochen. Mehrere nachfolgende Szenarien können in diesem Bereich in Betracht gezogen werden:
• Ein oder mehrere Software-Module werden als zum Speichern in einem physischen Speicher ungeeignet erklärt und sollten nur auf einer RAM-Platte gespeichert werden;
• Ein oder mehrere Software-Module werden deaktiviert;
• Die Einheit 10 wird abgeschaltet, d. h. es werden keine Daten, Schlüssel, Software-Module usw. an den Computer 101 übergeben.
• Es können auch Zwischenszenarien in Betracht gezogen werden, die dazu führen können, dass ein eingeschränkter Satz von Software-Modulen (bei dem nicht alle Komponenten zulässig sind) oder eine modifizierte Version des OS geladen wird, wobei Programmkorrekturen (patches)/Programme zum Bereinigen des Computers 101 geladen werden.
-
Wie ebenfalls zuvor erwähnt, besteht ein zweiter Testtyp, der durchgeführt werden kann, aus einem Testen der Initialisierungs-Firmware (z. B. des BIOS) 122 des Computers. Im Wesentlichen weist die Ausführung in diesem Fall die folgenden Schritte auf:
- – Schritt S51.1.2: „Firmware-Daten” werden einem Code zugeordnet. Bei Firmware-Daten handelt es sich um Daten, die Programmcode der Initialisierungs-Firmware 122 des Computers 101 aufweisen, und/oder um Daten, auf die durch die Initialisierungs-Firmware 122 zugegriffen werden kann. Der resultierende Code ist ein „Zuordnungs”-Code, d. h. er muss von dem Programmcode der Firmware unterschieden werden; und
- – Schritt S51.2: Es wird auf die Vertrauenswürdigkeit des Zuordnungscodes geschlossen, d. h. die Vertrauenswürdigkeit dieses Codes kann bestätigt werden.
-
Dieser zweite Testtyp wirkt sich auch auf die nachfolgenden Schritte S6 (und möglicherweise auch S10) aus, d. h. die Kandidatensätze der Software-Module SMn werden bevorzugt ebenfalls abhängig davon ermittelt, ob der obige Code bestätigt werden kann.
-
Ein Neustarten eines Computers von einem externen Boot-Medium und ein Starten eines „sauberen” OS („sauber” vom Blickwinkel der Sicherheit aus betrachtet) von dem externen Medium oder eines ansonsten vertrauenswürdigen OS ist eine Möglichkeit zum Lösen des Problems, dass jegliche Software, die auf einem PC ausgeführt wird, von einer Reihe von Viren oder zerstörerischer Software angegriffen werden kann, die in dem Betriebssystem des PC vorhanden sein können. Aus diesem Ansatz ergibt sich jedoch insbesondere die folgende Frage: ist das BIOS und, allgemeiner ausgedrückt, jegliche Initialisierungs-Firmware 122, die an dem Start des PC beteiligt ist, vertrauenswürdig? Tatsächlich könnte Initialisierungs-Firmware während des Starts des Computers zum Ausführen aufgefordert werden, der infiziert werden könnte. Um dieses Problem zu lösen, ermöglicht der obige Test („bios”), dass die Vertrauenswürdigkeit solcher Firmware bestätigt wird, indem Daten, die Programmcode der Initialisierungs-Firmware aufweisen, und/oder Daten, auf die durch die Initialisierungs-Firmware zugegriffen werden kann, bezogen werden, während das Booten begonnen wird, und nachfolgend solche „Firmware-Daten” geprüft werden.
-
Wie und in welchem Umfang der Computer fortfährt, von dem externen Medium zu booten, kann davon abhängen, ob die Firmware-Daten bestätigt werden, genau wie bei dem Virtualisierungstest. Ein Schlüsselelement beider Tests besteht darin, dass sie einen Vertrauensanker außerhalb des PC erfordern, d. h. der definitionsgemäß für zerstörerische Software oder einen Angreifer erheblich weniger zugänglich ist als ein gewöhnlicher PC, PDA usw.
-
Es sind mehrere mögliche Varianten vorhanden, welche wesentlichen Informatonen, d. h. welche Firmware-Daten zu verwenden sind. Den Programmcode (d. h. Daten, die den Programmcode der Firmware oder nur einen Teil davon erfassen) selbst zu verwenden, ist insofern bereits ausreichend, als ein Angreifer daran gehindert wird, den Programmcode der Firmware zu ändern. Unabhängig von dem Programmcode der Firmware ist ein Verwenden von Daten, auf die durch die Initialisierungs-Firmware zugegriffen werden kann, wie zum Beispiel Konfigurationsdaten für die Initialisierungs-Firmware, ebenfalls vorteilhaft, da die reinen Konfigurationsdaten manipuliert werden könnten. Idealerweise werden sowohl der Programmcode der Firmware der Initialisierungs-Firmware als auch Daten verwendet, auf die durch die Initialisierungs-Firmware zugegriffen werden kann.
-
Was die Firmware-Daten betritt: Beim Starten können zum Beispiel ein Hash-Wert, der über einen ROM oder einen CMOS-ROM berechnet wird, der für die Firmware 122 vorgesehen oder zugänglich ist (und folglich sowohl den Programmcode als auch die Konfigurationsdaten der Firmware aufweist) wie auch beliebige sonstige Schlüsselkennzeichnungs-Zeichenfolgen verwendet werden. Solche Daten kennzeichnen die Firmware als solche (den Programmcode der Firmware) wie auch den Zustand der Firmware und stellen daher eine solide Grundlage dahingehend bereit, ob die Initialisierungs-Firmware gefährdet ist.
-
Darüber hinaus ermöglicht ein Zuordnen solcher Daten zu einem einzelnen Code ein schnelles Prüfen und so eine schnelle Bestätigung. Zum Beispiel können ein Hash-Wert, der über den ROM des BIOS, den CMOS-ROM des BIOS errechnet wird, und/oder sonstige BIOS-Schlüsselkennzeichnungs-Zeichenfolgen verwendet werden. Allgemeiner ausgedrückt, jegliche(r) Algorithmus/Unterroutine, der/die in der Lage ist, einen Firmware-Datensatz einem Code, bevorzugt mit einer festen Länge, zuzuordnen, wie zum Beispiel einer einzelnen Ganzzahl, kann zum Vereinfachen der nachfolgenden Prüfung verwendet werden. Wenngleich ein Verwenden einer Hash-Funktion in vielerlei Hinsicht geeigneter erscheint, könnte sich auch auf eine einfache Prüfsumme gestützt werden. Abhängig von der gewünschten Sicherheitsstufe kann nun dennoch ein Verwenden von Fingerabdrücken, d. h. Hochleistungs-Hash-Funktionen zum eindeutigen Identifizieren von wesentlichen Datensätzen, kryptografischen Hash-Funktionen oder gar Randomisierungsfunktionen bevorzugt werden.
-
Über die beiden Testtypen („invm”, „bios”) hinaus, die soeben oben oder zuvor erörtert worden sind („64 Bit”, „hasvm”, Hauptspeicherkapazität usw.), kann sich jeglicher Test, der in Schritt S5ii durchgeführt wird (Funktionsprüfungen, Vertrauenswürdigkeitsprüfungen usw.) auf die Auswahl von Software-Modulen (S6, S10) und, wo sie zu speichern sind (S9, S11), auswirken.
-
Die obigen Ausführungsformen sind unter Bezugnahme auf die beigefügten Zeichnungen kurz beschrieben worden, und es sind eine Reihe von Varianten möglich. Es können mehrere Kombinationen der obigen Merkmale in Betracht gezogen werden. Beispiele werden im nächsten Abschnitt angeführt.
-
2. Bevorzugtes Szenario
-
- S1: Der Computer 101 und die vertrauenswürdige Einheit werden bereitgestellt. Das Boot-Ladeprogramm 15, 16 und die Software-Module werden anfänglich auf der vertrauenswürdigen Einheit 10 gespeichert S1;
- S2: Die für Benutzer vertrauenswürdige Einheit 10 wird mit dem Computer 101 verbunden S2.
- S3: Bei Verbindung S2 der für Benutzer vertrauenswürdigen Einheit mit dem Computer wird das Boot-Ladeprogramm erkannt, und eine) Komponente/Teil 16 davon wird zur nachfolgenden Ausführung in den Hauptspeicher 110 des Computers 101 übertragen;
- S4: Die Komponente 16 des Boot-Ladeprogramms wird zumindest teilweise in dem Hauptspeicher 110 ausgeführt, wohingegen eine weitere Komponente 15 (oder ein Modul usw.) möglicherweise interaktiv auf der vertrauenswürdigen Einheit 10 ausgeführt wird;
- S5: Bei Ausführung kann das Boot-Ladeprogramm zunächst verschiedene Prüfungen an der Maschine 101 durchführen. Dann wird auf einige Anforderungen zugegriffen, die betreffen:
i. den Anfangssatz IS von Software-Modulen SM1, ... SMn, den z. B. ein Arbeitgeber oder ein Mitarbeiter auf der Maschine 101 ausführen möchte; und
ii. Hardware-Spezifikationen des Computers. Das Boot-Ladeprogramm führt dort eine Reihe von Tests T durch, die üblicherweise, jedoch nicht zwingend, logisch mit den Software-Modulen des Satzes IS verbunden sind. Das Boot-Ladeprogramm kann zum Beispiel prüfen, ob die Ausführung auf der Maschine in einer virtualisierten Umgebung durchgeführt wird, und die Vertrauenswürdigkeit der Maschine bestätigen. Sonstige Beispiele für Tests sind zuvor erörtert worden.
1. Das Ergebnis dieser Tests wirkt sich auf den Kandidatensatz/die Kandidatensätze von Software-Modulen, die als Nächstes zu ermitteln sind, Schritt S6, und allgemeiner auf die Schritte S9 und S10 aus.
2. Verschiedene Boot-Operationen können abhängig von den Ergebnissen der Tests in dieser Phase abgeschlossen werden.
3. Bei Varianten sind die Tests (oder ein Teil davon) global und nicht im Besonderen mit den Software-Modulen des Anfangssatzes IS verbunden. In diesem Fall können diese Tests sogar vor dem Zugreifen auf Benutzeranforderungen (Schritt S5i) durchgeführt werden.
4. In allen Fällen hängt von den Ergebnissen der Tests ab, ob die nachfolgenden Schritte S6, S9, S10, ..., ausgeführt werden und in welchem Umfang.
- S6: Als Nächstes werden die Kandidatensätze CS1, CS2 von Software-Modulen innerhalb des Anfangssatzes IS ermittelt. Es ist zu beachten, dass der Speicher für die RAM-Platte bevorzugt vor Schritt S6 zugeordnet wird, da die Auswahl der Software-Module bevorzugt abhängig von dem zugeordneten Speicher durchgeführt wird, was wiederum von den Hardware-Funktionen der Maschine abhängt. Bei Varianten kann sich auf eine vorgegebene Speichergröße gestützt werden, in diesem Fall kann die Speicherauslastung der RAM-Platte jedoch suboptimal sein. Genauer gesagt:
a. Die Software-Module in diesen Kandidatensätzen müssen mit den Hardware-Spezifikationen kompatibel sein, auf die zuvor zugegriffen worden war; und
b. Ihre Größe, ihr Inhalt, ihre Ausführungslogik usw. sind dergestalt, dass sie als RAM-Platte 121 gespeichert werden können. Wie in 4 beispielhaft dargestellt, haben die Module SM4, SM7 die Tests nicht bestanden und werden verworfen)
c. Die Ermittlung des Kandidatensatzes/der Kandidatensätze kann einen Schritt zum Priorisieren derjenigen Software-Module beinhalten, die gemäß einem bestimmen Sicherheitskriterium besonders sicherheitsrelevant sind. Es ist zu beachten, dass der Schritt der Priorisierung vor den Schritten S6a und S6b durchgeführt werden kann, wie in 4 veranschaulicht (und anders als bei der Ausführungsform von 3.A), wobei die Ergebnisse der in Schritt S5ii durchgeführten Tests berücksichtigt werden. Wenngleich die Schritte S6a bis c im Allgemeinen in einer beliebigen Reihenfolge durchgeführt werden können, kann es tatsächlich effizienter sein, sie in dieser Reihenfolge durchzuführen: S6c → S6a → S6b.
i. Ein einfaches Auswahlschema besteht darin, alternative Sätze von Software-Modulen zu identifizieren, die zusammen in die Größe der RAM-Platte 121 passen (und die ansonsten die Tests von S5ii bestanden haben);
ii. Wenn Priorisierung einbezogen wird, werden alternative Sätze der schutzwürdigsten Software-Module ermittelt, die zusammen auf die RAM-Platte 121 passen und die Tests bestanden haben.
- S7: Abhängig von der Richtlinie, auf die sich gestützt wird, und von möglichen Abhängigkeiten zwischen den Software-Modulen (und ggf. entsprechenden Treibern) können mehrere potenzielle Kandidatensätze CS1, CS2 ermittelt werden. In diesem Fall beinhaltet das Verfahren zusätzliche Schritte S7 zum Identifizieren eines Abschlusssatzes FS von Software-Modulen, der abschließend aus den mehreren Kandidatensätzen ausgewählt wird SC2.
– Dies wird bevorzugt gemäß Eingaben ausgeführt, die von der für Benutzer vertrauenswürdigen Einheit empfangen werden (Schritt S7b), z. B. wegen des Teils 15 des Boot-Ladeprogramms, der auf der für Benutzer vertrauenswürdigen Einheit interaktiv mit dem Teil 16 des Boot-Ladeprogramms ausgeführt wird, der in dem Hauptspeicher ausgeführt wird, nachdem die Kandidatensätze dem Benutzer zur Überprüfung übergeben worden sind (Schritt S7a).
– In dem Beispiel von 4 sind die beiden möglichen Kandidatensätze mit CS1 (SM8 ... SM6) und CS2 (SM8 ... SM3) gekennzeichnet.
– In diesem Beispiel ist eine weitere Interaktion S7 mit einem Benutzer zum Auswählen aus SM3 oder SM6 erforderlich, da aufgrund des vorherigen Priorisierungsschritts und der Größe der Module SM8 ... SM2 (die jeweils schutzwürdiger als SM3 und SM6 sind) nur ein zusätzliches Modul (SM3 oder SM6) auf der RAM-Platte gespeichert werden kann.
- S8: Die abschließend beibehaltenen Software-Module des Satzes CS2 (= FS) werden auf den Computer 101 übertragen. Die Module können anfänglich auf der für Benutzer vertrauenswürdigen Einheit 10 oder auf einem entfernt angeordneten Server 30 gespeichert werden. Eine Möglichkeit besteht darin, sie auf der Einheit 10 zu speichern. Die abschließend beibehaltenen Module können so schnell zur nachfolgenden Speicherung und Ausführung als RAM-Platte von der vertrauenswürdigen Einheit in den Hauptspeicher übertragen werden, ohne dass eine zusätzliche Netzwerkverbindung erforderlich ist. Dabei handelt es sich üblicherweise um das Boot-Ladeprogramm (das auf einer der Seiten, d. h. auf dem Computer oder auf der Benutzereinheit ausgeführt wird), das die Übertragung der Software-Module anweist.
- S9: Die Software-Module werden dann auf einer RAM-Platte gespeichert, wobei dieser Schritt bevorzugt wie folgt unterteilt wird:
a. Zuerst könnte Speicher für die RAM-Platte in Varianten der, zuvor in Schritt S6 erwähnten, bevorzugten Option zugeordnet werden (oder in dieser Phase auf Grundlage der abschließenden Auswahl von Software-Modulen sogar korrigiert werden).
b. Metadaten eines Dateisystems für die RAM-Platte werden gemäß den Software-Modulen des Abschlusssatzes FS berechnet: Die Metadaten geben an, welche Dateien in welchem Speicherabschnitt der RAM-Platte zu speichern sind;
c. Anschließend werden die Metadaten in getrennte Speicherabschnitte, zum Beispiel Datenblöcke, auf der RAM-Platte geschrieben; und
d. Die Dateien von beibehaltenen Software-Modulen werden in dem Dateisystem nacheinander in die Speicherabschnitte und gemäß den Metadaten kopiert.
e. Schließlich wird angewiesen, sie direkt auf der RAM-Platte auszuführen.
- S10: Nach oder gleichzeitig mit dem Schritt S7 kann ferner ein zusätzlicher Satz AS von Software-Modulen SM6, ... SMk ermittelt werden, d. h. der Module aufweist, die nicht in dem Abschlusssatz enthalten sein werden, der für die Ausführung als RAM-Platte beibehalten wird; und
- S11: Speichern der Module SM6, ... SMk dieses zusätzlichen Satzes AS, bevorzugt verschlüsselt (Schritt S11a), auf dem physischen Speichermedium 120 des Computers zur nachfolgenden Ausführung (Schritt S11b). Gemäß dem Priorisierungsprozess stellen diese zusätzlichen Module ein geringeres Risiko als die Module dar, die in CS2 beibehalten worden sind (oder gar kein Risiko). Sie können daher mit mäßigem Risiko auf dem physischen Speichermedium 120 gespeichert werden. Selbstverständlich können bei Varianten strengere Richtlinien implementiert werden, die ein Speichern jeglicher Module auf dem physischen Speichermedium 120 verhindern.
- S12: Am Ende einer Sitzung kann der Benutzer (oder die Einheit 10 oder gar das Modul 16, das noch in dem Hauptspeicher ausgeführt wird) anweisen, die Ausführung der Software-Module zu beenden, die als RAM-Platte (Schritt S12a) oder in dem physischen Speicher 120 (Schritt S12b) gespeichert sind. Anschließend kann der Prozess beendet werden durch:
- S13: Trennen der Verbindung mit der Einheit 10; und
- S14: Entfernen von Software von dem physischen Speicher 120.
- S15: Abschließend wird der RAM gelöscht. Wie veranschaulicht, wird dieser Schritt bevorzugt ausgeführt, nachdem das physische Speichersystem gelöscht worden ist. Dies dient dazu, jegliche verbleibenden Daten von dem Computer 101 zu beseitigen, z. B. permanente (physisch gespeicherte) Daten, die üblicherweise für eine höhere Betriebsleistung im RAM zwischengespeichert werden. Auf diese Weise stellt das System sicher, dass keine Spuren der Sitzung für mögliche Angreifer zurückbleiben.
-
3. Technische Implementierungsdetails einiger spezifischer Ausführungsformen
-
Es folgen Beispiele für (Folgen von) Befehlen, die in vorteilhafter Weise zum Implementieren von Ausführungsformen der Erfindung verwendet werden könnten. Dem Fachmann ist ersichtlich, dass sonstige Befehle mit derselben/ähnlicher Funktionalität vorhanden sind, die so verwendet werden könnten, dass im Wesentlichen dasselbe erreicht wird.
-
Zunächst wird ein Beispiel für eine API gegeben, die ein Lesen von BIOS-Daten („Firmware-Konfigurationsdaten”) ermöglicht:
outb(cmos_data_address, 0x70);
data_at_address = inb(0x71);
wobei cmos_data_address über den Bereich 0...max_cmos_data_address iteriert wird. Sonstige ähnliche Befehle zum Lesen des Firmware-Programmcodes selbst und/oder der Firmware-Konfiguration werden durch den Firmware-Hub (FWH) 82802AB/82802AC von Intel bereitstellt.
-
In dem EFI-BIOS kann durch Lesen der EFI-Variablen durch den Funktionsaufruf GetVariable auf die EFI-Konfiguration zugegriffen werden. Das Beziehen von Informationen über das BIOS selbst funktioniert ähnlich wie bei herkömmlichen BIOS, insbesondere wenn z. B. der Firmware-Hub von Intel verwendet wird.
-
Als Nächstes wird ein Beispiel für Befehle gegeben, die ein Interagieren mit der für Benutzer vertrauenswürdigen Einheit von dem PC aus ermöglichen:
Lese einen Block von der für Benutzer vertrauenswürdigen Einheit (Massenspeichereinheit)
mov ah, 42h
mov dl, the_drive_to_read_from
mov ds:si, disk_address_packet_describing_what_to_read
int 13h
Schreibe einen Block auf die für Benutzer vertrauenswürdige Einheit (Massenspeichereinheit)
mov ah, 43h
mov dl, the_drive_to_write_to
mov ds:si, disk_address_packet_describing_what_to_write
int 13h
-
In dem EFI-BIOS könnte das sogenannte EFI_DISK_IO_PROTOCOL oder EFI_BLOCK_IO_PROTOCOL verwendet werden, die jeweils Lese- und Schreibfunktionen bereitstellen.
-
Geeignete Platten-E/A-Befehle sind Fachleuten leicht zugänglich.
-
Schließlich zählen zu einem Beispiel einer Folge von Befehlen, die durch die Module dazu verwendet werden können, ein PXE-BIOS zu initialisieren, ohne auf diese beschränkt zu sein:
Load UNDI ROM
PXENV_START_UNDI
PXENV_UNDI_STARTUP
PXENV_UNDI_INITIALIZE
PXENV_UNDI_OPEN
-
Ein zusätzlicher Befehl (z. B. PXENV_UNDI_TRANSMIT) könnte hinzugefügt werden, damit Pakete über die Netzwerkkarte 124 an den Server 30 gesendet werden. Durch solche Befehle interagieren die Module bei Ausführung auf dem Host mit dem PXE-BIOS 122 so, dass die Netzwerkkarte 124 initialisiert wird, wodurch eine Datenübertragung über das Netzwerk initiiert werden kann.
-
Ähnliche Befehle werden durch das EFI- und das UEFI-BIOS in der EFI_SIMPLE_NETWORK-API (Initialisieren, Starten, Stoppen, Empfangen, Übertragen) bereitgestellt. BIOS können auch übergeordnete Protokollimplementierungen des TCP/IP-Stapels und sonstige Netzwerkprotokolle bereitstellen, die ebenfalls verwendet werden können.
-
Die Hardware-Spezifikation kann mithilfe des CPU-Befehls cpuid id bezogen werden, der die unterstützten Merkmale in die CPU-Register zurückgibt. Verschiedene CPU-Informationen sind für verschiedene, an diese Funktion übergebene IDs verfügbar. Zusätzlich können einige Hardware-Spezifikationen (zum Beispiel ob Virtualisierungsunterstützung durch das BIOS deaktiviert worden ist) mithilfe von modellspezifischen Registern bezogen werden, die durch den CPU-Befehl rdmsr reg bezogen werden können.
-
Abschließend kann ein Ausführen von Software-Modulen zum Beispiel mithilfe der system()- oder der exec()-Familie von POSIX-Funktionen erreicht werden.
-
Die vorliegende Erfindung ist zwar mit Bezug auf eine begrenzte Anzahl von Ausführungsformen, Varianten und die beigefügten Zeichnungen beschrieben worden, für Fachleute ist jedoch ersichtlich, dass verschiedene Änderungen vorgenommen werden können und gleichartige Elemente ausgetauscht werden können, ohne vom Umfang der vorliegenden Erfindung abzuweichen. Im Besonderen kann ein (einheitenähnliches oder verfahrensähnliches) Merkmal, das bei einer bestimmten Ausführungsform, Variante erwähnt worden ist oder in einer Zeichnung dargestellt worden ist, mit einem weiteren Merkmal in einer weiteren Ausführungsform, Variante oder Zeichnung kombiniert oder ersetzt werden, ohne vom Umfang der vorliegenden Erfindung abzuweichen. Verschiedene Kombinationen der Merkmale, die im Hinblick auf jegliche der obigen Ausführungsformen oder Varianten beschrieben worden sind, können dementsprechend in Betracht gezogen werden, die innerhalb des Umfangs der beigefügten Ansprüche bleiben. Darüber hinaus können zahlreiche geringfügige Modifizierungen vorgenommen werden, um eine bestimmte Situation an die Lehren der vorliegenden Erfindung anzupassen, ohne von ihrem Umfang abzuweichen. Daher soll die vorliegende Erfindung nicht auf die besonderen offenbarten Ausführungsformen beschränkt sein, sondern die vorliegende Erfindung soll alle Ausführungsformen beinhalten, die in den Umfang der beigefügten Ansprüche fallen. Darüber hinaus können zahlreiche Varianten, die oben nicht ausdrücklich erwähnt worden sind, in Betracht gezogen werden. Beispielsweise könnte die sichere Einheit mit Solarzellen oder beliebigen sonstigen geeigneten Akkus usw. mit Strom versorgt werden. Wie zuvor erwähnt, sind die hierin beschriebenen computerunterstützten Verfahren gemäß ihrer Hauptfunktionen beschrieben worden, die der Deutlichkeit halber den jeweiligen Modulen 15 bis 17 zugewiesen worden sind. Ausführungsformen der vorliegenden Erfindung könnten jedoch in gleichwertiger Weise beschrieben werden, indem dieselben Funktionen über nur ein Modul oder mehrere Module neu verteilt werden.
-
Bezugszeichenliste
-
- 10
- für Benutzer vertrauenswürdige Einheit
- 11
- CPU der sicheren Einheit
- 12
- Verbindungsschnittstelle der für Benutzer vertrauenswürdigen Einheit
- 13
- Verschlüsselungs-/Entschlüsselungsschlüssel
- 14
- Permanenter Speicher der vertrauenswürdigen Einheit
- 15, 16
- Boot-Ladeprogramm
- 15
- Boot-Ladeprogramm (der Teil, der auf der für Benutzer vertrauenswürdigen Einheit ausgeführt wird)
- 16
- Boot-Ladeprogramm (der Teil, der in den Hauptspeicher des Computers übertragen wird)
- 17
- Überprüfungsmodul
- 30
- Server
- 100
- Allgemeines computerunterstütztes System
- 101
- Host-Computer
- 105
- Computerprozessor
- 110
- Hauptspeicher des Computers
- 111
- Betriebssystem (OS)
- 115
- Speichersteuereinheit
- 120
- physisches Speichermedium (z. B. Platte)
- 121
- RAM-Platte
- 121fs
- Dateisystem für die RAM-Platte
- 122
- Firmware/Initialisierungs-Software (z. B. BIOS) des Host-Computers
- 124
- Netzwerkkarte
- 125
- Anzeigesteuereinheit
- 130
- Anzeige
- 141
- Sicherer Speicher der vertrauenswürdigen Einheit
- 142
- Nicht sicherer Speicher der vertrauenswürdigen Einheit
- 145
- E/A-Einheiten (oder Peripheriegeräte)
- 150
- Tastatur
- 151
- erster Abschnitt des lokalen Teils des Boot-Ladeprogramms
- 152
- zweiter Abschnitt des lokalen Teils des Boot-Ladeprogramms
- 155
- Maus
- 165
- Netzwerk
- AS
- Satz (zusätzlicher Satz) von Software-Modulen
- CS1, CS2, CSp
- Sätze (Kandidatensätze) von Software-Modulen
- Fij
- j-te Datei des Software-Moduls SMi
- FS
- Abschlusssatz von Software-Modulen
- IS
- Anfangssatz von Software-Modulen
- MD/
- Metadaten
- SMi
- Software-Module
- T
- Software-Modultests