DE112014000337T5 - Sichere Ausführung von Software-Modulen auf einem Computer - Google Patents

Sichere Ausführung von Software-Modulen auf einem Computer Download PDF

Info

Publication number
DE112014000337T5
DE112014000337T5 DE112014000337.9T DE112014000337T DE112014000337T5 DE 112014000337 T5 DE112014000337 T5 DE 112014000337T5 DE 112014000337 T DE112014000337 T DE 112014000337T DE 112014000337 T5 DE112014000337 T5 DE 112014000337T5
Authority
DE
Germany
Prior art keywords
software modules
computer
ram disk
boot loader
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112014000337.9T
Other languages
English (en)
Inventor
Peter Buhler
Luis Garces-Erice
Thomas Gschwind
Frank Hoering
John G. Rooney
Paolo Scotton
Michael Baentsch
Michael Peter Kuyper-Hammond
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112014000337T5 publication Critical patent/DE112014000337T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

Die vorliegende Erfindung bezieht sich insbesondere auf ein Verfahren zum Ausführen von Software-Modulen auf einem Computer, wobei das Verfahren aufweist: Ausführen (S4) eines Boot-Ladeprogramms (15, 16) zumindest teilweise (16) auf dem Computer (101); und bei Ausführung des Boot-Ladeprogramms: Zugreifen (S5) auf Anforderungen an einen Anfangssatz (IS) von Software-Modulen SMn; und Hardware-Spezifikationen des Computers; Ermitteln (S6) innerhalb des Anfangssatzes eines oder mehrerer Kandidatensätze (CS1, CS2) von Software-Modulen, die mit den Hardware-Spezifikationen kompatibel sind (S6a) und als RAM-Platte speicherbar sind (S6b); und Speichern (S9) der Software-Module eines Abschlusssatzes (FS) auf einer RAM-Platte (121), wobei es sich bei dem Abschlusssatz (FS) 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. Die vorliegende Erfindung bezieht sich des Weiteren auf ein Boot-Ladeprogramm, eine für Benutzer vertrauenswürdige Einheit und ein System.

Description

  • 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

Claims (15)

  1. Verfahren zum Ausführen von Software-Modulen auf einem Computer, wobei das Verfahren aufweist: Ausführen (S4) eines Boot-Ladeprogramms (15, 16) zumindest teilweise (16) auf dem Computer (101), bevorzugt in einem Hauptspeicher (110) davon; bei Ausführung des Boot-Ladeprogramms: Zugreifen (S5) auf: Anforderungen (S5i) an einen Anfangssatz (IS) von Software-Modulen (SMn); und Hardware-Spezifikationen (S5ii) des Computers, Ermitteln (S6, S6a bis c) innerhalb des Anfangssatzes eines oder mehrerer Kandidatensätze (CS1, CS2) von Software-Modulen, die mit den Hardware-Spezifikationen kompatibel (S6a) sind und als RAM-Platte speicherbar sind (S6b); und Speichern (S9a bis d) der Software-Module eines Abschlusssatzes (FS) auf einer RAM-Platte (121), wobei es sich bei dem Abschlusssatz (FS) um einen des einen oder der mehreren Kandidatensätze handelt, und Anweisen, die auf der RAM-Platte gespeicherten Software-Module auszuführen (S9e), wobei sowohl der Anfangssatz als auch der Abschlusssatz von Software-Modulen Anwendungskomponenten und Betriebssystem-Abbildkomponenten aufweist und des Weiteren bevorzugt Hardware-Komponententreiber aufweist.
  2. Verfahren nach Anspruch 1, wobei das Boot-Ladeprogramm (15, 16) anfänglich auf einer für Benutzer vertrauenswürdigen Einheit (10) gespeichert wird (S1), die mit dem Computer (101) verbindbar ist, wobei das Verfahren des Weiteren vor dem Ausführen des Boot-Ladeprogramms einen Schritt aufweist zum: Übertragenlassen (S3), bei einer Verbindung (S2) der für Benutzer vertrauenswürdigen Einheit mit dem Computer, zumindest eines Teils (16) des Boot-Ladeprogramms in den Computer (101), bevorzugt in den Hauptspeicher des Computers, zur nachfolgenden Ausführung (S4) des übertragenen Teils (16).
  3. Verfahren nach Anspruch 1 oder 2, wobei die Software-Module anfänglich auf einer für Benutzer vertrauenswürdigen Einheit (10) gespeichert werden (S1), wobei letztere mit dem Computer (101) verbindbar ist, wobei das Verfahren des Weiteren vor dem Speichern der Software-Module auf der RAM-Platte, einen Schritt aufweist zum: Übertragen (S8) von Software-Modulen des Abschlusssatzes (FS) von der für Benutzer vertrauenswürdigen Einheit in den Hauptspeicher (110) des Computers (101) zur nachfolgenden Speicherung und Ausführung der übertragenen Software-Module als RAM-Platte.
  4. Verfahren nach Anspruch 2 oder 3, wobei das Verfahren des Weiteren vor dem Speichern und Anweisen zum Ausführen der Software-Module als RAM-Platte einen Schritt aufweist zum: Identifizieren (S7) eines Abschlusssatzes (FS) von Software-Modulen aus mehreren Kandidatensätzen (CS1, CS2) von Software-Modulen gemäß Eingaben, die von der für Benutzer vertrauenswürdigen Einheit empfangen werden, bevorzugt aufgrund dessen, dass ein Teil (15) des Boot-Ladeprogramms auf der für Benutzer vertrauenswürdigen Einheit interaktiv mit einem weiteren Teil (16) des Boot-Ladeprogramms ausgeführt wird, das in dem Computer ausgeführt wird.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei das Ermitteln (S6) eines oder mehrerer Kandidatensätze von Software-Modulen, die als RAM-Platte speicherbar sind, ein Priorisieren (S6c) von Software-Modulen aufweist, bevorzugt ein Priorisieren (S6c) von Software-Modulen, die gemäß einem bestimmten Sicherheitskriterium besonders sicherheitsrelevant sind.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei das Verfahren des Weiteren aufweist: Ermitteln (S10) eines zusätzlichen Satzes (AS) von Software-Modulen, die sich nicht in dem Abschlusssatz (FS) von Software-Modulen befinden, die auf der RAM-Platte auszuführen sind; und Speichern (S11) von Software-Modulen dieses zusätzlichen Satzes, bevorzugt verschlüsselt, auf einem physischen Speichermedium 120 des Computers zur nachfolgenden Ausführung.
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei das Zugreifen auf Hardware-Spezifikationen des Computers ein Durchführen von Tests (T) aufweist 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 wobei bevorzugt zumindest einige der Tests logisch mit Software-Modulen des Anfangssatzes (IS) verbunden sind; und bevorzugter das Ermitteln (S6) eines oder mehrerer Kandidatensätze von Software-Modulen, die als RAM-Platte speicherbar sind, ein Priorisieren (S6c) von Software-Modulen gemäß Ergebnissen der durchgeführten Tests aufweist.
  8. Verfahren nach einem der Ansprüche 1 bis 7, das des Weiteren aufweist: Zuordnen (S9a) von Speicher für die RAM-Platte, bevorzugt vor dem Ermitteln (S6) des einen oder der mehreren Kandidatensätze (CS1, CS2) von Software-Modulen, die als RAM-Platte speicherbar sind (S6b); und wobei der Schritt zum Speichern (S9) der Software-Module aufweist: Berechnen (S9b) von Metadaten (MD/) eines Dateisystems (121fs) für die RAM-Platte gemäß den Software-Modulen des Abschlusssatzes (FS), wobei die Metadaten angeben, welche Dateien, die diese Software-Module bilden, zu speichern sind und wo sie in dem Dateisystem zu speichern sind; Schreiben (S9c) der Metadaten in getrennte Speicherabschnitte, zum Beispiel Speicherblöcke, auf der RAM-Platte; und Kopieren (S9d) von Dateien von Software-Modulen des Abschlusssatzes in dem Dateisystem nacheinander in die Speicherabschnitte und gemäß den Metadaten.
  9. Boot-Ladeprogramm (15, 16), das zumindest teilweise auf einem Computer (101), bevorzugt in einem Hauptspeicher davon, ausführbar ist und das so konfiguriert ist, dass eine Ausführung des Boot-Ladeprogramms bewirkt: Zugreifen (S5) auf: Anforderungen an einen Anfangssatz (IS) von Software-Modulen (SMn); und Hardware-Spezifikationen des Computers, Ermitteln (S6) innerhalb des Anfangssatzes eines oder mehrerer Kandidatensätze (CS1, CS2) von Software-Modulen, die mit den Hardware-Spezifikationen kompatibel sind (S6a) und die als RAM-Platte speicherbar sind (S6b); und Speichern (S9) der Software-Module eines Abschlusssatzes (FS) auf einer RAM-Platte (121), wobei es sich bei dem Abschlusssatz (FS) 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.
  10. Für Benutzer vertrauenswürdige Einheit (10), die aufweist: eine Verbindungsschnittstelle (12), die eine Verbindung (S2) mit einem Computer (101) ermöglicht; und einen permanenten Speicher (14), der speichert. das Boot-Ladeprogramm nach Anspruch 9; und bevorzugt Software-Module, die Anwendungskomponenten, Betriebssystem-Abbildkomponenten und bevorzugt Hardware-Komponententreiber aufweisen.
  11. Für Benutzer vertrauenswürdige Einheit (10) nach Anspruch 10, wobei der permanente Speicher (14) des Weiteren speichert: Software-Module, die Anwendungskomponenten, Betriebssystem-Abbildkomponenten und bevorzugt Hardware-Komponententreiber aufweisen; und Software-Modultests (T) zum Ermitteln, ob die Software-Module mit den Hardware-Spezifikationen kompatibel sind (S6a) und als RAM-Platte speicherbar sind (S6b), wobei die Software-Modultests bevorzugt logisch mit den Software-Modulen verbunden sind.
  12. Für Benutzer vertrauenswürdige Einheit (10) nach Anspruch 10 oder 11, wobei der permanente Speicher aufweist einen sicheren Speicher (141), in dem ein erster Abschnitt (151) des Boot-Ladeprogramms gespeichert ist; und einen nicht sicheren Speicher (142), in dem ein zweiter Abschnitt (152) des Boot-Ladeprogramms gespeichert ist, und wobei bevorzugt der zweite Abschnitt des Boot-Ladeprogramms sich verschlüsselt in dem nicht sicheren Speicher befindet, wobei ein entsprechender Verschlüsselungsschlüssel oder Entschlüsselungsschlüssel (13) in dem sicheren Speicher gespeichert ist.
  13. Für Benutzer vertrauenswürdige Einheit (10) nach Anspruch 10, 11 oder 12, wobei das Boot-Ladeprogramm des Weiteren so konfiguriert ist, dass es als Teil von Software-Modultests (T) zum Ermitteln, ob die Software-Module mit den Hardware-Spezifikationen kompatibel sind (S6a) und als RAM-Platte speicherbar sind (S6b), bewirkt: Anweisen (S51.1.2) eines Prozessors (105) des Computers (101), einen virtualisierungssensitiven Code auszuführen und bei Beendigung der Ausführung Beendigungsdaten auszugeben; Ermitteln (S51.2) auf Grundlage solcher Beendigungsdaten, ob die Ausführung in einer virtualisierten Umgebung durchgeführt wurde; und Ermitteln (S6) 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.
  14. Für Benutzer vertrauenswürdige Einheit (10) nach Anspruch 10 bis 13, wobei das Boot-Ladeprogramm des Weiteren so konfiguriert ist, dass es als Teil von Software-Modultests (T) zum Ermitteln, ob die Software-Module mit den Hardware-Spezifikationen kompatibel sind (S6a) und als RAM-Platte speicherbar sind (S6b), bewirkt: Zuordnen (S51.1.2) von Firmware-Daten zu einem Code, wobei die Firmware-Daten Programmcode einer Initialisierungs-Firmware und/oder Daten aufweisen, auf die durch die Initialisierungs-Firmware (122) des Computers zugegriffen werden kann; Bestätigen (S51.2) der Vertrauenswürdigkeit des Codes; und Ermitteln (S6) des einen oder der mehreren Kandidatensätze von Software-Modulen ebenfalls dem gemäß, ob der Code bestätigt ist.
  15. System (100), das aufweist: eine für Benutzer vertrauenswürdige Einheit (10) nach einem der Ansprüche 10 bis 14; und den Computer (101), mit dem die für Benutzer vertrauenswürdige Einheit (10) verbindbar ist.
DE112014000337.9T 2013-03-28 2014-03-14 Sichere Ausführung von Software-Modulen auf einem Computer Pending DE112014000337T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1305727.8A GB2512376A (en) 2013-03-28 2013-03-28 Secure execution of software modules on a computer
GBGB-1305727.8 2013-03-28
PCT/IB2014/059804 WO2014155229A1 (en) 2013-03-28 2014-03-14 Secure execution of software modules on a computer

Publications (1)

Publication Number Publication Date
DE112014000337T5 true DE112014000337T5 (de) 2015-09-10

Family

ID=48444958

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014000337.9T Pending DE112014000337T5 (de) 2013-03-28 2014-03-14 Sichere Ausführung von Software-Modulen auf einem Computer

Country Status (5)

Country Link
US (1) US9824220B2 (de)
JP (1) JP5970141B2 (de)
DE (1) DE112014000337T5 (de)
GB (1) GB2512376A (de)
WO (1) WO2014155229A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015225270A1 (de) * 2015-12-15 2017-06-22 Siemens Aktiengesellschaft Verfahren und Sicherheitsmodul zum Bereitstellen einer Sicherheitsfunktion für ein Gerät

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10798108B2 (en) * 2014-11-14 2020-10-06 Marvell Asia Pte, Ltd. Apparatus and method for a multi-entity secure software transfer
US9524249B2 (en) * 2014-12-23 2016-12-20 Intel Corporation Memory encryption engine integration
US20160188874A1 (en) * 2014-12-29 2016-06-30 Rubicon Labs, Inc. System and method for secure code entry point control
US10127137B2 (en) * 2015-06-03 2018-11-13 Fengwei Zhang Methods and systems for increased debugging transparency
US10541816B2 (en) 2016-06-01 2020-01-21 International Business Machines Corporation Controlling execution of software by combining secure boot and trusted boot features
US11263074B1 (en) 2018-03-29 2022-03-01 Keep Security, Llc Systems and methods for self correcting secure computer systems
US11231988B1 (en) 2018-03-29 2022-01-25 Keep Security, Llc Systems and methods for secure deletion of information on self correcting secure computer systems
US10579465B1 (en) 2018-03-29 2020-03-03 Keep Security LLC Systems and methods for self correcting secure computer systems
US11175981B1 (en) 2018-03-29 2021-11-16 Keep Security LLC Systems and methods for dynamic self correcting secure computer systems
US11669389B1 (en) 2018-03-29 2023-06-06 Keep Security, Llc Systems and methods for secure deletion of information on self correcting secure computer systems
US11080400B2 (en) 2019-08-28 2021-08-03 Palo Alto Networks, Inc. Analyzing multiple CPU architecture malware samples
CN112631666B (zh) * 2020-12-29 2023-01-31 杭州雾联科技有限公司 一种硬盘启动转网卡引导的无盘启动方法
CN115480835A (zh) * 2021-05-31 2022-12-16 合肥杰发科技有限公司 程序启动方法和设备、存储介质
CN113254089B (zh) * 2021-06-04 2021-10-29 深圳市科力锐科技有限公司 系统引导方式修正方法、装置、设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW314289U (en) 1996-08-08 1997-08-21 Nat Science Council Co Ltd Device for converting parallel two light intensities difference into pulse width modulation
US20100146256A1 (en) * 2000-01-06 2010-06-10 Super Talent Electronics Inc. Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces
JP2003004455A (ja) * 2001-06-15 2003-01-08 Mitsubishi Electric Corp 車載用ナビゲーション装置
US6907522B2 (en) 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
US7073013B2 (en) * 2003-07-03 2006-07-04 H-Systems Flash Disk Pioneers Ltd. Mass storage device with boot code
CA2547630A1 (en) * 2003-11-26 2005-06-16 Hewlett-Packard Development Company, L.P. System and method for management and installation of operating system images for computers
TW200604819A (en) 2004-07-16 2006-02-01 Mitac Technology Corp Method for fast initializing and playing multi-media A/V function with non-hard-disk storage medium
US20060277546A1 (en) 2005-06-02 2006-12-07 Rothman Michael A Detecting virtualization
US8695102B2 (en) 2006-05-01 2014-04-08 International Business Machines Corporation Controlling execution of executables between partitions in a multi-partitioned data processing system
FR2901038A1 (fr) * 2006-05-15 2007-11-16 France Telecom Procede et dispositif de configuration securisee d'un terminal au moyen d'un dispositif de stockage de donnees de demarrage
US7743242B2 (en) * 2006-10-16 2010-06-22 Scalent Systems Inc. Method and system for automatic generation of operating system boot images
US7788477B1 (en) * 2007-01-31 2010-08-31 Hewlett-Packard Development Company, L.P. Methods, apparatus and articles of manufacture to control operating system images for diskless servers
AU2008241369A1 (en) * 2007-04-24 2008-10-30 Cbb International Pty Ltd A computer operating device
JP2009301504A (ja) * 2008-06-17 2009-12-24 Sharp Corp コンピュータ、記録媒体および情報処理方法
TW201013418A (en) * 2008-09-23 2010-04-01 Asustek Comp Inc Computer system and method for connecting remote disk through internet
JP5354189B2 (ja) * 2009-04-27 2013-11-27 凸版印刷株式会社 セキュア媒体
US20120011354A1 (en) * 2010-07-02 2012-01-12 Encryptakey, Inc. Boot loading of secure operating system from external device
US8499142B1 (en) * 2010-07-22 2013-07-30 American Megatrends, Inc. UEFI boot loader for loading non-UEFI compliant operating systems
US8468334B1 (en) * 2011-01-28 2013-06-18 American Megatrends, Inc. Efficient initial RAM disk creation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015225270A1 (de) * 2015-12-15 2017-06-22 Siemens Aktiengesellschaft Verfahren und Sicherheitsmodul zum Bereitstellen einer Sicherheitsfunktion für ein Gerät

Also Published As

Publication number Publication date
US20160070914A1 (en) 2016-03-10
JP5970141B2 (ja) 2016-08-17
WO2014155229A1 (en) 2014-10-02
JP2016517976A (ja) 2016-06-20
GB201305727D0 (en) 2013-05-15
US9824220B2 (en) 2017-11-21
GB2512376A (en) 2014-10-01

Similar Documents

Publication Publication Date Title
DE112014000337T5 (de) Sichere Ausführung von Software-Modulen auf einem Computer
DE112018002031B4 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
DE112015004555B4 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
RU2714607C2 (ru) Двукратная самодиагностика памяти для защиты множества сетевых конечных точек
DE102019127892A1 (de) Sichern eines Plattform-Links mit Verschlüsselung
DE112016000576T5 (de) Sicheres Booten eines Computers von einer für den Benutzer vertrauenswürdigen Einheit aus
CN103843006B (zh) 用于向用户终端配备操作系统的方法和设备
DE102013112672B4 (de) Datenspeicher für eine Remote-Umgebung
DE102008011925B4 (de) Sicheres Initialisieren von Computersystemen
DE102007057901B4 (de) Anordnung, Computerprogrammprodukt und Verfahren zur sicheren Aktualisierung von Firmware einer Hardwarevorrichtung unter Verwendung eines Hypervisor
US9813485B2 (en) Communication of virtual machine data
US20130311990A1 (en) Client-side virtualization architecture
DE102019128261A1 (de) Datenfreigabesteuerung auf der Basis von Authentifizierung und Verbindungsstreckenschutz
US7577949B2 (en) Installation source management
DE112005001739T5 (de) Nachverfolgung geschützter Speicherbereiche zur Beschleunigung von Antivirusprogrammen
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE112014000965T5 (de) Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System
DE112011104325T5 (de) Computerlesbare Speichermedien zum Verschlüsseln und Entschlüsseln einer virtuellen Platte
DE202014011092U1 (de) Sicherheitsarchitektur für virtuelle Maschinen
US9690944B2 (en) System and method updating disk encryption software and performing pre-boot compatibility verification
JPWO2010079772A1 (ja) シンクライアントシステム、シンクライアント実施方法、及びシンクライアント用プログラム
DE202015009482U1 (de) System einer Festplattenvollverschlüsselung mit Prüfung der Kompatibilität der Boot-Platte
DE112015007220T5 (de) Techniken zum Koordinieren von Vorrichtungshochfahrsicherheit
DE102021127629A1 (de) Virtualisierung der sicheren speicherung eines baseboard management controllers auf einem host- computergerät
US10261920B2 (en) Static image RAM drive

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication