-
Hintergrund
-
Ein elektronisches Gerät umfasst typischerweise eine Speichervorrichtung, um Daten zu speichern. Die Speichervorrichtung kann eine flüchtige Speichervorrichtung sein, die verwendet wird, um vorübergehend verschiedene Datentypen zu speichern, einschließlich Nutzer- oder Anwendungsdaten, maschinenlesbare Anweisungen usw. Alternativ kann die Speichervorrichtung eine Permanentspeichervorrichtung sein, wie z. B. eine plattenbasierte Speichervorrichtung oder eine nichtflüchtige Speichervorrichtung. Die Daten, die in einer Speichervorrichtung gespeichert sind, können empfindliche oder vertrauenswürdige Daten umfassen, wie z. B. Sicherheitsschlüssel, Nutzerberechtigungsnachweise, Finanzinformationen, persönliche Informationen usw. Falls das elektronische Gerät gestohlen wird oder anderweitig auf unbefugte Weise auf dasselbe zugegriffen wird, kann ein Hacker versuchen, den Inhalt der Speichervorrichtung wiederzugewinnen, um empfindliche oder vertrauenswürdige Informationen zu erhalten, die in der Speichervorrichtung gespeichert sind.
-
Kurze Beschreibung der Zeichnungen
-
Einige Ausführungsbeispiele sind mit Bezugnahme auf die folgenden Zeichnungen beschrieben:
-
1 und 2 sind Blockdiagramme von beispielhaften Anordnungen, die einige Ausführungsbeispiele umfassen; und
-
3 und 4 sind Flussdiagramme von Prozessen zum Schützen von Inhalt einer Speichervorrichtung gemäß einigen Ausführungsbeispielen.
-
Detaillierte Beschreibung
-
Gemäß einigen Implementierungen sind Techniken oder Mechanismen vorgesehen, um Inhalt einer Speichervorrichtung in einem elektronischen Gerät zu schützen, das ein Computer, ein Personaldigitalassistent, eine Elektronikvorrichtung, ein Speicherungsserver, ein Mobiltelefon oder ein anderer Elektronikgerättyp sein kann. Bei einigen Beispielen kann die Speichervorrichtung eine flüchtige Speichervorrichtung sein, die mit Dynamischer-Direktzugriffsspeicher-(DRAM-) oder Statischer-Direktzugriffsspeicher-(SRAM-)Technologie implementiert ist. Bei alternativen Beispielen kann die Speichervorrichtung eine nichtflüchtige Speichervorrichtung sein, wie z. B. eine Flash-Speichervorrichtung. Als weitere Beispiele kann die Speichervorrichtung eine plattenbasierte Speichervorrichtung sein, wie z. B. ein Festplattenlaufwerk oder ein optisches Plattenlaufwerk. Bei anderen Beispielen können andere Speichervorrichtungstypen verwendet werden.
-
1 zeigt eine beispielhafte Anordnung, die einen Speichervorrichtungsanforderer 102, eine Speichervorrichtungssteuerung 104 (versehen mit Datenschutzmechanismen gemäß einigen Implementierungen) und eine Speichervorrichtung 106 umfasst. Der Speichervorrichtungsanforderer 102 ist in der Lage, auf den Inhalt der Speichervorrichtung 106 durch die Speichervorrichtungssteuerung 104 zuzugreifen (zu lesen oder zu schreiben). Beispiele des Speichervorrichtungsanforderers 102 umfassen einen Prozessor, eine Eingabe/Ausgabe-(I/O-)Steuerung oder einen anderen Anforderertyp.
-
Ein Speichervorrichtungsbus 108 verbindet die Speichervorrichtungssteuerung 104 und die Speichervorrichtung 106. Der Speichervorrichtungsbus 108 umfasst einen Steuerabschnitt (zum Tragen von Steuersignalen), einen Adressabschnitt (zum Tragen von Adresssignalen) und einen Datenabschnitt (zum Tragen von Daten, die von der Speichervorrichtung 106 gelesen oder auf dieselbe geschrieben werden). Die Steuer-, Adress- und Datenabschnitte des Busses 108 sind als ein Beispiel getrennt gezeigt. Verschiedene Implementierungen könnten diese als getrennte Verbindungen aufweisen, aber die Abschnitte können auch gemultiplext werden, oder auf gemeinsamen Bussignalen gesendet werden, usw. Außerdem können die Steuer-, Adress- und/oder Datenabschnitte als verdrahtete oder drahtlose Verbindungen implementiert sein. Bei drahtlosen Implementierungen werden die Steuer-, Adress- und/oder Datenabschnitte unter Verwendung eines drahtlosen Protokolls übertragen.
-
Wie es in 1 gezeigt ist, kann die Speichervorrichtungssteuerung 104 eine Speichervorrichtungsadresse 110 bereitstellen, um auf eine Stelle der Speichervorrichtung 106 zuzugreifen. Für eine Schreiboperation können Schreibdaten 112 an die Speichervorrichtung 106 bereitgestellt werden, und für eine Leseoperation können Lesedaten 114 von der Speichervorrichtung 106 wieder gewonnen werden. Um Inhalte der Speichervorrichtung 106 zu schützen, umfassen Schreibdaten 112, die von der Speichervorrichtungssteuerung 104 an die Speichervorrichtung 106 gesendet werden, verschlüsselte Schreibdaten. Falls Daten von einer Stelle der Speichervorrichtung 106 gelesen werden, die durch Verschlüsselung geschützt ist, sind die entsprechenden Lesedaten 114 verschlüsselte Lesedaten.
-
Für einen weiteren Schutz des Inhalts der Speichervorrichtung 106 kann die Speichervorrichtungsadresse 110 eine verwürfelte Adresse sein. Es ist anzumerken, dass nicht alle Stellen in der Speichervorrichtung 106 durch Datenverschlüsselung und Adressverwürfelung geschützt werden müssen – bei einigen Beispielen werden bestimmte Stellen der Speichervorrichtung 106 keiner Datenverschlüsselung und/oder Adressverwürfelung unterzogen. Beispielsweise können Datenverschlüsselung und/oder Adressverwürfelung für spezifische Speicherstellen selektiv aktiviert oder deaktiviert werden. Das selektive Aktivieren/Deaktivieren von Datenverschlüsselung und/oder Adressverwürfelung kann erreicht werden durch Aufnehmen eines Befehlsfelds mit einem Speicherzugriffsbefehl, um zu spezifizieren, ob die entsprechende Speicherstelle durch Datenverschlüsselung und/oder Adressverwürfelung zu schützen ist oder nicht. Alternativ können andere Mechanismen verwendet werden zum selektiven Aktivieren/Deaktivieren von Datenverschlüsselung und/oder Adressverwürfelung für spezifische Speicherstellen, wie z. B. durch die Verwendung von Konfigurationsinformationen, einer Anwendungs-Programmier-Schnittstelle (API; API = application programming interface) usw.
-
Die Verwendung sowohl von Adressverwürfelung als auch Datenverschlüsselung schafft einen verbesserten Schutzpegel für Daten, die in der Speichervorrichtung 106 gespeichert sind. Auf diese Weise ist die Wahrscheinlichkeit reduziert, dass ein Hacker in der Lage ist, Inhalt geschützter Daten in der Speichervorrichtung wiederzugewinnen. Bei dem Versuch, Daten von der Speichervorrichtung 106 wiederzugewinnen, kann der Hacker das Elektronikgerät stehlen, die Speichervorrichtung 106 von dem Elektronikgerät entfernen oder anderweitig unbefugten Zugriff zu der Speichervorrichtung 106 (entweder physikalisch oder elektronisch) erlangen.
-
Obwohl 1 nur eine Speichervorrichtungssteuerung 104 zeigt, die mit Datenschutzmechanismen implementiert ist, um Daten in der Speichervorrichtung 106 zu schützen, ist anzumerken, dass es (eine) zusätzliche Speichervorrichtungssteuerung(en) mit ähnlichen Datenschutzmechanismen für (eine) andere Speichervorrichtung(en) geben kann.
-
Die Speichervorrichtungssteuerung 104 umfasst ein Verschlüsselungsmodul 116, um (unverschlüsselte) Schreibdaten zu verschlüsseln, und ein Entschlüsselungsmodul 118, um verschlüsselte Lesedaten 114 zu entschlüsseln. Das Entschlüsselungsmodul 118 gibt entschlüsselte Lesedaten aus.
-
Sowohl das Verschlüsselungsmodul 116 als auch das Entschlüsselungsmodul 118 ist mit einem Verschlüsselungsschlüssel versehen, um die jeweilige Verschlüsselung oder Entschlüsselung durchzuführen. Der Verschlüsselungsschlüssel kann auf einem Datenschlüssel 120 basieren, der in der Schlüsselspeicherung 122 gespeichert ist. Alternativ kann der Datenschlüssel, der an das Verschlüsselungsmodul 116 und das Entschlüsselungsmodul 118 geliefert wird, ein gemischter Schlüssel sein, der durch einen Schlüsselmischer 124 ausgegeben wird. Der Schlüsselmischer 124 mischt einen Datenschlüssel 120 von der Schlüsselspeicherung 122 mit Adressinformationen, um den gemischten Schlüssel auszugeben. Das Mischen des Datenschlüssels mit den Adressinformationen kann eine Exklusiv-Oder-Verknüpfung des Datenschlüssels und der Adressinformationen sein. Bei anderen Implementierungen können andere Mischtypen des Datenschlüssels und der Adressinformationen verwendet werden. Es ist anzumerken, dass die Darstellung des Schlüsselmischers 124 in 1 in gestricheltem Profil bedeutet, dass der Schlüsselmischer 124 bei einigen Beispielen in der Speichervorrichtungssteuerung 104 nicht vorgesehen ist.
-
Die Verschlüsselung, die durch das Verschlüsselungsmodul 116 angewendet wird, kann eine von verschiedenen Verschlüsselungstypen sein. Beispielsweise kann eine schnelle Verschlüsselungstechnik eine Exklusiv-Oder-(XOR-)Technik sein, bei dem ein Verschlüsselungsschlüssel mit Schreibdaten Exklusiv-Oder-verknüpft wird. Ein Vorteil der Verwendung der XOR-basierten Verschlüsselungstechnik ist, dass dieselbe relativ schnell ist und relativ schnelle Zugriffsgeschwindigkeiten der Speichervorrichtung 106 unterstützen kann, ohne den Lese- und Schreibwegen Verzögerung hinzuzufügen.
-
Das Verschlüsselungsmodul 116 kann somit die folgende Exklusiv-Oder-Operation anlegen: A ⊗ K = C, wobei A die eingegebenen Klartextdaten (Schreibdaten) darstellt, die XOR-verknüpft werden mit dem Verschlüsselungsschlüssel K (Datenschlüssel 120 oder gemischter Schlüssel), um verschlüsselte Schreibdaten (C) zu erzeugen.
-
Um Entschlüsselung durchzuführen, können die verschlüsselten Lesedaten (C) XOR-verknüpft werden mit dem Verschlüsselungsschlüssel K, um den ursprünglichen Klartext (A) wiederzugewinnen, gemäß C ⊗ K = A.
-
Bei alternativen Implementierungen kann statt der Verwendung der XOR-basierten Verschlüsselungstechnik eine Verschlüsselungstechnik höherer Ebene verwendet werden. Beispielsweise kann die Verschlüsselung höherer Ebene eine AES-Verschlüsselung sein (AES = advanced encryption standard = hoch entwickelter Verschlüsselungsstandard). Der AES-Verschlüsselungsschlüssel ist schwieriger zu hacken als ein Schlüssel, der in XOR-Verschlüsselung verwendet wird. AES-Verschlüsselung kann jedoch mit erhöhter Schaltungskomplexität verbunden sein (da mehr Schaltungen verwendet werden müssen, um AES-Verschlüsselung zu implementieren), was zu erhöhten Zugriffszeiten oder erhöhten Komplexität beim Adressieren des Problems erhöhter Zugriffszeit führen kann, die beim Durchführen von AES-Verschlüsselung verwendet wird. Bei anderen Beispielen können andere Verschlüsselungstypen höherer Ebene verwendet werden.
-
In dem Schlüsselmischer 124 können die Adressinformationen, die mit dem Datenschlüssel 120 gemischt sind, eines oder eine Kombination der Folgenden umfassen: (1) zumindest einen Teil einer anfänglichen (nicht verwürfelten) physikalischen Adresse, die durch den Speichervorrichtungsanforderer 102 bereitgestellt wird, (2) zumindest einen Teil einer verwürfelten physikalischen Adresse, und (3) zumindest einen Teil virtueller Adressinformationen (verwürfelte virtuelle Adresse oder nicht verwürfelte virtuelle Adresse). Eine „virtuelle Adresse” bezieht sich auf eine logische Adresse, die Teil eines virtuellen Adressraums ist, der typischerweise durch Komponenten höherer Ebene eines elektronischen Geräts verwendet wird, wie z. B. ein Betriebssystem oder ein Dateisystem. Der virtuelle Adressraum ist typischerweise größer als der physikalische Adressraum, der die tatsächlichen verfügbaren Speicherstellen in der Speichervorrichtung 106 definiert.
-
Jeder Datenschlüssel 120, der in der Schlüsselspeicherung 122 gespeichert ist, kann ein zufällig erzeugter Schlüssel sein, der durch die Speichervorrichtungssteuerung 104 selbst erzeugt werden kann oder durch eine Komponente außerhalb der Speichervorrichtungssteuerung 104. Beispielsweise kann ein Datenschlüssel durch einen Systembootcode erzeugt werden, wie z. B. einen BIOS-Code (BIOS = basic input/output system = Basiseingabe/ausgabesystem), der verschiedene Initialisierungsfunktionen durchführt, wenn ein elektronisches Gerät zuerst gestartet wird. Alternativ kann der Datenschlüssel durch eine Verwaltungsmaschine erzeugt werden, die Teil des Chipsatzes eines elektronischen Geräts ist. Als noch weitere Alternative kann der Datenschlüssel basierend auf Nutzereingabe erzeugt werden. Als weiteres Beispiel kann der Datenschlüssel durch einen Prozessor, ein vertrauenswürdiges Plattformmodul oder eine andere Komponente erzeugt werden. Der Datenschlüssel kann auch über eine Netzwerkverbindung oder einen Verwaltungsbus empfangen werden, mit dem das elektronische Gerät verbunden ist. Allgemein wird der Datenschlüssel erzeugt ohne Daten zu verwenden, die durch Rückentwickeln einer Komponente in dem elektronischen Gerät entdeckt werden können.
-
Zufallsdatenschlüssel können basierend auf der Ausgabe eines Zufallszahlgenerators erzeugt werden. Außerdem oder alternativ können Zufallsdatenschlüssel erzeugt werden basierend auf Daten und/oder Zeit. Um die Sicherheit zu erhöhen, ändert sich der Datenschlüssel, der verwendet wird, um jeweils die Verschlüsselung und Entschlüsselung durch das Verschlüsselungsmodul 116 und Entschlüsselungsmodul 118 durchzuführen, mit jeder System-Rücksetzung oder jedem System-Neustart. Alternativ kann ein anderer Datenschlüssel erzeugt werden, wenn das Elektronikgerät wieder fortfährt von einem Zustand niedrigerer Leistung, wie z. B. einem Standby-Zustand, einem Ruhezustand oder einem anderen Zustand niedrigerer Leistung. Als noch eine weitere Alternative können Verschlüsselungsauffrischzyklen verwendet werden, bei dem bei jedem neuen Verschlüsselungsauffrischzyklus ein neuer Datenschlüssel erzeugt wird.
-
Die Schlüsselspeicherung 122 ist eine flüchtige Speichervorrichtung, die auf den Verlust oder die Entfernung von Leistung hin ihren Inhalt verliert. Die Schlüsselspeicherung 122 kann beispielsweise ein Register in der Speichervorrichtungssteuerung 104 sein, oder alternativ kann die Schlüsselspeicherung 122 Teil der Speichervorrichtung 106 sein. Die Schlüsselspeicherung 122 kann eine Nur-Schreib/einmal beschreibbare Speichervorrichtung (z. B. Register) sein, die ansprechend auf ein vordefiniertes Ereignis zurückgesetzt wird, wie z. B. das Elektronikgerät wird abgeschaltet, zurückgesetzt, tritt in einen N Zustand niedrigerer Leistung ein, beginnt einen neuen Verschlüsselungsauffrischzyklus, usw. Eine Nur-Schreib-Speichereinrichtung bedeutet, dass die Schlüsselspeicherung 122 nicht durch eine Komponente außerhalb der Speichervorrichtungssteuerung 104 gelesen werden kann, und eine einmal beschreibbare Speichereinrichtung bedeutet, dass die Schlüsselspeicherung 122 während jedes vordefinierten Intervalls nur einmal beschrieben kann (z. B. während der Ein-Zeit eines elektronischen Geräts zwischen Rücksetzungen, Neustarts oder Leistungszyklen; während eines bestimmten Auffrischzyklusintervalls; usw.).
-
Wie es oben angemerkt wurde, kann die Speichervorrichtungsadresse 110, die durch die Speichervorrichtungssteuerung 104 bereitgestellt wird, um auf eine Position in der Speichervorrichtung 106 zuzugreifen, eine verwürfelte Adresse sein. Das Verwenden von Adressverwürfelung ermöglicht eine zusätzliche Schutzschicht zu dem Schutz, der durch das Verschlüsseln von Daten bereitgestellt wird, die in der Speichervorrichtung 106 gespeichert sind. Wie angemerkt kann Adressverwürfelung bei einigen Beispielen durch den Adressverwürfler 126 in der Speichervorrichtungssteuerung 104 durchgeführt werden.
-
Bei alternativen Ausführungsbeispielen kann statt dem Bereitstellen des Adressverwürflers 126 in der Speichervorrichtungssteuerung 104 der Adressverwürfler 128 als Teil des Speichervorrichtungsanforderers 104 vorgesehen sein oder alternativ kann der Adressverwürfler 128 zwischen dem Speichervorrichtungsanforderer 102 und der Speichervorrichtungssteuerung 104 vorgesehen sein (anders ausgedrückt, der Adressverwürfler kann in einer Komponente vorgesehen sein, die von dem Speichervorrichtungsanforderer 102 und der Speichervorrichtungssteuerung 104 getrennt ist).
-
Verwürfeln einer Anfangsadresse kann durchgeführt werden unter Verwendung einer von verschiedenen Techniken. Beispielsweise können Adressbits der Anfangsadresse umgeändert werden. Alternativ kann eine Anfangsadresse verwürfelt werden durch Verwenden eines Schlüssels, wie z. B. eines zufällig erzeugten Schlüssels. Der Schlüssel zum Verwürfeln der Adresse kann ein Datenschlüssel 120 (gespeichert in der Schlüsselspeicherung 122) oder ein anderer Schlüssel sein. Der Schlüssel kann mit der Anfangsadresse gemischt werden oder anderweitig an dieselbe angelegt werden, um die verwürfelte Adresse zu erzeugen. Alternativ kann Adressverwürfelung durchgeführt werden durch Hashcodieren der Anfangsadresse, um einen Hashwert zu erzeugen, der die verwürfelte Adresse darstellt. Als noch eine weitere Alternative kann eine Datenstruktur, wie z. B. eine Tabelle, gespeichert werden, um eingegebene Anfangsadressen auf Ausgangsadressen abzubilden, wo die Ausgangsadressen als die verwürfelten Adressen angesehen werden. Andere Techniken können bei anderen Implementierungen verwendet werden.
-
Bei Implementierungen, wo ein Schlüssel verwendet wird, um eine Adresse zu verwürfeln, kann es verschiedene mögliche Szenarien geben (von denen einige nachfolgend aufgeführt werden). Bei einem ersten Szenario kann der Adressverwürfler 126 oder 128 eine anfängliche physikalische Adresse verwürfeln, um unter Verwendung eines Datenschlüssels 120 eine verwürfelte Adresse zu bilden. Der Schlüsselmischer 124 mischt die anfängliche physikalische Adresse mit dem Datenschlüssel 120, um einen gemischten Schlüssel zu bilden, und der gemischte Schlüssel kann durch das Verschlüsselungsmodul 116 und das Entschlüsselungsmodul 118 verwendet werden, um Daten zu verschlüsseln bzw. zu entschlüsseln.
-
Ein zweites Szenario umfasst den Adressverwürfler 126 oder 128, der eine anfängliche physikalische Adresse mit einem Adressschlüssel verwürfelt, der sich von einem Datenschlüssel 120 unterscheidet. Die anfängliche physikalische Adresse wird durch den Schlüsselmischer 124 mit dem Datenschlüssel 120 gemischt, um einen gemischten Schlüssel zu bilden, der verwendet wird, um Daten zu verschlüsseln oder zu entschlüsseln.
-
Bei einem dritten Szenario kann der Adressverwürfler 126 oder 128 eine anfängliche physikalische Adresse verwürfeln unter Verwendung einer anderen Technik als einer Technik, die zum Verschlüsseln von Daten verwendet wird. Beispielsweise wird eine erste Verschlüsselungstechnik verwendet, um die anfängliche physikalische Adresse mit einem Schlüssel (Datenschlüssel oder Adressschlüssel, der sich von dem Datenschlüssel unterscheidet) zu verwürfeln, um die verwürfelte Adresse zu bilden, während eine zweite Verschlüsselungstechnik verwendet wird, um Schreibdaten mit einem Datenschlüssel (statt eines gemischten Schlüssels) zu verschlüsseln, um verschlüsselte Schreibdaten auszugeben.
-
Bei einem vierten Szenario kann eine verwürfelte Adresse erzeugt werden unter Verwendung eines Adressschlüssels, der sich von einem Datenschlüssel unterscheidet. Die verwürfelte Adresse wird mit dem Datenschlüssel gemischt, um einen gemischten Schlüssel zu bilden, um Schreibdaten zu verschlüsseln.
-
Bei einem fünften Szenario kann eine verwürfelte Adresse unter Verwendung eines Datenschlüssels erzeugt werden. Die verwürfelte Adresse wird mit dem Datenschlüssel gemischt, um einen gemischten Schlüssel zu bilden, um Schreibdaten zu verschlüsseln.
-
Bei einem sechsten Szenario kann eine verwürfelte Adresse erzeugt werden unter Verwendung einer Verschlüsselungstechnik, die sich von der Verschlüsselungstechnik unterscheidet, die zum Verschlüsseln von Schreibdaten verwendet wird. Bei diesem Szenario wird statt eines gemischten Schlüssels ein Datenschlüssel verwendet, um die Daten zu verschlüsseln.
-
Bei einem siebten Szenario kann eine anfängliche physikalische Adresse verwürfelt werden, um eine verwürfelte Adresse zu bilden, aber eine virtuelle Adresse (oder verwürfelte virtuelle Adresse) kann mit einem Datenschlüssel gemischt werden, um den gemischten Schlüssel zum Verschlüsseln der Schreibdaten bereitzustellen. Eine Variante dieses Szenarios ist es, die virtuelle Adresse (oder eine verwürfelte virtuelle Adresse) als den Datenschlüssel zu verwenden, um Schreibdaten zu verschlüsseln.
-
Es kann zahlreiche andere Szenarien geben. Darüber hinaus können einige Szenarien Kombinationen von mehreren der obigen Szenarien umfassen.
-
2 zeigt eine weitere beispielhafte Anordnung, die eine Speichersteuerung 202 umfasst, die mit einer Speichervorrichtung 204 verbunden ist (es ist anzumerken, dass bei unterschiedlichen Beispielen die Speichersteuerung 202 durch eine Speichervorrichtungssteuerung ersetzt werden kann, während die Speichervorrichtung 204 durch eine Speichervorrichtung ersetzt wird). Die Speichersteuerung 202 implementiert Speicherschutzmechanismen (ähnlich den oben angemerkten), um Daten zu schützen, die in der Speichervorrichtung 204 zu speichern sind. Die Speichervorrichtung 204 kann eine einzige Vorrichtung darstellen oder eine Kombination mehrerer Vorrichtungen (z. B. einen einzelnen Speicherchip oder mehrere Speicherchips, oder ein einzelnes Speichermodul oder mehrere Speichermodule). Es ist anzumerken, dass die Implementierungen gemäß 2 kein Schlüsselmischen verwenden, um einen Datenschlüssel mit Adressinformationen zu mischen, um einen gemischten Schlüssel zu bilden, um Schreibdaten zu verschlüsseln.
-
Bei alternativen Implementierungen kann ein Schlüsselmischer, wie z. B. der Schlüsselmischer 124 von 1, zu der Speichersteuerung 202 von 2 hinzugefügt werden.
-
Die Speicherschutzmechanismen, die durch die Speichersteuerung 202 implementiert werden, umfassen einen Datenverschlüsselungsmechanismus, um Schreibdaten zu verschlüsseln, die in der Speichervorrichtung 204 zu speichern sind. Der Speicherschutzmechanismus der Speichersteuerung 202 kann auch einen Adressverwürfler 224 umfassen, um eine Adresse zu verwürfeln, die eine Stelle in der Speichervorrichtung 204 spezifiziert.
-
2 zeigt ferner einen Anforderer 206 (z. B. Prozessor, I/O-Steuerung usw.), der mit der Speichersteuerung 202 gekoppelt ist. Der Anforderer 206 ist in der Lage, die Lese- oder Schreibanforderungen an die Speichersteuerung 202 auszugeben, um Daten in der Speichervorrichtung 204 zu lesen oder zu schreiben.
-
Für eine Schreiboperation, wie es in 2 gezeigt ist, umfasst die Speichersteuerung 202 einen Schreibdatenpuffer 210, um ankommende Schreibdaten zu speichern. Ein Verschlüsselungsmodul 212 wendet Verschlüsselung auf den Schreibdaten von dem Schreibdatenpuffer 210 an, und liefert die verschlüsselten Schreibdaten für Speicherung an der Speichervorrichtung 204 über einen Speicherbus 214. Der Speicherbus 217 umfasst einen Steuerabschnitt (mit Steuersignalen), einen Adressabschnitt (der eine Adresse enthält), und einen Datenabschnitt (der Daten enthält, die zwischen der Speichersteuerung 202 und der Speichervorrichtung 204 zu übertragen sind).
-
Für eine Leseoperation werden Lesedaten von der Speichervorrichtung 204 wieder gewonnen und einem Verschlüsselungsmodul 216 bereitgestellt. Es ist anzumerken, dass die Daten, die von der Speichervorrichtung 204 gelesen werden, verschlüsselte Daten sein können, sodass das Entschlüsselungsmodul 216 Entschlüsselung auf die verschlüsselten Lesedaten anwendet, um entschlüsselte Lesedaten an einen Lesedatenpuffer 218 auszugeben, wo die Lesedaten dem Anforderer 206 bereitgestellt werden können.
-
Die Verschlüsselung oder Entschlüsselung, die durch das Verschlüsselungsmodul 212 und das Entschlüsselungsmodul 216 angewendet wird, kann auf einem Datenschlüssel basieren, der in der Schlüsselspeicherung 220 in der Speichersteuerung 202 gespeichert ist. Wie es in 2 dargestellt ist, kann die Schlüsselspeicherung 220 mehrere Datenschlüssel (dargestellt als „Datenschlüssel 1”, ..., „Datenschlüssel n” speichern, wobei n ≥ 2). Bei einigen Implementierungen können unterschiedliche Speicherregionen der Speichervorrichtung 204 unter Verwendung unterschiedlicher Datenschlüssel verschlüsselt werden. Wie es in 2 dargestellt ist, hat die Speichervorrichtung mehrere Speicherregionen („Speicherregion 1”, ..., „Speicherregion n”). Die unterschiedlichen Speicherregionen können unterschiedliche Abschnitte einer bestimmten Speichervorrichtung darstellen. Die mehreren Speicherregionen können alternativ unterschiedliche Speichervorrichtungen darstellen. Somit kann bei einem Elektronikgerät mit mehreren Speichervorrichtungen ein erster Datenschlüssel verwendet werden, um Daten in einer ersten Speichervorrichtung zu schützen, ein zweiter Datenschlüssel kann verwendet werden, um Daten in einer zweiten Speichervorrichtung zu schützen usw. Bei weiteren Beispielen kann es unterschiedliche Typen von Speichervorrichtungen in dem elektronischen Gerät geben, in diesem Fall werden unterschiedliche Datenschlüssel verwendet, um Daten zu schützen, die in den unterschiedlichen Speichervorrichtungstypen gespeichert sind. Somit wird beispielsweise ein erster Datenschlüssel verwendet, um Daten in einem ersten Speichervorrichtungstyp (z. B. einer DRAM-basierten Speichervorrichtung) zu schützen, ein zweiter Datenschlüssel wird verwendet, um Daten in einem zweiten Speichervorrichtungstyp (z. B. einer Flashspeichervorrichtung) zu schützen, usw. Es ist auch anzumerken, dass es Cachespeicher geben kann in dem elektronischen Gerät, sodass ein anderer Datenschlüssel verwendet wird, um den Cachespeicher zu schützen.
-
Es ist außerdem anzumerken, dass unterschiedliche Datenschlüssel für unterschiedliche Speicherregionen verwendet werden können, abhängig davon, wie die jeweiligen Speicherregionen verwendet werden. Beispielsweise kann eine der Speicherregionen ein Betriebssystem-Bereich sein zum Speichern von Daten oder Anweisungen, die einem Betriebssystem zugeordnet sind. Eine weitere Speicherregion kann Daten speichern, die einem Nicht-Betriebssystemprogramm zugeordnet sind, wie z. B. Nutzer- oder Anwendungsdaten.
-
Alternativ können unterschiedliche Datenschlüssel während unterschiedlichen Betriebsmodi des elektronischen Geräts verwendet werden, wobei sich die unterschiedlichen Modi beispielsweise auf unterschiedliche Sicherheitspegel beziehen können.
-
Bei anderen Implementierungen können unterschiedliche Verschlüsselungspegel auf unterschiedliche Speicherregionen angewendet werden. Beispielsweise kann XOR-basierte Verschlüsselung angewendet werden für eine erste Speicherregion, während AES-Verschlüsselung oder eine andere Verschlüsselung höherer Ebene für eine andere Speicherregion angewendet wird.
-
Außerdem kann bei einigen Implementierungen unterschiedliche Adressverwürfelung für unterschiedliche Speicherregionen verwendet werden. Beispielsweise können unterschiedliche Schlüssel (Datenschlüssel oder Adressschlüssel, die sich von den Datenschlüsseln unterscheiden), angewendet werden, um unterschiedliche Adressverwürfelungen zu erzeugen. Alternativ können unterschiedliche Verschlüsselungspegel angewendet werden, um unterschiedliche Adressverwürfelungen für die unterschiedlichen Speicherregionen bereitzustellen.
-
Die unterschiedlichen Schlüssel und/oder unterschiedlichen Verschlüsselungspegel und/oder unterschiedlichen Adressverwürfelungen, die auf unterschiedliche Speicherregionen angewendet werden, können zur Bauzeit des elektronischen Geräts konfiguriert werden oder während des Betriebs des elektronisches Geräts durch einen Nutzer oder Administrator.
-
Die Speichersteuerung 202 umfasst auch einen Transaktionsadresspuffer 222, um eine Adresse zu speichern, die einer bestimmten Transaktion (Lesetransaktion oder Schreibtransaktion) zugeordnet ist. Ein Adressverwürfler 224 wendet Adressverwürfelung an der Adresse von dem Transaktionsadresspuffer 222 an. Die verwürfelte Adresse wird von dem Adressverwürfler 224 zu einem Adresssteuer- und Zeitgebungsmodul 226 geliefert, das die gewürfelte Adresse über den Adressabschnitt des Speicherbusses 214 ausgibt.
-
Es ist anzumerken, dass unterschiedliche Adressverwürfelungen für unterschiedliche Speicherregionen in der Speichervorrichtung durchgeführt werden können. Somit wird beispielsweise eine Adresse, die auf eine erste Speicherregion zugreift, auf eine erste Weise verwürfelt, während eine Adresse, die auf eine zweite Speicherregion zugreift, auf eine zweite unterschiedliche Weise verwürfelt wird.
-
Beispielsweise können die unterschiedlichen Arten zum Verwürfeln der Adresse darauf basieren, unterschiedliche Schlüssel zum Verwürfeln der unterschiedlichen Adresse für die unterschiedlichen Speicherregionen zu verwenden. Alternativ können unterschiedliche Hash-Funktionen verwendet werden, um die Adressen für unterschiedliche Speicherregionen zu verwürfeln. Außerdem können auch unterschiedliche Adressverwürfelungstechniken durchgeführt werden für die Speicherregionen, die unterschiedliche Datentypen speichern, wie z. B. Nutzerdaten, Grafikdaten, Betriebssystemdaten usw.
-
Durch Verwenden unterschiedlicher Datenschlüssel und/oder unterschiedlicher Adressverwürfelung für unterschiedliche Speicherregionen wird es schwieriger, Schlüssel oder eine spezifische Adressverwürfelungstechnik wiederzugewinnen für Speicherregionen, die empfindliche oder vertrauenswürdige Daten enthalten können. Es ist anzumerken, dass bestimmte Betriebssystemdaten bekannte Daten sein können, sodass ein Hacker relativ leicht einen Schlüssel oder eine spezifische Adressverwürfelungstechnik für eine Betriebssystemspeicherregion basierend auf den bekannten Betriebssystemdaten rückentwickeln kann. Falls jedoch eine andere Datenschlüssel- und/oder Adressverwürfelungstechnik für eine Speicherregion verwendet wird, die Nichtbetriebssystemdaten enthält (wie z. B. Nutzer- oder Anwendungsdaten), dann wäre der Hacker nicht in der Lage, auf den Inhalt dieser anderen Speicherregion zuzugreifen, selbst wenn der Datenschlüssel und/oder die Adressverwürfelungstechnik durch den Hacker für die Betriebssystemspeicherregion bestimmt werden würden.
-
Bei einigen Implementierungen ist anzumerken, dass Betriebssystemdaten und Nichtbetriebssystemdaten über die Speichervorrichtung 204 verteilt sein können. Falls unterschiedliche Adressverwürfelungen für die Speicherregion angewendet werden, die Betriebssystemdaten enthält, gegenüber einer Speicherregion, die Nichtbetriebssystemdaten enthält, dann sind die Adressverwürfelungen entworfen, sodass die resultierende verwürfelte Adresse für eine Nichtbetriebssystemregion nicht letztendlich die gleiche bleibt wie die resultierende verwürfelte Adresse für eine Betriebssystemspeicherregion.
-
3 ist ein Flussdiagramm eines Prozesses, der durch ein Steuersystem durchgeführt wird. Wie es hierin verwendet wird, umfasst das Steuersystem (oder äquivalent „Steuerteilsystem”) Verarbeitungsschaltungsanordnung, die in der Lage ist, vordefinierte Aufgaben durchzuführen. Das Steuersystem kann beispielsweise eines oder eine Kombination der Folgenden umfassen: den Speichervorrichtungsanforderer 102 von 1, die Speichervorrichtungssteuerung 104 von 1, den Anforderer 206 von 2 und die Speichersteuerung 202 von 2.
-
Das Steuersystem empfängt (bei 302) Adressbits, die im Kontext von 3 Teil einer Adresse sind, die einer Anforderung zugeordnet ist, um auf eine Speichervorrichtung zu schreiben. Das Steuersystem verwürfelt dann (bei 304) die Adressbits. Schreibdaten werden dann verschlüsselt (bei 306) unter Verwendung eines Verschlüsselungsschlüssels, der eine Kombination eines Datenschlüssels und von Adressinformationen ist, wobei die Adressinformationen ein oder eine Kombination des folgenden umfassen können: (1) zumindest einen Teil einer anfänglichen (nicht verwürfelten) physikalischen Adresse, (2) zumindest einen Teil einer verwürfelten physikalischen Adresse und (3) zumindest ein Teil der virtuellen Adressinformation (verwürfelte virtuelle Adresse oder nicht verwürfelte virtuellen Adresse).
-
Die verschlüsselten Schreibdaten werden bereitgestellt (bei 308) zum Speichern in der Speichervorrichtung.
-
4 ist ein Flussdiagramm eines Prozesses zum Durchführen durch ein Steuersystem gemäß alternativen Implementierungen. Das Steuersystem empfängt (bei 402) Adressen, die mehreren Anforderungen zugeordnet sind, um auf mehrere Speicherregionen zu schreiben. Die Adressen werden verwürfelt (bei 404), wobei sich das Verwürfeln jeder Adresse auf das Verwürfeln von zumindest einem Teil der Adresse bezieht. Schreibdatensegmente, die den jeweiligen Schreibanforderungen zugeordnet sind, werden verschlüsselt (bei 406) unter Verwendung entsprechender unterschiedlicher Verschlüsselungen, wobei unterschiedliche Verschlüsselungen erreicht werden können unter Verwendung unterschiedlicher Verschlüsselungsschlüssel (z. B. unterschiedlicher Datenschlüssel) oder der Verwendung unterschiedlicher Verschlüsselungstechniken (z. B. XOR-basierter Verschlüsselung, AES-Verschlüsselung usw.).
-
Die verschlüsselten Schreibdatensegmente werden dann bereitgestellt (bei 408) zum Speichern in den jeweiligen Speicherregionen.
-
Das Steuersystem, das verwendet wird, um den Prozess von 3 oder 4 zu implementieren, kann nur mit Hardware oder einer Kombination von Hardware und maschinenlesbaren Anweisungen implementiert werden, die für eine Ausführung auf der Verarbeitungsschaltungsanordnung (die Teil des Anforderers 102 oder 206 oder Teil der Speichervorrichtungssteuerung 104 oder der Speichersteuerung 202 in 1 oder 2 sein kann) geladen werden. Verarbeitungsschaltungsanordnung kann einen Mikroprozessor, Mikrokontroller, Prozessormodul oder Teilsystem, programmierbare integrierte Schaltung, programmierbares Gatterarray oder ein anderes Steuer- oder Rechengerät umfassen.
-
Daten und Anweisungen werden in jeweiligen Speichervorrichtungen gespeichert, die als eines oder mehrere computerlesbare oder maschinenlesbare Speichermedien implementiert sind. Die Speichermedien umfassen unterschiedliche Formen von Speicher, einschließlich Halbleiterspeichervorrichtungen, wie z. B. dynamische oder statische Direktzugriffsspeicher (DRAM oder SRAM), löschbare und programmierbare Nur-Lese-Speicher (EPROM), elektrisch löschbare und programmierbare Nur-Lese-Speicher (EEPROM) und Flash-Speicher; Magnetplatten, wie z. B. Festplatten, Disketten und entfernbare Platten; andere Magnetmedien einschließlich Band; optische Medien, wie z. B. Kompaktdisks (CDs) oder digitale Videodisks (DVDs) oder andere Speichervorrichtungstypen. Es ist anzumerken, dass die oben erörterten Anweisungen auf einem computerlesbaren oder maschinenlesbaren Speichermedium vorgesehen sein können, oder alternativ auf mehreren computerlesbaren oder maschinenlesbaren Speichermedien vorgesehen sein können, die in einem großen System verteilt sind das möglicherweise mehrere Knoten aufweist. Ein solches computerlesbares oder maschinenlesbares Speichermedium oder Speichermedien wird (werden) so gesehen, dass dieselben Teil eines Artikels (oder Herstellungsartikels) sind. Ein Herstellungsartikel kann sich auf jede hergestellte einzelne Komponente oder mehrere Komponenten beziehen.
-
In der obigen Beschreibung sind zahlreiche Einzelheiten aufgeführt, um ein Verständnis des hierin offenbarten Gegenstands zu schaffen. Implementierungen können jedoch ohne einige oder alle diese Einzelheiten praktiziert werden. Andere Implementierungen können Modifikationen und Variationen von den oben erörterten Einzelheiten umfassen. Die angehängten Ansprüche sollen alle solche Modifikationen und Variationen abdecken.