DE112013005184T5 - Für einen Benutzer vertrauenswürdige Einheit zum Erkennen einer virtualisierten Umgebung - Google Patents

Für einen Benutzer vertrauenswürdige Einheit zum Erkennen einer virtualisierten Umgebung Download PDF

Info

Publication number
DE112013005184T5
DE112013005184T5 DE112013005184.2T DE112013005184T DE112013005184T5 DE 112013005184 T5 DE112013005184 T5 DE 112013005184T5 DE 112013005184 T DE112013005184 T DE 112013005184T DE 112013005184 T5 DE112013005184 T5 DE 112013005184T5
Authority
DE
Germany
Prior art keywords
computer
processor
execution
virtualization
trusted entity
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
DE112013005184.2T
Other languages
English (en)
Inventor
Thomas Gschwind
Andreas Schade
Michael Baentsch
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 DE112013005184T5 publication Critical patent/DE112013005184T5/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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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
    • 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
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Die vorliegende Erfindung ist insbesondere auf ein Verfahren gerichtet, um einen Computer (101) zu befähigen, von einer für einen Benutzer vertrauenswürdigen Einheit (10) zu booten, wobei die für einen Benutzer vertrauenswürdige Einheit (10) eine Verbindungsschnittstelle (12) aufweist, die ein Herstellen einer Verbindung (S2) mit dem Computer (101) ermöglicht, wobei das Verfahren aufweist: Ermöglichen (S3), dass der Computer (101) ein Booten von der für einen Benutzer vertrauenswürdigen Einheit (10) beginnt bei Verbindung (S2) der für einen Benutzer vertrauenswürdigen Einheit mit dem Computer (101) über die Verbindungsschnittstelle (12); Anweisen eines Prozessors (105) des Computers (101), virtualisierungskritischen Code auszuführen (S7) und beim Beendigen des Ausführens Beendigungsdaten auszugeben, wobei die Beendigungsdaten von dem virtualisierungskritischen Code und seiner Ausführung durch den Prozessor (105) abhängen; Ermitteln (S9 bis S14) auf der Grundlage der Beendigungsdaten, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte, und Ermöglichen (S15), dass der Computer (101) ein Booten von der für einen Benutzer vertrauenswürdigen Einheit (10) ausführt, wenn festgestellt wird, dass das Ausführen nicht in einer virtualisierten Umgebung erfolgte. Die Erfindung ist des Weiteren auf eine für einen Benutzer vertrauenswürdige Einheit gerichtet, die dieses Verfahren und zugehörige Systeme ermöglicht.

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung bezieht sich allgemein auf das Gebiet für einen Benutzer vertrauenswürdiger Einheiten, von denen Computer gebootet werden können, sowie zugehörige Einheiten, Systeme und Verfahren.
  • HINTERGRUND DER ERFINDUNG
  • Es wird eine Technologie benötigt, die ermöglichen könnte, dass Software auf jedem Computer, der nicht vorab vorbereitet oder durchgesehen wurde (z. B. private PCs eines Arbeitnehmers), ausgeführt werden kann, wobei gewährleistet ist, dass ihre Ausführung sicher ist, beispielsweise so sicher wie auf einem Firmen/Betriebs-PC. Eine derartige Technologie würde eine vertrauenswürdige „Bring-your-own”-(BYO-)Datenverarbeitungsumgebung ermöglichen. BYO bezieht sich im Allgemeinen auf eine „Bring-our-own-Einheit” (BYOD), „Bring-your-own-Technologie” (BYOT) oder ein damit eng verbundenes „Bring-your-own-Verhalten” (BYOB). BYOD oder BYOT betrifft den Firmen/Geschäfts-Grundsatz, dass Arbeitnehmer persönliche mobile Einheiten zur Arbeitsstelle mitbringen und nutzen und auf eMails, Datenbanken und Dateien des Arbeitgebers zugreifen können, während derartige Einheiten ansonsten zuhause genutzt werden, wodurch ein Zugreifen auf persönliche Anwendungen/Daten über dieselben Einheiten erfolgt. BYOB erweitert dies neben der Hardware auf Software, die in der Einheit verwendet wird.
  • Heutzutage ist bekannt, dass jede Software, die auf einem Computer ausgeführt wird, möglicherweise von mehreren Viren und Schadsoftware (Malware) angegriffen werden kann, die in dem Betriebssystem des PC vorhanden sein können. Eine Lösung dieses Problems besteht darin, einen PC von einem externen Boot-Medium neu zu starten, das beispielsweise in einer für den Benutzer vertrauenswürdigen Einheit gespeichert ist, bei der es sich üblicherweise um eine sichere Einheit handelt, und ein neues und aus sicherheitstechnischer Sicht sauberes Betriebssystem (BS) von dem externen Medium zu starten.
  • Dieser Ansatz weist jedoch, wie die Erfinder der vorliegenden Erfindung erkannt haben, insbesondere einen wesentlichen technischen Nachteil auf, der durch die vorliegende Erfindung beseitigt werden soll.
  • Außerdem werden externe Boot-Medien häufig auf vertrauenswürdigen Einheiten bereitgestellt (darunter gegen betrügerische Fälschungen gesicherte Einheiten), wobei der Einheitentyp allgemein bekannt ist. Für Online-Transaktionen handelt es sich beispielsweise bei einer Lösung, die entwickelt wurde, um den sogenannten Zone Trusted Information Channel (oder kurz ZTIC). Bei ZTIC handelt es sich um eine sichere nichtprogrammierbare Einheit für ein Erkennen der Echtheit von Transaktionsdaten. Da der ZTIC eine sichere Ende-zu-Ende-Netzwerkverbindung zu dem Server unterhält, ist der ZTIC selbst bei Angriffen von Schadsoftware gegen betrügerische Fälschungen gesichert, und da er unabhängig von dem Host, mit dem er verbunden ist, eigene Eingabe- und Ausgabekomponenten aufweist, sind die Daten, die auf der ZTIC-Anzeige erscheinen, unverfälscht. Weitere Einzelheiten können z. B. gefunden werden in ”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 (Eds.): TRUST 2008, LNCS 4968, pp. 75–91, 2008. Springer-Verlag Berlin Heidelberg 2008.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß einem ersten Aspekt wird die vorliegende Erfindung als eine für einen Benutzer vertrauenswürdige Einheit ausgeführt, die aufweist:
    eine Verbindungsschnittstelle, die eine Verbindung mit einem Computer ermöglicht; und
    Speichermodule mit dauerhaften Speichern, die bei Verbindung der für einen Benutzer vertrauenswürdigen Einheit mit dem Computer über die Verbindungsschnittstelle eingerichtet sind zum:
    Ermöglichen, dass der Computer ein Booten von der für den Benutzer vertrauenswürdigen Einheit beginnt;
    Anweisen eines Prozessors des Computers, virtualisierungskritischen Code auszuführen, während ein Booten begonnen wird, und beim Beenden des Ausführens Beendigungsdaten auszugeben;
    Ermitteln auf der Grundlage dieser Beendigungsdaten, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte; und
    Befähigen des Computers, ein Booten von der für einen Benutzer vertrauenswürdigen Einheit auszuführen, wenn festgestellt wird, dass das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  • Die Module weisen vorzugsweise auf:
    ein Boot-Ladeprogramm, das ermöglicht, dass der Computer ein Booten von der Einheit beginnt und ausführt;
    ein Prozessorbefehlsmodul, das in dem Computer ausführbar ist, um den Prozessor anzuweisen, den virtualisierungskritischen Code auszuführen und Beendigungsdaten auszugeben; und
    ein Prüfmodul, das so eingerichtet ist, dass es auf der Grundlage der Beendigungsdaten ermittelt, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte, wobei das Prüfmodul in der Einheit und/oder dem Computer ausführbar ist,
    wobei das Boot-Ladeprogramm durch die Initialisierungs-Firmware bei Verbindung der für einen Benutzer vertrauenswürdigen Einheit mit dem Computer erkennbar ist und Befehle für die Firmware aufweist, um eine Übertragung des Prozessorbefehlsmoduls an den Computer für ein nachfolgendes Ausführen in dem Computer auszulösen.
  • Gemäß einer ersten Klasse von Ausführungsformen ist das Prozessorbefehlsmodul des Weiteren so eingerichtet, dass es beim Ausführen in dem Computer den Prozessor anweist, virtualisierungskritischen Code auszuführen, der für den Prozessor entwickelt wurde, um als Teil der Beendigungsdaten eine Liste von einem oder mehreren Merkmalen zu erzeugen, die durch den Computer und vorzugsweise durch den Prozessor selbst unterstützt werden.
  • Gemäß einer zweiten Klasse von Ausführungsformen ist das Prozessorbefehlsmodul des Weiteren so eingerichtet, dass es beim Ausführen in dem Computer den Prozessor anweist, als Teil der Beendigungsdaten einen Endzustandswert in Abhängigkeit von einem rechentechnischen Aufwand des Prozessors zu erzeugen, der zum Ausführen des virtualisierungskritischen Codes erforderlich ist, und das Prozessorbefehlsmodul ist vorzugsweise des Weiteren so eingerichtet, dass es beim Ausführen in dem Computer den Prozessor anweist, einen Anfangszustandswert zu erzeugen, der einen Zustand des Prozessors vor einem Ausführen des virtualisierungskritischen Codes widerspiegelt.
  • Bei Ausführungsformen ist das Prüfmodul in der Einheit 10 ausführbar, um auf der Grundlage des Anfangszustandswerts und des Endzustandswerts einen Prozessornutzungswert zu erzeugen, der den rechentechnischen Aufwand des Prozessors quantifiziert, der zum Ausführen des virtualisierungskritischen Codes erforderlich ist wie z. B. eine Berechnungszeitdauer, eine Anzahl von Prozessorzyklen oder einen Zählerwert, und das Prüfmodul ist des Weiteren so eingerichtet, dass es anweist, auf der Grundlage des Prozessornutzungswerts zu ermitteln, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  • Bei weiteren Ausführungsformen ist das Prozessorbefehlsmodul des Weiteren so eingerichtet, dass es beim Ausführen in dem Computer den Prozessor anweist, als Teil der Beendigungsdaten einen Prozessornutzungswert zu erzeugen, der den rechentechnischen Aufwand des Prozessors quantifiziert, der zum Ausführen des virtualisierungskritischen Codes erforderlich ist, wie z. B. eine Berechnungszeitdauer, eine Anzahl von Prozessorzyklen oder einen Zählerwert, und das Prüfmodul ist des Weiteren so eingerichtet, dass es die Anweisung ausgibt, auf der Grundlage des Prozessornutzungswerts zu ermitteln, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  • Das Prüfmodul kann des Weiteren vorteilhaft so eingerichtet sein, dass es die Anweisung ausgibt, vorzugsweise über den Computer eine Verbindung mit einem Server herzustellen, um in dem Server wenigstens teilweise zu ermitteln, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  • Das Prüfmodul kann beispielsweise so eingerichtet sein, dass es ausführt:
    • – Zusammenwirken mit der Firmware, um anschließend mit einer Netzwerkkarte des Computers zusammenzuwirken, um eine Datenübertragung über ein Netzwerk auszulösen, das durch die Netzwerkkarte freigegeben wird, um eine Verbindung mit dem Server herzustellen; und/oder
    • – Zugreifen auf Netzwerkkartentreiber, die in der für einen Benutzer vertrauenswürdigen Einheit gespeichert sind, um mit einer Netzwerkkarte des Computers direkt zusammenzuwirken, um eine Datenübertragung über ein Netzwerk auszulösen, das durch die Netzwerkkarte freigegeben wurde, um eine Verbindung dem Server herzustellen;
    • – Zusammenwirken mit der Firmware, vorzugsweise über das Boot-Ladeprogramm, um ein Betriebssystem des Computers teilweise auszuführen, das beim Herstellen einer Verbindung mit dem Server über den Computer erforderlich ist.
  • Der virtualisierungskritische Code weist vorzugsweise auf:
    • – Befehle zum Umschalten des Prozessors von einer geschützten Betriebsart in eine reelle Betriebsart und/oder Befehle zum Umschalten des Prozessors von einer reellen Betriebsart in eine geschützte Betriebsart; und/oder;
    • – Befehle für den Prozessor zum Lesen eines maschinenspezifischen Registers; und/oder
    • – Befehle für den Prozessor zum Schreiben in ein maschinenspezifisches Register.
  • Gemäß einem weiteren Aspekt wird die Erfindung als ein Verfahren ausgeführt, um einen Computer in die Lage zu versetzen, von einer für einen Benutzer vertrauenswürdigen Einheit zu booten, wobei die für einen Benutzer vertrauenswürdige Einheit eine Verbindungsschnittstelle aufweist, die eine Verbindung mit dem Computer ermöglicht, wobei das Verfahren aufweist:
    Ermöglichen, dass der Computer ein Booten von der für einen Benutzer vertrauenswürdigen Einheit beginnt, wenn eine Verbindung der für einen Benutzer vertrauenswürdigen Einheit mit dem Computer über die Verbindungsschnittstelle hergestellt wird;
    Anweisen eines Prozessors des Computers:
    virtualisierungskritischen Code auszuführen und
    Beendigungsdaten beim Beendigen des Ausführens auszugeben, wobei Beendigungsdaten von dem virtualisierungskritischen Code und seiner Umsetzung durch den Prozessor abhängig sind;
    auf der Grundlage der Beendigungsdaten Feststellen, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte; und
    Ermöglichen, dass der Computer ein Booten von der für einen Benutzer vertrauenswürdigen Einheit ausführt, wenn festgestellt wird, dass das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  • Das Verfahren weist vorzugsweise ein Zusammenwirken mit einer Initialisierungs-Firmware des Computers bei einer Verbindung der für einen Benutzer vertrauenswürdigen Einheit mit dem Computer auf zum Ermöglichen, dass der Computer ein Booten von der für einen Benutzer vertrauenswürdigen Einheit beginnt; und
    Auslösen einer Übertragung eines Prozessorbefehlsmoduls zu dem Computer für ein nachfolgendes Ausführen in dem Computer, um zu bewirken, dass der Prozessor den virtualisierungskritischen Code umsetzt und die Beendigungsdaten beim Beenden des Ausführens ausgibt.
  • Bei bevorzugten Ausführungsformen weist das Ermitteln, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte, ein Ausführen eines Prüfmoduls in der Einheit und/oder in dem Computer auf und das Ausführen des Prüfmoduls weist vorzugsweise ein Herstellen einer Verbindung mit einem Server auf, das in der Regel über den Computer erfolgt, um in dem Server wenigstens teilweise zu ermitteln, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  • Gemäß der ersten Klasse von Ausführungsformen wird der Prozessor des Weiteren angewiesen, als Teil der Beendigungsdaten eine Liste von einem oder mehreren Merkmalen zu erzeugen, die durch den Computer und vorzugsweise durch den Prozessor selbst unterstützt werden.
  • Gemäß der zweiten Klasse von Ausführungsformen wird der Prozessor des Weiteren angewiesen, als Teil der Beeridigungadaten einen Endzustandswert zu erzeugen, der von einem rechentechnischen Aufwand des Prozessors abhängig ist, der zum Ausführen des virtualisierungskritischen Codes erforderlich war wie z. B. eine Berechnungszeitdauer, eine Anzahl von Prozessorzyklen oder ein Zählerwert,
    wobei der Prozessor vorzugsweise des Weiteren angewiesen wird, einen Anfangszustandswert vor einem Ausführen des virtualisierungskritischen Codes zu erzeugen.
  • Gemäß einem abschließenden Aspekt wird die Erfindung als ein Computerprogrammprodukt verkörpert, damit ein Computer von einer für einen Benutzer vertrauenswürdigen Einheit gebootet werden kann, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit Modulen aufweist, die darin verkörpert sind, wobei die Module ein Ausführen sämtlicher Schritte aller Verfahren gemäß den oben genannten Ausführungsformen zulassen.
  • Einheiten, Systeme und Verfahren, die die vorliegende Erfindung verkörpern, werden im Folgenden in Form von nichteinschränkenden Beispielen und unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • KURZBESCHREIBUNG VON MEHREREN ZEICHNUNGSANSICHTEN
  • 1 stellt schematisch ein computergestütztes Mehrzwecksystem dar, das zum Ausführen eines oder mehrerer Verfahrensschritte geeignet ist, die an Ausführungsformen der Erfindung beteiligt sind;
  • 2 veranschaulicht schematisch ausgewählte Komponenten einer für einen Benutzer vertrauenswürdigen Einheit, die an Ausführungsformen beteiligt sind; und
  • 3 ist ein Ablaufplan gemäß Ausführungsformen, der in Übersichtsform Schritte eines Verfahrens veranschaulicht, mit dem ein Computer von einer für einen Benutzer vertrauenswürdigen Einheit gebootet werden kann, die z. B. in 1 dargestellt ist.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • Die nachfolgende Beschreibung ist folgendermaßen aufgebaut. Zunächst werden allgemeine Ausführungsformen und Varianten in Übersichtsform beschrieben (Abschnitt 1). Der nächste Abschnitt ist spezifischeren Ausführungsformen und Einzelheiten der technischen Umsetzung gewidmet (Abschnitt 2).
  • 1. Allgemeine Ausführungsformen und Varianten in Übersichtsform
  • 1 stellt ein allgemeines computergestütztes System dar, das zum Ausführen von Verfahrensschritten geeignet ist, die an Ausführungsformen der Erfindung beteiligt sind.
  • Es ist klar, dass die hier beschriebenen Verfahren größtenteils nichtinteraktiv und mit Hilfe von computergestützten Systemen wie beispielsweise Servern oder eingebetteten Systemen automatisiert sind. Bei beispielhaften Ausführungsformen können die hier beschriebenen Verfahren in einem (teilweise) interaktiven oder einem nichtinteraktiven System ausgeführt werden. Diese Verfahren können des Weiteren in Software (z. B. Firmware), Hardware oder einer Kombination hiervon ausgeführt werden. Bei beispielhaften Ausführungsformen werden die hier beschriebenen Verfahren in Software als ein ausführbares Programm umgesetzt, und dieses wird durch einen Spezial- oder Mehrzweckcomputer wie beispielsweise Personal Computer, Arbeitsstation, Kleincomputer oder Mainframe-Computer ausgeführt. Das allgemeinste System 100 enthält deswegen Mehrzweckcomputer 101.
  • Wie in 1 gezeigt enthält der Computer 101 bei beispielhaften Ausführungsformen in Bezug auf die Hardware-Architektur einen Prozessor 105, einen Speicher 110, der mit einer Speichersteuereinheit 115 verbunden ist, und eine oder mehrere Eingabe- und/oder Ausgabe-Einheiten (E/A-Einheiten) (oder periphere Einheiten) 10, 145, die über eine lokale Eingabe/Ausgabe-Steuereinheit 135 zum Datenaustausch angeschlossen sind. Bei der Eingabe/Ausgabe-Steuereinheit 135 kann es sich wie im Stand der Technik bekannt um einen oder mehrere Busse oder andere leitungsgestützte oder drahtlose Verbindungen handeln, jedoch ohne darauf beschränkt zu sein. Die Eingabe/Ausgabe-Steuereinheit 135 kann zusätzliche Elemente aufweisen, die zur Einfachheit weggelassen sind wie z. B. Steuereinheiten, Puffer (Cache-Speicher), Treiber, Verstärker und Empfänger, um einen Datenaustausch zu ermöglichen. Die lokale Schnittstelle kann des Weiteren Adressen-, Steuer- und Datenverbindungen enthalten, um einen geeigneten Datenaustausch zwischen den oben genannten Komponenten zu ermöglichen. Wie hier beschrieben können die E/A-Einheiten 10, 145 im Allgemeinen beliebige verallgemeinerte kryptografische Karten oder Smart-Karten enthalten, die in der Technik bekannt sind. Bei einer dieser Einheiten handelt es sich um eine für einen Benutzer vertrauenswürdige Einheit 10, die nachstehend genau erläutert wird.
  • Bei dem Prozessor 105 handelt es sich um eine Hardwareeinheit zum Ausführen von Software, insbesondere Software, die im Speicher 110 gespeichert ist. Bei dem Prozessor 105 kann es sich um jeden kundenspezifisch hergestellten oder handelsüblich verfügbaren Prozessor, eine Zentraleinheit (CPU), einen Hilfsprozessor unter den verschiedenen Prozessoren, die dem Computer 101 zugehörig sind, einen Mikroprozessor auf Halbleiterbasis (in Form eines Mikrochips oder eines Chipsatzes), einen Makroprozessor oder allgemein um jede Einheit zum Ausführen von Softwarebefehlen handeln.
  • Der Speicher 110 kann ein oder eine Kombination von flüchtigen Speicherelementen (z. B. Direktzugriffsspeicher (RAM, wie z. B. DRAM, SRAM, SDRAM usw.)) und nichtflüchtigen (dauerhaften) Speicherelementen (z. B. ROM, löschbare programmierbare Festwertspeicher (EPROM), elektronisch löschbare programmierbare Festwertspeicher (EEPROM), programmierbare Festwertspeicher (PROM), Magnetbandspeicher, Compactdisk-Festwertspeicher (CD-ROM), Plattenspeicher, Disketten, Steckmodule, Kassetten oder dergleichen usw.) enthalten. Darüber hinaus kann der Speicher 110 elektronische, magnetische, optische und/oder andere Typen von Speichermedien beinhalten. Es wird angemerkt, dass der Speicher 110 eine verteilte Architektur aufweisen kann, bei der verschiedene Komponenten an voneinander entfernten Orten angeordnet sein können, auf die jedoch von dem Prozessor 105 zugegriffen werden kann. Der Speicher 110 sollte insbesondere einen bestimmten Speicherabschnitt 121 enthalten, an den ein Prozessorbefehlsmodul (oder PIM) 15 und möglicherweise ein Prüfmodul 17 vollständig oder teilweise für eine nachfolgende Umsetzung übertragen werden kann.
  • Die Software im Speicher 110 kann ein oder mehrere separate Programme enthalten, von denen jedes eine Auflistung von ausführbaren Befehlen zum Ausführen logischer Funktionen aufweist, insbesondere von Funktionen, die an Ausführungsformen dieser Erfindung beteiligt sind. Bei dem Beispiel von 1 können in den Speicher 110 Befehle geladen sein, die ermöglichen, dass der Computer 101 ein Booten von der für einen Benutzer vertrauenswürdigen Einheit 10 beginnt und ausführt, wenn bestimmte Bedingungen geprüft werden.
  • Die Software im Speicher 110 kann ein geeignetes Betriebssystem (BS) 111 enthalten, auch wenn die hier beschriebenen neuartigen Verfahren zumindest teilweise funktionieren, „bevor” ein BS in den Hast 101 vollständig geladen wurde (wobei wenigstens einige der Schritte auf einer anderen Ebene näher an der Hardware betrieben werden, wodurch das normale Verhalten des Computers 101 beeinträchtigt wird). Nachdem (und falls) ein BS 111 geladen wurde, sollte es im Wesentlichen ein Ausführen anderer Computerprogramme steuern und Ablaufplanung, Eingabe/Ausgabe-Steuerung, Datei- und Datenverwaltung, Speicherverwaltung und Datenübertragungssteuerung sowie zugehörige Dienste bereitstellen.
  • Es wird angemerkt, dass das BS, das geladen werden soll, vorzugsweise anfangs nicht in dem Festplattenlaufwerk 120 des Computers gespeichert ist. Das könnte insbesondere bei solchen Szenarios der Fall sein, bei denen ein privater Computer ohne ein Verwenden von privaten Daten des Besitzers, die darauf gespeichert sind, gestartet werden soll. Es könnte trotzdem in bestimmten Situationen nützlich sein, ein BS, das durch die vertrauenswürdige Einheit gestartet wird, in einem separaten Bereich auf der Computerfestplatte zwischenzuspeichern. Bei den nachfolgend beschriebenen bevorzugten Ausführungsformen ist das BS, das geladen werden soll, anfangs in der für einen Benutzer vertrauenswürdigen Einheit 10 enthalten, wird über das Netzwerk geladen oder ist in dem Plattenlaufwerk des Computers zwischengespeichert. Bei dem zuletzt genannten Fall wird üblicherweise eine Signatur des BS geprüft.
  • Wenigstens ein Teil der hier beschriebenen Verfahren kann in der Form eines Quellenprogramms, eines ausführbaren Programms (Objektcode), Skripts oder jeder anderen Entität sein, die einen Satz von Befehlen aufweist, die auszuführen sind. Wenn es sich um ein Quellenprogramm handelt, muss das Programm über einen Kompilierer, Assembler, Übersetzer oder dergleichen übersetzt werden, der möglicherweise in dem Speicher oder den Speichern der Einheit 10 und/oder des Host 101 enthaften ist. Des Weiteren können die Verfahren in einer objektorientierten Programmiersprache, die Klassen von Daten und Verfahren aufweist, oder in einer prozeduralen Programmiersprache geschrieben sein, die Routinen, Unterroutinen und/oder Funktionen aufweist. In jedem Fall sind die hier erläuterten neuartigen Verfahren so ausgestaltet, dass sie in Verbindung mit der Firmware 122 und bei Bedarf mit der CPU 11 der Einheit ordnungsgemäß funktionieren.
  • Bei beispielhaften Ausführungsformen können eine herkömmliche Tastatur 150 und eine Maus 155 mit der Eingabe/Ausgabe-Steuereinheit 135 verbunden sein. Andere Ausgabeeinheiten wie z. B. die E/A-Einheiten 145 können Eingabeeinheiten enthalten, z. B. ein Drucker, ein Scanner, ein Mikrofon und dergleichen, ohne jedoch auf diese beschränkt zu sein. Schließlich können die E/A-Einheiten 10, 145 des Weiteren Einheiten enthalten, die sowohl Eingaben als auch Ausgaben übertragen, beispielsweise eine Netzwerkschnittstellenkarte (NIC) oder ein Modulator/Demodulator (zum Zugreifen auf andere Dateien, Einheiten, Systeme oder ein Netzwerk), ein Hochfrequenz-(HF-) oder anderer Transceiver, eine Telefonschnittstelle, eine Brücke, ein Router und dergleichen, ohne darauf beschränkt zu sein. Wie hier beschrieben kann es sich bei den E/A-Einheiten 140, 145 um jede verallgemeinerte kryptografische Karte oder Smartcard handeln, die in der Technik bekannt sind. Das System 100 kann ferner eine Anzeigesteuereinheit 125 enthalten, die mit einer Anzeige 130 verbunden ist. Bei beispielhaften Ausführungsformen kann das System 100 des Weiteren eine Netzwerkschnittstelle 160 zum Herstellen einer Verbindung mit einem Netzwerk 165 enthalten. Bei dem Netzwerk 165 kann es sich um ein IP-gestütztes Netzwerk für den Datenaustausch zwischen dem Computer 101 und einem externen Server, Client oder dergleichen über eine Breitbandverbindung handeln. Das Netzwerk 165 sendet 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 betreutes IP-Netzwerk handeln, das durch einen Dienstanbieter verwaltet wird. Das Netzwerk 165 kann drahtlos umgesetzt sein, beispielsweise unter Verwendung von Drahtlos-Protokollen und Technologien wie z. B. WLAN, WiMax usw. Bei dem Netzwerk 165 kann es sich außerdem um ein paketvermitteltes Netzwerk handeln wie beispielsweise ein Lokalbereichsnetz, Weitverkehrsnetz, Hochgeschwindigkeitsnetz, Internet-Netzwerk oder ein ähnlicher Typ von Netzwerkumgebung. Bei dem Netzwerk 165 kann es sich um ein feststehendes drahtloses Netzwerk, ein drahtloses Lokalbereichsnetz (LAN), ein drahtloses Weitverkehrsnetz (WAN), ein Personalbereichsnetz (PAN), ein virtuelles Privatnetz (VPN), ein Intranet oder ein anderes Netzwerksystem handeln, und es enthält Ausrüstungen zum Empfangen und Senden von Signalen.
  • Wenn es sich bei dem Computer 101 um einen PC, eine Arbeitsstation, eine intelligente Einheit oder dergleichen handelt, kann die Software im Speicher 110 ferner ein grundlegendes Eingabe/Ausgabe-System (BIOS) oder jede ähnliche Initialisierungssoftware enthalten. Das BIOS ist eine Gruppe von wesentlichen Softwareroutinen, die beim Hochfahren die Hardware initialisieren und testen. Es ist ansonsten im Allgemeinen in der Lage, ein BS zu starten und die Übertragung von Daten zwischen den Hardwareeinheiten zu unterstützen. Das BIOS wird üblicherweise in einem ROM gespeichert, so dass das BIOS beim Aktivieren des Computers 101 ausgeführt werden kann.
  • Für den Zweck der Umsetzung von hier beschriebenen Verfahren kann das BIOS 122 verwendet werden (mit diesem interagiert werden), um insbesondere einen Boot-Vorgang auszulösen und auszuführen, um möglicherweise Datenübertragungen über ein Netzwerk auszulösen. Allgemeiner gesagt, jede geeignete Firmware 122 oder Schnittstelle zu einer Firmware (d. h. eine Kombination aus dauerhaftem Speicher und Programmcode und darin gespeicherten Daten, die „unter” einem BS 111 in dem Softwarestapel betrieben wird) kann für diesen Zweck verwendet werden. Dabei handelt es sich üblicherweise um das BIOS. Zu Beispielen von geeigneten Firmware-Programmen 122 oder Schnittstellen zu diesen gehören ein Preboot eXecution Environment-(PXE-)BIOS, das sogenannte Extensible Firmware Interface-(EFI-)BIOS oder noch immer die Unified Extensible Firmware Interface (UEFI). Bei der Letzteren handelt es sich um eine Spezifikation, die eine Softwareschnittstelle zwischen dem Betriebssystem und der Plattformsoftware definiert. UEFI bedeutet, die BIOS-Firmwareschnittstelle zu ersetzen, die heutzutage in allen IBM PC-kompatiblen Computern vorhanden ist. Praktisch steht bei den meisten UEFI-Abbildern auch für ältere BIOS-Dienste ein Support zur Verfügung. Allgemeiner gesagt, jede Firmware, für die auch bei älteren BIOS-Diensten oder vergleichbaren Diensten ein Support zur Verfügung steht, kann für den Zweck der Umsetzung von hier beschriebenen Verfahren vorgesehen werden. Noch allgemeiner ausgedrückt, jede Initialisierungsfirmware, die in dem Softwarestapel unter dem Betriebssystem arbeitet, kann möglicherweise für den Zweck der Umsetzung der vorliegenden Erfindung geeignet sein.
  • Wenn der Computer 101 in Betrieb ist, ist der Prozessor 105 so eingerichtet, dass er in dem Speicher 110 gespeicherte Software ausführt, um Daten zu und von dem Speicher 110 zu übertragen und um allgemein Operationen des Computers 101 der Software entsprechend zu steuern. Alle oder ein Teil der hier beschriebenen Verfahren, jedoch üblicherweise das zuletzt genannte Verfahren werden durch den Prozessor 105 gelesen, möglicherweise in dem Prozessor 105 gepuffert und dann ausgeführt.
  • Die Abschnitte der hier beschriebenen Verfahren, die in Software umgesetzt sein können, können in jedem computerlesbaren Medium für eine Verwendung durch oder in Verbindung mit einem computergestütztem System oder Verfahren gespeichert werden.
  • Einem Fachmann ist klar, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden können. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Firmware- und/oder Software-Ausführungsform (Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform, die Firmware/Software- und Hardware-Aspekte kombiniert, annehmen, die hier alle als, ”computergestützte Verfahren”, ”Prozesse” oder ”Schemen” 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 wird, die computerlesbaren Programmcode aufweisen, der darin ausgeführt wird.
  • Jede Kombination aus einem oder mehreren computerlesbaren Medien kann genutzt werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Ein computerlesbares Speichermedium kann z. B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede geeignete Kombination des Vorhergehenden sein, ist jedoch nicht darauf beschränkt. Zu spezifischeren Beispielen (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, ein Festplattenlaufwerk, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compactdisk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit computerlesbarem Programmcode enthalten, der darin z. B. im Basisband oder als Teil einer Trägerwelle verkörpert wird. Ein derartiges sich ausbreitendes Signal kann jede von einer Vielfalt von Formen annehmen, zu denen elektromagnetische, optische Formen oder jede geeignete Kombination hiervon gehören, jedoch nicht darauf beschränkt sind. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung übertragen, verbreiten oder transportieren kann.
  • Programmcode, der auf einem computerlesbaren Medium verkörpert ist, kann unter Verwendung jedes geeigneten Mediums übertragen werden, darunter drahtlose, leitungsgestützte, Lichtwellenleiterkabel-, Hochfrequenz-(HF-)Medien usw. oder jede geeignete Kombination aus dem Vorhergehenden, ohne darauf beschränkt zu sein.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache ”C” oder ähnliche Programmiersprachen. Der Programmcode kann nur auf dem Computer eines Benutzers oder teilweise auf dem Computer eines Benutzers (als ein eigenständiges Software-Paket) oder teilweise auf zwei oder mehreren der folgenden Möglichkeiten: der Computer 101 eines Benutzers, die für einen Benutzer vertrauenswürdige Einheit 10 oder ein ferner Computer 30. Der Host-Computer und der Server können durch jeden Netzwerktyp verbunden sein, darunter ein Lokalbereichsnetz (LAN); ein Weitverkehrsnetz (WAN), eine Verbindung zu einem externen Computer (Internet unter Verwendung eines Internet-Dienstanbieters).
  • Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaltbildern durch Computerprogrammbefehle umgesetzt werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, erzeugen.
  • Diese Computerprogrammbefehle können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand produzieren, der Befehle enthält, die die Funktion/Wirkung umsetzen, die in dem Block/den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind.
  • Computerprogrammbefehle können außerdem in einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um eine Reihe von Operationsschritten zu bewirken, die auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder anderen Einheiten ausgeführt werden sollen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, bereitstellen.
  • Der Ablaufplan und die Blockdarstellungen in den Figuren veranschaulichen die Architektur, Funktionalität und Operation von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder in Blockdarstellungen ein Modul, Segment oder Abschnitt von Code repräsentieren, der einen oder mehrere ausführbare Befehle zum Umsetzen der spezifizierten logischen Funktion(en) aufweist. Es sollte außerdem angemerkt werden, dass bei einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen möglicherweise nicht in der in den Figuren angegebenen Reihenfolge auftreten. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in der umgekehrten Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block in den Blockdarstellungen und/oder Ablaufplan Darstellungen und Kombinationen von Blöcken in den Blockdarstellungen und/oder der Ablaufplan-Darstellung durch Systeme, die auf spezieller Hardware beruhen, die die spezifizierten Funktionen oder Wirkungen ausführen, oder Kombinationen aus spezieller Hardware und Computerbefehlen umgesetzt werden können.
  • Wie oben erwähnt ist ein Neustarten eines Computers von einem externen Bootmedium und ein Starten eines „sauberen” BS („sauber” hinsichtlich der Sicherheit) von dem externen Medium oder einem anderweitig vertrauenswürdigen BS ist eine Möglichkeit zum Lösen des Problems, dass jede Software, die auf einem PC ausgeführt wird, möglicherweise von einem Virus oder Schadsoftware (Malware) angegriffen werden kann, die sich in dem Betriebssystem des PC befinden können.
  • Wie die Erfinder der vorliegenden Erfindung erkannt haben, erhebt sich jedoch bei diesem Ansatz die folgende Frage: Ist es wirklich der berechtigte Benutzer, der den PC erneut gestartet hat? Oder wurde eine bösartige virtualisierte Umgebung gestartet, um in das erneut gestartete saubere BS einzudringen? Es könnte außerdem möglich sein, dass in Sicherheitsfragen unerfahrene und/oder bequemliche Benutzer versuchen, ein derartiges Konzept zu nutzen, um den Computer ohne größere Umstände erneut zu starten.
  • In den 1 bis 3 wird allgemein zunächst ein Aspekt der Erfindung beschrieben, der eine sichere Einheit 10 (oder allgemeiner eine für einen Benutzer vertrauenswürdige Einheit, die auch als externer Vertrauensanker bezeichnet wird) betrifft. Bei dieser Einheit handelt es sich um eine betriebliche oder private Einheit, d. h. eine Einheit, die einer Firma oder einem Benutzer gehört und verwaltet wird wie etwa eine USB-Einheit, vorzugsweise ein USB-Flash-Laufwerk (eine Datenspeichereinheit, die zusätzlich zu einer eingebauten Universal Serial Bus-(USB-)Schnittstelle einen Flash-Speicher enthält), ein Mobiltelefon oder ein persönlicher digitaler Assistent (PDA), die lediglich von diesem Benutzer genutzt wird oder der Firma gehört, für die dieser Benutzer arbeitet, und durch diese verwaltet wird. Diese Einheit hat üblicherweise eine Masse von weniger als 200 g, wobei ein Wert von weniger als 60 g stärker bevorzugt ist und ein Wert von weniger als 40 g am stärksten bevorzugt ist. Weitere Aspekte dieser Einheit 10, die dazu beitragen können, sie „sicher” zu machen, sollen später erläutert werden.
  • Diese Einheit weist zumindest auf: eine Verbindungsschnittstelle 12, die eine Verbindung mit einem Computer 101 ermöglicht; und einen dauerhaften Speicher 14, der insbesondere mehrere Module 15, 16, 17 speichert. Diese sind so ausgelegt, dass sie bei Verbindung der Einheit 10 mit dem Computer 101 über die Schnittstelle 12 in der Lage sind, mehrere Operationen in der Einheit 10 und/oder im Computer 101 auszuführen.
  • Es wird angenommen, dass eine derartige Einheit 10 und ein Computer 101 bereitgestellt werden (Schritt S1 in 3). Beim Anschließen der Einheit (Schritt S2) werden zu oben genannten Operationen dann im Wesentlichen übersichtsmäßig die folgenden gehören:
    • 1. Ermöglichen (Schritt S3), dass der Computer 101 ein Booten von der für einen Benutzer vertrauenswürdigen Einheit 10 beginnt;
    • 2. Anweisen, dass der Prozessor 105 bestimmten Referenzcode ausführt (Schritt S7); – Es wird angemerkt, dass der Code vorzugsweise durch die Einheit 10 selbst, z. B. durch das Prozessorbefehlsmodul 15, bereitgestellt wird. Bei Varianten könnte eine Kennung oder eine weitere Adresse des Codes zu dem Prozessor 105 geleitet werden. Dieser Code enthält üblicherweise mehrere Befehle, die von der geprüften Maschine abhängen können; – Dieser Code wird so ausgewählt, dass er auf eine virtualisierte Umgebung anspricht und wird deswegen als „virtualisierungskritischer Code” bezeichnet. Dieser Code wird nämlich unterschiedlich ausgeführt und ruft verschiedene Ausführungscharakteristiken hervor in Abhängigkeit davon, ob er in einer virtualisierten Umgebung oder nativ ausgeführt wird. Die Ausführungscharakteristiken können sich insbesondere in Folgendem unterscheiden; – Ein Ergebnis, das bei der Umsetzung erzeugt wird (das betrifft eine erste Klasse von Ausführungsformen, die nachstehend beschrieben wird); und/oder – Ein rechentechnischer Aufwand, messbar durch Zeitablaufcharakteristiken, Prozessorzyklen usw. (zweite Klasse von Ausführungsformen).
    • – Beispielsweise eine Berechnung, die für x86-PCs von besonderem Interesse ist, würde im Umschalten zwischen einer reellen Betriebsart und einer geschützten Betriebsart bestehen. – Weitere Beispiele von virtualisierungskritischem Code werden später angegeben; – Gemäß Anweisung an den Prozessor erfolgt ein Ausführen des virtualisierungskritischen Codes, während der Computer 101 ein Booten beginnt, d. h., nachdem der Bootprozess begonnen hat und bevor er abgeschlossen wird, d. h., bevor wesentliche/kritische Komponenten des BS geladen werden. – Der Prozessor 105 wird des Weiteren angewiesen, bestimmte Beendigungsdaten auszugeben (z. B. ein Ergebnis, einen Zeitstempel oder ein zeitstempelfähiges Ereignis usw.) beim Beenden der Umsetzung, Schritt S8 in 3;
    • 3. Die nächste Gruppe von Operationen (S9 bis S13) besteht darin, auf der Grundlage der Beendigungsdaten zu ermitteln, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte (oder gleichbedeutend, ob das Ausführen in einer sicheren Umgebung, z. B. nativ erfolgte); und
    • 4. wenn schließlich festgestellt wird, dass das Ausführen nicht in einer virtualisierten Umgebung erfolgte, kann der Computer 101 freigegeben werden, ein Booten (Schritt S15) von der Einheit 10 auszuführen. Bei Ausführungsformen wird diese Bedingung indirekt festgestellt, es könnte beispielsweise eine Benutzeraktivität erforderlich sein, wie insbesondere im Abschnitt 2.1 nachfolgend erläutert wird. Die Bedingung, dass der Ablauf nicht in einer virtualisierten Umgebung erfolgt, ist nicht notwendigerweise eine ausreichende Bedingung: Sie ist im Kontext dieser Erfindung eine notwendige Bedingung; weitere Bedingungen können möglicherweise beteiligt sein wie insbesondere nachfolgend im Abschnitt 2.2 erläutert (beispielsweise kann das BIOS ebenfalls geprüft werden). – Wenn festgestellt wird, dass das Ausführen nicht in einer virtualisierten Umgebung erfolgt, wird der Bootprozess fortgesetzt (Schritt S15), beispielsweise können zum diesem Zweck weitere Daten, Schlüssel, Software, Bootabbilder usw. an den Computer 101 bereitgestellt werden. – Wenn dagegen festgestellt wird, dass das Ausführen in einer virtualisierten Umgebung erfolgt, wird der Bootprozess abgebrochen (Schritt S14). Die Einheit 10 kann z. B. abgeschaltet werden, d. h., es werden keine Daten, Schlüssel, Software usw. an den Computer 101 ausgegeben. – Zwischensituationen können berücksichtigt werden, die zum Laden einer beschränkten Version des BS (bei der nicht alle Komponenten zugelassen sind) oder einer modifizierten Version führen können, bei der Patches/Programme zum Säubern des Computers geladen werden.
  • Bei dem Computer 101 handelt es sich üblicherweise um einen Personal Computer (PC), vorzugsweise einen PC zur mobilen Verwendung, ein Notebook oder Netbook oder einen PDA oder ein Smartphone. Er wird hier zur Einfachheit als (Host-)Computer oder PC bezeichnet.
  • Zusammenfassend besteht das der vorliegenden Erfindung zugrunde liegende Prinzip in Folgendem:
    • – Die Module 15 bis 17 sind anfangs in der vertrauenswürdigen Einheit 10 gespeichert, so dass der Benutzer ihnen vertrauen kann;
    • – Die Module sind wenigstens teilweise in dem PC ausführbar, um seinen Prozessor zu veranlassen, den virtualisierungskritischen Code auszuführen.
    • – Diese Module bewirken ein Analysieren von Ausgaben der Umsetzung, um festzustellen, dass die Umgebung nicht virtualisiert ist, und wenn das der Fall ist, wird der Bootprozess fortgesetzt.
  • Ein Identifizieren einer virtualisierten Umgebung ist insbesondere aus folgenden Gründen vorteilhaft:
    • – Ein modifiziertes BIOS kann die vertrauenswürdige Einheit täuschen, damit es von dem Host-Computer normal geladen wird, obwohl der Computer in Wirklichkeit virtualisiert ist. Der virtualisierte Computer würde sich für die vertrauenswürdige Einheit wie der reelle Computer darstellen, könnte jedoch bestimmte Computerbefehle modifizieren, um in der Lage zu sein, das System so zu modifizieren, damit es unter Verwendung der vertrauenswürdigen Einheit gestartet werden kann, wenn die Virtualisierungsschicht angemessen erscheint.
    • – Der Benutzer kann unbedacht versuchen, das bereitgestellte System in einer virtualisierten Umgebung zu booten, das in der vertrauenswürdigen Einheit bzw. über diese bereitgestellt ist. Gründe dafür könnten darin bestehen, dass er einen privaten PC nicht neu booten muss und die bereits gestarteten privaten Programme beibehalten kann. Das heißt, er muss seine privaten Programme nicht anhalten, um Firmentätigkeiten auszuführen, und sie neu starten, wenn die Firmentätigkeit erledigt wurde. Dadurch würde der Benutzer jedoch das System von der vertrauenswürdigen Einheit den gleichen Risiken wie oben aussetzen. Das heißt, das System würde jeder Malware ausgesetzt sein, die in dem Computer vorhanden ist, das bedeutet, dass sensitive Berechnungen als Teil der Umsetzung der virtuellen Maschine ausgeführt werden.
  • Wegen der beiden oben genannten Gründe ist es für die vertrauenswürdige Einheit 10 erwünscht, dass sie in der Lage ist zu identifizieren, ob der Computer 101, der der Einheit präsentiert wird, reell oder virtualisiert ist, daher die vorliegenden Lösung.
  • Mit Bezug auf 2: in Ausführungsformen werden die Module 15 bis 17 unterteilt in:
    • – ein Boot-Ladeprogramm 15, das ein Starten (und möglicherweise ein Ausführen) eines Bootens des PC 101 von der Einheit 10 ermöglicht;
    • – ein Prozessorbefehlsmodul (oder PIM) 15, das im Wesentlichen in dem PC ausführbar ist, um seinen Prozessor 105 anzuweisen, den virtualisierungskritischen Code auszuführen und Beendigungsdaten auszugeben; und
    • – ein Prüfmodul 17. Dieses Modul ist in der Einheit 10 und/oder in dem Computer 101 ausführbar und ist so eingerichtet, dass es die Beendigungsdaten (möglicherweise direkt) analysiert.
  • Das Boot-Ladeprogramm 16 kann durch die Initialisierungssoftware, z. B. das BIOS 122, bei Verbindung der für einen Benutzer vertrauenswürdigen Einheit 10 mit dem PC 101 erkannt werden. Das Boot-Ladeprogramm weist des Weiteren Befehle für die Firmware 122 auf, um ein Übertragen des PIM 15 zu dem PC 101 für ein nachfolgendes Ausführen in dem PC auszulösen.
  • Die Module 15 und 17 könnten gelegentlich als eine einzige Entität betrachtet werden (die als ein Virtualisierungs-Analysemodul oder VAM bezeichnet werden können), deren Funktion nicht nur im Anweisen des Prozessors, sondern auch im Analysieren der Beendigungsdaten besteht.
  • Wie oben erwähnt kann das PIM 15 bei einer ersten Klasse von Ausführungsformen den Prozessor 105 anweisen, Code auszuführen, wodurch bewirkt wird, dass er als Teil der Beendigungsdaten eine Liste von Merkmalen zu erzeugen, die durch den Computer 101, vorzugsweise durch den Prozessor selbst, unterstützt werden. Ein derartiges Merkmal besteht darin, ob eine Hardware-Virtualisierungsuntorstützung durch die CPU bereitgestellt wird (d. h. in Form der Bitgruppe vtx im Merkmalregister der CPU und das vtx-Freigabebit in den entsprechenden modellspezifischen Registern). Wenn das nicht der Fall ist, die CPU jedoch wie durch den Befehl cpuid gemeldet zu einer Hardwarevirtualisierung in der Lage ist, ist das eine Anzeige für einen Ablauf in einer virtualisierten Umgebung, bei der diese Befehle nicht in Software emuliert werden. Weitere derartige Möglichkeiten würden darin bestehen, die in dem System vorhandene Hardware zu überprüfen, ob eine virtualisierte Grafikkarte (im Fall der typischen para-virtualisierten Umgebung) oder eine reelle Karte vorhanden ist.
  • Anschließend kann das Prüfmodul oder VAM die Liste von unterstützten Merkmalen mit bestimmten Referenzdaten vergleichen und entscheiden, ob die Umsetzung in einer virtualisierten Umgebung ausgeführt wurde. Derartige Operationen können durch die CPU 105 direkt oder in der für einen Benutzer vertrauenswürdigen Einheit 10 oder gemeinsam in der Einheit und der CPU ausgeführt werden.
  • Es ist jedoch zuverlässiger zu bewirken, dass der Prozessor 105 beim Beenden der Umsetzung und als Teil der Beendigungsdaten einen Endzustandswert erzeugt oder verwendet. Dieser Wert ist jedoch abhängig, d. h. wird beeinflusst von dem rechentechnischen Aufwand des Prozessors, der für ihn erforderlich ist, um den virtualisierungskritischen Code auszuführen. Bei einem derartigen Wert kann es sich beispielsweise um einen Zeitstempel oder einen Befehl für die Einheit 10 oder jedes ihrer Module (der in der Einheit 10 oder in dem PC auszuführen ist) handeln, der beim Empfang mit einem Zeitstempel usw. versehen werden kann. Bei diesem Wert kann es sich des Weiteren um eine Anzahl von Prozessorzyklen, eine maximale CPU-Nutzung während einer vorgegebenen Anzahl von vorhergehenden Zyklen oder einer vorgegebenen Zeit, einen Zeitpunkt usw. wie etwa nach einer Umsetzung handeln oder er kann sich darauf beziehen. Durch Vergleichen dieses Werts mit einem bestimmten geeigneten Referenzwert kann dann entschieden werden, ob die Umsetzung in einer virtualisierten Umgebung ausgeführt wurde.
  • Die zweite Klasse von Ausführungsformen ist dahingehend zuverlässiger als die erste Klasse, dass bestimmte Merkmale, die durch den Prozessor 105 oder die Maschine 101 unterstützt werden, (z. B. durch einen Anbieter) möglicherweise gesperrt wurden, so dass es nicht einfach ist, eine nichtvirtualisierte Umgebung festzustellen.
  • Der Prozessor 105 kann vorzugsweise des Weiteren einen Anfangszustandswert erzeugen oder verwenden, d. h. einen Wert, der den Zustand des Prozessors vor einem Ausführen des virtualisierungskritischen Codes widerspiegelt. Bei dem Anfangszustandswert kann es sich ebenfalls um einen Zeitstempel, einen Befehl für die Einheit 10 oder eines ihrer Module, eine Anzahl von Prozessorzyklen, einen Zeitpunkt usw. handeln.
  • Wenn sowohl Anfangs- als auch Endwert vorliegen, kann ein Prozessornutzungswert in einfacher Weise abgeleitet werden, d. h. ein Wert, der den rechentechnischen Aufwand direkt und explizit quantifiziert, der zum Ausführen des virtualisierungskritischen Codes erforderlich war. Bei einem solchen Prozessomutzungswert kann es sich beispielsweise um eine Berechnungszeitdauer, eine Anzahl von Prozessorzyklen oder jeden geeigneten Zählerwert handeln. Ein Prozessornutzungswert könnte des Weiteren unabhängig von einem Anfangswert erzeugt werden. Eine maximale CPU-Nutzung (während einer vorgegebenen Anzahl von vorhergehenden Zyklen oder einer vorgegebenen vorhergehenden Zeitspanne) wäre z. B. eine Anzeige des rechentechnischen Aufwands, der zum Ausführen einer vorgegebenen Gruppe von Befehlen erforderlich ist.
  • Zwar könnte ein Endzustandswert bereits ausreichen, das Verwenden eines oben definierten Prozessornutzungswerts ermöglicht jedoch einen direkteren und in stärkerem Maße relevanten Vergleich (da er den für die Ausführung erforderlichen rechentechnischen Aufwand direkt und explizit quantifiziert).
  • Das Prüfmodul 17 übernimmt anschließend die Aufgabe, den Endzustandswert/Prozessornutzungswert zu analysieren und daraufhin zu ermitteln, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte. Zu diesem Zweck kann das Prüfmodul 17 einfach den Endzustandswert/Prozessornutzungswert mit Referenzwerten vergleichen, die in der Einheit 10 oder über eine dritte Stelle 30 zur Verfügung stehen. Bei Varianten kann das Prüfmodul 17 eine gleichzeitige Umsetzung (die in der Einheit 10 oder in einer dritten Stelle 30 ausgeführt wird) desselben virtualisierungskritischen Codes auslösen, der durch den Prozessor 105 ausgeführt wird, und dann einen Vergleich ausführen, bevor eine Feststellung getroffen wird.
  • Es wird außerdem angemerkt, dass die Berechnung des Prozessornutzungswerts direkt durch den Prozessor 105 oder durch das Prüfmodul 17 (wobei das Ausführen entweder in der Einheit oder in dem PC erfolgt) unter Verwendung der Anfangs- und Endzustandswerte ausgeführt wird, die aufgezeichnet oder zu diesem Zweck ausgegeben werden. Es ist jedoch vorzuziehen, diese Berechnung in der Einheit auszuführen (ein Vorgang, der in der CPU 11 ausgeführt wird), da eine derartige Lösung nicht ganz so einfach betrügerisch verfälscht werden kann, da der in der Einheit 10 berechnete Nutzungswert nicht in einfacher Weise verändert werden kann. Es ist jedoch ein zusätzlicher Datenübertragungsaufwand (zwischen dem PC 101 und der Einheit 10) erforderlich, der möglicherweise bestimmte Ungenauigkeiten einführen kann.
  • Die Analyse des Endzustandswerts oder des Prozessornutzungswerts durch das Prüfmodul 17 kann in dem PC 101 oder in der Einheit 10 ausgeführt werden. Ob die Berechnung des Nutzungswerts und die Analyse in der Einheit oder im PC ausgeführt wird, kann während einer Entwicklungsphase oder sogar dynamisch auf der Grundlage von bekannten oder erfassten Charakteristiken des Datenübertragungsaufwands des PC entschieden werden.
  • Sollte die Berechnung des Prozessornutzungswerts bei dem Prozessor verbleiben (es wird beispielsweise ein Zähler im PC erhöht), ist es vorzuziehen, einen Zeitstempelzähler der CPU zugrunde zu legen. Dieser Zähler zählt die CPU-Zyklen und ist somit sehr genau. Ein betrügerisches Verfälschen des Zeitstempelzählers einer CPU erfordert einen erheblichen Arbeitsaufwand.
  • Es folgt ein beispielhafter Ablauf von Operationen:
    • 1. Die vertrauenswürdige Einheit 10 und der PC 101 werden bereitgestellt;
    • 2. Die Einheit 10 wird in den PC 101 eingesteckt;
    • 3. Das Boot-Ladeprogramm 16 wird durch die Initialisierungsfirmware 122 erkannt, der PC beginnt ein Booten von der Einheit 10;
    • 4. Das Boot-Ladeprogramm 16 weist den PC an, das PIM 15 (oder sogar die VAM 15 und 17) zu einem vorgegebenen Speicherplatz 121 zu übertragen;
    • 5. Das PIM 15 beginnt ein Ausführen, d. h., es wird durch den Prozessor 105 ausgeführt;
    • 6. Während die Befehle des PIM für den Prozessor ausgeführt werden, bewirken sie bei diesem: a. Aufzeichnen (oder Ausgeben) des Anfangszustandswerts; b. Beginnen des Ausführens von virtualisierungskritischem Code, der durch das PIM 15 angegeben wird; c. Aufzeichnen eines Endzustandswerts; d. Berechnen eines Prozessornutzungswerts, z. B. einer Zeitdauer.
    • 7. Anschließend greifen das Prüfmodul 17 oder die VAM 15 und 17 mittels Befehlen für die CPU 105 und/oder den Prozessor 11 der Einheit ein, um die folgenden Operationen auszulösen: a. Vergleichen (oder Anweisen einer weiteren Entität, z. B. eine externe Entität 30 zum Vergleichen) des Prozessornutzungswerts mit einem Referenzwert; und b. Ermitteln, ob das Ausführen in einer virtualisierten Umgebung ausgeführt wurde.
  • Die beiden letzten Operationen können direkt durch die CPU 105 oder in der für einen Benutzer vertrauenswürdigen Einheit 10 oder in der Einheit und der CPU gemeinsam ausgeführt werden oder beinhalten noch eine weitere Entität, wie später erläutert wird.
  • Der virtualisierungskritische Code kann einen oder mehrere Befehle aufweisen. Zu Beispielen gehören Befehle zum Umschalten des Prozessors von einer geschützten Betriebsart in eine reelle Betriebsart und/oder Befehle zum Umschalten des Prozessors von einer reellen Betriebsart in eine geschützte Betriebsart wie oben erwähnt. Diese Befehle sind besonders vorteilhaft für x86-PCs. Die Berechnung kann in Hardware erfolgen und erfolgt schnell. Wenn sie dagegen in einer virtuellen Maschine ausgeführt wird, muss die virtuelle Maschine diese Befehle erfassen (das kann lediglich durch eine CPU-Ausnahmebedingung erfolgen) und sie dann in Software oder anderen Mechanismen ausführen, was noch länger dauert. Nicht einmal CPUs mit Hardware-Virtualisierungsunterstützung können das in Hardware bewirken, da eine reelle Betriebsart als veraltet betrachtet wird und für diese Merkmale keine Hardwarevirtualisierung zur Verfügung steht.
  • Es gibt weitere Beispiele von virtualisierungskritischen Befehlen, die im vorliegenden Kontext vorteilhaft verwendet werden könnten, zum Beispiel:
    • – Befehle für den Prozessor zum Lesen eines maschinenspezifischen Registers, d. h. ”rdmsr”;
    • – Befehle für den Prozessor zum Schreiben in ein maschinenspezifisches Register (”wrmsr”); und/oder
    • – Befehle zum Freigeben des sogenannten a20-Gatters (das ist jedoch nicht vorzuziehen aufgrund der Komplexität der Umsetzung, die dafür erforderlich ist).
  • Allgemeiner ausgedrückt, jeder weitere Befehl, der beim nativen Ausführen andere Ressourcencharakteristiken aufweist als in einer virtualisierten Umgebung, kann berücksichtigt werden.
  • Zur Erläuterung wird angenommen, dass alle Befehle (einschließlich der Berechnung des Prozessornutzungswerts) durch den Prozessor 105 ausgeführt werden. Man würde in diesem Fall üblicherweise zwei Typen von Befehlen (Setup-Befehle und virtualisierungskritischer Code) des PIM/VAM 15, 17 unterscheiden, die nun unter Bezugnahme auf 3 beschrieben werden.
    • a. Anfangs-Setup: i. Versetzen des Prozessors 105 in die geschützte Betriebsart (im Folgenden PM), um sicherzustellen, dass sich der Prozessor in der geschützten Betriebsart befindet; ii. Zuordnen von Speicherplatz für eine nachfolgende Berechnung (Schritt S7) und die Ausgabe von Beendigungsdaten (Schritt S8); iii. Aufzeichnen einer Anfangszeit (Schritt S6);
    • b. Die virtualisierungskritischen Befehle können beispielsweise verwenden: i. Betriebsart-Umschaltbefehle, darunter: 1. Umschalten von PM in die reelle Betriebsart (im Folgenden RM), wobei bei einer virtualisierten Umgebung zum Emulieren eine vergleichsweise längere Zeit benötigt werden würde; 2. Umschalten von RM in PM; ii. Lesebefehle zum Lesen eines maschinenspezifischen Registers (rdmsr); iii. Schreibbefehle zum Schreiben in ein maschinenspezifisches Register (wrmsr);
  • Es wird angemerkt, dass die virtualisierungskritischen Befehle mittels einer Unterroutine (die durch den Prozessor ausgeführt wird) ausgeführt werden können, die durch den Prozessor bei einem Befehl von dem PIM/VAM aufgerufen wird. Diese Option ist insbesondere dann zu bevorzugen, wenn die virtualisierungskritischen Befehle weitere Hardwarekomponenten enthalten, die virtualisiert werden müssten wie beispielsweise eine Grafikkarte. In diesem Fall interagiert der virtualisierungskritische Code mit einer grafischen Verarbeitungseinheit (GPU) und führt Befehle aus, die in Software emuliert werden müssten und deswegen eine längere Zeit benötigen würden, wenn sie in einer virtualisierten Umgebung ablaufen. Es gibt weitere mögliche Varianten.
    • c. End-Setup: i. Aufzeichnen eines Endzustandswerts (z. B. Endzeit); ii. Berechnen des Prozessornutzungswerts (z. B. Dauer) iii. Vergleichen mit Referenzwert; iv. Schlußfolgern auf virtualisierte Umgebung
  • Zwar wurde bei dem End-Setup wiederum angenommen, dass es in dem oben genannten Beispiel auf den Prozessor 105 gerichtet ist, wobei die abschließenden Operationen in dem Prozessor und/oder in der Einheit 10 ausgeführt werden könnten. Wenn die abschließenden Befehle wenigstens teilweise auf die Einheit 10 gerichtet sind, müssen die Befehle in der Reihenfolge etwas anders angeordnet werden, damit der Prozessor der Einheit 10 signalisieren kann, die abschließenden Befehle auszuführen.
  • Eine Möglichkeit, die oben erwähnt wurde, besteht darin, eine dritte Stelle, z. B. einen Server, zu beteiligen (siehe 1), um einen Teil der Analyse oder die vollständige Analyse des erhaltenen Prozessornutzungswerts (oder sogar lediglich des Endzustandswerts) durchzuführen. In diesem Fall ist das Prüfmodul 17 ferner so eingerichtet, dass es die Einheit 10 oder vorzugsweise den Computer 101 anweist, eine Verbindung mit einem Server 30 herzustellen. Ein „zentraler” Server kann einfacher aktualisiert werden als mehrere sich möglicherweise ständig ändernde Maschinenzustände.
  • Zu diesem Zweck kann das Prüfmodul 17 so eingerichtet sein, dass es:
    • – mit der Initialisierungs-Firmware 122 interagiert, um anschließend mit einer Netzwerkkarte 124 des Computers 101 zu interagieren, um eine Datenübertragung über ein Netzwerk 165 (das durch die Netzwerkkarte 124 freigegeben wird) auszulösen und eine Verbindung mit dem Server 30 herzustellen; und/oder
    • – direkt mit der Netzwerkkarte 124 des Computers 101 interagiert: das erfordert ein Zugreifen auf Netzwerkkartentreiber, die in diesem Fall in der vertrauenswürdigen Einheit 10 gespeichert sind; und/oder
    • – mit der Firmware 122 z. B. über das Boot-Ladeprogramm interagiert, um ein BS des Computers 101 teilweise auszuführen, d. h., die Komponenten des BS zu laden, die zum Herstellen einer Verbindung mit dem Server 30 über den PC 101 erforderlich sind.
  • Datenübertragungen zwischen der Einheit 10 und der externen Entität 30 sollten vorzugsweise ausgeführt werden durch:
    • – eine HTTP-Verbindung vom Server 30 über den Computer 101 zur Einheit 10; Ende-Ende-Echtheiterkennung; und
    • – bei Bedarf Signatur- und andere Verschlüsslungsdaten 13, die in einem sicheren Speicher 141 der Einheit 10 gespeichert werden können.
  • Als radikale Alternative kann man vorzugsweise die Einheit 10 mit einem Netzwerkzugangsmittel ausstatten, beispielsweise mit einer (leitungsgestützten oder drahtlosen) Netzwerkeinheit, um eine direkte Verbindung mit einem Server herzustellen. Eine derartige Lösung ist etwas teurer. Die Latenz ist jedoch geringer, da keine zusätzlichen Interaktionen mit dem Computer 101 zum Kontaktieren des Servers erforderlich sind. Dabei können außerdem bei Datenübertragungen mit dem Server 30 Ende-Ende-Echtheiterkennung und Verschlüsselung verwendet werden.
  • Wie insbesondere in 2 gezeigt sollte der dauerhafte Speicher 14 vorzugsweise aufweisen:
    • – einen sicheren Speicher 141, in dem ein erster Teil 151 (oder vorgegebene Abschnitte) des PIM 15 oder des VAM 15 bis 17 gespeichert werden können; und
    • – ein nichtsicherer Speicher 142, z. B. eine SD-Karte, auf der ein zweiter Teil (oder vorgegebene Abschnitte) des Moduls bzw. der Module 15, 17 gespeichert werden können.
  • Das Vorhandensein eines sicheren Speichers macht die für einen Benutzer vertrauenswürdige Einheit zu einer sicheren Einheit. Beispielsweise kann sich ein Teil des Moduls 15 verschlüsselt in dem nichtsicheren Speicher 142 befinden, während ein entsprechender Verschlüsselungsschlüssel 13 in dem sicheren Speicher 141 gespeichert ist. Der sichere Speicher ist aus Kostengründen üblicherweise auf 128 ko oder 256 ko begrenzt. Er kann somit vorzugsweise verwendet werden, um lediglich Verschlüsselungsdaten z. B. Hashwerte/Signaturen 13 zu speichern. Der Teil 151 eines Moduls kann sich deswegen in dem sicheren Speicher 141 befinden, während andere Teile 152 des Moduls sich verschlüsselt in dem nichtsicheren Speicher 142 befinden können. Das Boot-Ladeprogramm 16 kann sich gleichfalls auf einer SD-Karte befinden, trotzdem verschlüsselt mit einer Signatur, die sich in dem sicheren Speicher 141 befindet. Wenn ein Computer 101 einen vorgegebenen Block oder einen Datensatz des Boot-Ladeprogramms anfordert, wird die CPU 11 der Einheit durch im Speicher 14 befindliche Software aufgefordert, den angeforderten Block beispielsweise unter Verwendung von Verschlüsselungsdaten, die in dem sicheren Speicher 141 gespeichert sind, zu entschlüsseln.
  • Vorzugsweise sollten der Abschnitt bzw. die Abschnitte des Moduls bzw. der Module 15 bis 17, die sich in dem sicheren Speicher befinden, aufgrund von Speicherbeschränkungen weniger als die Hälfte des Bereichs des sicheren Speichers belegen. Im Idealfall sollten trotzdem alle Teile der Module einen möglichst kleinen Speicherbereich belegen. Einige Umsetzungen des Moduls 15 wurden beispielsweise bei Verwendung von weniger als 4 ko für jeden Teil der Module 15 bis 17 erfolgreich getestet (ohne Code zum Kontaktieren eines Netzwerkservers, der näherungsweise 31 ko und üblicherweise weniger als 64 ko in Anspruch nehmen würde). Einem Fachmann ist klar, dass Code, der die Funktionalität zum Kontaktieren eines fernen Servers umsetzt, von mehreren Modulen gemeinsam genutzt werden kann, die in der für einen Benutzer vertrauenswürdigen Einheit 10 gespeichert sind.
  • Die Verbindungsschnittstelle 12 der Einheit 10 kann beispielsweise von folgendem Typ sein:
    • – Universal Serial Bus oder USB;
    • – External Small Computer System Interface oder SCSI;
    • – External Serial Advanced Technology Attachment oder SATA;
    • – Firewire; oder
    • – Thunderbolt.
  • Allgemeiner gesagt, es könnte sich dabei um jede derzeitige oder zukünftige Verbindungseinrichtung (leitungsgestützt oder drahtlos) handeln, die ein Booten des Computers von der externen Einheit 10 ermöglicht. Außerdem kann dieselbe Schnittstelle 12 des Weiteren zulassen, dass die für einen Benutzer vertrauenswürdige Einheit 10 mit einer beliebigen externen Einheit wie z. B. mit einem Beamer, einem Drucker oder jeder anderen Ausgabeeinheit Daten austauscht.
  • Die für einen Benutzer vertrauenswürdige Einheit 10 kann wie gewöhnlich mit Verarbeitungsmitteln (oder Datenverarbeitungsmitteln d. h. CPU) 11 wie beispielsweise ein Krypto-Prozessor versehen sein, die mit einem Speicher verbunden sind, der allgemeiner einen dauerhaften Speicher 14 und vorzugsweise ebenfalls einen nichtdauerhaften Speicher (der nicht explizit gezeigt ist, der nichtdauerhafte Speicher kann jedoch als Teil der Verarbeitungsmittel 11 betrachtet werden) aufweist.
  • Im vorliegenden Kontext speichert der dauerhafte Speicher insbesondere computergestützte Verfahren, z. B. die oben erwähnten Module 15 bis 17, die durch die Verarbeitungsmittel 11 auszuführen sind. Die hier erwähnten Module 15 bis 17 könnten natürlich als ein einzelnes Modul betrachtet werden, das mit verschiedenen Funktionen ausgestattet ist und in der Einheit und in dem Computer umgesetzt werden kann.
  • Bei Bedarf weist die sichere Einheit 10 einen Kartenleser zum Lesen von Benutzer-Anmeldeinformationen auf, die auf einer Speicherkarte z. B. in dem nichtsicheren Speicher 142 oder in einer Smartcard gespeichert sind. Eine geeignete Verwendung kann mit Hilfe dieser Daten beispielsweise Benutzer-Anmeldeinformationen, die auf der Karte gespeichert sind, sicher durchgeführt werden. Insbesondere kann eine zuverlässige Verbindung zwischen einem Benutzer (genauer gesagt der Einheit 10) und einer dritten Stelle, z. B. ein Server 30 über den Host 101 und unter Verwendung dieser Daten eingerichtet werden. Bei einer Variante können die Benutzer-Anmeldeinformationen direkt in der sicheren Einheit gespeichert werden. Weitere Schnittstellen (wie Steuerschaltflächen und Anzeige) können bereitgestellt werden, um Interaktionen mit dem Benutzer zu ermöglichen.
  • Als Nächstes kann die Erfindung gleichfalls als ein Verfahren betrachtet werden, um einen Computer 101 zu befähigen, von einer für einen Benutzer vertrauenswürdigen Einheit 10 zu booten. Dieses Verfahren weist zumindest die folgenden wesentlichen Schritte auf, die bereits unter Bezugnahme auf die Einheit 10 beschrieben wurden:
    • – Ermöglichen S3, dass der Computer 101 beim Herstellen einer Verbindung S2 der vertrauenswürdigen Einheit mit dem Computer 101 über die Verbindungsschnittstelle 12 der Einheit 10 ein Booten von der für einen Benutzer vertrauenswürdigen Einheit 10 beginnt;
    • – Anweisen des Prozessors 105 zum: – Ausführen S7 des virtualisierungskritischen Codes; und – Ausgeben S8 der Beendigungsdaten beim Beenden des Ausführens;
    • – auf der Grundlage der Beendigungsdaten Ermitteln S9 bis S13, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte; und
    • – Ermöglichen S15, dass der Computer 101 ein Booten von der für einen Benutzer vertrauenswürdigen Einheit 10 ausführt, vorausgesetzt, dass festgestellt wurde, dass das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  • Wie bereits früher gesagt, hat das Boot-Ladeprogramm vorzugsweise die Funktion, mit der Initialisierungsfirmware 122 zu interagieren, und zwar zum:
    • – Ermöglichen S3, dass der Computer 101 ein Booten von der für einen Benutzer vertrauenswürdigen Einheit 10 beginnt; und
    • – Auslösen S4 der Übertragung des PIM 15 (oder der VAM 15 und 17) an den Computer 101 für ein nachfolgendes Ausführen S5 bis S6. Wie bereits erläutert wird dadurch ein Ausführen des virtualisierungskritischen Codes durch den Prozessor 105 und ein Ausgeben S8 der Beendigungsdaten beim Abschließen bewirkt.
  • Außerdem können die Schritte S9 bis S13 zum Ermitteln ein Prüfmodul 17 beinhalten, das in der Einheit 10 und/oder in dem Computer 101 ausgeführt wird, sowie einen Server 30, der vorzugsweise über den Computer 101 angeschlossen ist.
  • Somit kann das Prüfmodul 17:
    • – auf die Beendigungsdaten lokal in der Einheit 10 oder in dem Computer 101 zugreifen; oder
    • – eine Verbindung zu einem Server herstellen, der auf die Beendigungsdaten zugreift, z. B. durch Vergleichen der Beendigungsdaten mit Referenzdaten.
  • In dem zuletzt genannten Fall kann der Server einen Vergleich vornehmen und ermitteln, ob das Ausführen in einer virtualisierten Umgebung erfolgte oder nicht (wobei in diesem Fall das Modul 17 lediglich einen Befehl von dem Server empfängt, der angibt, dass das Booten abgeschlossen wird oder eine andere Aktion ausgeführt werden soll); oder der Server kann ein Ergebnis der Prüfung von dem Prüfmodul 17 übertragen, wobei das Modul 17 das Ermitteln beendet und feststellt, ob das Ausführen in einer virtualisierten Umgebung ausgeführt wurde. Zusätzliche Schritte und Datenübertragungsschritte mit dem Server können bei Bedarf in Abhängigkeit von dem Entwicklungsgrad des Systems beteiligt sein.
  • Bei Bedarf kann das Prüfmodul 17 ein Ausführen von zusätzlichen Befehlen durch den Prozessor 105, Schritt S16, beispielsweise zum Klären von nicht überzeugenden Ergebnissen von einer ersten Prüfung auslösen.
  • Die oben genannten Ausführungsformen wurden unter Bezugnahme auf die beigefügten Zeichnungen kurz beschrieben und können mehrere Varianten aufweisen. Es kommen mehrere Kombinationen der obigen Merkmale in Betracht. Beispiele werden im nächsten Abschnitt gegeben.
  • 2. Spezielle Ausführungsformen/Einzelheiten der technischen Umsetzung
  • Im Folgenden werden spezielle Ausführungsformen erläutert, bei denen mehrere optionale Merkmale kombiniert werden, die im vorhergehenden Abschnitt erläutert wurden. Zusätzlich und ergänzend dazu, ob der virtualisierungskritische Code in einer virtualisierten Umgebung ausgeführt wird (Abschnitt 2.1), werden im Abschnitt 2.2 neuartige Verfahren vorgestellt, mit denen ermittelt werden kann, ob die Firmware 122 des PC verfälscht wurde. Typische Beispiele von Befehlen, die in Ausführungsformen verwendet werden können, sind im Abschnitt 2.3 angegeben.
  • 2.1 Erkennen einer Ausführung in einer virtuellen Maschine; spezielle Ausführungsformen und Varianten
  • Bei einer speziellen Ausführungsform wird die folgende Abfolge von Schritten umgesetzt. Es wird angenommen, dass die vertrauenswürdige Einheit 10 mit dem PC 101 verbunden wurde, der PC neu gestartet, das Boot-Ladeprogramm erkannt und das PIM 15 für eine nachfolgende Ausführung bereits zu dem PC übertragen wurde:
    • 1. Die vertrauenswürdige Einheit 10 wird informiert, dass in dem PC 101 eine bekannte Berechnung gestartet wird. Die externe Einheit 10 zeichnet den Anfangszustandszeitpunkt auf, d. h. den letzten bekannten Zeitwert vor dem Zeitpunkt, an dem die Berechnung exakt begonnen hat.
    • 2. Die Berechnung wird begonnen. Die eigentliche Berechnung ist derart, dass sich ihre Zeitablauf-Charakteristiken, wenn sie nativ ausgeführt wird, von jenen unterscheiden, wenn sie in einer virtualisierten Umgebung ausgeführt wird, z. B. ein Befehl zum Umschalten zwischen einer reellen Betriebsart und einer geschützten Betriebsart. Allgemeiner ausgedrückt, jeder Befehl, den der Prozessor schnell ausführen kann, wenn die Hardware verwendet wird. Zu Beispielen dieser Befehle gehören rdmsr, wrmsr (Befehle zum Lesen/Beschreiben von modellspezifischen Registern wie oben erwähnt) oder rdtsc (Lies Zeitstempelzähler), falls dies in dem entsprechenden modellspezifischen Register ebenfalls eingestellt wurde. Weitere Beispiele können zum Beispiel in dem x86-Befehlshandbuch gefunden werden.
    • 3. Wenn die Berechnung beendet ist, kontaktiere die externe Einheit 10.
    • 4. Die vertrauenswürdige Einheit prüft dann, wie lange die Berechnung dauerte, und auf der Grundlage eines Vergleichs mit einem Referenzwert (der beispielsweise erhalten werden kann, indem dieselbe Berechnung gleichzeitig, z. B. intern in der Einheit 10 ausgeführt wird, oder der möglicherweise im Voraus berechnet wurde) wird die Wahrscheinlichkeit ermittelt, ob die Berechnung in einer virtualisierten Umgebung ausgeführt wird. a. Der schnellste Virtualisierungs-Support, der bisher von den Erfindern dieses Verfahrens untersucht wurde, benötigt näherungsweise eine 8-mal längere Zeitdauer als beim nativen Ausführen des Codes; b. Die virtualisierte Umgebung wurde auf einem schnellen Desktop-PC ausgeführt, wohingegen es sich bei der nativen Umgebung um einen durchschnittlichen Notebook-PC handelte, deswegen wurde erwartet, dass bei derselben Hardware die Zeitdifferenz größer ist als ein Faktor 8. Das ergibt einen ausreichenden Raum zum Ermitteln, ob der vorgeschlagene Prüfcode möglichweise in einer virtualisierten Umgebung ausgeführt wird. c. Es könnte beispielsweise ein kleinerer Faktor als Schwellenwertfaktor ausgewählt werden, z. B. ein Faktor 4 (bei dem es sich bereits um einen vorsichtigen Wert handelt).
    • 5. Wenn die externe Einheit 10 das Vorhandensein einer virtuellen Maschine erkennt, kann sie die Operation abbrechen oder vorzugsweise den Benutzer und/oder den auf sichere Weise angeschlossenen Server 30 benachrichtigen, um die Operation abzubrechen und die Arbeit anzuhalten.
    • 6. Wenn keine Virtualisierungsumgebung erkannt wird, setzt die Einheit die Operation fort, so dass zugelassen wird, dass der PC weitere Softwarekomponenten abruft, die in der Einheit 10 gespeichert sein können, oder gibt Verschlüsselungsschlüssel oder andere Echtheitsbestätigungs-Token an die auszuführende Software oder wie oben erwähnt ein sauberes BS aus.
  • Mehrere Variationen der oben genannten Schritte können in Erwägung gezogen werden.
    • – Die Punkte 1 und 3 können mit jeder Zeitgeberquelle kombiniert werden, die durch eine Virtualisierungsumgebung nicht oder nur schwer betrügerisch verfälscht werden kann wie z. B. der Zeitstempelzähler (TSC) des PC.
    • – Die erhaltenen Zeitgeberwerte können mit der CPU in dem PC korreliert werden, um eine noch bessere Abschätzung zu erhalten, ob die Ausführung in einer virtuellen Maschine erfolgt.
    • – In dem oben genannten Punkt 4 könnte die Einheit anstelle eines vollständig automatisierten Vorgangs Informationen für den Benutzer bereitstellen und ihn fragen, ob ein Booten des BS stattfinden soll. Das ist von Interesse, wenn der Benutzer vertrauenswürdig ist (und angenommen wird, dass er in der Lage ist, derartige Entscheidungsaufrufe zu tätigen). Der Benutzer könnte beispielsweise über die Tatsache informiert werden, dass der PC 30 ms benötigt, um einen vorgegebenen Befehl auszuführen, bei dem üblicherweise 10 bis 15 ms in einer sauberen Umgebung erforderlich sind, wohingegen bei bösartigen Ausführungen üblicherweise 100 ms erforderlich sind. In diesem Fall kann der Benutzer schlussfolgern, dass die Berechnungsdauer annehmbar ist, weil beispielsweise seine Maschine alt ist. Wenn bei einem anderen Beispiel der Zeitablauf 65 ms betragen soll, kann der Benutzer auf eine bösartige Umgebung schließen, z. B. weil die Maschine neu und schnell ist und der Zeitablauf im Bereich von 7 bis 10 ms liegen sollte.
    • – Diese Informationen könnten objektiv oder trotzdem codiert (grünes, rotes oder oranges Merkbit, 123, usw.) dargestellt werden.
    • – Diese Ausgestaltungsvarianten tragen dazu bei, die Tatsache zu berücksichtigen, dass Computer immer schneller werden. Sie erfordern jedoch Kenntnisse auf Seiten des Benutzers.
    • – Beim Punkt 4 kann die externe Einheit mit einem Server interagieren wie in der Schrift ”The Zurich Trusted Information Channel – An Efficient Defence against Man-in-the-Middle and Malicious Software Attacks” beschrieben, die einleitend zitiert wurde, um den Server um Erlaubnis zum Fortsetzen zu fragen.
  • Das oben genannte Verfahren ist ein heuristisches Verfahren und hält einen Angreifer nicht auf, der entschlossen ist und über Ressourcen und Zeit verfügt, um einen Angriff zu verüben. Es bestehen jedoch Chancen, dass zu dem Zeitpunkt, an dem er den Angriff entwickelt hat, eine neuere Version der Software zur Verfügung steht, bei der es erforderlich ist, dass der Angreifer sein Setup erneut ändern muss. Das oben genannte Verfahren soll mit anderen Worten lediglich für alle Angreifer viele weitere Hindernisse einrichten, die ein Hacken des Systems um zwei Größenordnungen schwieriger machen.
  • 2.2 Erkennen eines BIOS, das betrügerisch verändert wurde
  • Ein erneutes Starten eines Computers von einem externen Boot-Medium und ein Starten eines „sauberen” BS von dem externen Medium oder eines ansonsten vertrauenswürdigen BS wirft eine weitere Frage auf, wie die Erfinder dieses Verfahrens ebenfalls erkannt haben: Kann man dem BIOS oder allgemeiner jeder Initialisierungs-Firmware 122, die beim Hochfahren des PC involvert ist, vertrauen? Tatsächlich kann oder könnte eine andere Initialisierungsfirmware beim Starten des Computers zum Ausführen aufgefordert werden, die ebenfalls infiziert sein könnte.
  • Zum Lösen dieses zusätzlichen Problems kann die Einheit 10 bei Ausführungsformen in der Lage sein, zusätzliche Operation auszulösen oder auszuführen, die übersichtsmäßig enthalten:
    • 1. Wenn der Computer 101 ein Booten von der Einheit 10 beginnt (oder nachdem eine Virtualisierung geprüft wurde), Zuordnen von Firmware-Daten zu einem Code (d. h. ein Zuordnungscode), wobei Firmware-Daten Programmcode der Initialisierungs-Firmware 122 und/oder Daten aufweisen, auf die durch die Initialisierungs-Firmware, z. B. das BIOS 122, zugegriffen werden kann, wenn ein Booten begonnen wird.
    • 2. Bestätigen der Vertrauenswürdigkeit dieses Zuordnungscodes; und
    • 3. Ermöglichen, dass der Computer 101 ein Booten von der Einheit 10 ausführt, wenn der Zuordnungscode bestätigt wird (das stellt eine weitere Bedingung dar zusätzlich zu der Tatsache, ob festgestellt werden kann, dass keine virtualisierte Umgebung involviert ist).
  • Dieses zusätzliche Verfahren ermöglicht ein Bestätigen der Vertrauenswürdigkeit von derartiger Firmware, indem Daten erhalten werden, die Programmcode der Initialisierungs-Firmware und/oder Daten aufweisen, auf die durch die Initialisierungs-Firmware zugegriffen werden kann, wenn ein Booten begonnen wird, und indem anschließend diese Firmware-Daten geprüft werden. Der Computer kann somit bei Ausführungsformen den Bootvorgang von dem externen Bootmedium 10 nur dann ausführen, wenn die Firmware-Daten bestätigt werden, zusätzlich zu der Tatsache, ob festgestellt werden kann, dass keine virtualisierte Umgebung involviert ist.
  • Ein wesentliches Element dieses zusätzlichen Ansatzes besteht wiederum darin, dass er einen PC-externen Vertrauensanker 10 erfordert, auf den definitionsgemäß Malware oder ein Angreifer in viel geringerem Umfang zugreifen kann als ein gewöhnlicher PC, PDA usw. Ein weiteres wesentliches Element dieser zusätzlichen Schritte besteht darin, kritische Informationen über den PC im richtigen Moment zu sammeln, d. h., bevor das BS gestartet (oder zumindest vollständig gestartet) wird, und sie z. B. über einen gesicherten Kanal an eine vertrauenswürdige Analyse zu berichten und schließlich eine Entscheidung zu treffen, ob ein Ausführen des sauberen BS begonnen wird.
  • Es gibt mehrere mögliche Varianten, welche kritischen Informationen, d. h., welche Firmware-Daten zu verwenden sind. Dahingehend ist ein Verwenden des Programmcodes der eigentlichen Firmware bereits zufriedenstellend, da verhindert wird, dass ein Angreifer den Programmcode verändert. Unabhängig von dem eigentlichen Programmcode der Firmware ist ein Verwenden von Daten, auf die von der Initialisierungs-Firmware zugegriffen werden kann wie z. B. Konfigurationsdaten für die Initialisierungs-Firmware, ebenfalls vorteilhaft, da (nur) die Konfigurationsdaten betrügerisch verändert sein könnten. Daher werden im Idealfall sowohl der Firmware-Programmcode der Initialisierungs-Firmware als auch Daten verwendet, auf die von der Initialisierungs-Firmware zugegriffen werden kann. In Bezug auf Konfigurationsdaten kann man beispielsweise einen Hashwert verwenden, der über einen ROM oder einen CMOS-ROM berechnet wird, der für die Firmware 122 geeignet ist oder auf den von der Firmware 122 beim Starten zugegriffen werden kann (und somit sowohl den Firmware-Programmcode aus auch Konfigurationsdaten aufweist) sowie weitere wesentliche Identifizierungszeichenfolgen aufweist. Diese Daten kennzeichnen die Firmware sowie den Zustand der Firmware und stellen deswegen eine solide Grundlage dar, ob die Initialisierungs-Firmware beeinträchtigt ist.
  • Außerdem ermöglicht ein Zuordnen derartiger Daten zu einem einzelnen Code ein schnelles Prüfen und somit ein schnelles Bestätigen. Man kann z. B. einen Hashwert verwenden, der über den ROM des BIOS, den CMOS-ROM des BIOS und/oder andere BIOS-Identifizierungszeichenfolgen berechnet wird. Allgemeiner gesagt, jeder Algorithmus/jede Unterroutine, der bzw. die in der Lage ist, einen Firmware-Datensatz einem Code zuzuordnen, kann verwendet werden, um die nachfolgende Prüfung zu ermöglichen. Während ein Verwenden einer Hashfunktion in mehrfacher Hinsicht geeigneter erscheint, könnte man auf eine einfache Prüfsumme vertrauen. In Abhängigkeit von dem gewünschten Sicherheitsgrad können dennoch Fingerabdrücke, d. h. leistungsstarke Hashfunktionen zum eindeutigen Identifizieren von wesentlichen Datensätzen, kryptografische Hashfunktionen oder auch Randomisierungsfunktionen bevorzugt sein.
  • Die Codezuordnung kann vor oder nach dem Prüfen der virtualisierten Umgebung ausgeführt werden. Es ist kein erneutes Booten erforderlich. Beispielsweise ist die Reihenfolge unerheblich, in der die Virtualisierungsprüfung und eine CMOS-Prüfsumme auszuführen ist. Jedoch werden beide Datenelemente (Virtualisierungsdaten und Hardware-Fingerabdrücke) in einer Datenbank vorteilhaft berechnet und geprüft. Auf diese Weise müssen sowohl die Virtualisierung als auch der Hardware-Fingerabdruck einer Weißliste entsprechen. Außerdem können die Virtualisierung und der Hardware-Fingerabdruck korrelativ und nicht unabhängig geprüft werden. Man kann beispielsweise Virtualisierungsdaten erhalten, die an sich annehmbar sind, gepaart mit einem an sich annehmbaren Hardware-Fingerabdruck, die trotzdem eine Kombination bilden, die nicht als korrekt identifiziert wird, d. h., die Virtualisierungsdaten entsprechen nicht dem korrekten Hardwareprofil. Wenn beispielsweise der Hardware-Fingerabdruck einen PC mit einem schnellen Rechner identifiziert, die Virtualisierungsdaten jedoch einen Zeitstempel eines langsamen Rechners erzeugen, kann das durch Kombinieren der beiden und durch Prüfen einer resultierenden Kombination, z. B. in derselben Datenbank identifiziert werden.
  • Beispielsweise könnte durch Kombinieren der beiden Ansätze, die in den Abschnitten 2.1 und 2.2 beschrieben sind, die vorliegende Erfindung als für einen Benutzer vertrauenswürdige Einheit oder dementsprechend als ein Verfahren zum Befähigen eines Computers 101 zum Booten von einer für einen Benutzer vertrauenswürdigen Einheit 10 verkörpert werden. Es ist wesentlich, dass die für einen Benutzer vertrauenswürdige Einheit 10 wiederum eine Verbindungsschnittstelle 12 aufweist, die eine Verbindung S2 mit dem Computer 101 ermöglicht, und das Verfahren weist auf:
    • 1. Ermöglichen, dass ein Computer 101 ein Booten von der Einheit 10 beginnt bei Verbindung der Einheit 10 mit dem Computer 101 über die Verbindungsschnittstelle 12;
    • 2. Zuordnen von Firmware-Daten zu einem Zuordnungscode, wobei die Firmware-Daten Code einer Initialisierungs-Firmware und/oder Daten, auf die durch die Initialisierungs-Firmware 122 des Computer zugegriffen werden kann, während ein Booten beginnt, und vorzugsweise einen Hardware-Datensatz der Initialisierungs-Firmware aufweisen;
    • 3. Bestätigen der Vertrauenswürdigkeit des Zuordnungscodes;
    • 4. Anweisen eines Prozessors 105 des Computers 101 zum a. Ausführen von virtualisierungskritischem Code und b. Ausgeben von Beendigungsdaten beim Beenden des Ausführens, wobei die Beendigungsdaten von dem virtualisierungskritischen Code und seiner Umsetzung durch den Prozessor 105 abhängen;
    • 5. Ermitteln auf der Grundlage der Beendigungsdaten, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte; und
    • 6. Ermöglichen, dass der Computer 101 ein Booten von der für einen Benutzer vertrauenswürdigen Einheit 10 abschließt, wenn festgestellt wird, dass a. das Ausführen nicht in einer virtualisierten Umgebung erfolgte; und b. wenn der Zuordnungscode bestätigt wird; oder c. wenn die Virtualisierungskennzahl, der Zuordnungscode korrekt ist sowie die Virtualisierungskennzahl mit dem Zuordnungscode korreliert (in Bezug auf diesen korrelativ ist).
  • Es wird angemerkt, dass bei Varianten die Schritte 2 bis 3 nach oder parallel zu den Schritten 4 bis 5 oder mit diesen verschachtelt ausgeführt werden können.
  • Wie oben erwähnt ist zwischen den oben genannten Schritten 2 und 4 kein erneutes Booten erforderlich. Als abschließender Kommentar wird jedoch angemerkt, dass der Computer meistens (erneut) gestartet werden muss, nachdem die Einheit 10 mit ihm verbunden wurde, oder auf andere Weise in einen Zustand versetzt werden muss, der es ermöglicht, dass er von der externen Einheit 10 gestartet wird (um den oben genannten Schritt 1 auszuführen, d. h. ein Booten zu beginnen), daher sind beispielsweise die folgenden Optionen möglich:
    • – Computer 101 ist ausgeschaltet; Einstecken der Einheit 10; Starten des Computers; oder
    • – Computer 101 läuft bereits; Einstecken der Einheit; erneutes Starten des Computers.
  • 2.3 Beispiele von Befehlen, die bei Ausführungsformen verwendet werden
  • Beispiele von virtualisierungskritischen Befehlen wurden vorhergehend erläutert. Jetzt folgen Beispiele (Abfolgen) von weiteren Befehlen, die zum Ausführen von Ausführungsformen vorteilhaft verwendet werden könnten. Einem Fachmann ist klar, dass weitere Befehle mit derselben/ähnlicher Funktionalität vorhanden sind, die verwendet werden können, um im Wesentlichen Dasselbe zu erreichen.
  • Zunächst folgt ein Beispiel von API, mit dem BIOS-Informationen gelesen werden können:
    outb(cmos_data_address, 0x70);
    data_at_address = inb(0x71);
    wobei cmos_data_address über den Bereich 0 ... max_cmos_data_address iteriert wird. Weitere ähnliche Befehle zum Lesen des eigentlichen Programmcodes der Firmware und/oder von deren Konfigurationsdaten werden durch Intel 82802AB/82802AC Firmware Hub (FWH) bereitgestellt.
  • Bei dem EFI-BIOS könnten dieselben Befehle verwendet werden, um die BIOS-Informationen zu erhalten, insbesondere wenn beispielsweise der Intel Firmware Hub verwendet wird.
  • Als Nächstes wird ein Beispiel von Befehlen bereitgestellt, die ein Interagieren mit der für einen Benutzer vertrauenswürdigen Einheit von dem PC ermöglichen:
    Lies einen Block von der für einen Benutzer vertrauenswürdigen Einheit
  • (Massenspeichereinheit)
    • mov ah, 42 h
    • mov dl, the drive_to_read from
    • mov ds:si, disk address_packet_describing_what to_read
    • int 13 h
  • Schreibe einen Block in die für einen Benutzer vertrauenswürdige Einheit
  • (Massenspeichereinheit):
    • mov ah, 43 h
    • mov dl, the_drive_to_write_to
    • mov ds:si, disk_address_packet_describing_what_to_write
    • int 13 h
  • In dem EFI-BIOS könnte das sogenannte EFI_DISK_IO_PROTOCOL oder EFI_BLOCK_IO_PROTOCOL verwendet werden, das sowohl Lese- als auch Schreibfunktionen bereitstellt.
  • Auf geeignete Platten-E/A-Befehle kann durch einen Fachmann leicht zugegriffen werden.
  • Schließlich gehören zu einem Beispiel einer Abfolge von Befehlen, die von den Modulen zum Initialisieren eines PXE-BIOS verwendet werden können:
    • Load UNDI ROM
    • PXENV_START_UNDI
    • PXENV_UNDI_STARTUP
    • PXENV_UNDI_INITIALIZE
    • PXENV_UNDI_OPEN ohne auf diese beschränkt zu sein.
  • Ein zusätzlicher Befehl (z. B. PXENV_UNDI_TRANSMIT) könnte angefügt werden, um Pakete über die Netzwerkkarte 124 zu dem Server 30 zu senden. Mittels derartiger Befehle interagieren die Module bei Ausführung in dem Host mit dem PXE-BIOS 122 zum Initialisieren der Netzwerkkarte 124, wodurch ein Datenaustausch über das Netzwerk ausgelöst werden kann.
  • Ähnliche Befehle werden durch EFI und UEFI BIOSes in dem EFI_SIMPLE_NETWORK API (Initialize, Start, Stop, Receive, Transmit) bereitgestellt. BIOSes können außerdem Umsetzungen eines höheren Protokolls des TCP/IP-Stapels bereitstellen, und andere Vernetzungsprotokolle können ebenfalls verwendet werden.
  • Zwar wurde die vorliegende Erfindung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsformen, Varianten und die beigefügten Zeichnungen beschrieben, für einen Fachmann ist jedoch klar, dass verschiedene Änderungen ausgeführt werden können und Entsprechungen eingesetzt werden können, ohne vom Umfang der vorliegenden Erfindung abzuweichen. Insbesondere kann ein Merkmal (einheitenspezifisch oder verfahrensspezifisch), das in einer vorgegebenen Ausführungsform oder Variante angeführt oder in einer Zeichnung gezeigt wurde, mit einem anderen Merkmal in einer anderen Ausführungsform, Variante oder Zeichnung kombiniert oder durch dieses ersetzt werden, ohne vom Umfang der vorliegenden Erfindung abzuweichen. Verschiedene Kombinationen der Merkmale, die in Bezug auf eine der oben genannten Ausführungsformen oder Varianten beschrieben wurden, können dementsprechend in Erwägung gezogen werden, die im Umfang der angefügten Ansprüche bleiben. Außerdem können viele geringfügige Modifikationen ausgeführt werden, um eine bestimmte Situation oder ein bestimmtes Material an die Erkenntnisse der vorliegenden Erfindung anzupassen, ohne von deren Umfang abzuweichen. Es ist deswegen vorgesehen, dass die vorliegende Erfindung nicht auf die speziellen Ausführungsformen beschränkt sein soll, die offenbart wurden, sondern dass die vorliegende Erfindung alle Ausführungsformen einschließt, die in den Umfang der angefügten Ansprüche fallen. Außerdem können viele weitere Varianten als die oben explizit angeführten in Betracht gezogen werden. Beispielsweise wurden die Hauptfunktionen zur Klarheit der Beschreibung so beschrieben, dass sie entsprechenden Modulen 15, 16, 17 zugewiesen sind. Ausführungsformen der vorliegenden Erfindung könnten jedoch gleichfalls mit denselben Funktionen beschrieben werden, die über ein oder mehrere Module verteilt sind, wobei jedes mit unterschiedlichen Funktionen von diesen Funktionen ausgestattet ist. Beispielsweise könnten das Boot-Ladeprogramm 16 und das PIM 15 als ein einzelnes Modul betrachtet werden, das möglicherweise als ein „Bootloader” bezeichnet wird, obwohl es trotzdem dieselben Funktionen ausführt, die ansonsten hier beschrieben wurden.
  • Bezugszeichenliste
  • 10
    Für einen Benutzer vertrauenswürdige Einheit
    11
    CPU der sicheren Einheit
    12
    Verbindungsschnittstelle
    14
    Dauerhafter Speicher
    141
    Sicherer Speicher
    142
    Nichtsicherer Speicher
    15
    Prozessorbefehlsmodul (PIM)
    151
    Erster Teil des Prozessorbefehlsmoduls (PIM)
    152
    Zweiter Teil des Prozessorbefehlsmoduls (PIM)
    16
    Boot-Ladeprogramm
    17
    Prüfmodul
    30
    Server
    15, 17
    Virtualisierungsanalysemodul (VAM)
    100
    Allgemeines computergestütztes System
    101
    Hostcomputer
    105
    Computerprozessor
    110
    Speicher
    111
    Betriebssystem (BS)
    115
    Speichersteuereinheit
    120
    Physisches Speichermedium (physische Platte)
    122
    Firmware (BIOS) des Hostcomputers
    124
    Netzwerkkarte
    125
    Anzeigesteuereinheit
    130
    Anzeige
    145
    E/A-Einheiten (oder periphere Einheiten)
    150
    Tastatur
    155
    Maus
    165
    Netzwerk

Claims (15)

  1. Für einen Benutzer vertrauenswürdige Einheit (10), die aufweist: eine Verbindungsschnittstelle (12), die eine Verbindung mit einem Computer (101) ermöglicht; und einen dauerhaften Speicher (14), der Module (15, 16, 17) speichert, die so eingerichtet sind, dass sie bei Verbindung der für einen Benutzer vertrauenswürdigen Einheit (10) mit dem Computer (101) über die Verbindungsschnittstelle (12): ermöglichen, dass der Computer (101) ein Booten von der für einen Benutzer vertrauenswürdigen Einheit (10) beginnt; einen Prozessor (105) des Computers (101) anweisen, virtualisierungskritischen Code auszuführen, während ein Booten begonnen wird, und beim Beenden des Ausführens Beendigungsdaten auszugeben; auf der Grundlage dieser Beendigungsdaten ermitteln, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte; und ermöglichen, dass der Computer (101) ein Booten von der für einen Benutzer vertrauenswürdigen Einheit (10) ausführt, wenn festgestellt wird, dass das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  2. Für einen Benutzer vertrauenswürdige Einheit (10) nach Anspruch 1, wobei die Module aufweisen: ein Boot-Ladeprogramm (10), das ermöglicht, dass der Computer (101) ein Booten von der Einheit (10) beginnt und ausführt; ein Prozessorbefehlsmodul (15), das in dem Computer (101) ausführbar ist, um den Prozessor (105) anzuweisen, den virtualisierungskritischen Code auszuführen und die Beendigungsdaten auszugeben; und ein Prüfmodul (17), das zum Anweisen eingerichtet, um auf der Grundlage der Beendigungsdaten zu ermitteln, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte, wobei das Prüfmodul (17) in der Einheit (10) und/oder in dem Computer (101) ausführbar ist und wobei, das Boot-Ladeprogramm (16) durch die Initialisierungs-Firmware (122) erkennbar ist bei Verbindung der für einen Benutzer vertrauenswürdigen Einheit (10) mit dem Computer (101) und Befehle für die Firmware (122) aufweist, um eine Übertragung des Prozessorbefehlsmoduls (15) in den Computer (101) für eine nachfolgende Umsetzung in dem Computer (101) auszulösen.
  3. Für einen Benutzer vertrauenswürdige Einheit (10) nach Anspruch 2, wobei das Prozessorbefehlsmodul (15) ferner so eingerichtet ist, dass es beim Ausführen in dem Computer (101) den Prozessor (105) anweist, virtualisierungskritischen Code auszuführen, der so ausgelegt ist, dass der Prozessor als Teil der Beendigungsdaten eine Liste von einem oder mehreren Merkmalen erzeugt, die durch den Computer (101) und vorzugsweise durch den Prozessor selbst unterstützt werden.
  4. Für einen Benutzer vertrauenswürdige Einheit (10) nach Anspruch 2 oder 3, wobei das Prozessorbefehlsmodul (15) ferner so eingerichtet ist, dass es beim Ausführen in dem Computer (101) den Prozessor (105) anweist, als Teil der Beendigungsdaten einen Endzustandswert zu erzeugen, der von einem rechentechnischen Aufwand des Prozessors abhängt, der zum Ausführen des virtualisierungskritischen Codes erforderlich ist, und wobei das Prozessorbefehlsmodul (15) vorzugsweise ferner so eingerichtet ist, dass es beim Ausführen in dem Computer (101) den Prozessor (105) anweist, einen Anfangszustandswert zu erzeugen, der einen Zustand des Prozessors vor dem Ausführen des virtualisierungskritischen Codes widerspiegelt.
  5. Für einen Benutzer vertrauenswürdige Einheit (10) nach Anspruch 4, wobei das Prüfmodul (17) ferner eingerichtet ist zum Erzeugen auf der Grundlage des Anfangszustandswerts und des Endzustandswerts eines Prozessornutzungswerts, der den rechentechnischen Auswand des Prozessors quantifiziert, der zum Ausführen des virtualisierungskritischen Codes erforderlich ist, wie z. B. eine Berechnungszeitdauer, eine Anzahl von Prozessorzyklen oder ein Zählerwert; und Ermitteln auf der Grundlage des Prozessornutzungswerts, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  6. Für einen Benutzer vertrauenswürdige Einheit (10) nach Anspruch 4, wobei das Prozessorbefehlsmodul (15) vorzugsweise ferner so eingerichtet ist, dass es beim Ausführen in dem Computer (101) den Prozessor (105) anweist, als Teil der Beendigungsdaten einen Prozessornutzungswert zu erzeugen, der den rechentechnischen Auswand des Prozessors quantifiziert, der zum Ausführen des virtualisierungskritischen Codes erforderlich ist, wie z. B. eine Berechnungszeitdauer, eine Anzahl von Prozessorzyklen oder ein Zählerwert, und wobei das Prüfmodul (17) ferner zum Anweisen eingerichtet ist, auf der Grundlage des Prozessornutzungswerts zu ermitteln, ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  7. Für einen Benutzer vertrauenswürdige Einheit (10) nach einem der Ansprüche 2 bis 6, wobei das Prüfmodul (17) ferner zum Anweisen eingerichtet ist, vorzugsweise über den Computer (101) eine Verbindung mit einem Server (30) herzustellen, um wenigstens teilweise in dem Server zu ermitteln, ob das Ausführen nicht in einer virtuallsierten Umgebung erfolgte.
  8. Für einen Benutzer vertrauenswürdige Einheit (10) nach Anspruch 7, wobei das Prüfmodul (17) ferner so eingerichtet ist, dass es ausführt: – Interagieren mit der Firmware (122), um daraufhin mit einer Netzwerkkarte (124) des Computers (101) zu interagieren, um bei Freigabe durch die Netzwerkkarte (124) einen Datenaustausch über ein Netzwerk (165) auszulösen, um eine Verbindung mit dem Server (30) herzustellen; und/oder – Zugreifen auf Netzwerkkartentreiber, die in der für einen Benutzer vertrauenswürdigen Einheit (10) gespeichert sind, zum direkten Interagieren mit einer Netzwerkkarte (124) des Computers (101), um bei Freigabe durch die Netzwerkkarte einen Datenaustausch über ein Netzwerk auszulösen, um eine Verbindung mit dem Server herzustellen; und/oder – interagieren vorzugsweise über das Boot-Ladeprogramm mit der Firmware (122), um ein Betriebssystem des Computers teilweise zu betreiben, um bei Bedarf eine Verbindung mit dem Server (30) über den Computer (101) herzustellen.
  9. Für einen Benutzer vertrauenswürdige Einheit (10) nach einem der Ansprüche 1 bis 8, wobei der virtualisierungskritische Code aufweist: – Befehle zum Umschalten des Prozessors von einer geschützten Betriebsart in eine reelle Betriebsart und/oder Befehle zum Umschalten des Prozessors von einer reellen Betriebsart in eine geschützte Betriebsart; und/oder – Befehle für den Prozessor zum Lesen eines maschinenspezifischen Registers; und/oder – Befehle für den Prozessor zum Schreiben in ein maschinenspezifisches Register.
  10. Verfahren zum Ermöglichen, dass ein Computer (101) von einer für einen Benutzer vertrauenswürdigen Einheit (10) bootet, wobei die für einen Benutzer vertrauenswürdige Einheit (10) eine Verbindungsschnittstelle (12) aufweist, die eine Verbindung (S2) mit dem Computer (101) ermöglicht, wobei das Verfahren aufweist: Ermöglichen (S3), dass der Computer (101) ein Booten von der für einen Benutzer vertrauenswürdigen Einheit (10) beginnt bei Verbindung (S2) der für einen Benutzer vertrauenswürdigen Einheit mit dem Computer (101) über die Verbindungsschnittstelle (12); Anweisen eines Prozessors (105) des Computers (101) zum Ausführen (S7) von virtualisierungskritischem Code und Ausgeben (S8) von Beendigungsdaten beim Beenden des Ausführens, wobei die Beendigungsdaten von dem virtualisierungskritischen Code und seiner Ausführung durch den Prozessor (105) abhängen; auf der Grundlage der Beendigungsdaten Ermitteln (S9 bis S13), ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte; und Ermöglichen (S15), dass der Computer (101) ein Booten von der für einen Benutzer vertrauenswürdigen Einheit (10) ausführt, wenn festgestellt wird, dass das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  11. Verfahren nach Anspruch 10, das ferner ein Interagieren mit einer Initialisierungs-Firmware (122) des Computers (101) bei Verbindung der für einen Benutzer vertrauenswürdigen Einheit (10) mit dem Computer (101) aufweist, zum Ermöglichen (S3), dass der Computer (101) ein Booten von der für einen Benutzer vertrauenswürdigen Einheit (10) beginnt; und Auslösen (S4) einer Übertragung eines Prozessorbefehlsmoduls (15) zu dem Computer (101) für ein nachfolgendes Ausführen (S5 bis S6) in dem Computer (101), um zu bewirken, dass der Prozessor (105) den virtualisierungskritischen Code ausführt und beim Beendigen des Ausführens die Beendigungsdaten ausgibt (S8).
  12. Verfahren nach Anspruch 10 oder 11, wobei das Ermitteln (S9 bis S14), ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte, ein Ausführen (S9) eines Prüfmoduls (17) in der Einheit (10) und/oder in dem Computer (101) aufweist und wobei das Ausführen (S9) des Prüfmoduls (17) vorzugsweise ein Herstellen einer Verbindung (S10) mit einem Server (30), vorzugsweise über den Computer (101), aufweist, um in dem Server wenigstens teilweise zu ermitteln (11), ob das Ausführen nicht in einer virtualisierten Umgebung erfolgte.
  13. Verfahren nach einem der Ansprüche 10 bis 12, wobei der Prozessor (105) ferner angewiesen ist, als Teil der Beendigungsdaten eine Liste von einem oder mehrere Merkmalen zu erzeugen (S8), die durch den Computer (101) und vorzugsweise durch den Prozessor selbst unterstützt werden.
  14. Verfahren nach einem der Ansprüche 10 bis 13, wobei der Prozessor (105) ferner angewiesen wird, als Teil der Beendigungsdaten einen Endzustandswert zu erzeugen (S8), der von einem rechentechnischen Aufwand des Prozessors abhängt, der zum Ausführen des virtualisierungskritischen Codes erforderlich war wie z. B. eine Berechnungszeitdauer, eine Anzahl von Prozessorzyklen oder ein Zählerwert, und wobei der Prozessor (105) vorzugsweise ferner angewiesen wird, einen Anfangszustandswert vor dem Ausführen (37) des virtualisierungskritischen Codes zu erzeugen (S6).
  15. Computerprogrammprodukt zum Ermöglichen, dass ein Computer (101) von einer für einen Benutzer vertrauenswürdigen Einheit (10) bootet, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darin verkörperten Modulen (15, 16, 17) aufweist, wobei die Module ein Ausführen sämtlicher Schritte von allen Verfahren nach den Ansprüchen 10 bis 14 zulassen.
DE112013005184.2T 2012-12-14 2013-11-26 Für einen Benutzer vertrauenswürdige Einheit zum Erkennen einer virtualisierten Umgebung Pending DE112013005184T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1222583.5 2012-12-14
GB1222583.5A GB2508894A (en) 2012-12-14 2012-12-14 Preventing a trusted boot device from being booted in a virtual machine
PCT/IB2013/060408 WO2014091343A1 (en) 2012-12-14 2013-11-26 User trusted device for detecting a virtualized environment

Publications (1)

Publication Number Publication Date
DE112013005184T5 true DE112013005184T5 (de) 2015-07-16

Family

ID=47630746

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013005184.2T Pending DE112013005184T5 (de) 2012-12-14 2013-11-26 Für einen Benutzer vertrauenswürdige Einheit zum Erkennen einer virtualisierten Umgebung

Country Status (6)

Country Link
US (3) US9589128B2 (de)
JP (1) JP2015537322A (de)
CN (1) CN104903854B (de)
DE (1) DE112013005184T5 (de)
GB (2) GB2508894A (de)
WO (1) WO2014091343A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2508894A (en) 2012-12-14 2014-06-18 Ibm Preventing a trusted boot device from being booted in a virtual machine
US10110566B2 (en) 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
US10185828B2 (en) * 2016-03-15 2019-01-22 Dell Products L.P. Systems and methods using virtual UEFI path for secure firmware handling in multi-tenant or server information handling system environments
US10740409B2 (en) 2016-05-20 2020-08-11 Magnet Forensics Inc. Systems and methods for graphical exploration of forensic data
EP3475817A1 (de) * 2016-06-28 2019-05-01 Amazon Technologies Inc. Asynchrone aufgabenverwaltung in einer on-demand-netzwerkcodeausführungsumgebung
US10467416B2 (en) 2017-06-16 2019-11-05 International Business Machines Corporation Securing operating system configuration using hardware
EP3773201A1 (de) * 2018-03-28 2021-02-17 Dexcom, Inc. Sensorkabelstützvorrichtung mit mechanischen verbindern
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
CN111310162B (zh) * 2020-01-20 2023-12-26 深圳力维智联技术有限公司 基于可信计算的设备接入控制方法、装置、产品及介质
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
CN111627489B (zh) * 2020-04-20 2023-09-29 珠海妙存科技有限公司 闪存特性分析方法及系统
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7664836B2 (en) 2004-02-17 2010-02-16 Zhe Khi Pak Device and method for booting an operation system for a computer from a passive directly attached network device
US20070011444A1 (en) * 2005-06-09 2007-01-11 Grobman Steven L Method, apparatus and system for bundling virtualized and non-virtualized components in a single binary
US7434003B2 (en) * 2005-11-15 2008-10-07 Microsoft Corporation Efficient operating system operation on a hypervisor
CN101038551A (zh) * 2006-03-16 2007-09-19 南京大学 在移动硬盘上实现启动Linux操作系统的方法
US7743422B2 (en) * 2006-08-21 2010-06-22 International Business Machines Corporation System and method for validating a computer platform when booting from an external device
US8510859B2 (en) * 2006-09-26 2013-08-13 Intel Corporation Methods and arrangements to launch trusted, co-existing environments
US7689817B2 (en) * 2006-11-16 2010-03-30 Intel Corporation Methods and apparatus for defeating malware
GB0706810D0 (en) * 2007-04-05 2007-05-16 Becrypt Ltd System for providing a secure computing environment
US8024790B2 (en) 2007-04-11 2011-09-20 Trend Micro Incorporated Portable secured computing environment for performing online confidential transactions in untrusted computers
US8104088B2 (en) 2007-05-11 2012-01-24 Microsoft Corporation Trusted operating environment for malware detection
US20090132816A1 (en) 2007-11-15 2009-05-21 Lockheed Martin Corporation PC on USB drive or cell phone
US8505103B2 (en) 2009-09-09 2013-08-06 Fujitsu Limited Hardware trust anchor
CN102906698A (zh) * 2010-05-20 2013-01-30 杉中顺子 外部启动设备、外部启动方法、信息处理装置及网络通信系统
US20120011354A1 (en) * 2010-07-02 2012-01-12 Encryptakey, Inc. Boot loading of secure operating system from external device
CN102681859A (zh) * 2011-03-10 2012-09-19 北京路模思科技有限公司 一种从USB大容量存储设备中启动Windows操作系统的方法
US8966642B2 (en) * 2011-04-05 2015-02-24 Assured Information Security, Inc. Trust verification of a computing platform using a peripheral device
GB2508894A (en) 2012-12-14 2014-06-18 Ibm Preventing a trusted boot device from being booted in a virtual machine

Also Published As

Publication number Publication date
GB201510657D0 (en) 2015-07-29
CN104903854A (zh) 2015-09-09
CN104903854B (zh) 2018-04-24
US20180181744A1 (en) 2018-06-28
GB201222583D0 (en) 2013-01-30
GB2508894A (en) 2014-06-18
US20180089414A1 (en) 2018-03-29
WO2014091343A1 (en) 2014-06-19
US10318724B2 (en) 2019-06-11
US9589128B2 (en) 2017-03-07
GB2523057A (en) 2015-08-12
US20150317472A1 (en) 2015-11-05
US10229261B2 (en) 2019-03-12
JP2015537322A (ja) 2015-12-24
GB2523057B (en) 2015-10-07

Similar Documents

Publication Publication Date Title
DE112013005184T5 (de) Für einen Benutzer vertrauenswürdige Einheit zum Erkennen einer virtualisierten Umgebung
JP7408725B2 (ja) コンピュータシステムの自動動作管理
DE112018002031B4 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
DE112005001739B4 (de) Nachverfolgung geschützter Speicherbereiche zur Beschleunigung von Antivirusprogrammen
DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
EP2973171B1 (de) Kontextbasierte schaltung zu einer sicheren betriebssystemumgebung
US20170005983A1 (en) Computer security architecture and related computing method
US11438349B2 (en) Systems and methods for protecting devices from malware
DE112016000576T5 (de) Sicheres Booten eines Computers von einer für den Benutzer vertrauenswürdigen Einheit aus
EP3067817A1 (de) Dynamische datenmaskierung für mainframe-anwendung
DE112014000337T5 (de) Sichere Ausführung von Software-Modulen auf einem Computer
CN106687971A (zh) 用来减少软件的攻击面的自动代码锁定
CN108475217A (zh) 用于审计虚拟机的系统及方法
DE112008002888T5 (de) Hardwarevorrichtungsschnittstelle, die Transaktionsauthentifizierung unterstützt
CN101788915A (zh) 基于可信进程树的白名单更新方法
DE202014011092U1 (de) Sicherheitsarchitektur für virtuelle Maschinen
DE112005002985T5 (de) Verfahren zum Einrichten einer vertrauenswürdigen Ablaufumgebung in einem Computer
CN109800576B (zh) 未知程序异常请求的监控方法、装置、及电子装置
KR101649909B1 (ko) 가상 머신 취약점 점검과 복구 방법 및 장치
DE112020003881T5 (de) System und verfahren zur durchführung von trusted computing mit fernbescheinigung und informationsisolierung auf heterogenen prozessoren über eine offene verbindung
DE102021127629A1 (de) Virtualisierung der sicheren speicherung eines baseboard management controllers auf einem host- computergerät
US20180089415A1 (en) User trusted device for detecting a virtualized environment
DE202013103358U1 (de) Selektive Einschätzung der Schädlichkeit von im Adressraum eines vertrauenswürdigen Prozesses ausgeführtem Software-Code
De Lucia et al. Cloud migration experiment configuration and results
Mostafa et al. A Novel VM Hardening Policy for Enhancing VM Security under Cross-Virtualization Platform

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence