DE102022112400A1 - Vertrauenswürdige systeme zur dezentralisierten datenspeicherung - Google Patents

Vertrauenswürdige systeme zur dezentralisierten datenspeicherung Download PDF

Info

Publication number
DE102022112400A1
DE102022112400A1 DE102022112400.2A DE102022112400A DE102022112400A1 DE 102022112400 A1 DE102022112400 A1 DE 102022112400A1 DE 102022112400 A DE102022112400 A DE 102022112400A DE 102022112400 A1 DE102022112400 A1 DE 102022112400A1
Authority
DE
Germany
Prior art keywords
data
digital signature
storage
hash
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022112400.2A
Other languages
English (en)
Inventor
Shashank Agrawal
Cyril Guyot
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.)
SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102022112400A1 publication Critical patent/DE102022112400A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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
    • H04L9/3239Cryptographic 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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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/3297Cryptographic 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 time stamps, e.g. generation of time stamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2151Time stamp

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

Gewisse Gesichtspunkte der vorliegenden Offenbarung stellen Techniken zum Nachweis des Besitzes von Daten in einer Speicherungsvorrichtung bereit, die an einem verteilten Datenspeicherungsnetzwerk teilnehmen. Eine beispielhafte Speicherungsvorrichtung schließt eine Speicherungsschaltlogik und eine vertrauenswürdige Schaltung ein. Die Speicherungsschaltlogik ist eingerichtet, um eine Vielzahl von Datenblöcken zu speichern. Die vertrauenswürdige Schaltung hat im Allgemeinen einen darauf sicher gespeicherten privaten Signierschlüssel. Die vertrauenswürdige Schaltung ist im Allgemeinen eingerichtet, um einen Hash über Daten zu berechnen, die in einer Vielzahl von Datenblöcken gespeichert sind, und um eine anonyme digitale Signatur für die in der Vielzahl von Datenblöcken gespeicherten Daten mindestens teilweise basierend auf dem privaten Signierschlüssel und dem berechneten Hash zu erzeugen. Die vertrauenswürdige Schaltung kann auf einem Schreibpfad in der Speicherungsschaltlogik eingefügt sein, sodass Daten, die in die Speicherungsschaltlogik geschrieben werden, durch die vertrauenswürdige Schaltung verarbeitet werden.

Description

  • Einleitung
  • Gesichtspunkte der vorliegenden Offenbarung beziehen sich auf verteilte, dezentrale Datenspeichersysteme und insbesondere auf vertrauenswürdige Speicherungsvorrichtungen, die den Besitz von Daten in dem dezentralen Datenspeichersystem nachweisen können.
  • Blockketten können in verschiedenen dezentralen Systemen verwendet werden, um ein Ledger von Transaktionen bereitzustellen, die innerhalb dieser dezentralen Systeme aufgetreten sind, einschließlich zum Beispiel für Kryptowährungssysteme. Im Allgemeinen kann eine Blockkette eine Kette von Blöcken einschließen, in welcher der neueste Block einige Informationen über eine Transaktion, die aufgetreten ist, und eine Referenz zu einem unmittelbaren Vorgängerblock einschließt, der ein Hash-Wert des vorherigen Blocks sein kann. Da die Referenz auf den unmittelbaren Vorgängerblock ein Wert sein kann, der aus dem unmittelbaren Vorgängerblock abgeleitet ist, kann die Verifizierung der Transaktionen in der Blockkette durchgeführt werden, indem sichergestellt wird, dass sich ein Hash eines Blocks auf den gleichen Wert wie als Referenz auf den unmittelbaren Vorgängerblock in einem nachfolgenden Block in der Blockkette gespeichert löst. Wenn eine Diskrepanz zwischen einem berechneten Hash eines Blocks und dem Hash-Wert des Blocks in einem nachfolgenden Block in der Blockkette vorliegt, kann die Validierung der Blockkette fehlschlagen.
  • In einigen Fällen können Blockketten in einem verteilten Speicherungsnetzwerk verwendet werden, in dem verschiedene Speicherungsvorrichtungen auf verschiedenen Rechenvorrichtungen dem verteilten Speicherungsnetzwerk Speicherungskapazität verleihen können. In diesem Fall kann die Blockkette verwendet werden, um Datenspeicherungs- und/oder -abruftransaktionen zu verfolgen. Im Allgemeinen kann eine Datenspeicherungstransaktion festlegen, dass ein spezifisches Datenstück mit einer spezifischen Größe auf einer oder mehreren Speicherungsvorrichtungen in dem verteilten Speicherungsnetzwerk gespeichert werden soll. Die Blockkette selbst gewährleistet jedoch möglicherweise nicht, dass das in einer Speicherungstransaktion spezifizierte Datenstück tatsächlich in einer gegebenen Vorrichtung gespeichert ist und dass die Speicherungsvorrichtungen, auf denen die Daten gespeichert wurden, den für das Datenstück zugewiesenen Raum zur Speicherung anderer Daten in dem verteilten Speicherungsnetzwerk nicht neu zugewiesen haben.
  • Somit werden Techniken benötigt, um den Besitz von Daten in verteilten Speicherungsnetzwerken nachzuweisen.
  • KURZDARSTELLUNG
  • Gewisse Ausführungsformen stellen eine Speicherungsvorrichtung bereit. Die Speicherungsvorrichtung schließt im Allgemeinen eine Speicherungsschaltlogik und eine vertrauenswürdige Schaltung ein. Die Speicherungsschaltlogik ist eingerichtet, um eine Vielzahl von Datenblöcken zu speichern. Die vertrauenswürdige Schaltung hat im Allgemeinen einen darauf sicher gespeicherten privaten Signierschlüssel. Die vertrauenswürdige Schaltung ist im Allgemeinen eingerichtet, um einen Hash über Daten zu berechnen, die in einer Vielzahl von Datenblöcken gespeichert sind, und um eine anonyme digitale Signatur für die in der Vielzahl von Datenblöcken gespeicherten Daten mindestens teilweise basierend auf dem privaten Signierschlüssel und dem berechneten Hash zu erzeugen. Die vertrauenswürdige Schaltung kann auf einem Schreibpfad in der Speicherungsschaltlogik eingefügt sein, sodass Daten, die in die Speicherungsschaltlogik geschrieben werden, durch die vertrauenswürdige Schaltung verarbeitet werden.
  • Gewisse Ausführungsformen stellen ein Verfahren zum Erzeugen von Signaturen für Daten bereit, die auf einer Speicherungsvorrichtung gespeichert sind, die an einem verteilten Datenspeicherungsnetzwerk teilnimmt. Ein beispielhaftes Verfahren schließt im Allgemeinen das Erfassen einer Anforderung zum Schreiben von Daten in einen oder mehrere Datenblöcke in eine Speicherungsschaltlogik einer Speicherungsvorrichtung ein. Ein Hash wird über die Daten berechnet, die in den einen oder die mehreren Datenblöcke geschrieben werden sollen. Eine anonyme digitale Signatur für die Daten, die in den einen oder die mehreren Datenblöcke geschrieben werden sollen, wird mindestens teilweise basierend auf einem privaten Signierschlüssel, der in einer vertrauenswürdigen Schaltung der Speicherungsvorrichtung und dem berechneten Hash sicher gespeichert ist, erzeugt. Die anonyme digitale Signatur wird von der Speicherungsvorrichtung ausgegeben.
  • Gewisse Ausführungsformen stellen ein Verfahren zum Validieren des Vorhandenseins von Daten bereit, die auf einer Speicherungsvorrichtung gespeichert sind, die an einem verteilten Datenspeicherungsnetzwerk teilnimmt. Ein beispielhaftes Verfahren schließt im Allgemeinen das Empfangen, von einer Anforderungsvorrichtung an einer vertrauenswürdigen Schaltung einer Speicherungsvorrichtung, einer Anforderung für eine Signatur für Daten, die in einem Bereich von Speicheradressen in einer Speicherungsschaltlogik der Speicherungsvorrichtung gespeichert sind, ein, wobei die Anforderung einen Aufforderungswert einschließt. Ein Hash der im Bereich von Speicheradressen gespeicherten Daten wird unter Verwendung des Aufforderungswerts abgerufen und signiert. Der signierte Hash wird an die Anforderungsvorrichtung ausgegeben.
  • Andere Ausführungsformen stellen Verarbeitungssysteme, die eingerichtet sind, um die vorstehend genannten Verfahren sowie die hierin beschriebenen durchzuführen; nichttransitorische, computerlesbare Medien, aufweisend Anweisungen, die, wenn sie von einem oder mehreren Prozessoren eines Verarbeitungssystems ausgeführt werden, das Verarbeitungssystem veranlassen, die vorstehend genannten Verfahren sowie die hierin beschriebenen durchzuführen; ein Computerprogrammprodukt, das auf einem computerlesbaren Speicherungsmedium verkörpert ist, das Code zum Durchführen der vorstehend genannten Verfahren sowie der weiter hierin beschriebenen aufweist; und ein Verarbeitungssystem, aufweisend Mittel zum Durchführen der vorstehend genannten Verfahren sowie der hierin weiter beschriebenen, bereit.
  • Die folgende Beschreibung und die zugehörigen Zeichnungen sind detailliert als gewisse veranschaulichende Merkmale einer oder mehrerer Ausführungsformen dargelegt.
  • Figurenliste
  • Die beigefügten Figuren stellen gewisse Gesichtspunkte der einen oder mehreren Ausführungsformen dar und sind daher nicht als Einschränkung des Schutzumfangs dieser Offenbarung auszulegen.
    • 1 veranschaulicht eine Speicherungsvorrichtung mit einer vertrauenswürdigen Schaltung zum Erzeugen anonymer Signaturen für Daten, die auf der Speicherungsvorrichtung gespeichert sind, die auf einem Schreibpfad der Speicherungsvorrichtung eingefügt ist.
    • 2 veranschaulicht beispielhafte Vorgänge zum Erzeugen einer anonymen Signatur für Daten, die auf einer Speicherungsvorrichtung gespeichert sind, basierend auf einem Hash der Daten und einem privaten Signierschlüssel, der in einer vertrauenswürdigen Schaltung sicher gespeichert ist, die auf einem Schreibpfad in der Speicherungsschaltlogik eingefügt ist.
    • 3 veranschaulicht eine beispielhafte Hash-Adresskarte, einschließlich Abbildungen von Bereichen von Speicheradressen auf berechnete Hashs der in Bereichen von Speicheradressen gespeicherten Daten.
    • 4 veranschaulicht beispielhafte Vorgänge zum Validieren des Vorhandenseins von Daten an einer Speicheradresse in der Speicherungsvorrichtung basierend auf einer Hash-Adresskarte.
    • 5 veranschaulicht ein beispielhaftes System, auf dem Ausführungsformen der vorliegenden Offenbarung durchgeführt werden können.
  • Zum besseren Verständnis wurden, soweit möglich, identische Bezugszeichen verwendet, um identische Elemente zu bezeichnen, die den Zeichnungen gemein sind. Es wird in Betracht gezogen, dass Elemente und Merkmale einer Ausführungsform ohne besondere Aufzählung vorteilhaft in andere Ausführungsformen aufgenommen werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Gesichtspunkte der vorliegenden Offenbarung stellen Einrichtungen, Verfahren, Verarbeitungssysteme und computerlesbare Medien bereit, um den Besitz von Daten in einem dezentralen Datenspeichersystem über eine vertrauenswürdige Schaltung in einer Speicherungsvorrichtung nachzuweisen.
  • In dezentralen Datenspeichersystemen können verschiedene Vorrichtungen Daten von Teilnehmern in dem dezentralen Datenspeichersystem schreiben und Daten lesen. Allgemein kann beim Schreiben von Daten in das dezentrale Datenspeichersystem eine Blockkette oder ein anderer verteilter Ledger beibehalten werden, einschließlich Informationen über die Daten, die in das dezentrale Datenspeichersystem geschrieben werden (z. B. Größe der Daten, die in das dezentrale Datenspeichersystem im Hinblick auf eine Anzahl von Bits, eine Anzahl von Datenblöcken einer gegebenen Größe usw. geschrieben werden; einen Hash der Daten, die in das dezentrale Datenspeichersystem geschrieben werden, und andere Informationen). Wie erörtert, kann die Blockkette, da Blockketten im Allgemeinen als Satz von Blöcken strukturiert sind, wobei jeder Block basierend auf einem Hash des vorherigen Blocks einen vorherigen Block referenziert, ein Ledger von Informationen, die jede Transaktion identifizieren, in dem dezentralen Speichersystem unverfälschbar speichern. Dieser Ledger kann unverfälschbar sein, da sich ein Hash eines Blocks ändert, wenn jegliche Informationen in dem Block geändert werden; somit muss, um einen Datensatz in der Blockkette zu ändern, möglicherweise eine unpraktikabel große Anzahl von Blöcken modifiziert werden. Diese Eigenschaften haben zu Blockketten geführt, die zur Unterstützung der Infrastruktur verschiedener Kryptowährungen verwendet werden.
  • Eine Herausforderung bei dezentralen Datenspeichersystemen besteht darin, dass jede gegebene Teilnehmervorrichtung in dem dezentralen Datenspeichersystem die Daten hält, die in diese Teilnehmervorrichtung geschrieben werden sollen, wie durch einen Datensatz in der Blockkette nachgewiesen, sodass eine Client-Vorrichtung, die Daten in das dezentrale Datenspeichersystem geschrieben hat, sicherstellen kann, dass die Daten nach Bedarf abgerufen werden können. Das heißt, ein beliebiger Teilnehmer des dezentralen Datenspeichersystems kann als Teil der Teilnahme an dem dezentralen Datenspeichersystem aufgefordert werden, diese Daten beizubehalten und die Speicherungsblöcke, in denen diese Daten gespeichert werden, zu wiederholen, bis der Besitzer der Daten diese Daten aus dem dezentralen Datenspeichersystem löscht.
  • Verschiedene Techniken können verwendet werden, um sicherzustellen, dass die Daten, die in ein dezentrales Datenspeichersystem geschrieben werden, sicher sind. In einem dezentralen Datenspeichersystem, das von einem einzigen Anbieter betrieben wird, kann eine Annahme, dass die Daten vorhanden sind, basierend auf dem Vertrauen in diesen einzigen Anbieter vorgenommen werden. Bei dezentralen Datenspeichersystemen, in denen Daten auf Speicherungsvorrichtungen gespeichert sind, deren Besitzertum unbekannt ist, ist diese Annahme möglicherweise nicht gültig. In dezentralen Datenspeichersystemen, in denen Daten auf Speicherungsvorrichtungen gespeichert sind, für die das Besitzertum unbekannt ist, kann eine Technik das periodische Abrufen der Daten aus dem dezentralen Datenspeichersystem einschließen. Dies kann jedoch eine erhebliche Menge an Netzwerkbandbreite und Verarbeitungszyklen verschwenden, da eine Client-Vorrichtung, die das Validieren des Vorhandenseins dieser Daten ersucht, periodisch große Datenmengen für keinen anderen Zweck als den der Validierung, dass die Daten im dezentralen Datenspeichersystem weiterhin vorhanden sind, abruft. In einem anderen Beispiel können zufällige Datenstücke periodisch abgerufen werden. Das Abrufen von zufälligen Datenstücken gewährleistet jedoch unter Umständen nicht, dass die Daten tatsächlich als Ganzes vorhanden sind. Um die Wahrscheinlichkeit des Datenverlusts zu minimieren, können dann größere Datenmengen aus dem dezentralen Datenspeichersystem abgerufen werden, was wiederum die Verwendung signifikanter Mengen an Bandbreite und Verarbeitungszyklen nach sich ziehen kann.
  • Eine andere Technik zum Sicherstellen, dass Daten, die in ein dezentrales Datenspeichersystem geschrieben werden, sicher sind, kann verschiedene kryptografische Techniken beinhalten, um das Vorhandensein der Daten nachzuweisen. Die folgenden nicht-interaktiven Nullkenntnis-Beweise brauchen keine Interaktion zwischen einem Anbieter und einem Prüfer beinhalten; vielmehr können verschiedene kryptografische Beweise, wie Beweise einer Replikation, die das Vorhandensein einer Anzahl von Kopien von Daten mathematisch nachweisen, oder Beweise von Raum-Zeit, die eine kontinuierliche Speicherung bereitstellen, verwendet werden, um das Vorhandensein der Daten im dezentralen Datenspeichersystem nachzuweisen. Diese Beweise können jedoch rechnerisch aufwändig sein. Ein kryptografischer Beweis kann die Berechnung als arithmetische Schaltung von Additions- und Multiplikations-Gates darstellen und beinhaltet einen oder mehrere Vorgänge, die einen Rechenaufwand haben, der dem der Verschlüsselung von öffentlichen Schlüsseln pro Gate der Schaltung gleichkommt. Da der kryptografische Beweis kryptografische Vorgänge für öffentliche Schlüssel auf pro-Gate-Grundlage beinhaltet, können die Zeit und die Rechenressourcen, die zum Erzeugen eines Beweises erforderlich sind, signifikant sein (z. B. für eine 1000-Bit-Eingabe und eine 1-Million-Gate-Arithmetikschaltung über zwei Minuten Rechenzeit).
  • Dezentrale Datenspeichersysteme können die technischen Grundlagen für Kryptowährungen bilden, und das vorgenannte technische Problem der Sicherstellung/Verifizierung der Speicherungssicherheit wird in solchen System zu einem wichtigen Problem. Filecoin ist eine solche beispielhafte Kryptowährung, bei der ein beliebiger Teilnehmer eine Speicherungskapazität einem Speicherungsnetzwerk bereitstellen kann, und jeder Kunde kann Daten in Speicherungskapazität speichern, die von den Teilnehmern in dem Speicherungsnetzwerk bereitgestellt wird. Das Filecoin-Netzwerk betreibt einen Speicherungsmarkt und einen Abrufmarkt. Der Speicherungsmarkt ermöglicht es, dass Kunden Speicherungs-Miner zum Speichern von Daten bezahlen, während der Abrufmarkt Kunden das Abrufen von Daten durch Bezahlen von Abruf-Minern zur Lieferung der Daten ermöglicht. Unabhängig davon, ob eine Anforderung zur Speicherung oder zum Abrufen von Daten dient, erteilen Kunden Gebotaufträge und Miner Angebotsaufträge. Das Netzwerk gleicht die Aufträge in einer dezentralen und verifizierbaren Weise an, damit Daten in das Speicherungsnetzwerk geschrieben und aus diesem abgerufen werden können.
  • Jeder Teilnehmer in dem Speicherungsnetzwerk kann potentiell die Daten eines Kunden speichern. Der Kunde möchte sicherstellen, dass die Daten bei Bedarf abgerufen werden können, und somit kann erwartet werden, dass von dem Anbieter, der die Daten des Kunden gespeichert hat (z. B. als Reaktion darauf, dass das Netzwerk zuvor einen Gebotsauftrag des Kunden mit dem Angebotsauftrag des Anbieters angeglichen hat) erwartet wird, dass er diese Daten dauerhaft speichert. Das heißt, für eine gegebene Menge an Speicherplatz, die zum Speichern der Daten des Kunden benötigt wird, kann der Teilnehmer, auf dem die Daten des Kunden gespeichert sind, erwarten, dass mindestens diese gegebene Menge an Speicherplatz für den Kunden vorgesehen wird. Ferner sollte dieser eigens vorgesehene Platz für keinen anderen Zweck neu verwendet werden, während der Anbieter vertraglich zum Speichern der Kundendaten verpflichtet ist.
  • Um zu beweisen, dass die Daten des Kunden im Speicherungsnetzwerk vorhanden sind und sicherzustellen, dass der vertragliche Speicherplatz nicht neu verwendet wird, können die prägnanten nicht-interaktiven Nullkenntnis-Beweise für die Erstellung von Beweissystemen verwendet werden, die als Replikationsbeweise und Raum-Zeit-Beweise bezeichnet werden können. Ein Teilnehmer im Speicherungsnetzwerk kann dem Kunden einen Replikationsbeweis vorlegen, um dem Kunden mathematisch zu beweisen, dass der Anbieter eine gewisse Anzahl von Kopien der Kundendaten speichert. Ein Raum-Zeit-Beweis kann verwendet werden, um nachzuweisen, dass eine gewisse Datenmenge kontinuierlich über einen gewissen Zeitraum gespeichert wurde. Die Erzeugung dieser prägnanten nicht interaktiven Nullkenntnis-Beweise kann jedoch ein rechenaufwändiger Prozess sein.
  • Gesichtspunkte der vorliegenden Offenbarung stellen Techniken bereit, die das Vorhandensein von Daten, die in einem dezentralen Speichersystem unter Verwendung einer vertrauenswürdigen Schaltung in einer Speicherungsvorrichtung gespeichert sind, effizient nachweisen. In einigen Ausführungsformen kann die vertrauenswürdige Schaltung in der Speicherungsvorrichtung auf einem Schreibpfad in eine Speicherungsschaltlogik eingefügt sein, in der Daten gespeichert sind, und kann eingerichtet sein, um Hashs und Signaturen der Daten zu erzeugen, die in Datenblöcke in der Speicherungsschaltlogik geschrieben werden, wenn Daten in die Speicherungsschaltlogik geschrieben werden. Auf diese Weise können Gesichtspunkte der vorliegenden Offenbarung Daten erzeugen, die verwendet werden können, um die Speicherung von Daten in der Speicherungsvorrichtung nachzuweisen und bereitzustellen, dass die Daten während des Schreibprozesses anstelle auf-Nachfrage in der Speicherungsvorrichtung gespeichert werden. Wenn Client-Vorrichtungen einen Nachweis anfordern, dass Daten auf der Speicherungsvorrichtung gespeichert sind, kann die vertrauenswürdige Schaltung einen zuvor berechneten Hash bereitstellen, anstatt die Daten aus der Speicherungsschaltlogik zu lesen und einen Nachweis zu erzeugen, dass die Daten auf der Speicherungsschaltung auf-Nachfrage vorhanden sind. Dadurch können Gesichtspunkte der vorliegenden Offenbarung die Leistungsnutzungs- und -verarbeitungszeit reduzieren, die an dem Nachweisen des Vorhandenseins von Daten beteiligt sind, die in einem dezentralen Speichersystem gespeichert werden, da die Beweise nicht jedes Mal berechnet werden, wenn ein Nachweis des Vorhandenseins angefordert wird.
  • Ferner kann beim Nachweisen des derzeitigen Vorhandenseins von Daten, die in dem dezentralen Speichersystem gespeichert sind, eine Übereinstimmung zwischen einem Hash eines Blocks in einer Blockkette, die periodisch aktualisiert werden kann, um die Frische der Signatur sicherzustellen, und einem Hash, der von der Speicherungsvorrichtung als Reaktion auf eine Anforderung des Nachweises des Vorhandenseins zurückgegeben wird, belegen, dass die Daten derzeit in dem dezentralen Speichersystem gespeichert sind. Somit können verteilte Datenspeichersysteme recheneffizienter gemacht werden, die Leistungsnutzung für Vorrichtungen, die an dem verteilten Datenspeichersystem teilnehmen, kann reduziert werden, die Batterielebensdauer mobiler Vorrichtungen, die an dem verteilten Datenspeichersystem teilnehmen, kann verbessert werden und so fort.
  • Darüber hinaus werden, wie oben erwähnt, gewisse Kryptowährungen auf solchen dezentralen Speichersystemschemata aufgebaut. Konventionelle Speicherungsvorrichtungen haben in der Regel keine Beweiserzeugungsfähigkeit, um die Erzeugung von Beweisen für gespeicherte Daten zu ermöglichen. Somit richten sich gewisse Ausführungsformen der Offenbarung an Speicherungsvorrichtungen, die diese beschriebenen Merkmale mit mit ihren Vorteilen der Beweiserzeugungseffizienz haben, sodass sie vertrauenswürdige Vorrichtungen werden können. Dies ermöglicht die Teilnahme an dem Gesamtspeicherungsschema, auf dem die Kryptowährungen aufgebaut werden.
  • Beispielhafte Speicherungsvorrichtung mit einer vertrauenswürdigen Schaltlogik zum Nachweisen des Vorhandenseins von Daten, die auf der Speicherungsvorrichtung gespeichert sind
  • 1 stellt eine beispielhafte Speicherungsvorrichtung 100 mit einer vertrauenswürdigen Schaltung 110 zum Erzeugen anonymer Signaturen für Daten dar, die auf der Speicherungsvorrichtung gespeichert sind, die auf einem Schreibpfad in der Speicherungsschaltlogik der Speicherungsvorrichtung eingefügt ist, gemäß Gesichtspunkten der vorliegenden Offenbarung. Die Speicherungsvorrichtung 100 kann für ein Festplattenlaufwerk, ein Solid-State-Laufwerk, eine nichtflüchtige Direktzugriffsspeichervorrichtung (NVRAM-Vorrichtung) oder eine andere Speicherungsvorrichtung, auf der Daten dauerhaft gespeichert werden können, stehen. Wie veranschaulicht, schließt die Speicherungsvorrichtung 100 eine vertrauenswürdige Schaltung 110, eine Speicherungsschaltlogik 120 und einen Schreibpfad 130 ein, auf dem Daten für Dauerhaftigkeit zu der Speicherungsschaltlogik 120 übertragen werden.
  • Vertrauenswürdige Schaltung 110 stellt im Allgemeinen eine Schaltung wie einen Prozessor dar, der Signaturen und Hashs von Daten erzeugen kann, die in einen oder mehrere Datenblöcke 122A-L (zusammen 122) in der Speicherungsschaltlogik 120 zur Verwendung beim Nachweisen des Vorhandenseins von Daten, die auf der Speicherungsvorrichtung 100 gespeichert sind, geschrieben werden. Wie veranschaulicht, kann die vertrauenswürdige Schaltung 110 auf dem Schreibpfad 130 in die Speicherungsschaltlogik 120 eingefügt werden. Da die vertrauenswürdige Schaltung 110 auf dem Schreibpfad 130 eingefügt sein kann, kann die vertrauenswürdige Schaltung 110 Schreibereignisse in die Speicherungsschaltlogik 120 erfassen und Signaturen und Hashs von Daten erzeugen, die in die Speicherungsschaltlogik 120 geschrieben werden, wenn diese Schreibereignisse erfasst werden. Wie veranschaulicht, schließt die vertrauenswürdige Schaltung 110 einen Schlüsselspeicher 112, einen Hash-Map-Speicher 114 und einen Beweisgenerator 116 ein.
  • Der Schlüsselspeicher 112 stellt im Allgemeinen eine Datenspeicherungsschaltlogik dar, auf der ein privater Signierschlüssel, welcher der Speicherungsvorrichtung 100 zugeordnet ist, dauerhaft gespeichert ist. Um sicherzustellen, dass die Speicherungsvorrichtung 100 anonyme digitale Signaturen unter Verwendung desselben Schlüssels erzeugt, kann ein privater Signierschlüssel zum Zeitpunkt der Herstellung dauerhaft in dem Schlüsselspeicher 112 gespeichert werden (z. B. „eingebrannt“). In einigen Gesichtspunkten kann der private Signierschlüssel ein Schlüssel aus einem Satz von Schlüsseln sein, die einem gleichen öffentlichen Schlüssel zugeordnet sind, was der Speicherungsvorrichtung 100 ermöglichen kann, anonyme digitale Signaturen unter Verwendung eines Schlüssels zu erzeugen, der die Speicherungsvorrichtung 100 als eine Vorrichtung aus einer bestimmten Klasse von Vorrichtungen identifiziert, ohne Informationen über die Speicherungsvorrichtung 100 selbst zu exponieren. Zum Beispiel kann der in dem Schlüsselspeicher 112 gespeicherte private Signierschlüssel ein Schlüssel sein, der unter Verwendung des erweiterten Datenschutz-Algorithmus (EPID-Algorithmus) oder anderer Algorithmen erzeugt wird, in denen große Gruppen von privaten Signierschlüsseln einem gleichen öffentlichen Schlüssel zugeordnet sind.
  • Der Hash-Map-Speicher 114 stellt im Allgemeinen eine Datenspeicherungsschaltlogik dar, in der Abbildungen von Hash-Versionen von Daten in Speicheradressbereiche, in denen die Daten gespeichert sind, beibehalten werden können. Wie nachstehend ausführlicher erörtert, können Einträge im Hash-Map-Speicher 114 erzeugt werden, wenn Schreibereignisse auftreten, und Hashs können aus dem Hash-Map-Speicher 114 abgerufen werden, wenn eine externe Vorrichtung die Verifizierung anfordert, dass Daten in der Speicherungsvorrichtung 100 gespeichert sind. In einigen Gesichtspunkten kann der Hash-Map-Speicher 114 als Nachschlagetabelle (LUT) strukturiert sein, in der Hashs einer Startspeicheradresse (z. B. einer Speicheradresse eines Datenblocks 122 in einer Speicherungsschaltlogik 120, bei der ein Anfangsabschnitt der durch den Hash dargestellten Daten gespeichert ist) und eine Endspeicheradresse (z. B. eine Speicheradresse eines Datenblocks 122 in der Speicherungsschaltlogik 120, an der ein letzter Abschnitt der durch den Hash dargestellten Daten gespeichert ist) zugeordnet sind.
  • Der Beweisgenerator 116 ist im Allgemeinen dazu eingerichtet, anonyme digitale Signaturen zu erzeugen, welche die Speicherung von Daten in die Speicherungsschaltlogik 120 nachweisen und das Vorhandensein von Daten validieren, die auf die Speicherungsschaltlogik 120 auf Anforderung geschrieben werden. Wie erörtert, kann, da die vertrauenswürdige Schaltung 110 auf dem Schreibpfad 130 in die Speicherungsschaltlogik 120 eingefügt ist, der Beweisgenerator 116 eingerichtet sein, um das Auftreten von Schreibereignissen an die Speicherungsschaltlogik 120 zu erfassen und anonyme digitale Signaturen und Hashs der in dem Schreibereignis enthaltenen Daten zu erzeugen, während solche Daten in die Speicherungsschaltlogik 120 geschrieben werden. Die erzeugte anonyme digitale Signatur kann dann aus der Speicherungsvorrichtung für die Aufnahme in einer öffentlichen Blockkette ausgegeben werden, die extern von der Speicherungsvorrichtung 100 gespeichert ist, um aufzuzeichnen, dass Daten, die einem gegebenen Hash zugeordnet sind, auf der Speicherungsvorrichtung 100 gespeichert worden sind. Die öffentliche Blockkette kann zum Beispiel in Bezug auf oder auf andere Weise eine Kryptowährung betreffen, in der Transaktionen (z. B. Speicherung und/oder Abruf) aufgezeichnet werden, und in denen die Kryptowährung ausgegeben wird, wenn der Abschluss solcher Transaktionen in der öffentlichen Blockkette bewiesen ist.
  • Im Allgemeinen kann die vertrauenswürdige Schaltung 110 ein Hash der Daten erzeugen, die in die Speicherungsschaltlogik 120 geschrieben werden, um eine anonyme digitale Signatur zu erzeugen, welche die Speicherung von Daten in die Speicherungsschaltlogik 120 beweist. Verschiedene Techniken können verwendet werden, um diese Hashs zu erzeugen. Zum Beispiel können kryptografische Hash-Algorithmen, wie MD5, MD6 oder SHA, verwendet werden, um einen Hash der Daten zu erzeugen, die in die Speicherungsschaltlogik 120 geschrieben werden. Im Allgemeinen sind diese Hash-Algorithmen Einwegalgorithmen, bei denen ein Hash aus einem Datensatz erzeugt werden kann, aber die Daten können (praktisch) nicht aus dem Hash wiederhergestellt werden. Ferner erzeugen diese Hash-Algorithmen unterschiedliche Hashs für unterschiedliche Sätze von Dateneingaben in den Algorithmus; jede Änderung eines Eingabesatzes von Daten führt zu der Erzeugung eines anderen Hashs. Der Hash, der für die Daten erzeugt wird, die in die Speicherungsschaltlogik 120 geschrieben werden, kann dann unter Verwendung des privaten Signierschlüssels signiert werden, der im Schlüsselspeicher 112 gespeichert ist, und die anonyme digitale Signatur kann aus der Speicherungsvorrichtung ausgegeben werden, wie vorstehend erörtert. In einigen Gesichtspunkten kann die Anzahl von Speicherungsblöcken, über die Daten geschrieben wurden, auch in der anonymen digitalen Signatur enthalten sein, um die Robustheit der signierten Hashs zu gewährleisten, wobei die Speicherung von Daten in die Speicherungsschaltlogik 120 nachgewiesen wird. Durch Einschließen der Gesamtzahl von Speicherungsblöcken, über die Daten in die anonyme digitale Signatur geschrieben wurden, welche die Speicherung von Daten in die Speicherungsschaltlogik 120 nachweisen, kann das Verwerfen von Datenblöcken dazu führen, dass die Speicherungsvorrichtung anschließend keinen Hash über die gleiche Anzahl von Blöcken erzeugen kann. Somit stimmt das Hash möglicherweise nicht mit dem ursprünglichen Hash überein, das erzeugt wurde, als die Daten geschrieben wurden, und diese Nichtübereinstimmung kann einer Client-Vorrichtung angeben, dass die Speicherungsvorrichtung 100 beim Beibehalten der darin geschriebenen Daten versagt hat.
  • In einigen Gesichtspunkten kann der Beweisgenerator 116 eines oder mehrere zusätzliche Datenstücke zum Erzeugen anonymer digitaler Signaturen für Daten verwenden, die in die Speicherungsschaltlogik 120 geschrieben werden, um die „Frische“ der anonymen digitalen Signatur sicherzustellen. Das heißt, anonyme digitale Signaturen können von Zeit zu Zeit neu erzeugt werden, sodass die Bereitstellung eines signierten Hashs an die Blockkette oder an eine anfordernde Client-Vorrichtung, die an dem verteilten Datenspeichersystem teilnimmt, angeben kann, dass die anonyme digitale Signatur einen aktuellen Zustand von Daten, der in der Speicherungsvorrichtung 100 gespeichert ist, anstelle eines vorherigen Zustands, der den aktuellen Zustand der in der Speicherungsvorrichtung 100 gespeicherten Daten widerspiegelt oder nicht, widerspiegelt. Um die „Frische“ der anonymen digitalen Signatur sicherzustellen, kann der Beweisgenerator 116 in einem Gesichtspunkt eine Uhr oder eine andere Zeitreferenz (z. B. von einem Host-System) verwenden, um eine aktuelle Zeit zu erhalten. Sowohl ein Zeitstempel, welcher der aktuellen Zeit entspricht, als auch das Hash kann unter Verwendung des privaten Schlüssels im Schlüsselspeicher 112 signiert und an eine andere Vorrichtung in dem verteilten Datenspeichersystem ausgegeben werden. Da andere Vorrichtungen in dem verteilten Datenspeichersystem Zugriff auf den entsprechenden öffentlichen Schlüssel auf den privaten Schlüssel im Schlüsselspeicher 112 haben können, können die anderen Vorrichtungen eine Signatur des signierten Zeitstempels und Hashs validieren, und basierend auf der validierten Signatur, dem Zeitstempel und einem Schwellenwert (der Taktungenauigkeiten, Drift, fehlende Taktsynchronisation über unterschiedliche Vorrichtungen in dem verteilten Datenspeichersystem berücksichtigen kann), bestimmen, dass die anonyme digitale Signatur „frisch“ ist, wenn sich der Zeitstempel innerhalb des Schwellenwerts befindet.
  • In einem anderen Gesichtspunkt kann der aktuelle Zustand einer Blockkette (z. B. eine Blockkette in Bezug auf oder anderweitig Teil einer Kryptowährung), in dem Transaktionsdatensätze für Daten, die in das verteilte Datenspeichersystem geschrieben werden, verwendet werden, um „Frische“ der anonymen digitalen Signatur sicherzustellen. Um den aktuellen Zustand der Blockkette zu verwenden, um eine „Frische“ der anonymen digitalen Signatur sicherzustellen, kann der Beweisgenerator 116 den letzten Block abrufen, welcher der Blockkette von der Blockkette zugehörig war. Zum Beispiel kann der Beweisgenerator 116 von einem anderen Datenspeicher, der lokal oder entfernt von dem Rechnersystem sein kann, auf dem die Speicherungsvorrichtung 100 installiert ist, an das die Speicherungsvorrichtung 100 angeschlossen ist, den letzten Block in der Blockkette anfordern. Nach dem Empfangen oder Abrufen des letzten Blocks der Blockkette kann der Beweisgenerator 116 Informationen in Bezug auf den letzten Block der Blockkette (z. B. den Inhalt des letzten Blocks der Blockkette, einen Hash des letzten Blocks der Blockkette usw.) und den Hash der Daten, die in die Speicherungsschaltlogik 120 geschrieben werden, unter Verwendung des privaten Signierschlüssels, der in dem Schlüsselspeicher 112 gespeichert ist, signieren. Die signierten Informationen, die sich auf den letzten Block der Blockkette und den signierten Hash der in die Speicherungsschaltlogik 120 geschriebenen Daten beziehen, können an teilnehmende Vorrichtungen im verteilten Datenspeichersystem ausgegeben werden, und diese teilnehmenden Vorrichtungen können bestätigen, dass die anonyme digitale Signatur „frisch“ oder „schal“ (z. B. veraltet) ist, indem eine Signatur des signierten letzten Blocks der Blockkette validiert wird und das Alter des signierten letzten Blocks der Blockkette relativ zum aktuellen letzten Block der Blockkette identifiziert wird.
  • Die Speicherungsvorrichtung 100 kann nicht die einzige Speicherungsvorrichtung sein, auf die Daten geschrieben werden. Wenn zum Beispiel ein großes Datenobjekt in das verteilte Datenspeichersystem geschrieben wird, können die Teilnehmer im verteilten Datenspeichersystem Datenblöcke bereitstellen, um einen Abschnitt des großen Datenobjekts zu speichern. Somit können mehrere Schreibvorgänge auf mehreren Speicherungsvorrichtungen durchgeführt werden, um das große Datenobjekt in das verteilte Speichersystem zu schreiben. Da jedoch diese einzelnen Abschnitte des großen Datenobjekts keine unabhängigen Schreibereignisse sind, sondern Abschnitte eines einzelnen Schreibereignisses sind, wird eine anonyme digitale Signatur für das große Datenobjekt erzeugt und für die Blockkette beibehalten, um zu beweisen, dass das große Datenobjekt in eine oder mehrere Speicherungsvorrichtungen (einschließlich der Speicherungsvorrichtung 100) im verteilten Datenspeichersystem geschrieben wurde.
  • Um eine einzelne anonyme digitale Signatur zu erzeugen, die den Abschluss eines Schreibvorgangs für ein großes Datenobjekt nachweist, kann jede teilnehmende Speicherungsvorrichtung in dem verteilten Datenspeichersystem ein Drei-Tupel (m, n, σ) sein, wobei m einen Hash eines Abschnitts des großen Datenobjekts darstellt, der in das verteilte Datenspeichersystem geschrieben wird, n einen Betrag des großen Datenobjekts darstellt, welcher der Speicherungsvorrichtung bereitgestellt wird, und σ eine einzelne Signatur darstellt, die für den Abschnitt der Blockkette m und den Betrag des großen Datenobjekts, welcher der Speicherungsvorrichtung bereitgestellt wird, n. Um die kombinierte anonyme digitale Signatur über jede der teilnehmenden Speicherungsvorrichtungen im verteilten Speichersystem zu erzeugen, können die drei Tupel (m, n, σ) von jeder Vorrichtung zu einer einzelnen Darstellung kombiniert werden. Zum Beispiel wird angenommen, dass ein großes, geschriebene Datenobjekt in die Speicherungsvorrichtung 100 und eine andere Speicherungsvorrichtung geschrieben wird, wodurch die drei Tupel (m1, n1, σ1) und (m2, n2, σ2) erzeugt werden. Um die einzelne anonyme digitale Signatur zu erzeugen, die in die Blockkette geschrieben werden soll, kann ein Hash aus m1||m2 erzeugt werden (z. B. ein Hash der Verkettung der Werte m1 und m2) und ein Hash der Summe von n1 und n2 kann erzeugt werden (z. B. ein Hash der Gesamtanzahl von Datenblöcken, die in das verteilte Datenspeichersystem geschrieben werden. Das Hash von m1||m2 und das Hash von n1 + n2 können unter Verwendung des privaten Signierschlüssels signiert werden, der im Schlüsselspeicher 112 gespeichert ist, um die einzelne anonyme digitale Signatur zu erzeugen, und die einzelne anonyme digitale Signatur kann an die Blockkette ausgegeben werden, um den Abschluss des Schreibvorgangs für dieses große Datenobjekt zu beweisen.
  • In einigen Gesichtspunkten können Signaturen über unterschiedliche Datenstücke kombinierbar sein, die in der Speicherungsschaltlogik 120 (und über unterschiedliche Speicherungsvorrichtungen) gespeichert sind. Zum Beispiel können Signaturen kombinierbar sein, wenn Zeitstempel, die unterschiedlichen Signaturen zugeordnet sind, innerhalb einer Schwellenwertzeitspanne voneinander liegen. In einem anderen Beispiel, wenn Signaturen einem Aufforderungswert zugeordnet sind, wie Daten, die aus einem aktuellen Zustand der Blockkette abgeleitet sind, in denen Informationen über Datenschreibereignisse gespeichert sind, sind Signaturen kombinierbar, wenn der Aufforderungswert gleich ist (z. B. den gleichen Zustand der Blockkette referenziert). Um eine kombinierte anonyme digitale Signatur aus einer ersten Signatur zu erzeugen, die ersten Daten zugeordnet ist, die in die Speicherungsschaltlogik 120 geschrieben werden, und einer zweiten Signatur, die zweiten Daten zugeordnet ist, die in die Speicherungsschaltlogik 120 geschrieben werden, können Informationen, die innerhalb der Signaturen getragen werden - wie z. B. ein Hash einer Blockkette oder Merkel-Baums und eine Anzahl von Datenblöcken, die der ersten und der zweiten Signatur zugeordnet sind - verkettet werden, und die verketteten Daten können unter Verwendung des privaten Signierschlüssels, der in dem Schlüsselspeicher 112 gespeichert ist, signiert werden.
  • Die vertrauenswürdige Schaltung 110 ist im Allgemeinen eingerichtet, um das Vorhandensein von Daten in der Speicherungsschaltlogik 120 zu beweisen, wenn sie von einer teilnehmenden Vorrichtung in dem verteilten Datenspeichersystem dazu angefordert wird. Im Allgemeinen kann eine teilnehmende Vorrichtung in dem verteilten Datenspeichersystem eine Aufforderung an die Speicherungsvorrichtung 100 übertragen, die einen Aufforderungswert einschließt, der beim Signieren des Hashs der Daten verwendet werden soll, für die eine Verifizierung angefordert wird. Die Herausforderung kann auch Informationen einschließen, die den Ort der Daten in der Speicherungsvorrichtung identifizieren, wie eine Speicheradresse. Die vertrauenswürdige Schaltung 110 kann die im Hash-Map-Speicher 114 gespeicherte Hash-Adresskarte verwenden, um zu bestimmen, ob ein Hash für die Speicheradresse vorberechnet wurde. In einigen Gesichtspunkten kann das Hash einer Start- und einer Endspeicheradresse zugeordnet sein, die spezifischen Speicherungsblöcken in der Speicherungsschaltlogik 120 zugeordnet ist. Wenn die in der Aufforderung enthaltene Adresse innerhalb eines Adressbereichs in der Hash-Adresskarte liegt, kann die vertrauenswürdige Schaltung den Hash verwenden, der dem Bereich von Adressen zugeordnet ist, um eine Antwort auf die Aufforderung zu erzeugen. Die Antwort kann zum Beispiel den Hash einschließen, der dem Bereich von Adressen zugeordnet ist, der unter Verwendung des Aufforderungswertes, welcher der vertrauenswürdigen Schaltung 110 durch die teilnehmende Vorrichtung in dem verteilten Datenspeichersystem bereitgestellt wird, signiert wird, das die Validierung der in der Speicherungsvorrichtung 100 gespeicherten Daten anfordert.
  • Wenn jedoch die Speicheradresse keinem Bereich von Adressen zugeordnet ist, die bereits in der Hash-Adresskarte gespeichert sind, muss ein Hash für die Daten berechnet werden, die in der in der Aufforderung spezifizierten Speicheradresse gespeichert sind. Um das Hash zu erzeugen, kann die vertrauenswürdige Schaltung 110 die Daten an der in der Aufforderung spezifizierten Speicheradresse lesen (und in einigen Gesichtspunkten Daten in der Nähe der in der Aufforderung spezifizierten Speicheradresse). Die Daten, die aus der Speicheradresse in der Speicherungsschaltlogik 120 gelesen werden, können gehasht und signiert werden (z. B. unter Verwendung des privaten Signierschlüssels, der in dem Schlüsselspeicher 112 gespeichert ist, und/oder eines Aufforderungswertes, der in einer Anforderung zum Validieren des Vorhandenseins von Daten in der Speicherungsvorrichtung 100 enthalten ist), und das signierte Hash kann an die teilnehmende Vorrichtung in dem verteilten Datenspeichersystem zurückgegeben werden, das die Validierung der Daten an der Speicheradresse angefordert hat. In einigen Gesichtspunkten kann der Hash-Adresskarte ein neuer Eintrag hinzugefügt werden, um nachfolgende Anforderungen zu ermöglichen, die das Vorhandensein von Daten an der spezifizierten Speicheradresse validieren, die abgeschlossen werden soll, ohne die Daten aus Datenblöcken 122 in der Speicherungsschaltlogik 120 zu lesen.
  • Um die Karte beizubehalten und sicherzustellen, dass die Karte Hashs einschließt, die dem letzten Zustand der in der Speicherungsschaltlogik 120 gespeicherten Daten entsprechen, können Einträge in der Karte ungültig gemacht werden, wenn Daten gelöscht oder aktualisiert werden. Wenn die Schreibereignisse auf dem Schreibpfad 130 abgefangen werden, kann der Beweisgenerator 116 die in den Schreibereignissen spezifizierte Speicheradressen untersuchen, um zu bestimmen, ob eine Abbildung in der Hash-Adresskarte für diese Speicheradressen vorhanden ist. Wenn die in den Schreibereignissen spezifizierten Speicheradressen innerhalb eines Bereichs von Adressen liegen, der einem Hash in der Hash-Adresskarte zugeordnet sind, kann der Eintrag in der Hash-Adresskarte, die dem Bereich von Adressen zugeordnet ist, gelöscht werden.
  • Die Speicherungsschaltlogik 120 stellt im Allgemeinen Schaltlogik dar, in die Daten in der Speicherungsvorrichtung 100 gespeichert werden können. Wie veranschaulicht, schließt die Speicherungsschaltlogik 120 eine Vielzahl von Datenblöcken 122A-122L ein (obwohl es sich versteht, dass die Speicherungsschaltlogik 120 eine beliebige Anzahl von Speicherblöcken einschließen kann und die Veranschaulichung der Datenblöcke 122A-122L rein veranschaulichend ist). Jeder Datenblock 122 stellt einen diskreten Abschnitt der Speicherungsschaltlogik 120 dar, in dem Daten gespeichert werden können. Zum Beispiel kann ein Datenblock 122 eine oder mehrere Zellen in einer Festkörperspeichervorrichtung darstellen, wobei jede Zelle eine beliebige Anzahl von Bits speichern kann (z. B. eine Single-Level-Zelle, die ein Bit in der Zelle speichern kann; eine Dual-Level-Zelle, die zwei Bits in der Zelle speichern kann; eine Triple-Level-Zelle, die drei Bits in der Zelle speichern kann usw.) oder einen Sektor in einer Spur von Speicherungsmedien, wie in einem Festplattenlaufwerk. Jeder Datenblock 122 kann einer Speicheradresse oder einem Bereich von Speicheradressen zugeordnet sein. Lesevorgänge, die an eine Speicheradresse gerichtet sind, die einem Datenblock 122A-122L zugeordnet ist, können veranlassen, dass die Daten von dem entsprechenden Datenblock 122A-122L abgerufen werden, und Schreibvorgänge, die an eine Speicheradresse gerichtet sind, die einem Datenblock 122A-122L zugeordnet ist, können veranlassen, dass Daten in den entsprechenden Datenblock 122A-122L geschrieben werden. Da Daten in Datenblöcke 122 in der Speicherungsschaltlogik 120 geschrieben werden, kann die vertrauenswürdige Schaltung 110 anonyme digitale Signaturen für die Daten erzeugen, die in die Datenblöcke 122 geschrieben werden, wie vorstehend erörtert.
  • Beispielhaftes computerimplementiertes Verfahren zum Erzeugen anonymer digitaler Signaturen für Daten, die in eine Speicherungsvorrichtung unter Verwendung einer vertrauenswürdigen Schaltung geschrieben werden
  • 2 veranschaulicht beispielhafte Vorgänge 200, die durch eine vertrauenswürdige Schaltung einer Speicherungsvorrichtung (z. B. vertrauenswürdige Schaltung 110, veranschaulicht in 1) zum Erzeugen anonymer digitaler Signaturen für Daten, die in eine Speicherungsvorrichtung geschrieben werden, durchgeführt werden können, gemäß Gesichtspunkten der vorliegenden Offenbarung. Wie erörtert, können diese anonymen digitalen Signaturen für die Speicherung in einer Blockkette ausgegeben werden, die einem verteilten Datenspeichersystem zugeordnet ist, in dem Informationen über Datenschreibtransaktionen dauerhaft gehalten werden, sodass andere teilnehmende Vorrichtungen in dem verteilten Datenspeichersystem sehen können, dass Daten in das verteilte Datenspeichersystem geschrieben wurden. Die Blockkette kann zum Beispiel in Bezug auf oder auf andere Weise eine Kryptowährung betreffen, in der Transaktionen (z. B. Speicherung und/oder Abruf) aufgezeichnet werden, und in denen die Kryptowährung ausgegeben wird, wenn der Abschluss solcher Transaktionen in der Blockkette bewiesen ist. Eine teilnehmende Vorrichtung in dem verteilten Datenspeichersystem kann ein Hash verwenden, das in der anonymen digitalen Signatur enthalten ist, um das Vorhandensein von Daten in der Speicherungsvorrichtung zu validieren, wie vorstehend erörtert und nachstehend in Bezug auf 4 unten ausführlicher beschrieben. Ferner können diese anonymen digitalen Signaturen unter Verwendung einer von einer Vielzahl von privaten Signierschlüsseln signiert werden, die einem gegebenen öffentlichen Schlüssel zugeordnet ist, was eine weitere Identifizierung einer spezifischen Vorrichtung in dem verteilten Datenspeichersystem verhindern kann, auf der spezifische Daten gespeichert sind.
  • Vorgänge 200, wie veranschaulicht, beginnen in Block 210, in dem die vertrauenswürdige Schaltung eine Anforderung zum Schreiben von Daten in einen oder mehrere Datenblöcke in Speicherungsschaltlogik erfasst. Wie erörtert, kann die vertrauenswürdige Schaltung die Anforderung zum Schreiben von Daten in den einen oder die mehreren Datenblöcke in Speicherungsschaltlogik erfassen, da die vertrauenswürdige Schaltung auf dem Schreibpfad eingefügt sein kann. Somit kann die vertrauenswürdige Schaltung eine Signalisierung erfassen, die an die Speicherungsschaltlogik auf diesem Schreibpfad übertragen wird, und die Erfassung dieser Signalisierung kann die Ausführung von Vorgängen 200 auslösen.
  • In einigen Gesichtspunkten kann die Anforderung zum Schreiben von Daten in den einen oder die mehreren Datenblöcke in Speicherungsschaltlogik die zu schreibenden Daten, Speicheradressen, in welche die Daten geschrieben werden sollen, eine Größe der zu schreibenden Daten und/oder andere Informationen einschließen, die verwendet werden können, um eine Signatur zu erzeugen, die den Abschluss eines Schreibvorgangs für die in der Anforderung spezifizierten Daten nachweist. Die in der Anforderung enthaltenen Daten können unverschlüsselte Daten sein oder können verschlüsselte Daten sein. Wenn zum Beispiel mehrere Kopien von Daten geschrieben werden sollen, kann jede Kopie unter Verwendung eines anderen kryptografischen Schlüssels verschlüsselt werden, was dazu führen kann, dass eine Speicherungsvorrichtung Platz für jede Kopie der mehreren Kopien von zu schreibenden Daten zuweist, da jede Kopie eine gleiche Größe aufweisen kann, jedoch einen anderen Inhalt zu haben scheint. In einem anderen Fall, wenn Daten, die in das verteilte Datenspeichersystem geschrieben werden, von zwei unterschiedlichen Teilnehmern, die einen gleichen Wurzelknoten teilen, in einer Blockkette, die Transaktionen im verteilten Datenspeichersystem verweist, beschafft werden, kann die Verwendung von verschlüsselten Daten von jedem der unterschiedlichen Teilnehmer die Speicherung separater Kopien der Daten erzwingen, wodurch Datenverlust aus dem Speichern von Daten aus einem der Unterbäume des Root-Knotens verhindert werden kann. Um den Datenschutz der Daten zu gewähren, erhält die vertrauenswürdige Schaltung möglicherweise keine Informationen über die Schlüssel, die zum Verschlüsseln der zu schreibenden Daten verwendet werden, und sie kann die Daten als einen Rohbitstrom behandeln, von dem aus Hashes erzeugt werden sollen.
  • In Block 220 berechnet die vertrauenswürdige Schaltung einen Hash über die Daten, die in den einen oder die mehreren Datenblöcke in Speicherungsschaltlogik geschrieben werden sollen. Das Hash kann unter Verwendung einer Vielfalt von Einweg-Hashing-Algorithmen berechnet werden, bei denen eine komprimierte Darstellung der Daten, die in den einen oder die mehreren Datenblöcke in Speicherungsschaltlogik geschrieben werden sollen, erzeugt werden kann, aber die Daten können nicht aus dem Hash wiederhergestellt werden. Ferner können die Einweg-Hashing-Algorithmen ausgelegt sein, sodass jede Änderung an den Daten, wie klein auch immer, zu der Erzeugung eines anderen Hashs führt, um ein „Hash-Kollisions“-Problem zu minimieren, bei dem unterschiedliche Eingabedaten auf demselben Hash gelöst werden.
  • In Block 230 erzeugt die vertrauenswürdige Schaltung eine anonyme digitale Signatur für die Daten, die in den einen oder die mehreren Datenblöcke in Speicherungsschaltlogik geschrieben werden sollen. Im Allgemeinen kann die vertrauenswürdige Schaltung zum Erzeugen der anonymen digitalen Signatur einen privaten Signierschlüssel verwenden, der in der vertrauenswürdigen Schaltlogik gespeichert ist (z. B. in die vertrauenswürdige Schaltung zum Zeitpunkt der Herstellung eingebrannt oder während Firmware-Aktualisierungen auf die vertrauenswürdige Schaltung dauerhaft gemacht wird usw.), um den berechneten Hash für die Daten und die Anzahl von Datenblöcken, über welche die Daten gespeichert sind, zu signieren. In einigen Gesichtspunkten kann die Anonymität der digitalen Signatur basierend auf kryptografischen Eigenschaften des privaten Signierschlüssels garantiert werden. Zum Beispiel kann der private Signierschlüssel ein Schlüssel in einer großen Gruppe von Schlüsseln sein, die einen gleichen öffentlichen Schlüssel teilen, der verwendet wird, um eine Signatur von Daten zu validieren, die mit einem beliebigen Schlüssel in der großen Gruppe von Schlüsseln signiert werden, und der öffentliche Schlüssel kann einer großen Klasse von Vorrichtungen (z. B. Massespeicherungsvorrichtungen) zugeordnet sein, von denen ein einzelnes Mitglied der großen Klasse von Vorrichtungen nicht identifiziert werden kann. Da der öffentliche Schlüssel keinem spezifischen privaten Signierschlüssel zugeordnet ist, der einer spezifischen Vorrichtung zugewiesen ist, kann die Anonymität der Speicherungsvorrichtung einschließlich der vertrauenswürdigen Schaltung, welche die anonyme digitale Signatur erzeugt hat, sichergestellt werden. Da das Hash unter Verwendung des privaten Signierschlüssels verschlüsselt werden kann, kann das Hash selbst bei Übertragung und Stillstand geschützt werden, was verhindern kann, dass andere Parteien Informationen über die Daten lernen (z. B. durch Seitenkanalinformationen, die aus einem Hash gelangt sind).
  • In einigen Gesichtspunkten kann das Erzeugen der anonymen digitalen Signatur für die Daten, die in den einen oder die mehreren Datenblöcke in Speicherungsschaltlogik geschrieben werden sollen, das Kombinieren von Signaturen von mehreren Speicherungsvorrichtungen einschließen. Um die anonyme digitale Signatur über mehrere Speicherungsvorrichtungen hinweg zu erzeugen, können Informationen darüber, was in jede der mehreren Speicherungsvorrichtungen geschrieben wurde, aggregiert werden. Zum Beispiel kann jede Speicherungsvorrichtung mit ihrem eigenen Merkel-Unterbaum oder Hash-Baum in der gesamten Blockkette zugeordnet werden. Der Merkel-Unterbaum, der einer Speicherungsvorrichtung zugeordnet ist, kann die Gesamtheit der Datenschreibvorgänge darstellen, die an dieser Speicherungsvorrichtung durchgeführt werden. Das Aggregieren von Informationen über die Speicherungsvorrichtungen, in die unterschiedliche Abschnitte eines größeren Datenobjekts geschrieben wurden, können somit das Erzeugen eines Hashs über den Menkel-Unterbaum einschließen, der jeder Speicherungsvorrichtung zugeordnet ist. Dazu können die Hashs der Merkel-Unterbäume verkettet werden, und die Verkettung dieser Hashs kann unter Verwendung des privaten Signierschlüssels signiert werden, der in der vertrauenswürdigen Schaltung gespeichert ist. Die Anzahl von Datenblöcken, die zum Speichern des Datenobjekts in jeder der mehreren Speicherungsvorrichtungen verwendet werden, kann auch verkettet sein, und die Verkettung der Anzahl von Datenblöcken kann auch unter Verwendung des privaten Signierschlüssels signiert werden, der in der vertrauenswürdigen Schaltung gespeichert ist.
  • In einigen Gesichtspunkten kann das Erzeugen der anonymen digitalen Signatur das Kombinieren von Signaturen einschließen, die bestimmt werden, um durch die vertrauenswürdige Schaltung einer Speicherungsvorrichtung kombinierbar zu sein. Diese Signaturen können zum Beispiel Signaturen einschließen, die für Transaktionen erzeugt werden, die Zeitstempel innerhalb einer Schwellenwertzeitspanne voneinander aufweisen oder für Transaktionen, die einem gleichen Aufforderungswert zugeordnet sind (z. B. wurde der gleiche Zustand der Blockkette zum Zeitpunkt der Transaktion erzeugt). Um die Signaturen zu kombinieren, kann die vertrauenswürdige Schaltung Hashs und Anzahlen von Blöcken in jeder Signatur verketten und die verketteten Hashs und die verkettete Anzahl von Blöcken signieren. Die signierten verketteten Hashs und die signierte verkettete Anzahl von Blöcken können als anonyme digitale Signatur ausgegeben werden, die für die Daten erzeugt wird, die in die Speicherungsschaltung geschrieben werden.
  • Bei Block 240 wird die anonyme digitale Signatur an eine Blockkette ausgegeben. Das Ausgeben der anonymen digitalen Signatur an eine Blockkette kann den Abschluss der Anforderung nachweisen, um die Daten in den einen oder die mehreren Datenblöcke in einer Speicherungsschaltlogik der Speicherungsvorrichtung zu schreiben. Wie erörtert, kann die anonyme digitale Signatur mindestens teilweise basierend auf einem Hash der Daten erzeugt werden, die in die Speicherungsschaltlogik in der Speicherungsvorrichtung geschrieben werden. Da das Hash aus der digitalen Signatur wiederhergestellt werden kann, kann das Hash von jeder teilnehmenden Vorrichtung in dem verteilten Datenspeichersystem verwendet werden, um das Vorhandensein von Daten in dem verteilten Datenspeichersystem zu validieren.
  • Zum Beispiel kann eine Vorrichtung, welche die Schreibanforderung erzeugt hat, einen Zeiger (z. B. eine Speicheradresse) empfangen, der einen Ort der Daten in dem verteilten Datenspeichersystem (oder eine Vielzahl von Zeigern, die Orte der Daten über unterschiedliche Speicherungsvorrichtungen identifiziert, wenn sie über mehrere Vorrichtungen in dem verteilten Datenspeichersystem verteilt sind) identifiziert. Wie nachstehend ausführlicher erörtert, kann dieser Zeiger verwendet werden, um ein Hash der Daten aus der Speicherungsvorrichtung abzurufen. Wenn das abgerufene Hash und das Hash, das in der digitalen Signatur in der Blockkette enthalten ist, übereinstimmen, kann eine teilnehmende Vorrichtung in dem verteilten Datenspeichersystem verifizieren, dass die Daten, von denen ausgegangen wird, dass sie in das verteilte Datenspeichersystem geschrieben wurden, tatsächlich an der spezifizierten Adresse im verteilten Datenspeichersystem vorhanden sind.
  • Beispielhafte Hash-Adresskarte und Verifizierung der in der Speicherungsschaltlogik gespeicherten Daten
  • 3 veranschaulicht eine beispielhafte Hash-Adresskarte 300, die teilweise verwendet werden kann, um das Vorhandensein von Daten, die in einer Speicherungsschaltlogik der Speicherungsvorrichtung gespeichert sind, gemäß Gesichtspunkten der vorliegenden Offenbarung zu verifizieren.
  • Die Hash-Adresskarte 300 kann zum Beispiel im Hash-Map-Speicher 114 gespeichert werden, der in 1 veranschaulicht ist, und kann von einem Beweisgenerator einer vertrauenswürdigen Schaltung (z. B. einem Beweisgenerator 116 der vertrauenswürdigen Schaltung 110, veranschaulicht in 1) verwendet werden, um Aufforderungen oder Validierungsanforderungen für Daten zu erfüllen, die in der Speicherungsvorrichtung gespeichert sind. Wie veranschaulicht, schließt die Hash-Adresskarte 300 eine Vielzahl von Einträgen ein. Jeder Eintrag in der Hash-Adresskarte schließt einen Hash-Wert der Daten ein, die dem Eintrag zugeordnet sind, eine Anfangsadresse und eine Endadresse in der Speicherungsschaltlogik, an der die dem Eintrag zugeordneten Daten gespeichert sind. In diesem Beispiel kann jeder Eintrag 256 (0x100) Datenblöcke überspannen; jedoch sollte erkannt werden, dass ein Eintrag in der Hash-Adresskarte 300 einen Hash einschließen kann, der eine beliebige Anzahl von Datenblöcken überspannt.
  • Wie erörtert, kann, wenn eine teilnehmende Vorrichtung in dem verteilten Datenspeichersystem eine Aufforderung zum Verifizieren des Vorhandenseins von Daten in dem verteilten Datenspeichersystem erzeugt, die teilnehmende Vorrichtung eine Abfrage, die eine Adresse einschließt, an deren Ort erwartet wird, dass sich die Daten dort befinden, an die Speicherungsvorrichtung übertragen, auf der erwartet wird, dass sich die Daten dort befinden. Die vertrauenswürdige Schaltung kann die in der Aufforderung enthaltene Speicheradresse verwenden, um die Hash-Adresskarte 300 für einen Hash zu durchsuchen, der einem Bereich von Speicheradressen zugeordnet ist, in denen die in der Aufforderung enthaltene Speicheradresse liegt. Wenn eine Übereinstimmung gefunden wird, kann die vertrauenswürdige Schaltung den Hash zurückgeben (der unter Verwendung einiger anderer Informationen signiert werden kann, die in der Aufforderung enthalten sind), ohne Lesevorgänge in den Speicherungsblöcken in der Speicherungsschaltlogik der Speicherungsvorrichtung auszuführen. Zum Beispiel sei angenommen, dass eine Aufforderung angibt, dass sich Daten in dem Bereich von Speicheradressen befinden, die bei 0x00000701 starten und bei 0x00000800 enden. Da ein Eintrag für den Bereich der Speicheradressen 0x00000701 und 0x00000800 in der Karte 300 vorhanden ist, kann eine vertrauenswürdige Schaltung das Hash „6da88215dc51“ zurückgeben, ohne Daten zu lesen, die sich zwischen den Start- und Endspeicheradressen befinden, die in der Aufforderung angegeben sind. Da das Hash der Daten, die sich auf dieser Speicheradresse befinden, ohne Lesen von Daten, die sich an der spezifizierten Speicheradresse befinden, abgerufen werden kann, kann das Ausgeben des Hashs an eine Anforderungsvorrichtung den Verarbeitungsaufwand umgehen, der beim Lesen von Daten aus der Speicherungsschaltlogik an der Speicherungsvorrichtung beteiligt ist, und kann ein Hash über die Lesedaten erzeugen, wodurch die Effizienz von Vorgängen verbessert wird, die am Erzeugen und Zurückgeben von Beweisen der Speicherung in dem verteilten Datenspeichersystem beteiligt sind.
  • 4 veranschaulicht beispielhafte Vorgänge 400, die durchgeführt werden können, die durch eine vertrauenswürdige Schaltung einer Speicherungsvorrichtung (z. B. eine vertrauenswürdige Schaltung 110, veranschaulicht in 1) durchgeführt werden können, um das Vorhandensein von Daten zu validieren, die auf einer Speicherungsvorrichtung in einem verteilten Datenspeichersystem gespeichert sind, gemäß Gesichtspunkten der vorliegenden Offenbarung.
  • Wie veranschaulicht, können die Vorgänge 400 bei Block 410 beginnen, wo eine Anforderung für eine Signatur von Daten empfangen wird, die in einem Bereich von Speicheradressen in Speicherungsschaltlogik einer Speicherungsvorrichtung gespeichert sind. Die Anforderung kann einen Aufforderungswert einschließen, der die vertrauenswürdige Schaltung verwenden kann, um ein Hash der Daten auf der Speicheradresse, die angeblich in der Speicherungsschaltlogik der Speicherungsvorrichtung gespeichert sind, zu signieren.
  • Bei Block 420 bestimmt die vertrauenswürdige Schaltung, ob der Bereich von Speicheradressen in einer Hash-Adresskarte (z. B. Karte 300 von 3) vorhanden ist. Wie erörtert, kann die Hash-Adresskarte eine Vielzahl von Einträgen in eine Hash-Adresskartentabelle einschließen, wobei jeder Eintrag einen Bereich von Speicheradressen einem Hash von Daten zuordnet, die sich auf dieser Speicheradresse befinden.
  • Wenn bei Block 420 die vertrauenswürdige Schaltung einen Eintrag in der Hash-Adresskarte mit dem Bereich von Speicheradressen findet, der in der Anforderung identifiziert wurde, können die Vorgänge 400 zu Block 430 gehen. Bei Block 430 wird ein Hash aus der Hash-Adresskarte abgerufen. Das abgerufene Hash ist im Allgemeinen dem Bereich von Speicheradressen zugeordnet, die in der Anforderung spezifiziert sind.
  • Wenn bei Block 420 anderenfalls die vertrauenswürdige Schaltung keinen Eintrag in der Hash-Adresskarte findet, der dem Bereich von Speicheradressen zugeordnet ist, der in der Anforderung identifiziert wurde, können die Vorgänge 400 zu Block 440 gehen.
  • Bei Block 440 erzeugt die vertrauenswürdige Schaltung ein Hash von Daten, die in dem Bereich von Speicheradressen gespeichert sind, die in der Anforderung spezifiziert sind. In einigen Gesichtspunkten kann die vertrauenswürdige Schaltung nach dem Erzeugen des Hashs von Daten, die in dem angegebenen Bereich von Speicheradressen gespeichert sind, einen Eintrag in die Hash-Adresskarte hinzufügen, um eine schnelle Erfüllung zukünftiger Validierungsanforderungen zu ermöglichen, was die Menge an Verarbeitungszyklen und Bandbreite reduzieren kann, die für Prozessvalidierungsanforderungen benötigt werden. Der Eintrag in die Hash-Adresskarte kann den erzeugten Hash, eine Startspeicheradresse in einer frühesten Speicheradresse des Bereichs von Speicheradressen, die in der Anforderung spezifiziert sind, und eine Endspeicheradresse an einer abschließenden Speicheradresse des Bereichs von Speicheradressen, der in der Anforderung spezifiziert ist, einschließen.
  • Die Vorgänge 400 können entweder von Block 430 oder Block 440 zu Block 450 gehen, wobei das Hash unter Verwendung des in der Anforderung enthaltenen Aufforderungswertes signiert wird. Der Aufforderungswert kann zum Beispiel einen Wert einschließen, der aus dem aktuellen Zustand einer Blockkette, die Transaktionen nachweist, die in dem verteilten Datenspeichersystem durchgeführt werden, einem Schlüssel, der von der Anforderungsvorrichtung erzeugt wird, oder anderen Informationen, die verwendet werden können, um das Hash zu signieren, und einer Anzahl von Datenblöcken, über die das Hash erzeugt wurde, abgeleitet wird. Die Blockkette kann zum Beispiel in Bezug auf oder auf andere Weise eine Kryptowährung betreffen, in der Transaktionen (z. B. Speicherung und/oder Abruf) aufgezeichnet werden, und in denen die Kryptowährung ausgegeben wird, wenn der Abschluss solcher Transaktionen in der Blockkette bewiesen ist.
  • Bei Block 460 wird das signierte Hash an die Anforderungsvorrichtung ausgegeben. Die Anforderungsvorrichtung kann zum Beispiel ein Laptop-Computer, ein Desktop-Computer, eine mobile Vorrichtung oder eine andere Rechnervorrichtung sein, aus der Daten für die Speicherung in dem verteilten Datenspeichersystem ausgelagert werden können und von denen Anforderungen zum Nachweis des Vorhandenseins von Daten auf einer Speicherungsvorrichtung in dem verteilten Datenspeichersystem ausgegeben werden können.
  • Beispielhafte Verarbeitungsvorrichtung
  • 5 stellt ein beispielhaftes Verarbeitungssystem 500 dar, das eingerichtet sein kann, um die verschiedenen hierin beschriebenen Gesichtspunkte durchzuführen, einschließlich der Verfahren, die in Bezug auf 2 und/oder 4 beschrieben sind.
  • Das Verarbeitungssystem 500 oder Komponenten davon könnten in einem Servercomputer, einem Desktop-Computer, einer Arbeitsstation, einem Tablet-Computer, einem Smartphone, einer intelligenten tragbaren Vorrichtung, einer Internet-der-Dinge-Vorrichtung (IoT-Vorrichtung), einer Edge-Verarbeitungsvorrichtung, einem persönlichen digitalen Assistenten, einer Digitalkamera, einem digitalen Telefon, einer Unterhaltungsvorrichtung, einer medizinischen Vorrichtung, einer selbstfahrenden Fahrzeugsteuerungsvorrichtung, einer Datenspeicherungsvorrichtung, einer Steuervorrichtung, einer Hostvorrichtung oder einer anderen Art von Vorrichtung, die Daten verarbeitet, verkörpert oder implementiert werden.
  • Das Verarbeitungssystem 500 schließt eine oder mehrere Kommunikationsschnittstellen 510, Verarbeitungsschaltung(en) 520 (z. B. mindestens einen Prozessor und/oder eine andere geeignete Schaltlogik) und ein Speicherungsmedium 530 (z. B. einen nichtflüchtigen Speicher) ein. Diese Komponenten können über einen Signalisierungsbus 540 oder eine andere geeignete Komponente miteinander gekoppelt und/oder in elektrische Kommunikation gebracht werden, was allgemein durch die Verbindungsleitungen in 5 dargestellt wird. Der Signalisierungsbus 540 kann jede Zahl von Verbindungsbussen und -brücken einschließen, je nach der spezifischen Anwendung der Verarbeitungsschaltung(en) 520 und den Designbeschränkungen insgesamt. Der Signalisierungsbus 540 verbindet verschiedene Elemente, sodass die Kommunikationsschnittstelle 510, die Verarbeitungsschaltung(en) 530 und das Speicherungsmedium 520 jeweils gekoppelt sind und/oder mit elektrisch kommunizieren. Der Signalisierungsbus 540 kann auch verschiedene andere (nicht dargestellte) Schaltungen verbinden, wie Zeitquellen, Peripheriegeräte, Spannungsregler und Leistungsverwaltungsschaltungen, die in der Fachwelt gut bekannt sind und daher nicht weiterhin beschrieben werden.
  • Die Kommunikationsschnittstelle 510 stellt Mittel zum Kommunizieren mit anderen Vorrichtungen oder Einrichtungen über ein Übertragungsmedium bereit. In einigen Implementierungen schließt die Kommunikationsschnittstelle 510 eine Schaltung und/oder Programmierung (z. B. ein Programm) ein, die angepasst sind, um die bidirektionale Kommunikation von Informationen in Bezug auf eine oder mehrere Vorrichtungen in einem System zu erleichtern. In einigen Implementierungen kann die Kommunikationsschnittstelle 510 für drahtgebundene Kommunikation eingerichtet werden. Die Kommunikationsschnittstelle 510 könnte zum Beispiel eine Busschnittstelle, eine Sende-/Empfangsschnittstelle oder eine andere Art von Signalschnittstelle einschließlich Treibern, Puffern oder anderen Schaltungen zum Ausgeben und/oder Empfangen von Signalen sein (z. B. Ausgabe von Signalen und/oder Empfang von Signalen in eine integrierte Schaltung). Die Kommunikationsschnittstelle 510 dient als ein Beispiel für ein Mittel zum Empfangen und/oder ein Mittel zum Senden.
  • Das Speicherungsmedium 530 kann eine oder mehrere computerlesbare, maschinenlesbare und/oder prozessorlesbare Vorrichtungen zum Speichern von Programmen darstellen, wie z. B. ausführbaren Code oder Anweisungen des Prozessors (z. B. Software, Firmware), elektronische Daten, Datenbanken oder andere digitale Informationen. Das Speicherungsmedium 530 kann auch zum Speichern von Daten, die von der/den Verarbeitungsschaltung(en) 520 bei der Programmausführung manipuliert werden, verwendet werden. Das Speicherungsmedium 530 kann jedes verfügbare Medium sein, auf das ein Allzweckprozessor oder ein spezialisierter Prozessor zugreifen kann, einschließlich tragbarer oder fester Speicherungsvorrichtungen, optischer Speicherungsvorrichtungen und verschiedener anderer Medien, die zum Speichern, Enthalten oder Tragen von Programmen geeignet sind.
  • Beispielhaft und nicht einschränkend kann das Speicherungsmedium 530 eine magnetische Speicherungsvorrichtung (z. B. Festplatte, Diskette, Magnetstreifen), eine optische Platte (z. B. eine CD (Compact Disc) oder eine DVD (Digital Versatile Disc)), eine Chipkarte, eine Flash-Speicherungsvorrichtung (z. B. eine Karte, ein Stick oder ein Schlüssellaufwerk), RAM, ROM, PROM, ein EPROM, EEPROM, ReRAM, ein Register, eine entfernbare Platte und jedes andere geeignete Medium zum Speichern von Software und/oder Anweisungen, auf die ein Computer zugreifen und die von einem Computer gelesen werden können, einschließen. Das Speicherungsmedium 530 kann in einem hergestellten Artikel (z. B. einem Computerprogrammprodukt) verkörpert sein. Beispielhaft kann ein Computerprogrammprodukt ein computerlesbares Medium in Verpackungsmaterialien einschließen. In Anbetracht des vorstehend Erörterten, kann das Speicherungsmedium 530 in einigen Implementierungen ein nichtflüchtiges (z. B. greifbares) Speicherungsmedium sein. Zum Beispiel kann das Speicherungsmedium 530 ein nicht-transitorisches, computerlesbares Medium sein, das computerausführbaren Code speichert, einschließlich Code zum Durchführen von Vorgängen wie hierin beschrieben.
  • Das Speicherungsmedium 530 kann mit der/den Verarbeitungsschaltung(en) 520 gekoppelt werden, sodass die Verarbeitungsschaltung 520 Informationen von dem Speicherungsmedium 530 lesen und Informationen auf dieses schreiben kann. Das bedeutet, dass das Speicherungsmedium 530 an die Verarbeitungsschaltung(en) 520 gekoppelt werden kann, sodass das Speicherungsmedium 530 mindestens für die Verarbeitungsschaltung(en) 520 zugänglich ist, einschließlich der Beispiele, in denen mindestens ein Speicherungsmedium in die Verarbeitungsschaltung(en) 520 integriert ist und/oder der Beispiele, in denen mindestens ein Speicherungsmedium von der/den Verarbeitungsschaltung(en) 520 getrennt ist (z. B. in Einrichtung 500 vorhanden, außerhalb der Einrichtung 500, über mehrere Einheiten verteilt, usw.).
  • Das auf dem Speicherungsmedium 530 gespeicherte Programm veranlasst, wenn es von der/den Verarbeitungsschaltung(en) 520 ausgeführt wird, dass die Verarbeitungsschaltung(en) 520 eine oder mehrere der verschiedenen hierin beschriebenen Funktionen und/oder Prozessabläufe ausführt/ausführen. Zum Beispiel kann das Speicherungsmedium 530 Vorgänge einschließen, die für das Regulieren von Vorgängen an einem oder mehreren Hardware-Blöcken der Verarbeitungsschaltung(en) 520 sowie für die Nutzung der Kommunikationsschnittstelle(n) 510 für die drahtlose Kommunikation unter Nutzung ihrer jeweiligen Kommunikationsprotokolle eingerichtet sind.
  • Mindestens einige der hierin beschriebenen Verarbeitungsschaltungen können allgemein zur Verarbeitung angepasst sein, einschließlich der Ausführung solcher Programme, die auf einem Speicherungsmedium wie dem Speicherungsmedium 530 gespeichert sind. Wie hierin verwendet, sollen die Begriffe „Code“ oder „Programmierung“ so weit ausgelegt werden, dass sie ohne Einschränkung Anweisungen, Befehlssätze, Daten, Code, Codesegmente, Programmcode, Programme, Programmierungen, Unterprogramme, Softwaremodule, Anwendungen, Softwareanwendungen, Softwarepakete, Routinen, Unterroutinen, Objekte, ausführbare Dateien, Ausführungsstränge, Prozeduren, Funktionen usw. einschließen, unabhängig davon, ob sie als Software, Firmware, Middleware, Mikrocode, Hardware-Beschreibungssprache oder anderweitig bezeichnet werden.
  • Mindestens einige der hierin beschriebenen Verarbeitungsschaltungen sind angeordnet, um Daten zu erhalten, zu verarbeiten und/oder zu senden, den Datenzugriff und die Datenspeicherung zu steuern, Befehle auszugeben und andere gewünschte Vorgänge zu steuern. Zum Beispiel können die Verarbeitungsschaltungen eine Schaltung einschließen, die eingerichtet ist, um die gewünschte, von geeigneten Medien bereitgestellte Programmierung in mindestens einem Beispiel zu implementieren.
  • Die Verarbeitungsschaltungen können zum Beispiel als ein oder mehrere Prozessoren, eine oder mehrere Steuerungen und/oder eine andere Struktur implementiert sein, die für die Ausführung von ausführbaren Programmierungen eingerichtet ist. Beispiele für die Verarbeitungsschaltungen können einen Allzweckprozessor, einen digitalen Signalprozessor (DSP), eine ASIC, ein feldprogrammierbares Gate-Array (FPGA) oder eine andere programmierbare Logikkomponente, diskrete Gate- oder Transistorlogik, diskrete Hardware-Komponenten oder jede beliebige Kombination davon zum Ausführen der hierin beschriebenen Funktionen einschließen. Ein Allzweckprozessor kann einen Mikroprozessor sowie jeden beliebigen herkömmlichen Prozessor, eine Steuerung, einen Mikrocontroller oder eine Zustandsmaschine einschließen. Die Verarbeitungsschaltungen können auch als eine Kombination von Rechenkomponenten implementiert sein, wie eine Kombination aus einer Steuerung und einem Mikroprozessor, eine Zahl von Mikroprozessoren, einem oder mehreren Mikroprozessoren in Verbindung mit einem ASIC und einem Mikroprozessor oder eine beliebige andere Zahl von unterschiedlichen Konfigurationen. Diese Beispiele von Verarbeitungsschaltungen dienen zur Veranschaulichung und es werden auch andere geeignete Konfigurationen innerhalb des Schutzumfangs der Offenbarung in Betracht gezogen.
  • Gemäß einem oder mehreren Gesichtspunkten der Offenbarung können die eine oder mehreren Verarbeitungsschaltungen 520 so angepasst werden, dass sie irgendwelche oder alle Merkmale, Prozesse, Funktionen, Vorgänge und/oder Routinen für einige oder alle der hierin beschriebenen Verfahren durchführen. Zum Beispiel können die eine oder mehreren Verarbeitungsschaltungen 520 so eingerichtet werden, dass sie jeden der in Bezug auf die 2 und/oder 4 beschriebenen Schritte, Funktionen und/oder Prozesse durchführen. Wie hierin verwendet, kann sich der Begriff „angepasst“ in Bezug auf die Verarbeitungsschaltung(en) 520 darauf beziehen, dass die Verarbeitungsschaltung(en) 520 so eingerichtet, verwendet, implementiert und/oder programmiert ist/sind, dass sie einen bestimmten Prozess, eine bestimmte Funktion, einen bestimmten Vorgang und/oder eine bestimmte Routine gemäß verschiedenen hierin beschriebenen Merkmalen ausführt/ausführen. Die Verarbeitungsschaltung(en) 520 kann/können ein spezialisierter Prozessor sein, wie eine ASIC, die als ein Mittel für (z. B. als Struktur für) die Ausführung beliebiger der in Bezug auf 2 und/oder 4 beschriebenen Vorgänge dient. Die Verarbeitungsschaltung(en) 520 dient/dienen als ein Beispiel für ein Mittel zum Verarbeiten.
  • Gemäß mindestens einem Beispiel der Einrichtung 500 können die eine oder mehreren Verarbeitungsschaltungen 520 eines oder mehrere von Folgendem einschließen: eine Schaltung/ein Modul 521 zum Erfassen einer Anforderung zum Schreiben von Daten; eine Schaltung/ein Modul 522 zum Berechnen eines Hashs über die Daten; eine Schaltung/ein Modul 523 zum Erzeugen einer anonymen digitalen Signatur aus den Daten, zum Beispiel unter Verwendung des berechneten Hashs; eine Schaltung/ein Modul 524 zum Ausgeben der anonymen digitalen Signatur; eine Schaltung/ein Modul 525 zum Empfangen einer Anforderung für eine Signatur; eine Schaltung/ein Modul 526 zum Abrufen eines Hashs; eine Schaltung/ein Modul 527 zum Signieren des Hashs; und eine Schaltung/ein Modul 528 zum Ausgeben des signierten Hashs. Insbesondere sind dies nur einige Beispiele, und andere sind basierend auf den verschiedenen hierin beschriebenen Gesichtspunkten möglich.
  • Wie vorstehend erwähnt, veranlasst ein auf dem Speicherungsmedium 530 gespeichertes Programm, wenn es von der bzw. den Verarbeitungsschaltungen 520 ausgeführt wird, dass die Verarbeitungsschaltung(en) 520 eine oder mehrere der verschiedenen hierin beschriebenen Funktionen und/oder Prozessvorgänge ausführt/ausführen. Zum Beispiel kann das Programm veranlassen, dass die Verarbeitungsschaltung(en) 420 die verschiedenen Funktionen, Schritte und/oder Prozesse ausführt/ausführen und/oder steuert/steuern, die hierin in Bezug auf die 2 und/oder 4 beschrieben sind.
  • Wie in 5 gezeigt, kann das Speicherungsmedium 530 eines oder mehrere der Folgenden einschließen: Code 531 zum Erfassen einer Anforderung zum Schreiben von Daten; Code 532 zum Berechnen eines Hashs über die Daten; Code 533 zum Erzeugen einer anonymen digitalen Signatur für die Daten; Code 534 zum Ausgeben der anonymen digitalen Signatur; Code 535 zum Empfangen einer Anforderung für eine Signatur; Code 536 zum Abrufen eines Hashs; Code 537 zum Signieren des Hashs; und Code 538 zum Ausgeben des signierten Hashs. Insbesondere sind dies nur einige Beispiele, und andere sind basierend auf den verschiedenen hierin beschriebenen Gesichtspunkten möglich.
  • In mindestens einigen Beispielen können die verschiedenen Schaltungen/Module in 520 sowie andere hierin beschriebene Verarbeitungselemente Mittel zum Durchführen der verschiedenen hierin beschriebenen Funktionen aufweisen, einschließlich der Funktionen, die durch die verschiedenen Codes aktiviert werden, die in dem Speicherungsmedium 530 gespeichert sind.
  • Beispielklauseln
  • Klausel 1: Speicherungsvorrichtung, aufweisend: eine Speicherungsschaltlogik, die eingerichtet ist, um eine Vielzahl von Datenblöcken zu speichern; und eine vertrauenswürdige Schaltung mit einem sicher darauf gespeicherten privaten Signierschlüssel, wobei die vertrauenswürdige Schaltung eingerichtet ist zum: Berechnen eines Hashs über Daten, die in einer Vielzahl von Datenblöcken gespeichert sind, und Erzeugen einer anonymen digitalen Signatur für die in der Vielzahl von Datenblöcken gespeicherten Daten, basierend mindestens teilweise auf dem privaten Signierschlüssel, dem berechneten Hash und einer Anzahl der Vielzahl von Datenblöcken, in der die Daten gespeichert sind; wobei die vertrauenswürdige Schaltung auf einem Schreibpfad zu der Speicherungsschaltlogik eingefügt ist, sodass Daten, die in die Speicherungsschaltlogik geschrieben werden, durch die vertrauenswürdige Schaltung verarbeitet werden.
  • Klausel 2: Speicherungsvorrichtung von Klausel 1, wobei die vertrauenswürdige Schaltung eingerichtet ist, um die anonyme digitale Signatur weiterhin basierend auf einem Zeitpunkt zu erzeugen, zu dem die digitale Signatur erzeugt wird.
  • Klausel 3: Speicherungsvorrichtung von einer der Klauseln 1 oder 2, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist zum: Ableiten eines Aufforderungswertes, der sich auf einen aktuellsten Zustand einer Blockkette bezieht, die den in der Vielzahl von Datenblöcken gespeicherten Daten zugeordnet ist; und Erzeugen einer zweiten anonymen Signatur basierend auf dem privaten Signierschlüssel und dem Aufforderungswert.
  • Klausel 4: Speicherungsvorrichtung von Klausel 3, wobei die Blockkette einer Kryptowährung zugeordnet ist.
  • Klausel 5: Speicherungsvorrichtung von einer beliebigen der Klauseln 1 bis 4, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist, um eine Abbildung zwischen einem Speicheradressbereich, welcher der Vielzahl von Datenblöcken zugeordnet ist, und dem berechneten Hash beizubehalten.
  • Klausel 6: Speicherungsvorrichtung von Klausel 5, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist zum: Empfangen, von einer Anforderungsvorrichtung, einer Anforderung zum Validieren des Vorhandenseins von Daten an einer Speicheradresse; Bestimmen, dass die Speicheradresse innerhalb des Speicheradressbereichs ist, welcher der Vielzahl von Datenblöcken zugeordnet ist; und Zurückgeben des berechneten Hashs an die Anforderungsvorrichtung.
  • Klausel 7: Speicherungsvorrichtung von einer beliebigen der Klauseln 5 oder 6, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist zum: Empfangen, von einer Anforderungsvorrichtung, einer Anforderung zum Validieren des Vorhandenseins von Daten an einer Speicheradresse; Bestimmen, dass sich die Speicheradresse außerhalb des Speicheradressbereichs befindet, welcher der Vielzahl von Datenblöcken zugeordnet ist; Lesen, aus der Speicherungsschaltlogik, von Daten, die in der Speicheradresse gespeichert sind; Erzeugen einer zweiten anonymen digitalen Signatur für die in der Speicheradresse gespeicherten Daten basierend auf einem Hash der Daten, die in der Speicheradresse und einem Signierschlüssel gespeichert sind; und Zurückgeben der zweiten anonymen digitalen Signatur an die Anforderungsvorrichtung.
  • Klausel 8: Speicherungsvorrichtung von Klausel 7, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist zum: Erzeugen einer zweiten Abbildung, wobei die zweite Abbildung die Speicheradresse und den Hash den in der Speicheradresse gespeicherten Daten zuordnet.
  • Klausel 9: Speicherungsvorrichtung von einer beliebigen der Klauseln 7 oder 8, wobei der Signierschlüssel den privaten Signierschlüssel aufweist.
  • Klausel 10: Speicherungsvorrichtung von einer beliebigen der Klauseln 7 bis 9, wobei der Signierschlüssel einen Aufforderungswert aufweist, der in der Anforderung enthalten ist, um das Vorhandensein von Daten an der Speicheradresse zu validieren.
  • Klausel 11: Speicherungsvorrichtung von einer beliebigen der Klauseln 5 bis 10, weiterhin aufweisend: Erfassen, auf dem Schreibpfad zu der Speicherungsschaltlogik, einer Schreibanforderung an eine Adresse in dem Speicheradressbereich, welcher der Vielzahl von Datenblöcken zugeordnet ist; und Löschen der Abbildung zwischen dem Speicheradressbereich, welcher der Vielzahl von Datenblöcken zugeordnet ist, und dem berechneten Hash basierend auf dem Erfassen der Schreibanforderung.
  • Klausel 12: Speicherungsvorrichtung von einer beliebigen der Klauseln 1 bis 11, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist zum: Empfangen einer ersten digitalen Signatur für erste Daten, die in der Speicherungsschaltlogik gespeichert werden sollen, und einer zweiten digitalen Signatur für zweite Daten, die in der Speicherungsschaltlogik gespeichert werden sollen; Bestimmen, basierend auf Informationen, die der ersten digitalen Signatur und der zweiten digitalen Signatur zugeordnet sind, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind; und basierend auf einer Bestimmung, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind, Erzeugen einer kombinierten Signatur für die erste digitale Signatur und die zweite digitale Signatur.
  • Klausel 13: Speicherungsvorrichtung von Klausel 12, wobei zur Bestimmung, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind, die vertrauenswürdige Schaltung eingerichtet ist zum: Bestimmen, dass sich ein der ersten digitalen Signatur zugeordneter Zeitstempel von einem der zweiten digitalen Signatur zugeordneten Zeitstempel um einen Betrag unterscheidet, der kleiner als ein erster Schwellenbetrag ist, und Bestimmen, dass der der ersten digitalen Signatur zugeordnete Zeitstempel und der der zweiten digitalen Signatur zugeordnete Zeitstempel innerhalb eines zweiten Schwellenbetrags eines aktuellen Zeitstempels liegen.
  • Klausel 14: Speicherungsvorrichtung von einer beliebigen der Klauseln 12 oder 13, wobei zur Bestimmung, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind, die vertrauenswürdige Schaltung eingerichtet ist, um zu bestimmen, dass ein der ersten digitalen Signatur zugeordneter Aufforderungswert und ein der zweiten digitalen Signatur zugeordneter Aufforderungswert ein gleicher Aufforderungswert sind.
  • Klausel 15: Speicherungsvorrichtung von einer beliebigen der Klauseln 1 bis 14, wobei die in der Vielzahl von Datenblöcken gespeicherten Daten verschlüsselte Daten aufweisen.
  • Klausel 16: Verfahren, aufweisend: Erfassen einer Anforderung zum Schreiben von Daten in einen oder mehrere Datenblöcke in eine Speicherungsschaltlogik einer Speicherungsvorrichtung; Berechnen eines Hashs über die Daten, die in den einen oder die mehreren Datenblöcke geschrieben werden sollen; Erzeugen einer anonymen digitalen Signatur für die Daten, die in den einen oder die mehreren Datenblöcke geschrieben werden sollen, mindestens teilweise basierend auf einem privaten Signierschlüssel, der in einer vertrauenswürdigen Schaltung der Speicherungsvorrichtung und dem berechneten Hash gespeichert ist; und Ausgeben der anonymen digitalen Signatur an eine Blockkette, um den Abschluss der Anforderung nachzuweisen, um die Daten in den einen oder die mehreren Datenblöcke in einer Speicherungsschaltlogik der Speicherungsvorrichtung zu schreiben.
  • Klausel 17: Verfahren von Klausel 16, weiterhin aufweisend: Ableiten eines Aufforderungswertes, der sich auf einen aktuellsten Zustand einer Blockkette bezieht, die den Daten zugeordnet ist, die in dem einen oder den mehreren Datenblöcken gespeichert sind; und Erzeugen einer zweiten anonymen Signatur basierend auf dem privaten Signierschlüssel und dem Aufforderungswert.
  • Klausel 18: Verfahren von Klausel 17, wobei die Blockkette einer Kryptowährung zugeordnet ist.
  • Klausel 19: Verfahren von einer beliebigen der Klauseln 16 bis 18, weiterhin aufweisend: Erzeugen einer Abbildung zwischen dem berechneten Hash und einem Bereich von Speicheradressen, einschließlich Speicheradressen, die dem einen oder den mehreren Datenblöcken zugeordnet sind; und Übertragen der Abbildung auf einen Hash-Map-Speicher.
  • Klausel 20: Verfahren von Klausel 19, weiterhin aufweisend: Empfangen, von einer Anforderungsvorrichtung, einer Anforderung zum Validieren des Vorhandenseins von Daten an einer Speicheradresse; Bestimmen, dass sich die Speicheradresse innerhalb des Bereichs von Speicheradressen befindet, die in der Abbildung spezifiziert sind; und Zurückgeben, an die Anforderungsvorrichtung, des berechneten Hashs, der dem Bereich von Speicheradressen zugeordnet ist, einschließlich der Speicheradressen, die dem einen oder den mehreren Datenblöcken zugeordnet sind.
  • Klausel 21: Verfahren von einer beliebigen der Klauseln 16 bis 20, weiterhin aufweisend: Empfangen einer ersten digitalen Signatur für erste Daten, die in der Speicherungsschaltlogik gespeichert werden sollen, und einer zweiten digitalen Signatur für zweite Daten, die in der Speicherungsschaltlogik gespeichert werden sollen; Bestimmen, basierend auf Informationen, die der ersten digitalen Signatur und der zweiten digitalen Signatur zugeordnet sind, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind; und basierend auf einer Bestimmung, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind, Erzeugen einer kombinierten Signatur für die erste digitale Signatur und die zweite digitale Signatur.
  • Klausel 22: Verfahren, weiterhin aufweisend: Empfangen, von einer Anforderungsvorrichtung an einer vertrauenswürdigen Schaltung einer Speicherungsvorrichtung, einer Anforderung für eine Signatur für Daten, die in einem Bereich von Speicheradressen in einer Speicherungsschaltlogik der Speicherungsvorrichtung gespeichert sind, wobei die Anforderung einen Aufforderungswert einschließt; Abrufen eines Hashs der in dem Bereich von Speicheradressen gespeicherten Daten; Signieren des Hashs unter Verwendung des Aufforderungswerts; und Ausgeben des signierten Hashs an die Anforderungsvorrichtung.
  • Klausel 23: System, aufweisend: einen Speicher mit darauf gespeicherten ausführbaren Anweisungen; und einen Prozessor, der eingerichtet ist, um die ausführbaren Anweisungen auszuführen, um die Vorgänge einer der Klauseln 16 bis 22 durchzuführen.
  • Klausel 24: System, aufweisend: Mittel zum Durchführen der Vorgänge nach einer der Klauseln 16 bis 22.
  • Klausel 25: Computerlesbares Medium, auf dem Anweisungen gespeichert sind, die, wenn sie von einem Prozessor ausgeführt werden, die Vorgänge einer der Klauseln 16 bis 22 durchführen.
  • Zusätzliche Gesichtspunkte
  • Gesichtspunkte des hierin beschriebenen Gegenstands können in jedem geeigneten NAND-Flash-Speicher, wie einem 3D-NAND-Flash-Speicher, sowie anderen Art von HalbleiterSpeichervorrichtungen implementiert werden. Halbleiterspeichervorrichtungen schließen flüchtige Speichervorrichtungen wie DRAM oder SRAM-Vorrichtungen, NVM-Vorrichtungen wie ReRAM, EEPROM, Flash-Speicher (der auch als Teilmenge von EEPROM betrachtet werden kann), ferroelektrische Direktzugriffsspeicher (FRAM) und MRAM, und andere Halbleiterelemente, die Informationen speichern können, ein. Jeder Typ von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder NOR-Konfiguration eingerichtet sein. Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als ein nicht einschränkendes Beispiel schließen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente ein, die in einigen Ausführungsformen ein Speicherelement mit Widerstandsumschaltung, wie eine Anti-Sicherung, Phasenwechselmaterial usw., und optional ein Lenkelement, wie eine Diode usw., einschließen. Weiterhin schließen als nicht einschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speicher-Vorrichtungselemente ein, die in einigen Ausführungsformen Elemente einschließen, die einen Ladungsspeicherbereich, wie ein Floating-Gate, leitende Nanopartikel oder ein dielektrisches Material zur Ladungsspeicherung, einschließen.
  • Mehrere Speicherelemente können derart eingerichtet sein, dass sie in Reihe geschaltet sind, oder derart, dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Ein NAND-Speicherarray kann derart eingerichtet sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente derart eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherelemente können anderweitig eingerichtet sein. Die Halbleiterspeicherelemente, die in und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen angeordnet sein, wie einer zweidimensionalen Speicherstruktur oder einer dreidimensionalen Speicherstruktur.
  • Eine zugehörige Schaltung ist üblicherweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherelementen verwendet werden, um Funktionen, wie Programmieren und Lesen, auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Steuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein. Ein Fachmann wird erkennen, dass der hier beschriebene Gegenstand nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen innerhalb des Geistes und Schutzumfangs des Gegenstandes abdeckt, wie hierin beschrieben und wie von einem Fachmann zu verstehen.
  • Die hierin aufgeführten Beispiele werden bereitgestellt, um bestimmte Konzepte der Offenbarung zu veranschaulichen. Die vorstehend veranschaulichten Geräte, Vorrichtungen oder Komponenten können so eingerichtet werden, dass sie eines oder mehrere der hierin beschriebenen Verfahren, Merkmale oder Schritte ausführen können. Fachleute werden verstehen, dass diese lediglich der Veranschaulichung dienen und dass andere Beispiele innerhalb des Schutzumfangs der Offenbarung und der beiliegenden Ansprüche fallen können. Auf der Grundlage der hierin enthaltenen Lehren sollten Fachleute es zu schätzen wissen, dass ein hierin offenbarter Gesichtspunkt unabhängig von anderen Gesichtspunkten umgesetzt werden kann und dass zwei oder mehrere dieser Gesichtspunkte auf verschiedene Weise kombiniert werden können. Zum Beispiel kann eine Vorrichtung eingesetzt oder ein Verfahren anhand einer beliebigen Zahl der hierin dargelegten Gesichtspunkte ausgeübt werden. Zusätzlich kann eine solche Vorrichtung eingesetzt oder ein solches Verfahren anhand einer anderen Struktur, Funktionalität oder Struktur und Funktionalität zusätzlich zu oder anders als einer oder mehrere der hierin dargelegten Gesichtspunkte ausgeübt werden.
  • Gesichtspunkte der vorliegenden Offenbarung wurden vorstehend unter Bezugnahme auf schematische Flussdiagramme und/oder schematische Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es versteht sich, dass jeder Block der schematischen Flussdiagramme und/oder schematischen Blockdiagramme und Kombinationen von Blöcken in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Recheneinrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor oder eine andere programmierbare Recheneinrichtung ausgeführt werden, Mittel zum Implementieren der Funktionen und/oder Schritte erzeugen, die in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen Block oder Blöcken spezifiziert sind.
  • Der hierin beschriebene Gegenstand kann in Hardware, Software, Firmware oder einer Kombination davon implementiert werden. Als solche können sich die hierin verwendeten Begriffe „Funktion“, „Modul“ und dergleichen auf Hardware beziehen, die auch Software- und/oder Firmwarekomponenten zur Implementierung der beschriebenen Funktion einschließen kann. In einer beispielhaften Implementierung kann der hierin beschriebene Gegenstand anhand eines computerlesbaren Mediums implementiert werden, auf dem computerausführbare Anweisungen gespeichert sind, die bei der Ausführung durch einen Computer (z. B. einen Prozessor) den Computer so steuern, dass er die hierin beschriebene Funktionalität ausführt. Beispiele für computerlesbare Medien, die sich für die Implementierung des hierin beschriebenen Gegenstandes eignen, sind nichtflüchtige computerlesbare Medien, wie Plattenspeichervorrichtungen, Chip-Speichervorrichtungen, programmierbare Logikvorrichtungen und anwendungsspezifische integrierte Schaltungen. Zusätzlich kann sich ein computerlesbares Medium, das den hierin beschriebenen Gegenstand implementiert, auf einer einzigen Vorrichtung oder Rechnerplattform befinden oder über mehrere Vorrichtungen oder Rechnerplattformen verteilt sein.
  • Es sollte auch beachtet werden, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, abhängig von der involvierten Funktionalität. Andere Schritte und Verfahren, die in Funktion, Logik oder Wirkung äquivalent zu einem oder mehreren Blöcken oder Teilen davon der dargestellten Figuren sind, können konzipiert werden. Obwohl verschiedene Pfeilarten und Linienarten in dem Flussdiagramm und/oder den Blockdiagrammen verwendet werden können, sind sie so zu verstehen, dass sie den Schutzumfang der entsprechenden Ausführungsformen nicht einschränken. Zum Beispiel kann ein Pfeil eine Warte- oder Überwachungsperiode einer nicht spezifizierten Dauer zwischen aufgezählten Schritten der dargestellten Ausführungsform angeben.
  • Die verschiedenen Merkmale und Prozesse, die vorstehend beschrieben sind, können unabhängig voneinander verwendet oder auf verschiedene Weisen kombiniert werden. Alle möglichen Kombinationen und Unterkombinationen sollen in den Schutzumfang dieser Offenbarung fallen. Außerdem können bestimmte Verfahren, Ereignisse, Zustände oder Prozessblöcke in einigen Implementierungen weggelassen werden. Die hierin beschriebenen Verfahren und Prozesse sind auch nicht auf eine bestimmte Sequenz beschränkt, und die Blöcke oder Zustände, die sich darauf beziehen, können in anderen Sequenzen durchgeführt werden, die geeignet sind. Beispielsweise können beschriebene Aufgaben oder Ereignisse in einer anderen Reihenfolge als der speziell offenbarten ausgeführt werden, oder mehrere können in einem einzelnen Block oder Zustand kombiniert werden. Die beispielhaften Aufgaben oder Ereignisse können seriell, parallel oder auf irgendeine andere geeignete Weise ausgeführt werden. Aufgaben oder Ereignisse können zu den offenbarten beispielhaften Ausführungsformen hinzugefügt oder von diesen entfernt werden. Die hierin beschriebenen beispielhaften Systeme und Komponenten können anders als beschrieben eingerichtet sein. Beispielsweise können im Vergleich zu den offenbarten beispielhaften Ausführungsformen Elemente hinzugefügt, entfernt oder umgeordnet werden.
  • Fachleute werden es zu schätzen wissen, dass Informationen und Signale mit einer Vielzahl verschiedener Technologien und Techniken dargestellt werden können. Beispielsweise können Daten, Anweisungen, Befehle, Informationen, Signale, Bits, Symbole und Chips, auf die in der vorstehenden Beschreibung Bezug genommen werden kann, durch Spannungen, Ströme, elektromagnetische Wellen, Magnetfelder oder -teilchen, optische Felder oder Teilchen oder eine beliebige Kombination davon dargestellt werden.
  • Das Wort „beispielhaft“ wird in diesem Dokument in der Bedeutung „als Beispiel, Fall oder zur Veranschaulichung dienend“ verwendet. Jeder Gesichtspunkt der hierin als „beispielhaft“ beschrieben wird, ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber anderen Gesichtspunkten zu verstehen. Gleichermaßen erfordert der Begriff „Gesichtspunkt“ nicht, dass alle Gesichtspunkte das erörterte Merkmal, den erörterten Vorteil oder den erörterten Betriebsmodus aufweisen.
  • Obwohl die vorstehenden Beschreibungen viele spezifische Ausführungsformen der Erfindung enthalten, sollten diese nicht als Einschränkungen des Schutzumfangs der Erfindung ausgelegt werden, sondern als Beispiele spezifischer Ausführungsformen davon. Dementsprechend sollte der Schutzumfang der Erfindung nicht durch die dargestellten Ausführungsformen, sondern durch die beiliegenden Ansprüche und deren Äquivalente bestimmt werden. Außerdem bedeutet die Bezugnahme in dieser Beschreibung auf „eine Ausführungsform“ oder eine ähnliche Ausdrucksweise, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Offenlegung eingeschlossen ist. Daher können die Ausdrücke „in einer Ausführungsform“, „in der Ausführungsform“ und ähnlich gelagerter Sprachgebrauch in dieser Beschreibung, wo sie vorkommen, sich nicht notwendigerweise alle auf dieselbe Ausführungsform beziehen, sondern „eine oder mehrere, aber nicht alle Ausführungsformen“ bedeuten, sofern nicht ausdrücklich etwas anderes angegeben ist.
  • Die hierin verwendeten Begriffe dienen nur der Beschreibung von bestimmten Gesichtspunkten und sollen nicht als Einschränkung der Gesichtspunkte verstanden werden. Wie hierin verwendet, sollen die Singularformen „ein“, „eine“, „eines“ und „der“, „die“, „das“ auch die Pluralformen (d. h. eine oder mehrere) einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Eine aufzählende Auflistung von Elementen impliziert nicht, dass sich irgendeines oder alle der Elemente gegenseitig ausschließen und/oder gegenseitig einschließen, sofern nicht ausdrücklich etwas anderes angegeben ist. Außerdem gilt, dass die Begriffe „aufweisen“, „aufweisend“, „einschließen“, „einschließlich“, „mit“ und Variationen davon, wenn sie hierin verwendet werden, „einschließlich, aber nicht begrenzt auf“ bedeuten, sofern nicht ausdrücklich etwas anderes angegeben ist. Das heißt, dass diese Begriffe das Vorhandensein von angegebenen Merkmalen, Einheiten, Schritten, Vorgängen, Elementen und/oder Komponenten bezeichnen können, nicht aber das Vorhandensein oder die Hinzufügung von einer oder mehreren anderen Merkmalen, Einheiten, Schritten, Vorgängen, Elementen, Komponenten oder Gruppen von diesen ausschließen. Außerdem gilt, dass das Wort „oder“ dasselbe bedeutet wie der boolesche Operator „ODER“, d. h. es umfasst die Möglichkeiten von „entweder“ und „beide“ und ist nicht auf „ausschließlich oder“ („XOR“) beschränkt, sofern nicht ausdrücklich etwas anderes angegeben ist. Es gilt auch, dass das Symbol „/“ zwischen zwei benachbarten Wörtern das gleiche bedeutet wie „oder“, sofern nicht ausdrücklich etwas anderes angegeben ist. Außerdem sind Ausdrucksweisen wie „verbunden mit“, „gekoppelt mit“ oder „in Kommunikation mit“ nicht auf direkte Verbindungen beschränkt, sofern nicht ausdrücklich etwas anderes angegeben ist.
  • Jede Bezugnahme hierin auf ein Element anhand einer Bezeichnung wie „erstes“, „zweites“ und so weiter beschränkt im Allgemeinen nicht die Menge oder Reihenfolge dieser Elemente. Vielmehr können diese Bezeichnungen hierin als ein bequemes Verfahren zur Unterscheidung zwischen zwei oder mehr Elementen oder Fällen eines Elements verwendet werden. Daher bedeutet eine Bezugnahme auf das erste und das zweite Element nicht, dass dort nur zwei Elemente verwendet werden dürfen oder dass das erste Element dem zweiten Element in irgendeiner Weise vorausgehen muss. Sofern nicht anders angegeben, kann ein Satz von Elementen auch ein oder mehrere Elemente einschließen. Außerdem bedeutet die Terminologie der Form „mindestens eines von A, B oder C“ oder „A, B, C oder eine Kombination davon“ oder „eines oder mehrere von A, B, und C“, die in der Beschreibung oder den Ansprüchen verwendet wird, „A oder B oder C oder eine Kombination dieser Elemente“. Zum Beispiel kann diese Terminologie A oder B oder C oder A und B oder A und C oder A und B und C oder 2A oder 2B oder 2C oder 2A und B und so weiter einschließen. Als ein weiteres Beispiel „mindestens eines von: A, B oder C“ soll A, B, C, A-B, A-C, B-C und A-B-C sowie Vielfache derselben Mitglieder abdecken (z. B. alle Listen, die AA, BB oder CC einschließen). Ebenso soll „eines oder mehrere von: A, B und C“ soll A, B, C, A-B, A-C, B-C und A-B-C sowie Vielfache derselben Mitglieder abdecken. In ähnlicher Weise bezieht sich, wie hierin verwendet, ein Ausdruck, der sich auf eine Liste von Elementen bezieht, die mit „und/oder“ verknüpft sind, auf eine beliebige Kombination der Elemente. Beispielsweise soll „A und/oder B“ A allein, B allein oder A und B zusammen abdecken. Als weiteres Beispiel soll „A, B und/oder C“ A allein, B allein, C allein, A und B zusammen, A und C zusammen, B und C zusammen oder A, B und C zusammen abdecken.
  • Wie hierin verwendet, umfasst der Begriff „bestimmen“ eine Vielzahl von Handlungen. Zum Beispiel kann „bestimmen“ das Berechnen, Rechnen, Verarbeiten, Ableiten, Untersuchen, Nachschlagen (z. B. Nachschlagen in einer Tabelle, einer Datenbank oder einer anderen Datenstruktur), Ermitteln und ähnliches einschließen. „Bestimmen“ kann auch das Empfangen (z. B. das Empfangen von Informationen), den Zugriff (z. B. den Zugriff auf Daten in einem Speicher) und ähnliches einschließen. „Bestimmen“ kann auch das Lösen, Wählen, Auswählen, Festlegen und ähnliches einschließen.
  • Die folgenden Ansprüche sollen nicht auf die hierin gezeigten Ausführungsformen beschränkt sein, sondern es soll ihnen der volle Schutzumfang in Übereinstimmung mit der Formulierung der Ansprüche gewährt werden. Innerhalb eines Anspruchs soll eine Bezugnahme auf ein Element im Singular nicht „eins und nur eins“ bedeuten, sofern nicht speziell so angegeben, sondern „eins oder mehrere“. Sofern nicht spezifisch anders angegeben, bezieht sich der Ausdruck „einige“ auf ein(en) oder mehrere. Kein Anspruchselement ist gemäß den Bestimmungen von 35 U.S.C.§ 112(f) zu verstehen, sofern das Element nicht explizit unter Verwendung des Ausdrucks „Mittel für“ oder im Falle eines Verfahrensanspruchs des Ausdrucks „Schritt für“ erwähnt wird. Alle strukturellen und funktionalen Äquivalente zu den Elementen der verschiedenen Gesichtspunkte, die in dieser Offenbarung beschrieben sind, die Fachleuten bekannt sind oder später bekannt werden, werden hiermit ausdrücklich durch Bezugnahme aufgenommen und sollen in den Ansprüchen eingeschlossen sein. Darüber hinaus soll nichts hierin Offenbartes der Öffentlichkeit gewidmet sein, ungeachtet dessen, ob eine solche Offenbarung in den Ansprüchen ausdrücklich erwähnt wird.

Claims (22)

  1. Speicherungsvorrichtung, aufweisend: eine Speicherungsschaltlogik, die eingerichtet ist, um eine Vielzahl von Datenblöcken zu speichern; und eine vertrauenswürdige Schaltung mit einem sicher darauf gespeicherten privaten Signierschlüssel, wobei die vertrauenswürdige Schaltung eingerichtet ist zum: Berechnen eines Hashs über Daten, die in einer Vielzahl von Datenblöcken gespeichert sind, und Erzeugen einer anonymen digitalen Signatur für die in der Vielzahl von Datenblöcken gespeicherten Daten, basierend mindestens teilweise auf dem privaten Signierschlüssel, dem berechneten Hash und einer Anzahl der Vielzahl von Datenblöcken, in der die Daten gespeichert sind; wobei die vertrauenswürdige Schaltung auf einem Schreibpfad zu der Speicherungsschaltlogik eingefügt ist, sodass Daten, die in die Speicherungsschaltlogik geschrieben werden, durch die vertrauenswürdige Schaltung verarbeitet werden.
  2. Speicherungsvorrichtung gemäß Anspruch 1, wobei die vertrauenswürdige Schaltung eingerichtet ist, um die anonyme digitale Signatur weiterhin basierend auf einem Zeitpunkt zu erzeugen, zu dem die digitale Signatur erzeugt wird.
  3. Speicherungsvorrichtung gemäß Anspruch 1, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist zum: Ableiten eines Aufforderungswertes, der sich auf einen aktuellsten Zustand einer Blockkette bezieht, die den in der Vielzahl von Datenblöcken gespeicherten Daten zugeordnet ist; und Erzeugen einer zweiten anonymen Signatur basierend auf dem privaten Signierschlüssel und dem Aufforderungswert.
  4. Speicherungsvorrichtung gemäß Anspruch 3, wobei die Blockkette einer Kryptowährung zugeordnet ist.
  5. Speicherungsvorrichtung gemäß Anspruch 1, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist, um eine Abbildung zwischen einem Speicheradressbereich, welcher der Vielzahl von Datenblöcken zugeordnet ist, und dem berechneten Hash beizubehalten.
  6. Speicherungsvorrichtung gemäß Anspruch 4, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist zum: Empfangen, von einer Anforderungsvorrichtung, einer Anforderung zum Validieren des Vorhandenseins von Daten an einer Speicheradresse; Bestimmen, dass die Speicheradresse innerhalb des Speicheradressbereichs ist, welcher der Vielzahl von Datenblöcken zugeordnet ist; und Zurückgeben des berechneten Hashs an die Anforderungsvorrichtung.
  7. Speicherungsvorrichtung gemäß Anspruch 4, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist zum: Empfangen, von einer Anforderungsvorrichtung, einer Anforderung zum Validieren des Vorhandenseins von Daten an einer Speicheradresse; Bestimmen, dass sich die Speicheradresse außerhalb des Speicheradressbereichs befindet, welcher der Vielzahl von Datenblöcken zugeordnet ist; Lesen, aus der Speicherungsschaltlogik, von Daten, die in der Speicheradresse gespeichert sind; Erzeugen einer zweiten anonymen digitalen Signatur für die in der Speicheradresse gespeicherten Daten basierend auf einem Hash der Daten, die in der Speicheradresse und einem Signierschlüssel gespeichert sind; und Zurückgeben der zweiten anonymen digitalen Signatur an die Anforderungsvorrichtung.
  8. Speicherungsvorrichtung gemäß Anspruch 6, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist zum: Erzeugen einer zweiten Abbildung, wobei die zweite Abbildung die Speicheradresse und den Hash den in der Speicheradresse gespeicherten Daten zuordnet.
  9. Speicherungsvorrichtung gemäß Anspruch 6, wobei der Signierschlüssel den privaten Signierschlüssel aufweist.
  10. Speicherungsvorrichtung gemäß Anspruch 6, wobei der Signierschlüssel einen Aufforderungswert aufweist, der in der Anforderung enthalten ist, um das Vorhandensein von Daten an der Speicheradresse zu validieren.
  11. Speicherungsvorrichtung gemäß Anspruch 4, weiterhin aufweisend: Erfassen, auf dem Schreibpfad zu der Speicherungsschaltlogik, einer Schreibanforderung an eine Adresse in dem Speicheradressbereich, welcher der Vielzahl von Datenblöcken zugeordnet ist; und Löschen der Abbildung zwischen dem Speicheradressbereich, welcher der Vielzahl von Datenblöcken zugeordnet ist, und dem berechneten Hash basierend auf dem Erfassen der Schreibanforderung.
  12. Speicherungsvorrichtung gemäß Anspruch 1, wobei die vertrauenswürdige Schaltung weiterhin eingerichtet ist zum: Empfangen einer ersten digitalen Signatur für erste Daten, die in der Speicherungsschaltlogik gespeichert werden sollen, und einer zweiten digitalen Signatur für zweite Daten, die in der Speicherungsschaltlogik gespeichert werden sollen; Bestimmen, basierend auf Informationen, die der ersten digitalen Signatur und der zweiten digitalen Signatur zugeordnet sind, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind; und basierend auf einer Bestimmung, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind, Erzeugen einer kombinierten Signatur für die erste digitale Signatur und die zweite digitale Signatur.
  13. Speicherungsvorrichtung gemäß Anspruch 11, wobei zur Bestimmung, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind, die vertrauenswürdige Schaltung eingerichtet ist zum: Bestimmen, dass sich ein der ersten digitalen Signatur zugeordneter Zeitstempel von einem der zweiten digitalen Signatur zugeordneten Zeitstempel um einen Betrag unterscheidet, der kleiner als ein erster Schwellenbetrag ist, und Bestimmen, dass der der ersten digitalen Signatur zugeordnete Zeitstempel und der der zweiten digitalen Signatur zugeordnete Zeitstempel innerhalb eines zweiten Schwellenbetrags eines aktuellen Zeitstempels liegen.
  14. Speicherungsvorrichtung gemäß Anspruch 11, wobei zur Bestimmung, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind, die vertrauenswürdige Schaltung eingerichtet ist, um zu bestimmen, dass ein der ersten digitalen Signatur zugeordneter Aufforderungswert und ein der zweiten digitalen Signatur zugeordneter Aufforderungswert ein gleicher Aufforderungswert sind.
  15. Speicherungsvorrichtung gemäß Anspruch 1, wobei die in der Vielzahl von Datenblöcken gespeicherten Daten verschlüsselte Daten aufweisen.
  16. Verfahren, aufweisend: Erfassen einer Anforderung zum Schreiben von Daten in einen oder mehrere Datenblöcke in eine Speicherungsschaltlogik einer Speicherungsvorrichtung; Berechnen eines Hashs über die Daten, die in den einen oder die mehreren Datenblöcke geschrieben werden sollen; Erzeugen einer anonymen digitalen Signatur für die Daten, die in den einen oder die mehreren Datenblöcke geschrieben werden sollen, mindestens teilweise basierend auf einem privaten Signierschlüssel, der in einer vertrauenswürdigen Schaltung der Speicherungsvorrichtung und dem berechneten Hash gespeichert ist; und Ausgeben der anonymen digitalen Signatur an eine Blockkette, um den Abschluss der Anforderung nachzuweisen, um die Daten in den einen oder die mehreren Datenblöcke in einer Speicherungsschaltlogik der Speicherungsvorrichtung zu schreiben.
  17. Verfahren gemäß Anspruch 15, weiterhin aufweisend: Ableiten eines Aufforderungswertes, der sich auf einen aktuellsten Zustand einer Blockkette bezieht, die den Daten zugeordnet ist, die in dem einen oder den mehreren Datenblöcken gespeichert sind; und Erzeugen einer zweiten anonymen Signatur basierend auf dem privaten Signierschlüssel und dem Aufforderungswert.
  18. Verfahren gemäß Anspruch 17, wobei die Blockkette einer Kryptowährung zugeordnet ist.
  19. Verfahren gemäß Anspruch 15, weiterhin aufweisend: Erzeugen einer Abbildung zwischen dem berechneten Hash und einem Bereich von Speicheradressen, einschließlich Speicheradressen, die dem einen oder den mehreren Datenblöcken zugeordnet sind; und Übertragen der Abbildung auf einen Hash-Map-Speicher.
  20. Verfahren gemäß Anspruch 17, weiterhin aufweisend: Empfangen, von einer Anforderungsvorrichtung, einer Anforderung zum Validieren des Vorhandenseins von Daten an einer Speicheradresse; Bestimmen, dass sich die Speicheradresse innerhalb des Bereichs von Speicheradressen befindet, die in der Abbildung spezifiziert sind; und Zurückgeben, an die Anforderungsvorrichtung, des berechneten Hashs, der dem Bereich von Speicheradressen zugeordnet ist, einschließlich der Speicheradressen, die dem einen oder den mehreren Datenblöcken zugeordnet sind.
  21. Verfahren gemäß Anspruch 15, weiterhin aufweisend: Empfangen einer ersten digitalen Signatur für erste Daten, die in der Speicherungsschaltlogik gespeichert werden sollen, und einer zweiten digitalen Signatur für zweite Daten, die in der Speicherungsschaltlogik gespeichert werden sollen; Bestimmen, basierend auf Informationen, die der ersten digitalen Signatur und der zweiten digitalen Signatur zugeordnet sind, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind; und basierend auf einer Bestimmung, dass die erste digitale Signatur und die zweite digitale Signatur kombinierbar sind, Erzeugen einer kombinierten Signatur für die erste digitale Signatur und die zweite digitale Signatur.
  22. Verfahren, aufweisend: Empfangen, von einer Anforderungsvorrichtung an einer vertrauenswürdigen Schaltung einer Speicherungsvorrichtung, einer Anforderung für eine Signatur für Daten, die in einem Bereich von Speicheradressen in einer Speicherungsschaltlogik der Speicherungsvorrichtung gespeichert sind, wobei die Anforderung einen Aufforderungswert einschließt; Abrufen eines Hashs der in dem Bereich von Speicheradressen gespeicherten Daten; Signieren des Hashs unter Verwendung des Aufforderungswerts; und Ausgeben des signierten Hashs an die Anforderungsvorrichtung.
DE102022112400.2A 2021-11-29 2022-05-17 Vertrauenswürdige systeme zur dezentralisierten datenspeicherung Pending DE102022112400A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/537,302 US20230168825A1 (en) 2021-11-29 2021-11-29 Trusted systems for decentralized data storage
US17/537,302 2021-11-29

Publications (1)

Publication Number Publication Date
DE102022112400A1 true DE102022112400A1 (de) 2023-06-01

Family

ID=86317346

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022112400.2A Pending DE102022112400A1 (de) 2021-11-29 2022-05-17 Vertrauenswürdige systeme zur dezentralisierten datenspeicherung

Country Status (3)

Country Link
US (1) US20230168825A1 (de)
CN (1) CN116192395A (de)
DE (1) DE102022112400A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10903998B2 (en) * 2017-10-15 2021-01-26 Network Perception, Inc Systems and methods for privacy preserving accurate analysis of network paths

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8578109B2 (en) * 2010-09-30 2013-11-05 Commvault Systems, Inc. Systems and methods for retaining and using data block signatures in data protection operations
WO2012115671A1 (en) * 2011-02-22 2012-08-30 Hewlett-Packard Development Company, L.P. Digital signatures
US10015012B2 (en) * 2013-07-03 2018-07-03 Red Hat, Inc. Precalculating hashes to support data distribution
US9483481B2 (en) * 2013-12-06 2016-11-01 International Business Machines Corporation Files having unallocated portions within content addressable storage
WO2015105479A1 (en) * 2014-01-07 2015-07-16 Empire Technology Development Llc Anonymous signature scheme
US9329799B2 (en) * 2014-03-04 2016-05-03 Netapp, Inc. Background checking for lost writes and data corruption
US10169616B1 (en) * 2016-02-01 2019-01-01 Xilinx, Inc. Cryptographic processing of data and instructions stored off-chip
US10708071B1 (en) * 2018-07-12 2020-07-07 Protocol Labs, Inc. Consensus protocols in distributed computing systems
US10698772B2 (en) * 2018-07-17 2020-06-30 EMC IP Holding Company LLC Storage system with multiple write journals supporting synchronous replication failure recovery
US10846372B1 (en) * 2019-12-31 2020-11-24 Onu Technology Inc. Systems and methods for trustless proof of possession and transmission of secured data
US11387984B1 (en) * 2021-09-25 2022-07-12 Uab 360 It Sharing grouped data in an organized storage system

Also Published As

Publication number Publication date
CN116192395A (zh) 2023-05-30
US20230168825A1 (en) 2023-06-01

Similar Documents

Publication Publication Date Title
CN110148475B (zh) 一种医疗信息共享方法、装置、可读存储介质及服务器
US11283616B2 (en) Method for index-based and integrity-assured search in a blockchain
US10592873B2 (en) Edit transactions for blockchains
KR102301257B1 (ko) 블록체인 부분 원장
DE102013108394A1 (de) Verfahren zum Verwalten eines Schlüssels für sicheres Speichern von Daten und Vorrichtung dafür
DE102020111199B4 (de) Sicherungen von dateisystem-instanzen verschlüsselter datenobjekte
DE112012005037T5 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE102014208385A1 (de) Verfahren zum Verbessern der sicheren Flash-Programmierung
EP1883906B1 (de) Tragbarer datenträger mit sicherer datenverarbeitung
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE112018004008T5 (de) Auf dateisysteminhalten beruhende sicherheit
DE112021005561T5 (de) Implementieren einer widerstandsfähigen deterministischen verschlüsselung
DE112021003270T5 (de) Deduplizierung von mit mehreren schlüsseln verschlüsselten daten
DE112019005812T5 (de) Nichtflüchtiger speicherchip und speichersteuerung mit datenerweiterungskomponenten zur verwendung beim maschinellen lernen
DE112020003357T5 (de) Undurchsichtige verschlüsselung für datendeduplizierung
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE102021130812A1 (de) Implementieren einer opportunistischen authentifizierung von verschlüsselten daten
DE102019205130A1 (de) Datenanalyse-Server, Datenanalysesystem und Datenanalyseverfahren
DE102020121075A1 (de) Einrichtung und Verfahren zur Authentifizierung von Software
DE112021005968T5 (de) Krypto-löschung von in einer „key per io“-fähigen einheit gespeicherten daten über eine interne aktion
DE102018214011A1 (de) Techniken für dynamische Zugriffe auf Datenbanken in mehreren Speicherformaten
DE102022112400A1 (de) Vertrauenswürdige systeme zur dezentralisierten datenspeicherung
DE102019110440A1 (de) Replay-Schutz für Speicher auf der Basis eines Schlüsselauffrischens
DE112017004995T5 (de) Verfahren und Vorrichtung zum gemeinsamen Nutzen eines Sicherheitsmetadaten-Speicherplatzes
DE102020103846A1 (de) Verfahren zum Betreiben eines Speichersystems mit Gegenmaßnahme gegen Replay-Angriff und Speichersystem, das dasselbe durchführt

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US