DE112018002947T5 - Computersystem-software/firmware und prozessoreinheit mit einem sicherheitsmodul - Google Patents

Computersystem-software/firmware und prozessoreinheit mit einem sicherheitsmodul Download PDF

Info

Publication number
DE112018002947T5
DE112018002947T5 DE112018002947.6T DE112018002947T DE112018002947T5 DE 112018002947 T5 DE112018002947 T5 DE 112018002947T5 DE 112018002947 T DE112018002947 T DE 112018002947T DE 112018002947 T5 DE112018002947 T5 DE 112018002947T5
Authority
DE
Germany
Prior art keywords
security module
processor
data
interface
memory
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
DE112018002947.6T
Other languages
English (en)
Inventor
Angel Nunez Mencias
Jakob Christopher Lang
Martin Recktenwald
Ulrich Mayer
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 DE112018002947T5 publication Critical patent/DE112018002947T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

Technologie zum Entschlüsseln und Verwenden eines Sicherheitsmoduls in einem Prozessor-Cachespeicher in einer sicheren Betriebsart, so dass eine dynamische Adressübersetzung den Zugriff auf Teile des flüchtigen Speichers außerhalb eines Geheimspeichers in einem flüchtigen Speicher verhindert.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich auf Sicherheitsmodule (SMs), die zum Durchführen verschlüsselter zusammengehöriger Arbeitsschritte (zum Beispiel Verschlüsselung von Zieldaten, Entschlüsselung von Zieldaten, Schlüsselverwaltung) verwendet werden.
  • Bei einem Hardware-Sicherheitsmodul (HSM) handelt es sich um eine physische Datenverarbeitungseinheit, die digitale Schlüssel für eine starke Authentifizierung schützt und verwaltet und eine Krypto-Verarbeitung ermöglicht. Diese Module sind herkömmlicherweise in Form einer Einsteckkarte oder einer externen Einheit erhältlich, die direkt an einen Computer oder Netzwerkserver angeschlossen wird. HSMs können über Steuerungen verfügen, die Manipulationsnachweise wie zum Beispiel Protokollierung und Alarmierung sowie Manipulationssicherheit wie Löschen von Schlüsseln beim Erkennen von Manipulationen bereitstellen. Jedes Modul enthält einen oder mehrere sichere Krypto-Prozessorchips, um Manipulationen und Buserforschungen (bus probing) zu verhindern.
  • Viele HSM-Systeme weisen Mittel auf, um von den von ihnen verarbeiteten Schlüsseln entweder in verpackter Form über das Betriebssystem des Computers oder extern über eine Smartcard oder einen anderen Sicherheitstoken sicher eine Sicherheitskopie zu erstellen. Da HSMs häufig Teil einer unternehmenskritischen Infrastruktur wie einer Public-Key-Infrastruktur oder einer Online-Banking-Anwendung sind, können HSMs zum Zwecke einer hohen Verfügbarkeit üblicherweise in Gruppen zusammengefasst werden. Einige HSMs verfügen über zwei Stromversorgungen und vor Ort austauschbare Komponenten wie zum Beispiel Kühllüfter, um den Hochverfügbarkeitsanforderungen von Rechenzentrumsumgebungen gerecht zu werden und Geschäftskontinuität zu ermöglichen.
  • Nur wenige HSMs sind in der Lage, speziell entwickelte Module innerhalb der sicheren Umgrenzung des HSM auszuführen. Eine derartige Fähigkeit ist zum Beispiel dann sinnvoll, wenn spezielle Algorithmen oder Geschäftslogik in einer gesicherten und gesteuerten Umgebung ausgeführt werden müssen. Die Module können in nativer Sprache C, in .NET, Java oder anderen Programmiersprachen entwickelt werden. Während diese Ausführungsmaschinen den Vorteil des Sicherns von anwendungsspezifischem Code bereitstellen, befolgen sie den Federal Information Processing Standard (FIPS, deutsch: Bundesstandard für Informationsverarbeitung) oder eine Gültigkeitsprüfung nach Common Criteria eines HSM.
  • Ein Hardware-Sicherheitsmodul kann in jeder Anwendung eingesetzt werden, die digitale Schlüssel verwendet. Üblicherweise müssen die Schlüssel von hohem Wert sein, was bedeutet, dass es zu erheblichen negativen Auswirkungen für den Eigentümer des Schlüssels kommen würde, wenn er kompromittiert würde. Die Funktionen eines HSM sind: (i) internes Erzeugen von sicheren kryptografischen Schlüsseln; (ii) internes Speichern und Verwalten von sicheren kryptografischen Schlüsseln; (iii) Verwenden von kryptografischem Material; und (iv) Verwenden von sensiblem Datenmaterial; und (v) Entlasten von Anwendungsservern zum Zwecke einer vollständigen asymmetrischen und symmetrischen Kryptographie. HSMs werden auch zum Verwalten von transparenten Datenverschlüsselungsschlüsseln für Datenbanken eingesetzt. HSMs stellen sowohl logischen als auch physischen Schutz für diese Materialien, darunter kryptographische Schlüssel, vor nicht berechtigter Verwendung und möglichen Angreifern bereit. Bei dem von den meisten HSMs verarbeiteten kryptographischen Material handelt es sich um asymmetrische Schlüsselpaare (und Zertifikate), die in der Public-Key-Kryptographie verwendet werden. Einige HSMs können auch symmetrische Schlüssel und andere beliebige Daten verarbeiten.
  • Die Herstellung physischer HSMs ist sehr kostspielig. Darüber hinaus sind HSMs für virtuelle Maschinen (oder für mindestens eine aus einer festen Anzahl von Domänen) bestimmt. Wenn es also viele virtuelle Maschinen in einem Mainframe-Computersystem gibt, gibt es möglicherweise nicht genügend physische HSMs, um alle virtuellen Maschinen abzudecken, wobei aber weiterhin Datenschutz/Sicherheits-Anforderungen gelten. In derzeit gebräuchlichen HSMs können verschlüsselte Hauptspeichermechanismen für die Krypto-Verarbeitung verwendet werden. Neben der Verwendung von HSMs können auch bestimmte im Handel erhältliche kryptographische Beschleuniger oder eine Plastikkarte mit eingebautem Mikroprozessor verwendet werden, die üblicherweise für elektronische Prozesse wie zum Beispiel Finanztransaktionen und persönliche Identifikation verwendet wird. Für diese Zwecke können Mechanismen, die als Central Processor Assist for Cryptographic Function (CPACF) bekannt sind, oder Netzwerk-HSMs wie bestimmte im Handel erhältliche Informationssicherheitslösungen verwendet werden.
  • Darüber hinaus kann ein sogenanntes virtuelles HSM (VHSM), bei dem es sich um eine Software-Suite zum Speichern und Verarbeiten von geheimen Daten außerhalb einer virtualisierten Anwendungsumgebung handelt, verwendet werden. Während es sich bei einem HSM um eine physische Einheit handelt, die mit dem Computer verbunden ist, stellt diese Software eine HSM-Funktionalität über eine Schnittstelle zur Anwendungsprogrammierung (API, application programming interface) in einer virtuellen Umgebung beruhend auf der auf Linux beruhenden OpenVZ-Container-Technologie bereit.
  • Die Architektur des virtuellen HSM besteht aus den folgenden Schlüsselkomponenten: (i) eine virtuelle VHSM-Umgebung (VHSM VE) ist die isolierte Umgebung, die den VHSM-Server und den sicheren Speicher enthält. Der Server führt Arbeitsschritte mit geheimen Daten durch, und der Speicher verwahrt verschlüsselte Benutzerdaten. Darüber hinaus beruht eine Transportschicht, auf welcher der Transport Daten zwischen virtuellen Client- und Server-Umgebungen austauscht, auf: (i) der auf Linux beruhenden Netlink-Socket-Technologie; und (ii) einer virtuellen Client-Umgebung mit einer Client-API und zugehörigen Dienstprogrammen zum Zugreifen auf den VHSM-Server von einer Client-Umgebung aus.
  • Darüber hinaus gibt es nach dem Stand der Technik einen bestimmten im Handel erhältlichen Satz von CPU- (zentrale Verarbeitungseinheit-) Codeanweisungen, der es dem Code auf Benutzerebene ermöglicht, private Hauptspeicherbereiche, sogenannte Enklaven, zuzuordnen. Im Gegensatz zum normalen Prozess-Hauptspeicher sind „Enklaven“ vor Prozessen geschützt, die auf höheren Berechtigungsstufen laufen.
  • Die Unterstützung der in dem vorhergehenden Absatz erwähnten CPU-Anweisungen in der CPU wird in einem CPUID-Befehl „Structured Extended Feature Leaf“, EBX Bit 02, angegeben, aber ihre Verfügbarkeit für Anwendungen erfordert BIOS- (Basic Input/Output System-) Unterstützung und Opt-In-Aktivierung, was sich nicht in CPUID-Bits widerspiegelt. Die in dem vorhergehenden Absatz erwähnten CPU-Anweisungen beruhen auf einem speziellen vertrauenswürdigen Hauptspeicher, in anderen Worten einem für den Prozessor reservierten Hauptspeicher. Weiterer Code wird als Klartext an die Maschine gesendet.
  • KURZDARSTELLUNG
  • Es wird eine Computersystem-Software mit einem Sicherheitsmodul vorgeschlagen, wobei das Sicherheitsmodul einen Geheimspeicher für geheime Daten und eine Schnittstelle für Betriebssysteme zum Interagieren mit dem Sicherheitsmodul aufweist, wobei das Sicherheitsmodul verschlüsselt mit einem öffentlichen Schlüssel in einem Hauptspeicher eines Computersystems gespeichert ist und das Computersystem mindestens einen Prozessor mit mindestens einem Prozessor-Cachespeicher aufweist, wobei die Software als Reaktion auf einen Zugriff auf die Schnittstelle (i) ein Umschalten des Prozessors des Computersystems in eine sichere Betriebsart; (ii) ein Deaktivieren eines Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; (iii) ein Entschlüsseln des Programmcodes und/oder von Daten des Sicherheitsmoduls in dem Prozessor-Cachespeicher mit einem geheimen Schlüssel; (iv) ein Konfigurieren einer dynamischen Adressübersetzung, um den Zugriff auf den Hauptspeicher außerhalb der von dem Sicherheitsmodul verwendeten Bereiche zu verhindern; (v) ein Ausführen des Programmcodes des Sicherheitsmoduls mit Daten, die auf der Schnittstelle bereitgestellt werden; (vi) ein Verschlüsseln der Daten in dem Prozessor-Cachespeicher mit dem öffentlichen Schlüssel; (vii) ein Aktivieren des Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; und (viii) ein Umschalten des Prozessors in eine normale Betriebssystem-Betriebsart durchführt.
  • Vorteilhafterweise ermöglicht die erfindungsgemäße Software mit einem Sicherheitsmodul das Emulieren eines virtuellen Hardware-Sicherheitsmoduls in Software, Firmware und/oder Hardware. Da ein derartiges emuliertes Sicherheitsmodul nicht manipuliert werden kann, ist es nicht notwendig, einem Systemadministrator zu vertrauen. Kunden dürfen ihre eigenen virtuellen Sicherheitsmodule programmieren, die Sicherheitsmodule mit ihren eigenen Geheimnissen oder Zertifikaten füllen und diese auf entfernt angeordneten Systemen in emulierten Sicherheitsmodulen einsetzen. Software/Hardware sichert den Hauptspeicher und/oder die Schnittstellen des virtuellen Sicherheitsmoduls durch Verschlüsseln des Inhalts des Sicherheitsmoduls und Einschränken der Lesezugriffsprozesse. Das entschlüsselte Sicherheitsmodul, einschließlich interner Daten, verlässt niemals den Chip der Prozessoreinheit. Die Schnittstelle des Sicherheitsmoduls ermöglicht Betriebssystemen das Verwalten und insbesondere das Abrufen des Inhalts des Geheimspeichers nur in einem verschlüsselten Zustand. Das Schreiben von Programmcode aus dem Prozessor-Cachespeicher in den Hauptspeicher kann insbesondere sich selbst verändernden Code betreffen.
  • Gemäß einer Ausführungsform kann der Schreibvorgang in den Hauptspeicher für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind, deaktiviert werden. Die Verwendung des Nicht-Gesichert-Flags ermöglicht es, vorteilhaft zwischen Daten zu unterscheiden, die den Prozessorchip verlassen dürfen und solchen, die dies nicht dürfen.
  • Gemäß einer Ausführungsform kann der Prozessor-Cachespeicher mindestens Cachespeicher der ersten Ebene und Cachespeicher der zweiten Ebene aufweisen. Prozessoren mit Cachespeichern unterschiedlicher Ebenen ermöglichen es vorteilhaft, die Verfügbarkeit von Programmen oder Daten mit unterschiedlichen Attributen zu steuern, um den Zugriff auf bestimmte Programme oder Daten zu deaktivieren.
  • Gemäß einer Ausführungsform kann die Schnittstelle zu dem Sicherheitsmodul als eine Schnittstelle zur Anwendungsprogrammierung unter Verwendung einer Krypto-Architektur umgesetzt sein. Auf diese Weise kann ein Kunde sein eigenes Sicherheitsmodul programmieren und eine hohe Sicherheit für seine privaten Daten gewährleisten.
  • Gemäß einer Ausführungsform kann das Ausführen des Sicherheitsmoduls während einer Unterbrechungsanforderung an den Prozessor ausgesetzt werden, und das Sicherheitsmodul kann verschlüsselt werden, bevor die Steuerung an ein Unterbrechungsverarbeitungsprogramm übergeben wird. Dadurch kann vorteilhaft der Zugriff auf entschlüsselte private Daten des Sicherheitsmoduls verhindert werden.
  • Gemäß einer Ausführungsform kann das Sicherheitsmodul nach Beendigung der Unterbrechungsanforderung neu gestartet werden. Auf diese Weise kann ein zuverlässiges Funktionieren des Sicherheitsmoduls auch nach einer Unterbrechung durch eine Unterbrechungsanforderung erreicht werden.
  • Gemäß einer Ausführungsform kann das Sicherheitsmodul nach einem gesteuerten Abbrechen des Sicherheitsmoduls neu gestartet werden. Auf diese Weise kann ein zuverlässiges Funktionieren des Sicherheitsmoduls auch nach einer Unterbrechung durch eine Unterbrechungsanforderung erreicht werden.
  • Gemäß einer Ausführungsform kann das Sicherheitsmodul, das von mehreren Programmen gemeinsam genutzt wird, einen Semaphor-Mechanismus verwenden, um den Zugriff auf den von dem Sicherheitsmodul verwendeten Bereich des Hauptspeichers zu serialisieren. Somit kann die korrekte Verwendung der gleichen Hauptspeicherbereiche und/oder Daten durch verschiedene Programme auf synchronisierte Weise erreicht werden, ohne dass das Risiko der Zerstörung von Daten eines Programms durch ein anderes Programm auftritt.
  • Gemäß einer Ausführungsform kann beim Ausführen eines Threads in einem Multithreading-Prozess auf dem Prozessor das Multithreading während der Ausführung des Sicherheitsmoduls deaktiviert werden. Auf diese Weise kann das Problem des Verlierens von Cachespeicher-Zeilen des Sicherheitsmoduls durch Überschreiben (aging out) und/oder Zugreifen auf entschlüsselte Daten durch andere Threads vermieden werden, wenn der Prozessor mehrere Cachespeicher für verschiedene Threads gemeinsam benutzt.
  • Gemäß einer Ausführungsform können Cachespeicher-Zeilen mit Nicht-Gesichert-Flags gekennzeichnet werden, um einen Zugriff auf eine Cachespeicher-Zeile für andere Threads zu blockieren, und/oder es kann verhindert werden, dass Cachespeicher-Zeilen von anderen Threads gelöscht oder überschrieben (aged-out) werden. Somit kann der Cachespeicher-Zugriff durch nicht berechtigte Threads vermieden werden, auch wenn Multithreading in einem Prozessor aktiviert ist, der mehrere Cachespeicher für verschiedene Threads gemeinsam benutzt.
  • Gemäß einer Ausführungsform kann beim Ausführen eines Threads in einem Multithreading-Prozess auf dem Prozessor die gemeinsame Nutzung des Cachespeichers von mehreren Threads während der Ausführung des Sicherheitsmoduls deaktiviert werden, und Cachespeicher-Zeilen können gelöscht werden, bevor das Multithreading neu gestartet wird. Auf diese Weise kann das Problem des Verlierens von Cachespeicher-Zeilen des Sicherheitsmoduls durch Überschreiben und/oder Zugreifen auf entschlüsselte Daten durch andere Threads vermieden werden.
  • Darüber hinaus wird eine Computersystem-Firmware vorgeschlagen, die Software aufweist, die wie vorstehend beschrieben umgesetzt ist. Das Umsetzen des Software-Systems mit einem emulierten Sicherheitsmodul kann das Sicherheitsniveau eines Computersystems zusätzlich auf vorteilhafte Weise erhöhen.
  • Darüber hinaus wird eine Prozessoreinheit zum Umsetzen eines Sicherheitsmoduls in einer Software vorgeschlagen, wobei mindestens ein Prozessor mindestens einen Prozessor-Cachespeicher aufweist, wobei die Prozessoreinheit mindestens einen anderen Cachespeicher aufweist, wobei das Sicherheitsmodul einen Geheimspeicher für geheime Daten und eine Schnittstelle für Betriebssysteme zum Interagieren mit dem Sicherheitsmodul aufweist, wobei das Sicherheitsmodul verschlüsselt mit einem öffentlichen Schlüssel in einem Hauptspeicher eines Computersystems gespeichert ist, wobei der Prozessor so konfiguriert ist, dass er als Reaktion auf einen Zugriff auf die Schnittstelle, (i) wenn er in eine sichere Betriebsart umgeschaltet wird, einen Schreibvorgang von Programmcode und Daten des Sicherheitsmoduls aus den Cachespeichern in den Hauptspeicher deaktiviert; (ii) den Programmcode und/oder Daten des Sicherheitsmoduls in dem Prozessor-Cachespeicher mit einem geheimen Schlüssel entschlüsselt; (iii) eine dynamische Adressübersetzung konfiguriert, um den Zugriff auf den Hauptspeicher außerhalb der von dem Sicherheitsmodul verwendeten Bereiche zu verhindern; (iv) den Programmcode des Sicherheitsmoduls mit Daten ausführt, die auf der Schnittstelle bereitgestellt werden; (v) die Daten in dem Prozessor-Cachespeicher mit dem öffentlichen Schlüssel verschlüsselt; und, (vi) wenn er in eine normale Betriebssystem-Betriebsart umgeschaltet wird, den Schreibvorgang von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher aktiviert.
  • Vorteilhafterweise ermöglicht die erfindungsgemäße Prozessoreinheit zum Umsetzen eines Sicherheitsmoduls in einer Software das Emulieren eines Hardware-Sicherheitsmoduls in Software, Firmware und/oder Hardware. Da ein derartiges emuliertes Sicherheitsmodul nicht manipuliert werden kann, ist es nicht notwendig, einem Systemadministrator zu vertrauen. Kunden dürfen ihre eigenen virtuellen Sicherheitsmodule programmieren, die Sicherheitsmodule mit ihren eigenen Geheimnissen oder Zertifikaten füllen und diese auf entfernt angeordneten Systemen in emulierten Sicherheitsmodulen einsetzen. Software/Hardware sichert den Hauptspeicher und/oder die Schnittstellen des virtuellen Sicherheitsmoduls durch Verschlüsseln des Inhalts des Sicherheitsmoduls und Einschränken der Lesezugriffsprozesse. Das entschlüsselte Sicherheitsmodul, einschließlich interner Daten, verlässt niemals den Chip der Prozessoreinheit. Die Schnittstelle des Sicherheitsmoduls ermöglicht Betriebssystemen das Verwalten und das Abrufen des Inhalts des Geheimspeichers nur in einem verschlüsselten Zustand.
  • Gemäß einer Ausführungsform kann der Schreibvorgang in den Hauptspeicher für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind, deaktiviert werden. Die Verwendung des Nicht-Gesichert-Flags ermöglicht es, vorteilhaft zwischen Daten zu unterscheiden, die den Prozessorchip verlassen dürfen und solchen, die dies nicht dürfen.
  • Gemäß einer Ausführungsform kann der Prozessor mindestens Cachespeicher der ersten Ebene und Cachespeicher der zweiten Ebene aufweisen, und die Prozessoreinheit kann mindestens einen Cachespeicher der dritten Ebene aufweisen, wobei ein Programmcode und/oder Daten des Sicherheitsmoduls unverschlüsselt sein können, wenn sie in den Cachespeichern der ersten und/oder zweiten Ebene und in dem Cachespeicher der dritten Ebene verwendet werden. Prozessoren mit Cachespeichern unterschiedlicher Ebenen ermöglichen es vorteilhaft, die Verfügbarkeit von Programmen oder Daten mit unterschiedlichen Attributen zu steuern, um den Zugriff auf bestimmte Programme oder Daten zu deaktivieren.
  • Gemäß einer Ausführungsform können der Programmcode und/oder die Daten des Sicherheitsmoduls beim Verlassen der Prozessoreinheit verschlüsselt werden. Auf diese Weise kann eine hohe Vertraulichkeit der in dem Sicherheitsmodul codierten Kundendaten sowie von Daten, auf die ein Kundenprogramm über die Schnittstelle unter Verwendung des Sicherheitsmoduls zugreift, gewährleistet werden.
  • Gemäß einer Ausführungsform kann beim Durchführen eines Kreuzabfrageprozesses in dem Hauptspeicher ein Semaphor-Mechanismus verwendet werden, um den Zugriff auf den von mehreren Prozessen gemeinsam genutzten Hauptspeicherbereich zu serialisieren. Somit kann vorteilhafterweise eine Hauptspeicherkohärenz aufrechterhalten werden, wenn mehrere Prozesse, die Sicherheitsmodule gemeinsam verwenden, versuchen, Cachespeicher-Zeilen von Sicherheitsmodulen gegenseitig zu verwenden.
  • Gemäß einer Ausführungsform kann beim Durchführen eines transaktionalen Hauptspeichers ein Semaphor-Mechanismus verwendet werden, um den Zugriff auf den von mehreren Prozessen gemeinsam genutzten Hauptspeicherbereich zu serialisieren. kann vorteilhafterweise eine Hauptspeicherkohärenz aufrechterhalten werden, wenn mehrere Prozesse, die Sicherheitsmodule gemeinsam verwenden, versuchen, Cachespeicher-Zeilen von Sicherheitsmodulen gegenseitig zu verwenden.
  • Gemäß einer Ausführungsform kann während einer Unterbrechungsanforderung an den Prozessor das Ausführen des Sicherheitsmoduls ausgesetzt werden, und das Sicherheitsmodul kann verschlüsselt werden, bevor die Steuerung an ein Unterbrechungsverarbeitungsprogramm übergeben wird. Dadurch kann vorteilhaft der Zugriff auf entschlüsselte private Daten des Sicherheitsmoduls verhindert werden.
  • Gemäß einer Ausführungsform kann das Sicherheitsmodul nach Beendigung der Unterbrechungsanforderung neu gestartet werden. Auf diese Weise kann ein zuverlässiges Funktionieren des Sicherheitsmoduls auch nach einer Unterbrechung durch eine Unterbrechungsanforderung erreicht werden.
  • Gemäß einer Ausführungsform kann das Sicherheitsmodul nach einem gesteuerten Abbrechen des Sicherheitsmoduls neu gestartet werden. Auf diese Weise kann ein zuverlässiges Funktionieren des Sicherheitsmoduls auch nach einer Unterbrechung durch eine Unterbrechungsanforderung erreicht werden.
  • Gemäß einer Ausführungsform kann beim Ausführen eines Threads bei Multithreading auf dem Prozessor das Multithreading während der Ausführung des Sicherheitsmoduls deaktiviert werden. Auf diese Weise kann das Problem des Verlierens von Cachespeicher-Zeilen des Sicherheitsmoduls durch Überschreiben und/oder Zugreifen auf entschlüsselte Daten durch andere Threads vermieden werden, wenn der Prozessor mehrere Cachespeicher für verschiedene Threads gemeinsam benutzt.
  • Gemäß einer Ausführungsform können Cachespeicher-Zeilen mit Nicht-Gesichert-Flags gekennzeichnet werden, um einen Zugriff auf eine Cachespeicher-Zeile für andere Threads zu blockieren, und/oder es kann verhindert werden, dass Cachespeicher-Zeilen von anderen Threads gelöscht oder überschrieben werden. Somit kann der Cachespeicher-Zugriff durch nicht berechtigte Threads vermieden werden.
  • Gemäß einer Ausführungsform kann beim Ausführen eines Threads bei Multithreading auf dem Prozessor die gemeinsame Nutzung des Cachespeichers von mehreren Threads während der Ausführung des Sicherheitsmoduls deaktiviert werden, und Cachespeicher-Zeilen können gelöscht werden, bevor das Multithreading neu gestartet wird. Auf diese Weise kann das Problem des Verlierens von Cachespeicher-Zeilen des Sicherheitsmoduls durch Überschreiben und/oder Zugreifen auf entschlüsselte Daten durch andere Threads vermieden werden.
  • Wenn Multithreading erlaubt ist, während ein Sicherheitsmodul aktiv ist, kann ein anderer Thread Cachespeicher-Zeilen laden und dadurch Cachespeicher-Zeilen ersetzen, die derzeit als nicht gesichert gekennzeichnet sind. Derartige Situationen können entweder ähnlich wie Kreuzabfragen verarbeitet werden, oder Cachespeicher-Zeilen, bei denen das Nicht-Gesichert-Flag gesetzt ist, können davor geschützt werden, durch den anderen Thread ersetzt zu werden, wodurch sie vor Überschreiben geschützt sind.
  • Darüber hinaus wird ein vorteilhaftes Verfahren zum Umsetzen eines Sicherheitsmoduls in einer Computersystem-Software vorgeschlagen, wobei das Sicherheitsmodul einen Geheimspeicher für geheime Daten und eine Schnittstelle für Betriebssysteme zum Interagieren mit dem Sicherheitsmodul aufweist, wobei das Sicherheitsmodul verschlüsselt mit einem öffentlichen Schlüssel in einem Hauptspeicher eines Computersystems gespeichert ist und das Computersystem mindestens einen Prozessor mit mindestens einem Prozessor-Cachespeicher aufweist, wobei als Reaktion auf einen Zugriff auf die Schnittstelle das Verfahren Software-Arbeitsschritte aufweist zum: (i) Umschalten des Prozessors des Computersystems in eine sichere Betriebsart; (ii) Deaktivieren eines Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; (iii) Entschlüsseln des Programmcodes und/oder von Daten des Sicherheitsmoduls in dem Prozessor-Cachespeicher mit einem geheimen Schlüssel; (iv) Konfigurieren einer dynamischen Adressübersetzung, um den Zugriff auf den Hauptspeicher außerhalb der von dem Sicherheitsmodul verwendeten Bereiche zu verhindern; (v) Ausführen des Programmcodes des Sicherheitsmoduls mit Daten, die auf der Schnittstelle bereitgestellt werden; (vi) Verschlüsseln der Daten in dem Prozessor-Cachespeicher mit dem öffentlichen Schlüssel; (vii) Aktivieren des Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; und (viii) Umschalten des Prozessors in eine normale Betriebssystem-Betriebsart.
  • Vorteilhafterweise ermöglicht die erfindungsgemäße Software mit einem Sicherheitsmodul das Emulieren eines Hardware-Sicherheitsmoduls in Software, Firmware und/oder Hardware. Da ein derartiges emuliertes Sicherheitsmodul nicht manipuliert werden kann, ist es nicht notwendig, einem Systemadministrator zu vertrauen. Kunden dürfen ihre eigenen virtuellen Sicherheitsmodule programmieren, die Sicherheitsmodule mit ihren eigenen Geheimnissen oder Zertifikaten füllen und diese auf entfernt angeordneten Systemen in emulierten Sicherheitsmodulen einsetzen. Software/Hardware sichert den Hauptspeicher und/oder die Schnittstellen des virtuellen Sicherheitsmoduls durch Verschlüsseln des Inhalts des Sicherheitsmoduls und Einschränken der Lesezugriffsprozesse. Das entschlüsselte Sicherheitsmodul, einschließlich interner Daten, verlässt niemals den Chip der Prozessoreinheit. Die Schnittstelle des Sicherheitsmoduls ermöglicht Betriebssystemen das Verwalten und insbesondere das Abrufen des Inhalts des Geheimspeichers nur in einem verschlüsselten Zustand.
  • Gemäß einer Ausführungsform kann der Schreibvorgang in den Hauptspeicher für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind, deaktiviert werden. Die Verwendung des Nicht-Gesichert-Flags ermöglicht es, vorteilhaft zwischen Daten zu unterscheiden, die den Prozessorchip verlassen dürfen und solchen, die dies nicht dürfen.
  • Darüber hinaus wird ein vorteilhaftes Computerprogrammprodukt zum Umsetzen eines Sicherheitsmoduls in einer Computersystem-Software vorgeschlagen, wobei das Sicherheitsmodul einen Geheimspeicher für geheime Daten und eine Schnittstelle für Betriebssysteme zum Interagieren mit dem Sicherheitsmodul aufweist, wobei das Sicherheitsmodul verschlüsselt mit einem öffentlichen Schlüssel in einem Hauptspeicher eines Computersystems gespeichert ist und das Computersystem mindestens einen Prozessor mit mindestens einem Prozessor-Cachespeicher aufweist, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, auf dem Programmanweisungen gespeichert sind, wobei die Programmanweisungen durch einen Computer ausführbar sind, um den Computer als Reaktion auf einen Zugriff auf die Schnittstelle zum Durchführen eines Verfahrens zu veranlassen, das Software-Arbeitsschritte aufweist zum: (i) Umschalten des Prozessors des Computersystems in eine sichere Betriebsart; (ii) Deaktivieren eines Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; (iii) Entschlüsseln des Programmcodes und/oder von Daten des Sicherheitsmoduls in dem Prozessor-Cachespeicher mit einem geheimen Schlüssel; (iv) Konfigurieren einer dynamischen Adressübersetzung, um den Zugriff auf den Hauptspeicher außerhalb der von dem Sicherheitsmodul verwendeten Bereiche zu verhindern; (v) Ausführen des Programmcodes des Sicherheitsmoduls mit Daten, die auf der Schnittstelle bereitgestellt werden; (vi) Verschlüsseln der Daten in dem Prozessor-Cachespeicher mit dem öffentlichen Schlüssel; (vii) Aktivieren des Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; und (viii) Umschalten des Prozessors in eine normale Betriebssystem-Betriebsart.
  • Gemäß einer Ausführungsform kann der Schreibvorgang in den Hauptspeicher für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind, deaktiviert werden. Die Verwendung des Nicht-Gesichert-Flags ermöglicht es, vorteilhaft zwischen Daten zu unterscheiden, die den Prozessorchip verlassen dürfen und solchen, die dies nicht dürfen.
  • Darüber hinaus wird ein vorteilhaftes Datenverarbeitungssystem mit mindestens einer Prozessoreinheit mit mindestens einem Prozessor zum Ausführen eines Datenverarbeitungsprogramms vorgeschlagen, das durch einen Computer lesbare Programmanweisungen zum Umsetzen eines Sicherheitsmoduls in einer Computersystem-Software aufweist, wobei das Sicherheitsmodul einen Geheimspeicher für geheime Daten und eine Schnittstelle für Betriebssysteme zum Interagieren mit dem Sicherheitsmodul aufweist, wobei das Sicherheitsmodul verschlüsselt mit einem öffentlichen Schlüssel in einem Hauptspeicher eines Computersystems gespeichert ist, wobei die Software als Reaktion auf einen Zugriff auf die Schnittstelle (i) ein Umschalten des Prozessors des Computersystems in eine sichere Betriebsart; (ii) ein Deaktivieren eines Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; (iii) ein Entschlüsseln des Programmcodes und/oder von Daten des Sicherheitsmoduls in dem Prozessor-Cachespeicher mit einem geheimen Schlüssel; (iv) ein Konfigurieren einer dynamischen Adressübersetzung, um den Zugriff auf den Hauptspeicher außerhalb der von dem Sicherheitsmodul verwendeten Bereiche zu verhindern; (v) ein Ausführen des Programmcodes des Sicherheitsmoduls mit Daten, die auf der Schnittstelle bereitgestellt werden; (vi) ein Verschlüsseln der Daten in dem Prozessor-Cachespeicher mit dem öffentlichen Schlüssel; (vii) ein Aktivieren des Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; und (viii) ein Umschalten des Prozessors in eine normale Betriebssystem-Betriebsart durchführt.
  • Gemäß einer Ausführungsform kann der Schreibvorgang in den Hauptspeicher für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind, deaktiviert werden. Die Verwendung des Nicht-Gesichert-Flags ermöglicht es, vorteilhaft zwischen Daten zu unterscheiden, die den Prozessorchip verlassen dürfen und solchen, die dies nicht dürfen.
  • Gemäß einer Ausführungsform gibt es ein Verfahren, ein Computerprogrammprodukt und/oder ein System zur Verwendung mit einem Sicherheitsmodul, das Programmanweisungen zum Bereitstellen eines Geheimspeichers in einem flüchtigen Speicher für geheime Daten und eine Schnittstelle zum Interagieren mit einem Betriebssystem beinhaltet, das die folgenden Arbeitsschritte durchführt (nicht unbedingt in der folgenden Reihenfolge): (i) Speichern von Daten, die das Sicherheitsmodul bilden, in einem Prozessor-Cachespeicher eines Prozessors in einer verschlüsselten Form, die durch einen geheimen Schlüssel entschlüsselt werden kann; (ii) Umschalten des Prozessors in eine sichere Betriebsart; (iii) als Reaktion auf das Umschalten in die sichere Betriebsart Deaktivieren eines Schreibvorgangs, wobei es sich bei dem Schreibvorgang um einen Vorgang handelt, der die das Sicherheitsmodul bildenden Daten aus dem Prozessor-Cachespeicher in einen flüchtigen Speicher schreibt; (iv) Entschlüsseln der das Sicherheitsmodul bildenden Daten mit dem geheimen Schlüssel in dem Prozessor-Cachespeicher; (v) Konfigurieren einer dynamischen Adressübersetzung, um den Zugriff auf Teile des flüchtigen Speichers außerhalb des Geheimspeichers zu verhindern; (vi) Empfangen von Daten über die Schnittstelle des Sicherheitsmoduls; (vii) Verschlüsseln der über die Schnittstelle des Sicherheitsmoduls empfangenen Daten unter Verwendung eines öffentlichen Schlüssels durch das Sicherheitsmodul und in dem Prozessor-Cachespeicher; (viii) Aktivieren des Schreibvorgangs; und (ix) Umschalten des Prozessors in eine normale Betrie bssyste m-Betriebsa rt.
  • Figurenliste
  • Die vorliegende Erfindung sowie die oben genannten und weitere Aufgaben und Vorteile werden am besten anhand der folgenden ausführlichen Beschreibung der Ausführungsformen verständlich, wobei es keine Beschränkung auf die Ausführungsformen gibt.
    • 1 zeigt ein Blockschaubild einer Umsetzung eines Sicherheitsmoduls in einer Computersystem-Software gemäß einer Ausführungsform der Erfindung.
    • 2 zeigt eine Cachespeicher- und Hauptspeicher-Hierarchie eines Computersystems mit einem Sicherheitsmodul gemäß einer Ausführungsform der Erfindung.
    • 3 stellt einen Ablaufplan für die Verwendung eines gemeinsam verwendeten Sicherheitsmoduls durch zwei Programme dar, die den Zugriff mit einem Semaphor-Sperrmechanismus gemäß einer Ausführungsform der Erfindung einschränken.
    • 4 zeigt einen Ablaufplan zur Verwendung eines Sicherheitsmoduls, das in einer Computersystem-Software gemäß einer Ausführungsform der Erfindung umgesetzt ist.
    • 5 zeigt ein Ausführungsbeispiel eines Datenverarbeitungssystems zur Ausführung eines Verfahrens gemäß der Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In den Zeichnungen wird auf gleiche Elemente mit gleichen Bezugszahlen Bezug genommen. Die Zeichnungen stellen lediglich schematische Darstellungen dar, die keine konkreten Parameter der Erfindung darstellen sollen. Außerdem sollen die Zeichnungen lediglich typische Ausführungsformen der Erfindung abbilden, weshalb sie nicht als deren Umfang einschränkend anzusehen sind.
  • Wie vorstehend in dem Abschnitt „Hintergrund“ erwähnt, gibt es einen bestimmten im Handel erhältlichen Satz von CPU- (zentrale Verarbeitungseinheit-) Codeanweisungen, der es dem Code auf Benutzerebene ermöglicht, private Bereiche von Hauptspeicher, sogenannte Enklaven, zuzuordnen. Einige Ausführungsformen der vorliegenden Erfindung erkennen möglicherweise, dass dies: (i) die Funktionserkennung von Anwendungen komplizierter macht (aufgrund der Verwendung von CPUID), und/oder (ii) Sicherheitsprobleme aufwirft (aufgrund von Informationen, die als Klartext gesendet werden).
  • Die veranschaulichenden Ausführungsformen stellen eine Computersystem-Software mit: (i) einem Sicherheitsmodul bereit, wobei das Sicherheitsmodul einen Geheimspeicher für geheime Daten und eine Schnittstelle für Betriebssysteme zum Interagieren mit dem Sicherheitsmodul aufweist, (ii) wobei das Sicherheitsmodul verschlüsselt mit einem öffentlichen Schlüssel in einem Hauptspeicher eines Computersystems gespeichert ist und (iii) das Computersystem mindestens einen Prozessor mit mindestens einem Prozessor-Cachespeicher beinhaltet.
  • Die veranschaulichenden Ausführungsformen werden hierin manchmal unter Verwendung bestimmter Technologien lediglich als Beispiel der Klarheit der Beschreibung halber beschrieben. Die veranschaulichenden Ausführungsformen können für einen Zugriff auf die Schnittstelle verwendet werden, wobei die Software Folgendes durchführt: (i) Umschalten des Prozessors des Computersystems in eine sichere Betriebsart; (ii) Deaktivieren eines Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; (iii) Entschlüsseln des Programmcodes und/oder von Daten des Sicherheitsmoduls in dem Prozessor-Cachespeicher mit einem geheimen Schlüssel; (iv) Konfigurieren einer dynamischen Adressübersetzung, um den Zugriff auf den Hauptspeicher außerhalb der von dem Sicherheitsmodul verwendeten Bereiche zu verhindern; (v) Ausführen des Programmcodes des Sicherheitsmoduls mit Daten, die auf der Schnittstelle bereitgestellt werden; (vi) Verschlüsseln der Daten in dem Prozessor-Cachespeicher mit dem öffentlichen Schlüssel; (vii) Aktivieren des Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; und (viii) Umschalten des Prozessors in eine normale Betriebssystem-Betriebsart.
  • 1 zeigt ein Blockschaubild einer Umsetzung eines Sicherheitsmoduls 12, das als virtuelles Hardware-Sicherheitsmodul (vHSM) angegeben ist, in einer Computersystem-Software gemäß einer Ausführungsform der Erfindung. Die Software zum Umsetzen des Sicherheitsmoduls 12 kann auch in der Firmware 10 des Computersystems 212 umgesetzt sein.
  • Das Computersystem 212 in 1 beinhaltet mindestens einen Prozessor 16 mit mindestens einem Prozessor-Cachespeicher 20, wobei der Prozessor 16 in einer Firmware/Hardware- (FW/HW-) Umgebung 10 mit einer Schnittstelle 40 läuft. Die Schnittstelle 40 zu dem Sicherheitsmodul 12 ist als eine Schnittstelle zur Anwendungsprogrammierung unter Verwendung einer Krypto-Architektur umgesetzt. Der Prozessor-Cachespeicher 20 kann mindestens Cachespeicher 22, 24 der ersten Ebene und Cachespeicher 26, 28 der zweiten Ebene beinhalten, wie zum Beispiel in 2 gezeigt. Das Computersystem 212 beinhaltet darüber hinaus einen Hauptspeicher 18, in dem das Programm 14, das von einem Betriebssystem OS betrieben wird, ausgeführt werden kann.
  • Das Sicherheitsmodul 12 verfügt über einen Geheimspeicher für geheime Daten und kann unter Verwendung eines Software-Development-Kits (SDK) 50 in einer geschützten Erstellungsumgebung 48 von einem Kunden erstellt werden. Das Sicherheitsmodul 12 wird verschlüsselt mit einem öffentlichen Schlüssel 42 in dem Hauptspeicher 18 des Computersystems 212 auf Anforderung des Programms 14 gespeichert. Der öffentliche Schlüssel 42 ist der öffentliche Teil eines Zertifikats und steht dem Kunden zur Verfügung. Das Sicherheitsmodul 12 wird mit diesem öffentlichen Schlüssel 42 verschlüsselt und an das Computersystem 212 gesendet. Der Programmcode des Sicherheitsmoduls 12 setzt die durch eine Krypto-Architektur beschriebene Schnittstelle 40 um. Die Schnittstelle 40 dient dazu, dass das Betriebssystem mit dem Sicherheitsmodul 12 interagiert, um den Inhalt des Geheimspeichers des Sicherheitsmoduls 12 in einem verschlüsselten Zustand zu verwalten und abzurufen.
  • Durch das Zugreifen auf die Schnittstelle 40 durch das Programm 14 werden ein Verweis auf eine Adresse des Sicherheitsmoduls 12 sowie Hauptspeicher-Hinweisadressen auf Eingabe/Ausgabe-Bereiche des Hauptspeichers 18 an die Schnittstelle 40 übergeben. Der Prozessor 16 des Computersystems 212 wird durch die Software in eine sichere Betriebsart umgeschaltet. Ein Schreibvorgang von Daten aus dem Prozessor-Cachespeicher 20 in den Hauptspeicher 18 durch einen Programmcode des Sicherheitsmoduls 12 wird für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind, deaktiviert. Der Programmcode und/oder die Daten des Sicherheitsmoduls 12 werden in dem Prozessor-Cachespeicher 20 mit dem geheimen Schlüssel 44 entschlüsselt. Eine dynamische Adressübersetzung wird neu konfiguriert, um den Zugriff auf den Hauptspeicher 18 außerhalb der von dem Sicherheitsmodul 12 verwendeten Bereiche zu verhindern, aber der Zugriff auf die Eingabe/Ausgabe-Bereiche des Sicherheitsmoduls 12, deren Hauptspeicher-Hinweisadressen zuvor übergeben wurden, ist weiterhin erlaubt. Die Software löst die Ausführung des Sicherheitsmoduls 12 mit den übergebenen Parametern aus. Der Programmcode des Sicherheitsmoduls 12 wird mit auf der Schnittstelle 40 bereitgestellten Daten ausgeführt. Anschließend wird durch den Programmcode des Sicherheitsmoduls 12 eine Anweisung zum Verlassen der Sicherheitsmodul-Betriebsart ausgeführt. Die Daten werden von der Software in dem Prozessor-Cachespeicher 20 mit dem öffentlichen Schlüssel 42 verschlüsselt. Der Schreibvorgang von Daten aus dem Prozessor-Cachespeicher 20 in den Hauptspeicher 18 wird von der Software für den Programmcode des Sicherheitsmoduls 12 wieder aktiviert. Verschlüsselte Daten werden in den Hauptspeicher 18 zurückgeschrieben, und der Prozessor 16 wird von der Software wieder in eine normale Betriebssystem-Betriebsart umgeschaltet. Das Programm 14 ruft das Ergebnis des Arbeitsschrittes des Sicherheitsmoduls ab und setzt seine normale Ausführung fort.
  • 2 zeigt eine Cachespeicher- und Hauptspeicher-Hierarchie eines Computersystems 212 mit einem Sicherheitsmodul gemäß einer Ausführungsform der Erfindung. Die Prozessoreinheit 216 als Teil des Computersystems 212 dient zum Umsetzen eines Sicherheitsmoduls in Software, wobei mindestens ein Prozessor 16 mindestens die Prozessor-Cachespeicher 20, 22, 24, 26, 28 beinhaltet und die Prozessoreinheit mindestens einen weiteren Cachespeicher 30 beinhaltet. Der Prozessor 16, der in der Ausführungsform in 2 gezeigt ist, beinhaltet die zwei Cachespeicher 22, 24 der ersten Ebene (L1i als Befehls-Cachespeicher und L1d als Daten-Cachespeicher) und zwei Cachespeicher 26, 28 der zweiten Ebene (L2i als Befehls-Cachespeicher und L2d als Daten-Cachespeicher). Die Prozessoreinheit 216 beinhaltet darüber hinaus einen Cachespeicher 30 der dritten Ebene (L3). Das Computersystem 212 in der Ausführungsform in 2 beinhaltet auch einen Cachespeicher 32 der vierten Ebene (L4) und einen Hauptspeicher 18. Cachespeicher-Zeilen haben üblicherweise eine Länge von 256 Byte. Die Cachespeicher 22, 24, 26, 28 der ersten Ebene der Ausführungsform beinhalten zum Beispiel 8x64-Bit-Cachespeicher-Zeilen. Die Befehls-Cachespeicher 22 und 26 sind im Allgemeinen als schreibgeschützt (RO, read-only) konfiguriert, während der Inhalt der Datencachespeicher 24 und 28 sowie des Cachespeichers 30 der dritten Ebene wie folgt gekennzeichnet sein können: (i) schreibgeschützt (RO, read-only); (ii) exklusiv (EX) oder (iii) transaktionaler Speicher (TX). Der Cachespeicher 32 der vierten Ebene bezieht sich auf eine Systemsteuereinheit (SC, system controller).
  • Vorteilhafterweise sind ein Programmcode und/oder Daten des Sicherheitsmoduls unverschlüsselt, wenn sie in den Cachespeichern 22, 24, 26, 28 der ersten und/oder zweiten Ebene und in dem Cachespeicher 30 der dritten Ebene verwendet werden. Dies wird erreicht, indem der Programmcode und/oder die Daten mit einem Nicht-Gesichert-Flag (NON-SECURE = NS) gekennzeichnet werden. Programmcode und/oder Daten werden verschlüsselt, wenn sie die Prozessoreinheit 216 verlassen, wodurch der Cachespeicher 32 der vierten Ebene sowie der Hauptspeicher 18 nur Programmcode und/oder Daten empfangen, die als gesichert gekennzeichnet sind (niemals NS).
  • Aus Leistungsgesichtspunkten spielt die Anzahl der Cachespeicher-Zeilen, die sich innerhalb des Prozessorchips 16 befinden können, eine Rolle. Daher wird das NS-Flag/Tag auf den Cachespeicher-Ebenen eins, zwei und drei verwendet.
  • Es wird auch zwischen Befehls- und Datenverarbeitung unterschieden. Daten müssen natürlich gespeichert werden, und daher stellt das Sicherheitsmodul üblicherweise sicher, dass entschlüsselte Daten nicht entnommen werden. Dies wird auch durch das NS-Flag erreicht. Nicht gesicherte Daten dürfen über Chip-Cachespeicher-Ebenen hinweg nicht zurückgeschrieben oder durchgeschrieben werden. Anweisungen werden normalerweise schreibgeschützt abgerufen. Je nachdem, wo der Verschlüsselungs-/Entschlüsselungs-Vorgang stattfindet (zum Beispiel an der Grenze zwischen L1 und L2 im Gegensatz zu der Grenze zwischen L2 und L3), können entschlüsselte Befehls-Cachespeicher-Zeilen jedoch von L1 nach L2 durchgeschrieben werden.
  • Die Befehls-Cachespeicher 22 und 26 bewirken, dass die nicht gesicherten Cachespeicher-Zeilen aus den Daten-Cachespeichern 24 und 28 hinausgeschoben werden. Beim Abbrechen werden die nicht gesicherten Cachespeicher-Zeilen aus den Daten-Cachespeichern 24 und 28 sowie aus den Befehls-Cachespeichern 22 und 26 gelöscht. Daten, die in dem Cachespeicher 30 der Ebene drei als nicht gesichert markiert sind, verlassen niemals die Prozessoreinheit 216, sondern werden zuerst verschlüsselt, bevor sie die Prozessoreinheit 216 verlassen.
  • Beim Durchführen eines Kreuzabfrageprozesses (XI, cross interrogate) als Teil von Hauptspeicher-Kohärenz-Mechanismen entfernt der Kreuzabfrageprozess die Cachespeicher-Zeile aus den Cachespeichern 22, 24, 26, 28 und 30, wobei die Cachespeicher-Zeile entschlüsselt sein kann. Da die Kreuzabfragen aufgrund eines möglichen Ausfalls des Systems nicht behalten oder abgelehnt werden dürfen, dient das Sicherheitsmodul als Hardware-Erweiterung für den Cachespeicher. Den Cachespeicher-Zeilen in den Cachespeichern wird ein Zustand wie zum Beispiel NICHT SPEICHERN hinzugefügt, wobei die gleiche Cachespeicher-Zeile in dem Cachespeicher verschlüsselt oder entschlüsselt sein kann.
  • Die XI kann eine unveränderte, als NS gekennzeichnete Cachespeicher-Zeile entfernen, die dann nur neu abgerufen werden würde. Dann ist keine besondere Aktion erforderlich, oder die XI kann eine abgeänderte Cachespeicher-Zeile entfernen, die exklusiv abgerufen worden sein muss. Dies kann zu unterschiedlichen Optionen führen.
  • Wenn die Speicherungen des Sicherheitsmoduls (vHSM) seit dem Aufrufen des Sicherheitsmoduls bereits erfolgt sind, kann die XI-Verarbeitung so lange verzögert werden, bis die Cachespeicher-Zeile gespeichert werden kann. Wenn das vHSM natürlich abgeschlossen wurde, werden Änderungen gespeichert und die XI-Antwort gesendet. Wenn der vHSM-Vorgang an einem unterbrechbaren Punkt angehalten wird, werden Änderungen gespeichert und die XI-Antwort gesendet.
  • Wenn seit dem Aufrufen keine vHSM-Speicherungen erfolgt sind, kann der vHSM-Vorgang abgebrochen/auf Nullwert gesetzt werden (nullified). Alle abgeänderten vHSM-Daten können dann verworfen werden, und die XI-Antwort wird gesendet.
  • Wenn das Sicherheitsmodul von mehreren Prozessen gemeinsam genutzt wird, können die Kreuzabfrageprozesse die Cachespeicher-Zeilen von jedem anderen Prozess übernehmen. Die Arbeitsschritte des Sicherheitsmoduls können dann abgebrochen werden. Da ein Vorwärtsprozess nicht garantiert ist, wird ein Semaphor-Mechanismus verwendet, um den Zugriff auf den Bereich des Hauptspeichers 18 zu serialisieren, der von mehreren Prozessen gemeinsam genutzt wird. In derartigen Situationen werden Fortschritts-Eskalationen ausgelöst.
  • Dieser Mechanismus ist ähnlich wie das Durchführen eines transaktionalen Speichervorgangs, bei dem ein Semaphor-Mechanismus verwendet werden kann, um den Zugriff auf den von mehreren Prozessen gemeinsam genutzten Bereich des Hauptspeichers 18 zu serialisieren. In diesem Zusammenhang werden auch Fortschritts-Eskalationen ausgelöst.
  • Wenn Multithreading erlaubt ist und ein Sicherheitsmodul aktiv ist, kann ein anderer Thread Cachespeicher-Zeilen laden und Cachespeicher-Zeilen ersetzen, die aktuell mit NS gekennzeichnet sind. Derartige Situationen können entweder ähnlich wie Kreuzabfragen verarbeitet werden, oder Cachespeicher-Zeilen, bei denen das Nicht-Gesichert-Flag gesetzt ist, können davor geschützt werden, durch den anderen Thread ersetzt zu werden, wodurch sie vor Überschreiben geschützt sind.
  • 3 stellt einen Ablaufplan für die Verwendung eines gemeinsam verwendeten Sicherheitsmoduls (vHSM) durch zwei Programme A und B dar, die den Zugriff mit einem Semaphor-Sperrmechanismus gemäß einer Ausführungsform der Erfindung einschränken.
  • Gemäß 3 kann das Sicherheitsmodul unter Verwendung eines Semaphor-Mechanismus von mehreren Programmen gemeinsam genutzt werden, um den Zugriff auf den von dem Sicherheitsmodul verwendeten Bereich des Hauptspeichers zu serialisieren. Vor der Verwendung des Sicherheitsmoduls versuchen die Programme A und B, das Sicherheitsmodul in den Arbeitsschritten S300 und S302 für sich zu sperren. Wenn eines von ihnen das Semaphor, d.h. die Sperrung des Sicherheitsmoduls in Arbeitsschritt S304, erhalten hat, was in den Arbeitsschritten S306 und S314 geprüft wird, verwendet eines von ihnen das Sicherheitsmodul in den Arbeitsschritten S308 und 316. Das Programm, welches das Semaphor nicht erhalten hat, geht dann zurück zu dem Versuch, das Sicherheitsmodul in den Arbeitsschritten S300 und S302 zu sperren. Nach erfolgreicher Verwendung des Sicherheitsmoduls kann es von dem Programm freigegeben werden, das es in den Arbeitsschritten S310 und S318 verwendet hat. Somit ist das Sicherheitsmodul frei für die Verwendung durch das andere Programm in Arbeitsschritt S304.
  • Eine Unterbrechung kann die Steuerung an ein anderes Programm übergeben, das nicht auf einen entschlüsselten Speicherbereich des Sicherheitsmoduls zugreifen soll. Vorteilhafterweise kann ein Zugriff auf die Cachespeicher der Ebene eins der Prozessoreinheit mit der entsprechenden Adresse diesen Speicherzugriff bereitstellen. Da es notwendig ist, rechtzeitig auf Unterbrechungsanforderungen zu reagieren, kann das Sicherheitsmodul Fortschritts-Eskalationen sicherstellen und verfolgt somit den Zustand intern. So kann die Software das Sicherheitsmodul vor dem Verzweigen in den Unterbrechungscode verschlüsseln. Während einer Unterbrechungsanforderung an den Prozessor wird die Ausführung des Sicherheitsmoduls ausgesetzt, und das Sicherheitsmodul wird verschlüsselt, bevor die Steuerung an das Unterbrechungsverarbeitungsprogramm übergeben wird. Nach Beendigung der Unterbrechungsanforderung wird das Sicherheitsmodul neu gestartet. Somit kann das Sicherheitsmodul nach einem gesteuerten Abbrechen des Sicherheitsmoduls neu gestartet werden.
  • Während der Ausführung eines Threads in einem Multithreading-Prozess auf dem Prozessor kann das Multithreading während der Ausführung des Sicherheitsmoduls deaktiviert werden. Wenn der Prozessor andere Thread-Cachespeicher ausführt, können Cachespeicher-Zeilen des Sicherheitsmoduls durch Überschreiben verloren gehen, oder andere Threads können möglicherweise auf entschlüsselte Daten des Sicherheitsmoduls zugreifen.
  • Es gibt zwei Optionen, um damit umzugehen, dass entschlüsselte Cachespeicher-Zeilen vor anderen Threads versteckt bleiben: (i) Ausschalten von Multithreading und Löschen des Cachespeichers, bevor Multithreading wieder eingeschaltet wird; oder (ii) Markieren jeder Cachespeicher-Zeile mit einem Nicht-Gesichert-Flag, das in der Treffervergleichslogik für den Cachespeicher-Zugriff dazu verwendet werden kann, nur den Thread zuzuordnen, auf den zugegriffen werden darf. Es kann Software verwendet werden, um die Nicht-Gesichert-Flags einzurichten oder das Löschen des Cachespeichers entsprechend auszuführen. Dies kann erreicht werden, indem Cachespeicher-Zeilen mit Nicht-Gesichert-Flags markiert werden, um einen Zugriff auf eine Cachespeicher-Zeile für andere Threads zu blockieren und/oder zu verhindern, dass Cachespeicher-Zeilen von anderen Threads gelöscht oder überschrieben werden.
  • Alternativ kann die gemeinsame Nutzung des Cachespeichers von mehreren Threads während der Ausführung des Sicherheitsmoduls deaktiviert werden, und Cachespeicher-Zeilen können gelöscht werden, bevor das Multithreading neu gestartet wird.
  • 4 zeigt einen Ablaufplan zur Verwendung eines Sicherheitsmoduls, das in einer Computersystem-Software gemäß einer Ausführungsform der Erfindung umgesetzt ist. So kann das Verfahren zum Umsetzen des Sicherheitsmoduls in der Software auch im Detail verstanden werden.
  • Wenn ein Programm, das auf einem Computersystem in Arbeitsschritt S400 ausgeführt wird, den Betrieb des Sicherheitsmoduls erfordert, werden der Programmcode und/oder die Daten des Sicherheitsmoduls oder Teile davon in Arbeitsschritt S402 in den Hauptspeicher geladen. Das Zugreifen des Programms auf die Schnittstelle mit der Krypto-Architektur, Arbeitsschritt S404, verweist auf eine Adresse des Sicherheitsmoduls sowie auf Hauptspeicher-Hinweisadressen auf Eingabe/Ausgabe-Bereiche des Hauptspeichers. Diese Informationen werden dann in Arbeitsschritt S406 an die Schnittstelle übergeben. Der Prozessor des Computersystems wird in Arbeitsschritt S408 durch die Software in eine sichere Betriebsart umgeschaltet. Als nächstes wird in Arbeitsschritt S410 ein Schreibvorgang von Daten aus dem Prozessor-Cachespeicher in den Hauptspeicher durch einen Programmcode des Sicherheitsmoduls für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind, deaktiviert. Der Programmcode und/oder die Daten des Sicherheitsmoduls werden in Arbeitsschritt S412 in dem Prozessor-Cachespeicher mit dem geheimen Schlüssel entschlüsselt. Eine dynamische Adressübersetzung (DAT, dynamic address translation) wird in Arbeitsschritt S414 neu konfiguriert, um den Zugriff auf den Hauptspeicher außerhalb der von dem Sicherheitsmodul verwendeten Bereiche zu verhindern, aber der Zugriff auf die Eingabe/Ausgabe-Bereiche des Sicherheitsmoduls, deren Hauptspeicher-Hinweisadressen zuvor übergeben wurden, ist weiterhin erlaubt. Die Software löst die Ausführung des Sicherheitsmoduls mit den übergebenen Parametern in Arbeitsschritt S416 aus, gefolgt von der Ausführung des Programmcodes des Sicherheitsmoduls mit Daten, die auf der Schnittstelle bereitgestellt werden, in Arbeitsschritt S418. Anschließend wird durch den Programmcode des Sicherheitsmoduls in Arbeitsschritt S420 eine Anweisung zum Verlassen der Sicherheitsmodul-Betriebsart ausgeführt. In Arbeitsschritt S422 werden die Daten von der Software in dem Prozessor-Cachespeicher mit dem öffentlichen Schlüssel verschlüsselt. Der Schreibvorgang von Daten aus dem Prozessor-Cachespeicher in den Hauptspeicher für den Programmcode des Sicherheitsmoduls wird von der Software in Arbeitsschritt S424 wieder aktiviert. Verschlüsselte Daten werden in den Hauptspeicher zurückgeschrieben, und der Prozessor wird von der Software in Arbeitsschritt S426 wieder in eine normale Betriebssystem-Betriebsart umgeschaltet. Das Programm kann das Ergebnis des Arbeitsschritts des Sicherheitsmoduls aus den Eingabe/Ausgabe-Bereichen abrufen und seine normale Ausführung in Arbeitsschritt S428 fortsetzen.
  • Unter Bezugnahme auf 5 ist eine schematische Abbildung eines Beispiels eines Datenverarbeitungssystems 210 gezeigt. Das Datenverarbeitungssystem 210 ist lediglich ein Beispiel eines geeigneten Datenverarbeitungssystems und soll keinerlei Einschränkungen hinsichtlich des Anwendungsbereichs oder der Funktionalität von hierin beschriebenen Ausführungsformen der Erfindung andeuten. Trotzdem kann eine beliebige vorstehend dargelegte Funktionalität in dem Datenverarbeitungssystem 210 umgesetzt und/oder von diesem durchgeführt werden.
  • Das Datenverarbeitungssystem 210 mit mindestens einer Prozessoreinheit 216 mit mindestens einem Prozessor kann zur Ausführung eines Datenverarbeitungsprogramms 240 verwendet werden, das Folgendes beinhaltet: (i) durch einen Computer lesbare Programmanweisungen zum Umsetzen eines Sicherheitsmoduls in einer Computersystem-Software; (ii) wobei das Sicherheitsmodul einen Geheimspeicher für geheime Daten und eine Schnittstelle für Betriebssysteme zum Verwalten und Abrufen des Inhalts des Geheimspeichers aufweist und (iii) das Sicherheitsmodul verschlüsselt mit einem öffentlichen Schlüssel in dem Hauptspeicher eines Computersystems 212 gespeichert ist. Als Reaktion auf einen Zugriff auf die Schnittstelle kann die Software Folgendes durchführen: (a) Umschalten des Prozessors 16 des Computersystems 212 in eine sichere Betriebsart; (b) Deaktivieren eines Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher 20 in den Hauptspeicher; (c) Entschlüsseln des Programmcodes und/oder von Daten des Sicherheitsmoduls in dem Prozessor-Cachespeicher mit einem geheimen Schlüssel; (d) Konfigurieren einer dynamischen Adressübersetzung, um den Zugriff auf den Hauptspeicher außerhalb der von dem Sicherheitsmodul verwendeten Bereiche zu verhindern; (e) Ausführen des Programmcodes des Sicherheitsmoduls mit Daten, die auf der Schnittstelle bereitgestellt werden; (f) Verschlüsseln der Daten in dem Prozessor-Cachespeicher mit dem öffentlichen Schlüssel; (g) Aktivieren des Schreibvorgangs von Programmcode und Daten des Sicherheitsmoduls aus dem Prozessor-Cachespeicher in den Hauptspeicher; und (h) Umschalten des Prozessors 16 in eine normale Betriebssystem-Betriebsart. Der Schreibvorgang in den Hauptspeicher kann für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind, deaktiviert werden.
  • In dem Datenverarbeitungssystem 210 gibt es ein Computersystem/einen Server 212, das/der mit zahlreichen anderen Universal- oder Spezial-Datenverarbeitungssystem-Umgebungen bzw. -konfigurationen betriebsfähig ist. Zu Beispielen für allgemein bekannte Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung mit dem Computersystem/Server 212 geeignet sein können, gehören (i) Personal-ComputerSysteme, (ii) Server-Computersysteme, (iii) Thin Clients, (iv) Thick Clients, (v) Handheld- bzw. Laptop-Geräte, (vi) Multiprozessorsysteme, (vii) auf Mikroprozessoren beruhende Systeme, (viii) Set-Top-Boxen, (ix) programmierbare Verbraucherelektronik, (x) Netzwerk-PCs, (xi) Minicomputersysteme, (xii) Mainframe-Computersysteme sowie (xiii) verteilte Cloud-Computing-Umgebungen, die irgendeine(s) der obigen Systeme bzw. Einheiten enthalten, und dergleichen, aber nicht darauf beschränkt.
  • Das Computersystem/der Server 212 kann in dem allgemeinen Kontext von durch Computersysteme ausführbaren Anweisungen, z.B. durch Programmmodule, beschrieben werden, die von einem Computersystem ausgeführt werden. Allgemein können zu Programmmodulen (i) Routinen, (ii) Programme, (iii) Objekte, (iv) Komponenten, (v) Logik, (vi) Datenstrukturen und so weiter gehören, die bestimmte Aufgaben durchführen bzw. bestimmte abstrakte Datentypen umsetzen. Das Computersystem/der Server 212 kann in verteilten Cloud-Computing-Umgebungen ausgeführt werden, wo Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Computersystem-Speichermedien befinden, darunter Ha uptspeicherei nheiten.
  • Wie in 5 gezeigt ist, ist das Computersystem/der Server 212 in dem Datenverarbeitungssystem 210 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Die Komponenten des Computersystems/Servers 212 können (i) eine(n) oder mehrere Prozessoren oder Verarbeitungseinheiten 216, (ii) einen Systemspeicher 228 und (iii) einen Bus 218 beinhalten, der verschiedene Systemkomponenten, darunter den Systemspeicher 228, mit dem Prozessor 216 verbindet, sind aber nicht darauf beschränkt.
  • Der Bus 218 stellt eine oder mehrere einer beliebigen von mehreren Arten von Busstrukturen dar, darunter (i) ein Speicherbus oder eine Speichersteuereinheit, (ii) ein Peripheriebus, (iii) ein beschleunigter Grafikanschluss und (iv) ein Prozessor- oder lokaler Bus, die eine beliebige aus einer Vielfalt von Busarchitekturen verwenden. Zu derartigen Architekturen gehören als Beispiel und nicht als Einschränkung (a) ein ISA-Bus (Industry Standard Architecture), (b) ein MCA-Bus (Micro Channel Architecture), (c) ein EISA-Bus (Enhanced ISA), (d) ein VESA-Lokalbus (Video Electronics Standards Association) sowie (e) ein PCI-Bus (Peripheral Component Interconnect).
  • Das Computersystem/der Server 212 beinhaltet üblicherweise eine Vielfalt von durch ein Computersystem lesbaren Medien. Bei derartigen Medien kann es sich um jedes beliebige Medium handeln, auf welches das Computersystem/der Server 212 zugreifen kann, und es beinhaltet (i) flüchtige Medien, (ii) nichtflüchtige Medien, (iii) austauschbare Medien und (iv) nicht austauschbare Medien.
  • Der Systemspeicher 228 kann durch ein Computersystem lesbare Medien in Form eines flüchtigen Speichers wie einen Direktzugriffsspeicher (RAM) 230 und/oder Cachespeicher 232 enthalten. Das Computersystem/der Server 212 kann darüber hinaus andere austauschbare/nicht austauschbare, flüchtige/nichtflüchtige Computersystem-Speichermedien beinhalten. Lediglich als Beispiel kann das Speichersystem 234 zum Lesen von und zum Schreiben auf ein nicht austauschbares, nichtflüchtiges magnetisches Medium bereitgestellt werden (das nicht gezeigt ist und üblicherweise „Festplattenlaufwerk“ genannt wird). Es können auch ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine austauschbare, nichtflüchtige Magnetplatte (zum Beispiel eine „Floppy-Diskette“) und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine austauschbare, nichtflüchtige optische Platte wie eine CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt werden, auch wenn diese nicht gezeigt sind. In derartigen Fällen können sie jeweils über eine oder mehrere Datenmedienschnittstellen mit dem Bus 218 verbunden sein. Wie nachfolgend weiter abgebildet und beschrieben wird, kann der Systemspeicher 228 mindestens ein Programmprodukt enthalten, das einen Satz von Programmmodulen (zum Beispiel mindestens einen) aufweist, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Als Beispiel und nicht als Einschränkung kann das Programm/Dienstprogramm 240, das (mindestens) einen Satz von Programmmodulen 242 aufweist (i) in dem Systemspeicher 228, (ii) als Betriebssystem, (iii) als ein oder mehrere Anwendungsprogramme, (iv) als andere Programmmodule und (v) als Programmdaten gespeichert sein. Das Betriebssystem, das eine oder die mehreren Anwendungsprogramme, andere Programmmodule und die Programmdaten oder eine beliebige Kombination daraus können jeweils eine Umsetzung einer Netzwerkumgebung enthalten. Die Programmmodule 242 führen allgemein die hierin beschriebenen Funktionen und/oder Methodiken von Ausführungsformen der Erfindung aus.
  • Das Computersystem/der Server 212 kann auch mit einer oder mehreren externen Einheiten 214 wie zum Beispiel (i) einer Tastatur, (ii) einer Zeigeeinheit, (iii) einer Anzeige 224, (iv) einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 212 Daten auszutauschen, und/oder (v) beliebigen Einheiten (zum Beispiel Netzwerkkarten, Modems usw.) Daten austauschen, die es dem Computersystem/Server 212 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe- (E/A-) Schnittstellen 222 erfolgen. Außerdem kann das Computersystem/der Server 212 über den Netzwerkadapter 220 mit einem oder mehreren Netzwerken Daten austauschen, wie zum Beispiel (a) einem lokalen Netzwerk (LAN), (b) einem allgemeinen Weitverkehrsnetz (WAN) und/oder (c) einem öffentlichen Netzwerk (zum Beispiel dem Internet). Wie abgebildet ist, tauscht der Netzwerkadapter 220 mit den anderen Komponenten des Computersystems/Servers 212 über den Bus 218 Daten aus. Es sollte klar sein, dass andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 212 verwendet werden könnten, auch wenn diese nicht gezeigt sind. Zu Beispielen gehören folgende, ohne auf diese beschränkt zu sein: (1) Mikrocode, (2) Einheitentreiber, (3) redundante Verarbeitungseinheiten, (4) externe Festplattenlaufwerk-Arrays, (5) RAID-Systeme, (6) Bandlaufwerke und (7) Speichersysteme zur Datenarchivierung usw.
  • Bei der vorliegenden Erfindung kann es sich um (i) ein System, (ii) ein Verfahren und/oder (iii) ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) beinhalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um (i) eine elektronische Speichereinheit, (ii) eine magnetische Speichereinheit, (iii) eine optische Speichereinheit, (iv) eine elektromagnetische Speichereinheit, (v) eine Halbleiterspeichereinheit oder (vi) jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: (a) eine tragbare Computerdiskette, (b) eine Festplatte, (c) ein Direktzugriffsspeicher (RAM), (d) ein Nur-Lese-Speicher (ROM), (e) ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), (f) ein statischer Direktzugriffsspeicher (SRAM), (g) ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), (h) eine DVD (digital versatile disc), (i) ein Speicher-Stick, (j) eine Diskette, (k) eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und (I) jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel (1) Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, (2) elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (zum Beispiel durch ein Glasfaserkabel geleitete Lichtimpulse) oder (3) durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von (i) einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten, (ii) auf einen externen Computer, (iii) eine externe Speichereinheit, und zwar über ein Netzwerk wie zum Beispiel das Internet, (iv) ein lokales Netzwerk, (v) ein Weitverkehrsnetz und/oder (vi) ein drahtloses Netzwerk heruntergeladen werden. Das Netzwerk kann (a) Kupferübertragungskabel, (b) Lichtwellenübertragungsleiter, (c) drahtlose Übertragung, (d) Leitwegrechner, (e) Firewalls, (f) Vermittlungseinheiten, (g) Gateway-Computer und/oder (h) Edge-Server beinhalten. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um (i) Assembler-Anweisungen, (ii) ISA-Anweisungen (Instruction-Set-Architecture), (iii) Maschinenanweisungen, (iv) maschinenabhängige Anweisungen, (v) Mikrocode, (vi) Firmware-Anweisungen, (vii) zustandssetzende Daten oder (viii) entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können (a) vollständig auf dem Computer des Benutzers, (b) teilweise auf dem Computer des Benutzers, (c) als eigenständiges Software-Paket, (d) teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder (e) vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter (1) ein lokales Netzwerk (LAN), (2) ein Weitverkehrsnetz (WAN), oder (3) die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können (I) elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, (II) im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder (III) programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von (i) Verfahren, (ii) Vorrichtungen (Systemen) und (iii) Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbarer Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können (i) einem Prozessor eines Universalcomputers, (ii) einem Spezialcomputer oder (iii) einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das (a) einen Computer, (b) eine programmierbare Datenverarbeitungsvorrichtung und/oder (c) andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt beinhaltet, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf (i) einen Computer, (ii) eine andere programmierbare Datenverarbeitungsvorrichtung oder (iii) eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessarbeitsschritten auf (a) dem Computer bzw. (b) der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, (c) einer anderen programmierbaren Vorrichtung oder (d) einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen (i) die Architektur, (ii) die Funktionalität und (iii) den Betrieb möglicher Ausführungen von (a) Systemen, (b) Verfahren und (c) Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern (1) ein Modul, (2) ein Segment oder (3) einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) beinhalten. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung aufgeführt, sollen jedoch nicht gesamthaft stehen für bzw. begrenzt sein auf die offenbarten Ausführungsformen. Für Fachleute werden viele Abänderungen und Abweichungen ersichtlich sein, ohne von dem Umfang und dem Gedanken der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt vorgefundenen Technologien bestmöglich zu erläutern oder um es anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.

Claims (20)

  1. Auf einem Computer ausgeführtes Verfahren zur Verwendung mit einem Sicherheitsmodul, das Programmanweisungen zum Bereitstellen eines Geheimspeichers in einem flüchtigen Speicher für geheime Daten und eine Schnittstelle zum Interagieren mit einem Betriebssystem beinhaltet, das Verfahren aufweisend: Speichern von Daten, die das Sicherheitsmodul bilden, in einem Prozessor-Cachespeicher eines Prozessors in einer verschlüsselten Form, die durch einen geheimen Schlüssel entschlüsselt werden kann; Umschalten des Prozessors in eine sichere Betriebsart; als Reaktion auf das Umschalten in die sichere Betriebsart Deaktivieren eines Schreibvorgangs, wobei es sich bei dem Schreibvorgang um einen Vorgang handelt, der die das Sicherheitsmodul bildenden Daten aus dem Prozessor-Cachespeicher in einen flüchtigen Speicher schreibt; Entschlüsseln der das Sicherheitsmodul bildenden Daten mit dem geheimen Schlüssel in dem Prozessor-Cachespeicher; Konfigurieren einer dynamischen Adressübersetzung, um den Zugriff auf Teile des flüchtigen Speichers außerhalb des Geheimspeichers zu verhindern; Empfangen von Daten über die Schnittstelle des Sicherheitsmoduls; Verschlüsseln der über die Schnittstelle des Sicherheitsmoduls empfangenen Daten unter Verwendung eines öffentlichen Schlüssels durch das Sicherheitsmodul und in dem Prozessor-Cachespeicher; Aktivieren des Schreibvorgangs; und Umschalten des Prozessors in eine normale Betriebssystem-Betriebsart.
  2. Verfahren nach Anspruch 1, darüber hinaus aufweisend: Deaktivieren des Schreibvorgangs für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind.
  3. Verfahren nach Anspruch 1, wobei der Prozessor-Cachespeicher einen Satz von Cachespeicher(n) der ersten Ebene und einen Satz von Cachespeicher(n) der zweiten Ebene beinhaltet.
  4. Verfahren nach Anspruch 1, wobei die Schnittstelle des Sicherheitsmoduls in Form einer Schnittstelle zur Anwendungsprogrammierung unter Verwendung einer Krypto-Architektur vorliegt.
  5. Verfahren nach Anspruch 1, darüber hinaus aufweisend: Empfangen einer Unterbrechungsanforderung durch den Prozessor; als Reaktion auf die Unterbrechungsanforderung Aussetzen der Ausführung des Sicherheitsmoduls; und nach dem Verschlüsseln des Sicherheitsmoduls Übergeben der Steuerung an ein Unterbrechungsverarbeitungsprogramm.
  6. Verfahren nach Anspruch 5, darüber hinaus aufweisend: Beenden der Unterbrechungsanforderung; und als Reaktion auf das Beenden der Unterbrechungsanforderung Neustarten des Sicherheitsmoduls.
  7. Verfahren nach Anspruch 1, darüber hinaus aufweisend: gemeinsames Nutzen des Sicherheitsmoduls von einer Mehrzahl von Programmen unter Verwendung eines Semaphor-Mechanismus, um den Zugriff auf den Geheimspeicher des flüchtigen Speichers zu serialisieren.
  8. Computerprogrammprodukt zur Verwendung mit einem Sicherheitsmodul, das Programmanweisungen zum Bereitstellen eines Geheimspeichers in einem flüchtigen Speicher für geheime Daten und eine Schnittstelle zum Interagieren mit einem Betriebssystem beinhaltet, das Computerprogrammprodukt aufweisend: eine durch eine Maschine lesbare Speichereinheit; und Computercode, der auf der durch eine Maschine lesbaren Speichereinheit gespeichert ist, wobei der Computercode Anweisungen enthält, um einen oder mehrere Prozessoren dazu zu veranlassen, Arbeitsschritte durchzuführen, einschließlich der folgenden: Speichern von Daten, die das Sicherheitsmodul bilden, in einem Prozessor-Cachespeicher eines Prozessors in einer verschlüsselten Form, die durch einen geheimen Schlüssel entschlüsselt werden kann, Umschalten des Prozessors in eine sichere Betriebsart, als Reaktion auf das Umschalten in die sichere Betriebsart Deaktivieren eines Schreibvorgangs, wobei es sich bei dem Schreibvorgang um einen Vorgang handelt, der die das Sicherheitsmodul bildenden Daten aus dem Prozessor-Cachespeicher in einen flüchtigen Speicher schreibt, Entschlüsseln der das Sicherheitsmodul bildenden Daten mit dem geheimen Schlüssel in dem Prozessor-Cachespeicher, Konfigurieren einer dynamischen Adressübersetzung, um den Zugriff auf Teile des flüchtigen Speichers außerhalb des Geheimspeichers zu verhindern, Empfangen von Daten über die Schnittstelle des Sicherheitsmoduls, Verschlüsseln der über die Schnittstelle des Sicherheitsmoduls empfangenen Daten unter Verwendung eines öffentlichen Schlüssels durch das Sicherheitsmodul und in dem Prozessor-Cachespeicher, Aktivieren des Schreibvorgangs, und Umschalten des Prozessors in eine normale Betriebssystem-Betriebsart.
  9. Computerprogrammprodukt nach Anspruch 8, wobei der Computercode darüber hinaus Anweisungen beinhaltet, um den Satz aus einem oder mehreren Prozessoren dazu zu veranlassen, die folgenden Arbeitsschritte durchzuführen: Deaktivieren des Schreibvorgangs für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind.
  10. Computerprogrammprodukt nach Anspruch 8, wobei der Prozessor-Cachespeicher einen Satz von Cachespeicher(n) der ersten Ebene und einen Satz von Cachespeicher(n) der zweiten Ebene beinhaltet.
  11. Computerprogrammprodukt nach Anspruch 8, wobei die Schnittstelle des Sicherheitsmoduls in Form einer Schnittstelle zur Anwendungsprogrammierung unter Verwendung einer Krypto-Architektur vorliegt.
  12. Computerprogrammprodukt nach Anspruch 8, wobei der Computercode darüber hinaus Anweisungen beinhaltet, um den Satz aus einem oder mehreren Prozessoren dazu zu veranlassen, die folgenden Arbeitsschritte durchzuführen: Empfangen einer Unterbrechungsanforderung durch den Prozessor; als Reaktion auf die Unterbrechungsanforderung Aussetzen der Ausführung des Sicherheitsmoduls; und nach dem Verschlüsseln des Sicherheitsmoduls Übergeben der Steuerung an ein Unterbrechungsverarbeitungsprogramm.
  13. Computerprogrammprodukt nach Anspruch 12, wobei der Computercode darüber hinaus Anweisungen beinhaltet, um den Satz aus einem oder mehreren Prozessoren dazu zu veranlassen, die folgenden Arbeitsschritte durchzuführen: Beenden der Unterbrechungsanforderung; und als Reaktion auf das Beenden der Unterbrechungsanforderung Neustarten des Sicherheitsmoduls.
  14. Computerprogrammprodukt nach Anspruch 8, wobei der Computercode darüber hinaus Anweisungen beinhaltet, um den Satz aus einem oder mehreren Prozessoren dazu zu veranlassen, die folgenden Arbeitsschritte durchzuführen: gemeinsames Nutzen des Sicherheitsmoduls von einer Mehrzahl von Programmen unter Verwendung eines Semaphor-Mechanismus, um den Zugriff auf den Geheimspeicher des flüchtigen Speichers zu serialisieren.
  15. Computersystem zur Verwendung mit einem Sicherheitsmodul, das Programmanweisungen zum Bereitstellen eines Geheimspeichers in einem flüchtigen Speicher für geheime Daten und eine Schnittstelle zum Interagieren mit einem Betriebssystem beinhaltet, das Computersystem aufweisend: einen Satz aus einem oder mehreren Prozessoren; eine durch eine Maschine lesbare Speichereinheit; und Computercode, der auf der durch eine Maschine lesbaren Speichereinheit gespeichert ist, wobei der Computercode Anweisungen enthält, um den/die Prozessor(en) dazu zu veranlassen, Arbeitsschritte durchzuführen, einschließlich der folgenden: Speichern von Daten, die das Sicherheitsmodul bilden, in einem Prozessor-Cachespeicher eines Prozessors in einer verschlüsselten Form, die durch einen geheimen Schlüssel entschlüsselt werden kann, Umschalten des Prozessors in eine sichere Betriebsart, als Reaktion auf das Umschalten in die sichere Betriebsart Deaktivieren eines Schreibvorgangs, wobei es sich bei dem Schreibvorgang um einen Vorgang handelt, der die das Sicherheitsmodul bildenden Daten aus dem Prozessor-Cachespeicher in einen flüchtigen Speicher schreibt, Entschlüsseln der das Sicherheitsmodul bildenden Daten mit dem geheimen Schlüssel in dem Prozessor-Cachespeicher, Konfigurieren einer dynamischen Adressübersetzung, um den Zugriff auf Teile des flüchtigen Speichers außerhalb des Geheimspeichers zu verhindern, Empfangen von Daten über die Schnittstelle des Sicherheitsmoduls, Verschlüsseln der über die Schnittstelle des Sicherheitsmoduls empfangenen Daten unter Verwendung eines öffentlichen Schlüssels durch das Sicherheitsmodul und in dem Prozessor-Cachespeicher, Aktivieren des Schreibvorgangs, und Umschalten des Prozessors in eine normale Betriebssystem-Betriebsart.
  16. Computersystem nach Anspruch 15, wobei der Computercode darüber hinaus Anweisungen beinhaltet, um den Satz aus einem oder mehreren Prozessoren dazu zu veranlassen, die folgenden Arbeitsschritte durchzuführen: Deaktivieren des Schreibvorgangs für Daten, die mit einem Nicht-Gesichert-Flag gekennzeichnet sind.
  17. Computersystem nach Anspruch 15, wobei der Prozessor-Cachespeicher einen Satz von Cachespeicher(n) der ersten Ebene und einen Satz von Cachespeicher(n) der zweiten Ebene beinhaltet.
  18. Computersystem nach Anspruch 15, wobei die Schnittstelle des Sicherheitsmoduls in Form einer Schnittstelle zur Anwendungsprogrammierung unter Verwendung einer Krypto-Architektur vorliegt.
  19. Computersystem nach Anspruch 15, wobei der Computercode darüber hinaus Anweisungen beinhaltet, um den Satz aus einem oder mehreren Prozessoren dazu zu veranlassen, die folgenden Arbeitsschritte durchzuführen: Empfangen einer Unterbrechungsanforderung durch den Prozessor; als Reaktion auf die Unterbrechungsanforderung Aussetzen der Ausführung des Sicherheitsmoduls; und nach dem Verschlüsseln des Sicherheitsmoduls Übergeben der Steuerung an ein Unterbrechungsverarbeitungsprogramm.
  20. Computersystem nach Anspruch 19, wobei der Computercode darüber hinaus Anweisungen beinhaltet, um den Satz aus einem oder mehreren Prozessoren dazu zu veranlassen, die folgenden Arbeitsschritte durchzuführen: Beenden der Unterbrechungsanforderung; und als Reaktion auf das Beenden der Unterbrechungsanforderung Neustarten des Sicherheitsmoduls.
DE112018002947.6T 2017-07-25 2018-07-23 Computersystem-software/firmware und prozessoreinheit mit einem sicherheitsmodul Pending DE112018002947T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/658,441 2017-07-25
US15/658,441 US10534725B2 (en) 2017-07-25 2017-07-25 Computer system software/firmware and a processor unit with a security module
PCT/IB2018/055462 WO2019021153A1 (en) 2017-07-25 2018-07-23 COMPUTER SYSTEM SOFTWARE / COMPUTER SOFTWARE AND PROCESSOR UNIT WITH SECURITY MODULE

Publications (1)

Publication Number Publication Date
DE112018002947T5 true DE112018002947T5 (de) 2020-04-02

Family

ID=65037918

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018002947.6T Pending DE112018002947T5 (de) 2017-07-25 2018-07-23 Computersystem-software/firmware und prozessoreinheit mit einem sicherheitsmodul

Country Status (6)

Country Link
US (3) US10534725B2 (de)
JP (1) JP6955619B2 (de)
CN (1) CN110998545B (de)
DE (1) DE112018002947T5 (de)
GB (1) GB2578410B (de)
WO (1) WO2019021153A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534725B2 (en) 2017-07-25 2020-01-14 International Business Machines Corporation Computer system software/firmware and a processor unit with a security module
EP4273704A3 (de) * 2018-06-29 2024-01-10 INTEL Corporation Verfahren zur unterstützung einer ganzheitlichen ansicht einer cache-dienstklasse für einen prozessor-cache
US11372647B2 (en) 2019-12-05 2022-06-28 Marvell Asia Pte, Ltd. Pipelines for secure multithread execution
US11307857B2 (en) * 2019-12-05 2022-04-19 Marvell Asia Pte, Ltd. Dynamic designation of instructions as sensitive for constraining multithreaded execution
CN111343041B (zh) * 2020-01-19 2021-11-02 苏州浪潮智能科技有限公司 一种风扇状态监控方法和装置
CN115080158A (zh) * 2021-03-12 2022-09-20 Oppo广东移动通信有限公司 界面显示方法、装置、终端设备及计算机可读存储介质
US20230177143A1 (en) * 2021-12-03 2023-06-08 International Business Machines Corporation Operating a secure code segment on a processor core of a processing unit
US20230176901A1 (en) * 2021-12-03 2023-06-08 International Business Machines Corporation Scheduling a secure code segment on a processor core of a processing unit

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6789197B1 (en) * 1994-10-27 2004-09-07 Mitsubishi Corporation Apparatus for data copyright management system
JPH08305558A (ja) * 1995-04-27 1996-11-22 Casio Comput Co Ltd 暗号化プログラム演算装置
US6615349B1 (en) * 1999-02-23 2003-09-02 Parsec Sight/Sound, Inc. System and method for manipulating a computer file and/or program
JP2005227995A (ja) * 2004-02-12 2005-08-25 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US20070014403A1 (en) * 2005-07-18 2007-01-18 Creative Technology Ltd. Controlling distribution of protected content
US8261256B1 (en) 2006-08-24 2012-09-04 Bby Solutions, Inc. System and method for automatically updating the software of a networked personal audiovisual device
US8639945B2 (en) 2010-05-25 2014-01-28 Via Technologies, Inc. Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US20140281587A1 (en) * 2013-03-14 2014-09-18 Ologn Technologies Ag Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor
US9430384B2 (en) * 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
US9231923B1 (en) 2013-11-12 2016-01-05 Amazon Technologies, Inc. Secure data destruction in a distributed environment using key protection mechanisms
US9734355B2 (en) 2014-04-11 2017-08-15 Rubicon Labs, Inc. System and method for an efficient authentication and key exchange protocol
US10169618B2 (en) * 2014-06-20 2019-01-01 Cypress Semiconductor Corporation Encryption method for execute-in-place memories
US9928080B2 (en) 2014-09-30 2018-03-27 International Business Machines Corporation Hardware security module access management in a cloud computing environment
US9798678B2 (en) 2015-04-02 2017-10-24 International Business Machines Corporation Protecting storage from unauthorized access
US9715462B2 (en) 2015-04-02 2017-07-25 International Business Machines Corporation Protecting contents of storage
US10089245B2 (en) * 2015-05-18 2018-10-02 Hewlett Packard Enterprise Development Lp Management of encryption keys for multi-mode network storage device
US9767320B2 (en) * 2015-08-07 2017-09-19 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US9432183B1 (en) 2015-12-08 2016-08-30 International Business Machines Corporation Encrypted data exchange between computer systems
US10534725B2 (en) 2017-07-25 2020-01-14 International Business Machines Corporation Computer system software/firmware and a processor unit with a security module

Also Published As

Publication number Publication date
US20190034357A1 (en) 2019-01-31
GB2578410A (en) 2020-05-06
GB2578410B (en) 2020-10-28
WO2019021153A1 (en) 2019-01-31
JP2020528608A (ja) 2020-09-24
US10528487B2 (en) 2020-01-07
US20200110712A1 (en) 2020-04-09
GB202002174D0 (en) 2020-04-01
US20190034356A1 (en) 2019-01-31
US11204881B2 (en) 2021-12-21
US10534725B2 (en) 2020-01-14
CN110998545A (zh) 2020-04-10
JP6955619B2 (ja) 2021-10-27
CN110998545B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
DE112018002947T5 (de) Computersystem-software/firmware und prozessoreinheit mit einem sicherheitsmodul
DE60124845T2 (de) Mikroprozessor mit Programm- und Datenschutzfunktion in einer Multitasking Umgebung
US10235304B2 (en) Multi-crypto-color-group VM/enclave memory integrity method and apparatus
DE112015004555B4 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
DE60214640T2 (de) Mikroprozessor mit verbesserten Taskverwaltungs- und Tabellenverwaltungsvorrichtungen
DE102018123710A1 (de) Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud
DE112014000965T5 (de) Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System
DE102019110327A1 (de) Technologien zum verifizieren von speicherintegrität über mehrere speicherbereiche hinweg
DE102008006759B4 (de) Prozessor-Anordnung und Verfahren zum Betreiben der Prozessor-Anordnung ohne Verringerung der Gesamtsicherheit
DE202013012514U1 (de) Protokollstrukturierte Datenträgerverschlüsselung bei virtuellen Maschinen
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE112020000694T5 (de) Erzeugung und ausführung von sicheren containern
DE102011082184A1 (de) Sicherheitsschutz für Speicherinhalt von Prozessorhauptspeicher
DE112018004390T5 (de) Sichere zugriffsverwaltung für werkzeuge innerhalb einer sicheren umgebung
DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
DE112020000289T5 (de) Abfrage und überlassung von sicherem speicher
DE112020005517T5 (de) Prozessgestütztes virtualisierungssystem zum ausführen eines sicheren anwendungsprozesses
DE112020000223T5 (de) Gemeinsame speichernutzung zwischen einer sicheren domäne und einer nicht sicheren entität
DE112021002099T5 (de) Hypervisor-geschützter schlüssel
DE112021000537T5 (de) Verschlüsselung auf arbeitsspeicher-grundlage
DE112021005968T5 (de) Krypto-löschung von in einer „key per io“-fähigen einheit gespeicherten daten über eine interne aktion
DE112020000891T5 (de) Erzeugung von nativem code für cloud-services
DE102020134207A1 (de) Sichere Adressübersetzungsdienste unter Verwendung kryptographisch geschützter physischer Hostadressen
DE112022003368T5 (de) Verschlüsselungsüberwachungsregister und -system

Legal Events

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