-
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 Typen von Daten 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 Figuren beschrieben:
-
1 und 2 sind Blockdiagramme von beispielhaften Anordnungen, die einige Implementierungen umfassen; und
-
3 ist ein Flussdiagramm eines Prozesses zum Schützen von Inhalt einer Speichervorrichtung gemäß einigen Implementierungen.
-
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 mit 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.
-
Als Teil eines Schutzmechanismus oder einer Schutztechnik wird ein Datenschlüssel zusammen mit einer Verschlüsselungstechnik verwendet, um Daten zu verschlüsseln, die in der Speichervorrichtung zu speichern sind. Es kann Zeiten geben, wenn der erzeugte Datenschlüssel nicht die gleiche Länge hat wie die Daten- oder Informationssegmente, die verschlüsselt werden; als Folge müsste die Länge des Datenschlüssels entsprechend modifiziert werden, um einen Verschlüsselungsschlüssel zu bilden, um Verschlüsselungen auf das Daten- oder Informationssegment anzuwenden. Außerdem kann es Zeiten geben, wenn ein Datenschlüssel mit einem anderen Informationselement gemischt ist – um es zu ermöglichen, dass das Mischen korrekt durchgeführt wird, kann es sein, dass die Länge des Verschlüsselungsschlüssels und/oder eines anderen Informationselements, das mit dem Verschlüsselungsschlüssel zum Mischen ist, modifiziert werden muss.
-
Datenschutztechniken oder -mechanismen gemäß einigen Implementierungen können einen Verschlüsselungsschlüssel erzeugen (zum Verschlüsseln von Daten, die in einer Speichervorrichtung zu speichern sind) durch Modifizieren einer Länge eines Elements, das verwendet wird, um den Verschlüsselungsschlüssel zu bilden. Das Element, dessen Länge modifiziert ist, kann ein Datenschlüssel und/oder Adressinformation sein, die beim Bilden des Verschlüsselungsschlüssels verwendet werden. Das Modifizieren der Länge des Elements umfasst das Erhöhen oder Verringern seiner Länge. Verschiedene Techniken zum Modifizieren der Länge des Elements werden nachfolgend näher erörtert.
-
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 (bei der eine Anfangsadresse modifiziert wird durch Anwenden einer Verwürfelungstechnik, die nachfolgend näher erörtert wird). Verwürfeln einer Adresse kann entweder durchgeführt werden unter Verwendung eines Adressverwürflers 126 in der Speichervorrichtungssteuerung 104, oder eines Adressverwürflers 128 in dem Speichervorrichtungsanforderer 102.
-
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 der Schlüsselmischer 124 bei Implementierungen ausgelassen werden kann, die Datenschlüssel und Adressinformationen nicht mischen, um Verschlüsselungsschlüssel zu bilden.
-
Wie es oben angemerkt wurde, kann gemäß einigen Implementierungen Längenmodifikation an (einem) Element(en) durchgeführt werden, das/die zum Bilden eines Verschlüsselungsschlüssels verwendet wird/werden. Bei 1 kann die Längenmodifikation durchgeführt werden durch einen Längenmodifizierer 130 (zum Modifizieren einer Länge von Adressinformationen) oder einen Längenmodifizierer 132 (zum Modifizieren einer Länge eines Datenschlüssels 120). Bei einigen Implementierungen liegt nur einer der Längenmodifizierer 130 und 132 vor. Bei anderen Implementierungen liegen beide Längenmodifizierer 130 und 132 vor. Längenmodifikation kann auch alternativ erreicht werden durch Mischen eines Datenschlüssels 120 mit Adressinformationen durch den Mischer 124 (in diesem Fall können die Längenmodifizierer 130 und 132 ausgelassen werden).
-
Wie es oben angemerkt wurde, kann es Zeiten geben, wenn ein Datenschlüssel 120 nicht die gleiche Länge hat wie das Daten- oder Informationssegment, das verschlüsselt wird; als Folge müsste die Länge des Datenschlüssels entsprechend modifiziert werden. Außerdem kann es Zeiten geben, wenn ein Datenschlüssel mit einem anderen Informationselement (z. B. Adressinformationen) gemischt ist – um es zu ermöglichen, dass das Mischen erfolgreich korrekt durchgeführt wird, muss die Länge des Datenschlüssels und/oder der Adressinformationen, die mit dem Datenschlüssel zu mischen sind, modifiziert werden.
-
Die Fähigkeit, die Länge der Adressinformationen und/oder des Datenschlüssels 120 zu modifizieren, ermöglicht eine verbesserte Flexibilität, wie Verschlüsselungsschlüssel gebildet werden. Beispielsweise kann die Länge eines Datenschlüssels kundenspezifisch angepasst werden, um einen Verschlüsselungsschlüssel einer Ziellänge bereitzustellen. Als weiteres Beispiel können mehrere Datenschlüssel erzeugt und kombiniert werden (wie z. B. durch Anwenden einer Funktion), um den Verschlüsselungsschlüssel zu bilden. Als noch eine weitere Alternative können bei Implementierungen, wo (ein) Datenschlüssel mit Adressinformationen gemischt wird/werden, um einen Verschlüsselungsschlüssel zu bilden, eine oder beide der Langen des/der Datenschlüssel und Adressinformationen modifiziert werden, um ein geeignetes Mischen zu ermöglichen, um den Verschlüsselungsschlüssel zu erzeugen.
-
Es folgen verschiedene Implementierungen zum Modifizieren von Längen von Datenschlüsseln und Adressinformationen (verwürfelte oder nicht verwürfelte Adressinformationen), die durch den Längenmodifizierer 130 und/oder Längenmodifizierer 132 und/oder den Mischer 124 durchgeführt werden können. Bei einigen Implementierungen kann die Länge eines Datenschlüssels 120 modifiziert werden, indem einfach Bits zu dem Datenschlüssel 120 hinzugefügt werden oder Bits von demselben entfernt werden. Um beispielsweise die Länge des Datenschlüssels 120 zu erhöhen, kann der Datenschlüssel 120 reproduziert werden und die reproduzierten Datenschlüssel (oder einige Teile davon) verkettet werden, um den Verschlüsselungsschlüssel zu bilden.
-
Bei anderen Implementierungen kann das Modifizieren der Länge eines Datenschlüssels 120 erreicht werden durch Mischen des Datenschlüssels 120 mit Adressinformationen durch den Mischer 124.
-
Bei weiteren Implementierungen können mehrere Datenschlüssel 120 vorgesehen sein, und die mehreren Datenschlüssel 120 werden kombiniert, wie z. B. durch Anwenden einer Funktion. Die angewendete Funktion kann eines oder mehrere der folgenden umfassen: (1) Verketten der mehreren Datenschlüssel 120, um den Verschlüsselungsschlüssel zu bilden; (2) Multiplizieren der mehreren Datenschlüssel 120, um den Verschlüsselungsschlüssel zu bilden; (3) Anwenden einer Hashfunktion auf die mehreren Datenschlüssel 120, um den Verschlüsselungsschlüssel zu bilden; (4) Durchführen einer Nachschlageoperation einer Nachschlagtabelle unter Verwendung der mehreren Datenschlüssel 120, um den Verschlüsselungsschlüssel wiederzugewinnen; und (5) andere Funktionen. Es ist anzumerken, dass das Anwenden der Funktion auf die mehreren Datenschlüssel 120 die Länge eines Datenschlüssels entweder erhöhen oder verringern kann.
-
Bei weiteren Implementierungen erzeugt das Anwenden einer Funktion auf mehrere Datenschlüssel 120 eine Ausgabe, die dann durch den Mischer 124 mit Adressinformationen gemischt werden kann, um den Verschlüsselungsschlüssel zu bilden.
-
Es ist anzumerken, dass die Länge von Adressinformationen modifiziert werden kann durch Verwenden einer der oben angemerkten Funktionen für mehrere Datenschlüssel. Beispielsweise können mehrere Adressinformationen erzeugt werden, und alle der oben angemerkten Funktionen können an die mehreren Adressinformationen angelegt werden, um eine Ausgabe zu erzeugen, die zum Ableiten eines Verschlüsselungsschlüssels verwendet wird, wie z. B. durch Mischen mit (einem) Datenschlüssel(n), um den Verschlüsselungsschlüssel zu erzeugen.
-
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).
-
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.
-
Bei der Anordnung von 2 können unterschiedliche Speicherregionen der Speichervorrichtung 204 unter Verwendung unterschiedlicher Schutztechniken geschützt werden. Wie es in 2 dargestellt ist, hat die Speichervorrichtung mehrere Speicherregionen („Speicherregion 1”, ..., „Speicherregion n”). Die unterschiedlichen Speicherregionen können unterschiedliche Abschnitte einer Speichervorrichtung darstellen. Die mehreren Speicherregionen können alternativ unterschiedliche Speichervorrichtungen darstellen. Somit kann beispielsweise in einem elektronischen Gerä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. Die unterschiedlichen Schlüssel können mehrere Datenschlüssel (dargestellt als „Datenschlüssel 1”, ..., „Datenschlüssel n”, wobei n ≥ 2) in einer Schlüsselspeicherung 220 umfassen.
-
Bei weiteren Beispielen kann es in dem elektronischen Gerät unterschiedliche Speichervorrichtungstypen geben, in diesem Fall werden unterschiedliche Datenschlüssel verwendet, um Daten zu schützen, die in den unterschiedlichen Typen von Speichervorrichtungen gespeichert sind. Somit wird beispielsweise ein erster Datenschlüssel verwendet, um Daten in einem ersten Speichervorrichtungstyp (z. B. einem 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 anzumerken, dass es auch Cachespeicher in dem elektronischen Gerät geben kann, 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.
-
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 Speichersteuerung 202 umfasst auch einen Transaktionsadresspuffer 222, um eine Adresse zu speichern, die einer bestimmten Transaktion (Lesetransaktion oder Schreibaktion) zugeordnet ist. Der Adressverwürfler 224 wendet Adressverwürfelung auf die Adresse von dem Transaktionsadresspuffer 222 an. Die verwürfelte Adresse wird von dem Adressverwürfler 224 einem Adresssteuer- und Zeitgebungsmodul 226 bereitgestellt, das die verwürfelte Adresse über den Adressabschnitt des Speicherbusses 214 ausgibt.
-
Wie es in 2 dargestellt ist, umfasst die Speichersteuerung 202 einen Schlüsselmodifizierer 230, der bewirken kann, dass eine Länge eines Elements, das verwendet wird, um einen Verschlüsselungsschlüssel zu bilden, modifiziert wird, ähnlich dem oben in Verbindung mit 1 erörterten Mechanismus. Der Schlüsselmodifizierer 230 kann die Länge eines Datenschlüssels (von der Schlüsselspeicherung 220) modifizieren, und/oder die Länge der Adressinformation (unverwürfelt oder verwürfelt) modifizieren, und/oder einen Datenschlüssel mit Adressinformationen (nicht verwürfelt oder verwürfelt) mischen. Effektiv kann der Schlüsselmodifizierer 230 von 2 jeder oder eine Kombination des Längenmodifizierers 130, Längenmodifizierers 132 und Mischers 124 von 1 sein.
-
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) ein Element, das als Teil eines Verschlüsselungsschlüssels verwendet wird zum Verschlüsseln von Daten, die in einer Speichervorrichtung zu speichern sind (z. B. 106 in 1 oder 204 in 2). Das Element kann ein Datenschlüssel und/oder Adressinformationen sein. Eine Länge des Elements wird modifiziert (bei 304), um den Verschlüsselungsschlüssel zu bilden. Diese Modifikation kann durch jeden oder eine Kombination der Folgenden durchgeführt werden: Längenmodifizierer 130, Längenmodifizierer 132, Mischer 124 und Schlüsselmodifizierer 230.
-
Das Steuersystem verschlüsselt (bei 306) als Nächstes Schreibdaten unter Verwendung des Verschlüsselungsschlüssels. Die verschlüsselten Daten werden dann zum Speichern in der Speichervorrichtung bereitgestellt (bei 308).
-
Das Steuersystem, das verwendet wird, um den Prozess von 3 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.