DE102019121577A1 - Mindern von seitenkanalattacken unter verwendung von executable-only-speicher (xom) - Google Patents

Mindern von seitenkanalattacken unter verwendung von executable-only-speicher (xom) Download PDF

Info

Publication number
DE102019121577A1
DE102019121577A1 DE102019121577.3A DE102019121577A DE102019121577A1 DE 102019121577 A1 DE102019121577 A1 DE 102019121577A1 DE 102019121577 A DE102019121577 A DE 102019121577A DE 102019121577 A1 DE102019121577 A1 DE 102019121577A1
Authority
DE
Germany
Prior art keywords
memory
page
control circuitry
pages
system call
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
DE102019121577.3A
Other languages
English (en)
Inventor
Ravi Sahita
Mingwei Zhang
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE102019121577A1 publication Critical patent/DE102019121577A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0877Cache access modes
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • 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/1016Performance improvement
    • 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)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

Die vorliegende Offenbarung betrifft somit Systeme und Verfahren, die Seitenkanal-Verteidigungsschaltkreise zum Schützen geteilter Codeseiten in einem XOM (Executable-Only-Speicher) vor Seitenkanal-Angriffen umfassen. Die Seitenkanal-Verteidigungsschaltkreise empfangen Systemaufrufe und bestimmen, ob Codeseiten ausführbaren Code umfassen, ob die Codeseiten schreibbaren Code umfassen und ob die Codeseiten Anweisungen umfassen, die einen oder mehrere in XOM gespeicherten Codeseiten zugeordnete Schutzschlüssel ändern oder modifizieren können. Wenn die Codeseiten ausführbaren Code, der schreibbar ist, oder ausführbaren Code, der Anweisungen umfasst, umfassen, die in der Lage sind, einen oder mehrere in XOM gespeicherten Codeseiten zugeordnete Schutzschlüssel zu ändern oder zu modifizieren, brechen die Seitenkanal-Verteidigungsschaltkreise den Systemaufruf ab.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft die Computersicherheit und speziell die Minderung von Seitenkanalattacken.
  • STAND DER TECHNIK
  • Seitenkanalattacken sind Anfang 2018 vielfach bekannt geworden. Eine Seitenkanalattacke umfasst jede Attacke auf der Basis von Informationen, die aus der Implementierung eines Computersystems erhalten werden, statt einer Schwäche im implementierten Algorithmus selbst. Solche Seitenkanalattacken können Timinginformationen, Stromverbrauch, elektromagnetische Lecks oder sogar Schall als Extraquelle von Informationen verwenden, die ausgenutzt wird, um Informationen und/oder Daten von dem System zu erhalten. Seitenkanalattacken umfassen Spectre und Meltdown, die beide eine Deduktion verwenden, ob Daten aus einem Cache-gespeicherten oder Nicht-Cache-gespeicherten Ort stammen. Zu einem signifikanten Grad verlässt sich die Bestimmung, woher Daten stammen, auf das genaue Timing von Ereignissen wie Ladevorgängen aus Speicherraum.
  • Executable-Only-Speicher („XOM“ - „Nur-Ausführbar-Speicher“) soll Ausräum- und Neuladeattacken verhindern, die versuchen, geteilte Codeseiten wirksam zu nutzen. Zum Beispiel teilen sich zwei Prozesse „A“ und „B“ eine oder mehrere Codeseiten. Mindestens eine der geteilten Codeseiten enthält einen Steuerflussgraphen (CFG), der eine Angabe bereitstellt, wann Prozess „A“ auf Daten zugreift, die an der Speicheradresse „ADDRESS1“ gespeichert oder behalten werden, die für Verwendung nur durch Prozess „A“ reserviert ist. Die Prozessorschaltkreise kopieren den Wert von ADDRESS1 in Prozessor-Cache-Schaltkreise. Der Attackiererprozess „B“ räumt, dann ADDRESS1 und bestimmt unter Verwendung eines Timing-Seitenkanals, ob Prozess A auf ADDRESS1 zugegriffen hat. Wenn Prozess „B“ bestimmt, dass die Lesezeit für ADDRESS1 relativ kurz ist, hat Prozess „A“ auf ADDRESS1 zugegriffen. Wenn Prozess „B“ jedoch bestimmt, dass die Lesezeit für ADDRESS1 irgendetwas anderes als relativ kurz ist, hat Prozess „A“ nicht auf ADDRESS1 zugegriffen.
  • Moderne Betriebssysteme bilden den Kernel in den Adressenraum jedes durch den Prozessor ausgeführten Prozesses ab. Zugriff auf den Kernel-Raum wird unter Verwendung eines Beaufsichtigungsbit des Prozessors eingeschränkt, das gesetzt wird, um Kernel-Zugriff auf den Kernel-Raum zu gestatten, und rückgesetzt wird, um Benutzerzugriff auf den Kernel-Raum zu blockieren oder zu verhindern. Meltdown überwindet diese Speicherisolation und gestattet es dadurch dem Benutzerprozess, den gesamten Kernel-Speicher der den Benutzerprozess ausführenden Maschine zu lesen. Meltdown stützt sich auf die Außerreihenfolge-Ausführung, um Daten aus dem Kernel-Raum zu erhalten. Außerreihenfolge-Ausführung unterstützende CPUs unterstützen spekulatives Ausführen von Operationen dahingehend, dass Außerreihenfolge-Logik des Prozessors Anweisungen verarbeitet, bevor die CPU sicher ist, ob die Anweisung gültig und übernommen ist. Meltdown liest Informationen aus dem geschützten Kernel-Raum, indem bewirkt wird, dass der Prozessor mehrere Anweisungen ausführt, wie etwa
              data=getByte(kernelAddress)

               variable=probeArray(data)
  • Die Anweisung „getByte“ wird letztendlich aufgrund des verbotenen Lesens von Kernel-Speicher fehlschlagen. Der gleichzeitige Zugriff auf ein Element in „probeArray“ zieht jedoch die Daten aus „probeArray“ in den Cache. Durch Timen von Lesevorgängen an Adressen von 0 bis 255 im Cache ist der Attackierer in der Lage, den Inhalt von „kernelAddress“ zu folgern.
  • Zum Beispiel ruft nach dem Ausräumen des Cache der Meltdown-Attackierer einen Wert „01000000“ (binär „64“) aus einer ersten Adresse im Kernel-Speicher ab. Bevor der Prozessor aufgrund des unbefugten Lesens aus Kernel-Speicher einen Programmfehler erzeugt, verwendet der Attackierer abgerufene Kernel-Daten als Index zum Zugriff auf das Element „64“ in einem im Benutzerraum befindlichen bekannten Array. Der Prozessor ruft den Wert des Arrayelements 64 ab und lädt den Wert in den Cache. Der Attackierer versucht dann, jedes Element aus dem Array zu lesen - Zugriffszeiten für die Elemente 0-63 und 65-255 werden relativ lang sein, da die Daten aus Hauptspeicher abgerufen werden. Die Zugriffszeit für das Element 64 wird jedoch beträchtlich kürzer sein, da die Daten nur aus dem Cache abgerufen werden müssen. Hieraus kann der Attackierer folgern, dass die Daten in der ersten Adresse im Kernel-Speicher „01000000“ sind. Indem die Aktion für jede Speicherstelle im Kernel-Speicher ausgeführt wird, ist der Attackierer in der Lage, den Inhalt des Kernel-Speichers zu lesen.
  • Eine erste Klasse von Spectre-Attacken nutzt Verzweigungsziel-Fehlvorhersage durch eine CPU, um Daten aus Speicher in Cache zu lesen. Bei Detektion der Fehlvorhersage löscht die CPU die Daten aus der Pipeline, aber die in den Cache gelesenen Daten bleiben. Dann kann ein verdeckter Seitenkanal verwendet werden, um die Restdaten aus dem Cache zu erhalten. In dieser Attackenklasse trainiert der Attackierer den Verzweigungsprädiktor in einem System, eine bestimmte Verzweigung zu nehmen. Zum Beispiel kann ein Attackierer unter Verwendung der folgenden Anweisungen das System trainieren, indem Werte für „x“ bereitgestellt werden, die beständig kleiner als die Größe von „arrayl“ sind. Der Attackierer trainiert das System somit, spekulativ die nachfolgende Anweisung auf der Basis der Annahme auszuführen, dass die Verzweigung in der Vorgeschichte wahr gewesen ist:
  • 
     if (x < array1. size ()) {
       int value = array2 [array1 [x] * 256] // Verzweigung 1
     }
  • Nach dem Trainieren des Systems versetzt der Attackierer den Cache in einen bekannten Zustand und stellt einen Wert von „x“ bereit, der die Größe von „array1“ übersteigt. Da er zuvor dafür trainiert wurde, dass „x“ typischerweise kleiner als die Größe von „arrayl“ ist, führt der Prozessor die Verzweigungsanweisung aus (bevor der Prozessor den Programmfehler aufwirft, weil „x“ größer als die Größe von „array1“ ist) und verwendet den an der Adresse „x“ gefundenen Wert als Index zum Nachschlagen des Werts an der Adresse „x“ in array2. Der Prozessor lädt den Wert an der Adresse „x“ in array2 in den Cache. Der Attackierer liest dann alle Werte von array2 und ist in der Lage, den Wert von „x“ als die Adresse in array2 mit der kürzesten Zugriffszeit zu bestimmen.
  • Zum Beispiel nehme man an, dass array1 256 Elemente aufweist, die mit „0“ bis „255“ adressiert sind. Der Attackierer stellt Werte von „x“ zwischen 0 und 255 bereit, um das System dafür zu trainieren, dass die Verzweigungsanweisung routinemäßig ausgeführt wird. Der Attackierer versetzt dann den Cache in einen bekannten Zustand und stellt einen Wert von 512 für „x“ (d.h. einen größeren Wert als 255) bereit. Der Wert „01000000“ (d.h. „64“) an der Speicherstelle 512 wird gelesen. Der Prozessor schlägt dann den Wert von array2 an der Adresse 64*256 nach und lädt den Wert in den Cache. Der Attackierer untersucht dann die Lesezeit für jedes Element in array2, und die Lesezeit für das Element an der Adresse 64*256 ist kleiner als die Lesezeit für die anderen array2-Adressen, wodurch der Attackierer die Informationen erhält, dass die Adresse an der Speicherstelle 512 „01000000“ oder „64“ ist. Indem die Aktion für jede Speicherstelle ausgeführt wird, ist der Attackierer in der Lage, den Inhalt des Speichers Byte für Byte zu lesen.
  • Eine zweite Klasse von Spectre-Attacken nutzt indirekte Verzweigung aus, indem der BTB (Branch Target Buffer) so vergiftet wird, dass eine CPU spekulativ ein gadget ausführt, das bewirkt, dass die CPU Daten aus Speicher in Cache liest. Bei Detektion der falschen Verzweigung löscht die CPU die Daten aus der Pipeline, aber wieder verbleiben die in den Cache gelesenen Daten. Dann kann ein verdeckter Seitenkanal verwendet werden, um die Restdaten aus dem Cache zu erhalten. In dieser Attackenklasse vergiftet der Attackierer den BTB des Opfersystems durch wiederholtes Ausführen von indirekten Verzweigungen zu einer virtuellen Adresse in dem System des Opfers, worin das gadget enthalten ist. Zum Beispiel kann ein Attackierer den Inhalt zweier Register (R1, R2) in dem System des Opfers zum Zeitpunkt des Auftretens einer indirekten Verzweigung steuern. Der Attackierer muss ein gadget in dem System des Opfers finden, das bei spekulativer Ausführung durch die CPU des Opfers Daten aus ausgewählten Speicherstellen in dem System des Opfers leckt. Das gadget kann durch zwei Anweisungen gebildet werden, von denen die erste eine Anweisung enthält, die mathematisch und/oder logisch (addieren, subtrahieren, XOR usw.) die Inhalte des Registers R1 mit einem anderen Register in dem System des Opfers verknüpft und das Ergebnis in R2 speichert. Die zweite Anweisung liest die Inhalte des Registers R2 und speichert den Wert in R2 im Cache.
  • Zum Beispiel kann der Attackierer zwei Register ebx (R1) und edi (R2) in dem System des Opfers steuern. Der Attackierer findet dann zwei Anweisungen in dem System des Opfers, wie etwa
  •         adc edi,dword ptr [ebx+edx+13BE13BDh]
            adc dl,byte ptr [edi]
  • Durch Auswählen von ebx = m - 0x13BE13BD - edx ist der Attackierer in der Lage, den Speicher des Opfers an der Adresse „m“ zu lesen. Das Ergebnis wird dann zu dem Wert in edi (R2) addiert. Die zweite Anweisung in dem gadget bewirkt ein Lesen von R2, das die Summe von „m“ plus dem anfänglich in edi geladenen Wert des Attackierers enthält, wodurch der Wert in den Cache transferiert wird. Durch Detektieren des Orts von R2 im Cache unter Verwendung einer Seitenkanal-Timingattacke ist der Attackierer in der Lage, den Wert von „m“ zu bestimmen.
  • Figurenliste
  • Merkmale und Vorteile verschiedener Ausführungsformen des beanspruchten Gegenstands werden im Verlauf der folgenden ausführlichen Beschreibung und unter Bezugnahme auf die Zeichnungen, in denen gleiche Bezugszahlen gleiche Teile bezeichnen, ersichtlich. Es zeigen:
    • 1 eine schematische Darstellung eines beispielhaften Systems, in dem sich mehrere Prozesse eine Seite in Executable-Only-Speicher („XOM“) teilen und in dem Seitenkanal-Verteidigungsschaltkreise bestimmen, ob ein Systemaufruf, der eine von einem ersten Prozess empfangene Speicherzuteilungsanforderung umfasst, in der Lage ist, über einen oder mehrere Seitenkanäle eine Operation zu bewirken, die dem zweiten Prozess zugeordnete Informationen exponiert, gemäß mindestens einer hier beschriebenen Ausführungsform;
    • 2 eine Blockdarstellung eines beispielhaften Seitenkanal-Verteidigungsschaltkreissystems, in dem Seitenkanal-Verteidigungsschaltkreise, die Code-Scannerschaltkreise und XOM-Durchsetzungsschaltkreise umfassen, einen Systemaufruf von Programmladerschaltkreisen empfangen, gemäß mindestens einer hier beschriebenen Ausführungsform;
    • 3 eine schematische Darstellung eines beispielhaften Systems, in dem VMM-Schaltkreise über mehrere virtuelle Maschinen duplizierte Speicherseiten zu einer einzigen geteilten Codeseite konsolidieren, die in der erweiterten Seitentabelle als „ausführbar“ designiert wird, gemäß mindestens einer hier beschriebenen Ausführungsform;
    • 4 eine schematische Darstellung einer beispielhaften elektronischen prozessorgestützten Vorrichtung, die eine CPU mit Prozessorschaltkreisen, Cache-Schaltkreise und Seitenkanal-Verteidigungsschaltkreise umfasst, die geteilte Codeseiten im XOM schützen, gemäß mindestens einer hier beschriebenen Ausführungsform; und
    • 5 ein Flussdiagramm auf hoher Ebene eines beispielhaften Verfahrens zum Mindern von Seitenkanalattacken unter Verwendung von Executable-Only-Speicher (XOM) gemäß mindestens einer hier beschriebenen Ausführungsform.
  • Obwohl die folgende ausführliche Beschreibung unter Bezugnahme auf beispielhafte Ausführungsformen erfolgt, sind für Fachleute viele Alternativen, Modifikationen und Varianten davon ersichtlich.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Geteilte Ressourcen über laufende Entitäten aus verschiedenen Vertrauensdomänen eröffnen Seitenkanalattacken einen potentiellen Weg. Zum Beispiel verwenden Cloud-Dienstanbieter häufig Speicherentduplikation zur Verringerung des Speicherbedarfs - diese Entduplikation erlaubt das Teilen von ausführbaren Codeseiten über mehrere verschiedene Mieter. Ähnlich werden in einem Gastbetriebssystem oft Codeseiten als Vorgabe über Prozesse in verschiedenen Vertrauensebenen geteilt, solange die Prozesse dasselbe ausführbare Modul laden. Diese Situation gestattet es einem Attackierer, Cache-Seitenkanäle zu verwenden, um den Programmausführungszustand vertrauenswürdiger Entitäten zu sondieren. Zum Beispiel gestattet die Verwendung der Anweisung CLFLUSH einem Attackierer, die Inhalte des Cache in einen spezifischen Bereich physischer Adressen im Speicher auszuräumen. Die CLFLUSH-Anweisung würde über jeden Kern wirksam werden, der den spezifischen Speicher in Cache hat, würde in physischen Speicher ausgeräumt. Wenn ein vertrauenswürdiges Programm den Code ausführt, wird eine auf Timing basierende Seitenkanalattacke für einen Attackierer beobachtbar. Die hier offenbarten Systeme und Verfahren verhindern solche Seitenkanalattacken durch Durchsetzung von Beschränkungen an XOM (eXecutable Only Memory) sowohl auf der Ebene eines Betriebssystems als auch eines Managers virtueller Maschinen, um vom Attackierungsszenario abhängige Seitenkanäle auf der Basis des Teilens von Code zu verhindern.
  • Die hier beschriebenen Systeme und Verfahren verhindern die Ausführung von Code aus geteilten Seiten, die ein Cache-Linien-Ausräumen von Daten aus dem Prozessor-Cache auf einen definierten Ort in Systemspeicher verursachen würde. Die hier beschriebenen Systeme und Verfahren verhindern vorteilhafterweise die erfolgreiche Ausführung der Cache-Linien-Ausräumoperation, während Fähigkeiten des Teilens von Code vorteilhafterweise beibehalten werden. Auf einer Benutzerebene bestimmen die hier beschriebenen Systeme und Verfahren, ob ein die Speicherzuteilung betreffender Systemaufruf schreibbaren Code oder beliebigen Code, wie etwa eine WRPKRU-Anweisung, umfasst, wodurch der einer geteilten Speicherseite zugeordnete Schutzschlüssel geändert werden kann. Wenn der Speicherzuteilung betreffende Systemaufruf schreibbar ist oder Anweisungen umfasst, die den einer geteilten Speicherseite zugeordneten Schutzschlüssel ändern können, wird es dem Systemaufruf gestattet, fehlzuschlagen. Andernfalls wird es dem Speicherzuteilung betreffenden Systemaufruf gestattet, in XOM abgeschlossen zu werden. Auf der Ebene einer virtuellen Maschine (VM) werden Duplikatcodeseiten entdupliziert und zwischen zwei oder mehreren VM geteilt. Zur Minderung der Änderung des Codes auf der geteilten Codeseite wird das der neu erzeugten geteilten Seite zugeordnete Zulassungsbit der erweiterten Seitentabelle (EPT) auf „nur ausführbar“ gesetzt.
  • Es wird ein Seitenkanalattacken-Schutzsystem bereitgestellt. Das System kann Folgendes umfassen: Steuerschaltkreise; mit den Steuerschaltkreisen gekoppelte Speicherschaltkreise; eine Speicherungsvorrichtung, die Anweisungen umfasst, die, wenn sie durch die Steuerschaltkreise ausgeführt werden, die Steuerschaltkreise veranlassen zum selektiven Wiedergeben einer nicht erfolgreichen Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf einer oder mehreren geteilten Speicherseiten.
  • Es wird ein Seitenkanal-Attacken-Schutzverfahren bereitgestellt. Das Verfahren kann Folgendes umfassen: Bestimmen durch Steuerschaltkreise, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen; und wenn bestimmt wird, dass die Speicherseiten-Zugriffsanforderung auf eine geteilte Speicherseite zugreift, selektives Wiedergeben einer nicht erfolgreichen Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf einer oder mehreren geteilten Speicherseiten.
  • Es wird ein nichttransistorisches maschinenlesbares Speicherungsmedium bereitgestellt. Das nichttransitorische maschinenlesbare Speicherungsmedium umfasst Anweisungen, die, wenn sie durch die Steuerschaltkreise ausgeführt werden, die Steuerschaltkreise veranlassen können zum selektiven Wiedergeben einer nicht erfolgreichen Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf einer oder mehreren geteilten Speicherseiten.
  • Es wird ein Seitenkanal-Attacken-Schutzsystem bereitgestellt. Das System kann Folgendes umfassen: Mittel zum Bestimmen, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen; und Mittel zum selektiven Wiedergeben einer nicht erfolgreichen Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf mindestens einer der einen oder mehreren geteilten Speicherseiten, wenn bestimmt wird, dass die Speicherseiten-Zugriffsanforderung auf eine geteilte Speicherseite zugreift.
  • Im vorliegenden Gebrauch beziehen sich die Ausdrücke „Prozessor-Cache“ und „Cache-Schaltkreise“ auf Cache-Speicher, der in einer Prozessor- oder Zentralverarbeitungseinheit- bzw. CPU-Kapselung anwesend ist. Ein solcher Prozessor-Cache kann ohne Beschränkung verschiedenartig als Ll-Cache (Level 1), L2-Cache (Level 2), L3-Cache (Level 3) und/oder Cache der letzten oder niedrigsten Ebene (LLC) bezeichnet werden und sollte als diese umfassend betrachtet werden.
  • 1 ist eine schematische Darstellung eines beispielhaften Systems 100, in dem sich mehrere Prozesse 102A, 102B (zusammen „Prozesse 102“) eine Seite 110 in Executable-Only-Speicher („XOM“) 120 teilen und in dem Seitenkanal-Verteidigungsschaltkreise 130 bestimmen, ob ein Systemaufruf 140, der eine von einem ersten Prozess 102A empfangene Speicherzuteilungsanforderung umfasst, in der Lage ist, über eine oder mehrere Seitenkanäle eine Operation zu bewirken, die dem zweiten Prozess 102B zugeordnete Informationen exponiert, gemäß mindestens einer hier beschriebenen Ausführungsform. Wie in 1 abgebildet, kann der XOM 120 mindestens teilweise in Systemspeicher 150 angeordnet sein. Bei Ausführungsformen kann eine Seitentabelle 160 Informationen umfassen, wie etwa eine Seitenkennung 162 und ein oder mehrere der geteilten Seite 110 zugeordnete Flags 164 repräsentierende Daten. Wie in 1 abgebildet können bei Ausführungsformen die Seitenkanal-Verteidigungsschaltkreise 130 ganz oder teilweise in einem Mehrchipmodul oder einer Zentralverarbeitungseinheit („CPU“) 170 angeordnet sein. Die CPU 170 umfasst außerdem Prozessorschaltkreise 172 und Prozessor-Cache-Schaltkreise 174. Ein Bus 180 koppelt den Systemspeicher 150 kommunikativ mit der CPU 170.
  • Bei einer Ausführungsform können sich zwei Prozesse 102, zum Beispiel zwei Prozesse, die jeweils mindestens einen auf einer Mehrkern-CPU 170 laufenden Thread aufweisen, eine Codeseite 110 teilen, die in einem Teil des Systemspeichers 150, der als Executable-Only-Speicher 170 designiert ist, gehalten, gespeichert oder anderweitig angeordnet ist. Eine Seitentabelle 160 kann ein oder mehrere Flags 164 umfassen, wie etwa einen Schutzschlüssel, der die Möglichkeit von Benutzern begrenzt, Daten aus der geteilten Codeseite 110 zu lesen. Das eine oder die mehreren Flags 164 können zum Beispiel die geteilte Codeseite 110 als eine geteilte Codeseite 110 des Typs „nur ausführbar“ designieren. Der erste Prozess 102A kann einen Systemaufruf 140 erzeugen, der eine Speicherzuteilungsanforderung umfasst. Als Reaktion auf Empfang des Systemaufrufs 140 von dem ersten Prozess 102A können die Seitenkanal-Verteidigungsschaltkreise 130 eine oder mehrere Anweisungssätze ausführen, die bewirken, dass die Seitenkanal-Verteidigungsschaltkreise 130 bestimmen, ob der empfangene Systemaufruf 140 ausführbaren Code umfasst. Wenn der Systemaufruf 140 keinen ausführbaren Code umfasst, lassen die Seitenkanal-Verteidigungsschaltkreise den Systemaufruf 140 voranschreiten. Wenn der Systemaufruf 140 ausführbaren Code umfasst, bestimmen die Seitenkanal-Verteidigungsschaltkreise 130, ob der Systemaufruf 140 schreibbaren Code umfasst. Wenn der Systemaufruf 140 schreibbaren Code umfasst, brechen die Seitenkanal-Verteidigungsschaltkreise den Systemaufruf 140 ab. Wenn der Systemaufruf 140 keinen schreibbaren Code umfasst, bestimmen die Seitenkanal-Verteidigungsschaltkreise 130, ob der Systemaufruf 140 irgendwelche Anweisungen, wie etwa eine WRPKRU-Anweisung, umfasst, die das eine oder die mehreren Flags 164 (z.B. einen oder mehrere Zulassungsschlüssel), die der geteilten Speicherseite 110 zugeordnet sind, ändern können. Wenn der Systemaufruf 140 Anweisungen umfasst, die das eine oder die mehreren einer geteilten Speicherseite 110 zugeordneten Flags 164 ändern können, brechen die Seitenkanal-Verteidigungsschaltkreise 130 den Systemaufruf 140 ab. Wenn der Systemaufruf 140 keine Anweisungen umfasst, die das eine oder die mehreren einer geteilten Speicherseite 110 zugeordneten Flags 164 ändern können, lassen die Seitenkanal-Verteidigungsschaltkreise 130 den Systemaufruf 140 voranschreiten.
  • Bei Ausführungsformen können die Seitenkanal-Verteidigungsschaltkreise 130 bestimmen, ob der Systemaufruf 140 als eine anonyme Anforderung aufkam. Wenn der Systemaufruf 140 als eine anonyme Anforderung aufkam, assoziieren die Seitenkanal-Verteidigungsschaltkreise 130 ein „nicht-zugänglich“-Flag 164 mit der angeforderten Seite. Durch Flaggen der angeforderten Seite als „nichtzugänglich“ wäre, wenn die Codeseite über Prozesse geteilt wird, die Codeseite nur ausführbar, und CLFLUSH-Anvisierung der Seite würde keinen Erfolg haben.
  • Bei einer oder mehreren Ausführungsformen können die Prozesse 102 eine erste virtuelle Maschine und eine zweite virtuelle Maschine (zusammen „VM“) umfassen. Bei solchen Ausführungsformen kann ein Manager virtueller Maschinen („VMM“) 190 jede der den VM zugeordneten Seiten scannen, um Duplikatseiten zu detektieren. Der VMM 190 kann die Speicherauslastung durch Verringern der Duplikatseiten auf einer einzigen geteilten Seite 110 konsolidieren (d.h. der VMM 190 konsolidiert die Speicherauslastung durch Entduplizieren der Duplikatseiten). Nach Entduplikation markiert der VMM 190 die einzige geteilte Seite 110 als „nur ausführbar“, um dadurch Schreibvorgänge in die einzige geteilte Seite 110 und Lesevorgänge aus dieser zu verhindern.
  • Der Systemspeicher 150 umfasst eine beliebige Anzahl und/oder Kombination von beliebigen aktuell verfügbaren und/oder in der Zukunft entwickelten elektrischen Komponenten, Halbleitervorrichtungen, optischen Speicherungskomponenten, Quantenspeicherungskomponenten, Molekularspeicherungskomponenten und/oder Logikelementen, die zu flüchtiger und/oder persistenter Speicherung digitaler Daten fähig sind. Bei verschiedenen Ausführungsformen kann der Systemspeicher 150 auf einer beliebigen von vielfältigen Informationsspeicherungstechnologien basieren, darunter möglicherweise flüchtige Technologien, die ununterbrochene Versorgung mit elektrischem Strom erfordern, und darunter möglicherweise Technologien, die die Verwendung von maschinenlesbaren Speicherungsmedien mit sich bringen, die wechselbar sein können oder die nicht wechselbar sein können. Der Systemspeicher 150 kann somit eine beliebige von vielfältigen Arten von Speicherungsvorrichtungen umfassen, darunter, ohne Beschränkung, ROM (Festwertspeicher), RAM (Direktzugriffsspeicher), DRAM (dynamischen RAM), DDR-DRAM (Doppeldatenraten-DRAM), SDRAM (Synchron-DRAM), SRAM (statischer RAM), PROM (programmierbarer ROM), EPROM (löschbarer programmierbarer ROM), EEPROM (elektrisch löschbarer programmierbarer ROM), Flash-Speicher, Polymerspeicher (z.B. ferroelektrischer Polymerspeicher), ovonischer Speicher, Phasenänderungs- oder ferroelektrischer Speicher, SONOS-Speicher (SiliziumOxid-Nitrid-Oxid-Silizium), magnetische oder optische Karten, ein oder mehrere einzelne ferromagnetische Laufwerke oder mehrere Speicherungsvorrichtungen, die zu einem oder mehreren Arrays organisiert werden (z.B. mehrere ferromagnetische Laufwerke, die zu einem RAID-Array (Redundant Array of Independent Disks) organisiert sind).
  • Obwohl jede der Speicherungen als ein einzelner Block dargestellt ist, versteht sich, dass eine oder mehrere davon mehrere Speicherungsvorrichtungen umfassen können, die auf verschiedenen Speicherungstechnologien basieren können. Somit können zum Beispiel eine oder mehrere jeder dieser abgebildeten Speicherungen eine Kombination von einem optischen Laufwerk oder Flash-Speicherkartenleser repräsentieren, wodurch Programme und/oder Daten gespeichert und auf eine bestimmte Form von maschinenlesbaren Speicherungsmedien übermittelt werden können, ein ferromagnetisches Laufwerk zum Speichern von Programmen und/oder Daten lokal für einen relativ längeren Zeitraum und eine oder mehrere flüchtige Halbleiter-Speichervorrichtungen, die relativ schnellen Zugriff auf Programme und/oder Daten ermöglichen (z.B. SRAM oder DRAM).
  • Mindestens ein Teil des Systemspeichers 150 kann als XOM (Execute-Only-Speicher) 120 designiert werden. Der XOM 120 kann verwendet werden, um geteilte Seiten 110 zu speichern, die ausführbaren Code enthalten. Auf den in der geteilten Seite 110 enthaltenen ausführbaren Code können mehrere Prozesse 102, wie etwa mehrere virtuelle Maschinen, zugreifen. Bei Ausführungsformen werden Datentransfers zu dem XOM 120 blockiert und Rückgabedaten können als ein Nullwert oder „0“ gelesen werden. Bei Ausführungsformen können einige oder alle Codeseiten, wie etwa die geteilte Codeseite 110, die in dem XOM 120 gespeichert oder anderweitig gehalten werden, ganz oder teilweise logisch einem Speicherschutz-Flag 164 (z.B. einem Schutzschlüssel, so wie er etwa auf Intel®-Mikroprozessoren implementiert wird) zugeordnet werden. Bei Ausführungsformen kann eine in dem Systemspeicher 150 gespeicherte oder anderweitig trainierte Seitentabelle 160 Informationen umfassen, die eine logische Assoziation zwischen der geteilten Seite und dem Speicherschutz-Flag 164 repräsentieren. Zum Beispiel kann die Seitentabelle 160 eine Kennung geteilter Seiten 162 umfassen, die die geteilte Speicherseite 110 eindeutig identifiziert. Die Seitentabelle 160 kann auch Daten umfassen, die ein Speicherschutz-Flag 164 repräsentieren, das logisch der jeweiligen geteilten Speicherseite 110 zugeordnet wird. Das der geteilten Seite 110 zugeordnete Speicherschutz-Flag 164 kann die geteilte Seite 110 als lesbar, beschreibbar, ausführbar oder nicht zugänglich identifizieren.
  • Während der XOM 120 einen Grad an Schutz vor Fern-Seitenkanalattacken bereitstellt, ist, da lokale Attackierer in der Lage sind, geteilte Codeseiten auszunutzen, um Binärdateien auszuführen und Systemaufrufe durchzuführen, der XOM 120 alleine zum Schutz vor lokalen Attackierern unzureichend. Wenn zum Beispiel ein lokaler Attackierer in der Lage ist, in eine geteilte Codeseite heimlich Code einzufügen, der einen Befehl „WRPKRU“ („Write Protection Key Rights User“ - „Schreib-Schutzschlüsselrechte Benutzer“) umfasst, könnte bei Ausführung des WRPKRU der Attackierer das der geteilten Codeseite 110 zugeordnete Speicherschutz-Flag 164 von „nur ausführen“ oder „nicht zugänglich“ in „lesen“ oder „schreiben“ umändern. Durch Ändern des Speicherschutz-Flags 164 ist der Attackierer in der Lage, über einen Seitenkanal, wie etwa einen Timing-Seitenkanal, Informationen über andere Prozesse 102 zu erkunden. Die hier offenbarten Systeme und Verfahren schließen vorteilhafterweise diese Schwäche durch Verhinderung der Änderung der geteilten Codeseiten 110, die in dem XOM 120 gespeichert oder anderweitig gehalten werden.
  • Die Prozessoreinheit 170 umfasst Prozessorschaltkreise 172 und Cache-Schaltkreise 174. Bei Ausführungsformen können die Seitenkanal-Verteidigungsschaltkreise 130 ganz oder teilweise in der Prozessoreinheit 170 angeordnet sein. Bei Ausführungsformen können in der Prozessoreinheit 170 angeordnete Speicherverwaltungsschaltkreise die VMM-Schaltkreise 190 ganz oder teilweise bereitstellen. Die Prozessoreinheit 170 kann eine beliebige Anzahl und/oder Kombination aktuell verfügbarer und/oder in der Zukunft entwickelter elektrischer Komponenten, Halbleitervorrichtungen und/oder Logikelemente mit der Fähigkeit zum Ausführen einer oder mehrerer maschinenlesbarer Anweisungssätze und Kommunikation mit einer oder mehreren externen Eingabe- und/oder Ausgabevorrichtungen über eine oder mehrere kommunikativ gekoppelte E/A-Schnittstellen umfassen. Bei verschiedenen Ausführungsformen kann die Prozessoreinheit 170 beliebige von vielfältigen kommerziell verfügbaren Prozessoren umfassen, darunter, ohne Beschränkung, einen Prozessor des Typs AMD®, Athlon®, Duron® oder Opteron®; eingebettete und sichere Prozessoren einer ARM®-Anwendung; einen Prozessor des Typs DragonBall® oder PowerPC® von IBM® und/oder Motorola®; einen Cell-Prozessor von IBM und/oder Sony®; oder einen Prozessor des Typs Intel® Celeron®, Core (2) Duo®, Core (2) Quad®, Core i3®, Core i5®, Core i7®, Atom®, Itanium®, Pentium®, Xeon®, Xeon Phi® oder XScale®. Ferner kann die Verarbeitungseinheit 170 einen Mehrkernprozessor (wobei die mehrere Kerne auf demselben oder getrennten Chips koexistieren) und/oder eine Mehrprozessorarchitektur einer gewissen anderen Varietät umfassen, wodurch mehrere physisch getrennte Prozessoren auf gewisse Weise verbunden sind. Die Verarbeitungseinheit 170 kann, aber ohne Beschränkung darauf, Folgendes umfassen: ein SoC (System-on-Chip), ein FPGA (Field Programmable Gate Array), ein MCM (Mehrchipmodul), ein ASIC (anwendungsspezifische integrierte Schaltung) oder ähnliches.
  • Die Seitenkanal-Verteidigungsschaltkreise 130 können eine beliebige Anzahl und/oder Kombination von aktuell verfügbaren und/oder in der Zukunft entwickelten elektrischen Komponenten, Halbleitervorrichtungen und/oder Logikelementen mit der Fähigkeit zur Ausführung von Anweisungssätzen umfassen, die bewirken, dass die Seitenkanal-Verteidigungsschaltkreise 130 die Anwesenheit einer oder mehrerer Gefahren detektieren, die durch die Anwesenheit von ausführbarem Code verursacht werden, der in einem durch einen Prozess 102 eingeleiteten Systemaufruf enthalten ist. Bei Ausführungsformen können die durch die Seitenkanal-Verteidigungsschaltkreise 130 ausgeführten Anweisungen detektieren, ob eine Speicherzuteilungsanforderung eine Seite mit ausführbarem Code umfasst, ob der in der Seite enthaltene Code schreibbar ist und/oder ob der Code eine oder mehrere Anweisungen umfasst, die ein Speicherschutz-Flag 164, das einer im XOM 120 gehaltenen, gespeicherten oder anderweitig angeordneten geteilten Seite 110 zugeordnet ist, ändern oder verändern können.
  • Die VMM-Schaltkreise 190 können eine beliebige Anzahl und/oder Kombination von aktuellen und/oder in der Zukunft entwickelten elektrischen Komponenten, Halbleitervorrichtungen und/oder Logikelementen umfassen, die Anweisungssätze ausführen können, die bewirken, dass die VMM-Schaltkreise 190 die Anwesenheit von Duplikatcodeseiten über mehrere VM hinweg detektieren und die Duplikatcodeseiten auf eine einzige geteilte Codeseite 110 reduzieren, die sich die jeweiligen VM teilen. Zusätzlich kann der VMM 190 eine logische Assoziation zwischen der einzigen geteilten Codeseite 110 und einem Speicherschutzschlüssel 164, der die geteilte Codeseite als eine „nur ausführbar“-Seite in dem XOM 120 designiert, bewirken oder anderweitig bilden.
  • 2 ist eine Blockdarstellung eines beispielhaften Seitenkanal-Verteidigungs-Schaltkreissystems 200, in dem Seitenkanal-Verteidigungsschaltkreise 130, die Codescannerschaltkreise 230 und XOM-Durchsetzungsschaltkreise 240 umfassen, einen Systemaufruf 220 von Programmladerschaltkreisen 210 empfangen, gemäß mindestens einer hier beschriebenen Ausführungsform. Bei Ausführungsformen kann der Systemaufruf 220, aber ohne Beschränkung darauf, Folgendes umfassen: „MMAP“ (eine Anweisung zum Abbilden von Dateien oder einer Vorrichtung auf Speicher); „MPROTECT“ (eine Anweisung zum Ändern von Speicherzugriffsschutzvorgängen); oder „MREMAP“ (eine Anweisung, die die Größe der Speicherabbildung ändert).
  • Nach Empfang des Systemaufrufs 140 führen die Codescannerschaltkreise 230 eine Anzahl von Auswertungen durch. Die Codescannerschaltkreise 230 bestimmen zuerst, ob eine dem Systemaufruf 140 zugeordnete Codeseite 220 ausführbaren Code umfasst. Wenn kein ausführbarer Code detektiert wird, lassen die Seitenkanal-Verteidigungsschaltkreise 130 den Systemaufruf 140 abschließen. Wenn dagegen ausführbarer Code in der Codeseite 220 anwesend ist, bestimmen die Seitenkanal-Verteidigungsschaltkreise 130 dann, ob die Codeseite 220 schreibar ist. Wenn die Codeseite 220 schreibbaren Code umfasst, bewirken die Seitenkanal-Verteidigungsschaltkreise 130, dass der Systemaufruf 140 fehlschlägt, um vor zukünftiger böswilliger Codemodifikation, die Zugriff auf Seitenkanalinformationen gestatten würde, zu schützen. Wenn schreibbarer Code in der Codeseite 220 anwesend ist, bewirken die Seitenkanal-Verteidigungsschaltkreise 130, dass der Systemaufruf fehlschlägt. Wenn kein schreibbarer Code in der Codeseite 220 anwesend ist, bestimmen die Seitenkanal-Verteidigungsschaltkreise 130 dann, ob die Codeseite 220 eine oder mehrere Anweisungen (z.B. eine Anweisung „WRPKRU“ (Write Protection Key Rights User)) umfasst, die das einer oder mehreren in dem XOM 120 enthaltenen geteilten Codeseiten 110 zugeordnete Speicherschutz-Flag 164 ändern oder modifizieren können. Wenn zum Ändern oder Modifizieren eines Speicherschutz-Flags 164 fähige Anweisungen in der Codeseite 220 enthalten sind, bewirken die Seitenkanal-Verteidigungsschaltkreise 130, dass der Systemaufruf 140 fehlschlägt.
  • Außerdem können die Seitenkanal-Verteidigungsschaltkreise 130 bei einigen Ausführungsformen bestimmen, ob eine anonyme Quelle den Systemaufruf 140 erzeugt hat. Wenn eine anonyme Quelle den Systemaufruf 140 erzeugt hat, setzen die Seitenkanal-Verteidigungsschaltkreise 130 das der Codeseite 220 zugeordnete Speicherschutz-Flag 164 zum Schutz der Codeseite 220 als „nur ausführbar“.
  • Die Codescannerschaltkreise 230 können eine beliebige Anzahl und/oder Kombination von aktuell verfügbaren und/oder in der Zukunft entwickelten elektrischen Komponenten, Halbleitervorrichtungen und/oder Logikelementen umfassen, die Anweisungssätze ausführen können, die bewirken, dass die Codescannerschaltkreise 230 die Anwesenheit von ausführbarem Code, schreibarem Code und/oder Code, der sich auf Speicherschutz-Flags 164 auswirken kann, die einer oder mehrere geteilten Seiten 110 in dem XOM 120 zugeordnet sind, detektieren. Bei Ausführungsformen stellen die Seitenkanal-Verteidigungsschaltkreise 130 die Codescannerschaltkreise 230 ganz oder teilweise bereit.
  • Wenn bestimmt wird, dass der Systemaufruf 140 voranschreiten gelassen werden sollte, leiten die Codescannerschaltkreise 230 den Systemaufruf 140 zu den XOM-Durchsetzungsschaltkreisen 240. Bei Ausführungsformen setzen die XOM-Durchsetzungsschaltkreise 240 das Speicherschutz-Flag 164 für jede der in dem XOM 120 enthaltenen Speicherseiten durch. Die XOM-Durchsetzungsschaltkreise 240 können eine beliebige Anzahl und/oder Kombination von aktuelle verfügbaren und/oder in der Zukunft entwickelten elektrischen Komponenten, Halbleitervorrichtungen und/oder Logikelementen umfassen, die Anweisungssätze ausführen können, die bewirken, dass die XOM-Durchsetzungsschaltkreise 240 das jeder in dem XOM 120 gespeicherten oder anderweitig gehaltenen geteilten Speicherseite 110 zugeordnete Speicherschutz-Flag 164 durchsetzen (nur Lesen, nur ausführbar usw.). Bei Ausführungsformen stellen die Seitenkanal-Verteidigungsschaltkreise 130 die XOM-Durchsetzungsschaltkreise 240 ganz oder teilweise bereit.
  • 3 ist eine schematische Darstellung eines beispielhaften Systems 300, in dem VMM-Schaltkreise 190 über mehrere virtuelle Maschinen duplizierte Speicherseiten 310 zu einer einzigen geteilten Codeseite 110 konsolidieren, die in der erweiterten Seitentabelle 160 als „ausführbar“ designiert wird, gemäß mindestens einer hier beschriebenen Ausführungsform. Wie in 3 abgebildet, können mehrere Seiten 310A1-310An , 310B1-310Bn (zusammen „Seiten 310“) Prozessen 102A bzw. 102B zugeordnet sein. Bei Ausführungsformen können die durch jeden der Prozesse 102A, 102B ausgeführten Anweisungen 302A, 302B Seiten 310 erzeugen, die ausführbaren Code umfassen, und mindestens einige der Seiten 310 können zwischen den zwei Prozessen 102 dupliziert sein. Der VMM 190 detektiert Duplikatcodeseiten 310 über alle Prozesse 102 hinweg, entdupliziert die Seiten und stellt eine einzige geteilte Speicherseite 110 bereit, die in der erweiterten Seitentabelle 160 als nur ausführbar designiert wird.
  • 4 ist eine schematische Darstellung einer beispielhaften elektronischen prozessorgestützten Vorrichtung 400, die eine CPU 170 mit Prozessorschaltkreisen 172, Cache-Schaltkreise 174 und Seitenkanal-Verteidigungsschaltkreise 130 umfasst, die geteilte Codeseiten 110 im XOM 120 schützen, gemäß mindestens einer hier beschriebenen Ausführungsform. Die prozessorgestützte Vorrichtung 400 kann zusätzlich eines oder mehrere von Folgendem umfassen: eine Grafikverarbeitungseinheit 412, eine Schnittstelle 420 für drahtlose Eingabe/Ausgabe (E/A), eine Schnittstelle 430 für verdrahtete E/A, Systemspeicher 150, Power-Management-Schaltkreise 450, eine nichtflüchtige Speicherungsvorrichtung 490 und eine Netzwerkschnittstelle 470. Die folgende Besprechung gibt eine kurze allgemeine Beschreibung der Komponenten, die die beispielhafte prozessorgestützte Vorrichtung 400 bilden. Beispielhafte nicht einschränkende prozessorgestützte Vorrichtungen 400 wären, aber ohne Beschränkung darauf, Smartphones, Wearable-Computer, tragbare Datenverarbeitungsvorrichtungen, in der Hand gehaltene Datenverarbeitungsvorrichtungen, Desktop-Datenverarbeitungsvorrichtungen, Blade-Server-Vorrichtungen, Workstations und ähnliches.
  • Die prozessorgestützte Vorrichtung 400 umfasst Prozessorschaltkreise 172, Cache-Schaltkreise 174 und Seitenkanal-Verteidigungsschaltkreise 130. Im Betrieb können die Seitenkanal-Verteidigungsschaltkreise 130 Systemaufrufe 140 untersuchen. Bei spezifischen Ausführungsformen können die Seitenkanal-Verteidigungsschaltkreise 130 Systemaufrufe 140 auf Speicherzuteilungsanforderungen hin untersuchen, die Codeseiten umfassen. Wenn eine Codeseite 220 detektiert wird, die ausführbaren Code umfasst, bestimmen die Seitenkanal-Verteidigungsschaltkreise 130, ob die Codeseite 220 schreibbaren Code umfasst. Wenn schreibbarer Code anwesend ist, brechen die Seitenkanal-Verteidigungsschaltkreise 130 den Systemaufruf 140 ab. Wenn kein schreibbarer Code in der Codeseite 220 anwesend ist, bestimmen die Seitenkanal-Verteidigungsschaltkreise 130, ob die Codeseite 220 Anweisungen und/oder Befehle umfasst, die in der Lage sind, den einer oder mehreren geteilten Codeseiten 110 zugeordneten Speicherschutz-Schlüssel 164 zu ändern oder zu modifizieren. Wenn die Codeseite 220 Anweisungen und/oder Befehle umfasst, die in der Lage sind, den einer oder mehreren geteilten Codeseiten 110 zugeordneten Speicherschutz-Schlüssel 164 zu ändern oder zu modifizieren, brechen die Seitenkanal-Verteidigungsschaltkreise 130 den Systemaufruf 140 ab.
  • Bei einigen Ausführungsformen umfasst die prozessorgestützte Vorrichtung 400 Grafikprozessorschaltkreise 412, die maschinenlesbare Anweisungssätze 414 ausführen und ein Ausgangssignal, das einem Systembenutzer eine Anzeigeausgabe bereitstellen kann, erzeugen können. Für Fachleute in der relevanten Technik ist erkennbar, dass die dargestellten Ausführungsformen sowie andere Ausführungsformen mit anderen prozessorgestützten Vorrichtungskonfigurationen praktiziert werden können, darunter tragbare Elektronik oder in der Hand gehaltene elektronische Vorrichtungen, zum Beispiel Smartphones, tragbare Computer, Wearable-Computer, Verbraucherelektronik, PCs („Personal Computers“), Netzwerk-PCs, Minicomputer, Server-Blades, Zentralrechner und dergleichen. Die Prozessorschaltkreise 172 können eine beliebige Anzahl von fest verdrahteten oder konfigurierbaren Schaltungen umfassen, die ganz oder teilweise programmierbare und/oder konfigurierbare Kombinationen von elektronischen Komponenten, Halbleitervorrichtungen und/oder Logikelementen umfassen können, die ganz oder teilweise in einem PC, einem Server oder einem anderen Datenverarbeitungssystem mit der Fähigkeit zum Ausführen von maschinenlesbaren Anweisungen angeordnet sind.
  • Die prozessorgestützte Vorrichtung 400 umfasst einen Bus oder eine ähnliche Kommunikationsverbindung 416, der bzw. die verschiedene Systemkomponenten, darunter die Prozessorschaltkreise 172, die Grafikprozessorschaltkreise 412, eine oder mehrere drahtlose E/A-Schnittstellen 420, eine oder mehrere verdrahtete E/A-Schnittstellen 430, der Systemspeicher 150, eine oder mehrere Speicherungsvorrichtungen 490 und/oder eine oder mehrere Netzwerkschnittstellen 470 kommunikativ koppelt und den Austausch von Informationen und/oder Daten zwischen ihnen ermöglicht. Die prozessorgestützte Vorrichtung 400 kann hier im Singular erwähnt werden, wobei dies aber die Ausführungsformen nicht auf eine einzige prozessorgestützte Vorrichtung 400 beschränken soll, da es bei bestimmten Ausführungsformen mehr als eine prozessorgestützte Vorrichtung 400 geben kann, die eine beliebige Anzahl von kommunikativ gekoppelten, kolokalisierten oder entfernten vernetzten Schaltungen oder Vorrichtungen integriert, umfasst oder enthält.
  • Die Prozessorschaltkreise 172 können eine beliebige Anzahl, Art oder Kombination von aktuell verfügbaren oder in der Zukunft entwickelten Vorrichtungen umfassen, die in der Lage sind, maschinenlesbare Anweisungssätze auszuführen. Die Prozessorschaltkreise 172 können einen beliebigen aktuellen oder in der Zukunft entwickelten Einzel- oder Mehrkernprozessor oder -Mikroprozessor umfassen, wie etwa ein oder mehrere SoCs (Systeme auf einem Chip); CPUs (Zentralverarbeitungseinheiten); DSPs (digitale Signalprozessoren); GPUs (Grafikverarbeitungseinheiten); ASICs (anwendungsspezifische integrierte Schaltungen), programmierbare Logikeinheiten, FPGAs (Field Programmable Gate Arrays) und dergleichen. Sofern es nicht anderweitig beschrieben wird, weisen Konstruktion und Funktionsweise der verschiedenen in 4 gezeigten Blöcke einen herkömmlichen Entwurf auf. Folglich müssen solche Blöcke hier nicht weiter beschrieben werden, da sie von Fachleuten auf dem relevanten Gebiet verstanden werden. Der Bus 416, der mindestens einige der Komponenten der prozessorgestützten Vorrichtung 400 miteinander verbindet, kann beliebige aktuell verfügbare oder in der Zukunft entwickelte serielle oder parallele Busstrukturen oder -architekturen verwenden.
  • Der Systemspeicher 150 kann „ROM“ (Festwertspeicher) 442 und „RAM“ (Direktzugriffsspeicher) 446 umfassen. Ein Teil des ROM 442 kann verwendet werden, um ein „BIOS“ (Basic Input/Output System) 444 zu speichern oder anderweitig zu halten. Das BIOS 444 stellt Grundfunktionalität für die prozessorgestützte Vorrichtung 400 bereit, indem zum Beispiel bewirkt wird, dass die Prozessorschaltkreise 172 einen oder mehrere maschinenlesbare Anweisungssätze 414 laden und/oder ausführen. Bei Ausführungsformen bewirken mindestens einige des einen oder der mehreren maschinenlesbaren Anweisungssätze 414, dass mindestens ein Teil der Prozessorschaltkreise 172 eine dedizierte spezifische und konkrete Maschine, zum Beispiel eine Textverarbeitungsmaschine, eine Digitalbild-Beschaffungsmaschine, eine Medienabspielmaschine, ein Spielsystem, eine Kommunikationsvorrichtung, ein Smartphone oder ähnliches, bereitstellen, erzeugen, produzieren, transitionieren und/oder als solche fungieren.
  • Die prozessorgestützte Vorrichtung 400 kann mindestens eine Schnittstelle 420 für drahtlose Eingabe/Ausgabe (E/A) umfassen. Die mindestens eine drahtlose E/A-Schnittstelle 420 kann kommunikativ mit einer oder mehreren physischen Ausgabevorrichtungen 422 (taktilen Vorrichtungen, Videoanzeigen, Audioausgabevorrichtungen, Druckexemplar-Ausgabevorrichtungen usw.) gekoppelt sein. Die mindestens eine drahtlose E/A-Schnittstelle 420 kann kommunikativ mit einer oder mehreren physischen Eingabevorrichtungen 424 (zeigende Vorrichtungen, Touchscreens, Tastaturen, taktilen Vorrichtungen usw.) gekoppelt werden. Die mindestens eine drahtlose E/A-Schnittstelle 420 kann eine beliebige aktuell verfügbare oder in der Zukunft entwickelte drahtlose E/A-Schnittstelle umfassen. Beispielhafte drahtlose E/A-Schnittstellen wären, aber ohne Beschränkung darauf, BLUETOOTH®, NFC (Nahfeldkommunikation) und ähnliches.
  • Die prozessorgestützte Vorrichtung 400 kann eine oder mehrere verdrahtete Schnittstellen 430 für Eingabe/Ausgabe (E/A) umfassen. Die mindestens eine verdrahtete E/A-Schnittstelle 430 kann kommunikativ mit einer oder mehreren physischen Ausgabevorrichtungen 422 (taktilen Vorrichtungen, Videoanzeigen, Audio-Ausgabevorrichtungen, Druckausgabe-Ausgabevorrichtungen usw.) gekoppelt sein. Die mindestens eine verdrahtete E/A-Schnittstelle 430 kann kommunikativ mit einer oder mehreren physischen Eingabevorrichtungen 424 (Zeigevorrichtungen, Berührungsschirmen, Tastaturen, taktilen Vorrichtungen usw.) gekoppelt sein. Die verdrahtete E/A-Schnittstelle 430 kann eine beliebige aktuell verfügbare oder zukünftige entwickelte E/A-Schnittstelle umfassen. Beispielhafte verdrahtete E/A-Schnittstellen wären, aber ohne Beschränkung darauf, USB (Universal Serial Bus), IEEE 1394 („FireWire“) und ähnliches.
  • Die prozessorgestützte Vorrichtung 400 kann eine oder mehrere kommunikativ gekoppelte nichttransitorische Datenspeicherungsvorrichtungen 490 umfassen. Die Datenspeicherungsvorrichtungen 490 können eine oder mehrere Festplatten (HDDs) und/oder eine oder mehrere Halbleiter-Speicherungsvorrichtungen (SSDs) umfassen. Die eine oder mehreren Datenspeicherungsvorrichtungen 490 können beliebige aktuelle oder zukünftige entwickelte Speicherungsgeräte, Netzwerkspeicherungsvorrichtungen und/oder -systeme umfassen. Nichteinschränkende Beispiele für solche Datenspeicherungsvorrichtungen 490 wären, aber ohne Beschränkung darauf, beliebige aktuelle oder zukünftige entwickelte nichttransitorische Speicherungsgeräte oder -vorrichtungen wie etwa eine oder mehrere magnetische Speicherungsvorrichtungen, eine oder mehrere optische Speicherungsvorrichtungen, eine oder mehrere elektroresistive Speicherungsvorrichtungen, eine oder mehrere molekulare Speicherungsvorrichtungen eine oder mehrere Quantenspeicherungsvorrichtungen oder verschiedene Kombinationen davon. Bei einigen Implementierungen können die eine oder mehreren Datenspeicherungsvorrichtungen 490 eine oder mehrere wechselbare Speicherungsvorrichtungen umfassen, wie etwa ein oder mehrere Flash-Laufwerke, Flash-Speicher, Flash-Speicherungseinheiten oder ähnliche Geräte oder Vorrichtungen mit der Fähigkeit zum kommunikativen Koppeln mit und Entkoppeln von der prozessorgestützten Vorrichtung 400.
  • Die eine oder mehreren Datenspeicherungsvorrichtungen 490 können Schnittstellen oder Steuerungen (nicht gezeigt) umfassen, die kommunikativ die jeweilige Speicherungsvorrichtung oder das jeweilige Speicherungssystem mit dem Bus 416 koppeln. Die eine oder mehreren Datenspeicherungsvorrichtungen 490 können maschinenlesbare Anweisungssätze, Datenstrukturen, Programmmodule, Datenspeicher, Datenbanken, logische Strukturen und/oder andere Daten speichern, behalten oder anderweitig enthalten, die für die Prozessorschaltkreise 172 und/oder die Grafikprozessorschaltkreise 412 und/oder eine oder mehrere auf den Prozessorschaltkreisen 172 und/oder den Grafikprozessorschaltkreisen 412 oder durch diese ausgeführte Anwendungen nützlich sind. In einigen Fällen können eine oder mehrere Datenspeicherungsvorrichtungen 490 zum Beispiel über den Bus 416 oder über eine oder mehrere verdrahtete Kommunikationsschnittstellen 430 (z.B. USB (Universal Serial Bus)); eine oder mehrere drahtlose Kommunikationsschnittstellen 420 (z.B. Bluetooth®, Nahfeldkommunikation oder NFC) und/oder eine oder mehrere Netzwerkschnittstellen 470 (IEEE 802.3 oder Ethernet, IEEE 802.11 oder WiFi® usw.) mit dem Prozessorschaltkreisen 172 gekoppelt sein.
  • Maschinenlesbare Anweisungssätze 414 und andere Programme, Anwendungen, Logiksätze und/oder Module können ganz oder teilweise in dem Systemspeicher 150 gespeichert werden. Solche Anweisungssätze 414 können ganz oder teilweise aus der einen oder den mehreren Datenspeicherungsvorrichtungen 490 transferiert werden. Die Anweisungssätze 414 können während der Ausführung durch die Prozessorschaltkreise 172 und/oder die Grafikprozessorschaltkreise 412 ganz oder teilweise in dem Systemspeicher 150 geladen, gespeichert oder anderweitig behalten sein.
  • Die prozessorgestützte Vorrichtung 400 kann Power-Management-Schaltkreise 450 umfassen, die einen oder mehrere Betriebsaspekte der Energiespeicherungsvorrichtung 452 steuern. Bei Ausführungsformen kann die Energiespeicherungsvorrichtung 452 eine oder mehrere primäre (d.h. nicht wiederaufladbare) oder sekundäre (d.h. wiederaufladbare) Batterien oder ähnliche Energiespeicherungsvorrichtungen umfassen. Bei Ausführungsformen kann die Energiespeicherungsvorrichtung 452 einen oder mehrere Superkondensatoren oder Ultrakondensatoren umfassen. Bei Ausführungsformen können die Power-Management-Schaltkreise 450 den Fluss von Energie von einer externen Energiequelle 454 zu der Energiespeicherungsvorrichtung 452 und/oder der prozessorgestützten Vorrichtung 400 ändern, justieren oder steuern. Die Energiequelle 454 wäre zum Beispiel, aber ohne Beschränkung darauf, ein Solarstromsystem, ein kommerzielles Stromnetz, ein tragbarer Generator, eine externe Energiespeicherungsvorrichtung oder eine beliebige Kombination davon.
  • Der Zweckmäßigkeit halber werden die Prozessorschaltkreise 172, die Grafikprozessorschaltkreise 412, die drahtlose E/A-Schnittstelle 420, die verdrahtete E/A-Schnittstelle 430, der Systemspeicher 150, die Power-Management-Schaltkreise 450, die Speicherungsvorrichtung 150 und die Netzwerkschnittstelle 470 als über den Bus 416 kommunikativ miteinander gekoppelt dargestellt, um dadurch Konnektivität zwischen den oben beschriebenen Komponenten bereitzustellen. Bei alternativen Ausführungsformen können die oben beschriebenen Komponenten auf andere Weise als in 4 dargestellt kommunikativ gekoppelt sein. Zum Beispiel können eine oder mehrere der oben beschriebenen Komponenten direkt mit anderen Komponenten gekoppelt sein oder können über eine oder mehrere (nicht gezeigte) dazwischenliegende Komponenten miteinander gekoppelt sein. In einem anderen Beispiel können eine oder mehrere der oben beschriebenen Komponenten in die Prozessorschaltkreise 172 und/oder die Grafikprozessorschaltkreise 412 integriert sein. Bei einigen Ausführungsformen kann der Bus 416 ganz oder teilweise weggelassen werden und die Komponenten werden direkt unter Verwendung geeigneter verdrahteter oder drahtloser Verbindungen miteinander gekoppelt.
  • 5 ist ein Flussdiagramm auf hoher Ebene eines beispielhaften Verfahrens 500 zum Mindern von Seitenkanalattacken unter Verwendung von Executable-Only-Speicher (XOM) 120 gemäß mindestens einer hier beschriebenen Ausführungsform. Die Seitenkanal-Verteidigungsschaltkreise 130 untersuchen jeden Systemaufruf 140 auf die Anwesenheit einer Codeseite 220. Auf der Basis des Inhalts der Codeseite 220 gestatten die Seitenkanal-Verteidigungsschaltkreise 130 selektiv, dass der Systemaufruf 220 voranschreitet, oder bewirken, dass der Systemaufruf 220 abbricht. Das Verfahren 500 beginnt bei 502.
  • Bei 504 empfangen die Seitenkanal-Verteidigungsschaltkreise 130 einen Systemaufruf 140. Bei Ausführungsformen kann der Systemaufruf 140 eine Speicherzuteilungsanforderung umfassen. Bei einigen Ausführungsformen kann die Speicherzuteilungsanforderung eine oder mehrere Codeseiten 220 umfassen. Bei Ausführungsformen können die eine oder mehreren Codeseiten 220 einen oder mehrere Befehle oder Anweisungen umfassen.
  • Bei 506 bestimmen die Seitenkanal-Verteidigungsschaltkreise 130, ob der Systemaufruf 140 eine Codeseite 220 umfasst, die ausführbaren Code enthält. Bei Ausführungsformen können die Codescannerschaltkreise 230 die empfangene Codeseite 220 scannen, um zu bestimmen, ob der Systemaufruf 140 eine Codeseite 220 mit ausführbarem Code umfasst. Wenn die Codeseite 220 keinen ausführbaren Code umfasst, wird das Verfahren 500 bei 508 fortgesetzt. Wenn die Codeseite 220 ausführbaren Code umfasst, wird das Verfahren 500 bei 510 fortgesetzt.
  • Bei 508 lassen die Seitenkanal-Verteidigungsschaltkreise 130 als Reaktion darauf, dass bestimmt wird, dass der Systemaufruf 140 keine Codeseite 220 mit ausführbarem Code enthält, dem Systemaufruf 140 voranschreiten. Das Verfahren 500 endet dann bei 516.
  • Bei 510 bestimmen die Seitenkanal-Verteidigungsschaltkreise 130, ob der Systemaufruf 140 eine schreibbare Codeseite 220 umfasst. Bei Ausführungsformen können Codescannerschaltkreise 230 die empfangene Codeseite 220 scannen, um zu bestimmen, ob der Systemaufruf 140 eine schreibbare Codeseite 220 umfasst. Wenn der Systemaufruf 140 eine schreibbare Codeseite 220 umfasst, wird das Verfahren 500 bei 512 fortgesetzt. Wenn der Systemaufruf 140 keine schreibbare Codeseite 220 umfasst, wird das Verfahren 500 bei 514 fortgesetzt.
  • Bei 512 bewirken die Seitenkanal-Verteidigungsschaltkreise 130, wenn bestimmt wird, dass der Systemaufruf 140 eine schreibbare Codeseite 220 enthält, dass der Systemaufruf 140 abbricht. Das Verfahren 500 endet dann bei 516.
  • Bei 514 bestimmen die Seitenkanal-Verteidigungsschaltkreise 130, ob der Systemaufruf 140 eine Codeseite mit Anweisungen oder Befehlen umfasst, die ein Speicherschutz-Flag 164 ändern oder modifizieren können. Bei Ausführungsformen können Codescannerschaltkreise 230 die empfangene Codeseite 220 scannen, um zu bestimmen, ob der Systemaufruf 140 eine Codeseite mit Anweisungen oder Befehlen umfasst, die ein Speicherschutz-Flag 164 ändern oder modifizieren können. Wenn der Systemaufruf 140 Anweisungen oder Befehle umfasst, die ein Speicherschutz-Flag 164 ändern oder modifizieren können, wird das Verfahren 500 bei 512 fortgesetzt und endet bei 516. Wenn der Systemaufruf 140 keine Anweisungen oder Befehle umfasst, die ein Speicherschutz-Flag 164 ändern oder modifizieren können, wird das Verfahren 500 bei 508 fortgesetzt und endet bei 516.
  • Obwohl 5 verschiedene Operationen gemäß einer oder mehreren Ausführungsformen zeigt, versteht sich, dass nicht alle in 5 abgebildeten Operationen für andere Ausführungsformen notwendig sind. Tatsächlich wird hier vollständig in Betracht gezogen, dass bei anderen Ausführungsformen der vorliegenden Offenbarung die in 5 abgebildeten Operationen und/oder andere hier beschriebene Operationen auf eine Weise kombiniert werden können, die in keiner der Zeichnungen speziell gezeigt ist, aber immer noch voll im Einklang mit der vorliegenden Offenbarung steht. Ansprüche, die auf Merkmale und/oder Operationen gerichtet sind, die in einer Zeichnung nicht exakt gezeigt sind, werden also als in den Schutzumfang und Inhalt der vorliegenden Offenbarung fallend betrachtet.
  • Wie in der vorliegenden Anmeldung und in den Ansprüchen verwendet, kann eine Liste von Posten, die durch den Ausdruck „und/oder“ verbunden werden, eine beliebige Kombination der aufgelisteten Posten bedeuten. Zum Beispiel kann der Ausdruck „A, B und/oder C“ A; B; C; A und B; A und C; B und C; oder A, B und C bedeuten. Wie in der vorliegenden Anmeldung und in den Ansprüchen verwendet, kann eine Liste von Posten, die durch den Ausdruck „mindestens eines von“ verbunden wird, eine beliebige Kombination der aufgelisteten Posten bedeuten. Zum Beispiel können die Ausdrücke „mindestens eines von A, B oder C“ A; B; C; A und B; A und C; B und C; oder A, B und C bedeuten.
  • Wie in jeder vorliegenden Ausführungsform gebraucht, können sich die Ausdrücke „System“ oder „Modul“ zum Beispiel auf Software, Firmware und/oder Schaltkreise beziehen, die dafür ausgelegt sind, beliebige der oben erwähnten Operationen auszuführen. Software kann als Softwarepaket, Code, Anweisungen, Anweisungssätze und/oder Daten realisiert sein, die auf nichttransitorischen computerlesbaren Speicherungsmedien aufgezeichnet werden. Firmware kann als Code, Anweisungen oder Anweisungssätze und/oder Daten realisiert sein, die in Speichervorrichtungen fest codiert (z.B. nichtflüchtig) sind.
  • Wie in einer beliebigen vorliegenden Ausführungsform gebraucht, kann der Ausdruck „Schaltkreise“ zum Beispiel einzeln oder in beliebiger Kombination festverdrahtete Schaltkreise, programmierbare Schaltkreise wie Computerprozessoren, die einen oder mehrere einzelne Anweisungsverarbeitungskerne umfassen, Automatenschaltkreise und/oder Firmware, die Anweisungen speichert, die durch programmierbare Schaltkreise ausgeführt werden, oder zukünftige Datenverarbeitungskonzepte, darunter zum Beispiel massiver Parallelismus, analoge oder Quanten-Datenverarbeitung, Hardware-Ausführungsformen von Beschleunigern wie Neuronalnetzprozessoren und Nicht-Silizium-Implementierungen von Obigem umfassen. Die Schaltkreise können zusammen oder einzeln als Schaltkreise realisiert sein, die einen Teil eines größeren Systems bilden, zum Beispiel einer integrierten Schaltung (IC), eines Systems auf einem Chip (SoC), von Desktop-Computern, Laptop-Computern, Tablet-Computern, Servern, Smartphones usw.
  • Beliebige der hier beschriebenen Operationen können in einem System implementiert werden, das ein oder mehrere Medien (z.B. nichttransitorische Speicherungsmedien) umfasst, in denen einzeln oder in Kombination Anweisungen gespeichert sind, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, die Verfahren ausführen. Der Prozessor kann hier zum Beispiel eine Server-CPU, eine Mobilvorrichtungs-CPU und/oder andere programmierbare Schaltkreise umfassen. Außerdem ist beabsichtigt, dass hier beschriebene Operationen über mehrere physische Vorrichtungen verteilt werden können, wie etwa Verarbeitungsstrukturen an mehr als einem unterschiedlichen physischen Ort. Das Speicherungsmedium kann eine beliebige Art von greifbarem Medium umfassen, zum Beispiel eine beliebige Art von Datenträger wie Festplatten, Disketten, optische Datenträger, CD-ROMs (Compact Disk Read-Only Memories), CD-RWs (Compact Disk Rewritables) und magnetooptische Datenträger, Halbleitervorrichtungen wie ROMs (Festwertspeicher), RAMs (Direktzugriffsspeicher) wie dynamische und statische RAMs, EPROMs (löschbare programmierbare Festwertspeicher), EEPROMs (elektrisch löschbare programmierbare Festwertspeicher), Flash-Speicher, SSDs (Solid State Disks), eMMCs (Embedded Multimedia Cards), SDIO-Karten (Secure Digital Input/Output), magnetische oder optische Karten oder eine beliebige Art von Medien, die für das Speichern von elektronischen Anweisungen geeignet ist. Es können andere Ausführungsformen als Software implementiert werden, die durch eine programmierbare Steuervorrichtung ausgeführt wird.
  • Die vorliegende Offenbarung betrifft somit Systeme und Verfahren, die Seitenkanal-Verteidigungsschaltkreise zum Schützen geteilter Codeseiten in einem XOM (Executable-Only-Speicher) vor Seitenkanal-Angriffen umfassen. Die Seitenkanal-Verteidigungsschaltkreise empfangen Systemaufrufe und bestimmen, ob Codeseiten ausführbaren Code umfassen, ob die Codeseiten schreibbaren Code umfassen und ob die Codeseiten Anweisungen umfassen, die einen oder mehrere in XOM gespeicherten Codeseiten zugeordnete Schutzschlüssel ändern oder modifizieren können. Wenn die Codeseiten ausführbaren Code, der schreibbar ist, oder ausführbaren Code, der Anweisungen umfasst, umfassen, die in der Lage sind, einen oder mehrere in XOM gespeicherten Codeseiten zugeordnete Schutzschlüssel zu ändern oder zu modifizieren, brechen die Seitenkanal-Verteidigungsschaltkreise den Systemaufruf ab.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen. Die folgenden Beispiele für die vorliegende Offenbarung können einen Gegenstand umfassen wie etwa mindestens eine Vorrichtung, ein Verfahren, mindestens ein maschinenlesbares Medium zum Speichern von Anweisungen, die, wenn sie ausgeführt werden, bewirken, dass eine Maschine auf dem Verfahren basierende Schritte ausführt, Mittel zum Ausführen von Schritten auf der Basis des Verfahrens und/oder ein System zum Mindern von Seitenkanalattacken unter Verwendung von XOM (Executable-Only-Speicher).
  • Gemäß Beispiel 1 wird ein Seitenkanalattacken-Schutzsystem bereitgestellt. Das System kann Folgendes umfassen: Steuerschaltkreise; mit den Steuerschaltkreisen gekoppelte Speicherschaltkreise; eine Speicherungsvorrichtung, die Anweisungen umfasst, die, wenn sie durch die Steuerschaltkreise ausgeführt werden, die Steuerschaltkreise veranlassen zum: selektiven Erfolgloswerdenlassen einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an einer oder mehreren geteilten Speicherseiten.
  • Beispiel 2 kann Elemente von Beispiel 1 umfassen, wobei die Speicherschaltkreise Speicherseiten umfassen, die zwei oder mehr virtuellen Maschinen zugeordnet sind; wobei die Anweisungen bewirken, dass die Steuerschaltkreise ganz oder teilweise Schaltkreise eines Managers virtueller Maschinen (VMM) bereitstellen, zum: Detektieren von Duplikat-Speicherseiten, die den zwei oder mehr virtuellen Maschinen zugeordnet sind; Bereitstellen einer von den zwei oder mehr virtuellen Maschinen geteilten einzigen geteilten Speicherseite, wobei die einzige geteilte Speicherseite den Inhalt der detektierten Duplikat-Speicherseiten umfasst; und Assoziieren einer Nur-Ausführbar-Kennung mit der einzigen geteilten Speicherseite, um die LESE-Zulassung der einzigen geteilten Speicherseite selektiv zu sperren.
  • Beispiel 3 kann Elemente beliebiger der Beispiele 1 oder 2 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) erfolglos werden lassen, ferner die Steuerschaltkreise veranlassen können zum: Bestimmen, ob eine Speicherzuteilung betreffende Systemaufrufanforderung, die vom Benutzerraum empfangen wird, eine oder mehrere ausführbare Codeseiten umfasst; wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere ausführbare Codeseiten umfasst, Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten schreibbar sind; und wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 4 kann Elemente beliebiger der Beispiele 1 bis 3 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) erfolglos werden lassen, ferner die Steuerschaltkreise veranlassen können zum: Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können; und wenn bestimmt wird, dass die eine oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 5 kann Elemente beliebiger der Beispiele 1 bis 4 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) erfolglos werden lassen, ferner die Steuerschaltkreise veranlassen können zum: Bestimmen, ob die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite von einer Speicherungsvorrichtung auf Speicher abbildet; wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite aus einer Speichervorrichtung auf Speicher abbildet, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 6 kann Elemente beliebiger der Beispiele 1 bis 5 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) erfolglos werden lassen, ferner die Steuerschaltkreise veranlassen können zum: Bestimmen, ob die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst; und wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 7 kann Elemente beliebiger der Beispiele 1 bis 6 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) erfolglos werden lassen, ferner die Steuerschaltkreise veranlassen können zum: wenn bestimmt wird, dass eine oder mehrere ausführbare Codeseiten keine Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 8 kann Elemente beliebiger der Beispiele 1 bis 7 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) erfolglos werden lassen, ferner die Steuerschaltkreise veranlassen können zum: wenn bestimmt wird, dass die empfangene Speicherzuteilung Systemaufrufanforderung nicht eine oder mehrere ausführbare Codeseiten umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 9 kann Elemente beliebiger der Beispiele 1 bis 8 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) erfolglos werden lassen, ferner die Steuerschaltkreise veranlassen können zum: wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten nicht umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 10 kann Elemente beliebiger der Beispiele 1 bis 9 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die den der geteilten Seite zugeordneten Schutzschlüssel ändern können, die Steuerschaltkreise ferner veranlassen können zum: Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten eine WRPKRU-Anweisung umfassen, die den der geteilten Seite zugeordneten Schutzschlüssel ändern kann.
  • Gemäß Beispiel 11 wird ein Seitenkanalattacken-Schutzverfahren bereitgestellt. Das Verfahren kann Folgendes umfassen: Bestimmen durch die Steuerschaltkreise, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen; und wenn bestimmt wird, dass die Speicherseiten-Zugriffsanforderung auf eine geteilte Speicherseite zugreift, selektives Erfolgloswerdenlassen der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten.
  • Beispiel 12 kann Elemente von Beispiel 11 umfassen, und das Verfahren kann zusätzlich Folgendes umfassen: Detektieren durch Schaltkreise des Managers virtueller Maschinen (VMM) von Duplikat-Speicherseiten, die den zwei oder mehr virtuellen Maschinen zugeordnet sind; wobei Bestimmen durch Steuerschaltkreise, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen, Folgendes umfasst: Bestimmen durch Steuerschaltkreise, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen, die zwei oder mehr virtuellen Maschinen zugeordnet sind; Bereitstellen einer von den zwei oder den mehr virtuellen Maschinen geteilten einzigen geteilten Speicherseite durch die VMM-Schaltkreise, wobei die einzige geteilte Speicherseite den Inhalt der detektierten Duplikat-Speicherseiten umfasst; und Assoziieren einer Nur-Ausführbar-Kennung mit der einzigen geteilten Speicherseite durch die VMM-Schaltkreise, um die LESE-Zulassung der einzigen geteilten Speicherseite selektiv zu sperren.
  • Beispiel 13 kann Elemente beliebiger der Beispiele 11 oder 12 umfassen, wobei selektives Erfolgloswerdenlassen der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen kann: Bestimmen durch die Steuerschaltkreise, ob eine Speicherzuteilung betreffende Systemaufrufanforderung, die vom Benutzerraum empfangen wird, eine oder mehrere ausführbare Codeseiten umfasst; wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere ausführbare Codeseiten umfasst, Bestimmen durch die Steuerschaltkreise, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten schreibbar sind; und wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten umfasst, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 14 kann Elemente beliebiger der Beispiele 11 bis 13 umfassen, wobei selektives Erfolgloswerdenlassen der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen kann: Bestimmen durch die Steuerschaltkreise, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können; und wenn bestimmt wird, dass die eine oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 15 kann Elemente beliebiger der Beispiele 11 bis 14 umfassen, wobei selektives Erfolgloswerdenlassen der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen kann: Bestimmen durch die Steuerschaltkreise, ob die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite von einer Speicherungsvorrichtung auf Speicher abbildet; wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite aus einer Speichervorrichtung auf Speicher abbildet, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 16 kann Elemente beliebiger der Beispiele 11 bis 15 umfassen, wobei selektives Erfolgloswerdenlassen der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen kann: Bestimmen durch die Steuerschaltkreise, ob die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst; wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 17 kann Elemente beliebiger der Beispiele 11 bis 16 umfassen, wobei selektives Erfolgloswerdenlassen der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen kann: wenn bestimmt wird, dass eine oder mehrere ausführbare Codeseiten keine Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 18 kann Elemente beliebiger der Beispiele 11 bis 17 umfassen, wobei selektives Erfolgloswerdenlassen der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen kann: wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung nicht eine oder mehrere ausführbare Codeseiten umfasst, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 19 kann Elemente beliebiger der Beispiele 11 bis 18 umfassen, wobei selektives Erfolgloswerdenlassen der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen kann: wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten nicht umfasst, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 20 kann Elemente beliebiger der Beispiele 11 bis 19 umfassen, wobei Bestimmen, ob eine beliebige der einen oder der mehreren ausführbaren Codeseiten Anweisungen umfasst, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, ferner umfassen kann: Bestimmen durch die Steuerschaltungen, ob irgendwelche der einen oder der mehreren ausführbaren Codeseiten eine WRPKRU-Anweisung umfassen, die den der geteilten Seite zugeordneten Schutzschlüssel ändern kann.
  • Gemäß Beispiel 21 wird ein nichttransitorisches maschinenlesbares Speicherungsmedium bereitgestellt, das Anweisungen umfasst. Die Anweisungen können, wenn sie durch die Steuerschaltkreise ausgeführt werden, die Steuerschaltkreise zu Folgendem veranlassen: selektives Erfolgloswerdenlassen einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf einer oder mehreren geteilten Speicherseiten.
  • Beispiel 22 kann Elemente von Beispiel 21 umfassen, wobei die Anweisungen ferner die Steuerschaltkreise ganz oder teilweise veranlassen zum: Detektieren von zwei oder mehr virtuellen Maschinen zugeordneten Duplikat-Speicherseiten über Schaltkreise eines Managers virtueller Maschinen; Bereitstellen einer von den zwei oder mehr virtuellen Maschinen geteilten einzigen geteilten Speicherseite über die Schaltkreise des Managers virtueller Maschinen, wobei die einzige geteilte Speicherseite den Inhalt der detektierten Duplikat-Speicherseiten umfasst; und Assoziieren einer Nur-Ausführbar-Kennung mit der einzigen geteilten Speicherseite, um die LESE-Zulassung der einzigen geteilten Speicherseite selektiv zu sperren.
  • Beispiel 23 kann Elemente beliebiger der Beispiele 21 oder 22 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) erfolglos werden lassen, ferner die Steuerschaltkreise veranlassen können zum: Bestimmen, ob eine Speicherzuteilung betreffende Systemaufrufanforderung, die vom Benutzerraum empfangen wird, eine oder mehrere ausführbare Codeseiten umfasst; wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere ausführbare Codeseiten umfasst, Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten schreibbar sind; und wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 24 kann Elemente beliebiger der Beispiele 21 bis 23 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) erfolglos werden lassen, ferner die Steuerschaltkreise veranlassen können zum: Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können; und
    wenn bestimmt wird, dass die eine oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 25 kann Elemente beliebiger der Beispiele 21 bis 24 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) erfolglos werden lassen, ferner die Steuerschaltkreise veranlassen können zum: Bestimmen, ob die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite von einer Speicherungsvorrichtung auf Speicher abbildet; und wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite aus einer Speichervorrichtung auf Speicher abbildet, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 26 kann Elemente beliebiger der Beispiele 21 bis 25 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code die Anweisung des Cache-Linien-Ausräumens (CLFLUSH) selektiv erfolglos werden lassen, die Steuerschaltkreise ferner zu Folgendem veranlassen können: Bestimmen, ob die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst; und wenn bestimmt wird, dass die Speicherzuteilung bezogene Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 27 kann Elemente beliebiger der Beispiele 21 bis 26 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code die Anweisung des Cache-Linien-Ausräumens (CLFLUSH) selektiv erfolglos werden lassen, die Steuerschaltkreise ferner zu Folgendem veranlassen können: wenn bestimmt wird, dass eine oder mehrere ausführbare Codeseiten keine Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 28 kann Elemente beliebiger der Beispiele 21 bis 27 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code die Anweisung des Cache-Linien-Ausräumens (CLFLUSH) selektiv erfolglos werden lassen, die Steuerschaltkreise ferner zu Folgendem veranlassen können: wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung nicht eine oder mehrere ausführbare Codeseiten umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 29 kann Elemente beliebiger der Beispiele 21 bis 28 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code die Anweisung des Cache-Linien-Ausräumens (CLFLUSH) selektiv erfolglos werden lassen, die Steuerschaltkreise ferner zu Folgendem veranlassen können: wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung nicht eine oder mehrere schreibbare ausführbare Codeseiten umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 30 kann Elemente beliebiger der Beispiele 21 bis 29 umfassen, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die den der geteilten Seite zugeordneten Schutzschlüssel ändern können, die Steuerschaltkreise ferner zu Folgendem veranlassen können: Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten eine WRPKRU-Anweisung umfassen, die den der geteilten Seite zugeordneten Schutzschlüssel ändern kann.
  • Gemäß Beispiel 31 wird ein Seitenkanalattacken-Schutzsystem bereitgestellt. Das System kann Folgendes umfassen: Mittel zum Bestimmen, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen; und Mittel zum selektiven Erfolgloswerdenlassen einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten, wenn bestimmt wird, dass die Speicherseiten-Zugriffsanforderung auf eine geteilte Speicherseite zugreift.
  • Beispiel 32 kann Elemente von Beispiel 31 umfassen, wobei das System ferner Folgendes umfassen kann: Mittel zum Detektieren von Duplikat-Speicherseiten, die den zwei oder mehr virtuellen Maschinen zugeordnet sind;
    wobei die Mittel zum Bestimmen, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen, Folgendes umfassen: Mittel zum Bestimmen, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen, die zwei oder mehr virtuellen Maschinen zugeordnet sind; Mittel zum Bereitstellen einer von den zwei oder mehr virtuellen Maschinen geteilten einzigen geteilten Speicherseite, wobei die einzige geteilte Speicherseite den Inhalt der detektierten Duplikat-Speicherseiten umfasst; und Mittel zum Assoziieren einer Nur-Ausführbar-Kennung mit der einzigen geteilten Speicherseite, um die LESE-Zulassung der einzigen geteilten Speicherseite selektiv zu sperren.
  • Beispiel 33 kann Elemente beliebiger der Beispiele 31 oder 32 umfassen, wobei die Mittel zum selektiven Erfolgloswerdenlassen der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen können: Mittel zum Bestimmen, ob eine Speicherzuteilung betreffende Systemaufrufanforderung, die vom Benutzerraum empfangen wird, eine oder mehrere ausführbare Codeseiten umfasst; wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere ausführbare Codeseiten umfasst, Mittel zum Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten schreibbar sind; und wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten umfasst, Mittel zum Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 34 kann Elemente beliebiger der Beispiele 31 bis 33 umfassen, wobei die Mittel zum selektiven Erfolgloswerdenlassen der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen können: Mittel zum Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können; und wenn bestimmt wird, dass die eine oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Mittel zum Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 35 kann Elemente beliebiger der Beispiele 31 bis 34 umfassen, wobei die Mittel zum selektiven Erfolgloswerdenlassen der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen können: Mittel zum Bestimmen, ob die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite von einer Speicherungsvorrichtung auf Speicher abbildet; und wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite aus einer Speichervorrichtung auf Speicher abbildet, Mittel zum Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 36 kann Elemente beliebiger der Beispiele 31 bis 35 umfassen, wobei die Mittel zum selektiven Erfolgloswerdenlassen der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen können: Mittel zum Bestimmen, ob die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst; und wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst, Mittel zum Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
  • Beispiel 37 kann Elemente beliebiger der Beispiele 31 bis 36 umfassen, wobei die Mittel zum selektiven Erfolgloswerdenlassen der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen können: wenn bestimmt wird, dass eine oder mehrere ausführbare Codeseiten keine Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Mittel zum Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
  • Beispiel 38 kann Elemente beliebiger der Beispiele 31 bis 37 umfassen, wobei die Mittel zum selektiven Erfolgloswerdenlassen der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen können: Mittel zum Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet, wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung nicht eine oder mehrere ausführbare Codeseiten umfasst.
  • Beispiel 39 kann Elemente beliebiger der Beispiele 31 bis 38 umfassen, wobei die Mittel zum selektiven Erfolgloswerdenlassen der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) auf mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfassen können: Mittel zum Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet, wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung nicht eine oder mehrere schreibbare ausführbare Codeseiten umfasst.
  • Beispiel 40 kann Elemente beliebiger der Beispiele 31 bis 39 umfassen, wobei die Mittel zum Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, ferner Folgendes umfassen können: Mittel zum Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten eine WRPKRU-Anweisung umfassen, die den der geteilten Seite zugeordneten Schutzschlüssel ändern kann.
  • Gemäß Beispiel 41 wird ein System zum selektiven Mindern von Seitenkanalattacken unter Verwendung von Executable-Only-Speicher (XOM) bereitgestellt, wobei das System dafür ausgelegt ist, das Verfahren nach einem der Beispiele 11 bis 20 auszuführen.
  • Gemäß Beispiel 42 wird ein Chipsatz bereitgestellt, der dafür ausgelegt ist, das Verfahren nach einem der Beispiele 11 bis 20 auszuführen.
  • Gemäß Beispiel 42 wird mindestens ein nichttransitorisches maschinenlesbares Medium bereitgestellt, das mehrere Anweisungen umfasst, die, wenn sie auf einer prozessorgestützten Vorrichtung ausgeführt werden, bewirken, dass die Datenverarbeitungsvorrichtung das Verfahren nach einem der Beispiele 11 bis 20 ausführt.
  • Gemäß Beispiel 43 wird eine Vorrichtung bereitgestellt, die dafür ausgelegt ist, selektiv Seitenkanalattacken unter Verwendung von Executable-Only-Speicher (XOM) zu mindern, wobei die Vorrichtung dafür ausgelegt ist, das Verfahren nach einem der Beispiele 11 bis 20 auszuführen.
  • Die Begriffe und Ausdrücke, die hier verwendet wurden, werden als Begriffe der Beschreibung und nicht der Beschränkung verwendet, und es besteht keine Absicht beim Gebrauch solcher Begriffe und Ausdrücke etwaige Äquivalente der Merkmale, die gezeigt und beschrieben werden (oder Teile davon), auszuschließen, und es versteht sich, dass verschiedene Modifikationen innerhalb des Schutzumfangs der Ansprüche möglich sind. Die Ansprüche sollen dementsprechend alle solche Äquivalente abdecken. Es wurden hier verschiedene Merkmale, Aspekte und Ausführungsformen beschrieben. Die Merkmale, Aspekte und Ausführungsformen können miteinander kombiniert werden und auch abgewandelt und modifiziert werden, wie für Fachleute verständlich sein wird. Die vorliegende Offenbarung sollte deshalb als solche Kombinationen, Abwandlungen und Modifikationen einschließend betrachtet werden.
  • Wie hier beschrieben können verschiedene Ausführungsformen unter Verwendung von Hardwareelementen, Softwareelementen oder einer beliebigen Kombination davon implementiert werden. Beispiele für Hardwareelemente wären Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z.B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltungen, ASIC (anwendungsspezifische integrierte Schaltungen), PLD (programmierbare Logikvorrichtungen), DSP (digitale Signalprozessoren), FPGA (Field-Programmable-Gate-Arrays), Logikgatter, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter.
  • Die Erwähnung von „einer Ausführungsform“ oder „eine Ausführungsform“ in der vorliegenden Patentschrift bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform enthalten ist. Das Erscheinen der Ausdrücke „bei einer Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in der vorliegenden Patentschrift bezieht sich somit nicht unbedingt immer auf dieselbe Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Charakteristiken bei einer oder mehreren Ausführungsformen auf beliebige geeignete Weise kombiniert werden.
  • Claims (25)

    1. Seitenkanalattacken-Schutzsystem, umfassend: Steuerschaltkreise; mit den Steuerschaltkreisen gekoppelte Speicherschaltkreise; eine Speicherungsvorrichtung, die Anweisungen umfasst, die, wenn sie durch die Steuerschaltkreise ausgeführt werden, die Steuerschaltkreise veranlassen zum: selektiven Verhindern der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an einer oder mehreren geteilten Speicherseiten.
    2. Seitenkanalattacken-Schutzsystem nach Anspruch 1, wobei die Speicherschaltkreise Speicherseiten umfassen, die zwei oder mehr virtuellen Maschinen zugeordnet sind; wobei die Anweisungen bewirken, dass die Steuerschaltkreise ganz oder teilweise Schaltkreise eines Managers virtueller Maschinen (VMM) bereitstellen, zum: Detektieren von Duplikat-Speicherseiten, die den zwei oder mehr virtuellen Maschinen zugeordnet sind; Bereitstellen einer von den zwei oder mehr virtuellen Maschinen geteilten einzigen geteilten Speicherseite, wobei die einzige geteilte Speicherseite den Inhalt der detektierten Duplikat-Speicherseiten umfasst; und Assoziieren einer Nur-Ausführbar-Kennung mit der einzigen geteilten Speicherseite, um die LESE-Zulassung der einzigen geteilten Speicherseite selektiv zu sperren.
    3. Seitenkanalattacken-Schutzsystem nach Anspruch 1, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) verhindern, ferner die Steuerschaltkreise veranlassen zum: Bestimmen, ob eine Speicherzuteilung betreffende Systemaufrufanforderung, die vom Benutzerraum empfangen wird, eine oder mehrere ausführbare Codeseiten umfasst; wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere ausführbare Codeseiten umfasst, Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten schreibbar sind; und wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
    4. Seitenkanalattacken-Schutzsystem nach Anspruch 3, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenen Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) verhindern, ferner die Steuerschaltkreise veranlassen zum: Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können; und wenn bestimmt wird, dass die eine oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
    5. Seitenkanalattacken-Schutzsystem nach Anspruch 4, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) verhindern, ferner die Steuerschaltkreise veranlassen zum: Bestimmen, ob die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite von einer Speicherungsvorrichtung auf Speicher abbildet; wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite aus einer Speichervorrichtung auf Speicher abbildet, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
    6. Seitenkanalattacken-Schutzsystem nach Anspruch 5, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) verhindern, ferner die Steuerschaltkreise veranlassen zum: Bestimmen, ob die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst; wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
    7. Seitenkanalattacken-Schutzsystem nach Anspruch 4, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) verhindern, ferner die Steuerschaltkreise veranlassen zum: wenn bestimmt wird, dass eine oder mehrere ausführbare Codeseiten keine Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
    8. Seitenkanalattacken-Schutzsystem nach Anspruch 3, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) verhindern, ferner die Steuerschaltkreise veranlassen zum: wenn bestimmt wird, dass die empfangene Speicherzuteilung Systemaufrufanforderung nicht eine oder mehrere ausführbare Codeseiten umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
    9. Seitenkanalattacken-Schutzsystem nach Anspruch 3, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) verhindern, ferner die Steuerschaltkreise veranlassen zum: wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten nicht umfasst, bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
    10. Seitenkanalattacken-Schutzsystem nach Anspruch 4, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die den der geteilten Seite zugeordneten Schutzschlüssel ändern können, die Steuerschaltkreise ferner veranlassen zum: Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten eine WRPKRU-Anweisung umfassen, die den der geteilten Seite zugeordneten Schutzschlüssel ändern kann.
    11. Seitenkanalattacken-Schutzverfahren, umfassend: Bestimmen durch die Steuerschaltkreise, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen; und wenn bestimmt wird, dass die Speicherseiten-Zugriffsanforderung auf eine geteilte Speicherseite zugreift, selektives Verhindern der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten.
    12. Seitenkanalattacken-Schutzsystem nach Anspruch 11, ferner umfassend: Detektieren durch Schaltkreise des Managers virtueller Maschinen (VMM) von Duplikat-Speicherseiten, die den zwei oder mehr virtuellen Maschinen zugeordnet sind; wobei Bestimmen durch Steuerschaltkreise, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen, Folgendes umfasst: Bestimmen durch Steuerschaltkreise, ob eine Speicherseiten-Zugriffsanforderung versucht, auf eine oder mehrere geteilte Speicherseiten zuzugreifen, die zwei oder mehr virtuellen Maschinen zugeordnet sind; Bereitstellen einer von den zwei oder den mehr virtuellen Maschinen geteilten einzigen geteilten Speicherseite durch die VMM-Schaltkreise, wobei die einzige geteilte Speicherseite den Inhalt der detektierten Duplikat-Speicherseiten umfasst; und Assoziieren einer Nur-Ausführbar-Kennung mit der einzigen geteilten Speicherseite durch die VMM-Schaltkreise, um die LESE-Zulassung der einzigen geteilten Speicherseite selektiv zu sperren.
    13. Seitenkanalattacken-Schutzsystem nach Anspruch 11, wobei selektives Verhindern der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfasst: Bestimmen durch die Steuerschaltkreise, ob eine Speicherzuteilung betreffende Systemaufrufanforderung, die vom Benutzerraum empfangen wird, eine oder mehrere ausführbare Codeseiten umfasst; wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere ausführbare Codeseiten umfasst, Bestimmen durch die Steuerschaltkreise, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten schreibbar sind; und wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten umfasst, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
    14. Seitenkanalattacken-Schutzsystem nach Anspruch 13, wobei selektives Verhindern der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfasst: Bestimmen durch die Steuerschaltkreise, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können; und wenn bestimmt wird, dass die eine oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
    15. Seitenkanalattacken-Schutzsystem nach Anspruch 14, wobei selektives Verhindern der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfasst: Bestimmen durch die Steuerschaltkreise, ob die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite von einer Speicherungsvorrichtung auf Speicher abbildet; wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite aus einer Speichervorrichtung auf Speicher abbildet, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
    16. Seitenkanalattacken-Schutzsystem nach Anspruch 15, wobei selektives Verhindern der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfasst: Bestimmen durch die Steuerschaltkreise, ob die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst; wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung nur eine Speicherseiten-Zuteilungsanforderung umfasst, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
    17. Seitenkanalattacken-Schutzsystem nach Anspruch 14, wobei selektives Verhindern der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfasst: wenn bestimmt wird, dass eine oder mehrere ausführbare Codeseiten keine Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
    18. Seitenkanalattacken-Schutzsystem nach Anspruch 13, wobei selektives Verhindern der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfasst: wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung nicht eine oder mehrere ausführbare Codeseiten umfasst, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
    19. Seitenkanalattacken-Schutzsystem nach Anspruch 13, wobei selektives Verhindern der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an mindestens einer der einen oder mehreren geteilten Speicherseiten ferner Folgendes umfasst: wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten nicht umfasst, Bewirken durch die Steuerschaltkreise, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
    20. Seitenkanalattacken-Schutzsystem nach Anspruch 14, wobei Bestimmen, ob eine beliebige der einen oder der mehreren ausführbaren Codeseiten Anweisungen umfasst, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, ferner Folgendes umfasst: Bestimmen durch die Steuerschaltkreise, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten eine WRPKRU-Anweisung umfassen, die den der geteilten Seite zugeordneten Schutzschlüssel ändern kann.
    21. Nichttransitorisches maschinenlesbare Speicherungsmedium, das Anweisungen speichert, die, wenn sie durch die Steuerschaltkreise ausgeführt werden, die Steuerschaltkreise zu Folgendem veranlassen: selektivem Verhindern der Ausführung einer Anweisung des Cache-Linien-Ausräumens (CLFLUSH) an einer oder mehreren geteilten Speicherseiten.
    22. Nichttransitorisches maschinenlesbares Speicherungsmedium nach Anspruch 21, wobei die Anweisungen ferner die Steuerschaltkreise ganz oder teilweise veranlassen zum: Detektieren von zwei oder mehr virtuellen Maschinen zugeordneten Duplikat-Speicherseiten über Schaltkreise eines Managers virtueller Maschinen; Bereitstellen einer von den zwei oder mehr virtuellen Maschinen geteilten einzigen geteilten Speicherseite über die Schaltkreise des Managers virtueller Maschinen, wobei die einzige geteilte Speicherseite den Inhalt der detektierten Duplikat-Speicherseiten umfasst; und Assoziieren einer Nur-Ausführbar-Kennung mit der einzigen geteilten Speicherseite, um die LESE-Zulassung der einzigen geteilten Speicherseite selektiv zu sperren.
    23. Nichttransitorisches maschinenlesbares Speicherungsmedium nach Anspruch 21, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) verhindern, ferner die Steuerschaltkreise veranlassen zum: Bestimmen, ob eine Speicherzuteilung betreffende Systemaufrufanforderung, die vom Benutzerraum empfangen wird, eine oder mehrere ausführbare Codeseiten umfasst; wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere ausführbare Codeseiten umfasst, Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten schreibbar sind; und wenn bestimmt wird, dass die empfangene Speicherzuteilung betreffende Systemaufrufanforderung eine oder mehrere schreibbare ausführbare Codeseiten umfasst, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
    24. Nichttransitorisches maschinenlesbares Speicherungsmedium nach Anspruch 23, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) verhindern, ferner die Steuerschaltkreise veranlassen zum: Bestimmen, ob irgendwelche der einen oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können; und wenn bestimmt wird, dass die eine oder mehreren ausführbaren Codeseiten Anweisungen umfassen, die einen einer geteilten Seite zugeordneten Schutzschlüssel ändern können, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung abbricht.
    25. Nichttransitorisches maschinenlesbares Speicherungsmedium nach Anspruch 24, wobei die Anweisungen, die bewirken, dass die Steuerschaltkreise auf der Basis von in der geteilten Speicherseite enthaltenem Code selektiv Ausführung der Anweisung des Cache-Linien-Ausräumens (CLFLUSH) verhindern, ferner die Steuerschaltkreise veranlassen zum: Bestimmen, ob die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite von einer Speicherungsvorrichtung auf Speicher abbildet; wenn bestimmt wird, dass die Speicherzuteilung betreffende Systemaufrufanforderung eine Seite aus einer Speichervorrichtung auf Speicher abbildet, Bewirken, dass die Speicherzuteilung betreffende Systemaufrufanforderung voranschreitet.
    DE102019121577.3A 2018-09-28 2019-08-09 Mindern von seitenkanalattacken unter verwendung von executable-only-speicher (xom) Pending DE102019121577A1 (de)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    US16/145,635 2018-09-28
    US16/145,635 US11366895B2 (en) 2018-09-28 2018-09-28 Mitigating side-channel attacks using executable only memory (XOM)

    Publications (1)

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

    Family

    ID=65229979

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102019121577.3A Pending DE102019121577A1 (de) 2018-09-28 2019-08-09 Mindern von seitenkanalattacken unter verwendung von executable-only-speicher (xom)

    Country Status (3)

    Country Link
    US (1) US11366895B2 (de)
    CN (1) CN110968863A (de)
    DE (1) DE102019121577A1 (de)

    Families Citing this family (1)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    CN112395607B (zh) * 2020-11-30 2024-05-07 中国信息安全测评中心 一种侧信道分析方法及装置

    Family Cites Families (11)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US5940850A (en) * 1996-10-31 1999-08-17 International Business Machines Corporation System and method for selectively enabling load-on-write of dynamic ROM data to RAM
    US7836504B2 (en) * 2005-03-01 2010-11-16 Microsoft Corporation On-access scan of memory for malware
    US8874854B2 (en) * 2007-07-30 2014-10-28 International Business Machines Corporation Method for selectively enabling and disabling read caching in a storage subsystem
    US20110239291A1 (en) * 2010-03-26 2011-09-29 Barracuda Networks, Inc. Detecting and Thwarting Browser-Based Network Intrusion Attacks For Intellectual Property Misappropriation System and Method
    US9436603B1 (en) * 2014-02-27 2016-09-06 Amazon Technologies, Inc. Detection and mitigation of timing side-channel attacks
    US10489309B2 (en) * 2014-10-21 2019-11-26 Intel Corporation Memory protection key architecture with independent user and supervisor domains
    US20160210069A1 (en) * 2015-01-21 2016-07-21 Bitdefender IPR Management Ltd. Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
    US10083129B2 (en) * 2016-08-29 2018-09-25 Red Hat Israel, Ltd. Code loading hardening by hypervisor page table switching
    US20180081830A1 (en) * 2016-09-20 2018-03-22 Advanced Micro Devices, Inc. Hardware supervision of page tables
    US10902123B2 (en) * 2018-07-30 2021-01-26 Mcafee, Llc Remediation of flush reload attacks
    US11068612B2 (en) * 2018-08-01 2021-07-20 International Business Machines Corporation Microarchitectural techniques to mitigate cache-based data security vulnerabilities

    Also Published As

    Publication number Publication date
    US11366895B2 (en) 2022-06-21
    US20190042735A1 (en) 2019-02-07
    CN110968863A (zh) 2020-04-07

    Similar Documents

    Publication Publication Date Title
    DE102020125599A1 (de) Vertrauenswürdige lokale speicherverwaltung in einer virtualisierten gpu
    DE102011082184A1 (de) Sicherheitsschutz für Speicherinhalt von Prozessorhauptspeicher
    DE102019109357A1 (de) Selektive ausführung von cache-linien-ausräumoperationen
    US10628613B2 (en) Cryptographic operations for secure page mapping in a virtual machine environment
    DE102013111339A1 (de) Sicherheitsverwaltungseinheit, Hostcontrollerschnittstelle mit derselben, Verfahren zum Betreiben einer Hostcontrollerschnittstelle und Vorrichtungen mit einer Hostcontrollerschnittstelle
    DE102018115491A1 (de) System, vorrichtung und verfahren zur seitengranularen, softwaregesteuerten speicherverschlüsselung mit mehreren schlüsseln
    DE112005003340B4 (de) Mechanismus zum Bestimmen der Vertrauenswürdigkeit von Außerbandverwaltungsagenten
    DE112016004476T5 (de) Technologien für einen nur-ausführungs-transaktionsarbeitsspeicher
    DE102019110327A1 (de) Technologien zum verifizieren von speicherintegrität über mehrere speicherbereiche hinweg
    DE112016002285T5 (de) Adressvalidierung unter verwendung von signaturen
    DE102018123710A1 (de) Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud
    DE102020208234A1 (de) Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung
    DE112016006003T5 (de) Vertrauenswürdiger Start sicherer Enklaven in virtuellen Umgebungen
    DE112017004980T5 (de) Technologien für objektorientiertes speichermanagement mit erweiterter segmentierung
    DE112010004885T5 (de) Bereitstellen von Integritätsüberprüfung und -bestätigung in einer verborgenen Ausführungsumgebung
    DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
    DE102013114953B4 (de) System-on-Chip mit eingebettetem Sicherheitsmodul
    DE102019108266A1 (de) Techniken zum bereitstellen von isolation auf funktionsebene mit auf fähigkeit basierender sicherheit
    DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
    DE102018115670A1 (de) Technologien für die Ausführung von nicht vertrauenswürdigem Code mit Prozessor-Sandbox-Unterstützung
    DE102012200613A1 (de) System und Verfahren zur Unterstützung von JIT in einem sicheren System und zufällig zugewiesenen Speicherbereichen
    DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
    DE102020127800A1 (de) Ein-chip-system und verfahren zu dessen betrieb
    DE102010054614A1 (de) Eindringen in eine gesicherte EDV-Umgebung unter Verwendung mehrerer authentifizierter Codemodule
    DE102021128529A1 (de) Sichere adressübersetzungsdienste mit bundle-zugriffskontrolle