DE202016107447U1 - Adressvalidierung unter Verwendung von Signaturen - Google Patents

Adressvalidierung unter Verwendung von Signaturen Download PDF

Info

Publication number
DE202016107447U1
DE202016107447U1 DE202016107447.9U DE202016107447U DE202016107447U1 DE 202016107447 U1 DE202016107447 U1 DE 202016107447U1 DE 202016107447 U DE202016107447 U DE 202016107447U DE 202016107447 U1 DE202016107447 U1 DE 202016107447U1
Authority
DE
Germany
Prior art keywords
signature
physical address
request
requests
address
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.)
Active
Application number
DE202016107447.9U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202016107447U1 publication Critical patent/DE202016107447U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • 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/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/164Implementing security features at a particular protocol layer at the network layer
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (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)
  • Software Systems (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

System, das Folgendes umfasst: einen datenverarbeitenden Apparat; und ein nichtflüchtiges computerlesbares Speichermedium in Datenkommunikation mit der Datenverarbeitungsvorrichtung, das Anweisungen speichert, welche von einer Datenverarbeitungsvorrichtung ausführbar sind und bei dieser Ausführung bewirkt, dass die Datenverarbeitungsvorrichtung Operationen ausführt, umfassend: Empfangen einer Vielzahl von ersten Anforderungen durch eine Komponente aus einer Vorrichtung, wobei jede der Vielzahl von ersten Anforderungen für eine entsprechende physikalische Adresse eine entsprechende virtuelle Adresse beinhaltet; für jede der Vielzahl von ersten Anforderungen: Bestimmen einer ersten physikalischen Adresse durch die Komponente unter Verwendung der entsprechenden virtuellen Adresse; Erzeugen einer ersten Signatur für die erste physikalische Adresse, die erste Signatur zur Verwendung der Überprüfung der ersten physikalischen Adresse; und bereitstellen einer Antwort an die Vorrichtung, die die erste Signatur beinhaltet; Empfangen einer Vielzahl von zweiten Anforderungen von der Vorrichtung, von jeder Vielzahl von zweiten Anforderungen für den Zugriff auf eine entsprechende zweite physikalische Adresse und mit einer entsprechenden zweiten Signatur; Bestimmen, ob die entsprechende zweite physikalische Adresse unter Verwendung der entsprechenden zweiten Signatur durch die Komponente für jede der Vielzahl von zweiten Anforderungen gültig ist; und für jede zweite Anforderung, für die die zweite physikalische Adresse unter Verwendung der zweiten Signatur der entsprechenden zweiten Anforderung als gültig bestimmt wird, Bedienen der entsprechenden zweiten Anforderung.

Description

  • HINTERGRUND
  • Diese Spezifikation bezieht sich auf die Validierung von Speicherzugriffsanfragen.
  • Graphikverarbeitungseinheiten (GPUs) können sehr gleichzeitige Zugriffe auf zufällige Adressen aufweisen und können eine GPU-Hardware umfassen, um eine Adressenübersetzung durchzuführen, die auf einen dynamischen Direktzugriffsspeicher (DRAM) ausgerichtete Adressen mit zentraler Verarbeitungseinheit (CPU) erzeugt. In ähnlicher Weise können einige Netzwerkkarten (NICs) und Solid State Drives (SSDs) ihre eigene Adressübersetzung durchführen.
  • Peripheral Component Interconnect (Perifere Komponentenverbindung – PCI) Adressübersetzungsdienste (ATS) ermöglicht einer Vorrichtung, eine Adressübersetzung von einer Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU) anzufordern und die Übersetzung lokal auf der Vorrichtung zu speichern. Nachfolgende Zugriffe des Geräts auf den übersetzten Bereich können als bereits übersetzt markiert und die IOMMU umgangen werden.
  • ZUSAMMENFASSUNG
  • Eine Speicherverwaltungseinheit empfängt Adressenübersetzungsanfragen von einer Vorrichtung, z. B. verbunden mit einer Hauptplatine, und erzeugt eine Signatur für jede angeforderte physikalische Adresse. Die Speicherverwaltungseinheit stellt die Signatur für die Vorrichtung bereit und verwendet beim Empfangen von Speicherzugriffsanfragen von der Vorrichtung die entsprechende Signatur, um den Speicherort, auf den zugegriffen wird, zu validieren, die Vorrichtung zu senden, das die Anforderung sendet, oder beides.
  • Im Allgemeinen kann ein innovativer Aspekt des in dieser Spezifikation beschriebenen Gegenstands in Verfahren verkörpert werden, die die Empfangsaktionen einer Vielzahl von ersten Anforderungen durch eine Komponente aus einer Vorrichtung umfassen, wobei jede der Vielzahl von ersten Anforderungen für eine entsprechende physikalische Adresse und Einfügen einer entsprechenden virtuellen Adresse für jede der Vielzahl von ersten Anforderungen, die durch die Komponente eine erste physikalische Adresse unter Verwendung der entsprechenden virtuellen Adresse bestimmen, Erzeugen einer ersten Signatur für die erste physikalische Adresse, die erste Signatur zur Verwendung zur Validierung einer ersten physikalischen Adresse und Bereitstellen einer Antwort, die die erste Signatur beinhaltet, und Empfangen einer Vielzahl von zweiten Anforderungen von der Vorrichtung, von jeder der Vielzahl von zweiten Anforderungen für den Zugriff auf eine entsprechende zweite physikalische Adresse und das Einbeziehen einer entsprechenden zweiten Signatur durch die Komponente für jede der Vielzahl von zweiten Anforderungen um zu bestimmen, ob die entsprechende zweite physikalische Adresse unter Verwendung der entsprechenden zweiten Signatur gültig ist, und für jede zweite Anforderung, für die bestimmt wird, dass die zweite physikalische Adresse unter Verwendung der zweiten Signatur der entsprechenden zweiten Anforderung gültig ist, Service der entsprechenden zweiten Anforderung. Andere Ausführungsformen dieses Aspektes beinhalten entsprechende Computersysteme, Vorrichtungen und Computerprogramme, die auf einem oder mehreren Computerspeichermedien gespeichert sind, die jeweils ausgelegt sind, die Tätigkeiten der Verfahren auszuführen. Ein System von einem oder mehreren Computer, das Software, Firmware, Hardware oder eine Kombination davon installiert hat, kann so konfiguriert werden, um bestimmte Operationen oder Aktivitäten auszuführen, welche System im Betrieb verursacht oder veranlasst, die Aktionen auszuführen. Ein oder mehrere Computerprogramme können so konfiguriert werden, dass sie mittels der enthaltenen Anweisungen bestimmte Operationen oder Aktionen durchführen können, die bei Ausführung durch die Datenverarbeitungsvorrichtung bewirken, dass die Vorrichtung, die Aktionen ausführt.
  • Die vorstehenden und andere Ausführungsformen können jeweils optional oder in Kombination eines oder mehrere der folgenden Merkmale beinhalten. Das Verfahren kann für jede zweite Anforderung, für die die zweite physikalische Adresse als nicht gültig mit der zweiten Signatur der entsprechenden zweiten Anforderung bestimmt wird, die entsprechende zweite Anforderung nicht bedienen. Die zweite Anforderung kann nicht für eine zweite unterschiedliche Teilmenge der Vielzahl von zweiten Anforderungen, für jede der zweiten Anforderungen in der zweiten Teilmenge die jeweilige zweite Anforderung verweigern. Für eine zweite unterschiedliche Teilmenge der Vielzahl von zweiten Anforderungen kann die zweite Anforderung nicht für jede der zweiten Anforderungen in der zweiten Teilmenge einen entsprechenden Fehler beinhalten, den die jeweilige zweite Anforderung angibt. Für das Nicht-Bedienen einer zweiten, unterschiedlichen Teilmenge der Vielzahl von zweiten Anforderungen, kann die zweite Anforderung das Zurücksetzen oder Anhalten der Vorrichtung beinhalten. Das Nicht-Bedienen der entsprechenden zweiten Anforderung für jede zweite Anforderung für die die zweite physikalische Adresse als nicht gültig mit der zweiten Signatur der entsprechenden zweiten Anforderung bestimmt wird, kann die Änderung eines geheimen Wertes für die Vorrichtung beinhalten. Das Nicht-Bedienen der entsprechenden zweiten Anforderung für jede zweite Anforderung für die die zweite physikalische Adresse als nicht gültig mit der zweiten Signatur der entsprechenden zweiten Anforderung bestimmt wird, kann das Deaktivieren des Gerätezugriffs auf einen Speicher beinhalten. Das Verfahren kann die Bedienung mindestens einer der Vielzahl von zweiten Anforderungen umfassen, und nicht die Bedienung mindestens einer weiteren der Vielzahl von zweiten Anforderungen
  • Bei einigen Implementierungen umfasst das Verfahren das Empfangen einer bestimmten Anforderung vom Gerät, bestimmt ob die spezielle Anforderung eine virtuelle Adresse enthält, und bestimmt, ob die bestimmte Anforderung i) eine der Vielzahl von ersten Anforderungen ist als Antwort auf die Bestimmung, dass die spezielle Anforderung eine virtuelle Adresse beinhaltet, oder ii) eine der Vielzahl von zweiten Anforderungen als Antwort darauf, dass die spezielle Anforderung keine virtuelle Adresse beinhaltet. Jede der Vielzahl von ersten Anforderungen kann die entsprechende virtuelle Adresse und eine Kennung für die Vorrichtung beinhalten. Beim Erzeugen für jede der Vielzahl von ersten Anforderungen, kann die erste Signatur für die erste physikalische Adresse das Bestimmen eines geheimen Wertes unter Verwendung des Identifikators, Erzeugen eines Hash-Wertes unter Verwendung der ersten physikalischen Adresse und des geheimen Wertes, und das Erzeugen der ersten Signatur unter Verwendung wenigstens eines Teils des Hash-Werts beinhalten.
  • Bei einigen Implementierungen liefert die Antwort für jede Vielzahl von ersten Anforderungen die Verkettung der ersten Signatur die die erste Signatur beinhaltet und der ersten physikalischen Adresse und bereitstellen einer Antwort die die erste Signatur beinhaltet, die mit der ersten physikalischen Adresse in einem einzigen Feld der Antwort verkettet ist, an die Vorrichtung. Die Kennung für die Vorrichtung kann eine Gerätebusnummer für die Vorrichtung beinhalten. Jede der Vielzahl von zweiten Anforderungen kann die entsprechende zweite virtuelle Adresse, die entsprechende Signatur und die Kennung für die Vorrichtung beinhalten. Das Ermitteln eines Hash-Wertes unter Verwendung der entsprechenden zweiten physikalischen Adresse und des geheimen Schlüssels durch die Komponente für jede der Vielzahl von zweiten Anforderungen, ob die entsprechende zweite physikalische Adresse unter Verwendung der entsprechenden zweiten Signatur gültig ist, kann die Bestimmung des geheimen Schlüssels unter Verwendung des Identifikators umfassen, erzeugen einer dritten Signatur unter Verwendung wenigstens eines Teils des Hash-Werts, bestimmen, ob die entsprechende zweite Signatur und die dritte Signatur dieselben sind, und bestimmen, dass die entsprechende zweite physikalische Adresse gültig ist, als Reaktion darauf, dass die entsprechende zweite Signatur und die dritte Signatur identisch sind.
  • Jede der Vielzahl von zweiten Anforderungen kann die entsprechende zweite virtuelle Adresse, die entsprechende Signatur und die Kennung für die Vorrichtung beinhalten. Das Ermitteln eines Hash-Wertes unter Verwendung der entsprechenden zweiten physikalischen Adresse und des geheimen Schlüssels durch die Komponente für jede der Vielzahl von zweiten Anforderungen, ob die entsprechende dritte physikalische Adresse durch entschlüsseln der zweiten physikalische Adresse gültig ist, kann die Bestimmung des geheimen Schlüssels unter Verwendung des Identifikators umfassen, erzeugen einer dritten Signatur unter Verwendung wenigstens eines Teils des Hash-Werts, bestimmen, ob die entsprechende zweite Signatur und die dritte Signatur dieselben sind, und bestimmen, dass die entsprechende zweite physikalische Adresse gültig ist, als Reaktion darauf, dass die entsprechende zweite Signatur und die dritte Signatur identisch sind.
  • Bei einigen Implementierungen erzeugt die erste Signatur, die für jede der Vielzahl von ersten Anforderungen, unter Verwendung einer vorbestimmten Menge von niederwertigsten Bits aus dem Hash-Wert, mindestens einen Teil des Hash-Werts verwendet, das Erzeugen der ersten Signatur. Das Erzeugen für jede Vielzahl von ersten Anforderungen, kann die Signatur, die mindestens einen Teil des Hash-Werts verwendet, das Erzeugen der ersten Signatur unter Verwendung des gesamten Hash-Werts beinhalten. Das Erzeugen des Hash-Wertes durch Verschlüsseln der ersten physikalischen Adresse unter Verwendung des geheimen Wertes kann das Bestimmen eines Chiffriertextes und eines Authentifizierungs-Tags beinhalten, die die erste physikalische Adresse unter Verwendung des geheimen Wertes als Eingabe in einen GMOS-Prozess (Galois Message Authentication Code) verschlüsselt, wobei der Authentifizierungs-Tag als Hashwert verwendet wird.
  • Bei einigen Implementierungen kann das Verfahren unter Verwendung der Kennung von mindestens einem Berechtigungswert für die Vorrichtung bestimmen. Erzeugen des Hash-Wertes durch Verschlüsseln der ersten physikalischen Adresse unter Verwendung des geheimen Wertes kann das Bestimmen des Hash-Wertes durch Verschlüsseln der ersten physikalischen Adresse unter Verwendung von mindestens einem Berechtigungswert umfassen. Mindestens ein Berechtigungswert kann mindestens einen von einem Leseberechtigungs-Bit, Leseberechtigungs-Bit, ein Ausführungsberechtigungs-Bit, ein Cache-Bit, ein Cacheebenen-Hint-Bit, eine Transaktionsklasse oder eine virtuelle Kanalnummer beinhalten.
  • Bei einigen Implementierungen beinhaltet jede der Vielzahl von zweiten Anforderungen eine Kennung für die Vorrichtung. Jede der zweiten Signaturen kann eine verschlüsselte physikalische Adresse beinhalten. Das ermitteln, ob die entsprechende zweite physikalische Adresse unter Verwendung der entsprechenden zweiten Signatur gültig ist, kann durch die Komponente für jede der Vielzahl von zweiten Anforderungen bestimmt werden und beinhaltet unter Verwendung der Kennung, das Bestimmen eines geheimen Wertes, die Bestimmung eines entschlüsselten Wertes durch Entschlüsseln der entsprechenden verschlüsselten physikalischen Adresse unter Verwendung des geheimen Werts, ermitteln ob der entschlüsselte Wert ein Präfix von Nullen beinhaltet, das eine vorbestimmte Länge aufweist, bestimmen, dass die entsprechende zweite physikalische Adresse gültig ist, wenn festgestellt wird, dass der entschlüsselte Wert das Präfix von Nullen enthält, die die vorbestimmte Länge aufweisen, und den entschlüsselten Wert als die entsprechende zweite physikalische Adresse verwenden. Das Bestimmen des entschlüsselten Wertes durch Entschlüsseln der entsprechenden verschlüsselten physikalischen Adresse unter Verwendung des geheimen Werts kann das Bestimmen des entschlüsselten Wertes durch Entschlüsseln der entsprechenden verschlüsselten physikalischen Adresse unter Verwendung des geheimen Werts als Eingang zu einer Blockverschlüsselung beinhalten. Das Bestimmen des entschlüsselten Wertes durch Entschlüsseln der entsprechenden verschlüsselten physikalischen Adresse unter Verwendung des geheimen Werts kann das Bestimmen des entschlüsselten Wertes durch Entschlüsseln der entsprechenden verschlüsselten physikalischen Adresse unter Verwendung des geheimen Werts als Eingang zu einem erweiterten Verschlüsselungsverfahrens Advanced Encryption Standard (AES) beinhalten.
  • Bei einigen Implementierungen beinhaltet das Empfangen von der Vorrichtung, das Empfangen der Vielzahl von zweiten Anforderungen durch einen Switch-Chip von der Vorrichtung für jede Vielzahl von zweiten Anforderungen, wobei die entsprechende zweite Anforderung durch den Switch-Chip für jede der Vielzahl von zweiten Anfragen bestimmt, dass die entsprechende zweite Anforderung eine unbekannte Adresse beinhaltet, und Senden der entsprechenden zweiten Anforderung durch den Switch-Chip für jede der Vielzahl von zweiten Anforderungen.
  • Bei einigen Implementierungen liefert die Antwort, die die erste Signatur beinhaltet, an die Vorrichtung für jede der Vielzahl von ersten Anforderungen die Erzeugung für jede der Vielzahl von ersten Anforderungen, die Antwort unter Verwendung der ersten Signatur in einem Fehlererkennungs-Codeschlüssel und die erste physikalische Adresse als Reaktion darauf. Für jede Vielzahl der ersten Anforderungen kann das Erzeugen der Antwort unter Verwendung der ersten Signatur in dem Fehlererkennungscodefeld verwendet werden und die erste physikalische Adresse kann als Antwort darauf das Erzeugen eines Fehlererkennungscodewerts unter Verwendung der ersten Signatur und des Inhalts aus der Antwort, außer dem Inhalt aus dem Fehlererkennungscodefeld und unter Verwendung des Fehlererfassungscodewerts, im Fehlererkennungs-Codeschlüssel der Antwort beinhalten. Bestimmen, ob die entsprechende zweite physikalische Adresse durch die Komponente für jede der Vielzahl von zweiten Anforderungen unter Verwendung der entsprechenden zweiten Signatur gültig ist, kann für jede der Vielzahl von zweiten Anforderungen, unter Verwendung der entsprechenden zweiten Signatur aus einem Fehlererkennungscodefeld in der entsprechenden Vielzahl von zweiten Anforderungen, das Validieren der entsprechenden zweiten physikalischen Adresse beinhalten. Bestimmen, ob die entsprechende zweite physikalische Adresse durch die Komponente für jede der Vielzahl von zweiten Anforderungen unter Verwendung der entsprechenden zweiten Signatur gültig ist, kann für jede der Vielzahl von zweiten Anforderungen, unter Verwendung der entsprechenden zweiten physikalischen Adresse und einer Integrität der entsprechenden Vielzahl von zweiten Anforderungen unter Verwendung eines Fehlererkennungscodewerts aus einem Fehlererkennungscodefeld in der entsprechenden Vielzahl von zweiten Anforderungen das Validieren beinhalten, wobei der Fehlererkennungscodewert unter Verwendung der entsprechenden zweiten Signatur erzeugt wird.
  • Bei einigen Implementierungen, die für mindestens eine zweite Anforderung dienen, umfasst die entsprechende zweite Anforderung das Bestimmen, dass die zweite Anforderung eine Leseanforderung beinhaltet, Bereitstellen einer Leseanforderung für eine zweite Vorrichtung, die durch die Komponente der entsprechenden zweiten physikalischen Adresse zugeordnet ist, wobei die Leseanforderung die entsprechende zweite Signatur beinhaltet und von der zweiten Vorrichtung eine zweite Antwort auf die Leseanforderung empfängt, wobei die zweite Antwort eine Zieladresse und eine Signatur beinhaltet, und das bestimmen, ob die Zieladresse unter Verwendung der Signatur gültig ist. Das Verfahren kann für jede, aber mindestens einer zweiten Anforderung für die die Zieladresse bestimmt wird, das Bereitstellen von Inhalt aus der zweiten Antwort auf die Vorrichtung unter Verwendung der Signatur gültig sein, und für jede, aber mindestens einer zweiten Anforderung, für die die Zieladresse unter Verwendung der Signatur als nicht gültig bestimmt wird, wird die Antwort verworfen. Das Verfahren kann die Bereitstellung von Inhalt der zweiten Antwort zu der Vorrichtung für mindestens eine der zweiten Anforderungen beinhalten, und Verwerfen der zweiten Antwort für eine andere der mindestens einen, zweiten Anforderung.
  • Der in dieser Spezifikation beschriebene Gegenstand kann in besonderen Ausführungsformen implementiert werden und kann einen oder mehrere der folgenden Vorteile realisieren. Bei einigen Implementierungen können die nachstehend beschriebenen Systeme und Verfahren eine Vorrichtung daran hindern, auf eine physikalische Adresse außerhalb eines zulässigen Bereichs für die Vorrichtung zuzugreifen, z. B. für Vorrichtungen, die ihre eigene Adressenumsetzung durchführen, oder wenn das System Adressen nur zum Zeitpunkt der Übersetzung überprüft. So kann ein System beispielsweise überprüfen, ob eine Vorrichtung Zugriff auf eine Adresse haben darf, wenn die Vorrichtung Zugriff auf die Adresse anfordert. Bei einigen Implementierungen können die nachstehend beschriebenen Systeme und Verfahren verhindern, dass böswillige oder fehlerhafte Software oder Hardware eines Geräts vorsätzliche oder unbeabsichtigte Fehler in der Vorrichtung ausnutzt, um auf einen für die Vorrichtung vorgesehenen Speicher außerhalb eines Bereichs des Systems zuzugreifen, auf den zugegriffen werden kann, z. B. wenn eine Gerätehersteller nicht in der Lage ist zu überprüfen, dass das Gerätesilizium mit dem Gerätedesign übereinstimmt. Bei einigen Implementierungen können die nachstehend beschriebenen Systeme und Verfahren die Erkennung von Brute-Force-Signaturen verhindern, da zuverlässige Geräte nie ungültige Adressen aussenden und das System eine Vorrichtung beim ersten Mal stoppe, zurücksetzt oder beides, wenn die Vorrichtung das System mit einer ungültigen Adresse versorgt.
  • Bei einigen Implementierungen können die nachstehend beschriebenen Systeme und Verfahren dem System erlauben, die Speicherzugriffsanforderung eines Geräts zu überprüfen, ohne für jede Anforderung auf eine Zuordnung von gültigen Adressen für die Vorrichtung zuzugreifen, indem im Gerät auf die Speicherung der Adresse, einer Signatur für die Adresse oder beides verwiesen wird, ohne sich auf ein vertrauenswürdiges Gerät zu verlassen, das nur gültige Adressen erzeugt. Bei einigen Implementierungen können die nachstehend beschriebenen Systeme und Verfahren, basierend auf der Anzahl der geheimen angeforderten Werte im Vergleich zu anderen Systemen weniger Speicherplatz benötigen, z. B. mittels eines Translation-Lookaside-Puffers. Bei einigen Implementierungen können die nachstehend beschriebenen Systeme und Verfahren dazu beitragen, die Anzahl von vertrauenswürdigen Komponenten in einem System zu begrenzen, die z. B. einer zentralen Verarbeitungseinheit (CPU) und den Komponenten auf demselben Chip wie der CPU, die implementiert werden ohne Änderungen an der vorhandenen Hardware oder jeder vorhandenen Hardware oder beiden vorzunehmen. Bei einigen Implementierungen kann eine Komponente mehrere Schlüssel für eine einzelne Vorrichtung, einen Index oder beides verwenden, um den Zugriff der Vorrichtung auf einige Speicherplätze zu entfernen, jedoch nicht alle Speicherplätze, auf die die Vorrichtung zuvor Zugriff hatte.
  • Die Details einer oder mehrerer Ausführungsformen des Gegenstands dieser Spezifikation sind in den zugehörigen Zeichnungen und der nachfolgenden Beschreibung veranschaulicht. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen deutlich.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Beispiel einer Umgebung, in der eine Speicherverwaltungseinheit Signaturen für physikalische Adressen für mehrere Geräte erzeugt und bereitstellt.
  • 2 ist ein Flussdiagramm eines Prozesses, um Datenspeicher bereitzustellen.
  • 3 ist das Blockdiagramm eines Rechnersystems, das in Verbindung mit in diesem Dokument beschriebenen computer-implementierten Methoden eingesetzt werden kann.
  • Entsprechende Referenznummern und Kennzeichnungen in den verschiedenen Zeichnungen zeigen entsprechende Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Übersicht
  • Bei einigen Implementierungen erzeugt eine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU), z. B. in einem Wurzelkomplex einer peripheren Komponentenverbindung (PCI), unter Verwendung eines zufällig erzeugten geheimen Wertes eine Signatur für jede Adressübersetzungsanforderung von der Vorrichtung, auf den nur die IOMMU als Teil eines kryptographischen Schlüssels Zugriff hat. Die IOMMU stellt die Signatur für die Vorrichtung bereit und die Vorrichtung muss der IOMMU die Signatur bei zukünftigen Anfragen zur Verfügung stellen, um auf die übersetzte physikalische Adresse zuzugreifen, so dass die IOMMU die Zugriffsanforderung überprüfen und annehmen oder ablehnen kann, z. B. mit einer einfachen Berechnung. Die IOMMU kann die Signatur verwenden um zu verhindern, dass die Vorrichtung irgendwelche anderen physikalischen Adressen manipuliert oder ungültige Adressen wiedergibt, z. B. für den Zugriff auf einen Speicher der außerhalb eines zulässigen Bereichs für die Vorrichtung liegt. Die IOMMU kann die Signatur, z. B. die kryptographische Signatur in der Adresse oder einem anderen Feld eines Pakets, z. B. einem PCI-Express-Paket (PCIe), das der Vorrichtung zur Verfügung gestellt wird, codieren.
  • Eine Vorrichtung kann beispielsweise eine übersetzte Adresse von einer Speicherverwaltungseinheit (MMU) empfangen, die die MMU unter Verwendung des PCI-Gerätestandards für Adressübersetzungen oder MMU-Operationen für Gerätetreiberadresskarten, die in den Gerätetabelleneinträgen eingepflegt sind, bestimmt. In einigen Beispielen kann die MMU den MMU-Treibercode aufrufen, um eine virtuelle Geräteadresse, die für jedes Gerät verschieden ist, aufrufen, und erstellen von MMU-Seitentabellenzuordnungen, die diese virtuelle Adresse in die physikalische Adresse der spezifizierten zentralen Verarbeitungseinheit (CPU) übersetzen.
  • Wenn die MMU beispielsweise die Seitentabellenzuordnung erstellt, fügt die MMU jeder der physikalischen Adressen in der Zuordnung eine Signatur hinzu. Anschließend stellt die MMU, wenn die Vorrichtung eine Übersetzung von der MMU über Adressübersetzungsdienste (ATS) anfordert, die Signatur oder sowohl die Signatur als auch die Adresse der Vorrichtung zur Verfügung. In einigen Beispielen kann der MMU-Gerätetreiber die virtuellen und physikalischen Adressen einschließlich der Signaturen an die Vorrichtung senden, so dass die Vorrichtung beispielsweise lokale Seitentabellen beinhaltet und keine Übersetzung von der MMU anfordern muss.
  • In einigen Implementierungen kann ein System auf Mechanismen zurückgreifen die verhindern, dass eine Vorrichtung einen Teil der Identität der Vorrichtung beim Erzeugen einer Signatur manipuliert. Eine PCIe-Gerätekennung kann beispielsweise ein 16-Bit-Tupel mit der Bezeichnung Bus/Device/Funktion (BDF) sein und die PCI-Zugriffssteuerungsdienste (ACS) verhindern, dass eine Vorrichtung die Busnummer der Vorrichtung ändert. Die MMU kann zur Erzeugung der Signatur die Busnummer der Vorrichtung verwenden, z. B. durch Ersetzen einer physikalischen Adresse, die einer Vorrichtung mit einem Tupel zur Verfügung gestellt wird: „Adresse, Hash (MMU-geheimer Wert, physikalische Adresse, Leseberechtigungsbit, Schreibberechtigungsbit, Ausführungsberechtigungsbit, Gerätebusnummer)” Bei einigen Implementierungen kann die MMU zusätzlich zu oder anstelle der vorstehenden andere Bits oder Werte als Eingabe für die Hashfunktion verwenden. In einigen Beispielen kann die Adresse und die Signatur zusammen vierundsechzig Bit. Die MMU kann jede geeignete Methode verwenden, um die Signatur zu erzeugen, einschließlich zusätzlicher Methoden, die nachstehend beschrieben werden.
  • Wenn, wie in einigen Beispielen verwendet, Adressen, z. B. PCIe-Adressen, vierundsechzig Bits codieren können um jede Adresse zu identifizieren, und typische Seitenzuordnung-Granularitäten sind 4 KB, 2 MB und 1 GB, kann ein System die dreiundfünfzig, vierundvierzig oder fünfunddreißig höchstwertigen oder niedrigstwertigen Bits jeder Seitengranularität für jede jeweilige Seitengröße verwenden, um eine Signatur zu erzeugen. In einigen Beispielen kann die MMU 4 KB-große Übersetzungen mit dreiundfünfzig Bits für eine Signatur bereitstellen, sodass die MMU nicht die ursprüngliche Seitenübersetzungsgröße bestimmen oder drei Signaturen berechnen muss, wobei jede mit unterschiedlichen Bits niedriger Ordnung aus der Hash-Berechnung maskiert ist. Bei einigen Implementierungen kann die MMU eine Seitengrößenanzeige in der Antwort, z. B. das PCIe-Paket, hinzufügen und dieses Feld z. B. in die gehashten Daten einschließen, und die Seitengröße verwenden, um die Anzahl der für die Signatur verwendeten Bits und die Anzahl der Bits zu bestimmen, die die Adresse repräsentieren.
  • Die Vorrichtung beinhaltet in jeder Speicherzugriffsanforderung für die bestimmte physikalische Adresse die Signatur für eine bestimmte physikalische Adresse, die in der Regel die spezielle physikalische Adresse und den BDF des Gerätes beinhaltet. Während der Laufzeit sendet die Vorrichtung beispielsweise eine bestimmte physikalische Adresse und die Signatur in jeder Speichertransaktion für die bestimmte physikalische Adresse.
  • Die MMU kann z. B. in einem Wurzelkomplex mit der Verarbeitung der Anforderung beginnen, während die Signatur parallel überprüft wird, und kann die Verarbeitung der Anforderung abbrechen, wenn die MMU feststellt, dass die Signatur ungültig ist, z. B. stoppen, zurücksetzen oder beides, wenn die MMU das erste Mal eine ungültige Adresse vom Gerät empfängt. In einigen Beispielen, wenn die MMU eine ungültige Adresse oder periodisch erkennt, kann die MMU den geheimen Wert drehen, um effektiv alle nutzbaren Kenntnisse des angreifenden Geräts zu zerstören. So kann beispielsweise der geheime Wert ein pro-Gerät-Geheimwert sein und die MMU kann nur den geheimen Wert für die Vorrichtung ändern, das der MMU eine ungültige Adresse zur Verfügung gestellt hat. In einigen Beispielen kann die MMU zwei geheime Werte für jedes Gerät aufweisen, z. B. für eine geheime Wertrotation.
  • Bei einigen Implementierungen kann die MMU den geheimen Wert von einem Betriebssystem oder einem Hypervisor empfangen, z. B. dem Hypervisor-Treibercode. Bei einigen Implementierungen kann die MMU den geheimen Wert z. B. intern erzeugen, und niemals den geheimen Wert direkt der Software aussetzen. Das System kann jede geeignete Methode verwenden, um den geheimen Wert zu erzeugen.
  • Signaturerstellung und -validierung
  • 1 ist ein Beispiel einer Umgebung 100, in der eine Speicherverwaltungseinheit 102 Signaturen für physikalische Adressen für mehrere Geräte A–B 104a–b erzeugt und bereitstellt. Die Speicherverwaltungseinheit 102 kann zum Beispiel zum Zeitpunkt TA eine Adressenübersetzungsanforderung vom Gerät A 104a empfangen und eine Adressenzuordnung 106 verwenden, die virtuelle Adressen, wie etwa eine virtuelle Adresse, die in der Adressenübersetzungsanforderung beinhaltet ist, mit physikalischen Adressen überprüft.
  • Dann bestimmt die Speicherverwaltungseinheit 102 eine Signatur für die angeforderte Adresse zum Zeitpunkt TB. Die Speicherverwaltungseinheit 102 kann zuvor die Signatur erzeugt haben, z. B. wenn sie die Adressenzuordnung 106 für die Vorrichtung A 104a erstellt und die Signatur in der Adressenzuordnung 106 gespeichert hat, oder sie kann die Signatur als Antwort auf den Empfang der Adressenübersetzungsanforderung erzeugen. Die Speicherverwaltungseinheit 102 kann einen Signaturtyp 108 für die angeforderte Adresse z. B. unter Verwendung der virtuellen Adresse in der Adressenübersetzungsanforderung, der entsprechenden physikalischen Adresse, der Vorrichtung A 104a, von der die Speicherverwaltungseinheit 102 die Adressenübersetzungsanforderung empfangen hat, die Funktionalität der Speicherverwaltungseinheit 102 oder der Vorrichtung A 104a, von der die Speicherverwaltungseinheit 102 die Adressübersetzungsanforderung empfangen hat, oder irgendein anderes geeignetes Verfahren, das eine Kombination von zwei oder mehr von diesen, bestimmen.
  • Bei einigen Implementierungen kann die Speicherverwaltungseinheit 102 unter Verwendung eines geheimen Wertes, der physikalischen Adresse und eines Leseberechtigungsbits, eines Schreibberechtigungsbits, eines Ausführungsberechtigungsbits oder einer Vorrichtungsbusnummer für die Vorrichtung A 104a eine Signatur für die physikalische Adresse erzeugen. Der geheime Wert kann spezifisch für die Speicherverwaltungseinheit 102 und optional für die Vorrichtung A 104a sein. Wenn der geheime Wert für die Speicherverwaltungseinheit 102 spezifisch ist und eine Vorrichtung eine ungültige Zugriffsanforderung an die Speicherverwaltungseinheit 102 sendet, z. B. mit einer ungültigen Adresse, einer ungültigen Signatur oder beides, kann die Speicherverwaltungseinheit 102 den geheimen Wert zurücksetzen und neue Signaturen für alle Adressen festlegen, auf die Geräte Zugriff haben. Wenn der Geheimwert für ein bestimmtes Gerät spezifisch ist und das bestimmte Gerät eine ungültige Zugriffsanforderung an die Speicherverwaltungseinheit 102 sendet, z. B. die Vorrichtung A 104a, kann die Speicherverwaltungseinheit 102 den geheimen Wert zurücksetzen und neue Signaturen für alle Adressen festlegen, auf die das bestimmte Gerät Zugriff hat, und nicht die Adressen auf die andere Geräte Zugriff haben. In einigen Beispielen kann die Speicherverwaltungseinheit 102 einen Geheimwert verwenden, der sowohl für die Speicherverwaltungseinheit 102 als auch für die, die nicht für andere Speicherverwaltungseinheiten spezifisch sind, und das ist auch spezifisch für ein bestimmtes Gerät, z. B. die Vorrichtung A 104a. In diesen Beispielen schickt das bestimmte Gerät Datenzugriffsanforderungen nur an die Speicherverwaltungseinheit 102 und nicht an eine andere Speicherverwaltungseinheit, die keinen geheimen Wert aufweist, der zur Bestimmung einer Signatur in der Anforderung verwendet wird.
  • Die Speicherverwaltungseinheit 102 kann Berechtigungen für die Vorrichtung A 104a bestimmen und eine oder mehrere dieser Berechtigungen verwenden, um die Signatur zu erzeugen, z. B. Lesen, Schreiben oder Ausführen. In einigen Beispielen kann die Speicherverwaltungseinheit 102 eine beliebige Anzahl von Modus- oder Erlaubnisbits für die Vorrichtung A 104a verwenden, wie beispielsweise eines oder mehrere eines Cache-Bits, eines Cache-Pegel-Hint-Bits, einer Transaktionsklasse oder einer virtuellen Kanalnummer. Die Speicherverwaltungseinheit 102 kann, um die Signatur zu erzeugen, eine Hash-Funktion verwenden, z. B. eine starke kryptographische Hash-Funktion.
  • Die Speicherverwaltungseinheit 102 kann eine Hash-Funktion zum Erzeugen einer Signatur auswählen und die Signatur mit der Adresse 108a beinhalten, z. B. angehängt oder verkettet an das Ende oder den Anfang der Adresse in einer Antwort, die der Vorrichtung A 104a zum Zeitpunkt TC zur Verfügung gestellt wird, sodass das Gerät A 104a die Signatur in allen Anforderungen für einen Zugriff auf die Speicherstelle, die durch die physikalische Adresse 108a identifiziert wird, umfassen wird. So würde beispielsweise die Vorrichtung A 104a zum Zeitpunkt TC die Signatur in einer Anforderung für einen Zugriff auf die Speicherstelle beinhalten, die durch die Adresse 108a spezifiziert ist.
  • Wenn die Speicherverwaltungseinheit 102 die Adresse 108a vom Gerät A 104a zum Zeitpunkt TD empfängt, speichert die Speicherverwaltungseinheit 102 zum Zeitpunkt TC die Adresse unter Verwendung der Signatur um sicherzustellen, dass die Adresse, die Signatur oder beide nicht durch die Vorrichtung A 104a modifiziert werden, dass ein anderes Gerät nicht die Adresse 108a verwendet, und dass dem anfordernden Gerät A 104a ein Zugriff auf den entsprechenden Speicherplatz gestattet werden sollte. So kann beispielsweise die Speicherverwaltungseinheit 102 verifizieren, dass nur die Vorrichtung A 104a die Adresse 108a der Speicherverwaltungseinheit 102 unter Verwendung der Signatur und der Gerätebusnummer oder des geheimen Wertes für diese spezielle Vorrichtung bereitstellt oder beides, und nicht die Vorrichtung B 104b.
  • Bei einigen Implementierungen kann die Speicherverwaltungseinheit 102 die Adresse oder die Anforderung unter Verwendung der Signatur durch Erzeugen einer neuen Signatur für die Adresse und Vergleichen der neuen Signatur mit der Signatur von der Anforderung validieren, um zu bestimmen, dass die Signatur übereinstimmt. Wenn die Signaturen übereinstimmen, bestimmt die Speicherverwaltungseinheit 102, dass die Adresse und die Anforderung gültig sind. Wenn die Signaturen übereinstimmen, bestimmt die Speicherverwaltungseinheit 102, dass die Adresse und die Anforderung nicht gültig sind. Die Speicherverwaltungseinheit 102 kann jedes geeignete Verfahren ausführen, um zu bestimmen, ob eine Adresse und eine entsprechende Anforderung unter Verwendung der in der Anforderung enthaltenen Signatur gültig sind.
  • Beim Validieren der Zugriffsanforderung kann die Speichermanagementeinheit 102 zum Zeitpunkt TF die Anforderung bedienen oder veranlassen, dass die Anforderung bedient wird, z. B. durch eine andere Komponente. So kann beispielsweise die Speicherverwaltungseinheit 102 der Vorrichtung A 104a Zugriff auf einen Speicher 110 gewähren, der eine Position durch die physikalische Adresse in der Speicherzugriffsanforderung identifiziert.
  • Wenn die Speicherverwaltungseinheit 102 bestimmt, dass die Adresse, die Signatur oder beides verändert wurden oder dass ein anderes Gerät die Adresse 108a an die Speicherverwaltungseinheit 102 geliefert hat, z. B. die Vorrichtung B 104b, versorgt die Speicherverwaltungseinheit 102 die Anforderung nicht und kann das Zurücksetzen oder eine Rücksetzung einer oder beider Geräte A–B 104a–b bewirken. Wenn beispielsweise die Adresse oder die Signatur modifiziert wurden, setzt die Speicherverwaltungseinheit 102 oder eine andere Komponente in der Umgebung 100, wie z. B. ein PCIe-Wurzelkomplex, die Vorrichtung A 104a zurück. Wenn in einigen Beispielen die Speicherverwaltungseinheit 102 bestimmt, dass die Vorrichtung B 104b die Adresse 108a der Speicherverwaltungseinheit 102 zur Verfügung gestellt hat, wenn die Speicherverwaltungseinheit 102 die Adresse 108a an die Vorrichtung A 104a liefert, kann die Speicherverwaltungseinheit 102 das Zurücksetzen der Vorrichtung B 104b, der Vorrichtung A 104a oder beide bewirken.
  • Wenn die Speicherverwaltungseinheit 102 eine Vorrichtung zurücksetzt oder bewirkt, dass die Vorrichtung zurückgesetzt wird, kann die Speicherverwaltungseinheit 102 den geheimen Wert für die Vorrichtung ändern. In einigen Beispielen kann die Speicherverwaltungseinheit 102, wenn die Speicherverwaltungseinheit 102 den geheimen Wert für die Vorrichtung ohne Zurücksetzen der Vorrichtung ändert, aktualisierte Signaturen für die Vorrichtung bereitstellen, z. B. um zu verhindern, dass die Speicherverwaltungseinheit 102 eine Anforderung mit einer Signatur empfängt, die unter Verwendung eines vorherigen geheimen Wertes erzeugt wurde, und Bestimmen, dass die Anforderung ungültig ist. So kann beispielsweise die Speicherverwaltungseinheit 102 eine aktualisierte Seitentabelle für die Vorrichtung bereitstellen.
  • Bei einigen Implementierungen kann die Speicherverwaltungseinheit 102 einen fortgeschrittenen Verschlüsselungsstandard(AES)-Prozess verwenden, um die Signatur zu erzeugen. So kann beispielsweise die Speicherverwaltungseinheit 102 einen Galois/Counter-Modus (GCM) als zehn runde AES-128-Verschlüsselungsprozess zum Erzeugen der Signatur verwenden. Die Speicherverwaltungseinheit kann einen Galois-Nachrichtenauthentifizierungscode(GMAC)-Prozess zum Erzeugen der Signatur verwenden. Die Speicherverwaltungseinheit 102 kann die physikalische Adresse, den geheimen Wert für die Vorrichtung, Die Berechtigungen des anfragenden Gerätes und die Busnummer des anfragenden Gerätes als Eingabe an den AES-GCM-Prozess, z. B. zusätzlich zu anderen geeigneten Eingabewerten, verwenden. In einigen Beispielen kann die Speicherverwaltungseinheit 102 eine resultierende Markierung, z. B. eine Authentifizierungsmarkierung oder eine GMAC-Markierung, als Signatur verwenden und den daraus resultierenden verschlüsselten Text verwerfen.
  • Bei einigen Implementierungen kann die Speicherverwaltungseinheit 102 eine Signatur unter Verwendung eines Präfixes von Null-Bits erzeugen, die zum Zeitpunkt TB in einer Adresse 108b enthalten ist. So kann beispielsweise die Speicherverwaltungseinheit 102 die Anzahl der führenden Null-Bits, die in der Adresse 108b enthalten sind anweisen, die Adresse 108b zu verschlüsseln, z. B. unter Verwendung eines geheimen Wertes für die Speicherverwaltungseinheit 102 oder für das anfragende Gerät A 104a und möglicherweise andere Werte, wie z. B. Zugriffsbits oder Werte, wie vorstehend beschrieben, und Bereitstellen der verschlüsselten Adresse zum anfordernden Gerät zum Zeitpunkt TC.
  • Während der Validierung entschlüsselt die Speicherverwaltungseinheit 102 die Adresse zum Zeitpunkt TE in Reaktion auf eine Aufforderung zum Zugriffsspeicher, die der verschlüsselten Adresse entspricht, z. B. unter Verwendung des geheimen Wertes und der anderen Werte, und bestimmt, ob die Anzahl der führenden Null-Bits, die in der entschlüsselten Adresse 108b enthalten sind, korrekt ist. Wenn die Anzahl der führenden Null-Bits korrekt ist, führt die Speicherverwaltungseinheit 102 die Anforderung zum Zeitpunkt TF aus. Wenn die Anzahl der führenden Null-Bits z. B. nicht mit der Anzahl der in der Adresse enthaltenen Null-Bits übereinstimmt und nicht korrekt ist, wird die Speicherverwaltungseinheit 102 die Anforderung nicht bedienen und kann die Vorrichtung zurücksetzen oder stoppen oder das Zurücksetzen oder Anhalten der Vorrichtung verursachen.
  • Bei einigen Beispielen kann die Speicherverwaltungseinheit 102 zum Verschlüsseln der Adresse 108b eine Blockverschlüsselung verwenden. So kann beispielsweise die Speicherverwaltungseinheit 102 eine Blockverschlüsselung mit einer 8-Byte-Blockgröße oder AES im Zählermodus mit der Adresse 108b als Eingabe für die Nonce-Erzeugung verwenden. Wenn die Speicherverwaltungseinheit 102 einen Zähler, z. B. einen Zähler pro geheimem Wert, verwendet, beinhaltet die Speicherverwaltungseinheit 102 z. B. den aktuellen Wert des Zählers, der in dem Verschlüsselungsprozess verwendet wird, in einer Antwort die zum Zeitpunkt TC an die Vorrichtung A 104a gesendet wird, sodass die Speicherverwaltungseinheit 102 den Zählerwert während des Entschlüsselungsprozesses verwenden kann. Die Speicherverwaltungseinheit 102 kann den geheimen Wert als Eingabe für die Blockverschlüsselung einsetzen. Die Speicherverwaltungseinheit 102 kann jedes geeignete Verfahren zum Verschlüsseln der Adresse 108b und ein entsprechendes Verfahren zum Entschlüsseln der verschlüsselten Adresse verwenden.
  • Bei einigen Implementierungen kann die Speicherverwaltungseinheit 102 eine Signatur für eine Adresse 108c zum Zeitpunkt TB erzeugen, und speichern der Signatur in einem anderen Feld einer an das anfragende Gerät gelieferten Antwort, z. B. das Gerät A 104a zum Zeitpunkt TC. In einigen Beispielen kann die Speicherverwaltungseinheit 102 die Signatur in einer Antwort-Prüfsumme speichern, die z. B. durch PCIe definiert ist, um ein Rauschen an elektrischen Signalleitungen zu erfassen. So kann beispielsweise die Speicherverwaltungseinheit ein Transaktionsschichtpaket zur für ein Antwortpaket erzeugen und die physikalische Adresse in dem Antwortpaket umfassen. Die Speicherverwaltungseinheit kann die Signatur in dem Transaktionsschichtpaket beinhalten, z. B. an das Ende des Digests als Link Cycle Redundancy Check (LCRC-Linkzyklus Redundanzprüfung) angehängt, und das anfragende Gerät empfängt das Antwortpaket.
  • Wenn das anfragende Gerät A 104a auf die durch die physikalische Adresse spezifizierte Speicherstelle zugreifen muss, stellt das anfragende Gerät A 104a das Antwortpaket mit dem Transaktionsschichtpaket und der Signatur der Speicherverwaltungseinheit 102 zum Zeitpunkt TD zur Verfügung, wodurch das Paket möglicherweise durch einen oder mehrere Schalter geleitet wird. Die Speicherverwaltungseinheit 102 verwendet die in der Prüfsumme befindliche Signatur, um die Adresse zum Zeitpunkt TE zu validieren und zu gewährleisten, dass die Adresse, die Signatur oder beide nicht modifiziert oder beschädigt wurden und dass die Anforderung gewartet werden sollte.
  • Bei einigen Implementierungen kann das Antwortpaket Einstelldaten beinhalten, die angeben, ob die Prüfsumme vorhanden ist oder nicht. So kann beispielsweise eine Komponente oder eine Vorrichtung typischerweise die Prüfsumme verwenden, um festzustellen, ob das Antwortpaket beschädigt wurde. In diesen Implementierungen werden alle Schalter oder andere Komponenten, die das Paket von der anfragenden Vorrichtung A 104a zu der Speicherverwaltungseinheit 102 leiten daran gehindert werden, die Prüfsumme zu verwenden, um zu bestimmen, ob das Paket beschädigt ist, z. B. können die Einstelldaten anzeigen, dass die Prüfsumme nicht vorhanden ist, obwohl die Signatur in der Prüfsumme gespeichert ist. Die Speicherverwaltungseinheit 102 oder eine andere Komponente in der Umgebung kann jedes geeignete Verfahren verwenden, um sicherzustellen, dass Zwischenkomponenten, die ein Paket an die Speicherverwaltungseinheit 102 oder von der Speicherverwaltungseinheit 102 an das anfragende Gerät A 104a übergeben, diese die Prüfsumme nicht verwenden um festzustellen, ob das Paket beschädigt ist.
  • Bei einigen Implementierungen kann die Speicherverwaltungseinheit 102 unter Verwendung einer Signatur und des Inhalts eines Pakets eine Prüfsumme erzeugen und diese Prüfsumme in dem Paket speichern. Die Speicherverwaltungseinheit 102 kann unter Verwendung der Prüfsumme sowohl den Inhalt des Pakets als auch die Signatur der Adresse überprüfen. Wenn die Speicherverwaltungseinheit 102 beispielsweise eine Anforderung für einen Speicherzugriff von der Vorrichtung A 104a empfängt, kann die Speicherverwaltungseinheit 102 unter Verwendung der Adresse in der Anforderung eine Signatur erzeugen und die Signatur und die Adresse verwenden, um eine neue Prüfsumme zu erzeugen. Wenn die neue Prüfsumme mit der in der Anfrage enthaltenen Prüfsumme übereinstimmt, führt die Speicherverwaltungseinheit 102 z. B. die Anforderung aus oder hat die Anforderung ausgeführt, und hat sowohl die Adresse als auch die Integrität des Pakets bestätigt. Wenn die neue Prüfsumme nicht mit der in der Anforderung enthaltenen Prüfsumme übereinstimmt, gewährleistet die Speicherverwaltungseinheit 102, dass die Anforderung nicht bedient wird.
  • Wenn die Speicherverwaltungseinheit 102 bestimmt, dass eine Speicherzugriffsanforderung für eine physikalische Adresse keine Signatur beinhaltet, führt die Speicherverwaltungseinheit 102 die Anforderung nicht aus. Wenn beispielsweise eine böswillige Vorrichtung eine physikalische Adresse oder eine manipulierte physikalische Adresse an die Speicherverwaltungseinheit 102 für den Zugriff auf den Speicher entsprechend der physikalischen Adresse sendet, beispielsweise eine ungültige physikalische Adresse, und die Speicherverwaltungseinheit 102 bestimmt, dass die böswillige Vorrichtung keine Signatur in der Anforderung enthielt. Die Speicherverwaltungseinheit 102 kann das böswillige Gerät zurücksetzen oder das böswillige Gerät stoppen oder das Zurücksetzen oder stoppen des böswilligen Geräts bewirken. Die Speicherverwaltungseinheit 102 kann bestimmen, dass die Adresse in der Anforderung keine virtuelle Adresse ist, bevor sie z. B. bestimmt, ob die Anforderung eine Signatur beinhaltet, wie nachstehend näher beschrieben wird.
  • Intergeräte-Anforderung
  • Wenn in einigen Beispielen die Speicherverwaltungseinheit 102 eine Abfrage bedient, kann die Speicherverwaltungseinheit 102 die Abfrage zu einem anderen Gerät B 104b zum Zeitpunkt TJ bereitstellen. In diesen Beispielen kann die Anforderung eine Leseanforderung oder eine Schreibanforderung sein. Die Speicherverwaltungseinheit 102 kann die Signatur der angeforderten Adresse in der Anforderung, die an die andere Vorrichtung B 104b gesendet wird, bereitstellen. Wenn beispielsweise die Speicherverwaltungseinheit 102 die von der Vorrichtung A 104a empfangene Anforderung an die andere Vorrichtung B 104b weiterleitet, kann die weitergeleitete Anforderung die Signatur für die angeforderte Adresse oder die Zieladresse, z. B. der Vorrichtung A 104a beinhalten. Die Speicherverwaltungseinheit 102 kann die Signatur der Anforderung in dem Adressfeld, in einem Header oder in beiden beinhalten.
  • Die andere Vorrichtung B 104b bestimmt Datenreaktionen auf die Anforderung und liefert eine Antwort an die Speicherverwaltungseinheit 102 zum Zeitpunkt Tk. Die andere Vorrichtung B 104b beinhaltet die Signatur der Anforderung in der Antwort, z. B. im Körper, im Header oder in beiden. So kann beispielsweise die andere Vorrichtung B 104b die Signatur in einer Zieladresse der Antwort in einer Prüfsumme für die Antwort in einem Text der Antwort beinhalten, der eine Kombination von zwei oder mehr von diesen ist, wie nachstehend detaillierter beschrieben wird.
  • Die Speicherverwaltungseinheit 102 empfängt die Antwort und bewertet die Antwort mithilfe der Signatur zum Zeitpunkt TL. So kann beispielsweise die Speicherverwaltungseinheit 102 die Antwort mithilfe eines der vorstehend beschriebenen Verfahren bewerten, um die Antwort, z. B. die Zieladresse, eindeutig mit der anfordernden Vorrichtung A 104a zu verbinden. Die Speicherverwaltungseinheit 102 kann die Zieladresse, die Adresse für die angeforderten Daten oder beide bewerten, z. B. das anfragende Gerät A 104a.
  • Nach Bewertung der Antwort, Liefert die Speicherverwaltungseinheit 102 die Antwort zur Vorrichtung A 104a. Wenn die Speicherverwaltungseinheit 102 feststellt, dass die Antwort nicht gültig ist, liefert die Speicherverwaltungseinheit 102 die Antwort nicht zu einem in der Antwort identifizierten Ziel. Die Speicherverwaltungseinheit 102 kann die Antwort nicht dem Ziel zur Verfügung stellen, um zu verhindern, dass unerwünschte Antworten an Geräte gesendet werden, z. B. als Teil eines Denial-of-Service-Angriffs, da die Antwort z. B. zerstören kann.
  • Bei einigen Implementierungen kann die Speicherverwaltungseinheit 102 eine Anforderung an das andere Gerät B 104b zum Zeitpunkt TJ bereitstellen, die eine Signatur für sowohl das anfragende Gerät A 104a als auch die andere Vorrichtung B 104b beinhaltet, die die Anforderung bedient. So kann beispielsweise die Speicherverwaltungseinheit 102 unter Verwendung des entsprechenden Geheimwerts der Vorrichtung, der entsprechenden Busnummer und die physikalische Adresse des Speicherplatzes, auf den zugegriffen werden soll, zwei Signaturen ermitteln, eine für jede der Vorrichtungen.
  • Das andere Gerät B 104b wird dann auf die Anforderung mit Daten in Reaktion auf die Anforderung antworten und beide Signaturen, entweder im Text der Antwort, in einem Header oder beides, z. B. eine Signatur im Text und eine andere Signatur im Header. Die Speicherverwaltungseinheit 102 verwendet dann beide Signaturen, um die Antwort zu überprüfen und liefert unter Verwendung beider Signaturen nur die Antwort in Reaktion auf die Prüfung an das anfragende Gerät. Dies kann verhindern, dass das andere Gerät B 104b ”Antworten” auf Anforderungen sendet, die niemals an das andere Gerät B 104b geliefert wurden.
  • Bei einigen Implementierungen kann, wenn Geräte in einer Peer-zu-Peer-Umgebung kommunizieren können, z. B. ohne eine Speicherverwaltungseinheit, die die Kommunikation überwacht, jedes der Geräte Signaturen erzeugen und eine Prüfung, ähnlich der vorstehend beschriebenen, durchführen. So kann beispielsweise das anfragende Gerät A 104a eine Adressumsetzung für eine virtuelle Adresse von dem anderen Gerät B 104b anfordern und als Antwort darauf eine Signatur mit oder ohne eine Adresse empfangen. Das anfragende Gerät A 104a kann dann eine Anfrage für einen Zugriff auf eine entsprechende physikalische Speicherstelle zu dem anderen Gerät B 104b senden und die Signatur mit der Anforderung beinhalten. Das andere Gerät B 104b validiert dann unter Verwendung der Signatur die Anfrage und antwortet nur auf die Anforderung als Reaktion darauf, dass die Anfrage gültig ist.
  • In einigen Beispielen kann eine von dem anfragenden Gerät A 104a gesendete Anfrage zwei Signaturen beinhalten, wobei ein das andere Gerät B 104b verwendet, um die Anfrage zu überprüfen und die andere, die das anfragende Gerät A 104a verwendet, um die Antwort zu überprüfen. So kann beispielsweise in dem Adressenfeld der Anfrage die erste Signatur enthalten sein und das andere Gerät B 104b kann die erste Signatur verwenden, um zu bestimmen, ob die Anfrage gültig ist. Die zweite Signatur kann in einem Header der Anfrage beinhaltet sein, sodass das andere Gerät B 104b die zweite Signatur in der Antwort beinhalten und das Gerät A 104a bestimmt, ob die Antwort unter Verwendung der zweiten Signatur gültig ist. Wenn das Gerät A 104a eine ”Antwort” empfängt die keine Signatur beinhaltet, z. B. in dem Header, weist das Gerät A 104a die Antwort zurück, z. B. durch Verwerfen der Daten.
  • Exemplarischer Verfahrensablauf
  • 2 ist ein Flussdiagramm eines Prozesses 200 für die Verarbeitung von Anfragen. So kann beispielsweise der Prozess 200 durch die Speicherverwaltungseinheit 102 von der Umgebung 100 verwendet werden.
  • Ein System empfängt für jeweils eine physikalische Adresse (202) mehrere Anforderungen. So kann beispielsweise eine Speicherverwaltungseinheit, ein Schalter oder ein Wurzelkomplex die Anforderungen empfangen.
  • Für jede Anforderung bestimmt das System, ob die Anforderung eine unbekannte Adresse (204) enthält. Wenn beispielsweise eine Komponente wie ein Schalter-Chip die Anforderung empfängt, kann der Schalter-Chip feststellen, dass der Schalter-Chip die Adresse nicht erkennt und die Adresse an eine Speicherverwaltungseinheit weiterleitet, die beispielsweise in dem Schalter-Chip oder einer anderen Komponente enthalten ist, wie beispielsweise ein Wurzelkomplex.
  • In einigen Beispielen, wenn der Schalter-Chip in einem Motherboard beinhaltet ist, kann der Schalter Chip eine Anforderung empfangen, die eine Adresse von einem Gerät beinhaltet, z. B. einer Grafikkarte. Der Schalter-Chip kann bestimmen, dass er ein Ziel für die Adresse die in der Anforderung enthalten ist, nicht kennt, z. B. dass die Adresse eine virtuelle Adresse ist oder eine Signatur beinhaltet, und dass die Adresse unbekannt ist. Der Schalter-Chip kann dann bestimmen, ob die Anforderung an eine Speicherverwaltungseinheit weitergeleitet werden soll, z. B. um eine Übersetzung von einer virtuellen Adresse zu einer physikalischen Adresse oder unter Verwendung einer in der Adresse beinhalteten Signatur eine Prüfung zu verarbeiten.
  • Als Reaktion darauf, dass die Anforderung keine unbekannte Adresse beinhaltet, verarbeitet das System die Anforderung (206). Die Komponente versendet beispielsweise ie Anforderung, z. B. durch Weiterleiten der Anforderung an ein anderes Gerät oder eine Komponente, die Daten aufweisen können, die auf die Anforderung ansprechen.
  • Als Reaktion darauf, dass die Anforderung unbekannte Adresse beinhaltet, sendet das System die Anforderung an eine Speicherverwaltungseinheit (208). Der Schalter-Chip sendet beispielsweise die Anforderung an die Speicherverwaltungseinheit, da der Schalter-Chip nicht in der Lage ist, unter Verwendung der Zieladresse in der Anforderung das Ziel der Anforderung zu bestimmen.
  • Das System ermittelt, ob die Anforderung eine virtuelle Adresse (210) beinhaltet. Die Komponente bestimmt zum Beispiel, ob ein Adressentypfeld anzeigt, dass die Anforderung eine virtuelle Adresse oder eine physikalische Adresse beinhaltet. In einigen Beispielen kann, wenn die Anforderung eine PCIe-Anforderung ist, ein Adressentypfeld eine erste Codierung für eine nicht-übersetzte virtuelle Adresse, eine zweite Codierung für eine Übersetzungsanforderung, z. B. eine virtuelle Adresse, und eine dritte Codierung für eine übersetzte Adresse sein, die z. B. eine physikalische Adresse beinhaltet.
  • Als Reaktion darauf, dass die Anforderung eine virtuelle Adresse beinhaltet, bestimmt das System unter Verwendung der virtuellen Adresse (212) eine physikalische Adresse. So verwendet beispielsweise die Komponente eine Zuordnung, die virtuelle Adressen mit physikalischen Adressen, z. B. einer Seitentabelle, vergleicht, um die physikalische Adresse zu bestimmen.
  • Das System erzeugt eine Signatur für die physikalische Adresse (214). Die Komponenten verwendet zum Beispiel eines der in dieser Spezifikation beschriebenen Verfahren, um die Signatur zu erzeugen und die Signatur in einem Adressfeld, z. B. einem Text einer Antwort, einem Header der Antwort oder beiden, zu speichern. Die Komponente kann eine Kennung des Geräts verwenden, um einen geheimen Wert zur Erzeugung der Signatur zu bestimmen. In einigen Beispielen kann die Komponente einen allgemeinen geheimen Wert verwenden, z. B. der spezifisch für die Komponente, aber nicht spezifisch für ein bestimmtes Gerät ist.
  • In einigen Beispielen kann das System einen Hash unter Verwendung von zwei oder mehr der physikalischen Adresse, einen geheimen Wert für die Komponente, einen geheimen Wert für das Gerät, eine Kennung für das Gerät, z. B. eine Gerätebusnummer, ein Lesezulassungsbit, ein Schreibberechtigungsbit, ein Ausführungsberechtigungsbit oder andere geeignete Werte erzeugen, die entweder der Komponente oder dem Gerät oder beiden zugeordnet sind. Das System kann alle oder einen Teil des Hashs als Signatur verwenden, z. B. eine vorbestimmte Anzahl der höchstwertigen Bits oder die am wenigsten signifikanten Bits. In einigen Beispielen kann die Kennung für das Gerät für die Funktion des Geräts besonders sein. Bei einigen Implementierungen kann die Kennung für das Gerät eine oder mehrere der Bus-, Geräte- oder Funktionsnummern für das Gerät sein, z. B. wie durch PCIe angegeben.
  • Bei einigen Implementierungen kann die Komponente eine Signatur für eine physikalische Adresse erzeugen, die Signatur mit der physikalischen Adresse verknüpfen und die verknüpfte Signatur und die physikalische Adresse verschlüsseln. Die Komponente kann die verschlüsselte Signatur und die verknüpfte physikalische Adresse in der Antwort platzieren. In einigen Beispielen kann die Komponente die physikalische Adresse verschlüsseln, eine Signatur für die verschlüsselte physikalische Adresse erzeugen und die verschlüsselte physikalische Adresse oder die Klartextversion der physikalischen Adresse in einer Antwort mit der Signatur platzieren. Die physikalische Adresse und die Signatur der verschlüsselten physikalischen Adresse können sich im gleichen Feld der Antwort befinden, kann der Text, oder kann in verschiedenen Bereichen, z. B. die physikalische Adresse, verschlüsselt oder Klartext, im Text sein, und die Signatur kann sich in einem Header der Antwort befinden.
  • Das System stellt eine Antwort zur Verfügung, die die Signatur (216) beinhaltet. So liefert beispielsweise die Komponente die Antwort an das anfragende Gerät. Die Antwort kann eine physikalische Klartextadresse mit einer Signatur beinhalten, z. B. sowohl im Textfeld der Antwort als auch mit der Signatur in einem Header. Die Antwort kann eine verschlüsselte physikalische Adresse mit einer Signatur beinhalten, z. B. sowohl im Textfeld der Antwort als auch mit der Signatur in einem Header. Die Antwort kann eine verschlüsselte physikalische Adresse im Text der Antwort beinhalten, sodass eine entschlüsselte Version der physikalischen Adresse einen bekannten guten Wert in einem vorbestimmten Abschnitt der physikalischen Adresse beinhaltet, z. B. müssen die oberen N Bits der Klartextadresse alle Nullen sein. In einigen Beispielen ist N zweiunddreißig Bits.
  • Als Reaktion darauf, dass die Anforderung keine virtuelle Adresse beinhaltet, bestimmt das System, ob die physikalische Adresse für die Anforderung unter Verwendung einer entsprechenden Signatur (218) überprüft wird. So erzeugt beispielsweise die Komponente eine Signatur für die physikalische Adresse und vergleicht die neu erzeugte Signatur mit einer Signatur, die in der Anforderung beinhaltet ist, um zu bestimmen, ob die beiden Signaturen identisch sind.
  • Bei einigen Implementierungen kann die Komponente eine in der Anforderung enthaltenen Kennung des anfragenden Geräts verwenden, um einen geheimen Wert für das Gerät zu bestimmen, oder die Komponente kann einen allgemeinen geheimen Wert verwenden, wenn die Komponente keinen geheimen Werte pro Einheit aufweist Die Komponente erzeugt dann eine Signatur unter Verwendung desselben Verfahrens der zuvor verwendeten Komponente, um die in der Anforderung beinhaltete Signatur zu erzeugen, z. B. unter Verwendung des geheimen Wertes, und vergleicht dann die neu erzeugte Signatur mit der Signatur, die in der Anforderung beinhaltet ist, um zu bestimmen, ob die physikalische Adresse und die Anforderung überprüft wurden oder nicht.
  • Bei einigen Implementierungen kann die Komponente, wenn die Signatur eine vorbestimmte Anzahl von Nullen in einer Adresse ist, bestimmen, dass die Adresse durch Entschlüsseln einer verschlüsselten physikalischen Adresse, die in der Anforderung beinhaltet ist, überprüft wird, und Vergleichen einer Anzahl aufeinanderfolgender Nullen in der entschlüsselten Adresse, z. B. am Anfang oder Ende der physikalischen Adresse, mit einem bekannten Wert, der z. B. die Anzahl aufeinanderfolgender Nullen angibt, die sich in der Adresse befinden sollten. Wenn die Anzahl der aufeinanderfolgenden Nullen in der entschlüsselten Adresse mit dem bekannten Wert identisch ist, bestimmt die Komponente, dass die Signatur und die Anforderung überprüft wurden. Wenn die Anzahl der aufeinanderfolgenden Nullen in der entschlüsselten Adresse mit dem bekannten Wert identisch ist, bestimmt die Komponente, dass die Signatur und die Anforderung nicht überprüft wurden.
  • Als Reaktion darauf, dass die physikalische Adresse unter Verwendung der entsprechenden Signatur für die Anforderung überprüft wird, führt das System die Anforderung (220) aus. Die Komponente leitet beispielsweise die Anforderung an ein Zielgerät oder -komponente weiter.
  • Als Reaktion darauf, dass die physikalische Adresse unter Verwendung der entsprechenden Signatur für die Anforderung nicht überprüft wird, führt das System die Anforderung (222) nicht aus. So kann die Komponente beispielsweise die Anforderung verweigern, das Gerät, das die Anforderung an die Komponente gesendet hat, zurücksetzen oder stoppen, einen Fehler protokollieren, der die Anforderung identifiziert, z. B. in einem Fehlerprotokoll einen geheimen Wert für das anfragende Gerät ändern, den Zugriff des anfordernden Geräts auf einen Speicher oder jede Kombination von zwei oder mehr von diesen deaktivieren. Bei einigen Implementierungen deaktiviert ein Schalter-Chip oder ein Wurzelkomplex den Zugriff des anfragenden Geräts auf einen Speicher als Reaktion auf eine Nachricht von einer Speicherverwaltungseinheit, z. B. wenn die Speicherverwaltungseinheit bestimmt, dass die Anforderung nicht bedient werden sollte.
  • Die Reihenfolge der Schritte in dem vorstehend beschriebenen Prozess 200 dient nur der Veranschaulichung und die Verarbeitung der Anforderungen kann in verschiedenen Reihenfolgen durchgeführt werden. So kann das System beispielsweise eine Signatur für die physikalische Adresse erzeugen, z. B. den Schritt 214 ausführen, bevor eine Anforderung einer Übersetzung einer virtuellen Adresse an eine physikalische Adresse, z. B. Schritt 202, empfangen wird.
  • Bei einigen Implementierungen kann das Verfahren 200 zusätzliche Schritte, weniger Schritte oder einige der Schritte in mehrere Schritte unterteilen. So kann die Komponente beispielsweise die Schritte 202, 210 und 218 bis 222 ausführen, ohne die restlichen Schritte durchzuführen. So kann die Komponente beispielsweise die Schritte 202 und 210 bis 216 ausführen, ohne die verbleibenden Schritte durchzuführen. Bei einigen Implementierungen kann der Prozess 200 die Schritte 204 bis 208 möglicherweise nicht beinhalten.
  • Bei einigen Implementierungen kann eine erste Komponente, z. B. ein Schalter-Chip, anfänglich jede der Anforderungen empfangen und dann die Anforderungen an eine zweite Komponente, z. B. eine Speicherverwaltungseinheit, als Teil von Schritt 202 weiterleiten. Die erste Komponente kann bestimmen, dass jede der Anforderungen eine unbekannte Adresse, z. B. eine virtuelle Adresse oder eine Adresse mit einer Signatur beinhaltet und dann die Anforderung an die zweite Komponente, z. B. eine Speicherverwaltungseinheit, bereitstellt. Bei einigen Implementierungen kann eine erste Komponente die Schritte 202 und 204 ausführen und optional für einige der Anforderungen den Schritt 206 durchführen und dann Anfragen, die nicht mit dem Schritt 206 verarbeitet werden, an eine zweite Komponente zur Verarbeitung weiterleiten. Die erste Komponente und die zweite Komponente können, um die Anfrage zu bedienen oder nicht zu bedienen, kommunizieren, z. B. wenn die Anfrage verweigert wird oder ein anfragendes Gerät angehalten wird.
  • Bei einigen Implementierungen kann die Speicherverwaltungseinheit eine Anfrage, die eine Signatur beinhaltet, in eine ”Standard” -Anfrage umwandeln, wenn eine Speicherverwaltungseinheit in einem Schalte-Chip die Schritte in dem Prozess 200 ausführt, z. B. ohne eine Signatur, bevor die Anfrage an ein anderes Gerät oder eine Komponente zur Verarbeitung gesendet wird. So kann die Speicherverwaltungseinheit beispielsweise nach dem Bestimmen, dass eine Anfrage geprüft ist, die Anfrage umwandeln, um nur die physikalische Adresse und keine Signatur einzuschließen und die umgewandelte Anfrage zu einem anderen Gerät oder einer Komponente, z. B. einem Wurzelkomplex, zur Verarbeitung weiterleiten. In einigen Beispielen wandelt eine Speicherverwaltungseinheit die Anforderung in eine Standardanforderung ohne eine Signatur um bevor sie die Anforderung an eine Zielvorrichtung weiterleitet, unabhängig davon, wo sich die Speicherverwaltungseinheit in einem System befindet, z. B. ob die Speicherverwaltungseinheit Teil eines Schalter-Chips, eines Wurzelkomplexes oder einer anderen Komponente ist oder nicht. Die Speicherverwaltungseinheit kann ein Datenpaket markieren, das die Anfrage als „Adresse übersetzt” beinhaltet, bevor die Anfrage an ein anderes Gerät, z. B. einen Wurzelkomplex, gesendet wird.
  • Optionale Ausführungsdetails
  • Bei einigen Implementierungen kann eine Speicherverwaltungseinheit die Wahrscheinlichkeit, dass ein Gerät erfolgreich eine Signatur bei einem ersten Versuch mit der Länge der Signatur bestimmen kann, ausgleichen, z. B. die Länge einer kürzeren Signatur. Wenn die Speicherverwaltungseinheit zum Beispiel einen kryptographischen Prozess verwendet und die Signatur N Bits lang ist, dann weist das Gerät eine
    Figure DE202016107447U1_0002
    Wahrscheinlichkeit auf, eine gültige Signatur für eine Adresse oder Berechtigungen für die das Gerät je nach dem verwendeten kryptografischen Verfahren nicht zugelassen werden darf, zu erraten. Das Gerät kann gültige Adressen und gültige Signaturen speichern und über die gültigen Adressen und gültigen Signaturen eine bekannte Klartext-Attacke empfangen.
  • Bei einigen Beispielen kann die Speicherverwaltungseinheit die Adresse trunkieren, z. B. durch Entfernen nicht benötigter Bits, wie z. B. Nullen. Wenn die Speicherverwaltungseinheit beispielsweise vierundsechzig Bit-Adressen verwendet, kann die Speicherverwaltungseinheit eine 16-Bit-Signatur erzeugen, z. B. durch Entfernen der führenden sechzehn Bits von einer entsprechenden Adresse und Verwenden von achtundvierzig Bits für die Adresse. Wenn eine Anfrage zum Zugriff auf eine Speicherstelle empfangen wird, kann die Speicherverwaltungseinheit unter Verwendung der achtundvierzig Bits der Adresse eine neue Signatur erzeugen und die neue Signatur mit der Signatur vergleichen, die mit der Adresse zur Bestimmung, ob die Signaturen übereinstimmen, beinhaltet ist. Sind die beiden Signaturen identisch, kann die Speicherverwaltungseinheit die Anfrage verarbeiten. Sind die beiden Signaturen nicht identisch, verarbeitet die Speicherverwaltungseinheit die Anfrage nicht und kann z. B. das anfragende Gerät zurücksetzen, stoppen oder beides.
  • Bei einigen Implementierungen kann, wenn eine Komponente, z. B. ein PCIe-Umschaltchip, Speicherzugriffsanforderungen durch eine Adresse leitet, die Komponente die das Routing durchführt, die Prüfung durchführen. In einigen Beispielen kann die Komponente, die das Routing durchführt, die unbekannte Adresse zu einer Speicherverwaltungseinheit weiterleiten, wenn die Komponente, die das Routing ausführt, eine unbekannte Adresse empfängt, die z. B. eine Signatur und eine verkürzte Adresse beinhaltet, z. B. einen PCIe-Wurzelkomplex, der die Speicherverwaltungseinheit für die Verarbeitung beinhaltet.
  • Bei einigen Implementierungen kann eine Umgebung eine konfigurierbare Partition zwischen Bits für eine Adresse und Bits für eine Signatur umfassen, sodass die konfigurierbare Partition angepasst werden kann, um eine gewünschte Wahrscheinlichkeit eines Geräts, das eine gültige Signatur errät, zu erreichen. So kann beispielsweise eine Speicherverwaltungseinheit in einer Umgebung, die 1 TB eines Direktzugriffsspeichers (RAM) beinhaltet, vierundzwanzig Bits für die Signatur verwenden. Die Speicherverwaltungseinheit kann die Größe der Signatur basierend auf der Größe des RAM oder eines anderen Speichers in der Umgebung anpassen. So kann beispielsweise die Speicherverwaltungseinheit die Größe der Signatur bestimmen, wenn ein Computer, der die Speicherverwaltungseinheit beinhaltet, erstmals eingeschaltet wird.
  • Bei einigen Implementierungen erzeugt eine Speicherverwaltungseinheit eine Signatur, nachdem sie eine Anfrage für eine Übersetzung einer virtuellen Adresse an eine entsprechende physikalische Adresse empfangen hat. Bei einigen Implementierungen erzeugt eine Speicherverwaltungseinheit Signaturen für alle physikalischen Adressen, wenn sie ein Gerät mit entsprechenden virtuellen Adressen oder als Antwort auf den Empfang der Identifizierung der virtuellen Adressen für das Gerät bereitstellt. In diesen Implementierungen kann die Speicherverwaltungseinheit die Signaturen in einer Adresszuordnung speichern. In einigen Beispielen kann die Speicherverwaltungseinheit die Adresszuordnung an das Gerät liefern und die Signaturen in dem Adressenfeld der Adresszuordnung beinhalten.
  • Bei einigen Implementierungen stellt eine Speicherverwaltungseinheit eine Signatur an ein Gerät bereit, z. B. in Reaktion auf eine Anfrage für eine entsprechende physikalische Adresse. Bei einigen Implementierungen stellt eine Speicherverwaltungseinheit zu einem Zeitpunkt mehrere Signaturen für ein Gerät bereit, z. B. für einen Block von physikalischen Adressen oder für alle physikalischen Adressen, auf die das Gerät Zugriff hat. Die Speicherverwaltungseinheit kann als Reaktion auf die Erfassung des Geräts, mehrere Signaturen an ein Gerät bereitstellen.
  • Bei einigen Implementierungen kann eine Speicherverwaltungseinheit nur eine Signatur an ein anfragendes Gerät als Reaktion auf eine Adressübersetzungsanforderung, z. B. wenn die Adresse verschlüsselt ist, bereitstellen. Bei einigen Implementierungen kann eine Speicherverwaltungseinheit sowohl eine Signatur als auch eine Adresse an das anfragende Gerät als Reaktion auf eine Adressübersetzungsanforderung bereitstellen.
  • Bei einigen Implementierungen kann die Speicherverwaltungseinheit zwei oder mehr der vorstehend beschriebenen Verfahren verwenden, um eine Signatur zu erzeugen. Die Speicherverwaltungseinheit kann zum Beispiel einen Teil einer Signatur in einem Adressenfeld eines Pakets und einen Teil der Signatur in einem Header-Feld, z. B. einem Prüfsummenfeld speichern. In einigen Beispielen kann die Speicherverwaltungseinheit eine Anzahl von führenden Nullen bestimmen, die Adresse verschlüsseln, eine Signatur der verschlüsselten Adresse bestimmen und die Signatur in einem Header-Feld, z. B. einem Prüfsummenfeld eines Pakets speichern, das die verschlüsselte Adresse im Text beinhaltet. Beim Bestimmen, ob die Adresse für eine Zugriffsanforderung überprüft ist, kann die Speicherverwaltungseinheit eine neue Signatur erzeugen, die neue Signatur mit der in der Zugriffsanforderung enthaltenen Signatur vergleichen, die Adresse entschlüsseln, die Anzahl der führenden Nullen in der entschlüsselten Adresse bestimmen, und die Anfrage nur ausführen, wenn die Anzahl der führenden Nullen in der entschlüsselten Adresse korrekt ist und die neue Signatur und die Signatur, die in der Zugriffsanforderung beinhaltet ist, identisch sind.
  • Bei einigen Implementierungen kann eine andere Komponente als eine Speicherverwaltungseinheit oder eine Eingabe/Ausgabe-Speicherverwaltungseinheit Signaturen erzeugen und überprüfen oder einige der vorstehenden Schritte ausführen. So kann beispielsweise ein Switch, ein Wurzelkomplex oder eine zentrale Verarbeitungseinheit Signaturen erzeugen und überprüfen. In einigen Beispielen kann ein einzelner Typ einer Komponente, z. B. eine Speicherverwaltungseinheit, Signaturen erzeugen, und mehrere unterschiedliche Typen von Komponenten können die Signaturen, z. B. beide Speicherverwaltungseinheiten und Schalter, überprüfen.
  • Ein physikalisches System kann mehrere Speicherverwaltungseinheiten und andere Komponenten beinhalten, die Adressen erzeugen und überprüfen. In diesen Beispielen können bestimmte Komponenten Adressen für bestimmte Geräte erzeugen, überprüfen oder beides. Bei einigen Implementierungen können Komponenten geheime Werte für ein bestimmtes Gerät teilen, damit mehrere Komponenten Signaturen für das jeweilige Gerät erzeugen, überprüfen oder beides.
  • Bei einigen Implementierungen kann eine Komponente für ein einzelnes Gerät mehrere Schlüssel beinhalten. So kann die Komponente beispielsweise verschiedene Schlüssel verwenden, um unterschiedliche Adressen für das Gerät zu erzeugen und zu überprüfen. Wenn ein System den Zugriff für das Gerät auf einige der Adressen entfernt, die Komponente entfernt oder den Schlüssel für diese Adressen ändert, werden möglicherweise auch andere Adressen ungültig. Um die Anzahl der ungültig gewordenen Adressen zu minimieren, verwendet die Komponente mehrere Schlüssel, sodass nur die Adressen mit demselben Schlüssel ungültig werden und möglicherweise erneut signiert werden müssen wenn das Gerät weiterhin auf einige dieser Adressen zugreifen kann, während Adressen, die mit anderen Schlüsseln signiert und überprüft wurden, nicht erneut signiert werden müssen.
  • Wenn beispielsweise ein Gerät eine Graphikbearbeitungseinheit oder eine andere Vorrichtung ist, die eine große Speicherzuteilung verwendet, kann die Vorrichtung eine große Anzahl von Seiten aufweisen, wobei ein Teil davon persistent ist und ein anderer Teil mühsam schnell und ungültig wird. So kann beispielsweise das Gerät aufgrund der Garbage Collection (Speicherbereinigung) einen permanenten Zugriff auf das Teil haben. In diesen Beispielen kann eine Komponente einen ersten Schlüssel für eine erste Teilmenge von Adressen verwenden, z. B., auf die die Vorrichtung weiterhin Zugriff hat, und einen zweiten Schlüssel für eine zweite Teilmenge von Adressen, die z. B. schnell ungültig sind. Die Komponente kann dann den zweiten Schlüssel ändern, wenn das Gerät keinen Zugriff mehr auf eine oder mehrere der Adressen hat, um zu verhindern, dass das Gerät auf entsprechende Speicherplätze zugreift, die durch die Adressen in der zweiten Teilmenge von Adressen identifiziert werden.
  • Die Komponente kann, um eine weitere Verfeinerung der Schlüsselrotation zu ermöglichen, mehr als zwei Schlüssel verwenden. So kann beispielsweise die Komponente einen ersten Schlüssel oder zwei erste Schlüssel für eine erste Teilmenge von Adressen verwenden, für die das Gerät weiterhin Zugriff hat, und zehn Sekunden Schlüssel für eine zweite Teilmenge von Adressen, für die das Gerät nur einen temporären Zugriff hat oder für den sich die Inhalte der entsprechenden Speicherplätze schnell ändern, während der Speicher durch andere Komponenten oder Geräte überschrieben wird. Die Komponente kann den zweiten Schlüssel oder einen der zweiten Schlüssel schneller drehen als der erste Schlüssel oder die ersten Schlüssel.
  • Die Komponente kann eine Indexkennung in einer Signatur beinhalten, um zu bestimmen, welcher Schlüssel für eine bestimmte Adresse verwendet werden soll. Beispielsweise kann die Komponente, wenn eine Signatur erzeugt wird, die Schlüssel in einem Array und die Indexkennung in einer Signatur beinhalten, z. B. am Anfang oder am Ende der Signatur. Wenn die Komponente eine Speicherzugriffsanforderung empfängt, bestimmt die Komponente die Indexkennung von der Signatur und verwendet den Indexidentifikator, um einen Speicherort in dem Array zu ermitteln, der den zu verwendenden Schlüssel beinhaltet, wenn z. B. die Speicherzugriffsanfrage und die Adresse, die in der Speicherzugriffsanfrage beinhaltet ist, überprüft wird.
  • In einigen Beispielen kann die Komponente in einer Seitentabelle einen Identifikator verwenden, z. B. einen Seitentabelleneintrag, der angibt, welcher Schlüssel für eine bestimmte Adresse verwendet werden soll. Die Komponente kann die Kennung beim Erstellen einer Signatur für eine Adresse festlegen und die Kennung verwenden, um zu bestimmen, welcher Schlüssel für die Überprüfung der Adresse verwendet werden soll. Wenn für jedes Gerät ein einzelner Schlüssel verwendet wird, kann die Komponente die Kennung verwenden, z. B. um zu bestimmen, welcher Schlüssel für jedes Gerät verwendet wird, oder wenn mehrere Schlüssel für ein oder mehrere Geräte verwendet werden oder beides.
  • Bei einigen Implementierungen kann eine Komponente anstelle von mehreren Schlüsseln für ein einzelnes Gerät einen Index verwenden, um die Ungültigkeit einer Teilmenge von Adressen zuzulassen, auf die ein Gerät Zugriff hat, während dem Gerät ermöglicht wird, weiterhin auf eine weitere Teilmenge von Adressen zuzugreifen. So kann beispielsweise ein Teil einer Signatur ein Index sein, den die Komponente verwendet, um zu bestimmen, ob das Gerät Zugriff auf einen entsprechenden Speicherplatz hat. Wenn die Komponente eine Speicherzugriffsanfrage empfängt, bestimmt die Komponente, ob eine entsprechende Stelle in einem Puffer einen vorbestimmten Wert beinhaltet. Wenn die entsprechende Stelle im Puffer den vorgegebenen Wert beinhaltet und die Komponente die Signatur überprüft, ermöglicht die Komponente dem Gerät Zugriff auf den entsprechenden Speicherplatz. Wenn die entsprechende Stelle im Puffer nicht den vorbestimmten Wert beinhaltet oder die Komponente die Signatur nicht überprüft, führt die Komponente die Speicherzugriffsanfrage nicht aus, z. B. die Komponente verhindert, dass das Gerät auf die entsprechende Speicherstelle zugreift.
  • In einigen Beispielen kann die Komponente einen ersten Indexsatz für Adressen auf Seiten reservieren, für die das Gerät weiterhin Zugriff hat, und einen zweiten Indexsatz für Adressen auf Seiten, für die das Gerät schnell ungültig wird. Eine Anzahl von Indexe im zweiten Indexsatz kann größer sein als eine Anzahl von Indexe in dem ersten Indexsatz.
  • Die Komponente kann einen Bit-Vektor mit einem Bit pro Indexwert verwenden. Um dem Gerät den Zugriff auf Speicherplätze zu ermöglichen, die einem bestimmten Index zugeordnet sind, z. B. die einen bestimmten Indexwert enthalten, der eine Stelle des bestimmten Index in dem Bitvektor darstellt, setzt die Komponente einen Wert der Position des bestimmten Index in dem Bitvektor auf einen vorbestimmten Wert, z. B. eins. Wenn die Komponente eine Signatur mit dem beinhalteten Schlüssel für das Gerät erzeugt, beinhaltet die Komponente den bestimmten Indexwert in der Signatur, z. B. am Anfang oder am Ende der Signatur. Wenn die Komponente eine Speicherzugriffsanfrage von dem Gerät empfängt, bestimmt die Komponente, ob eine Position in dem Bitvektor, die dem bestimmten Indexwert entspricht, von der in der Speicherzugriffsanfrage enthaltenen Signatur abgerufen wird, der vorbestimmte Wert ist oder nicht. Wenn die Position in dem Bitvektor der vorbestimmte Wert ist und die Komponente die Speicherzugriffsanfrage überprüft, ermöglicht die Komponente, dass die Speicherzugriffsanfrage bedient wird. Wenn die Position in dem Bitvektor der vorbestimmte Wert ist und die Komponente die Speicherzugriffsanfrage überprüft, ermöglicht die Komponente, dass die Speicherzugriffsanfrage bedient wird.
  • In einigen Beispielen kann die Komponente sowohl mehrere Schlüssel für ein einzelnes Gerät als auch einen Index verwenden, um zu bestimmen, ob das einzelne Gerät Zugriff auf einen bestimmten Speicherplatz haben soll oder nicht. So kann beispielsweise die Komponente ein erstes Bit in einem Seitentabelleneintrag verwenden, um anzugeben, welcher Schlüssel zum Erzeugen einer Signatur für eine entsprechende Adresse und einem zweiten Bit in der Seitentabelle verwendet wurde, um anzuzeigen, welcher Index verwendet wurde, um dem Gerät den Zugriff auf entsprechende Speicherplätze zu ermöglichen.
  • Bei einigen Implementierungen kann eine Komponente, wenn ein Gerät lokal Adressen von Adressen speichert, eine Adresse für nicht gültig erklären, z. B. für einen Speicherplatz, auf den das Gerät keinen Zugriff mehr hat, durch Senden einer ATS-Nachricht zur Ungültigkeitserklärung an das Gerät oder eines beliebigen anderen geeigneten Nachrichtentyps. Bei einigen Implementierungen kann eine Komponente eine Adresse ungültig machen, um einen Schlüssel, einen Index oder beide zu ändern, die mit der Adresse verknüpft sind.
  • Wenn eine Komponente beispielsweise jede Adresse einer ersten Teilmenge von Adressen zuordnet, auf die ein Gerät mit einem bestimmten Schlüssel, einem bestimmten Index oder beiden zugreifen kann und bestimmt, dass das Gerät nicht in der Lage sein sollte, auf eine Speicherstelle zuzugreifen die durch eine erste Adresse aus der ersten Teilmenge von Adressen ermittelt wird, kann die Komponente den Schlüssel, den Indexwert oder beides ändern. Damit das Gerät weiterhin auf einen oder mehrere andere Speicherplätze, die durch andere Adressen in der ersten Teilmenge von Adressen identifiziert werden, zugreifen kann, sendet die Komponente eine Ungültigkeitsnachricht für die Adressen an die Vorrichtung, z. B. eine zweite Adresse erzeugt gegebenenfalls eine neue Signatur für die Adressen oder ändert den Index auf einen neuen Indexwert oder beides und sendet eine neue Nachricht an die Vorrichtung mit der neuen Signatur, dem neuen Indexwert oder beiden. Wenn die Komponente eine Zugriffsanforderung für eine oder mehrere Adressen empfängt, z. B. die zweite Adresse, überprüft die Komponente die Zugriffsanforderung unter der Voraussetzung, dass der neue Schlüssel, der neue Index oder beide gültig sind. Die Komponente kann die anderen Adressen einer zweiten Teilmenge von Adressen zuordnen, die anfänglich andere Adressen beinhalten kann oder nicht, z. B. kann die Komponente der zweiten Adresse einen Schlüssel oder einen Index oder beides zuordnen, die bereits für eine dritte Adresse verwendet werden oder noch nicht für Adressen verwendet werden.
  • Zusätzliche Informationen zu Ausführungsformen
  • Ausführungsformen des Gegenstandes, sowie die funktionsfähigen in dieser Spezifikation beschriebenen Operationen können in einer digitalen elektronischen Schaltung, in physisch greifbarer Computer-Software oder Firmware, in Computer-Hardware, darunter auch in aus dieser Beschreibung hervorgehenden Strukturen und deren strukturellen Äquivalenten oder in Kombinationen einer oder mehrerer derselben implementiert werden. Die in dieser Beschreibung beschriebenen Ausführungsformen des Gegenstandes können als ein oder mehrere Computerprogramme implementiert werden, d. h. als ein oder mehrere Module mit Computerprogrammbefehlen, die auf einem greifbaren, nicht transitorischen Programmträger kodiert sind, um dann von einem Datenverarbeitungsgerät ausgeführt zu werden bzw. den Betrieb desselben zu steuern. Alternativ oder ergänzend dazu können die Programmbefehle auf einem künstlich erzeugten sich ausbreitendem Signal, wie beispielsweise einem maschinenerzeugten elektrischen, optischen oder elektromagnetischen Signal kodiert werden, welches erzeugt wird, um Informationen zur Übertragung an ein geeignetes Empfängergerät zu kodieren, welche dann von einem Datenverarbeitungsgerät ausgeführt werden. Bei einem Computer-Speichermedium kann es sich um ein maschinell lesbares Speichergerät, einen maschinell lesbaren Speicherträger, ein zufälliges oder serielles Speicher-Array oder Speichergerät oder um eine Kombination aus einem oder mehreren dieser Geräte handeln oder in ihnen enthalten sein.
  • Der Begriff „Datenverarbeitungsgerät” bezieht sich auf Datenverarbeitungshardware und umfasst sämtliche Gerätearten, Apparate und Maschinen zur Verarbeitung von Daten, wie z. B. einen programmierbaren Prozessor, einen Computer oder mehrere Prozessoren oder Computer. Bei dem Gerät kann es sich auch um eine vorhabensgebundene Logikschaltung, wie z. B. einen FPGA (Universalschaltkreis) oder einen ASIC (anwendungsspezifischen integrierten Schaltkreis) handeln bzw. kann dieselben enthalten. Das Gerät kann, zusätzlich zur Hardware, wahlweise Code enthalten, der eine Ausführungsumgebung für Computerprogramme, wie z. B. Maschinencode in Prozessorfirmware, einen Protokollstapel, ein Datenbankverwaltungssystem, ein Betriebssystem oder eine Kombination aus einem oder mehrerer derselben, erstellt.
  • Ein Computerprogramm (das auch als Programm, Software, Softwareanwendung, Modul, Softwaremodul, Script oder Code bezeichnet oder beschrieben werden kann) kann in jeder Form von Programmiersprache, darunter auch in kompilierten oder interpretierten Sprachen oder in deklarativen oder prozeduralen Sprachen geschrieben und in beliebiger Form, wie z. B. als allein lauffähiges Programm oder als Modul, Komponente, Subroutine oder als eine andere für den Einsatz in einer Computerumgebung geeignete Einheit bereitgestellt werden. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert werden, das andere Programme oder Daten enthält, wie z. B. eine oder mehrere Skripte, die in einem Auszeichnungssprachen-Dokument, in einer einzelnen dem betreffenden Programm gewidmeten Datei, oder in mehreren koordinierten Dateien, wie beispielsweise Dateien, die ein oder mehrere Module, Teilprogramme oder Maschinencode-Abschnitte enthalten, gespeichert werden. Ein Computerprogramm kann auf einem Computer oder mehreren Computern eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.
  • Die in dieser Beschreibung beschriebenen Prozesse und Logikabläufe können von einem oder mehreren programmierbaren Computern ausgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Handlungen aufgrund von Eingangsdaten durchzuführen und Ausgabedaten zu erstellen. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).
  • Die für die Ausführung eines Computerprogramms geeigneten Computer können beispielsweise auf allgemeinen oder speziellen Mikroprozessoren oder auch auf beiden oder auf einer anderen Art von Zentralverarbeitungseinheit basieren. In der Regel empfängt eine zentrale Verarbeitungseinheit Befehle und Daten von einem Nur-Lese-Speicher oder einem Direktzugriffsspeicher oder auch von beiden. Die wesentlichen Elemente eines Computers sind eine zentrale Recheneinheit für das Durchführen von Tätigkeiten gemäß Anweisungen und ein oder mehr Speichergeräte für das Speicher von Anweisungen und Daten. Ganz allgemein gehören zu einem Computer auch ein oder mehr Massenspeichergeräte für das Speicher von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben. Ferner kann ein Computer in einem anderen Gerät eingebettet sein, z. B. in einem Mobiltelefon, einem Organizer (PDA), einem mobilen Audio- oder Videoplayer, einer Spielkonsole, einem Funknavigationsempfänger (GPS) oder einem tragbaren Speichergerät, z. B. in einem USB-Stick, um nur einige zu nennen.
  • Computerlesbare Medien, die für das Speicher von Computerprogrammanweisungen und -daten geeignet sind, schließen alle Formen von Permanentspeichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und Flash-Speicher; Magnetdisketten, z. B. interne Festplatten oder Wechselplatten; magnetooptische Disketten; und CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein.
  • Um die Interaktion mit einem Benutzer zu ermöglichen, können in dieser Spezifikation beschriebene Ausführungsformen des Gegenstands auf einem Computer mit einem Anzeigegerät implementiert werden, z. B. einem CRT-(Kathodenstrahlröhre) oder LCD-(Flüssigkristallanzeige)Monitor, mit welchem dem Benutzer Informationen angezeigt werden, sowie einer Tastatur und einem Anzeigegerät, z. B. einer Maus oder einem Trackball, mit denen der Benutzer Eingaben in den Computer vornehmen kann. Es können auch andere Arten von Einrichtungen verwendet werden, um für eine Interaktion mit einem Nutzer zu sorgen; beispielsweise kann eine dem Benutzer gelieferte Rückkopplung beliebiger Form von sensorischer Rückkopplung vorliegen, z. B. eine visuelle Rückkopplung, auditive Rückkopplung oder taktile Rückkopplung; und die Eingabe von dem Nutzer kann in beliebiger Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe. Zusätzlich kann ein Computer mit einem Benutzer durch das Senden und Empfangen von Dokumenten von einem Gerät, das von einem Benutzer verwendet wird, interagieren; so zum Beispiel durch senden von Webseiten an einen Webbrowser durch ein Benutzergerät als Antwort auf Anforderungen des Webbrowsers.
  • Ein Beispiel dieses Computertyps wird in 3 dargestellt, was eine schematische Darstellung generischen Computersystems 300 zeigt. Das System 300 kann für die beschriebenen Operationen in Zusammenhang mit jeder der zuvor beschriebenen computer-implementierten Verfahren eingesetzt werden. Das System 300 umfasst einen Prozessor 310, einen Speicher 320, ein Speichergerät 330 und ein Eingabe-/Ausgabegerät 340. Alle der Komponenten 310, 320, 330 und 340 sind unter Einsatz eines Systembusses 350 miteinander verbunden. Der Prozessor 310 ist fähig, Anweisungen zur Umsetzung innerhalb des Systems 300 zu verarbeiten. In einer Implementierung ist der Prozessor 310 ein Single-Thread-Prozessor. In einer anderen Implementierung ist der Prozessor 310 ein Multi-Thread-Prozessor. Der Prozessor 310 ist fähig Anweisungen zu verarbeiten, die in dem Speicher 320 oder im Speichergerät 330 gespeichert sind, um graphische Informationen für eine Benutzeroberfläche auf dem Eingabe-/Ausgabegerät 340 anzuzeigen.
  • Der Speicher 320 speichert Informationen innerhalb des Systems 300. In einer Implementierung ist der Speicher 320 ein computerlesbares Medium. In einer Implementierung ist der Speicher 320 ein flüchtiges Speichergerät. In einer anderen Implementierung, ist der Speicher 320 ein nichtflüchtiges Speichergerät.
  • Das Speichergerät 330 ist in der Lage, Massenspeicher für das System 300 bereitzustellen. In einer Implementierung ist die Speichervorrichtung 330 ein computerlesbares Medium. Bei verschiedenen anderen Implementierungen kann das Speichergerät 330 ein Diskettenlaufwerk, ein Festplattenlaufwerk, ein optisches Laufwerk oder ein Bandgerät sein.
  • Das Eingabe-/Ausgabegerät 340 liefert Eingabe-/Ausgabeoperationen für das System 300. In einer Implementierung umfasst das Eingabe-/Ausgabegerät 340 eine Tastatur und/oder ein Zeigegerät. In einer anderen Implementierung umfasst das Eingabe-/Ausgabegerät 340 eine Anzeige zur Darstellung graphischer Benutzeroberflächen.
  • Zwar enthält diese Spezifikation viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Umfangs oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte Merkmale, die in dieser Spezifikation im Kontext der unterschiedlichen Ausführungsformen beschrieben werden, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Andererseits können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben werden, in mehreren Ausführungsformen oder in jeder geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
  • Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Erfordernis verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge durchgeführt werden müssen oder dass alle dargestellten Tätigkeiten durchgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den vorstehend beschriebenen Ausführungsformen nicht in allen Ausführungsformen erforderlich aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder zu mehreren Softwareprodukten verkapselt werden können.
  • Es wurden besondere Ausführungsformen des Gegenstandes beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. Die in den Ansprüchen ausgeführten Vorgänge können beispielsweise in einer anderen Reihenfolge ausgeführt werden und dennoch gewünschte Ergebnisse erzielen. Die in den beigefügten Figuren dargestellten Verfahren erfordern beispielsweise nicht notwendigerweise die gezeigte Reihenfolge oder sequentielle Reihenfolge, um erwünschte Ergebnisse zu erzielen. In manchen Fällen können Multitasking- und Parallelverarbeitung von Vorteil sein.

Claims (25)

  1. System, das Folgendes umfasst: einen datenverarbeitenden Apparat; und ein nichtflüchtiges computerlesbares Speichermedium in Datenkommunikation mit der Datenverarbeitungsvorrichtung, das Anweisungen speichert, welche von einer Datenverarbeitungsvorrichtung ausführbar sind und bei dieser Ausführung bewirkt, dass die Datenverarbeitungsvorrichtung Operationen ausführt, umfassend: Empfangen einer Vielzahl von ersten Anforderungen durch eine Komponente aus einer Vorrichtung, wobei jede der Vielzahl von ersten Anforderungen für eine entsprechende physikalische Adresse eine entsprechende virtuelle Adresse beinhaltet; für jede der Vielzahl von ersten Anforderungen: Bestimmen einer ersten physikalischen Adresse durch die Komponente unter Verwendung der entsprechenden virtuellen Adresse; Erzeugen einer ersten Signatur für die erste physikalische Adresse, die erste Signatur zur Verwendung der Überprüfung der ersten physikalischen Adresse; und bereitstellen einer Antwort an die Vorrichtung, die die erste Signatur beinhaltet; Empfangen einer Vielzahl von zweiten Anforderungen von der Vorrichtung, von jeder Vielzahl von zweiten Anforderungen für den Zugriff auf eine entsprechende zweite physikalische Adresse und mit einer entsprechenden zweiten Signatur; Bestimmen, ob die entsprechende zweite physikalische Adresse unter Verwendung der entsprechenden zweiten Signatur durch die Komponente für jede der Vielzahl von zweiten Anforderungen gültig ist; und für jede zweite Anforderung, für die die zweite physikalische Adresse unter Verwendung der zweiten Signatur der entsprechenden zweiten Anforderung als gültig bestimmt wird, Bedienen der entsprechenden zweiten Anforderung.
  2. Ein nichtflüchtiges computerlesbares Speichermedium, das Anweisungen speichert, welche von einem datenverarbeitenden Apparat ausführbar sind und der bei dieser Ausführung bewirkt, dass der datenverarbeitende Apparat Operationen ausführt, umfassend: Empfangen einer Vielzahl von ersten Anforderungen durch eine Komponente aus einer Vorrichtung, wobei jede der Vielzahl von ersten Anforderungen für eine entsprechende physikalische Adresse eine entsprechende virtuelle Adresse beinhaltet; für jede der Vielzahl von ersten Anforderungen: bestimmen einer ersten physikalischen Adresse durch die Komponente unter Verwendung der entsprechenden virtuellen Adresse; erzeugen einer ersten Signatur für die erste physikalische Adresse, die erste Signatur zur Verwendung der Überprüfung der ersten physikalischen Adresse; und bereitstellen einer Antwort an die Vorrichtung, die die erste Signatur beinhaltet; empfangen einer Vielzahl von zweiten Anforderungen von der Vorrichtung, von jeder Vielzahl von zweiten Anforderungen für den Zugriff auf eine entsprechende zweite physikalische Adresse und mit einer entsprechenden zweiten Signatur; bestimmen, ob die entsprechende zweite physikalische Adresse durch die Komponente für jede der Vielzahl von zweiten Anforderungen unter Verwendung der entsprechenden zweiten Signatur gültig ist; und für jede zweite Anforderung, für die die zweite physikalische Adresse unter Verwendung der zweiten Signatur der entsprechenden zweiten Anforderung als gültig bestimmt wird, die entsprechende zweite Anforderung bedient.
  3. Speichermedium nach Anspruch 2, wobei für jede zweite Anforderung, für die die zweite physikalische Adresse unter Verwendung der zweiten Signatur der entsprechenden zweiten Anforderung als nicht gültig bestimmt wird, die entsprechende zweite Anforderung nicht bedient wird.
  4. Speichermedium nach Anspruch 3, wobei für eine zweite unterschiedliche Teilmenge der Vielzahl von zweiten Anforderungen, die zweite Anforderung umfasst, dass für jede der zweiten Anforderungen in der zweiten Teilmenge die jeweilige zweite Anforderung verweigert wird.
  5. Speichermedium nach Anspruch 3 oder 4, wobei die zweite Anforderung für eine zweite unterschiedliche Teilmenge der Vielzahl von zweiten Anforderungen nicht für jede der zweiten Anforderungen in der zweiten Teilmenge einen entsprechenden Fehler, der die jeweilige zweite Anforderung anzeigt, protokolliert.
  6. Speichermedium nach einem der Ansprüche 3 bis 5, wobei eine zweite, unterschiedliche Teilmenge der Vielzahl von zweiten Anforderungen, die zweite Anforderung nicht das Zurücksetzen oder Anhalten der Vorrichtung umfasst.
  7. Speichermedium nach einem der Ansprüche 3 bis 6, wobei das Nicht-Bedienen der entsprechenden zweiten Anforderung für jede zweite Anforderung für die die zweite physikalische Adresse als nicht gültig mit der zweiten Signatur der entsprechenden zweiten Anforderung bestimmt wird, die Änderung eines geheimen Wertes für die Vorrichtung umfasst.
  8. Speichermedium nach einem der Ansprüche 3 bis 7, wobei das Nicht-Bedienen der entsprechenden zweiten Anforderung für jede zweite Anforderung für die die zweite physikalische Adresse als nicht gültig mit der zweiten Signatur der entsprechenden zweiten Anforderung bestimmt wird, das Deaktivieren des Zugriffs der Vorrichtung auf einen Speicher umfasst.
  9. Speichermedium nach einem der vorhergehenden Ansprüche, wobei: jede der Vielzahl von ersten Anforderungen die entsprechende virtuelle Adresse und eine Kennung für die Vorrichtung umfasst; Erzeugen der ersten Signatur für die erste physikalische Adresse für jede der Vielzahl von ersten Anfragen, umfassend: Bestimmen eines geheimen Wertes unter Verwendung der Kennung; Erzeugen eines Hash-Wertes unter Verwendung der ersten physikalischen Adresse und des geheimen Wertes; und Erzeugen der ersten Signatur unter Verwendung wenigstens eines Teils des Hash-Werts.
  10. Speichermedium nach Anspruch 9, wobei das Bereitstellen der Antwort, die die erste Signatur beinhaltet, an die Vorrichtung für jede der Vielzahl von ersten Anforderungen umfasst: Verknüpfen der ersten Signatur mit der ersten physikalischen Adresse; und Bereitstellen einer Antwort, die die erste Signatur beinhaltet, die mit der ersten physikalischen Adresse in einem einzigen Feld der Antwort verknüpft ist.
  11. Speichermedium nach Anspruch 9 oder 10, wobei die Kennung für das Gerät eine Gerätebus-Nummer für das Gerät umfasst.
  12. Speichermedium nach einem der Ansprüche 9 bis 11, wobei: jede der Vielzahl von zweiten Anforderungen die entsprechende zweite physikalische Adresse, die entsprechende Signatur und die Kennung für die Vorrichtung umfasst; und Bestimmen, ob die entsprechende zweite physikalische Adresse unter Verwendung der entsprechenden zweiten Signatur durch die Komponente für jede der Vielzahl von zweiten Anforderungen gültig ist umfasst: Bestimmen des geheimen Wertes unter Verwendung der Kennung; Erzeugen eines Hash-Wertes unter Verwendung der zweiten physikalischen Adresse und des geheimen Wertes; Erzeugen einer dritten Signatur unter Verwendung wenigstens eines Teils des Hash-Werts; Bestimmen, ob die entsprechende zweite Signatur und die dritte Signatur identisch sind; und Bestimmen, dass die entsprechende zweite physikalische Adresse gültig ist, als Reaktion darauf, dass die entsprechende zweite Signatur und die dritte Signatur identisch sind.
  13. Speichermedium nach einem der Ansprüche 9 bis 11, wobei: jede der Vielzahl von zweiten Anforderungen die entsprechende zweite physikalische Adresse, die entsprechende Signatur und die Kennung für die Vorrichtung umfasst; und Bestimmen, ob die entsprechende zweite physikalische Adresse unter Verwendung der entsprechenden zweiten Signatur durch die Komponente für jede der Vielzahl von zweiten Anforderungen gültig ist, umfasst: Bestimmen des geheimen Wertes unter Verwendung der Kennung; Erzeugen einer dritten physikalischen Adresse durch Entschlüsseln der entsprechenden zweiten physikalischen Adresse unter Verwendung des geheimen Wertes; Erzeugen eines Hash-Wertes unter Verwendung der dritten physikalischen Adresse und des geheimen Wertes; Erzeugen einer dritten Signatur unter Verwendung wenigstens eines Teils des Hash-Werts; Bestimmen, ob die entsprechende zweite Signatur und die dritte Signatur identisch sind; und Bestimmen, dass die entsprechende zweite physikalische Adresse gültig ist, als Reaktion darauf, dass die entsprechende zweite Signatur und die dritte Signatur identisch sind.
  14. Speichermedium nach einem der Ansprüche 9 bis 13, wobei das Erzeugen der ersten Signatur, die mindestens einen Teil des Hash-Werts verwendet, für jede der Vielzahl von ersten Anforderungen das Erzeugen der ersten Signatur unter Verwendung einer vorbestimmten Menge von niedrigstwertigen Bits aus dem Hash-Werts aufweist.
  15. Speichermedium nach einem der Ansprüche 9 bis 13, wobei das Erzeugen der ersten Signatur, die mindestens einen Teil des Hash-Werts verwendet, für jede der Vielzahl von ersten Anforderungen das Erzeugen der ersten Signatur unter Verwendung des gesamten Hash-Werts umfasst.
  16. Speichermedium nach einem der Ansprüche 9 bis 15, wobei das Erzeugen des Hash-Wertes durch Verschlüsseln der ersten physikalischen Adresse unter Verwendung des geheimen Wertes umfasst: Bestimmen eines verschlüsselten Textes und einer verschlüsselten Authentifizierungskennzeichnung, die die erste physikalische Adresse unter Verwendung des geheimen Wertes als Eingang zu einem Galois-Nachrichtenauthentifizierungscode (GMAC) verarbeitet; und Verwenden der Authentifizierungskennzeichnung als Hash-Wert.
  17. Speichermedium nach einem der vorhergehenden Ansprüche, wobei: jede der Vielzahl von zweiten Anforderungen eine Kennung für die Vorrichtung umfasst; jede der zweiten Signaturen eine verschlüsselte physikalische Adresse umfasst; bestimmen, ob die entsprechende zweite physikalische Adresse unter Verwendung der entsprechenden zweiten Signatur durch die Komponente für jede der Vielzahl von zweiten Anforderungen gültig ist umfasst: Bestimmen eines geheimen Wertes unter Verwendung der Kennung; Bestimmen eines entschlüsselten Wertes durch Entschlüsseln der entsprechenden zweiten physikalischen Adresse unter Verwendung des geheimen Wertes; Bestimmen, ob der entschlüsselte Wert ein Präfix von Nullen beinhaltet, das eine vorbestimmte Länge aufweist; Bestimmen, dass die entsprechende zweite physikalische Adresse gültig ist, wenn festgestellt wird, dass der entschlüsselte Wert das Präfix von Nullen enthält, das die vorbestimmte Länge aufweist; und Verwenden des entschlüsselten Werts als die entsprechende zweite physikalische Adresse.
  18. Speichermedium nach Anspruch 17, wobei das Bestimmen des entschlüsselten Wertes durch Entschlüsseln der entsprechenden verschlüsselten physikalischen Adresse unter Verwendung des geheimen Werts das Bestimmen des entschlüsselten Wertes durch Entschlüsseln der entsprechenden verschlüsselten physikalischen Adresse unter Verwendung des geheimen Werts als Eingang zu einer Blockverschlüsselung umfasst.
  19. Speichermedium nach Anspruch 17, wobei das Bestimmen des entschlüsselten Wertes durch Entschlüsseln der entsprechenden verschlüsselten physikalischen Adresse unter Verwendung des geheimen Werts das Bestimmen des entschlüsselten Wertes durch Entschlüsseln der entsprechenden verschlüsselten physikalischen Adresse unter Verwendung des geheimen Werts als Eingang zu einem fortgeschrittenben Verschlüsselungsstandardprozess umfasst.
  20. Speichermedium nach einem der vorhergehenden Ansprüche, wobei das Empfangen der Vielzahl von zweiten Anforderungen von der Vorrichtung umfasst: Empfangen der entsprechenden zweiten Anforderung durch einen Schalter-Chip von der Vorrichtung für jede der Vielzahl von zweiten Anforderungen; Bestimmen, durch den Schalter-Chip für jede der Vielzahl von zweiten Anforderungen, dass die entsprechende zweite Anforderung eine unbekannte Adresse umfasst; und Senden der entsprechenden zweiten Anforderung an die Komponente durch den Schalterchip für jede der Vielzahl von zweiten Anforderungen.
  21. Speichermedium nach einem der vorhergehenden Ansprüche, wobei das Bereitstellen der Antwort, die die erste Signatur beinhaltet, an die Vorrichtung für jede der Vielzahl von ersten Anforderungen umfasst: Erzeugen der Antwort unter Verwendung der ersten Signatur in einem Fehlererkennungscodefeld und der ersten physikalischen Adresse in einem Text der Antwort, für jede der Vielzahl von ersten Anforderungen.
  22. Speichermedium nach Anspruch 21, wobei das Erzeugen der Antwort unter Verwendung der ersten Signatur in dem Fehlererkennungscodefeld und der ersten physikalischen Adresse in dem Text der Antwort für jede der Vielzahl von ersten Anforderungen die folgenden Schritte umfasst: Erzeugen eines Fehlererkennungscodewerts unter Verwendung der ersten Signatur und des Inhalts aus der Antwort, außer dem Inhalt aus dem Fehlererkennungscodefeld; und Verwenden des Fehlererfassungscodewerts in dem Fehlererkennungscodefeld der Antwort.
  23. Speichermedium nach Anspruch 21 oder 22, wobei das Bestimmen, ob die Komponente für jede Vielzahl der zweiten physikalischen Adresse unter Verwendung der entsprechenden zweiten Signatur gültig ist umfasst: Überprüfen der entsprechenden zweiten physikalischen Adresse für jede der Vielzahl von zweiten Anforderungen unter Verwendung der entsprechenden zweiten Signatur aus einem Fehlererkennungscodefeld in der entsprechenden der Vielzahl von zweiten Anforderungen.
  24. Speichermedium nach Anspruch 21 oder 22, wobei das Bestimmen, ob die Komponente für jede Vielzahl der zweiten physikalischen Adresse unter Verwendung der entsprechenden zweiten Signatur gültig ist umfasst: Überprüfen der entsprechenden zweite physikalischen Adresse, und einer Integrität der entsprechenden Vielzahl von zweiten Anforderungen unter Verwendung eines Fehlererkennungscodewerts aus einem Fehlererkennungscodefeld in der entsprechenden Vielzahl von zweiten Anforderungen für jede der Vielzahl von zweiten Anforderungen; wobei der Fehlererkennungscodewert unter Verwendung der entsprechenden zweiten Signatur erzeugt wird.
  25. Speichermedium nach einem der vorhergehenden Ansprüche, wobei die entsprechende zweite Anforderung das Bedienen für mindestens eine zweite Anforderung umfasst: Bestimmen, dass die zweite Anforderung eine Leseanforderung umfasst; Bereitstellen einer Leseanforderung an eine zweite Vorrichtung durch die Komponente, die der entsprechenden zweiten physikalischen Adresse zugeordnet ist, wobei die Leseanforderung die entsprechende zweite Signatur beinhaltet; Empfangen einer zweiten Antwort auf die Leseanforderung von der zweiten Vorrichtung, wobei die zweite Antwort eine Zieladresse und eine Signatur beinhaltet; und Bestimmen, ob die Zieladresse unter Verwendung der Signatur gültig ist.
DE202016107447.9U 2015-05-20 2016-05-13 Adressvalidierung unter Verwendung von Signaturen Active DE202016107447U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562164288P 2015-05-20 2015-05-20
US62/164,288 2015-05-20
US14/867,250 2015-09-28
US14/867,250 US9749319B2 (en) 2015-05-20 2015-09-28 Address validation using signatures

Publications (1)

Publication Number Publication Date
DE202016107447U1 true DE202016107447U1 (de) 2017-01-18

Family

ID=56027260

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202016107447.9U Active DE202016107447U1 (de) 2015-05-20 2016-05-13 Adressvalidierung unter Verwendung von Signaturen
DE112016002285.9T Withdrawn DE112016002285T5 (de) 2015-05-20 2016-05-13 Adressvalidierung unter verwendung von signaturen

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE112016002285.9T Withdrawn DE112016002285T5 (de) 2015-05-20 2016-05-13 Adressvalidierung unter verwendung von signaturen

Country Status (10)

Country Link
US (7) US9749319B2 (de)
EP (3) EP3298498B1 (de)
CN (2) CN107438850B (de)
DE (2) DE202016107447U1 (de)
DK (2) DK3298498T3 (de)
FI (1) FI3489835T3 (de)
GB (2) GB2553228C (de)
HK (1) HK1245918B (de)
TW (3) TWI726496B (de)
WO (1) WO2016187029A1 (de)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9749319B2 (en) 2015-05-20 2017-08-29 Google Inc. Address validation using signatures
KR102466412B1 (ko) * 2016-01-14 2022-11-15 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10157153B2 (en) * 2016-02-03 2018-12-18 Qualcomm Incorporated Inline cryptographic engine (ICE) for peripheral component interconnect express (PCIe) systems
US10241706B2 (en) * 2016-05-20 2019-03-26 Renesas Electronics Corporation Semiconductor device and its memory access control method
US10255202B2 (en) * 2016-09-30 2019-04-09 Intel Corporation Multi-tenant encryption for storage class memory
US11082523B2 (en) * 2017-02-09 2021-08-03 International Business Machines Corporation System, method and computer program product for a distributed virtual address space
US10324858B2 (en) * 2017-06-12 2019-06-18 Arm Limited Access control
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
US10860382B1 (en) * 2017-08-28 2020-12-08 Amazon Technologies, Inc. Resource protection using metric-based access control policies
FR3071350A1 (fr) * 2017-09-15 2019-03-22 Stmicroelectronics (Rousset) Sas Controle d'acces a une memoire au moyen d'alias d'adresse
US10997066B2 (en) * 2018-02-20 2021-05-04 Samsung Electronics Co., Ltd. Storage devices that support cached physical address verification and methods of operating same
US11153094B2 (en) * 2018-04-27 2021-10-19 EMC IP Holding Company LLC Secure data deduplication with smaller hash values
DE102018112816A1 (de) * 2018-05-29 2019-12-05 Infineon Technologies Ag Adresscodierter Zugriff auf Speicher
US10853273B2 (en) * 2018-08-01 2020-12-01 Micron Technology, Inc. Secure memory system programming
US10853271B2 (en) * 2018-08-03 2020-12-01 Arm Limited System architecture with query based address translation for access validation
US11263124B2 (en) 2018-08-03 2022-03-01 Micron Technology, Inc. Host-resident translation layer validity check
US11144631B2 (en) * 2018-09-11 2021-10-12 Apple Inc. Dynamic switching between pointer authentication regimes
US10852964B2 (en) * 2018-09-25 2020-12-01 Micron Technology, Inc. Host-resident translation layer validity check techniques
GB2579591B (en) * 2018-12-04 2022-10-26 Imagination Tech Ltd Buffer checker
GB2579590B (en) 2018-12-04 2021-10-13 Imagination Tech Ltd Workload repetition redundancy
TWI681650B (zh) * 2018-12-14 2020-01-01 中華電信股份有限公司 不可否認的非集中式服務請求驗證系統、其方法及有效性驗證方法
US11226907B2 (en) 2018-12-19 2022-01-18 Micron Technology, Inc. Host-resident translation layer validity check techniques
US11226894B2 (en) 2018-12-21 2022-01-18 Micron Technology, Inc. Host-based flash memory maintenance techniques
US10936506B2 (en) * 2019-02-22 2021-03-02 Chengdu Haiguang Integrated Circuit Design Co., Ltd. Method for tagging control information associated with a physical address, processing system and device
US10929310B2 (en) 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
US11360910B2 (en) * 2019-06-28 2022-06-14 Intel Corporation Prevention of trust domain access using memory ownership bits in relation to cache lines
US10949358B2 (en) * 2019-09-25 2021-03-16 Intel Corporaton Secure address translation services using message authentication codes and invalidation tracking
US11507514B2 (en) * 2020-02-05 2022-11-22 Arm Limited Secure memory translations
US11775380B2 (en) * 2020-11-12 2023-10-03 Arm Limited Data processing systems
KR20220091955A (ko) * 2020-12-24 2022-07-01 에스케이하이닉스 주식회사 메모리 시스템 폐기 방법 및 그 메모리 시스템
US11693733B2 (en) 2021-01-21 2023-07-04 Kioxia Corporation Soft error detection and correction for data storage devices
US11663118B2 (en) * 2021-03-10 2023-05-30 Infineon Technologies Ag Address vectors for data storage elements
US11644980B2 (en) * 2021-06-22 2023-05-09 Intel Corporation Trusted memory sharing mechanism
US11651110B2 (en) * 2021-07-08 2023-05-16 Dell Products, L.P. Hardware device mutual authentication system and method for a baseboard management controller (BMC)
US11934567B2 (en) * 2021-09-07 2024-03-19 Nvidia Corporation Preventing unauthorized translated access using address signing
US11556482B1 (en) * 2021-09-30 2023-01-17 International Business Machines Corporation Security for address translation services
US11899593B2 (en) * 2021-12-21 2024-02-13 Intel Corporation Method and apparatus for detecting ATS-based DMA attack

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148387A (en) 1997-10-09 2000-11-14 Phoenix Technologies, Ltd. System and method for securely utilizing basic input and output system (BIOS) services
US7457897B1 (en) * 2004-03-17 2008-11-25 Suoer Talent Electronics, Inc. PCI express-compatible controller and interface for flash memory
CN100487676C (zh) * 2001-03-07 2009-05-13 甲骨文国际公司 分布式共享磁盘系统中的磁盘写操作
US6722135B2 (en) * 2002-01-29 2004-04-20 General Electric Company Performance enhanced control of DLN gas turbines
EP1489517B1 (de) 2003-04-03 2006-09-06 STMicroelectronics S.A. Schutz eines auf ausführungwartenden Programms in einem Speicher für einen Mikroprozessor
EP1870814B1 (de) * 2006-06-19 2014-08-13 Texas Instruments France Verfahren und Vorrichtung für sicheren, nachfragebasierten Seitenabruf für Prozessorvorrichtungen
FR2885709A1 (fr) * 2005-05-10 2006-11-17 St Microelectronics Sa Controle d'integrite d'une memoire externe a un processeur
US7487327B1 (en) 2005-06-01 2009-02-03 Sun Microsystems, Inc. Processor and method for device-specific memory address translation
US8108321B2 (en) 2006-01-12 2012-01-31 Urbissimo, Inc. System and method for shipping and delivering parcels to a virtual address
US7757280B2 (en) * 2006-01-17 2010-07-13 International Business Machines Corporation Method and system for memory protection and security using credentials
JP2008102850A (ja) * 2006-10-20 2008-05-01 Toshiba Corp 情報処理装置及び情報処理方法
JP4588751B2 (ja) * 2007-11-13 2010-12-01 株式会社コナミデジタルエンタテインメント 記憶処理装置、記憶処理方法、ならびに、プログラム
JP4976991B2 (ja) * 2007-11-22 2012-07-18 株式会社東芝 情報処理装置、プログラム検証方法及びプログラム
KR101537018B1 (ko) * 2008-10-01 2015-07-17 삼성전자주식회사 보안 메모리 인터페이스, 이를 포함하는 시스템 및 스마트카드
US8751795B2 (en) * 2010-09-14 2014-06-10 Mo-Dv, Inc. Secure transfer and tracking of data using removable non-volatile memory devices
US9355031B2 (en) 2011-04-21 2016-05-31 International Business Machines Corporation Techniques for mapping device addresses to physical memory addresses
US8930715B2 (en) * 2011-05-26 2015-01-06 International Business Machines Corporation Address translation unit, device and method for remote direct memory access of a memory
US9703723B2 (en) * 2011-08-29 2017-07-11 International Business Machines Corporation Method and apparatus for performing mapping within a data processing system having virtual machines
US9292569B2 (en) * 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US9495303B2 (en) * 2015-02-03 2016-11-15 Intel Corporation Fine grained address remapping for virtualization
US9749319B2 (en) 2015-05-20 2017-08-29 Google Inc. Address validation using signatures

Also Published As

Publication number Publication date
US10027666B2 (en) 2018-07-17
US20160344731A1 (en) 2016-11-24
FI3489835T3 (fi) 2024-09-11
CN110134619B (zh) 2020-07-21
EP3739458A1 (de) 2020-11-18
GB2574280A (en) 2019-12-04
GB2553228B (en) 2018-09-19
CN107438850B (zh) 2019-03-08
TWI720229B (zh) 2021-03-01
CN110134619A (zh) 2019-08-16
GB201715263D0 (en) 2017-11-08
TWI726496B (zh) 2021-05-01
US20180324181A1 (en) 2018-11-08
GB2574280B (en) 2020-04-01
EP3489835A1 (de) 2019-05-29
US10326763B2 (en) 2019-06-18
TW201734792A (zh) 2017-10-01
TWI596475B (zh) 2017-08-21
TW202024927A (zh) 2020-07-01
CN107438850A (zh) 2017-12-05
US20220131861A1 (en) 2022-04-28
GB2553228C (en) 2021-03-17
GB201813182D0 (en) 2018-09-26
WO2016187029A1 (en) 2016-11-24
EP3298498B1 (de) 2019-03-13
US20230216848A1 (en) 2023-07-06
EP3489835B1 (de) 2024-07-03
US11223620B2 (en) 2022-01-11
DK3298498T3 (da) 2019-05-20
US11627131B2 (en) 2023-04-11
EP3298498A1 (de) 2018-03-28
US20170339145A1 (en) 2017-11-23
GB2553228A (en) 2018-02-28
US9749319B2 (en) 2017-08-29
DE112016002285T5 (de) 2018-02-15
US20200267148A1 (en) 2020-08-20
HK1245918B (zh) 2020-04-09
DK3489835T3 (da) 2024-09-30
US20190260745A1 (en) 2019-08-22
US10666652B2 (en) 2020-05-26
US11870780B2 (en) 2024-01-09
TW201642136A (zh) 2016-12-01

Similar Documents

Publication Publication Date Title
DE202016107447U1 (de) Adressvalidierung unter Verwendung von Signaturen
DE102020208234A1 (de) Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung
DE102019113352A1 (de) Technologien für sichere e/a mit speicherverschlüsselungs-engines
DE112014001229B4 (de) Verfahren, Datenverarbeitungssystem und Computerprogrammprodukt zum Verarbeiten einer Datenbank-Client-Anforderung
DE102018101307A1 (de) Techniken für SGX-Enklaven-Fernauthentifizierung
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
DE102020134207A1 (de) Sichere Adressübersetzungsdienste unter Verwendung kryptographisch geschützter physischer Hostadressen
DE102019110327A1 (de) Technologien zum verifizieren von speicherintegrität über mehrere speicherbereiche hinweg
DE102018123710A1 (de) Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE112014000965T5 (de) Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System
DE112015004555T5 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
DE102011082184A1 (de) Sicherheitsschutz für Speicherinhalt von Prozessorhauptspeicher
DE102018109397A1 (de) Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE102012200613A1 (de) System und Verfahren zur Unterstützung von JIT in einem sicheren System und zufällig zugewiesenen Speicherbereichen
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
DE102013203126A1 (de) Transparentes Zugreifen auf verschlüsselte nicht-relationale Daten in Echtzeit
DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
DE102015107823A1 (de) Randomisierter Speicherzugriff
DE102019110440A1 (de) Replay-Schutz für Speicher auf der Basis eines Schlüsselauffrischens
DE102021128529A1 (de) Sichere adressübersetzungsdienste mit bundle-zugriffskontrolle
DE112017007643T5 (de) Bitstromschlüssel-Authentifizierung umkonfigurierbarer Vorrichtungen
DE102020128050A1 (de) Tdx-inseln mit in sich abgeschlossenem geltungsbereich, wodurch eine tdx-schlüsselkennungsskalierung ermöglicht wird
DE102022100111A1 (de) Netzwerkschnittstelle mit Datenschutz

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years