-
Technisches Gebiet
-
Ausführungsformen der Erfindung betreffen im Allgemeinen den technischen Bereich von Prozessoren. Spezifische Ausführungsformen umfassen Verfahren zur sicheren Verwendung von persistentem (permanentem) Speicher zur Emulation von flüchtigem Speicher.
-
Hintergrund
-
Die in diesem Dokument bereitgestellte Hintergrundbeschreibung dient dem Ziel der allgemeinen Darstellung des Zusammenhangs der Offenlegung. Die Arbeit der gegenwärtig genannten Erfinder in dem Umfang, wie es in diesem Hintergrundabschnitt beschrieben wird sowie Aspekte der Beschreibung, die sich andernfalls nicht als Stand der Technik zum gegenwärtigen Anmeldezeitpunkt qualifizieren, werden, weder ausdrücklich noch stillschweigend, als Stand der Technik im Vergleich mit der gegenwärtigen Offenlegung anerkannt. Falls hierin nicht anders angegeben, stellen die in diesem Abschnitt beschriebenen Ansätze keinen Stand der Technik in Bezug auf die Ansprüche in der gegenwärtigen Offenlegung dar und werden nicht als Stand der Technik durch Einbeziehung in diesen Abschnitt anerkannt.
-
Gegenwärtig können Recheneinheiten eine oder mehrere Teile eines flüchtigen Speichers umfassen, die als dynamischer Schreib-Lesespeiche mit wahlfreiem Zugriff (DRAM) oder eine andere Art von flüchtigem Speicher referenziert werden. Flüchtiger Speicher kann zum Speichern von Daten, die nach dem Auftreten bestimmter Systemereignisse verloren gehen, konfiguriert werden. In vielen Fällen können diese Systemereignisse wie Systemrücksetzereignisse, Systemabschaltungsereignisse oder andere Systemereignisse spannungsbedingt sein.
-
Da die im flüchtigen Speicher gespeicherten Daten nach dem Auftreten eines Systemspannungsereignisses verloren gehen oder geändert werden, ist der flüchtige Speicher gut als Systemspeicher verwendbar. Das heißt, Systeminformationen wie Informationen der Anwendung, wie eines Textverarbeitungs- oder Tabellenkalkulationsprogramms, werden in einem arbeitenden Computersystem im DRAM gespeichert. In Ausführungsformen kann die Verwendung von flüchtigem Speicher als Systemspeicher als verhältnismäßig sicher betrachtet werden, da im flüchtigen Speicher gespeicherte Systeminformationen, die nicht persistent sein müssen, nach dem Auftreten eines Systemspannungsereignisses verloren gehen können (nicht mehr zugänglich).
-
Kurze Beschreibung der Zeichnungen
-
Ausführungsformen werden ohne Weiteres durch die folgende ausführliche Beschreibung in Verbindung mit den begleitenden Zeichnungen verstanden. Um diese Beschreibung zu erleichtern, bezeichnen gleiche Bezugsnummern ähnliche strukturelle Elemente. Ausführungsformen werden exemplarisch und in keiner Weise einschränkend in den Figuren der begleitenden Zeichnungen veranschaulicht.
-
1 veranschaulicht, in Übereinstimmung mit verschiedenen Ausführungsformen, einen beispielhaften Speicher-Controller.
-
2 veranschaulicht, in Übereinstimmung mit verschiedenen Ausführungsformen, ein beispielhaftes Verfahren zum Speichern von Daten im persistenten Speicher.
-
3 veranschaulicht, in Übereinstimmung mit verschiedenen Ausführungsformen, einen beispielhaften Prozess zum Entschlüsseln von im persistenten Speicher gespeicherten Daten.
-
4 veranschaulicht, in Übereinstimmung mit verschiedenen Ausführungsformen, ein beispielhaftes System, das zur Ausführung der hierin beschriebenen Verfahren konfiguriert ist.
-
Ausführliche Beschreibung
-
In der folgenden ausführlichen Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden, in denen gleiche Bezugsnummern ähnliche Teile bezeichnen und in denen durch Veranschaulichung spezifische Ausführungsformen, durch die Erfindung realisiert werden können, gezeigt werden. Es ist selbstverständlich, dass andere Ausführungsformen verwendet werden können und andere strukturelle oder logische Änderungen vorgenommen werden können, ohne vom Wirkungsbereich der vorliegenden Offenbarung abzuweichen. Die folgende ausführliche Beschreibung ist deshalb in keinster Weise einschränkend zu sehen, und der Wirkungsbereich der Ausführungsformen wird durch die angefügten Ansprüche und deren Äquivalente definiert.
-
Die mit der sicheren Speicherung von Daten im persistenten Speicher verbundenen Vorrichtungen, Verfahren und Speichermedien werden hierin beschrieben. Die Verwendung von persistentem Speicher zur Speicherung von Daten, die normalerweise im flüchtigen Speicher gespeichert werden, stellt größere Speicherkapazitäten als bei flüchtigem Speicher zu verminderten Kosten zur Verfügung. In einigen Fällen behält der persistente Speicher jedoch Daten in Situationen bei, in denen die Daten andernfalls verloren oder zerstört würden, wenn diese im flüchtigen Speicher abgelegt wären.
-
In den Ausführungsformen kann ein Speicher-Controller konfiguriert werden, um persistenten Speicher flüchtigen Speicher emulieren zu lassen, indem Daten sicher gespeichert werden, die nach dem Auftreten eines Systemrücksetzereignisses unzugänglich werden können. Speziell erzeugt der Speicher-Controller einen Verschlüsselungscode und verschlüsselt Daten mit dem Verschlüsselungscode. Die verschlüsselten Daten werden dann im persistenten Speicher gespeichert, während der Verschlüsselungscode entweder im persistenten oder flüchtigen Speicher abgelegt wird. In einigen Ausführungsformen kann der Speicher-Controller konfiguriert werden, um mittels des Verschlüsselungscodes Daten zu verschlüsseln, die bereits im persistenten Speicher gespeichert sind. Wenn das System einem Rücksetzereignis wie eine Systemabschaltung, einen Wiederanlauf oder einen Spannungsverlust ausgesetzt ist, kann ein Verschlüsselungscode bzw. ein vom Verschlüsselungscode abgeleiteter Entschlüsselungscode geändert oder zerstört werden. Infolgedessen ist es nicht möglich, selbst wenn die verschlüsselten Daten auszulesen sind oder im persistenten Speicher zugänglich sind, die Daten zu entschlüsseln, da der Verschlüsselungs/Entschlüsselungscode nicht verfügbar ist. Die Datenspeicherung im persistenten Speicher erfährt deshalb die Sicherheitsvorteile der Speicherung im flüchtigen Speicher bei gleichzeitiger Nutzung der Vorteile des persistenten Speichers wie erhöhte Speicherkapazitäten bei niedrigeren Kosten.
-
Verschiedene Arbeitsvorgänge werden wiederum als mehrere diskrete Aktionen oder Arbeitsvorgänge auf eine Weise beschrieben, die sehr hilfreich beim Verständnis des beanspruchten Gegenstandes sind. Jedoch soll die Reihenfolge der Beschreibung nicht so ausgelegt werden, dass diese Arbeitsvorgänge unbedingt von dieser Reihenfolge abhängig sind. Es wird betont, dass diese Vorgänge nicht in der Reihenfolge der Darstellung ausgeführt werden müssen. Die beschriebenen Vorgänge können in einer anderen Reihenfolge als in der beschriebenen Ausführungsform durchgeführt werden. Verschiedene zusätzliche Vorgänge können durchgeführt werden bzw. beschriebene Vorgänge können in zusätzlichen Ausführungsformen entfallen.
-
Für den Zweck der vorliegenden Offenlegung bedeutet der Ausdruck „A und/oder B” und „A oder B” (A), (B) oder (A und B). Für die Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „A, B und/oder C” (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
-
Die Beschreibung kann die Ausdrücke „bei einer Ausführungsform” oder „bei Ausführungsformen” verwenden, die sich auf eine oder mehrere der gleichen oder auf unterschiedliche Ausführungsformen beziehen können. Des Weiteren sind die Begriffe „umfassend”, „einschließlich” „aufweisen” und dergleichen, wie in Bezug auf Ausführungsformen der vorliegenden Offenbarung verwendet, synonym.
-
Wie hier verwendet, kann sich der Begriff „Modul” auf eine anwendungsspezifische integrierte Schaltung (ASIC), eine elektronische Schaltung, einen Prozessor (gemeinsam benutzt, fest zugeordnet oder Gruppe) und/oder Speicher (gemeinsam benutzt, fest zugeordnet oder Gruppe) verweisen, der/die ein oder mehrere Software- oder Firmwareprogramme ausführen, eine kombinatorische Logikschaltung und/oder andere geeignete Komponenten verweisen, welche die beschriebene Funktionalität bereitstellen. Wie hierin verwendet, kann sich das „Computer-implementierte Verfahren” auf jedes mögliche Verfahren beziehen, das von einem oder mehreren Prozessoren, einem Computersystem mit einem oder mehreren Prozessoren, einem tragbaren Gerät wie ein Smartphone (das über einen oder mehrere Prozessoren verfügt), einem Tablet, einem Laptop-Computer, einer Set-Top-Box, einer Spielkonsole, und so weiter ausgeführt wird.
-
1 zeigt ein Beispiel eines Speicher-Controllers 100, der mit einem Prozessor 102 und einem persistenten Speicher 115 verbunden sein kann. In einigen Ausführungsformen wird der persistente Speicher 115 als ein Permanentspeicher bezeichnet, wobei dieser persistente Speicher z. B. ein ferroelektrischer Direktzugriffsspeicher (FeTRAM), ein Nanodraht-basierter Permanentspeicher, ein dreidimensionaler (3D) Cross-Point-Speicher wie ein Phase Change-Speicher (PCM), ein byteadressierbarer Cross-Point-Speicher, Speicher unter Einsatz der Memristor-Technologie, magnetoresistiver Direktzugriffsspeicher (MRAM), Spin Transfer Torque(STT)-MRAM oder eine andere Art von Permanentspeicher als Systemspeicher sein kann. Der Speicher-Controller 100 kann einen Zufallszahlengenerator 105 einschließen. In einigen Ausführungsformen ist der Zufallszahlengenerator 105 ein digitaler Zufallszahlengenerator oder irgendeine Art von Hardware-, Software- oder Firmware-Zufallszahlengenerator. In einigen Ausführungsformen kann der Zufallszahlengenerator 105 konfiguriert werden, um einen Advanced Encryption Standard(AES)-Schlüssel wie ein 256-Bit-AES-Schlüsselpaar zu erzeugen, während in anderen Ausführungsformen der Zufallszahlengenerator 105 konfiguriert werden kann, um eine Zufalls- oder Pseudozufallszahl zu erzeugen. In einigen Ausführungsformen ist der Zufallszahlengenerator 105 ein Pseudozufallszahlgenerator (Pseudorandom Number Generator – PRNG) wie ein Wichmann-Hill-PRNG, ein lineares rückgekoppeltes Schieberegister, ein Mersenne-Twister, eine pseudozufällige Naor-Reingold-Funktion oder irgendein anderer PRNG. In einigen Ausführungsformen kann der Zufallszahlengenerator 105 ein Hardware-Zufallszahlengenerator sein, der auch als wahrer Zufallszahlengenerator (TRNG) bezeichnet wird. Ein TRNG kann ein Araneus Alea-TRNG, ein Entropieschlüssel-TRNG oder einer von einer Anzahl verschiedener Chipsätze sein, der zur Erzeugung von Zufallszahlen konfiguriert ist. In anderen Ausführungsformen schließt der Zufallszahlengenerator 105 eine oder mehrere Verschlüsselungsalgorithmen wie Blockchiffrierungen oder Stromchiffrierungen ein. Der Zufallszahlengenerator 105 kann andere Schlüssel-, Zufallszahlen- oder Pseudozufallszahlgenerationstechniken zusätzlich oder alternativ verwenden.
-
Der Zufallszahlengenerator 105 kann mit einer Verschlüsselung/Entschlüsselung 110 verbunden werden. Die Verschlüsselung/Entschlüsselung 110 kann ein Xor-Verschlüsselungs-Xor-basierter Tweaked-Codebook-Modus mit Ciphertext Stealing-AES(XTS-AES)-Verschlüsselung/Entschlüsselung, die konfiguriert ist, um Daten mittels eines Verschlüsselungscodes wie ein AES-Schlüssel oder 256-Bit-AES-Schlüsselpaar, der/das durch den Zufallszahlengenerator 105 erzeugt wird, zu verschlüsseln oder entschlüsseln. Alternativ kann die Verschlüsselung/Entschlüsselung 110 konfiguriert werden, um eine Zufalls- oder Pseudozufallszahl vom Zufallszahlengenerator 105 zu empfangen und um ein Schlüssel oder Schlüsselpaar zu erzeugen, wie in Bezug auf den Zufallszahlengenerator 105 zuvor beschrieben wurde. In anderen Ausführungsformen verwendet die Verschlüsselung/Entschlüsselung 110 eine andere Art von Verschlüsselungs/Entschlüsselungsalgorithmus wie den AES Liskov Rivest- und Wagner(LRW)-Modus.
-
Die Verschlüsselung/Entschlüsselung 110 kann des Weiteren mit einem persistenten Speicher 115 über eine oder mehrere Kommunikationsleitungen 116 verbunden werden. Die eine oder mehrere Kommunikationsleitungen 116 können zum Beispiel als ein „Speicherbus” bezeichnet werden. Wie ausführlicher nachfolgend beschrieben, können die Verschlüsselung/Entschlüsselung 110 oder ein anderes Element des Speicher-Controllers 100 konfiguriert werden, um Daten zu verschlüsseln und die verschlüsselten Daten an den persistenten Speicher 115 zur Speicherung auszugeben. In anderen Ausführungsformen kann die Verschlüsselung/Entschlüsselung 110 zur Verschlüsselung von Daten, die bereits im persistenten Speicher 115 gespeichert sind, konfiguriert werden. In einigen Ausführungsformen kann die Verschlüsselung/Entschlüsselung 110 des Weiteren zum Empfang der verschlüsselten Daten vom persistenten Speicher 115 und zur Entschlüsselung von diesen mittels des Verschlüsselungscodes konfiguriert werden oder alternativ können die verschlüsselten Daten vom persistenten Speicher 115 entschlüsselt werden, ohne die verschlüsselten Daten zuerst aus dem persistenten Speicher 115 zurückzuholen.
-
In den Ausführungsformen kann der Speicher-Controller 100 des Weiteren eine Sicherheitsmanagement-Logik 120 bzw. eine Speichermanagement-Logik 125 umfassen. Im Allgemeinen kann die Sicherheitsmanagement-Logik 120 mit dem Zufallszahlengenerator 105 verbunden sein und konfiguriert werden, um den Zufallszahlengenerator 105 anzuweisen, eine oder mehrere Zufallszahlen oder Verschlüsselungscode zu erzeugen und auszugeben. Zum Beispiel kann die Sicherheitsmanagement-Logik 120 konfiguriert werden, um „Seed”-Werte oder Variablen für den Zufallszahlengenerator 105 bereitzustellen.
-
Die Speichermanagement-Logik 125 kann mit mindestens der Verschlüsselung/Entschlüsselung 110 sowie mit einer oder mehreren externen Kommunikationsleitungen 106 verbunden werden. Die eine oder mehreren externe(n) Kommunikationsleitung(en) 106 kann/können eine Kommunikationsleitung oder ein Bus wie ein Peripheral Component Interconnect(PCI)- oder PCI express-Bus sein, die/der zur kommunikativen Verbindung des Speicher-Controllers 110 mit dem Prozessor 102 konfiguriert wird. Die Speichermanagement-Logik 125 kann zum Empfang der vom Prozessor 102 über die externe Kommunikationsleitungen 106 in den persistenten Speicher 115 zu schreibenden Daten und zu deren Bereitstellung für die Verschlüsselung/Entschlüsselung 110 konfiguriert werden. In den Ausführungsformen können die Daten zusammen mit Verschlüsselungsanweisungen, wie die Art der durchzuführenden Verschlüsselung, vom Prozessor 102 bereitgestellt werden. Des Weiteren kann die Speichermanagement-Logik 125 konfiguriert werden, um die Informationen über die externen Kommunikationsleitungen 106 an den Prozessor 102 zu exportieren. Zum Beispiel kann die Speichermanagement-Logik 125 den Verschlüsselungscode, der durch die Verschlüsselung/Entschlüsselung 110 von der Verschlüsselung/Entschlüsselung 110 verwendet wird, erhalten und diesen dann über die externen Kommunikationsleitungen 106 an den Prozessor 102 exportieren. Zusätzlich oder alternativ kann die Speichermanagement-Logik 125 die entschlüsselte Daten von der Verschlüsselung/Entschlüsselung 110 erhalten und diese dann über die externen Kommunikationsleitungen 106 an den Prozessor 102 exportieren.
-
Zusätzlich oder alternativ, wie vorstehend beschrieben, kann die Verschlüsselung/Entschlüsselung 110 konfiguriert werden, um über die Kommunikationsleitungen 116 auf die verschlüsselten Daten im persistenten Speicher 115 zuzugreifen oder diese auszulesen und diese mittels des Verschlüsselungscodes, der während des Verschlüsselungsvorgangs eingesetzt wird, zu entschlüsseln (der Entschlüsselungsvorgang ist das Gegenteil des Verschlüsselungsvorgangs). In einigen Ausführungsformen kann die Verschlüsselung/Entschlüsselung 110 auf die im persistenten Speicher 115 gespeicherten verschlüsselten Daten zugreifen und diese mittels des Verschlüsselungscodes entschlüsseln, damit nur die entschlüsselten Daten über die Kommunikationsleitungen 216 an den Speicher-Controller 100 übertragen werden. In anderen Ausführungsformen können einige oder alle verschlüsselten Daten über die Kommunikationsleitungen 116 vom persistenten Speicher an die Verschlüsselung/Entschlüsselung 110 übermittelt werden, wo die verschlüsselten Daten durch die Verschlüsselung/Entschlüsselung 110 mittels des Verschlüsselungscodes entschlüsselt werden. Als ein Beispiel kann der verwendete Verschlüsselungs-/Entschlüsselungscode oder eine Zufalls- oder Pseudozufallszahl zur Ableitung des Verschlüsselungs/Entschlüsselungscodes vom Zufallszahlengenerator 105 zur Verfügung gestellt werden. Alternativ kann der Verschlüsselungs-/Entschlüsselungscode durch die Speichermanagement-Logik 125 über die externen Kommunikationsleitungen 106 erhalten werden, zum Beispiel von einem flüchtigen Speicher, der mit dem Speicher-Controller 100 über die externen Kommunikationsleitungen 106 verbunden ist und diesen Verschlüsselungs/Entschlüsselungscode zur Verschlüsselung/Entschlüsselung durch die Verschlüsselung/Entschlüsselung 110 bereitstellen. Nachdem der Verschlüsselung/Entschlüsselung 110 die verschlüsselten Daten mittels des Verschlüsselungs/Entschlüsselungscodes entschlüsselt hat, kann die Verschlüsselung/Entschlüsselung 110 die Daten an die Speichermanagement-Logik 125 ausgeben, die diese dann über eine oder mehrere Kommunikationsleitungen 106 an den Prozessor 102 exportiert. In den Ausführungsformen kann die Verschlüsselung/Entschlüsselung 110 konfiguriert werden, um den/die Verschlüsselungs-/Entschlüsselungscode(s) bei einem Rücksetzen zu ändern, zu vernichten oder andernfalls zu verlieren. In den Ausführungsformen leitet die Verschlüsselung/Entschlüsselung 110 ergänzend den Entschlüsselungscode vom Verschlüsselungscode, der vom Zufallszahlengenerator 105 bereitgestellt wird, ab oder leitet die Verschlüsselungs- und Entschlüsselungscodes ergänzend von den von einem Zufallszahlengenerator 105 bereitgestellten Zufallszahlen ab, wie vorstehend besprochen.
-
In den Ausführungsformen können die Sicherheitsmanagement-Logik 120, der Zufallszahlengenerator 105, die Verschlüsselung/Entschlüsselung 110 und die Speichermanagement-Logik 125 alle im Speicher-Controller 100 als Architektur eines Einchipsystems (SoC) implementiert werden. In anderen Ausführungsformen können eine oder mehrere der Sicherheitsmanagement-Logiken 120, der Zufallszahlengenerator 105, die Verschlüsselung/Entschlüsselung 110 und die Speichermanagement-Logik 125 getrennt von, kommunikativ aber verbunden mit dem Speicher-Controller 100 sein. In einigen Ausführungsformen kann/können ein oder mehrere Elemente wie die Speichermanagement-Logik 125 und Sicherheitsmanagement-Logik 120 oder die Speichermanagement-Logik 125 und die Verschlüsselung/Entschlüsselung 110 kombiniert werden. Alternativ können in einigen Ausführungsformen die Verschlüsselung/Entschlüsselung 110 in eine separate Verschlüsselung und in eine separate Entschlüsselung getrennt werden. Wie vorstehend bemerkt kann in einigen Ausführungsformen eine oder mehrere der Sicherheitsmanagement-Logiken 120, der Zufallszahlengenerator 105, die Verschlüsselung/Entschlüsselung 110 und die Speichermanagement-Logik 125 in Form von Software, Hardware bzw. Firmware implementiert werden.
-
2 stellt einen beispielhaften Prozess dar, der von einem Speicher-Controller wie dem Speicher-Controller 100 verwendet werden kann, um die Ausführungsformen der gegenwärtigen Offenlegung zu verwirklichen. Anfänglich empfängt der Speicher-Controller Daten bei 200. Zum Beispiel können Daten durch den Speicher-Controller über die Kommunikationsleitungen 106 von einem Prozessor 102 empfangen werden, wie vorstehend beschrieben. Speziell empfängt die Speichermanagement-Logik wie die Speichermanagement-Logik 125 Daten vom Speicher-Controller 100 über die externen Kommunikationsleitungen 106.
-
Als Nächstes verschlüsselt der Speicher-Controller die Daten mittels eines Verschlüsselungscodes bei 205. Zum Beispiel kann eine Verschlüsselung/Entschlüsselung des Speicher-Controllers wie die Verschlüsselung/Entschlüsselung 110 von Speicher-Controller 100 einen Verschlüsselungscode von einem Zufallszahlengenerator wie dem Zufallszahlengenerator 210505 empfangen (oder leitet diesen andernfalls ab). Die Verschlüsselung/Entschlüsselung kann ebenfalls Daten von der Speichermanagement-Logik empfangen, damit die Verschlüsselung/Entschlüsselung diese verschlüsseln kann. Nach der Verschlüsselung der Daten speichert der Speicher-Controller die verschlüsselten Daten im persistenten Speicher wie dem persistenten Speicher 115 bei 210. Obgleich nicht gezeigt, können in anderen Ausführungsformen Daten im persistenten Speicher gespeichert und dann die gespeicherten Daten mittels des Verschlüsselungscodes verschlüsselt werden.
-
Der Speicher-Controller kann dann den Verschlüsselungscode bei 215 speichern. In einigen Ausführungsformen kann der Verschlüsselungscode im persistenten Speicher gespeichert werden. Zum Beispiel kann der Verschlüsselungscode in einem oder mehreren nicht aufeinanderfolgenden Registern des persistenten Speichers wie dem persistenten Speicher 115 gespeichert werden. In anderen Ausführungsformen kann der Verschlüsselungscode vom Speicher-Controller über eine Kommunikationsleitung an einen dynamischen Schreib-Lesespeiche mit wahlfreiem Zugriff (DRAM) oder irgendeinen anderen flüchtigen Speicher übertragen werden.
-
Der Speicher-Controller kann dann das System auf ein Rücksetz-Systemereignis bei 220 überwachen. Ein Systemrücksetzereignis kann im Allgemeinen als ein Ereignis betrachtet werden, bei dem der Inhalt des flüchtigen Speichers normalerweise verloren gehen würde. Ein Beispiel für ein Systemrücksetzereignis ist ein Spannungsausfall des Systems, eine Systemabschaltung, einem Systemwiederanlauf oder irgendein anderes Ereignis. In einigen Ausführungsformen kann das Systemrücksetzereignis nur mit Teilen eines Systems zusammenhängen, zum Beispiel mit bestimmten Unterbereichen des Speichers bzw. den Verarbeitungselementen des Systems. Das Systemrücksetzereignis kann durch ein Plattformrücksetzsignal signalisiert werden, das vom Speicher-Controller von einem Prozessor wie dem Prozess 102 über die Kommunikationsleitungen wie die Kommunikationsleitungen 106 empfangen wird. Das Systemrücksetzereignis kann zusätzlich oder alternativ durch eine Übermittlung eines Plattform-Spannungsereignisses signalisiert werden, das vom Prozessor über die Kommunikationsleitungen oder nach einer anderen Art von Übermittlung oder Signal durch den Speicher-Controller empfangen wird. In einigen Ausführungsformen ist das Systemrücksetzereignis eine Ereignisübermittlung, die durch den Speicher-Controller empfangen wird. Alternativ ist das Systemrücksetzereignis ein Signal wie ein Rücksetzstift oder irgendein anderer Ereignisstift oder ein Spannungsausfall an einem oder mehreren Spannungseingängen des Speicher-Controllers.
-
Wird ein Systemrücksetzereignis nicht bei 220 ermittelt, dann kann der Speicher-Controller die Überwachung bezüglich des Systemrücksetzereignisses fortsetzen. Wird jedoch ein Systemrücksetzereignis ermittelt, dann kann der Speicher-Controller den Verschlüsselungscode bei 225 ändern bzw. vernichten. Wird zum Beispiel der Verschlüsselungscode im persistenten Speicher bei 215 gespeichert, dann kann der Speicher-Controller den Verschlüsselungscode im persistenten Speicher auf null setzen. Die Nullsetzung umfasst das ein oder mehrmalige Überschreiben der Speicherstelle des Verschlüsselungscodes mit Werten wie Nullen, somit kann der Verschlüsselungscode nicht vom persistenten Speicher zurückgelesen werden. In anderen Ausführungsformen werden die Zeiger zur Speicherstelle des Verschlüsselungscodes gelöscht, oder andere Werte wie Einsen oder ein Muster von Nullen und Einsen werden ein oder mehrmals auf die Speicherstelle des Verschlüsselungscodes geschrieben. In den Ausführungsformen, in denen der Verschlüsselungscode im flüchtigen Speicher gespeichert wird, führt das Rücksetzereignis dazu, dass der Verschlüsselungscode im flüchtigen Speicher verloren geht. In einigen Ausführungsformen kann der Verschlüsselungscode dennoch mit Nullen überschrieben werden, wenn dieser im flüchtigen Speicher abgelegt ist. Der Prozess kann dann bei 230 beendet werden.
-
Am Ende der Änderung bzw. Zerstörung des Verschlüsselungscodes bei 225 ist es schwierig oder unmöglich, den Verschlüsselungscode aus dem Speicher, in dem der Verschlüsselungscode gespeichert wurde, zurückzulesen. Daher kann es, selbst wenn die verschlüsselten Daten im persistenten Speicher gespeichert werden, schwierig oder unmöglich sein, die Daten zu entschlüsseln. Infolgedessen können die Daten als sicher betrachtet werden, und der persistente Speicher emuliert die Sicherheitsebene der Speicherung im flüchtigen Speicher.
-
3 zeigt einen Prozess zum Entschlüsseln von Daten, die mittels des Prozesses von 2 verschlüsselt wurden. Der Prozess kann von einem Speicher-Controller wie Speicher-Controller 100 ausgeführt werden. Zuerst wird ein Verschlüsselungscode bei 300 identifiziert. In den Ausführungsformen kann der Verschlüsselungscode durch eine Speichermanagement-Logik wie Speichermanagement-Logik 125 bzw. eine Verschlüsselung/Entschlüsselung wie die Verschlüsselung/Entschlüsselung 110 identifiziert werden. Wie vorstehend beschrieben, kann in einigen Ausführungsformen der Verschlüsselungscode im persistenten Speicher wie im persistenten Speicher 115 gespeichert werden. In anderen Ausführungsformen kann der Verschlüsselungscode im flüchtigen Speicher gespeichert werden, der kommunikativ mit dem Speicher-Controller verbunden ist.
-
Der Speicher-Controller ermittelt dann, ob der Verschlüsselungscode bei 305 vorhanden ist. In einigen Ausführungsformen ist der Verschlüsselungscode nicht vorhanden. Zum Beispiel kann, wie vorstehend mit Bezug auf 2 beschrieben wird, bei einem Auftreten eines System-Rücksetzereignisses der Verschlüsselungscode mit Nullen überschrieben, geändert oder andernfalls gelöscht worden sein. Deshalb ist der Verschlüsselungscode nicht identifizierbar, und der Prozess endet bei 320. Andernfalls können, falls der Verschlüsselungscode vorhanden ist, die verschlüsselten Daten durch den Speicher-Controller bei 310 im persistenten Speicher identifiziert bzw. zurückgelesen werden. Speziell werden die verschlüsselten Daten durch eine oder beide der Speichermanagement-Logiken 125 bzw. die Verschlüsselung/Entschlüsselung 110 des Speicher-Controllers 100 zurückgelesen. Die verschlüsselten Daten können dann durch die Verschlüsselung/Entschlüsselung 110 mittels des identifizierten Verschlüsselungscodes entschlüsselt werden, wobei dann ein umgekehrter Entschlüsselungsvorgang vom Entschlüsselungsvorgang bei 315 stattfindet. In einigen Ausführungsformen können die entschlüsselten Daten dann vom Speicher-Controller ausgegeben werden. Der Prozess beendet dann bei 320.
-
In den Ausführungsformen, wie vorstehend beschrieben, kann der Entschlüsselungscode vom Verschlüsselungscode oder von derselben Zufallszahl abgeleitet werden, von der der Verschlüsselungscode abgeleitet wurde. Für diese Ausführungsformen kann der Prozess von 3 die Vorgänge umfassen, die den Vorgängen bei 215 und 220 ähneln, um den Entschlüsselungscode zu vernichten oder andernfalls zu verlieren.
-
4 veranschaulicht eine beispielhafte Recheneinheit 400, in dem Systeme wie der vorstehend beschriebene Speicher-Controller 100 bzw. ein persistenter Speicher 115 in Übereinstimmung mit verschiedenen Ausführungsformen integriert sind. Die Recheneinheit 400 umfasst ebenfalls eine Anzahl von Komponenten, einen oder mehrere der Prozessoren 404 und mindestens ein Kommunikationschip 406. Wie vorstehend beschrieben, kann der Speicher-Controller 100 mit einem persistenten Speicher 115 verbunden sein, der zur Emulation eines flüchtigen Speicher konfiguriert ist, indem man verschlüsselte Daten im persistenten Speicher 115 speichert. Weiterhin kann der Speicher-Controller 100 konfiguriert werden, den zur Verschlüsselung oder Entschlüsselung der Daten verwendeten Verschlüsselungs- bzw. Entschlüsselungscode zu vernichten bzw. andernfalls zu verlieren.
-
In den verschiedenen Ausführungsformen kann der einzelne oder die mehreren Prozessoren 404 über jeweils einen oder mehrere Prozessorkerne verfügen. In den verschiedenen Ausführungsformen kann mindestens ein Kommunikationschip 406 mit dem einen oder mehreren Prozessoren 404 physikalisch und elektrisch verbunden sein. In weiteren Implementierungen kann der Kommunikationschip 406 Teil eines oder mehrerer Prozessoren 404 sein. In den verschiedenen Ausführungsformen umfasst die Recheneinheit 400 die Leiterplatte (PCB) 402. Für diese Ausführungsformen können der einzelne oder die mehreren Prozessoren 404 und der Kommunikationschip 406 darauf angeordnet sein. In alternativen Ausführungsformen können die verschiedenen Komponenten ohne die Verwendung von PCB 402 verbunden sein.
-
Abhängig von ihren Anwendungen kann die Recheneinheit 400 andere Komponenten, die mit der Leiterplatte 402 physikalisch und elektrisch gekoppelt sein können oder nicht, umfassen. Diese anderen Komponenten schließen ein, sind aber nicht beschränkt auf Speicher-Controller 100, Permanentspeicher wie nur Nur-Lese-Speicher 410 (ROM), persistenten Speicher 115, einen E/A-Controller 414, einen Digital-Signalprozessor (nicht dargestellt), einen Krypto-Prozessor (nicht dargestellt), einen Grafikprozessor 416, eine oder mehrere Antennen 418, ein Display (nicht dargestellt), ein Touchscreen-Display 420, einen Touchscreen-Controller 422, eine Batterie 424, einen Audiocodec (nicht dargestellt), einen Videocodec (nicht dargestellt), ein globales Positionsbestimmungssystem(GPS)-Gerät 428, einen Kompass 430, einen Beschleunigungsmesser (nicht dargestellt), ein Gyroskop (nicht dargestellt), ein Lautsprecher 432, eine Kamera 434 und ein Massenspeichergerät (wie ein Festplattenlaufwerk, ein SSD-Laufwerk, ein Compact-Disc (CD) (nicht dargestellt), eine Digital Versatile Disc (DVD) (nicht dargestellt) und so weiter). In den verschiedenen Ausführungsformen kann der Prozessor 404 zusammen mit anderen Komponenten zur Bildung eines Systems auf einem Chip (SoC) auf dem gleichen Chip integriert sein. Wie vorstehend beschrieben, ist der persistente Speicher 115 ein FeTRAM, ein Nanodraht-basierter Permanentspeicher, ein dreidimensionaler (3D) Cross-Point-Speicher wie ein Phase Change-Speicher (PCM), ein byteadressierbarer Cross-Point-Speicher, Speicher unter Einsatz der Memristor-Technologie, MRAM, STT-MRAM oder eine andere Art von Permanentspeicher, der als Systemspeicher dienen sein kann.
-
In den verschiedenen Ausführungsformen kann die Recheneinheit 400 zusätzlich zum persistenten Speicher 115 persistenten oder Permanentspeicher, z. B. Flash-Speicher (nicht dargestellt), umfassen. In einigen Ausführungsformen kann/können der einzelne oder die mehreren Prozessor(en) 404 bzw. der Flash-Speicher die zugehörige Firmware (nicht dargestellt) umfassen, die die Programmieranweisungen speichern, die konfiguriert wurden, um der Recheneinheit 400 zu ermöglichen, als Reaktion auf die Ausführung der Programmieranweisungen durch einen oder mehrere Prozessoren 404 alle oder gewählte Aspekte der Blöcke, die oben in Bezug auf die 2 oder 3 beschrieben sind, auszuführen. In den verschiedenen Ausführungsformen können diese Aspekte mittels zusätzlicher oder alternativer Hardware, die getrennt von dem einzelnen oder den mehreren Prozessor(en) 404 oder dem Flash-Speicher sind, implementiert sein.
-
Der Kommunikationschip 406 ermöglicht eine drahtlose und/oder verdrahtete Kommunikation zur Datenübertragung von und zur Recheneinheit 400. Der Begriff „drahtlos” und seine Ableitungen kann verwendet sein, um Schaltungen, Geräte, Systeme, Verfahren, Techniken, Kommunikationskanäle usw. zu beschreiben, die Daten unter Verwendung von modulierter elektromagnetischer Strahlung durch ein nicht festes Medium kommunizieren können. Der Begriff impliziert nicht, dass die verbundenen Geräte nicht irgendwelche Drähte enthalten, obwohl sie in einigen Ausführungsformen keine enthalten könnten. Der Kommunikationschip 506 kann jede beliebige Anzahl von drahtlosen Normen oder Protokolle implementieren, ist aber nicht beschränkt auf IEEE 802.20, General Packet Radio Service (GPRS), Evolution Data Optimized (Ev-DO), Evolved High Speed Packet Access (HSPA+), Evolved High Speed Downlink Packet Access (HSDPA+), Evolved High Speed Uplink Packet Access (HSUPA+), Enhanced Data rates for GSM Evolution (EDGE), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Digital Enhanced Cordless Telecommunications (DECT), Bluetooth, Ableitungen hiervon sowie alle anderen drahtlosen Protokolle, die als 3G, 4G, 5G und darüber hinaus bezeichnet werden. Die Recheneinheit 400 kann eine Vielzahl von Kommunikationschips 406 enthalten. Zum Beispiel kann ein erster Kommunikationschip 406 für die drahtlose Kommunikation über kürzere Strecken wie WLAN und Bluetooth und ein zweiter Kommunikationschip 406 zur drahtlosen Kommunikation über größere Entfernungen wie GPS, EDGE, GPRS, CDMA, WiMAX, LTE, Ev-DO und andere vorgesehen sein.
-
In verschiedenen Implementierungen kann die Recheneinheit 400 ein Laptop, ein Netbook, ein Notebook, ein Ultrabook, ein Smartphone, ein Tablet, ein Personal Digital Assistant (PDA), ein Ultra Mobile PC, ein Mobiltelefon, ein Desktop-Computer, ein Server, ein Drucker, ein Scanner, ein Monitor, eine Set-Top-Box, ein Unterhaltungssteuergerät (wie z. B. eine Spielkonsole), eine Digitalkamera, ein portables Musikwiedergabegerät oder ein digitaler Videorekorder sein. In weiteren Implementierungen kann die Recheneinheit 400 jedes andere elektronische, Daten verarbeitende Gerät sein.
-
In den Ausführungsformen kann ein erstes Beispiel der gegenwärtigen Offenlegung eine Vorrichtung zur Änderung eines Verschlüsselungscodes umfassen, wobei die Vorrichtung Folgendes umfasst: einen Speicher-Controller, der konfiguriert ist, um als Reaktion auf ein Rücksetzereignis einen Verschlüsselungscode zu ändern oder zu vernichten. Dieser wird verwendet, um Daten vor Speicherung der Daten in einem persistenten Speicher zu verschlüsseln, wobei der persistente Speicher vom Speicher-Controller gesteuert wird.
-
Beispiel 2 kann die Vorrichtung von Beispiel 1 umfassen und besteht des Weiteren aus dem persistenten Speicher, verbunden mit dem Speicher-Controller.
-
Beispiel 3 kann die Vorrichtung von Beispiel 1 umfassen und besteht des Weiteren aus einem Massenspeicher, der zur Speicherung des Verschlüsselungscodes konfiguriert ist.
-
Beispiel 4 kann die Vorrichtung von Beispiel 3 umfassen, wobei der Massenspeicher einen mit dem Speicher-Controller verbundenen flüchtigen Speicher enthält.
-
Beispiel 5 kann die Vorrichtung von Beispiel 3 umfassen, wobei der Massenspeicher eine Vielzahl von nicht aufeinanderfolgenden Registern des persistenten Speichers umfasst und der Verschlüsselungscode in einem oder mehreren der Vielzahl der nicht aufeinanderfolgenden Register gespeichert wird.
-
Beispiel 6 kann die Vorrichtung aus einem der Beispiele 1–5 umfassen, wobei der Speicher-Controller konfiguriert ist, durch auf Nullsetzung des Verschlüsselungscodes den Verschlüsselungscode zu vernichten.
-
Beispiel 7 kann die Vorrichtung aus einem der Beispiele 1–5 umfassen, wobei der Speicher-Controller des Weiteren konfiguriert ist, um einen den Verschlüsselungscode ergänzenden Entschlüsselungscode als Reaktion auf das Rücksetzereignis zu ändern oder zu vernichten.
-
Beispiel 8 kann die Vorrichtung aus einem der Beispiele 1–5 umfassen, wobei das Rücksetzereignis ein Spannungsausfallereignis, ein Abschaltereignis oder ein Wiederanlaufereignis umfasst.
-
Beispiel 9 kann ein Verfahren zur Speicherung verschlüsselter Daten umfassen, wobei das Verfahren Folgendes umfasst: Verschlüsselung durch einen Speicher-Controller, die Daten basieren mindestens zum Teil auf einem Verschlüsselungscode zur Erstellung der verschlüsselten Daten, Speicherung der verschlüsselten Daten durch den Speicher-Controller in einem Permanentspeicher, Empfang einer Signalisierung eines Rücksetzereignisses durch den Speicher-Controller und Zerstörung des Verschlüsselungscodes durch den Speicher-Controller als Reaktion auf den Empfang der Signalisierung des Rücksetzereignisses.
-
Beispiel 10 kann das Verfahren von Beispiel 9 umfassen, wobei das Vernichten das Überschreiben des Verschlüsselungscodes umfasst.
-
Beispiel 11 kann das Verfahren von Beispiel 9 umfassen, wobei das Vernichten durch Überschreiben des Verschlüsselungscodes mit Nullen umfasst.
-
Beispiel 12 kann das Verfahren aus einem der Beispiele 9–11 umfassen, wobei das Vernichten des Weiteren das Vernichten eines Entschlüsselungscodes umfasst, ergänzend zum Verschlüsselungscode als Reaktion auf das Rücksetzereignis.
-
Beispiel 13 kann das Verfahren aus einem der Beispiele 9–11 umfassen, wobei das Rücksetzereignis ein Spannungsausfallereignis, ein Abschaltungsereignis oder ein Wiederanlaufereignis ist.
-
Beispiel 14 kann ein oder mehrere vom Computer lesbare Medien umfassen, bestehend aus Anweisungen zur Zerstörung eines Verschlüsselungscodes, wobei die Anweisungen konfiguriert sind, um bei Ausführung durch einen Speicher-Controller den Speicher-Controller zu Folgendem zu veranlassen: Empfang einer Signalisierung eines Rücksetzereignisses und als Reaktion auf die Signalisierung des Rücksetzereignisses die Zerstörung des zur Verschlüsselung der in einem persistenten Speicher, der durch den Speicher-Controller gesteuert wird, zu speichernden Daten.
-
Beispiel 15 kann ein oder mehrere vom Computer lesbare Medien aus Beispiel 14 umfassen, wobei der Speicher-Controller zur Zerstörung des Verschlüsselungscodes veranlasst wird.
-
Beispiel 16 kann ein oder mehrere vom Computer lesbare Medien aus Beispiel 14 umfassen, wobei der Speicher-Controller durch Überschreiben des Verschlüsselungscodes mit Nullen zur Zerstörung des Verschlüsselungscodes veranlasst wird.
-
Beispiel 17 kann ein oder mehrere vom Computer lesbare Medien aus einem der Beispiele 14–16 umfassen, wobei der Speicher-Controller veranlasst wird, die mit dem Verschlüsselungscode oder einen den Verschlüsselungscode ergänzenden Entschlüsselungscode verschlüsselten Daten zu entschlüsseln.
-
Beispiel 18 kann ein oder mehrere vom Computer lesbare Medien aus einem der Beispiele 14–16 umfassen, wobei der Speicher-Controller des Weiteren veranlasst wird, als Reaktion auf das Rücksetzereignis einen den Verschlüsselungscode ergänzenden Entschlüsselungscode zu vernichten.
-
Beispiel 19 kann ein oder mehrere vom Computer lesbare Medien aus einem der Beispiele 14–16 umfassen, wobei das Rücksetzereignis ein Spannungsausfallereignis, ein Abschaltereignis oder ein Wiederanlaufereignis ist.
-
Beispiel 20 umfasst eine Vorrichtung zur Vernichten eines Verschlüsselungscodes, wobei die Vorrichtung Folgendes umfasst: Mittel zum Empfang einer Signalisierung eines Rücksetzereignisses, und eine Einrichtung zur Zerstörung eines Verschlüsselungscodes, der zur Verschlüsselung von in einem persistenten Speicher zu speichernden Daten verwendet wird, als Reaktion auf ein Rücksetzereignis.
-
Beispiel 21 kann die Vorrichtung von Beispiel 20 umfassen, wobei die Einrichtung zur Zerstörung Mittel zur Zerstörung des Verschlüsselungscodes durch das Überschreiben mit Nullen umfasst.
-
Beispiel 22 kann die Vorrichtung aus einem der Beispiele 20 oder 21 umfassen und des Weiteren aus Mittel zur Entschlüsselung der verschlüsselten Daten mit dem Verschlüsselungscode oder einem den Verschlüsselungscode ergänzenden Entschlüsselungscode.
-
Beispiel 23 umfasst die Vorrichtung aus einem der Beispiele 20 oder 21 und des Weiteren aus Mittel zur Zerstörung eines den Verschlüsselungscode ergänzenden Entschlüsselungscodes als Reaktion auf das Rücksetzereignis.
-
Beispiel 24 kann die Vorrichtung aus einem der Beispiele 20 oder 21 umfassen, wobei das Rücksetzereignis ein Spannungsausfallereignis, ein Abschaltereignis oder ein Wiederanlaufereignis ist.
-
Beispiel 25 kann ein System umfassen, das Folgendes umfasst: einen persistenten Speicher, der zum Speichern verschlüsselter Daten konfiguriert ist, ein mit dem persistenten Speicher verbundener Speicher-Controller, der für Folgendes konfiguriert ist: Empfang einer Signalisierung eines Rücksetzereignisses, und als Reaktion auf die Signalisierung des Rücksetzereignisses die Zerstörung eines Verschlüsselungscodes, der verwendet wird, um verschlüsselte Daten vor der Speicherung der verschlüsselten Daten im persistenten Speicher zu verschlüsseln.
-
Beispiel 26 kann das System von Beispiel 25 umfassen, wobei der Speicher-Controller des Weiteren zum Überschreiben des Verschlüsselungscodes mit Nullen konfiguriert ist, um den Verschlüsselungscode zu vernichten.
-
Beispiel 27 kann das System aus einem der Beispiele 25 oder 26 umfassen, wobei der Speicher-Controller des Weiteren konfiguriert ist, die verschlüsselten Daten mit dem Verschlüsselungscode oder einem den Verschlüsselungscode ergänzenden Entschlüsselungscode zu entschlüsseln.
-
Beispiel 28 kann das System aus einem der Beispiele 25 oder 26 umfassen, wobei der Speicher-Controller des Weiteren als Reaktion auf das Rücksetzereignis zur Zerstörung eines den Verschlüsselungscode ergänzenden Entschlüsselungscodes konfiguriert ist.
-
Beispiel 29 kann das System aus einem der Beispiele 25 oder 26 umfassen, wobei das Rücksetzereignis ein Spannungsausfallereignis, ein Abschaltereignis oder ein Wiederanlaufereignis ist.
-
Obwohl bestimmte Ausführungsformen hierin zwecks der Beschreibung veranschaulicht und beschrieben wurden, soll diese Anwendung alle möglichen Anpassungen oder Varianten der Ausführungsformen umfassen, die hierin besprochen werden. Deshalb wird offenkundig beabsichtigt, dass hierin beschriebene Ausführungsformen nur durch die Ansprüche begrenzt werden.
-
Wo in der Offenlegung „ein” oder „ein erstes” Element oder das Äquivalent davon erwähnt wird, umfasst solch eine Offenlegung eines oder mehrere solcher Elemente, wobei weder zwei noch mehrere solcher Elemente ausgeschossen werden. Weiter werden Ordnungsindikatoren (z. B., erster, zweiter oder dritter) für identifizierte Elemente verwendet, um zwischen den Elementen zu unterscheiden. Dies zeigt nicht an oder impliziert nicht, dass solch ein Element erforderlich ist oder beschränkt die Anzahl solcher Elemente noch zeigt dies eine bestimmte Position oder eine Reihenfolge solcher Elemente an, es sei denn, dass dies andernfalls speziell angegeben ist.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-