DE112021000644T5 - Dynamische befehlserweiterung für ein speichersubsystem - Google Patents

Dynamische befehlserweiterung für ein speichersubsystem Download PDF

Info

Publication number
DE112021000644T5
DE112021000644T5 DE112021000644.4T DE112021000644T DE112021000644T5 DE 112021000644 T5 DE112021000644 T5 DE 112021000644T5 DE 112021000644 T DE112021000644 T DE 112021000644T DE 112021000644 T5 DE112021000644 T5 DE 112021000644T5
Authority
DE
Germany
Prior art keywords
command
extension module
digital signature
instruction
processing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112021000644.4T
Other languages
English (en)
Inventor
James Ruane
Robert W. Strong
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE112021000644T5 publication Critical patent/DE112021000644T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/442Shutdown
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Read Only Memory (AREA)
  • Vehicle Body Suspensions (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)

Abstract

Eine Verarbeitungsvorrichtung ist dazu konfiguriert, einen anfänglichen Satz von Befehlstypen zu verarbeiten. Ein Befehlserweiterungsmodul und eine digitale Signatur werden empfangen. Die digitale Signatur wird basierend auf dem Befehlserweiterungsmodul unter Verwendung eines privaten Schlüssels eines Schlüsselpaars erzeugt. Sobald es durch die Verarbeitungsvorrichtung installiert wurde, ermöglicht das Befehlserweiterungsmodul es der Verarbeitungsvorrichtung, einen neuen Befehlstyp zu verarbeiten, der nicht in dem anfänglichen Satz von Befehlstypen beinhaltet ist. Die digitale Signatur wird unter Verwendung eines öffentlichen Schlüssels des Schlüsselpaars verifiziert. Basierend auf einer erfolgreichen Verifizierung der digitalen Signatur wird das Befehlserweiterungsmodul vorübergehend installiert, indem das Befehlserweiterungsmodul in eine flüchtige Speichervorrichtung geladen wird.

Description

  • PRIORITÄTSANMELDUNG
  • Diese Anmeldung beansprucht den Vorteil der Priorität der US-Anmeldung mit der Seriennummer 16/749,558 , eingereicht am 22. Januar 2020, die in diese Schrift durch Bezugnahme in ihrer Gesamtheit aufgenommen wird.
  • TECHNISCHES GEBIET
  • Ausführungsformen der Offenbarung betreffen allgemein Speichersubsysteme und insbesondere die dynamische Erweiterung von Speichersubsystembefehlen.
  • STAND DER TECHNIK
  • Ein Speichersubsystem kann eine oder mehrere Speichervorrichtungen beinhalten, die Daten speichern. Die Speichervorrichtungen können zum Beispiel nichtflüchtige Speichervorrichtungen und flüchtige Speichervorrichtungen sein. Im Allgemeinen kann ein Hostsystem ein Speichersubsystem zum Speichern von Daten in den Speichervorrichtungen und zum Abrufen von Daten aus den Speichervorrichtungen nutzen.
  • Figurenliste
  • Die vorliegende Offenbarung wird durch die nachfolgend angegebene detaillierte Beschreibung und durch die beigefügten Zeichnungen verschiedener Ausführungsformen der Offenbarung leichter zu verstehen sein.
    • 1 veranschaulicht eine beispielhafte Computerumgebung, die ein Speichersubsystem gemäß einigen Ausführungsformen der vorliegenden Offenbarung beinhaltet.
    • 2A - 2C sind Datenflussdiagramme, die Interaktionen zwischen Komponenten in einer sicheren Kommunikationsumgebung veranschaulichen, wenn ein beispielhaftes Verfahren zur dynamischen Erweiterung von Speichersubsystembefehlen gemäß einigen Ausführungsformen der vorliegenden Offenbarung ausgeführt wird.
    • 3 und 4 sind Flussdiagramme, die ein beispielhaftes Verfahren zur dynamischen Erweiterung von Speichersubsystembefehlen gemäß einigen Ausführungsformen der vorliegenden Offenbarung veranschaulichen.
    • 5 ist ein Blockdiagramm eines beispielhaften Computersystems, in dem Ausführungsformen der vorliegenden Offenbarung betrieben werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Aspekte der vorliegenden Offenbarung richten sich auf die sichere Befehlserweiterung in einem Speichersubsystem. Ein Speichersubsystem kann eine Speichervorrichtung, ein Speichermodul oder eine Mischform aus Speichervorrichtung und Speichermodul sein. Beispiele für Speichervorrichtungen und Speichermodule werden im Folgenden in Verbindung mit 1 beschrieben. Im Allgemeinen kann ein Hostsystem ein Speichersubsystem nutzen, das eine oder mehrere Komponenten beinhaltet, wie etwa Speichervorrichtungen, die Daten speichern. Das Hostsystem kann Daten bereitstellen, die im Speichersubsystem gespeichert werden sollen und kann anfordern, dass Daten aus dem Speichersubsystem abgerufen werden.
  • Eine Speichersubsystemsteuerung empfängt typischerweise Befehle oder Operationen von dem Hostsystem und wandelt die Befehle oder Operationen in Anweisungen oder geeignete Befehle um, um gewünschten Zugriff auf Speicherkomponenten des Speichersubsystems zu erreichen. Typischerweise wird ein Speichersubsystem anfangs mit Firmware konfiguriert, die in der Lage ist, einen Satz von Befehlstypen zu unterstützen, die eine gewisse Funktionalität in Bezug auf das Speichersubsystem ermöglichen. In einigen Fällen beinhalten diese Befehlstypen anbieterspezifische Befehlstypen, die eine Funktionalität ermöglichen, die für die Systemkonfigurationen oder -prozesse eines Anbieters spezifisch sein kann. Jeder Befehlstyp kann jedoch einen Angriffsvektor bereitstellen, der ausgenutzt werden kann, um unbefugten Zugriff auf Daten zu erlangen, die durch das Speichersubsystem gespeichert sind. Darüber hinaus können gewisse herstellerspezifische Befehle Sicherheitsverwundbarkeiten schaffen, die ausgenutzt werden können, um unbefugten Zugriff zu erlangen.
  • Speichersubsystem-Firmware wird normalerweise durch das Speichersubsystem validiert, bevor sie installiert wird, um sicherzustellen, dass die Firmware aus einer vertrauenswürdigen Quelle stammt. Als ein Beispiel kann ein öffentlicher Schlüssel eines asymmetrischen Schlüsselpaars einem Speichersubsystem durch einen Erstausrüster (original equipment manufacturer - OEM) vor der Auslieferung zur Verfügung gestellt werden, während ein entsprechender privater Schlüssel durch ein Hardware-Sicherheitsmodul (HSM) eines sicheren Systems (z. B. durch den OEM betrieben) gesichert wird, das extern und unabhängig von dem Speichersubsystem ist. Die Firmware wird durch den privaten Schlüssel digital signiert, um eine Vertrauenswurzel aufzubauen, und der entsprechende öffentliche Schlüssel wird durch das Speichersubsystem verwendet, um die digitale Signatur vor der Installation zu validieren.
  • In einigen Fällen kann es erwünscht sein, die Funktionalität des Speichersubsystems über das hinaus zu erweitern, was durch den Satz von Befehlstypen ermöglicht wird, den die Firmware des Speichersubsystems anfänglich unterstützen kann. Das heißt, es kann wünschenswert sein, einem Speichersubsystem zu ermöglichen, zusätzliche Befehlstypen zu verarbeiten, die nicht in dem ursprünglichen Satz von Befehlstypen enthalten waren, den die ursprüngliche Speichersubsystem-Firmware verarbeiten kann. In einem Beispiel kann es erwünscht sein, ein Speichersubsystem anfänglich ohne jegliche herstellerspezifischen Befehle zu konfigurieren, um die Angriffsvektoren für das System zu reduzieren und dem System später die Fähigkeit hinzuzufügen, herstellerspezifische Befehle zu verarbeiten. Als ein weiteres Beispiel kann es erwünscht sein, vorübergehend eine gewisse Funktionalität bereitzustellen, um das Speichersubsystem zu debuggen.
  • Herkömmliche Techniken zur Befehlserweiterung in Speichersubsystemen erfordern das Herunterladen einer aktualisierten Firmwaredatei, die eine Funktionalität zum Handhaben der zusätzlichen Befehle enthält, und das Speichersubsystem muss auch die aktualisierte Firmwaredatei vor dem Installieren erneut validieren. Eine aktualisierte Firmwaredatei kann jedoch groß sein und das Herunterladen und die erneute Validierung können viel Zeit und Speicherressourcen verbrauchen.
  • Aspekte der vorliegenden Offenbarung befassen sich mit den obigen und anderen Problemen mit Systemen und Verfahren zur dynamischen Erweiterung von Speichersubsystemenbefehlen. Die Befehlserweiterung ist dahingehend dynamisch, dass eine Funktionalität zum Verarbeiten zusätzlicher Befehle vorübergehend zu einem Speichersubsystem hinzugefügt werden kann, ohne dass es notwendig ist, ein vollständig neues Firmwarepaket zu installieren, und ohne dass es notwendig ist, die Firmware wie bei den oben erörterten herkömmlichen Verfahren zur Befehlserweiterung neu zu bewerten.
  • In Übereinstimmung mit einigen Ausführungsformen ist eine Befehlsverarbeitungskomponente in der Lage, dem Speichersubsystem Funktionalität hinzuzufügen, um Befehlstypen zu verarbeiten, die das Speichersubsystem anfänglich nicht verarbeiten kann. Um die Befehle des Speichersubsystems zu erweitern, kann das Hostsystem dem Speichersubsystem ein Befehlserweiterungsmodul statt eines gesamten Firmwarepakets, das ebenfalls erneut verifiziert werden muss, bereitstellen. In Übereinstimmung mit einigen Ausführungsformen kann das Befehlserweiterungsmodul selbst irgendeiner Form von Zugriffssteuerung unterliegen, um einen sicheren Zugriff sicherzustellen und unbefugten Zugriff zu verhindern. Zum Beispiel kann ein Befehlserweiterungsmodul passwortgeschützt sein und kann das Hostsystem aufgefordert sein, das Passwort bereitzustellen, um in der Lage zu sein, das Befehlserweiterungsmodul herunterzuladen. Das Befehlserweiterungsmodul ist mit einer digitalen Signatur bereitgestellt, die durch die Befehlsverarbeitungskomponente verifiziert wird, bevor das Befehlserweiterungsmodul vorübergehend auf der Steuerung installiert wird. Ein durch die Befehlsverarbeitungskomponente empfangener Befehl, der einem durch das Befehlserweiterungsmodul verarbeiteten Befehlstyp entspricht, wird an das Befehlserweiterungsmodul weitergeleitet und das Befehlserweiterungsmodul verarbeitet den Befehl. Das Befehlserweiterungsmodul wird dahingehend nur temporär installiert, dass es in eine flüchtige Speichervorrichtung geladen wird und daher beim Neustart des Systems oder beim Auslaufen eines dem Befehlserweiterungsmodul zugeordneten Time-to-Live (TTL)-Werts verloren geht.
  • Die oben beschriebenen Techniken zur dynamischen Befehlserweiterung reduzieren Schwachstellen in einem Speichersubsystem, indem sie einen Bedarf beseitigen, dass eine Firmware herstellerspezifische Befehlstypen oder solche, deren Bedarf zum Zeitpunkt der Erstellung der Firmware nicht erkannt wurde, verarbeiten muss. Darüber hinaus ermöglicht eine solche Art der dynamischen Befehlserweiterung, dass die Firmware in der Lage ist, nur einen begrenzten Satz von Befehlstypen zu verarbeiten, vorausgesetzt, dass die Funktionalität zum Verarbeiten zusätzlicher Anspruchstypen zu einem späteren Zeitpunkt hinzugefügt werden kann. Das Reduzieren der Anzahl von Befehlstypen reduziert auch die Anzahl von Angriffsvektoren, die verwendet werden können, um unbefugten Zugriff auf Speichersubsysteme zu erlangen, wodurch ein zusätzlicher Sicherheitsvorteil bereitgestellt wird.
  • 1 veranschaulicht ein beispielhaftes Computersystem 100, das ein Speichersubsystem 110 gemäß einigen Ausführungsformen der vorliegenden Offenlegung beinhaltet. Das Speichersubsystem 110 kann Medien beinhalten, wie etwa eine oder mehrere flüchtige Speichervorrichtungen (z. B. die Speichervorrichtung 140), eine oder mehrere nichtflüchtige Speichervorrichtungen (z. B. die Speichervorrichtung 130) oder eine Kombination solcher.
  • Ein Speichersubsystem 110 kann eine Speichervorrichtung, ein Speichermodul oder eine Mischung aus einer Speichervorrichtung und einem Speichermodul sein. Beispiele für eine Speichervorrichtung sind ein Festkörperlaufwerk (solid-state drive - SSD), ein Flash-Laufwerk, ein Universal-Serial-Bus(USB)-Flash-Laufwerk, ein Eingebettete-Multimedia-Steuereinrichtung(embedded Multi-Media Controller - eMMC)-Laufwerk, ein Universal-Flash-Speicher(UFS)-Laufwerk, eine Secure-Digital(SD)-Karte und ein Festplattenlaufwerk (hard disk drive - HDD). Beispiele für Speichermodule beinhalten ein Dual-Inline-Speichermodul (dual inline memory module - DIMM), ein Small-Outline-DIMM (SO-DIMM) und verschiedene Arten von nichtflüchtigen Dual-Inline-Speichermodulen (non-volatile dual in-line memory module - NVDIMM).
  • Das Computersystem 100 kann eine Computervorrichtung wie etwa ein Desktop-Computer, ein Laptop-Computer, ein Netzwerkserver, eine Mobilvorrichtung, ein Fahrzeug (z. B. ein Flugzeug, eine Drohne, ein Zug, ein Automobil oder ein anderes Beförderungsmittel), eine Internet-der-Dinge(Internet of Things - IoT)-fähige Vorrichtung, ein eingebetteter Computer (z. B. einer, der in einem Fahrzeug, einer Industrieanlage oder einer vernetzten kommerziellen Vorrichtung beinhaltet ist) oder eine solche Computervorrichtung sein, die einen Speicher und eine Verarbeitungsvorrichtung beinhaltet.
  • Das Computersystem 100 kann ein Hostsystem 120 beinhalten, das an ein oder mehrere Speichersubsysteme 110 gekoppelt ist. In einigen Ausführungsformen ist das Hostsystem 120 an verschiedene Arten von Speichersubsystemen 110 gekoppelt. 1 veranschaulicht ein Beispiel für ein Hostsystem 120, das an ein Speichersubsystem 110 gekoppelt ist. Wie in dieser Schrift verwendet, bezieht sich „gekoppelt an“ oder „gekoppelt mit“ allgemein auf eine Verbindung zwischen Komponenten, die eine indirekte kommunikative Verbindung oder eine direkte kommunikative Verbindung (z. B. ohne dazwischenliegende Komponenten) sein kann, sowohl drahtgebunden als auch drahtlos, einschließlich Verbindungen wie etwa elektrisch, optisch, magnetisch und dergleichen.
  • Das Hostsystem 120 kann einen Prozessorchipsatz und einen Softwarestapel, der durch den Prozessorchipsatz ausgeführt wird, beinhalten. Der Prozessorchipsatz kann einen oder mehrere Kerne, einen oder mehrere Caches, eine Speichersteuerung (z. B. NVDIMM-Steuerung) und eine Speicherprotokollsteuerung (z. B. PCIe-Steuerung, SATA-Steuerung) beinhalten. Das Hostsystem 120 verwendet das Speichersubsystem 110 zum Beispiel, um Daten in das Speichersubsystem 110 zu schreiben und Daten aus dem Speichersubsystem 110 zu lesen.
  • Das Hostsystem 120 kann über eine physische Hostschnittstelle an das Speichersubsystem 110 gekoppelt sein. Beispiele für eine physische Hostschnittstelle sind unter anderem eine Serial-Advanced-Technology-Attachment(SATA)-Schnittstelle, eine Peripheral-Component-Interconnect-Express(PCIe)-Schnittstelle, eine Universal-Serial-Bus(USB)-Schnittstelle, Fibre-Channel, Serial Attached SCSI (SAS), Small Computer System Interface (SCSI), ein Double-Data-Rate(DDR)-Speicherbus, eine Dual-Inline-Speichermodul(DIMM)-Schnittstelle (z. B. eine DIMM-Socket-Schnittstelle, die Double-Data-Rate (DDR) unterstützt), eine Open-NAND-Flash-Schnittstelle (ONFI), Double-Data-Rate (DDR), Low-Power-Double-Data-Rate (LPDDR) oder jede andere Schnittstelle. Die physische Hostschnittstelle kann verwendet werden, um Daten zwischen dem Hostsystem 120 und dem Speichersubsystem 110 zu übertragen. Das Hostsystem 120 kann ferner eine NVM-Express(NVMe)-Schnittstelle verwenden, um auf Komponenten (z. B. die Speichervorrichtungen 130) zuzugreifen, wenn das Speichersubsystem 110 durch die PCIe-Schnittstelle mit dem Hostsystem 120 gekoppelt ist. Die physische Hostschnittstelle kann eine Schnittstelle zum Weiterleiten von Steuerungs-, Adress-, Daten- und anderen Signalen zwischen dem Speichersubsystem 110 und dem Hostsystem 120 bereitstellen. 1 veranschaulicht ein Speichersubsystem 110 als ein Beispiel. Im Allgemeinen kann das Hostsystem 120 über eine selbe Kommunikationsverbindung, mehrere getrennte Kommunikationsverbindungen und/oder eine Kombination von Kommunikationsverbindungen auf mehrere Speichersubsysteme zugreifen.
  • Die Speichervorrichtungen 130, 140 können eine beliebige Kombination der verschiedenen Arten von nichtflüchtigen Speichervorrichtungen und/oder flüchtigen Speichervorrichtungen beinhalten. Die flüchtigen Speichervorrichtungen (z. B. die Speichervorrichtung 140) können Direktzugriffsspeicher (RAM) sein, wie etwa dynamischer Direktzugriffsspeicher (DRAM) und synchroner dynamischer Direktzugriffsspeicher (SDRAM), ohne auf diese beschränkt zu sein.
  • Einige Beispiele für nichtflüchtige Speichervorrichtungen (z. B. die Speichervorrichtung 130) beinhalten einen Flash-Speicher vom Negativ-And(NAND)-Typ und einen Write-in-Place-Speicher, wie etwa eine dreidimensionale Kreuzpunkt-(„3D-Kreuzpunkt“-)Speichervorrichtung, die ein Kreuzpunktarray aus nichtflüchtigen Speicherzellen ist. Ein Kreuzpunktarray eines nichtflüchtigen Speichers kann eine Bitspeicherung basierend auf einer Änderung des Bahnwiderstands in Verbindung mit einem stapelbaren Kreuzgitter-Datenzugriffsarray durchführen. Darüber hinaus kann ein nichtflüchtiger Kreuzpunktspeicher im Gegensatz zu vielen Flash-Speichern eine Write-in-Place-Operation durchführen, bei dem eine nichtflüchtige Speicherzelle programmiert werden kann, ohne dass die nichtflüchtige Speicherzelle zuvor gelöscht wurde. Flash-Speicher vom NAND-Typ beinhalten zum Beispiel zweidimensionales NAND (2D-NAND) und dreidimensionales NAND (3D-NAND).
  • Jede der Speichervorrichtungen 130 kann eine oder mehrere Arrays von Speicherzellen beinhalten. Andere Arten von Speicherzellen, wie etwa Multi Level Cells (MLCs), Triple Level Cells (TLCs), Quad Level Cells (QLCs) und Penta Level Cells (PLCs), können mehrere Bits pro Zelle speichern. In einigen Ausführungsformen kann jede der Speichervorrichtungen 130 eine oder mehrere Arrays von Speicherzellen beinhalten, wie etwa SLCs, MLCs, TLCs, QLCs oder eine beliebige Kombination solcher. In einigen Ausführungsformen kann eine konkrete Speichervorrichtung einen SLC-Abschnitt und einen MLC-Abschnitt, einen TLC-Abschnitt oder einen QLC-Abschnitt von Speicherzellen beinhalten. Die Speicherzellen der Speichervorrichtungen 130 können als Seiten gruppiert werden, die sich auf eine Logikeinheit der Speichervorrichtung beziehen können, die verwendet wird, um Daten zu speichern. Bei einigen Speichertypen (z. B. NAND) können Seiten gruppiert werden, um Blöcke zu bilden.
  • Obwohl nichtflüchtige Speicherkomponenten wie etwa Flash-Speicher vom NAND-Typ (z. B. 2D-NAND, 3D-NAND) und vom 3D-Kreuzpunkttyp von nichtflüchtigen Speicherzellen beschrieben werden, kann die Speichervorrichtung 130 auf jeder anderen Art von nichtflüchtigem Speicher basieren, wie etwa Nur-Lese-Speicher (Read-Only Memory - ROM), Phasenwechselspeicher (Phase Change Memory - PCM), selbstauswählendem Speicher, anderen auf Chalkogenid basierenden Speichern, ferroelektrischem Transistor-Direktzugriffsspeicher (Ferroelectric Transistor Random-Access Memory - FeTRAM), ferroelektrischem Direktzugriffsspeicher (Ferroelectric Random Access Memory - FeRAM), Magneto-Direktzugriffsspeicher (Magneto Random Access Memory - MRAM), Spin-Transfer-Torque(STT)-MRAM, Conductive-Bridging-RAM (CBRAM), Resistive Random Access Memory (RRAM), RRAM auf Oxidbasis (OxRAM), Negativ-OR(NOR)-Flash-Speicher und elektrisch löschbarem programmierbarem Nur-Lese-Speicher (Electrically Erasable Programmable Read-Only Memory - EEPROM).
  • Eine Speichersubsystemsteuerung 115 (oder der Einfachheit halber Steuerung 115) kann mit den Speichervorrichtungen 130 kommunizieren, um Operationen wie das Lesen von Daten, das Schreiben von Daten oder das Löschen von Daten an den Speichervorrichtungen 130 und andere derartige Operationen durchzuführen. Die Speichersubsystemsteuerung 115 kann Hardware wie etwa eine oder mehrere integrierte Schaltungen und/oder diskrete Komponenten, einen Pufferspeicher oder eine Kombination davon beinhalten. Die Hardware kann digitale Schaltkreise mit dedizierter (d. h. hartcodierter) Logik beinhalten, um die in dieser Schrift beschriebenen Operationen durchzuführen. Die Speichersubsystemsteuerung 115 kann ein Mikrocontroller, eine Logikschaltung für spezielle Zwecke (z. B. ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC) usw.) oder ein anderer geeigneter Prozessor sein.
  • Die Speichersubsystemsteuerung 115 kann einen Prozessor 117 (z. B. eine Verarbeitungsvorrichtung) beinhalten, die dazu konfiguriert ist, Anweisungen auszuführen, die in einem lokalen Speicher 119 gespeichert sind. In dem veranschaulichten Beispiel beinhaltet der lokale Speicher 119 der Speichersubsystemsteuerung 115 einen eingebetteten Speicher, der dazu konfiguriert ist, Anweisungen zum Durchführen verschiedener Prozesse, Vorgänge, Logikabläufe und Routinen zu speichern, die den Betrieb des Speichersubsystems 110 steuern, was die Abwicklung der Kommunikationen zwischen dem Speichersubsystem 110 und dem Hostsystem 120 beinhaltet.
  • In einigen Ausführungsformen kann der lokale Speicher 119 Speicherregister beinhalten, in denen Speicherzeiger, abgerufene Daten usw. gespeichert sind. Der lokale Speicher 119 kann außerdem einen Nur-Lese-Speicher (ROM) zum Speichern von Mikrocode beinhalten. Während das beispielhafte Speichersubsystem 110 in 1 so veranschaulicht wurde, dass es die Speichersubsystemsteuerung 115 beinhaltet, beinhaltet ein Speichersubsystem 110 in einer anderen Ausführungsform der vorliegenden Offenbarung möglicherweise keine Speichersubsystemsteuerung 115 und kann stattdessen auf eine externe Steuerung zurückgreifen (z. B. bereitgestellt durch einen externen Host oder durch einen Prozessor oder eine Steuerung, die unabhängig von dem Speichersubsystem sind).
  • Im Allgemeinen kann die Speichersubsystemsteuerung 115 Befehle oder Operationen von dem Hostsystem 120 empfangen und kann die Befehle oder Operationen in Anweisungen oder geeignete Befehle umwandeln, um den gewünschten Zugriff auf die Speichervorrichtungen 130 und/oder die Speichervorrichtung 140 zu erreichen. Die Speichersubsystemsteuerung 115 kann für andere Operationen verantwortlich sein, wie etwa Verschleißausgleichsoperationen, Speicherbereinigungsoperationen, Fehlererkennungs- und Fehlerkorrekturcode(ECC)-Operationen, Verschlüsselungsoperationen, Caching-Operationen und Adressübersetzungen zwischen einer logischen Adresse (z. B. einer logischen Blockadresse (LBA), Namensraum) und einer physischen Adresse (z. B. einer physischen Blockadresse), die den Speichervorrichtungen 130 zugeordnet sind. Die Speichersubsystemsteuerung 115 kann ferner einen Schaltkreis für die Hostschnittstelle beinhalten, um über die physische Hostschnittstelle mit dem Hostsystem 120 zu kommunizieren. Der Schaltkreis für die Hostschnittstelle kann die von dem Hostsystem empfangenen Befehle in Befehlsanweisungen umwandeln, um auf die Speichervorrichtungen 130 und/oder die Speichervorrichtung 140 zuzugreifen, sowie die den Speichervorrichtungen 130 und/oder die Speichervorrichtung 140 zugeordneten Antworten in Informationen für das Hostsystem 120 umwandeln.
  • Das Speichersubsystem 110 kann außerdem zusätzliche Schaltkreise oder Komponenten beinhalten, die nicht veranschaulicht sind. In einigen Ausführungsformen kann das Speichersubsystem 110 einen Cache oder Puffer (z. B. DRAM) und einen Adressschaltkreis (z. B. einen Zeilendecodierer und einen Spaltendecodierer) beinhalten, die eine Adresse von der Speichersubsystemsteuerung 115 empfangen und die Adresse decodieren können, um auf die Speichervorrichtungen 130 zuzugreifen.
  • In einigen Ausführungsformen beinhalten die Speichervorrichtungen 130 lokale Mediensteuerungen 135, die in Verbindung mit der Speichersubsystemsteuerung 115 arbeiten, um Operationen an einer oder mehreren Speicherzellen der Speichervorrichtungen 130 auszuführen. Eine externe Steuerung (z. B. die Speichersubsystemsteuerung 115) kann die Speichervorrichtung 130 extern verwalten (z. B. Medienverwaltungsoperationen auf der Speichervorrichtung 130 durchführen). In einigen Ausführungsformen ist eine Speichervorrichtung 130 eine verwaltete Speichervorrichtung, die eine Rohspeichervorrichtung kombiniert mit einer lokalen Steuerung (z. B. der lokalen Steuerung 135) zur Medienverwaltung innerhalb desselben Speichervorrichtungspakets ist. Ein Beispiel für eine verwaltete Speichervorrichtung ist eine verwaltete NAND(managed NAND - MNAND)-Vorrichtung.
  • Eine Befehlsverarbeitungskomponente 113 der Steuerung 115 empfängt die Befehle, die durch das Hostsystem 120 über die physische Hostschnittstelle gesendet werden. Die Befehlsverarbeitungskomponente 113 kann in der Steuerung 115 oder einer oder mehreren der Speichervorrichtungen 130 oder 140 beinhaltet sein. In einigen Ausführungsformen beinhaltet die Steuerung 115 mindestens einen Abschnitt der Befehlsverarbeitungskomponente 113. Zum Beispiel kann die Steuerung 115 den Prozessor 117 (Verarbeitungsvorrichtung) beinhalten, der zum Ausführen von Anweisungen, die im lokalen Speicher 119 gespeichert sind, zum Durchführen der in dieser Schrift beschriebenen Operationen konfiguriert ist.
  • Anfänglich kann die Steuerung 115 dazu konfiguriert sein (z. B. durch von dem Hersteller installierte Firmware), in der Lage zu sein, nur einen begrenzten Satz von Befehlstypen zu verarbeiten, die zuvor zum Beispiel durch einen Hersteller der Steuerung 115 bestimmt werden. Die Befehlsverarbeitungskomponente 113 der Steuerung ist dazu konfiguriert, eine dynamische Erweiterung von Befehlen zu ermöglichen. Das heißt, die Befehlsverarbeitungskomponente 113 ist in der Lage, der Steuerung 115 Funktionalität hinzuzufügen, um zusätzliche Befehlstypen zu verarbeiten. Um die Befehle der Steuerung 115 zu erweitern, stellt das Hostsystem 120 der Steuerung 115 ein Befehlserweiterungsmodul bereit. Das Befehlserweiterungsmodul umfasst einen Satz von maschinenlesbaren Anweisungen, die es der Steuerung 115 ermöglichen, sobald diese installiert sind, mindestens einen neuen Befehlstyp zu verarbeiten, der nicht in dem vorbestimmten Satz von Befehlstypen enthalten ist, den die Befehlsverarbeitungskomponente 113 der Steuerung 115 ermöglicht hat, ihn zu verarbeiten. Das Befehlserweiterungsmodul ist mit einer digitalen Signatur bereitgestellt, die durch die Befehlsverarbeitungskomponente 113 verifiziert wird, bevor das Befehlserweiterungsmodul vorübergehend auf der Steuerung 115 installiert wird. Zum Beispiel kann die Befehlsverarbeitungskomponente 113 das Befehlserweiterungsmodul in eine flüchtige Speichervorrichtung (z. B. die Speichervorrichtung 130) laden. Die Installation des Befehlserweiterungsmoduls ist auf diese Weise vorübergehend, da das Befehlserweiterungsmodul bei einem Neustart des Speichersubsystems 110 verloren geht. In einigen Ausführungsformen kann das Befehlserweiterungsmodul basierend auf dem Auslaufen eines TTL-Werts, der dem Modul zugeordnet ist, aus dem Speicher gelöscht werden.
  • Wenn die Befehlsverarbeitungskomponente 113 bestimmt, dass ein vom Hostsystem 120 empfangener Befehl einem Befehlstyp entspricht, für dessen Verarbeitung das installierte Befehlserweiterungsmodul konfiguriert ist, leitet eine Erweiterungsumleitungskomponente 114 der Befehlsverarbeitungskomponente 113 den Befehl an das Befehlserweiterungsmodul um (leitet ihn weiter) und das Befehlserweiterungsmodul verarbeitet den Befehl entsprechend.
  • 2A - 2C sind Datenflussdiagramme, die Interaktionen zwischen Komponenten in einer sicheren Kommunikationsumgebung veranschaulichen, wenn ein beispielhaftes Verfahren zur dynamischen Erweiterung von Speichersubsystembefehlen gemäß einigen Ausführungsformen der vorliegenden Offenbarung ausgeführt wird.
  • Im Kontext von 2A - 2C wird ein asymmetrisches Verschlüsselungsschlüsselpaar - ein öffentlicher Schlüssel 200 und ein privater Schlüssel 201 - vorab erzeugt und der Befehlsverarbeitungskomponente 113 kann der öffentliche Schlüssel 200 zur Verfügung gestellt werden, während der private Schlüssel 201 separat in einer sicheren Umgebung (z. B. umfassend einen oder mehrere Prozessoren) geführt wird. Die Befehlsverarbeitungskomponente 113 speichert den öffentlichen Schlüssel 200 in einem Schlüsselspeicher 202. Der Schlüsselspeicher 202 kann innerhalb einer nichtflüchtigen Speichervorrichtung der Steuerung 115 (z. B. lokaler Speicher 119) oder einer oder mehreren der Speichervorrichtungen 140 implementiert sein.
  • Wie gezeigt, kann die Befehlsverarbeitungskomponente 113 in einigen Ausführungsformen als Teil einer validierten Firmware 203 beinhaltet sein, die auf der Steuerung 115 installiert ist. Die Firmware 203 beinhaltet einen Satz von maschinenlesbaren Anweisungen, der durch die Steuerung 115 ausgeführt werden kann, um eine Reihe von Funktionen durchzuführen. Zum Beispiel ermöglicht die Firmware 203 der Steuerung 115, einen Satz vordefinierter Befehlstypen zu verarbeiten, der von dem Hostsystem 120 empfangen wird. Wie vorstehend angemerkt, kann das Hostsystem 120 Befehle an die Steuerung 115 über die Hostschnittstelle der Steuerung 115 übermitteln. Befehle, die einem aus dem Satz von vordefinierten Befehlstypen entsprechen, werden durch die Befehlsverarbeitungskomponente 113 verarbeitet. Die Firmware 203 ist dahingehend validiert, dass sie unter Verwendung des privaten Schlüssels 201 digital signiert wurde und die digitale Signatur durch die Steuerung 115 unter Verwendung des öffentlichen Schlüssels 200 verifiziert wurde. Beispielsweise wird, wie gezeigt, eine digitale Signatur 204, die basierend auf der Firmware 203 unter Verwendung des privaten Schlüssels 201 erzeugt wird, mit der Firmware 203 bereitgestellt, und die Steuerung 115 validiert die digitale Signatur 204 unter Verwendung des öffentlichen Schlüssels 200.
  • Um die Fähigkeit der Steuerung 115 zu erweitern, einen oder mehrere zusätzliche Befehle zu verarbeiten, veranlasst ein Benutzer 205 des Hostsystems 120 das Hostsystem 120, eine Befehlserweiterungsanforderung an die Steuerung 115 zu senden. Die Befehlserweiterungsanforderung beinhaltet ein Befehlserweiterungsmodul 206 und eine digitale Signatur 207. Das Befehlserweiterungsmodul 206 umfasst einen Satz von maschinenlesbaren Anweisungen, die, sobald sie durch die Steuerung 115 installiert wurden, der Steuerung 115 ermöglichen, mindestens einen neuen Befehlstyp zu verarbeiten, der nicht in dem Satz von vordefinierten Befehlstypen beinhaltet ist, den die Firmware 203 der Steuerung 115 ermöglicht, ihn zu verarbeiten. Die digitale Signatur 207 wird basierend auf dem Befehlserweiterungsmodul 206 unter Verwendung des privaten Schlüssels 201 erzeugt. In einigen Ausführungsformen ist eine Sicherheitsversion des Erweiterungsmoduls 206 in der Befehlserweiterungsanforderung beinhaltet. Zum Beispiel kann die Sicherheitsversion in einem Feld des Erweiterungsmoduls 206 oder anderweitig in einem Feld der Befehlserweiterungsanforderung spezifiziert sein.
  • Die Befehlsverarbeitungskomponente 113 empfängt die Befehlserweiterungsanforderung und verifiziert die digitale Signatur 207, um sicherzustellen, dass das Erweiterungsmodul 206 durch eine vertrauenswürdige Quelle bereitgestellt wurde. Die Befehlsverarbeitungskomponente 113 verwendet den öffentlichen Schlüssel 200, um die digitale Signatur 207 zu verifizieren. In einem Beispiel kann die digitale Signatur 207 erzeugt werden, indem ein erster Hash basierend auf dem Erweiterungsmodul 206 erstellt wird, und der erste Hash kann unter Verwendung des privaten Schlüssels 201 verschlüsselt werden, um die digitale Signatur 207 zu produzieren. Um die digitale Signatur 207 zu verifizieren, erzeugt die Befehlsverarbeitungskomponente 113 einen zweiten Hash basierend auf dem empfangenen Erweiterungsmodul 206 und entschlüsselt die digitale Signatur 207, um den ersten Hash zu produzieren. Die Befehlsverarbeitungskomponente 113 vergleicht den ersten und den zweiten Hash und wenn sie übereinstimmen, ist die digitale Signatur 207 gültig. Wenn der erste und der zweite Hash nicht übereinstimmen, bestimmt die Befehlsverarbeitungskomponente 113, dass die digitale Signatur 207 nicht gültig ist, und die Befehlserweiterungsanforderung wird zurückgewiesen.
  • Wie in 2B gezeigt, wird das Erweiterungsmodul 206 mindestens teilweise basierend auf der erfolgreichen Validierung der digitalen Signatur 207 vorübergehend auf der Steuerung 115 installiert. Auf diese Weise können die Befehle der Steuerung 115 über die anfänglichen Fähigkeiten hinaus erweitert werden, ohne der Steuerung 115 ein aktualisiertes Firmwarepaket bereitstellen zu müssen und ohne ein aktualisiertes Firmwarepaket verifizieren zu müssen, das viel größer sein kann als das Erweiterungsmodul 206.
  • In einigen Ausführungsformen kann die Befehlsverarbeitungskomponente 113 eine Sicherheitsversion des Erweiterungsmoduls 206 vor der Installation verifizieren. Die Sicherheitsversion dient der Anti-Rollback-Unterstützung (z. B. um zu verhindern, dass ein gültig signiertes Erweiterungsmodul auf der Vorrichtung installiert wird). Zum Beispiel kann die Befehlsverarbeitungskomponente 113 einen Sicherheitsversionszähler führen, um Befehlserweiterungsmodule zu verfolgen, die auf der Steuerung 115 installiert wurden, und kann die Sicherheitsversion des Erweiterungsmoduls 206 verifizieren, indem sie einen Vergleich der Sicherheitsversion mit den Sicherheitsversionszähler durchführt. Wenn die Sicherheitsversion eines heruntergeladenen und verifizierten Befehlserweiterungsmoduls gleich oder größer als ein gespeicherter Sicherheitsversionszählerwert ist, der durch die Befehlsverarbeitungskomponente 113 geführt wird (z. B. in einem NVM der Speichersubsystemsteuerung 115, wie etwa dem lokalen Speicher 119), kann das heruntergeladene Befehlserweiterungsmodul installiert und verwendet werden. Andernfalls, wenn die Sicherheitsversion des Moduls kleiner als die gespeicherte Sicherheitsversion ist, wird das Befehlserweiterungsmodul durch die Befehlsverarbeitungskomponente 113 zurückgewiesen. Wenn das Befehlserweiterungsmodul akzeptiert wird, aktualisiert (z. B. inkrementiert) die Befehlsverarbeitungskomponente 113 den gespeicherten Sicherheitsversionswert, wenn die Sicherheitsversion des Befehlserweiterungsmoduls größer als der gegenwärtig gespeicherte Wert ist.
  • In verschiedenen anderen Ausführungsformen kann ein TTL-Wert zusätzlich zu oder alternativ zu dem Sicherheitsversionszähler verwendet werden, um die Lebensdauer des Befehlserweiterungsmoduls zu steuern. Das heißt, das Befehlserweiterungsmodul kann einen TTL-Wert beinhalten und sobald das Befehlserweiterungsmodul heruntergeladen und verifiziert ist, beginnt der TTL-Zähler herunterzuzählen. Sobald der TTL-Zähler Null erreicht, kann das Befehlserweiterungsmodul aus dem Vorrichtungsspeicher gelöscht werden und ein neues Erweiterungsmodul muss heruntergeladen werden.
  • Unter fortgesetzter Bezugnahme auf 2B kann das Hostsystem 120 einen Befehl an die Steuerung 115 senden (z. B. basierend auf einer Eingabe von dem Benutzer 205). Die Erweiterungsumleitungskomponente 114 parst den Befehl und bestimmt, dass der Befehl einem Befehlstyp entspricht, zu dessen Verarbeitung das Erweiterungsmodul 206 in der Lage ist und für dessen Verarbeitung es verantwortlich ist. Basierend auf Bestimmen, dass der erweiterte Befehl dem neuen Befehlstyp entspricht, der dem Erweiterungsmodul 206 zugeordnet ist, leitet die Erweiterungsumleitungskomponente 114 den Befehl an das Erweiterungsmodul 206 um und das Erweiterungsmodul 206 verarbeitet wiederum den Befehl. Beim Verarbeiten des Befehls kann das Erweiterungsmodul 206 einen oder mehrere Rückrufe an die Firmware 203 durchführen, um durch die Firmware 203 bereitgestellte Funktionalität aufzurufen.
  • Das Erweiterungsmodul 206 wird vorübergehend auf der Steuerung 115 installiert, weil das Erweiterungsmodul 206 auf einer flüchtigen Speichervorrichtung (z. B. der Speichervorrichtung 130) gespeichert ist, und somit wird das Erweiterungsmodul 206 beim Neustart des Speichersubsystems 110 gelöscht. Wie zum Beispiel in 2C gezeigt, ist das Erweiterungsmodul 206 nach einem Neustart nicht mehr auf die Steuerung 115 geladen. In einem weiteren Beispiel kann das Erweiterungsmodul 206 basierend auf dem Auslaufen eines TTL-Werts gelöscht werden, der dem Erweiterungsmodul 206 zugeordnet ist. Wie oben erwähnt, ist die Befehlsverarbeitungskomponente 113 nicht in der Lage, das Erweiterungsmodul 206 erneut zu installieren, da die Sicherheitsversion des Erweiterungsmoduls 206 nicht mehr dem Sicherheitsversionszähler entspricht, der durch die Befehlsverarbeitungskomponente 113 geführt wird.
  • 3 und 4 sind Flussdiagramme, die ein beispielhaftes Verfahren 300 zur dynamischen Erweiterung von Speichersubsystembefehlen gemäß einigen Ausführungsformen der vorliegenden Offenbarung veranschaulichen. Das Verfahren 300 kann durch Verarbeitungslogik ausgeführt werden, die Hardware (z. B. eine Verarbeitungsvorrichtung, Schaltkreise, dedizierte Logik, programmierbare Logik, Mikrocode, Hardware einer Vorrichtung, eine integrierte Schaltung usw.), Software (z. B. Anweisungen, die auf einer Verarbeitungsvorrichtung laufen oder ausgeführt werden) oder eine Kombination davon beinhalten kann. In einigen Ausführungsformen wird das Verfahren 300 durch die Befehlsverarbeitungskomponente 113 aus 1 durchgeführt. Obwohl in einer konkreten Abfolge oder Reihenfolge gezeigt, kann die Reihenfolge der Prozesse modifiziert werden, sofern nicht anderweitig spezifiziert. Somit sollten die veranschaulichten Ausführungsformen lediglich als Beispiele verstanden werden, und die veranschaulichten Prozesse können in einer unterschiedlichen Reihenfolge durchgeführt werden, und einige Prozesse können parallel durchgeführt werden. Zusätzlich können ein oder mehrere Prozesse in verschiedenen Ausführungsformen ausgelassen werden. Somit sind nicht alle Prozesse in jeder Ausführungsform erforderlich. Andere Prozessabläufe sind möglich.
  • Vor dem Verfahren 300 wird ein asymmetrisches öffentliches/privates Schlüsselpaar - ein öffentlicher Schlüssel und ein privater Schlüssel - vorerzeugt und der Verarbeitungsvorrichtung kann der öffentliche Schlüssel zur Verfügung gestellt werden oder anderweitig Zugriff darauf haben, während der private Schlüssel in einer separaten und gesonderten sicheren Umgebung (z. B. betrieben durch einen OEM) geführt wird. Ferner beinhaltet die Verarbeitungsvorrichtung Firmware, die es der Verarbeitungsvorrichtung ermöglicht, einen vorbestimmten Satz von Befehlstypen zu verarbeiten.
  • Bei Operation 305 empfängt die Verarbeitungsvorrichtung ein Befehlserweiterungsmodul und eine digitale Signatur als Teil einer Befehlserweiterungsanforderung. Das Befehlserweiterungsmodul umfasst einen Satz von maschinenlesbaren Anweisungen, der es der Verarbeitungsvorrichtung ermöglicht, mindestens einen neuen Befehlstyp zu verarbeiten, der nicht in dem vorbestimmten Satz von Befehlstypen beinhaltet ist, den die Firmware der Verarbeitungsvorrichtung ermöglicht, ihn zu verarbeiten. Die digitale Signatur wird basierend auf dem Befehlserweiterungsmodul unter Verwendung des privaten Schlüssels erzeugt. Das Signieren des Befehlserweiterungsmoduls mit der kryptografischen Signatur kann in einer entfernten und sicheren Umgebung erfolgen. Die digitale Signatur kann eine asymmetrische kryptografische Signatur umfassen, die unter Verwendung eines kryptografischen Algorithmus, wie etwa eines Rivest Shamir Adleman (RSA)-Algorithmus, erzeugt wird. Die kryptografische Signatur kann einem öffentlichen Schlüssel, der mit einem oder mehreren Vorrichtungen geteilt werden kann, und einem privaten Schlüssel, der mit einer begrenzten Anzahl von Vorrichtungen geteilt werden kann, zugeordnet sein. Die Kombination aus dem öffentlichen und dem privaten Schlüssel kann verwendet werden, um die Integrität des Befehlserweiterungsmoduls unter Verwendung des asymmetrischen kryptografischen Algorithmus zu verifizieren. In Übereinstimmung mit einigen Ausführungsformen kann das Befehlserweiterungsmodul auch verschlüsselt werden, zum Beispiel unter Verwendung eines symmetrischen kryptografischen Algorithmus (z. B. Advanced Encryption Standard (AES)).
  • Die Befehlserweiterungsanforderung kann von dem Hostsystem 120 empfangen werden. In einigen Ausführungsformen beinhaltet Empfangen der Anforderung Empfangen eines oder mehrerer Befehle von dem Hostsystem über eine Hostsystemschnittstelle. In einigen Ausführungsformen beinhaltet Empfangen der Anforderung Empfangen der Anforderung von dem Hostsystem über einen Kommunikationsanschluss (z. B. einen UART-Port oder einen anderen seriellen Kommunikationsport, der eine Zwei-Wege-Kommunikation unterstützt). In einigen Ausführungsformen kann eine Außerbandschnittstelle zum Austauschen von Daten zwischen dem Hostsystem 120 und der Verarbeitungsvorrichtung verwendet werden (z. B. ein Systemverwaltungsbus (SMBus) oder ein Inter-Integrated-Circuit-(I2C)-Bus).
  • Die Verarbeitungsvorrichtung verifiziert bei Operation 310 die digitale Signatur unter Verwendung eines öffentlichen Schlüssels, der dem privaten Schlüssel entspricht. Wie oben erwähnt, wird der Verarbeitungsvorrichtung vorher der öffentliche Schlüssel zur Verfügung gestellt. Der öffentliche Schlüssel kann in einem Schlüsselspeicher (z. B. Schlüsselspeicher 202) gespeichert sein, der in einer nichtflüchtigen Speichervorrichtung (z. B. der lokale Speicher 119 oder die Speichervorrichtung 140) geführt wird. Die Kombination des öffentlichen und des privaten Schlüssels kann verwendet werden, um die digitale Signatur basierend auf einem oder mehreren kryptographischen Prozeduren zu verifizieren. Zum Beispiel kann die digitale Signatur eine asymmetrische kryptografische Signatur sein, die basierend auf einer asymmetrischen kryptografischen Prozedur verifiziert werden kann, die den asymmetrischen kryptografischen Algorithmus verwendet, der verwendet wird, um die Signatur zu erzeugen (z. B. RSA).
  • Als Reaktion auf eine erfolgreiche Validierung der digitalen Signatur installiert die Verarbeitungsvorrichtung vorübergehend das Befehlserweiterungsmodul bei Operation 315. Das Installieren des Befehlserweiterungsmoduls umfasst Speichern des Befehlserweiterungsmoduls in einer flüchtigen Speichervorrichtung (z. B. der Speichervorrichtung 130). Auf diese Weise ist die Installation des Befehlserweiterungsmoduls unbeständig, da das Befehlserweiterungsmodul beim Systemneustart oder Auslaufen eines TTL-Werts verloren geht.
  • Bei Operation 320 empfängt die Verarbeitungsvorrichtung einen Befehl und bestimmt bei Operation 325, dass der Befehl einem Befehlstyp entspricht, für den das Befehlserweiterungsmodul die Fähigkeit besitzt, ihn zu verarbeiten. Der Befehl kann von dem Hostsystem 120 über eine Hostsystemschnittstelle empfangen werden.
  • Basierend auf Bestimmen, dass der Befehl einem Befehlstyp entspricht, für den das Befehlserweiterungsmodul die Fähigkeit besitzt, ihn zu verarbeiten, leitet die Verarbeitungsvorrichtung den erweiterten Befehl bei Operation 330 an das Befehlserweiterungsmodul weiter. Genauer gesagt kann die Verarbeitungsvorrichtung eine Erweiterungsumleitungskomponente (z. B. Erweiterungsumleitungskomponente 114) umfassen, die für das Umleiten von Befehlen an das Befehlserweiterungsmodul verantwortlich ist, für deren Verarbeitung das Befehlserweiterungsmodul verantwortlich ist. Die Erweiterungsumleitungskomponente kann den Befehl parsen, um zu bestimmen, dass er einem Befehlstyp entspricht, der durch das Befehlserweiterungsmodul gehandhabt wird.
  • Das Befehlserweiterungsmodul verarbeitet bei Operation 335 den erweiterten Befehl. Das Befehlserweiterungsmodul kann eine oder mehrere Handlungen beim Verarbeiten des erweiterten Befehls durchführen. In einigen Fällen kann das Befehlserweiterungsmodul einen oder mehrere Rückrufe an die Verarbeitungsvorrichtung für Unterstützungsfunktionen durchführen, die zum Verarbeiten des erweiterten Befehls benötigt werden.
  • Wie in 4 gezeigt, kann das Verfahren 300 in einigen Ausführungsformen die Vorgänge 311, 312 und 316 beinhalten. In Übereinstimmung mit diesen Ausführungsformen können die Operationen 311 und 312 vor der Operation 315 durchgeführt werden, wo die Verarbeitungsvorrichtung vorübergehend das Befehlserweiterungsmodul installiert.
  • Bei Operation 311 bestimmt die Verarbeitungsvorrichtung eine Sicherheitsversion des Befehlserweiterungsmoduls. Die Sicherheitsversion des Befehlserweiterungsmoduls kann zum Beispiel in der Befehlserweiterungsanforderung enthalten sein, in der das Befehlserweiterungsmodul beinhaltet war.
  • Bei Operation 312 validiert die Verarbeitungsvorrichtung die Sicherheitsversion des Befehlserweiterungsmoduls. Die Verarbeitungsvorrichtung validiert die Sicherheitsversion des Befehlserweiterungsmoduls basierend auf gespeicherten Informationen, die verwendet werden, um durch die Verarbeitungsvorrichtung installierte Befehlserweiterungsmodule zu verfolgen. Zum Beispiel kann die Verarbeitungsvorrichtung einen Sicherheitsversionszähler führen, um zu verfolgen, welche Befehlserweiterungsmodule durch die Verarbeitungsvorrichtung installiert wurden. Die Verarbeitungsvorrichtung kann die Sicherheitsversion des Befehlserweiterungsmoduls mit dem Sicherheitsversionszähler vergleichen, um zu bestimmen, ob das Befehlserweiterungsmodul zuvor installiert war. Wenn das Befehlserweiterungsmodul zuvor nicht installiert war, validiert die Verarbeitungsvorrichtung erfolgreich die Sicherheitsversion und installiert das Erweiterungsmodul basierend auf den erfolgreichen Validierungen. Wenn das Befehlserweiterungsmodul zuvor installiert war, bestimmt die Verarbeitungsvorrichtung, dass die Sicherheitsversion ungültig ist, und die Verarbeitungsvorrichtung weist die Befehlserweiterungsanforderung zurück.
  • In Übereinstimmung mit diesen Ausführungsformen kann die Operation 316 nachfolgend auf Operation 315 durchgeführt werden. Bei Operation 316 inkrementiert die Verarbeitungsvorrichtung den Sicherheitsversionszähler basierend auf der Installation des Befehlserweiterungsmoduls. Wie vorstehend erwähnt, wird der Sicherheitsversionszähler verwendet, um zu verfolgen, welche Befehlserweiterungsmodule durch die Verarbeitungsvorrichtung installiert worden sind. Nach Aktualisieren des Sicherheitsversionszählers kann das Befehlserweiterungsmodul nicht länger durch die Verarbeitungsvorrichtung installiert werden.
  • In verschiedenen anderen Ausführungsformen kann ein TTL-Wert zusätzlich oder alternativ zu dem Sicherheitsversionszähler verwendet werden. Das heißt, das Befehlserweiterungsmodul kann einen TTL-Wert spezifizieren, der verwendet wird, um die Lebensdauer des Erweiterungsmoduls zu steuern. Das heißt, sobald das Befehlserweiterungsmodul heruntergeladen und verifiziert ist, beginnt der TTL-Zähler herunterzuzählen. Sobald der TTL-Zähler Null erreicht, kann das Erweiterungsmodul aus dem Vorrichtungsspeicher bereinigt werden und ein neues Erweiterungsmodul muss heruntergeladen werden.
  • Beispiel 1 ist ein System, das Folgendes umfasst: eine flüchtige Speichervorrichtung, die flüchtige Speichermedien umfasst; und eine Verarbeitungsvorrichtung, die zum Verarbeiten eines anfänglichen Satzes von Befehlstypen konfiguriert ist, wobei die Verarbeitungsvorrichtung operativ mit der flüchtigen Speichervorrichtung gekoppelt ist, um Operationen durchzufuhren, die Folgendes umfassen: Empfangen eines Befehlserweiterungsmoduls und einer digitalen Signatur, wobei die digitale Signatur basierend auf dem Befehlserweiterungsmodul unter Verwendung eines privaten Schlüssel eines Schlüsselpaars erzeugt wird, wobei das Befehlserweiterungsmodul, sobald es durch die Verarbeitungsvorrichtung installiert ist, es der Verarbeitungsvorrichtung ermöglicht, einen neuen Befehlstyp zu verarbeiten, der nicht in dem anfänglichen Satz von Befehlstypen beinhaltet ist; Verifizieren der digitalen Signatur unter Verwendung eines öffentlichen Schlüssels des Schlüsselpaars; und basierend auf einer erfolgreichen Verifizierung der digitalen Signatur, vorübergehendes Installieren des Befehlserweiterungsmoduls auf dem System, wobei das vorübergehende Installieren des Befehlserweiterungsmoduls Laden des Befehlserweiterungsmoduls in die flüchtige Speichervorrichtungumfasst.
  • In Beispiel 2 umfasst der Gegenstand nach Beispiel 1 optional eine Erweiterungsumleitungskomponente zu Folgendem: Empfangen eines Befehls; Bestimmen, dass der Befehl dem neuen Befehlstyp entspricht; und Weiterleiten des Befehls an das Befehlserweiterungsmodul basierend darauf dass der Befehl dem neuen Befehlstyp entspricht.
  • In Beispiel 3 verarbeitet das Befehlserweiterungsmodul nach einem oder mehreren der Beispiele 1 oder 2 den Befehl.
  • In Beispiel 4 führt das Befehlserweiterungsmodul nach einem oder mehreren der Beispiele 1-3 einen oder mehrere Rückrufe an die Firmware beim Verarbeiten des Befehls durch.
  • In Beispiel 5 wird das Befehlserweiterungsmodul nach einem der Beispiele 1-4 bei einem Systemneustart oder Auslaufen eines TTL-Werts gelöscht.
  • In Beispiel 6 umfassen die Operationen nach einem oder mehreren der Beispiele 1-5 optional Bestimmen einer Sicherheitsversion des Befehlserweiterungsmoduls; und Validieren der Sicherheitsversion des Befehlserweiterungsmoduls basierend auf gespeicherten Informationen.
  • In Beispiel 7 umfassen die Operationen nach einem oder mehreren der Beispiele 1-6 optional Validieren einer Sicherheitsversion des Befehlserweiterungsmoduls durch Vergleichen der Sicherheitsversion des Befehlserweiterungsmoduls mit einem Sicherheitsversionszähler.
  • In Beispiel 8 umfassen die Operationen nach einem oder mehreren der Beispiele 1-7 optional Inkrementieren des Sicherheitsversionszählers basierend auf vorübergehendem Installieren des Befehlserweiterungsmoduls.
  • In Beispiel 9 umfasst der Gegenstand nach einem der Beispiele 1-8 optional ein nichtflüchtiges Speichermedium zum Speichern des öffentlichen Schlüssels.
  • In Beispiel 10 umfasst der Gegenstand nach einem oder mehreren der Beispiele 1-9 optional eine Hostschnittstelle, wobei das Befehlserweiterungsmodul und die digitale Signatur über die Hostschnittstelle als Teil einer Befehlserweiterungsanforderung empfangen werden.
  • In Beispiel 11 umfassen die Operationen nach einem oder mehreren der Beispiele 1-10 optional Folgendes: Verwenden eines asymmetrischen kryptografischen Algorithmus, um die digitale Signatur basierend auf einer Kombination aus dem öffentlichen und dem privaten Schlüssel zu verifizieren.
  • Beispiel 12 ist ein Verfahren, das Empfangen eines Befehlserweiterungsmoduls und einer digitalen Signatur durch eine Speichersubsystemsteuerung umfasst, die einen oder mehrere Prozessoren einer Maschine umfasst, wobei die digitale Signatur basierend auf dem Befehlserweiterungsmodul unter Verwendung eines privaten Schlüssels eines Schlüsselpaars erzeugt wird, wobei die Speichersubsystemsteuerung Firmware umfasst, die es dem Speichersubsystem ermöglicht, einen anfänglichen Satz von Befehlstypen zu verarbeiten, wobei das Befehlserweiterungsmodul einen Satz von maschinenlesbaren Anweisungen umfasst, der, sobald er durch die Speichersubsystemsteuerung installiert wurde, es der Speichersubsystemsteuerung ermöglicht, einen neuen Befehlstyp zu verarbeiten, der nicht in dem anfänglichen Satz von Befehlstypen beinhaltet ist; Verifizieren der digitalen Signatur durch die Speichersubsystemsteuerung unter Verwendung eines öffentlichen Schlüssels des Schlüsselpaars; und basierend auf einer erfolgreichen Verifizierung der digitalen Signatur, vorübergehendes Installieren des Befehlserweiterungsmoduls an der Speichersubsystemsteuerung, wobei die vorübergehende Installation des Befehlserweiterungsmoduls Speichern des Befehlserweiterungsmoduls in einer flüchtigen Speichervorrichtung der Speichersubsystemsteuerung umfasst.
  • In Beispiel 13 umfasst der Gegenstand nach Beispiel 1 optional Folgendes: Bestimmen, dass der Befehl dem neuen Befehlstyp entspricht; und Weiterleiten des Befehls an das Befehlserweiterungsmodul basierend darauf, dass der Befehl dem neuen Befehlstyp entspricht.
  • In Beispiel 14 umfasst der Gegenstand nach einem oder mehreren der Beispiele 12 oder 13 optional Verarbeiten des Befehls unter Verwendung des Erweiterungsbefehlsmoduls.
  • In Beispiel 15 wird das Befehlserweiterungsmodul nach einem der Beispiele 12-14 bei einem Systemneustart gelöscht.
  • In Beispiel 16 umfasst der Gegenstand nach einem oder mehreren der Beispiele 12-15 optional Bestimmen einer Sicherheitsversion des Befehlserweiterungsmoduls; und Validieren der Sicherheitsversion des Befehlserweiterungsmoduls basierend auf gespeicherten Informationen.
  • In Beispiel 17 umfassen die Operationen nach einem oder mehreren der Beispiele 12-16 optional Validieren einer Sicherheitsversion des Befehlserweiterungsmoduls durch Vergleichen der Sicherheitsversion des Befehlserweiterungsmoduls mit einem Sicherheitsversionszähler und Inkrementieren des Sicherheitsversionszählers basierend auf vorübergehendem Installieren des Befehlserweiterungsmoduls.
  • In Beispiel 18 umfasst der Gegenstand nach einem oder mehreren der Beispiele 12-17 optional Empfangen des Befehlserweiterungsmoduls und der digitalen Signatur von einem Hostsystem über eine Hostschnittstelle als Teil einer Befehlserweiterungsanforderung.
  • In Beispiel 19 umfasst der Gegenstand nach einem oder mehreren der Beispiele 12-18 optional Folgendes: Verwenden eines asymmetrischen kryptografischen Algorithmus, um die digitale Signatur basierend auf einer Kombination aus dem öffentlichen und dem privaten Schlüssel zu verifizieren.
  • Beispiel 20 ist ein nichttransitorisches computerlesbares Speichermedium, das Anweisungen umfasst, die, wenn sie durch eine Verarbeitungsvorrichtung ausgeführt werden, die Verarbeitungsvorrichtung dazu konfigurieren, Operationen durchzuführen, die Folgendes umfassen: Empfangen eines Befehlserweiterungsmoduls und einer digitalen Signatur, wobei die digitale Signatur basierend auf dem Befehlserweiterungsmodul unter Verwendung eines privaten Schlüssel eines Schlüsselpaars erzeugt wird, wobei die Verarbeitungsvorrichtung Firmware umfasst, die es der Verarbeitungsvorrichtung ermöglicht, einen anfänglichen Satz von Befehlstypen zu verarbeiten, wobei das Befehlserweiterungsmodul einen Satz von maschinenlesbaren Anweisungen umfasst, der, sobald er durch die Verarbeitungsvorrichtung installiert wurde, es der Verarbeitungsvorrichtung ermöglicht, einen neuen Befehlstyp zu verarbeiten, der nicht in dem anfänglichen Satz von Befehlstypen beinhaltet ist; Verifizieren der digitalen Signatur unter Verwendung eines öffentlichen Schlüssels des Schlüsselpaars; und, basierend auf einer erfolgreichen Überprüfung der digitalen Signatur, vorübergehendes Installieren des Befehlserweiterungsmoduls, wobei die vorübergehende Installation des Befehlserweiterungsmoduls Speichern des Befehlserweiterungsmoduls in einer flüchtigen Speichervorrichtung der Verarbeitungsvorrichtung umfasst.
  • 5 veranschaulicht eine beispielhafte Maschine in Form eines Computersystems 500, in dem ein Satz von Anweisungen ausgeführt werden kann, um die Maschine zu veranlassen, eine oder mehrere der in dieser Schrift erörterten Vorgehensweisen durchzuführen. In einigen Ausführungsformen kann das Computersystem 500 einem Hostsystem entsprechen (z. B. dem Hostsystem 120 aus 1), das ein Speichersubsystem (z. B. das Speichersubsystem 110 aus 1) beinhaltet, an dieses gekoppelt ist oder dieses nutzt oder verwendet werden kann, um die Operationen einer Steuerung durchzuführen (z. B. zum Ausführen eines Betriebssystems zum Durchführen von Operationen entsprechend der Befehlsverarbeitungskomponente 113 aus 1). In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem lokalen Netzwerk (LAN), einem Intranet, einem Extranet und/oder dem Internet verbunden (z. B. vernetzt) sein. Die Maschine kann in der Funktion eines Servers oder einer Client-Maschine in einer Client-Servernetzwerkumgebung, als ein Peer-Computer in einem Peer-zu-Peer-Netzwerk (oder verteiltem Netzwerk), oder als ein Server oder ein Client-Computer in einer Cloudcomputinginfrastruktur oder -umgebung betrieben werden.
  • Die Maschine kann ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelefon, eine Web-Appliance, ein Server, ein Netzwerk-Router, ein Switch oder eine Bridge oder eine beliebige Maschine sein, die in der Lage ist, einen Satz von Anweisungen (sequenziell oder anderweitig) auszuführen, die die von dieser Maschine auszuführenden Handlungen spezifizieren. Ferner ist der Begriff „Maschine“, obwohl eine einzelne Maschine veranschaulicht ist, außerdem so zu verstehen, dass er eine beliebige Zusammenstellung von Maschinen beinhaltet, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um eine beliebige oder mehrere der in dieser Schrift erörterten Vorgehensweisen durchzuführen.
  • Das beispielhafte Computersystem 500 beinhaltet eine Verarbeitungsvorrichtung 502, einen Hauptspeicher 504 (z. B. ROM, Flash-Speicher, DRAM wie etwa SDRAM oder Rambus DRAM (RDRAM) usw.), einen statischen Speicher 506 (z. B. Flash-Speicher, statischer Direktzugriffsspeicher (SRAM) usw.) und ein Datenspeichersystem 518, die über einen Bus 530 miteinander kommunizieren.
  • Die Verarbeitungsvorrichtung 502 stellt eine oder mehrere Allzweckverarbeitungsvorrichtungen dar, wie etwa einen Mikroprozessor, eine Zentralverarbeitungseinheit oder dergleichen. Insbesondere kann die Verarbeitungsvorrichtung 502 ein Mikroprozessor für die Berechnung eines komplexen Anweisungssatzes (Complex Instruction Set Computing - CISC), ein Mikroprozessor für die Berechnung eines verringerten Anweisungssatzes (Reduced Instruction Set Computing - RISC), ein Mikroprozessor für sehr lange Anweisungswörter (Very Long Instruction Word - VLIW), ein Prozessor, der andere Anweisungssätze umsetzt, oder Prozessoren sein, die eine Kombination von Anweisungssätzen umsetzen. Die Verarbeitungsvorrichtung 502 kann außerdem eine oder mehrere Spezialverarbeitungsvorrichtungen sein, wie etwa eine ASIC, ein FPGA, ein Prozessor für digitale Signale (digital signal processor - DSP), ein Netzwerkprozessor oder dergleichen. Die Verarbeitungsvorrichtung 502 ist dazu konfiguriert, Anweisungen 525 zum Durchführen der in dieser Schrift erörterten Operationen und Schritte durchzuführen. Das Computersystem 500 kann ferner eine Netzwerkschnittstellenvorrichtung 508 beinhalten, um über ein Netzwerk 520 zu kommunizieren.
  • Das Datenspeichersystem 518 kann ein maschinenlesbares Speichermedium 524 (auch als ein computerlesbares Medium bekannt) beinhalten, auf dem ein oder mehrere Anweisungssätze 525 oder Software gespeichert sind, die eine oder mehrere der in dieser Schrift beschriebenen Vorgehensweisen oder Funktionen verkörpert. Die Anweisungen 525 können sich während ihrer Ausführung durch das Computersystem 500 außerdem vollständig oder mindestens teilweise in dem Hauptspeicher 504 und/oder in der Verarbeitungsvorrichtung 502 befinden, wobei der Hauptspeicher 504 und die Verarbeitungsvorrichtung 502 ebenfalls maschinenlesbare Speichermedien darstellen. Das maschinenlesbare Speichermedium 524, das Datenspeichersystem 518 und/oder der Hauptspeicher 504 können dem Speichersubsystem 110 aus 1 entsprechen.
  • In einer Ausführungsform beinhalten die Anweisungen 526 Anweisungen zum Implementieren einer Funktionalität, die einer Sicherheitskomponente (z. B. der Befehlsverarbeitungskomponente 113 aus 1) entspricht. Während das maschinenlesbare Speichermedium 524 in einem Ausführungsbeispiel als einzelnes Medium dargestellt ist, sollte der Begriff „maschinenlesbares Speichermedium“ ein einzelnes Medium oder mehrere Medien beinhalten, die den einen oder die mehreren Sätze von Anweisungen speichern. Der Begriff „maschinenlesbares Speichermedium“ ist außerdem so zu verstehen, dass er ein beliebiges Medium beinhaltet, das in der Lage ist, einen Satz von Anweisungen zur Ausführung durch die Maschine zu speichern oder zu kodieren und welche die Maschine veranlassen, eine oder mehrere der Vorgehensweisen der vorliegenden Offenbarung durchzuführen. Der Begriff „maschinenlesbares Speichermedium“ ist dementsprechend so zu verstehen, dass er, ohne darauf beschränkt zu sein, Festkörperspeicher und optische Medien und magnetische Medien beinhaltet.
  • Einige Abschnitte der vorhergehenden detaillierten Beschreibungen wurden hinsichtlich Algorithmen und symbolischen Darstellungen von Vorgängen an Datenbits innerhalb eines Computerspeichers dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Wege, die von Fachleuten der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit anderen Fachleuten am effektivsten zu vermitteln. Ein Algorithmus ist hier und im Allgemeinen konzipiert, eine selbstkonsistente Sequenz an Operationen zu sein, die zu einem gewünschten Ergebnis führt. Die Operationen sind diejenigen, die physische Manipulationen physischer Mengen erfordern. In der Regel, aber nicht zwingend, nehmen diese Mengen die Form von elektrischen oder magnetischen Signalen an, die dazu in der Lage sind, gespeichert, kombiniert, verglichen und anderweitig manipuliert zu werden. Es hat sich manchmal als praktisch erwiesen, hauptsächlich aus Gründen der gewöhnlichen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Charakter, Begriffe, Zahlen oder dergleichen zu bezeichnen.
  • Es sollte jedoch berücksichtigt werden, dass all diese und ähnliche Begriffe den angemessenen physischen Größen zuzuordnen sind und lediglich praktische Bezeichnungen sind, die auf diese Größen angewandt werden. Die vorliegende Offenbarung kann die Handlung und Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung betreffen, die Daten, die als physische (elektronische) Größen innerhalb der Register und Speicher des Computersystems dargestellt sind, manipuliert und in andere Daten umwandelt, die ähnlich als physische Größen innerhalb der Speicher oder Register des Computersystems oder anderer solcher Informationsdatenspeichersysteme dargestellt sind.
  • Die vorliegende Offenbarung bezieht sich außerdem auf ein Gerät zum Durchführen der Operationen in dieser Schrift. Dieses Gerät kann speziell für die beabsichtigten Zwecke konstruiert sein oder es kann einen Allzweckcomputer beinhalten, der durch ein im Computer gespeichertes Computerprogramm wahlweise aktiviert oder erneut konfiguriert wird. Ein solches Computerprogramm kann auf einem computerlesbaren Speichermedium gespeichert werden, wie etwa, aber nicht beschränkt auf, jede Art von Platte, einschließlich Disketten, optische Platten, CD-ROMs und magneto-optische Platten; ROMs; RAMs; löschbare programmierbare Nur-Lese-Speicher (EPROMs); EEPROMs; magnetische oder optische Karten; oder jede Art von Medien, die zum Speichern elektronischer Anweisungen geeignet sind, die jeweils an einen Computersystembus gekoppelt sind.
  • Die in dieser Schrift vorgestellten Algorithmen und Anzeigen beziehen sich nicht grundsätzlich auf einen bestimmten Computer oder ein bestimmtes anderes Gerät. Verschiedene Allzwecksysteme können mit Programmen gemäß den in dieser Schrift enthaltenen Lehren verwendet werden, oder es kann sich als vorteilhaft erweisen, eine spezialisiertere Vorrichtung zu konstruieren, um das Verfahren durchzuführen. Die Struktur für eine Reihe dieser Systeme wird wie in der vorstehenden Beschreibung angegeben angezeigt. Zusätzlich wird die vorliegende Offenbarung nicht unter Bezugnahme auf eine konkrete Programmiersprache beschrieben. Es versteht sich, dass eine Reihe von Programmiersprachen verwendet werden kann, um die in dieser Schrift beschriebenen Lehren der Offenbarung umzusetzen.
  • Die vorliegende Offenbarung kann als ein Computerprogrammprodukt oder eine Software bereitgestellt sein, das/die ein maschinenlesbares Medium beinhalten kann, das darauf gespeicherte Anweisungen aufweist, die verwendet werden können, um ein Computersystem (oder andere elektronische Vorrichtungen) zu programmieren, um einen Prozess gemäß der vorliegenden Offenbarung durchzuführen. Ein maschinenlesbares Medium beinhaltet einen beliebigen Mechanismus zum Speichern von Informationen in einer Form, die durch eine Maschine (z. B. einen Computer) lesbar ist. In einigen Ausführungsformen beinhaltet ein maschinenlesbares (z. B. computerlesbares) Medium ein maschinenlesbares (z. B. computerlesbares) Speichermedium, wie etwa einen ROM, einen RAM, magnetische Plattenspeichermedien, optische Speichermedien, Flash-Speicherkomponenten usw.
  • In der vorangehenden Beschreibung wurden Ausführungsformen der Offenbarung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen davon beschrieben. Es ist offensichtlich, dass verschiedene Modifikationen daran vorgenommen werden können, ohne vom breiteren Umfang von Ausführungsformen der Offenbarung, wie in den folgenden Ansprüchen dargelegt, abzuweichen. Die Beschreibung und die Zeichnungen sind dementsprechend eher in einem veranschaulichenden als in einem einschränkenden Sinne zu verstehen.
  • 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 Patentliteratur
    • US 16/749558 [0001]

Claims (20)

  1. System, das Folgendes umfasst: eine flüchtige Speichervorrichtung; und eine Verarbeitungsvorrichtung, die dazu konfiguriert ist, einen anfänglichen Satz von Befehlstypen zu verarbeiten, wobei die Verarbeitungsvorrichtung operativ mit der flüchtigen Speichervorrichtung gekoppelt ist, um Operationen durchzuführen, die Folgendes umfassen: Empfangen eines Befehlserweiterungsmoduls und einer digitalen Signatur, wobei die digitale Signatur basierend auf dem Befehlserweiterungsmodul unter Verwendung eines privaten Schlüssels eines Schlüsselpaars erzeugt wird, wobei das Befehlserweiterungsmodul, sobald es durch die Verarbeitungsvorrichtung installiert ist, es der Verarbeitungsvorrichtung ermöglicht, einen neuen Befehlstyp zu verarbeiten, der nicht in dem anfänglichen Satz von Befehlstypen beinhaltet ist; Verifizieren der digitalen Signatur unter Verwendung eines öffentlichen Schlüssels des Schlüsselpaars; und basierend auf einer erfolgreichen Verifizierung der digitalen Signatur, vorübergehendes Installieren des Befehlserweiterungsmoduls auf dem System, wobei das vorübergehende Installieren des Befehlserweiterungsmoduls Laden des Befehlserweiterungsmoduls in die flüchtige Speichervorrichtung umfasst.
  2. System nach Anspruch 1, wobei die Verarbeitungsvorrichtung eine Erweiterungsumleitungskomponente umfasst zum: Empfangen eines Befehls; Bestimmen, dass der Befehl dem neuen Befehlstyp entspricht; und Weiterleiten des Befehls an das Befehlserweiterungsmodul basierend darauf, dass der Befehl dem neuen Befehlstyp entspricht.
  3. System nach Anspruch 2, wobei das Befehlserweiterungsmodul den Befehl verarbeitet.
  4. System nach Anspruch 3, wobei das Befehlserweiterungsmodul beim Verarbeiten des Befehls einen oder mehrere Rückrufe an die Verarbeitungsvorrichtung durchführt.
  5. System nach Anspruch 1, wobei das Befehlserweiterungsmodul beim Systemneustart oder Auslaufen eines Time-to-Live(time to live - TTL)-Werts gelöscht wird.
  6. System nach Anspruch 1, wobei die Operationen ferner Folgendes umfassen: Bestimmen einer Sicherheitsversion des Befehlserweiterungsmoduls; und Validieren der Sicherheitsversion des Befehlserweiterungsmoduls basierend auf gespeicherten Informationen.
  7. System nach Anspruch 6, wobei das Validieren der Sicherheitsversion des Befehlserweiterungsmoduls Vergleichen der Sicherheitsversion des Befehlserweiterungsmoduls mit einem Sicherheitsversionszähler umfasst.
  8. System nach Anspruch 7, wobei die Operationen ferner Folgendes umfassen: Inkrementieren des Sicherheitsversionszählers basierend auf vorübergehendem Installieren des Befehlserweiterungsmoduls.
  9. System nach Anspruch 1, ferner umfassend nichtflüchtige Speichermedien zum Speichern des öffentlichen Schlüssels.
  10. System nach Anspruch 1, ferner umfassend eine Hostschnittstelle, wobei das Befehlserweiterungsmodul und die digitale Signatur über die Hostschnittstelle als Teil einer Befehlserweiterungsanforderung empfangen werden.
  11. System nach Anspruch 1, wobei das Verifizieren der digitalen Signatur durch die Verarbeitungsvorrichtung Verwenden eines asymmetrischen kryptografischen Algorithmus umfasst, um die digitale Signatur basierend auf einer Kombination des öffentlichen und des privaten Schlüssels zu verifizieren.
  12. Verfahren, das Folgendes umfasst: Empfangen eines Befehlserweiterungsmoduls und einer digitalen Signatur durch eine Speichersubsystemsteuerung, die einen oder mehrere Prozessoren einer Maschine umfasst, wobei die digitale Signatur basierend auf dem Befehlserweiterungsmodul unter Verwendung eines privaten Schlüssels eines Schlüsselpaars erzeugt wird, wobei die Speichersubsystemsteuerung Firmware umfasst, die es dem Speichersubsystem ermöglicht, einen anfänglichen Satz von Befehlstypen zu verarbeiten, wobei das Befehlserweiterungsmodul einen Satz von maschinenlesbaren Anweisungen umfasst, der, sobald er durch die Speichersubsystemsteuerung installiert wurde, es der Speichersubsystemsteuerung ermöglicht, einen neuen Befehlstyp zu verarbeiten, der nicht in dem anfänglichen Satz von Befehlstypen beinhaltet ist; Verifizieren der digitalen Signatur durch die Speichersubsystemsteuerung unter Verwendung eines öffentlichen Schlüssels des Schlüsselpaars; und basierend auf einer erfolgreichen Verifizierung der digitalen Signatur, vorübergehendes Installieren des Befehlserweiterungsmoduls an der Speichersubsystemsteuerung, wobei das vorübergehende Installieren des Befehlserweiterungsmoduls Speichern des Befehlserweiterungsmoduls in einer flüchtigen Speichervorrichtung der Speichersubsystemsteuerung umfasst.
  13. Verfahren nach Anspruch 12, das ferner Folgendes umfasst: Empfangen eines Befehls; Bestimmen, dass der Befehl dem neuen Befehlstyp entspricht; und Weiterleiten des Befehls an das Befehlserweiterungsmodul durch eine Umleitungskomponente der Speichersubsystemsteuerung basierend darauf, dass der Befehl dem neuen Befehlstyp entspricht.
  14. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Verarbeiten des Befehls durch das Befehlserweiterungsmodul.
  15. Verfahren nach Anspruch 12, wobei das Befehlserweiterungsmodul bei einem Systemneustart gelöscht wird.
  16. Verfahren nach Anspruch 12, das ferner Folgendes umfasst: Bestimmen einer Sicherheitsversion des Befehlserweiterungsmoduls; und Validieren der Sicherheitsversion des Befehlserweiterungsmoduls basierend auf gespeicherten Informationen.
  17. Verfahren nach Anspruch 16, wobei: das Validieren der Sicherheitsversion des Befehlserweiterungsmoduls Vergleichen der Sicherheitsversion des Befehlserweiterungsmoduls mit einem Sicherheitsversionszähler umfasst; und das Verfahren ferner Folgendes umfasst: Inkrementieren des Sicherheitsversionszählers basierend auf vorübergehendem Installieren des Befehlserweiterungsmoduls.
  18. Verfahren nach Anspruch 12, wobei das Befehlserweiterungsmodul und die digitale Signatur von einem Hostsystem über eine Hostschnittstelle der Speichersubsystemsteuerung als Teil einer Befehlserweiterungsanforderung empfangen werden.
  19. Verfahren nach Anspruch 12, wobei das Verifizieren der digitalen Signatur durch die Verarbeitungsvorrichtung Verwenden eines asymmetrischen kryptografischen Algorithmus umfasst, um die digitale Signatur basierend auf einer Kombination des öffentlichen und des privaten Schlüssels zu verifizieren.
  20. Nichttransitorisches, computerlesbares Speichermedium, das Anweisungen umfasst, die, wenn sie durch eine Verarbeitungsvorrichtung ausgeführt werden, die Verarbeitungsvorrichtung dazu konfigurieren, Operationen durchzuführen, die Folgendes umfassen: Empfangen eines Befehlserweiterungsmoduls und einer digitalen Signatur, wobei die digitale Signatur basierend auf dem Befehlserweiterungsmodul unter Verwendung eines privaten Schlüssels eines Schlüsselpaars erzeugt wird, wobei die Verarbeitungsvorrichtung Firmware umfasst, die es der Verarbeitungsvorrichtung ermöglicht, einen anfänglichen Satz von Befehlstypen zu verarbeiten, wobei das Befehlserweiterungsmodul einen Satz von maschinenlesbaren Anweisungen umfasst, der, sobald er durch die Verarbeitungsvorrichtung installiert wurde, es der Verarbeitungsvorrichtung ermöglicht, einen neuen Befehlstyp zu verarbeiten, der nicht in dem anfänglichen Satz von Befehlstypen beinhaltet ist; Verifizieren der digitalen Signatur unter Verwendung eines öffentlichen Schlüssels des Schlüsselpaars; und basierend auf einer erfolgreichen Verifizierung der digitalen Signatur, vorübergehendes Installieren des Befehlserweiterungsmoduls, wobei das vorübergehende Installieren des Befehlserweiterungsmoduls Laden des Befehlserweiterungsmoduls in eine flüchtige Speichervorrichtung der Verarbeitungsvorrichtung umfasst.
DE112021000644.4T 2020-01-22 2021-01-21 Dynamische befehlserweiterung für ein speichersubsystem Pending DE112021000644T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/749,558 2020-01-22
US16/749,558 US11483137B2 (en) 2020-01-22 2020-01-22 Dynamic command extension for a memory sub-system
PCT/US2021/014366 WO2021150719A1 (en) 2020-01-22 2021-01-21 Dynamic command extension for a memory sub-system

Publications (1)

Publication Number Publication Date
DE112021000644T5 true DE112021000644T5 (de) 2022-11-24

Family

ID=76857422

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021000644.4T Pending DE112021000644T5 (de) 2020-01-22 2021-01-21 Dynamische befehlserweiterung für ein speichersubsystem

Country Status (6)

Country Link
US (3) US11483137B2 (de)
JP (1) JP2023511364A (de)
KR (1) KR20220123550A (de)
CN (1) CN115398409A (de)
DE (1) DE112021000644T5 (de)
WO (1) WO2021150719A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11483137B2 (en) 2020-01-22 2022-10-25 Micron Technology, Inc. Dynamic command extension for a memory sub-system
SG10202003630VA (en) * 2020-04-21 2021-09-29 Grabtaxi Holdings Pte Ltd Authentication and validation procedure for improved security in communications systems
US20200326925A1 (en) * 2020-06-26 2020-10-15 Intel Corporation Memory device firmware update and activation with memory access quiescence
US11570198B2 (en) * 2020-09-03 2023-01-31 Bank Of America Corporation Detecting and quantifying vulnerabilities in a network system
US20220182286A1 (en) * 2020-12-03 2022-06-09 Nutanix, Inc. Facilitating performance of node management actions in a computing infrastructure having diverse node interfaces

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63163626A (ja) * 1986-12-26 1988-07-07 Casio Comput Co Ltd プリンタにおけるコマンド制御装置
JP3332389B2 (ja) * 1991-02-04 2002-10-07 キヤノン株式会社 ファクシミリ装置
DE69231176T2 (de) * 1991-12-23 2000-11-23 Microsoft Corp., Redmond Verfahren zum Integrieren eines diskreten Unterprogramms in ein Hauptprogramm
JPH1125110A (ja) * 1997-07-04 1999-01-29 Toshiba Corp データ管理装置、及び方法、ならびに同方法がプログラムされ記録される記憶媒体
JP2000010785A (ja) * 1998-06-18 2000-01-14 Nec Corp 遠隔制御システム及び遠隔制御方法及び記録媒体
JP3863401B2 (ja) * 2001-10-12 2006-12-27 株式会社東芝 ソフトウェア処理装置
WO2004066091A2 (en) 2003-01-21 2004-08-05 Bitfone Corporation Update system capable of updating software across multiple flash chips
US7561967B2 (en) * 2005-07-29 2009-07-14 Novariant, Inc. Navigation receiver with functional extensibility
US7640424B2 (en) * 2005-10-13 2009-12-29 Sandisk Corporation Initialization of flash storage via an embedded controller
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
US8214653B1 (en) * 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
US9519647B2 (en) * 2012-04-17 2016-12-13 Sandisk Technologies Llc Data expiry in a non-volatile device
EP2704053B1 (de) * 2012-08-27 2016-09-21 Giesecke & Devrient GmbH Verfahren und System zur Aktualisierung einer Firmware eines Sicherheitsmoduls
KR102059183B1 (ko) 2013-03-07 2019-12-24 삼성전자주식회사 반도체 장치의 제조 방법 및 이에 의해 제조된 반도체 장치
KR20160013196A (ko) * 2013-05-29 2016-02-03 비자 인터네셔널 서비스 어소시에이션 보안 요소에서 수행되는 검증 시스템 및 방법
JP6488687B2 (ja) * 2014-04-10 2019-03-27 富士通株式会社 機能拡張方法、機能拡張プログラム、及び端末装置
US9524158B2 (en) 2015-02-23 2016-12-20 Apple Inc. Managing firmware updates for integrated components within mobile devices
US9917922B2 (en) * 2015-04-27 2018-03-13 Microsoft Technology Licensing, Llc Extensibility bundles for a cloud and devices suite
JP6810626B2 (ja) * 2017-02-08 2021-01-06 グローリー株式会社 現金処理システム
US10387336B2 (en) 2017-03-24 2019-08-20 Micron Technology, Inc. Memory protection based on system state
US10691340B2 (en) * 2017-06-20 2020-06-23 Samsung Electronics Co., Ltd. Deduplication of objects by fundamental data identification
US10853472B2 (en) * 2018-06-28 2020-12-01 Intel Corporation System, apparatus and method for independently recovering a credential
US11531757B2 (en) * 2019-12-12 2022-12-20 Mcafee, Llc Ransomware detection and mitigation
US11483137B2 (en) 2020-01-22 2022-10-25 Micron Technology, Inc. Dynamic command extension for a memory sub-system

Also Published As

Publication number Publication date
US20230030065A1 (en) 2023-02-02
US11483137B2 (en) 2022-10-25
CN115398409A (zh) 2022-11-25
US11895226B2 (en) 2024-02-06
US20240129114A1 (en) 2024-04-18
KR20220123550A (ko) 2022-09-07
US20210226779A1 (en) 2021-07-22
JP2023511364A (ja) 2023-03-17
WO2021150719A1 (en) 2021-07-29

Similar Documents

Publication Publication Date Title
DE112021000644T5 (de) Dynamische befehlserweiterung für ein speichersubsystem
DE112017006699T5 (de) Verfahren und einrichtung für bereichsbasierte prüfpunkte in einer speichervorrichtung
DE102015017399B3 (de) Speichergerät, Betriebsverfahren des Speichergeräts und elektronisches Gerät mit dem Speichergerät
DE112020005459T5 (de) Delegation eines kryptografischen schlüssels an ein speichersubsystem
DE112021000964T5 (de) Zur multi-faktor-authentifizierung fähiges speichersubsystem
DE102018114266A1 (de) Nichtflüchtige speichervorrichtung mit sicherem lesen
CN112836247B (zh) 与存储器子系统的安全数据通信
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102021120076A1 (de) Validierung von dram-inhalten unter verwendung einer internendatensignatur
US11880229B2 (en) Security capsule for enabling restricted features of a memory device
CN113127843B (zh) 用于验证的双重包装
US11809361B1 (en) Network data storage devices having external access control
DE102022126673A1 (de) Verwendung einer physisch nicht klonbaren funktion zur erzeugung einer speicherkennung
DE102022127567A1 (de) Authentifizierte modifizierung von speichersystemdaten
TWI824378B (zh) 支援將檔案寫入安裝於安全記憶裝置中之檔案系統的機制
DE102020103846A1 (de) Verfahren zum Betreiben eines Speichersystems mit Gegenmaßnahme gegen Replay-Angriff und Speichersystem, das dasselbe durchführt
DE112019007230T5 (de) Multimodus-Geschützter-Speicher
DE102010038179A1 (de) Individuelle Aktualisierung von Computerprogrammen
DE112021001848T5 (de) Mehrere pinkonfigurationen von speichervorrichtungen
DE112021000474T5 (de) Durchführung einer Medienverwaltungsoperation basierend auf einer Änderung eines Schreibmodus eines Datenblocks in einem Cache
DE102018113637A1 (de) Informationsverarbeitsverfahren, Informationsverarbeitungsvorrichtung und Aufzeichnungsmedium
DE112016000164T5 (de) Verarbeiten von datenspeicherungsbefehlen für gehäusedienste
DE102019127142A1 (de) Speichersystem zum verwalten freier seiten auf basis einer echtzeituhr und betriebsverfahren dafür
US11714925B2 (en) Assuring integrity and secure erasure of critical security parameters
DE102022121739A1 (de) Konfigurierbare speichergranularität für video/bildaufzeichnung

Legal Events

Date Code Title Description
R012 Request for examination validly filed