DE112020002968T5 - DATABASE JOURNAL EDITORS - Google Patents

DATABASE JOURNAL EDITORS Download PDF

Info

Publication number
DE112020002968T5
DE112020002968T5 DE112020002968.9T DE112020002968T DE112020002968T5 DE 112020002968 T5 DE112020002968 T5 DE 112020002968T5 DE 112020002968 T DE112020002968 T DE 112020002968T DE 112020002968 T5 DE112020002968 T5 DE 112020002968T5
Authority
DE
Germany
Prior art keywords
hash
entry
journal
digest
der
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
DE112020002968.9T
Other languages
German (de)
Inventor
Tate Andrew Certain
Benjamin Nelson Glowney
Allan Henry Vermeulen
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.)
Amazon Technologies Inc
Original Assignee
Amazon 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
Priority claimed from US16/446,556 external-priority patent/US11487733B2/en
Priority claimed from US16/446,512 external-priority patent/US11418345B2/en
Priority claimed from US16/446,528 external-priority patent/US11487819B2/en
Priority claimed from US16/446,543 external-priority patent/US11310054B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of DE112020002968T5 publication Critical patent/DE112020002968T5/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

Ein Datenbankverwaltungssystem speichert einen Eintrag in einem Journal. Das Journal umfasst nach Speichern des Eintrags einen Blattknoten mit einem mindestens teilweise auf dem Eintrag basierenden Hash-Wert und eine Hierarchie von inneren Knoten, die mindestens teilweise auf dem Blattknoten basieren. Als Reaktion auf eine Anfrage zum Löschen des Eintrags wird der Eintrag gelöscht, der Hashwert wird jedoch aufbewahrt. Ein kryptografischer Nachweis eines im Journal gespeicherten zweiten Eintrags basiert mindestens teilweise auf dem aufbewahrten Hash-Wert.A database management system stores an entry in a journal. After storing the entry, the journal includes a leaf node having a hash value based at least in part on the entry and a hierarchy of interior nodes based at least in part on the leaf node. In response to a request to delete the entry, the entry is deleted but the hash value is retained. Cryptographic proof of a second entry stored in the journal is based at least in part on the preserved hash value.

Description

QUERVERWEIS AUF VERWANDTE ANMELDUNGENCROSS REFERENCE TO RELATED APPLICATIONS

Diese Anmeldung beansprucht die Priorität der US-Patentanmeldung Nr. 16/446,512 , eingereicht am 19. Juni 2019, mit dem Titel „DIGEST PROOFS IN A JOURNALED DATABASE“, der US-Patentanmeldung Nr. 16/446,543 , eingereicht am 19. Juni 2019, mit dem Titel „SYMMETRIC FUNCTION FOR JOURNALED DATABASE PROOF“, der US-Patentanmeldung Nr. 16/446,528 , eingereicht am 19. Juni 2019, mit dem Titel „THREADED LEAF NODES IN DATABASE JOURNAL“, und der US-Patentanmeldung Nr. 16/446,556 , eingereicht am 19. Juni 2019, mit dem Titel „DATABASE JOURNAL REDACTION“, deren Offenbarungen hier durch Bezugnahme in vollem Umfang aufgenommen sind.This application claims priority from U.S. Patent Application No. 16/446,512 , filed June 19, 2019, entitled "DIGEST PROOFS IN A JOURNALED DATABASE," U.S. Patent Application No. 16/446,543 , filed June 19, 2019, entitled "SYMMETRIC FUNCTION FOR JOURNALED DATABASE PROOF", U.S. Patent Application No. 16/446,528 , filed June 19, 2019, entitled THREADED LEAF NODES IN DATABASE JOURNAL, and U.S. Patent Application No. 16/446,556 , filed June 19, 2019, entitled DATABASE JOURNAL REDACTION, the disclosures of which are incorporated herein by reference in their entirety.

HINTERGRUNDBACKGROUND

Datenbankverwaltungssysteme werden zunehmend aufgefordert, erweiterte Sicherheits- und Überwachungsfähigkeiten bereitzustellen. Zu einer dieser Kategorien von Funktionen gehört die kryptografische Überprüfung der Transaktionshistorie. Beispielsweise könnte ein Datenbankverwaltungssystem aufgefordert werden, einen verifizierbaren Nachweis dafür zu erbringen, dass ein in der Datenbank gespeicherter Datensatz nicht geändert wurde. Techniken zum Bereitstellen solcher Nachweise können jedoch mit Anforderungen kollidieren, hohe Transaktionsdurchsatzraten zu unterstützen.Database management systems are increasingly being asked to provide advanced security and auditing capabilities. One of these categories of functionality includes cryptographic verification of transaction history. For example, a database management system might be required to provide verifiable evidence that a record stored in the database has not been modified. However, techniques for providing such evidence may conflict with requirements to support high transaction throughput rates.

Figurenlistecharacter list

Unter Bezugnahme auf die Zeichnungen werden verschiedene Techniken beschrieben, wobei:

  • 1 ein Ledger-basiertes Datenbanksystem gemäß einer Ausführungsform veranschaulicht;
  • 2 ein Beispiel eines Journal-Baums gemäß einer Ausführungsform veranschaulicht;
  • 3 ein Beispiel eines symmetrischen Hash-Operators gemäß einer Ausführungsform veranschaulicht;
  • 4 Aspekte einer Journal-Struktur gemäß einer Ausführungsform veranschaulicht;
  • 5 weitere Aspekte einer Journal-Struktur gemäß einer Ausführungsform veranschaulicht;
  • 6 eine Journal-Redaktion gemäß einer Ausführungsform veranschaulicht;
  • 7 Aspekte der Durchführung eines Journal-Nachweises gemäß einer Ausführungsform veranschaulicht;
  • 8 Aspekte eines Nachweises gemäß einer Ausführungsform veranschaulicht;
  • 9 einen beispielhaften Prozess der Verwendung eines symmetrischen Hash-Operators zum Bereitstellen von Journal-Nachweisen gemäß einer Ausführungsform veranschaulicht;
  • 10 einen beispielhaften Prozess der Verwendung von gethreadeten Blattknoten zum Bereitstellen von Journal-Nachweisen gemäß einer Ausführungsform veranschaulicht;
  • 11 einen beispielhaften Prozess zum Durchführen eines Digest-Nachweises gemäß einer Ausführungsform veranschaulicht;
  • 12 einen beispielhaften Prozess einer Journal-Redaktion gemäß einer Ausführungsform veranschaulicht; und
  • 13 ein System veranschaulicht, in dem verschiedene Ausführungsformen implementiert sein können.
Various techniques are described with reference to the drawings, where:
  • 1 Figure 12 illustrates a ledger-based database system according to one embodiment;
  • 2 Figure 12 illustrates an example of a journal tree according to one embodiment;
  • 3 12 illustrates an example of a symmetric hash operator according to one embodiment;
  • 4 illustrates aspects of a journal structure according to one embodiment;
  • 5 illustrates further aspects of a journal structure according to an embodiment;
  • 6 illustrates a journal editorial board according to one embodiment;
  • 7 illustrates aspects of performing journal attestation according to one embodiment;
  • 8th illustrates aspects of verification according to an embodiment;
  • 9 12 illustrates an exemplary process of using a symmetric hash operator to provide journal evidence, according to one embodiment;
  • 10 illustrates an exemplary process of using threaded leaf nodes to provide journal evidence, according to one embodiment;
  • 11 12 illustrates an example process for performing digest attestation according to one embodiment;
  • 12 12 illustrates an exemplary process of journal editing, according to one embodiment; and
  • 13 1 illustrates a system in which various embodiments may be implemented.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Es werden hier Systeme und Techniken beschrieben, die sich auf den Betrieb eines joumalisierten Datenbankverwaltungssystems beziehen. Ein hier beschriebenes joumalisiertes Datenbankverwaltungssystem pflegt eine durch das System unterhaltene Journal-Struktur, die einen unveränderbaren Verlauf von Transaktionen speichert, die an einer durch das System gepflegten Datensammlung durchgeführt wurden. Die journalisierte Datenbank bietet ferner verschiedene kryptografische Verifizierungsfunktionen unter Verwendung einer kryptografischen Hash-Baum-Struktur, die angepasst wurde, um einen hohen Durchsatz und große Transaktionsvolumina aufrechtzuerhalten.Systems and techniques related to the operation of a journalized database management system are described here. A journalized database management system described herein maintains a journal structure maintained by the system that stores an immutable history of transactions performed on a data collection maintained by the system. The journaled database also offers various cryptographic verification functions using a cryptographic hash tree structure that has been adapted to sustain high throughput and large transaction volumes.

In einer beispielhaften Ausführungsform reagiert das journalisierte Datenbankverwaltungssystem auf das Commitment einer Transaktion, indem es einen Eintrag in Verbindung mit einem Blattknoten eines Hash-Baums speichert. Die Blattknoten des Baums sind gethreadet, sodass der im neuesten Blattknoten gespeicherte Hash basierend auf dem Hash des vorhergehenden Knotens und basierend auf dem Hash des Eintrags berechnet wird. Das Threaden der Blattknoten bietet auf diese Weise Unterstützung für verschiedene kryptografische Verifizierungsfunktionen. In mindestens einer Ausführungsform unterstützt das Threaden der Blattknoten Bereichsnachweise.In an example embodiment, the journaled database management system responds to the commitment of a transaction by storing an entry associated with a leaf node of a hash tree. The leaf nodes of the tree are threaded, so the hash stored in the newest leaf node is computed based on the hash of the previous node and based on the hash of the entry. Threading the leaf nodes in this way provides support for various cryptographic verification functions. In at least one embodiment, the threading of the leaf nodes supports range verifications.

In einer beispielhaften Ausführungsform berechnet das journalisierte Datenbankverwaltungssystem Hashes unter Verwendung eines symmetrischen Hash-Operators. Der symmetrische Hash-Operator berechnet einen kryptografischen Hash so, dass er bei einer Vielzahl von Operanden unabhängig von der Reihenfolge der Operanden eine äquivalente Ausgabe erzeugt. In mindestens einer Ausführungsform sortiert der symmetrische Hash-Operator die Operanden, verkettet die sortierten Operanden und gibt einen kryptografischen Hash der Verkettung aus.In an exemplary embodiment, the journaled database management system calculates hashes using a symmetric hash operator. The symmetric hash operator calculates a cryptographic hash in such a way that it is independent of a large number of operands produces an equivalent output depending on the order of the operands. In at least one embodiment, the symmetric hash operator sorts the operands, concatenates the sorted operands, and outputs a cryptographic hash of the concatenation.

In einer beispielhaften Ausführungsform liefert das journalisierte Datenbankverwaltungssystem einen Nachweis dafür, dass Einträge, die durch einen ersten Digest eines Journals abgedeckt oder kryptografisch verifiziert sind, auch durch einen zweiten Digest aus einer nachfolgenden Version des Journals abgedeckt werden.In an example embodiment, the journaled database management system provides evidence that entries covered or cryptographically verified by a first digest of a journal are also covered by a second digest from a subsequent version of the journal.

In einer beispielhaften Ausführungsform unterstützt das journalisierte Datenbankverwaltungssystem die Redaktion von Einträgen. Als Reaktion auf eine Anfrage zum Löschen eines Eintrags aus dem Journal löscht das Datenbankverwaltungssystem den Eintrag, bewahrt jedoch den Eintrags-Hash auf, der basierend auf dem Eintrag berechnet wurde. Ferner werden alle Hashes, die vom aufbewahrten Eintrags-Hash abhängen, ebenfalls aufbewahrt.In an exemplary embodiment, the journaled database management system supports editing of entries. In response to a request to delete an entry from the journal, the database management system deletes the entry but retains the entry hash calculated based on the entry. Furthermore, all hashes that depend on the preserved entry hash are also preserved.

Ein Hash-Baum, wie er hier verwendet wird, bezieht sich auf eine Struktur, in der kryptografische Hashes gespeichert sind. Ein Hash-Baum kann manchmal als Signaturbaum, kryptografischer Verifikationsbaum, Hash-Signaturbaum und so weiter bezeichnet werden. Ein kryptografischer Hash kann als kryptografische Signatur beschrieben werden und kann hier auch als Hash beschrieben werden.A hash tree, as used herein, refers to a structure that stores cryptographic hashes. A hash tree can sometimes be referred to as a signature tree, cryptographic verification tree, hash signature tree, and so on. A cryptographic hash can be described as a cryptographic signature and can also be described here as a hash.

In der vorhergehenden und folgenden Beschreibung werden verschiedene Techniken beschrieben. Zur Erklärung werden konkrete Konfigurationen und Details dargelegt, um ein gründliches Verständnis der Möglichkeiten zur Implementierung der Techniken zu vermitteln. Es wird jedoch auch offensichtlich sein, dass die nachfolgend beschriebenen Techniken in verschiedenen Konfigurationen ohne die konkreten Details durchgeführt werden können. Ferner können bekannte Merkmale weggelassen oder vereinfacht werden, um eine Verschleierung der beschriebenen Techniken zu vermeiden.Various techniques are described in the foregoing and following description. Concrete configurations and details are presented for explanation in order to provide a thorough understanding of the possibilities for implementing the techniques. However, it will also be apparent that the techniques described below can be implemented in various configurations without the specific details. Furthermore, well-known features may be omitted or simplified to avoid obscuring the techniques described.

Wie ein Fachmann im Lichte dieser Offenbarung erkennen wird, können bestimmte Ausführungsformen in der Lage sein, bestimmte Vorteile zu erzielen, einschließlich, dass die hier offenbarten Ausführungsformen hohe Transaktions-Commit-Raten in Verbindung mit der Fähigkeit bereitstellen, eine kryptografische Verifikation der Integrität der festgeschriebenen Transaktionen bereitzustellen.As one skilled in the art will appreciate in light of this disclosure, certain embodiments may be able to achieve certain advantages, including the embodiments disclosed herein providing high transaction commit rates coupled with the ability to perform cryptographic verification of the integrity of the committed provide transactions.

1 veranschaulicht ein journalisiertes Datenbankverwaltungssystem gemäß einer Ausführungsform. Das beispielhafte journalisierte Datenbankverwaltungssystem 100 umfasst einen Abfrageprozessor 102, einen Transaktionskoordinator 104 und ein Speichersystem 106. 1 12 illustrates a journaled database management system according to one embodiment. The example journaled database management system 100 includes a query processor 102, a transaction coordinator 104, and a storage system 106.

Eine Client-Vorrichtung 110 kann Anfragen an das Datenbanksystem 100 senden. In einer Ausführungsform umfasst ein Abfrageprozessor 102 ein auf einer Rechenvorrichtung betreibbares Modul, das mindestens einen Prozessor und einen Speicher umfasst. Wie hier verwendet, bezieht sich ein Modul oder Untermodul auf einen Abschnitt des Speichers, in dem prozessorausführbare Anweisungen gespeichert sind, wobei die Anweisungen, wenn sie durch den Prozessor durchgeführt werden, die Rechenvorrichtung veranlassen, die Funktionen auszuführen, die dem Modul zugeordnet sind. Der Abfrageprozessor 102 führt Funktionen durch, die sich auf die Verarbeitung der von der Client-Vorrichtung 110 empfangenen Anfragen beziehen. Der Abfrageprozessor 102 kann einen Parser 120, einen Abfrageplaner 122 und eine Ausführungsmaschine 124 umfassen. Das Datenbanksystem 100 kann eine Flotte von Abfrageprozessoren ähnlich dem in 1 dargestellten Abfrageprozessor 102 umfassen, um eine Skalierung zu erleichtern.A client device 110 can send queries to the database system 100 . In one embodiment, a query processor 102 includes a module operable on a computing device that includes at least a processor and memory. As used herein, a module or submodule refers to a portion of memory in which processor-executable instructions are stored, which instructions, when executed by the processor, cause the computing device to perform the functions associated with the module. Query processor 102 performs functions related to processing of queries received from client device 110 . The query processor 102 may include a parser 120, a query scheduler 122, and an execution engine 124. The database system 100 can use a fleet of query processors similar to that in 1 query processor 102 illustrated to facilitate scaling.

In einer Ausführungsform führt der Parser 120 eine lexikalische und semantische Analyse einer empfangenen Abfrage durch. Der Abfrageplaner 122 bestimmt einen Plan zum Ausführen der empfangenen Abfrage, und die Ausführungsmaschine 124 erhält den Plan und führt ihn aus.In one embodiment, the parser 120 performs lexical and semantic analysis of a received query. Query planner 122 determines a plan for executing the received query, and execution engine 124 receives and executes the plan.

In einer Ausführungsform umfasst ein Transaktionskoordinator 104 ein auf einer Rechenvorrichtung betreibbares Modul, das mindestens einen Prozessor und einen Speicher umfasst. Der Transaktionskoordinator 104 kann sich zusammen mit anderen Modulen auf einer Rechenvorrichtung befinden, wie etwa dem Abfrageprozessor 102, oder er kann sich auf einer separaten Rechenvorrichtung befinden. Das Datenbanksystem 100 kann eine Flotte von Transaktionskoordinatoren ähnlich dem in 1 dargestellten Transaktionskoordinator 104 umfassen, um eine Skalierung zu erleichtern. Der Transaktionskoordinator dient in einer Ausführungsform dazu, die Durchführung von Operationen zu erleichtern, die durch die Ausführungsmaschine 124 eingeleitet werden, und kann außerdem als Schnittstelle zum Speichersystem 106 dienen.In one embodiment, a transaction coordinator 104 includes a module operable on a computing device that includes at least a processor and memory. Transaction coordinator 104 may reside on a computing device, such as query processor 102, along with other modules, or it may reside on a separate computing device. The database system 100 can have a fleet of transaction coordinators similar to that in 1 transaction coordinator 104 shown to facilitate scaling. The transaction coordinator, in one embodiment, serves to facilitate the performance of operations initiated by execution engine 124 and may also serve as an interface to memory system 106.

In einer Ausführungsform umfasst ein Speichersystem 106 ein auf einer Rechenvorrichtung betreibbares Modul, das mindestens einen Prozessor und einen Speicher umfasst. Das Speichersystem 106 kann sich- zusammen mit anderen Modulen auf einer Rechenvorrichtung befinden oder sich auf einer separaten Rechenvorrichtung befinden. Das Datenbanksystem 100 kann eine Flotte von Speichersystemen ähnlich dem in 1 dargestellten Speichersystem 106 umfassen, um eine Skalierung zu erleichtern. Das Speichersystem 106 kann verschiedene Untermodule umfassen, einschließlich eines Journal-Managers 140, der das Journal 144 pflegt. Im Allgemeinen ist das Speichersystem 106 für die Durchführung von Speicher- und Abrufoperationen auf dem Ledger verantwortlich, und der Journal-Manager 140 pflegt das Journal 144. Beispiele für ein Journal werden hier bereitgestellt, beispielsweise in Bezug auf 2.In one embodiment, a memory system 106 includes a module operable on a computing device that includes at least a processor and memory. Storage system 106 may reside on a computing device along with other modules or reside on a separate computing device. The database system 100 can use a fleet of storage systems similar to that in 1 include storage system 106 shown to scale to facilitate. The storage system 106 may include various sub-modules, including a journal manager 140 that maintains the journal 144. In general, the storage system 106 is responsible for performing storage and retrieval operations on the ledger, and the journal manager 140 maintains the journal 144. Examples of a journal are provided herein, such as with respect to 2 .

2 veranschaulicht ein Beispiel eines Journal-Baums gemäß einer Ausführungsform. Das beispielhafte Journal von 2 umfasst eine Vielzahl von Blattknoten 210, 212 und inneren Knoten 208, die in einer Hierarchie organisiert sind. Zu veranschaulichenden und beschreibenden Zwecken können die Knoten der Hierarchie entsprechend ihrer Ebene in der Hierarchie und ihrer Position innerhalb einer Ebene bezeichnet werden. Zum Beispiel können die Blattknoten 210 als {0,0}, {0,1}, {0,2} und so weiter bezeichnet werden. Oberhalb der Blattebene kann die erste Ebene der inneren Knoten 208 als {1,0}, {1,1}, {1,2} und so weiter bezeichnet werden. 2 Figure 12 illustrates an example of a journal tree according to one embodiment. The exemplary journal of 2 comprises a plurality of leaf nodes 210, 212 and interior nodes 208 organized in a hierarchy. For illustrative and descriptive purposes, the nodes of the hierarchy may be labeled according to their level in the hierarchy and their position within a level. For example, leaf nodes 210 may be denoted as {0,0}, {0,1}, {0,2}, and so on. Above the leaf level, the first level of interior nodes 208 may be denoted as {1,0}, {1,1}, {1,2}, and so on.

Die Blattknoten 210 können einzeln einen Hash-Wert umfassen, der mindestens teilweise auf einem jeweiligen Eintrags-Hash 214 basiert. Der jeweilige Eintrags-Hash 214 wird berechnet, indem ein Hash-Wert auf die jeweiligen Einträge 216 angewendet wird. In mindestens einer Ausführungsform wird eine kryptografisch sichere Hash-Funktion auf die Einträge 216 angewendet, um einen Hash-Wert zu erzeugen, der ohne Zugriff auf die Einträge 216 nicht ohne Weiteres erzeugt werden könnte. Beispiele für Hash-Funktionen, die verwendet werden können, beinhalten den Secure Hash Algorithm („SHA“), Message-Digest(„MD“)-Algorithmen und so weiter, ohne aber auf diese beschränkt zu sein.Leaf nodes 210 may individually include a hash value based at least in part on a respective entry hash 214 . Each entry hash 214 is calculated by applying a hash value to each entry 216 . In at least one embodiment, a cryptographically secure hash function is applied to entries 216 to generate a hash value that could not be readily generated without access to entries 216 . Examples of hash functions that may be used include, but are not limited to, Secure Hash Algorithm ("SHA"), Message Digest ("MD") algorithms, and so on.

In mindestens einer Ausführungsform sind die Blattknoten 210 als geordnete Liste angeordnet, und der Hash-Wert eines Blattknotens basiert nicht nur auf dem Wert eines jeweiligen Eintrags-Hash 214, sondern auch auf dem Hash-Wert eines vorherigen Blattknotens. Beispielsweise kann der Wert des Blattknotens {0,2} auf einer Kombination des Hash des Knotens {0,1} und des Eintrags-Hash von {0,2} basieren. In mindestens einer Ausführungsform wird ein symmetrischer Hash-Operator, wie etwa der in 3 dargestellte symmetrische Hash-Operator, verwendet.In at least one embodiment, the leaf nodes 210 are arranged as an ordered list, and the hash value of a leaf node is based not only on the value of a respective entry hash 214, but also on the hash value of a previous leaf node. For example, the value of leaf node {0,2} may be based on a combination of node {0,1} hash and entry hash of {0,2}. In at least one embodiment, a symmetric hash operator, such as the in 3 symmetric hash operator shown.

Jeder der inneren Knoten 208 umfasst einzeln einen Hash-Wert basierend auf den Hash-Werten der untergeordneten Elemente des jeweiligen Knotens. Beispielsweise basiert der Knoten bei {1,0} auf den Hash-Werten der Knoten bei {0,0} und {0,1}. In ähnlicher Weise basiert der Knoten bei {2,0} auf den Hash-Werten der Knoten bei {1,0} und {1, 1}.Each of the interior nodes 208 individually includes a hash value based on the hash values of the respective node's children. For example, the node at {1,0} is based on the hash values of the nodes at {0,0} and {0,1}. Similarly, the node at {2,0} is based on the hash values of the nodes at {1,0} and {1,1}.

Knoten werden an der äußersten rechten verfügbaren Position in der Blattebene eines Hash-Baums hinzugefügt. Im Beispiel 200 von 2 ist die erste derartige verfügbare Position der leere Blattknoten 212 an Position {0,5}. Eine neue Transaktion, dargestellt als neue Einträge 218, wird dem Journal hinzugefügt, indem ein neuer Eintrags-Hash 220 und ein Hash berechnet werden, die in dem leeren Blattknoten 212 bei {0,5} zu speichern sind. Wie bereits erwähnt, kann dieser Wert eine Kombination aus dem Hash von {0,4} und dem neuen Eintrags-Hash 220 sein, der durch Anwendung eines symmetrischen Hash-Operators erzeugt wird.Nodes are added at the rightmost available position in the leaf level of a hash tree. In the example 200 from 2 the first such available position is the empty leaf node 212 at position {0,5}. A new transaction, represented as new entries 218, is added to the journal by computing a new entry hash 220 and a hash to be stored in the empty leaf node 212 at {0,5}. As previously mentioned, this value can be a combination of the hash of {0,4} and the new entry hash 220 generated by applying a symmetric hash operator.

Zu beachten ist, dass die Knoten 208, 210, 212 des Journals als zu einer von zwei Regionen gehörend klassifiziert werden können. In der stabilen Region 204 sind alle Knoten in dem Sinne vollständig, dass sich ihre entsprechenden Hash-Werte beim Hinzufügen neuer Knoten und der Erweiterung des Baums nicht ändern. In der instabilen Region 206 können Knoten ganz oder teilweise unvollständig sein. Beispielsweise basiert der Knoten {1,2} vor dem Hinzufügen der neuen Einträge 218 auf einem finalisierten Hash von {0,4} und einem Null-Hash von {0,5}. In ähnlicher Weise ist der Knoten bei {1,3} Null, weil seine untergeordneten Knoten bei {0,6} und {0,7} Null sind.Note that the nodes 208, 210, 212 of the journal can be classified as belonging to one of two regions. In the stable region 204, all nodes are complete in the sense that their respective hash values do not change as new nodes are added and the tree is expanded. In the unstable region 206, nodes may be fully or partially incomplete. For example, prior to adding the new entries 218, node {1,2} is based on a finalized hash of {0,4} and a null hash of {0,5}. Similarly, the node at {1,3} is null because its children at {0,6} and {0,7} are null.

Knoten, die teilweise vollständig sind, das heißt auf mindestens einem stabilen Hash-Wert und mindestens einem unvollständigen Wert wie etwa Null basieren, nehmen eine Position in der instabilen Region 206 ein, die als Grenze der Hierarchie bezeichnet werden kann. Im Beispiel von 2 entspricht die Grenze Knoten bei {0,4}, {1,2}, {2,1} und {3,0}. In mindestens einer Ausführungsform werden Knoten entlang der Grenze aktualisiert, wenn dem Journal neue Einträge hinzugefügt werden.Nodes that are partially complete, that is based on at least one stable hash value and at least one incomplete value such as zero, occupy a position in the unstable region 206 that can be referred to as the boundary of the hierarchy. In the example of 2 the boundary corresponds to nodes at {0,4}, {1,2}, {2,1} and {3,0}. In at least one embodiment, nodes along the boundary are updated as new entries are added to the journal.

In mindestens einer Ausführungsform werden die in 2 dargestellten Null-Knoten erst instanziiert, wenn ein Hash-Wert gespeichert werden muss. Beispielsweise kann die Instanziierung des Knotens bei {0,5} zurückgestellt werden, bis die neuen Einträge 218 im Journal gespeichert werden sollen.In at least one embodiment, the in 2 The null node shown is not instantiated until a hash value needs to be stored. For example, the instantiation of the node at {0,5} may be deferred until the new entries 218 are to be journaled.

In mindestens einer Ausführungsform wird das in 2 dargestellte Journal als von unbegrenzter Größe und eine unbegrenzte Anzahl von übergeordneten Knoten oberhalb des dargestellten Digest-Knotens {3,0} umfassend angesehen. Beispielsweise kann der Knoten {3,0} als einen übergeordneten Knoten {4,0} aufweisend angesehen werden, dessen untergeordnete Elemente {3,0} und {3,1} sind. Diese zusätzlichen Knoten, z. B. {4,0}, {3,1}, können gegebenenfalls als neue Einträge instanziiert werden, und ihre entsprechenden Blattknoten werden dem Journal hinzugefügt.In at least one embodiment, the in 2 represented journal is considered to be of unlimited size and spanning an unlimited number of ancestors above the represented digest node {3,0}. For example, node {3,0} can be viewed as having a parent node {4,0} whose children are {3,0} and {3,1}. These additional nodes, e.g. B. {4,0}, {3,1}, may be instantiated as new entries and their corresponding leaf nodes are added to the journal.

In mindestens einer Ausführungsform kann der oberste instanziierte Knoten als Digest-Knoten 202 des Journals behandelt werden. Es wird angemerkt, dass der Hash-Wert des Digest-Knotens 202 auf den Hash-Werten aller seiner abhängigen Elemente basiert, die wiederum auf Hashes basieren, die aus den Einträgen 216 berechnet werden. Daher ist es schwierig, wenn nicht gar unmöglich, den Digest-Knoten 202 ohne Zugang zu den ursprünglichen Einträgen 216 oder ihren jeweiligen Eintrags-Hashes 214 neu zu erstellen.In at least one embodiment, the top instantiated node may be treated as the digest node 202 of the journal. It is noted that the hash value of the digest node 202 is based on the hash values of all of its dependent elements, which in turn are based on hashes calculated from the entries 216 . Therefore, it is difficult, if not impossible, to recreate the digest node 202 without access to the original entries 216 or their respective entry hashes 214.

In mindestens einer Ausführungsform werden die Hash-Werte für die Knoten des Journals 200 unter Verwendung eines symmetrischen Hash-Operators berechnet. 3 veranschaulicht Beispiele 300, 302 eines symmetrischen Hash-Operators gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der symmetrische Hash-Operator ein Modul oder eine andere softwareimplementierte Funktion zum Durchführen der beschriebenen Operationen. In mindestens einer Ausführungsform umfasst der symmetrische Hash-Operator prozessorausführbare Anweisungen. Beispielsweise umfasst in mindestens einer Ausführungsform ein Journal-Manager-Modul Anweisungen zum Durchführen eines symmetrischen Hash. 1 stellt ein Beispiel eines Journal-Manager-Moduls 114 dar.In at least one embodiment, the hash values for the journal 200 nodes are computed using a symmetric hash operator. 3 Figure 3 illustrates examples 300, 302 of a symmetric hash operator according to at least one embodiment. In at least one embodiment, the symmetric hash operator is a module or other software-implemented function for performing the operations described. In at least one embodiment, the symmetric hash operator comprises processor-executable instructions. For example, in at least one embodiment, a journal manager module includes instructions for performing a symmetric hash. 1 Figure 1 shows an example of a journal manager module 114.

Im ersten Beispiel 300 von 3 werden zwei Operanden 304, 306 für einen symmetrischen Hash-Operator 320 bereitgestellt. Der symmetrische Hash-Operator 320 erzeugt die Ausgabe 330. Für einen vorgegebenen Satz von Werten X und Y erzeugt der symmetrische Hash-Operator 320 immer einen Wert Z. Dies gilt unabhängig von der Reihenfolge der Operanden. Beispielsweise X ■ Y = Z und Y ■ X = Z, wobei „■“ den symmetrischen Hash-Operator 320 angibt.In the first example 300 of 3 two operands 304, 306 for a symmetric hash operator 320 are provided. The symmetric hash operator 320 produces the output 330. For a given set of values X and Y, the symmetric hash operator 320 always produces a value Z. This is true regardless of the order of the operands. For example, X ■ Y = Z and Y ■ X = Z, where "■" indicates the symmetric hash operator 320 .

In mindestens einer Ausführungsform berechnet der symmetrische Hash-Operator 320 die Ausgabe 330 durch Sortieren, Verketten und Hashing der Operanden 304, 306. Zum Beispiel: 3245 6625 32456625 h ( 32456625 ) 62434993

Figure DE112020002968T5_0001
6625 3245 32456625 h ( 32456625 ) 62434993
Figure DE112020002968T5_0002
In at least one embodiment, the symmetric hash operator 320 computes the output 330 by sorting, concatenating, and hashing the operands 304, 306. For example: 3245 6625 32456625 H ( 32456625 ) 62434993
Figure DE112020002968T5_0001
6625 3245 32456625 H ( 32456625 ) 62434993
Figure DE112020002968T5_0002

Wie hier zu sehen ist, ist die Ausgabe des symmetrischen Hash-Operators 320 unabhängig von der Reihenfolge der Operanden 304, 306 gleich.As can be seen here, the output of the symmetric hash operator 320 is the same regardless of the order of the operands 304, 306.

In mindestens einer Ausführungsform umfasst der symmetrische Hash-Operator 320 einen Sortier-Unteroperator 322, der die Operanden sortiert und mit dem symmetrischen Hash-Operator 320 verkettet, und einen Hash-Unteroperator 324, der einen Hash-Wert basierend auf der sortierten und verketteten Eingabe berechnet.In at least one embodiment, the symmetric hash operator 320 includes a sort sub-operator 322 that sorts and concatenates the operands with the symmetric hash operator 320, and a hash sub-operator 324 that generates a hash value based on the sorted and concatenated input calculated.

Unter Bezugnahme auf 2 ist eine Folge des symmetrischen Hash-Operators, dass der Hash-Wert des Knotens {1,0} berechnet werden kann, wenn die Hash-Werte von {0,0} und {0,1} bekannt sind, selbst wenn nicht bekannt ist, welcher Hash-Wert zu {0,0} und welcher Hash-Wert zu {0,1} gehört. Somit können die Listen [3245, 6625] und [6625, 3245] beide als Nachweis für den Wert 62434993 verwendet werden.With reference to 2 is a corollary of the symmetric hash operator that the hash value of node {1,0} can be computed if the hash values of {0,0} and {0,1} are known, even if is not known , which hash value corresponds to {0,0} and which hash value corresponds to {0,1}. Thus, the lists [3245, 6625] and [6625, 3245] can both be used as evidence for the value 62434993.

Im zweiten Beispiel 302 von 3 beinhalten die Operanden 308, 310 einen „Null“-Wert. Für diesen Fall ist die Ausgabe 332 so definiert, dass er gleich der Nicht-Null-Eingabe ist. Daher gilt: X N u l l = X

Figure DE112020002968T5_0003
N u l l X = X
Figure DE112020002968T5_0004
In the second example 302 of 3 the operands 308, 310 contain a "zero" value. For this case, the output 332 is defined to be equal to the non-zero input. Therefore: X N and l l = X
Figure DE112020002968T5_0003
N and l l X = X
Figure DE112020002968T5_0004

Wiederum unter Bezugnahme auf 2 führt die Anwendung des symmetrischen Hash-Operators 320 auf einen Knoten wie {1,2}, der als untergeordnete Elemente den vollständigen Knoten {0,4} und den Null-Knoten bei {0,5} hat, dazu, dass der Wert von {1,2} zu dem Wert des vollständigen Knotens {0,4} äquivalent ist.Again referring to 2 applying the symmetric hash operator 320 to a node like {1,2} that has as children the full node {0,4} and the null node at {0,5} results in the value of {1,2} is equivalent to the value of the complete node {0,4}.

In mindestens einer Ausführungsform bringt die Verwendung des symmetrischen Hash-Operators zur Berechnung von Hash-Werten für innere Knoten und/oder Blattknoten des Journals einen oder mehrere Vorteile mit sich. Die Vorteile können eine steigende Effizienz der Aktualisierung der Grenzknoten der Hierarchie beinhalten, wenn neue Einträge und entsprechende Knoten dem Journal hinzugefügt werden. Die Vorteile können auch die Verringerung der Komplexität von Nachweisen durch Minimierung des Wissensvolumens beinhalten, das zur Verifizierung des Nachweises erforderlich ist. Insbesondere kann ein Client, der den Nachweis verifiziert, weniger Informationen in Bezug auf die Struktur des Journals benötigen, wenn ein symmetrischer Hash-Operator verwendet wird, um Hashes für die inneren Knoten und/oder Blattknoten des Journals zu berechnen.In at least one embodiment, using the symmetric hash operator to calculate hash values for interior nodes and/or leaf nodes of the journal provides one or more advantages. Benefits can include increased efficiency of updating the boundary nodes of the hierarchy as new entries and corresponding nodes are added to the journal. Benefits can also include reducing the complexity of evidence by minimizing the volume of knowledge required to verify the evidence. In particular, if a symmetric hash operator is used to compute hashes for the interior nodes and/or leaf nodes of the journal, a client verifying the evidence may need less information regarding the structure of the journal.

4 veranschaulicht Aspekte einer Journal-Struktur gemäß einer Ausführungsform. Das beispielhafte Journal 400 ähnelt dem beispielhaften Journal 200 von 2. Ebenso wie die entsprechenden Elemente des in 2 dargestellten Journals umfasst das beispielhafte Journal 400 von 4 die Einträge 410, Eintrags-Hashes 408, Blattknoten 406 und inneren Knoten 404. 4 illustrates aspects of a journal structure according to one embodiment. The example journal 400 is similar to the example journal 200 of FIG 2 . Just like the corresponding elements of the in 2 journals illustrated includes the example journal 400 of 4 entries 410, entry hashes 408, leaf nodes 406, and interior nodes 404.

Die Blattknoten 406 können als gethreadet beschrieben werden. Dies bezieht sich auf den Hash-Wert jedes Blattknotens, der auf dem Hash-Wert eines vorherigen Knotens basiert. Beispielsweise wird in mindestens einer Ausführungsform der Knoten bei {0,1} als symmetrischer Hash aus einem entsprechenden Eintrags-Hash und dem Hash-Wert aus dem vorherigen Knoten {0,0} berechnet. Die Blattknoten 406 können ferner als geordnet beschrieben werden. In 4 beispielsweise geht der Blattknoten bei {0,0} dem Blattknoten bei {0,1} voraus, und der Blattknoten bei {0,1} geht dem Blattknoten bei {0,2} voraus. Die Reihenfolge ergibt sich aus der Verwendung des vorherigen Hash-Werts. Weil der Hash-Wert von {0,1} teilweise auf dem Hash-Wert des Blattknotens bei {0,0} basiert, wird davon ausgegangen, dass der Blattknoten {0,1} dem Blattknoten {0,0} folgt. Ebenso folgt {0,2} {0,1} und so weiter.Leaf nodes 406 can be described as threaded. This refers to the hash value of each leaf node based on the hash value of a previous node. For example, in at least one embodiment, the node at {0,1} is computed as a symmetric hash of a corresponding entry hash and the hash value from the previous node {0,0}. The leaf nodes 406 can be further described as ordered. In 4 for example, the leaf node at {0,0} precedes the leaf node at {0,1}, and the leaf node at {0,1} precedes the leaf node at {0,2}. The order results from using the previous hash value. Because the hash of {0,1} is based in part on the hash of the leaf node at {0,0}, leaf node {0,1} is assumed to follow leaf node {0,0}. Likewise, {0,2} follows {0,1} and so on.

Der Knoten an der Wurzel der Hierarchie kann als Digest-Knoten 402 beschrieben werden. Der Hash-Wert des Digest-Knotens 402 basiert auf den Hash-Werten aller anderen Knoten im Baum. In ähnlicher Weise kann der äußerste rechte Blattknoten als Blattknoten-Digest 412 beschrieben werden. Der Hash-Wert des Blattknoten-Digests 412 basiert auf den Hash-Werten aller vorhergehenden Blattknoten sowie dem Eintrags-Hash für seine zugehörigen Einträge. Sowohl der Digest-Knoten 402 als auch der Blattknoten-Digest 412 können verwendet werden, um die Integrität des Journals nachzuweisen. Obwohl ihre jeweiligen Werte unterschiedlich sein werden, umfassen der Digest-Knoten 402 und der Blattknoten-Digest 412 in mindestens einer Ausführungsform äquivalente Informationen bezüglich der Integrität der in dem Journal gespeicherten Einträge.The node at the root of the hierarchy can be described as digest node 402 . The hash value of digest node 402 is based on the hash values of all other nodes in the tree. Similarly, the rightmost leaf node can be described as leaf node digest 412 . The hash of the leaf node digest 412 is based on the hash of all previous leaf nodes and the entry hash for its associated entries. Both the digest node 402 and the leaf node digest 412 can be used to prove the integrity of the journal. Although their respective values will be different, in at least one embodiment, the digest node 402 and the leaf node digest 412 include equivalent information regarding the integrity of the entries stored in the journal.

In mindestens einer Ausführungsform werden die Blattknoten 406 verwendet, um einen Bereichsnachweis bereitzustellen. Der Bereichsnachweis bestätigt, dass ein bestimmter Satz von Datensätzen im Journal dargestellt ist. Zur Veranschaulichung wird eine Anfrage betrachtet, einen Bereichsnachweis für die Einträge bereitzustellen, die {0,7}, {0,8} und {0,9} entsprechen. Ein Bereichsnachweis für diese Knoten könnte eine Liste von Hash-Werten umfassen. In mindestens einer Ausführungsform umfasst der Nachweis beispielsweise die Hash-Werte bei {0,6} und {0,9}. Der Empfänger des Nachweises könnte dann bestätigen, dass: { 0,6 } E { 0,7 } = { 0,7 }

Figure DE112020002968T5_0005
{ 0,7 } E { 0,8 } = { 0,8 }
Figure DE112020002968T5_0006
{ 0,8 } E { 0,9 } = { 0,9 }
Figure DE112020002968T5_0007
In at least one embodiment, leaf nodes 406 are used to provide area verification. The area attestation confirms that a particular set of records is represented in the journal. For illustration, consider a request to provide a range proof for the entries corresponding to {0,7}, {0,8} and {0,9}. A proof of domain for these nodes could include a list of hash values. For example, in at least one embodiment, the evidence includes the hash values at {0,6} and {0,9}. The recipient of the evidence could then confirm that: { 0.6 } E { 0.7 } = { 0.7 }
Figure DE112020002968T5_0005
{ 0.7 } E { 0.8 } = { 0.8 }
Figure DE112020002968T5_0006
{ 0.8 } E { 0.9 } = { 0.9 }
Figure DE112020002968T5_0007

Es wird daher bestätigt, dass das Journal den Bereich von Einträgen beinhaltet, der {0,7}, {0,8} und {0,9} entspricht, indem gezeigt wird, dass der Hash-Wert von {0,9} basierend auf dem Starteintrag {0,6} und den Einträgen, die {0,7}, {0,8} und {0,9} entsprechen neu berechnet werden kann.It is therefore verified that the journal includes the range of entries corresponding to {0,7}, {0,8} and {0,9} by showing that the hash value is based on {0,9} can be recomputed on the starting entry {0,6} and the entries corresponding to {0,7}, {0,8} and {0,9}.

In mindestens einer Ausführungsform umfasst der Bereichsnachweis ferner zusätzliche Knoten, die zur Validierung eines oder beider Digests erforderlich sind. Das vorherige Beispiel fortsetzend könnte der Empfänger den Blattknoten-Digest 412 validieren, wenn der Nachweis den Hash von {0,9} und den Eintrags-Hash von {4,10} beinhaltet hat.In at least one embodiment, the range verification further includes additional nodes required to validate one or both digests. Continuing the previous example, the recipient could validate the leaf node digest 412 if the proof included the hash of {0,9} and the entry hash of {4,10}.

In ähnlicher Weise könnte der Empfänger in mindestens einer Ausführungsform den Digest-Knoten 402 validieren, wenn der Nachweis zusätzliche Hashes beinhaltet hat, die notwendig sind, um den Hash des Digest-Knotens neu zu berechnen. Der Nachweis könnte beispielsweise Hash-Werte von {2,0}, {1,2} und {1,5} beinhalten. Eine Reihe von Schritten zur Validierung des Nachweises kann dann vom Empfänger festgelegt werden: { 0,6 } { 0,7 } { 1,3 }

Figure DE112020002968T5_0008
{ 0,8 } { 0,9 } { 1,4 }
Figure DE112020002968T5_0009
{ 1,10 } N u l l { 1,5 }
Figure DE112020002968T5_0010
{ 1,2 } { 1,3 } { 2,1 }
Figure DE112020002968T5_0011
{ 1,4 } { 1,5 } { 2,2 }
Figure DE112020002968T5_0012
{ 2,2 } N u l l { 3,1 }
Figure DE112020002968T5_0013
{ 2,0 } { 2,1 } { 3,0 }
Figure DE112020002968T5_0014
{ 3,0 } { 3,1 } D i g e s t
Figure DE112020002968T5_0015
Similarly, in at least one embodiment, the recipient could validate the digest node 402 if the evidence included additional hashes necessary to recalculate the digest node's hash. For example, the evidence could include hash values of {2,0}, {1,2}, and {1,5}. A series of steps to validate the evidence can then be specified by the recipient: { 0.6 } { 0.7 } { 1.3 }
Figure DE112020002968T5_0008
{ 0.8 } { 0.9 } { 1.4 }
Figure DE112020002968T5_0009
{ 1.10 } N and l l { 1.5 }
Figure DE112020002968T5_0010
{ 1.2 } { 1.3 } { 2.1 }
Figure DE112020002968T5_0011
{ 1.4 } { 1.5 } { 2.2 }
Figure DE112020002968T5_0012
{ 2.2 } N and l l { 3.1 }
Figure DE112020002968T5_0013
{ 2.0 } { 2.1 } { 3.0 }
Figure DE112020002968T5_0014
{ 3.0 } { 3.1 } D i G e s t
Figure DE112020002968T5_0015

Zu beachten ist die Auswirkung der Behandlung unvollständiger Knoten durch den symmetrischen Hash-Operator, wie unter Bezug auf Beispiel 302 von 3 beschrieben. Daher gilt:{1,4} . {1,5} ⇒ {2,2} ⇒ {3,1}.Note the effect of the symmetric hash operator's handling of incomplete nodes, as described in reference to example 302 of 3 described. Hence:{1,4} . {1,5} ⇒ {2,2} ⇒ {3,1}.

5 veranschaulicht weitere Aspekte einer Journal-Struktur gemäß einer Ausführungsform. Insbesondere veranschaulicht 5 ein Beispiel 500, in dem ein Journal 502 ein verschachteltes Journal 506 umfasst, um Daten zu speichern, die einem Eintrag 504 entsprechen, der einem Knoten auf Blattebene des Journals 502 zugeordnet ist. 5 illustrates further aspects of a journal structure according to one embodiment. Specifically illustrated 5 an example 500 in which a journal 502 includes a nested journal 506 to store data corresponding to an entry 504 associated with a leaf-level node of the journal 502.

In Ausführungsformen kann ein Eintrag eines Journals eine beliebige einer Vielfalt von Datenstrukturen sein. Beispielsweise könnte in einer Ausführungsform ein Eintrag ein Array von Bytes sein, und ein anderer Eintrag in demselben Journal könnte ein verschachteltes Journal sein, wie etwa das verschachtelte Journal 506, das in 5 dargestellt ist.In embodiments, a journal entry may be any of a variety of data structures. For example, in one embodiment, an entry could be an array of bytes, and another entry in the same journal could be a nested journal, such as nested journal 506, which is found in 5 is shown.

In mindestens einer Ausführungsform entspricht der Eintrags-Hash für den Eintrag 504 im Journal 502 dem Digest-Knoten des verschachtelten Journals 506.In at least one embodiment, the entry hash for entry 504 in journal 502 corresponds to the digest node of nested journal 506.

In mindestens einer Ausführungsform erstreckt sich die in 5 dargestellte Verschachtelung über eine Vielzahl von Ebenen. Beispielsweise können einer oder mehrere der Einträge, die den Knoten auf Blattebene des verschachtelten Journals 506 zugeordnet sind, selbst durch zusätzliche verschachtelte Journale dargestellt werden.In at least one embodiment, the in 5 shown nesting over a variety of levels. For example, one or more of the entries associated with the leaf-level nodes of the nested journal 506 may themselves be represented by additional nested journals.

In mindestens einer Ausführungsform wird ein Nachweis eines Eintrags für einen Eintrag bereitgestellt, der in einem verschachtelten Journal gespeichert ist, wie etwa dem verschachtelten Journal 506 in 5. Ein Client, der den Nachweis verifiziert, muss jedoch in mindestens einer Ausführungsform nicht auf die verschachtelte Struktur aufmerksam gemacht werden. Zum Beispiel kann der Nachweis basierend auf der Verwendung des symmetrischen Hash-Operators, der in Bezug auf 3 beschrieben ist, eine Liste von Hash-Werten umfassen, auf die der symmetrische Hash-Operator aufeinanderfolgend angewendet werden kann.In at least one embodiment, evidence of an entry is provided for an entry stored in a nested journal, such as nested journal 506 in 5 . However, in at least one embodiment, a client verifying the evidence need not be made aware of the nested structure. For example, the proof can be based on the use of the symmetric hash operator related to 3 may comprise a list of hash values to which the symmetric hash operator can be sequentially applied.

6 veranschaulicht eine Journal-Redaktion gemäß einer Ausführungsform. Die Journal-Redaktion umfasst die Entfernung von Einträgen aus dem Journal. Im Beispiel von 6 umfasst ein Journal 600 Einträge 604, die aus dem Journal zu entfernen sind, und einen entsprechenden Eintrags-Hash 606. 6 12 illustrates a journal editorial board according to one embodiment. Journal editing includes removing entries from the journal. In the example of 6 a journal 600 comprises entries 604 to be removed from the journal and a corresponding entry hash 606.

In mindestens einer Ausführungsform werden die Einträge 604 aus dem Journal 600 entfernt, um ein redigiertes Journal 602 zu bilden. Die Einträge 604 befinden sich nicht mehr in dem redigierten Journal 602, sondern der entsprechende Eintrag 606 wird aufbewahrt. Durch Aufbewahren des Eintrags-Hash 606 können die anderen Hash-Werte in dem redigierten Journal konstant bleiben. Zum Beispiel müssen die Hash-Werte von {0,2}, {0,3}, {1,1} und {2,0} nach der Redaktion des Eintrags bei {0,2} nicht neu berechnet werden.In at least one embodiment, entries 604 are removed from journal 600 to form redacted journal 602 . The entries 604 are no longer in the edited journal 602, but the corresponding entry 606 is preserved. By preserving the entry hash 606, the other hash values in the edited journal can remain constant. For example, the hash values of {0,2}, {0,3}, {1,1} and {2,0} do not need to be recomputed after editing the entry at {0,2}.

In mindestens einer Ausführungsform umfasst ein Nachweis einen Eintrags-Hash und eine Anzeige, dass der Eintrags-Hash einem redigierten Eintrag entspricht.In at least one embodiment, an attestation includes an entry hash and an indication that the entry hash corresponds to a redacted entry.

In einer Ausführungsform wird ein in einem verschachtelten Journal gespeicherter Eintrag, wie etwa in dem verschachtelten Journal 506 in 5, redigiert. Ähnlich wie das durch 6 dargestellte Beispiel kann ein Eintrag in dem verschachtelten Journal 506 gelöscht, sein entsprechender Eintrag jedoch aufbewahrt werden. Da dieser Eintrags-Hash aufbewahrt wird, muss keiner der anderen Hash-Werte in dem verschachtelten Journal 506 neu berechnet werden. Ebenso werden die Blatt- und Wurzelknoten-Digests des Journals aufbewahrt. Wenn einer dieser beiden als der Hash-Wert für den entsprechenden Eintrag im übergeordneten Journal verwendet wird, kann auch er aufbewahrt werden.In one embodiment, an entry stored in a nested journal, such as nested journal 506 in 5 , edited. Similar to that through 6 In the example shown, an entry in the nested journal 506 may be deleted but its corresponding entry retained. Because this entry hash is preserved, none of the other hash values in the nested journal 506 need to be recomputed. Likewise, the leaf and root node digests of the journal are preserved. If either of these two is used as the hash value for the corresponding entry in the parent journal, it can also be kept.

7 veranschaulicht Aspekte der Durchführung eines Digest-Nachweises gemäß einer Ausführungsform. In dem dargestellten Beispiel 700 wird ein Digest-Nachweis bereitgestellt, um zu bestätigen, dass Datensätze, die durch eine frühere Version eines Digests abgedeckt sind, unverändert sind und durch eine neue Version abgedeckt sind. 7 10 illustrates aspects of performing a digest attestation according to one embodiment. In the illustrated example 700, a digest attestation is provided to confirm that records covered by a previous version of a digest are unchanged and are covered by a new version.

Wenn ein Digest bereitgestellt wird, kann er zur Bestätigung verwendet werden, dass die durch den Digest abgedeckten Datensätze seit der Erstellung des Digests unverändert sind. Wenn diese Version des Digests jedoch verworfen und eine neue Version des Digests bereitgestellt wird, kann die neue Version nicht zum Nachweis verwendet werden, dass die Datensätze in dem Zeitraum vor der Erstellung des neuen Digests nicht verändert wurden. Mit anderen Worten, die Garantie, die der alte Digest bereitstellt, wird nicht notwendigerweise auf den neuen Digest übertragen. Ein Digest-Nachweis kann jedoch zur Bestätigung verwendet werden, dass alle Datensätze, die durch den alten Digest abgedeckt sind, unverändert sind und durch die neue Version des Digests abgedeckt sind.If a digest is provided, it can be used to confirm that the records covered by the digest are unchanged since the digest was created. However, if that version of the digest is discarded and a new version of the digest is provided, the new version cannot be used to demonstrate that the records have not been modified in the period prior to the creation of the new digest. In other words, the guarantee provided by the old digest is not necessarily carried over to the new digest. However, a digest attestation can be used to confirm that all records covered by the old digest are unchanged and are covered by the new version of the digest.

Im Beispiel 700 von 7 sind die Knoten am äußersten rechten Rand des Journals 702 ausreichend zum Nachweis des Digests 706. Diese Knoten sind {0,3} und {1,1} sowie der Digest-Knoten selbst an Position {2,0}.In the example 700 from 7 the nodes at the rightmost edge of the journal 702 are sufficient to prove the digest 706. These nodes are {0,3} and {1,1} as well as the digest node itself at position {2,0}.

In dem aktualisierten Journal 704 sind die Knoten am äußersten rechten Rand des aktualisierten Journals 704 ausreichend zum Nachweis des Digests 708. Diese Knoten sind {0,5}, {1,2}, {2,1} und der aktualisierte Digest-Knoten bei {3,0}.In the updated journal 704, the rightmost nodes of the updated journal 704 are sufficient to prove the digest 708. These nodes are {0,5}, {1,2}, {2,1} and the updated digest node at {3.0}.

In mindestens einer Ausführungsform besteht der Digest-Nachweis aus Hash-Werten, die zeigen, dass die Hashes des ursprünglichen Nachweises durch die Hashes des neuen Nachweises aus {0,5}, {1,2}, {2,1} und {3,0} subsumiert werden. Der Digest-Nachweis kann beispielsweise aus Hash-Werten bestehen, die zeigen, dass die Hashes aus {0,3}, {1,1} und {2,0} durch die Hashes aus {0,5}, {1,2}, {2,1} und {3,0} subsumiert werden.In at least one embodiment, the digest token consists of hash values showing that the hashes of the original token are replaced by the hashes of the new token from {0,5}, {1,2}, {2,1} and {3 ,0} are subsumed. For example, the digest evidence may consist of hash values showing that the hashes from {0,3}, {1,1} and {2,0} are replaced by the hashes from {0,5}, {1,2 }, {2,1} and {3,0} are subsumed.

Zur weiteren Veranschaulichung könnte ein Digest-Nachweis in mindestens einer Ausführungsform wie folgt ablaufen: { 0,3 } E { 0,4 } { 0,4 }

Figure DE112020002968T5_0016
{ 0,4 } E { 0,5 } { 0,5 }
Figure DE112020002968T5_0017
{ 0,4 } E { 0,5 } { 1,2 }
Figure DE112020002968T5_0018
{ 1,2 } N u l l { 2,1 }
Figure DE112020002968T5_0019
{ 2,0 } { 2,1 } { 3,0 }
Figure DE112020002968T5_0020
To further illustrate, in at least one embodiment, a digest attestation could proceed as follows: { 0.3 } E { 0.4 } { 0.4 }
Figure DE112020002968T5_0016
{ 0.4 } E { 0.5 } { 0.5 }
Figure DE112020002968T5_0017
{ 0.4 } E { 0.5 } { 1.2 }
Figure DE112020002968T5_0018
{ 1.2 } N and l l { 2.1 }
Figure DE112020002968T5_0019
{ 2.0 } { 2.1 } { 3.0 }
Figure DE112020002968T5_0020

8 veranschaulicht Aspekte eines Nachweises gemäß einer Ausführungsform. Im Beispiel 800 von 8 entspricht das aktualisierte Journal 804 dem aktualisierten Journal 704, das in Bezug auf das Beispiel 700 von 7 beschrieben ist. Ferner wird in dem Beispiel 800 von 8 für Zwecke des Beispiels angenommen, dass eine Anfrage für einen Nachweis gestellt wurde, dass der Eintrag {0,2} sowohl unverändert als auch in dem aktualisierten Digest 808 beinhaltet ist. Zu beachten ist, dass der dem Knoten {0,2} entsprechende Eintrag auch im ursprünglichen Digest 806 beinhaltet war. Dementsprechend ist der Nachweis ausreichend, wenn der ursprüngliche Digest verifiziert wurde und nachgewiesen werden kann, dass der ursprüngliche Digest 806 durch den aktualisierten Digest 808 subsumiert wird. 8th illustrates aspects of verification according to one embodiment. In the example 800 from 8th the updated journal 804 corresponds to the updated journal 704 generated with respect to the example 700 of FIG 7 is described. Furthermore, in the example 800 of 8th assume for purposes of the example that a request has been made for proof that the entry {0,2} is both unchanged and included in the updated digest 808 . Note that the entry corresponding to node {0,2} was also included in the original digest 806. Accordingly, evidence is sufficient if the original digest has been verified and it can be demonstrated that the original digest 806 is subsumed by the updated digest 808 .

8 veranschaulicht einen solchen Nachweis 802, umfassend die Knoten {0,1}, {0,3}, {2,1} und den aktualisierten Digest bei {3,0}. Unter Verwendung dieser Knoten kann die Richtigkeit des ursprünglichen Digests 806 verifiziert werden, indem der Nachweis zusammen mit aufbewahrten Informationen, wie etwa einem Eintrags-Hash für den ursprünglichen Eintrag, verwendet wird, um den ursprünglichen Digest 806 und den aktualisierten Digest 808 neu zu berechnen. Dies bestätigt, dass der ursprüngliche Digest 806 durch den aktualisierten Digest 808 subsumiert wird. 8th illustrates one such attestation 802 comprising nodes {0,1}, {0,3}, {2,1} and the updated digest at {3,0}. Using these nodes, the correctness of the original digest 806 can be verified by using the evidence along with preserved information, such as an entry hash for the original entry, to recompute the original digest 806 and the updated digest 808 . This confirms that the original digest 806 is subsumed by the updated digest 808.

9 veranschaulicht einen beispielhaften Prozess der Verwendung eines symmetrischen Hash-Operators zum Bereitstellen von Journal-Nachweisen gemäß einer Ausführungsform. Obwohl das Beispiel 900 von 9 als eine Abfolge von Schritten dargestellt ist, sollte die dargestellte Abfolge nicht so ausgelegt werden, dass sie den Schutzumfang der vorliegenden Offenbarung nur auf solche Ausführungsformen beschränkt, die der dargestellten Reihenfolge entsprechen. Sofern nicht anders angegeben oder aus dem Kontext ersichtlich (z. B. wenn die Ausgabe eines Schritts als Eingabe für einen anderen verwendet wird), können mindestens einige der dargestellten Schritte neu geordnet oder parallel durchgeführt werden. 9 12 illustrates an example process of using a symmetric hash operator to provide journal evidence, according to one embodiment. Although the example 900 from 9 is presented as a sequence of steps, the presented sequence should not be construed as limiting the scope of the present disclosure to only those embodiments that conform to the presented order. Unless otherwise noted or apparent from the context (e.g., where the output of one step is used as input to another), at least some of the steps illustrated may be reordered or performed in parallel.

Aspekte des Beispiels 900 beinhalten die Verwendung eines symmetrischen Hash-Operators, wie etwa des in 3 dargestellten symmetrischen Hash-Operators.Aspects of Example 900 include the use of a symmetric hash operator, such as the in 3 illustrated symmetric hash operator.

Bei 902 empfängt ein joumalisiertes Datenbankverwaltungssystem Anfragen, Einträge in einem Journal zu speichern. Beispiele für das Hinzufügen von Einträgen zu einem Journal sind hier veranschaulicht, einschließlich beispielsweise in Bezug auf 2 und 7. Die Einträge können Informationen umfassen, die eine Datenbanktransaktion anzeigen, wie etwa eine Einfüge-, Aktualisierungs- oder Löschoperation, die an einem in einer Datensammlung gespeicherten Datenelement durchgeführt wird.At 902, a journaled database management system receives requests to journal entries. Examples of adding entries to a journal are illustrated here, including for example relating to 2 and 7 . The entries may include information indicative of a database transaction, such as an insert, update, or delete operation, performed on a data item stored in a data collection.

Bei 904 speichert das journalisierte Datenbankverwaltungssystem Blattknoten, um die Einträge darzustellen, und speichert ferner innere Knoten in einer hierarchischen Anordnung, wie in den in 2 und 4-7 dargestellten Anordnungen. Wie durch Schritt 906 dargestellt, werden Hashes für die Knoten unter Verwendung eines symmetrischen Hash-Operators berechnet.At 904, the journaled database management system stores leaf nodes to represent the entries and also stores interior nodes in a hierarchical arrangement as described in FIGS 2 and 4-7 arrangements shown. As represented by step 906, hashes are computed for the nodes using a symmetric hash operator.

Bei 908 erhält das journalisierte Datenbankverwaltungssystem von einer Client-Vorrichtung eine Anfrage, einen Nachweis bereitzustellen, dass die Einträge im Journal gespeichert wurden. Wie hier beschrieben, wird der Nachweis durch die Verwendung des symmetrischen Hash-Operators vereinfacht.At 908, the journaled database management system receives a request from a client device to provide evidence that the entries have been stored in the journal. As described here, using the symmetric hash operator simplifies the proof.

Bei 910 generiert das journalisierte Datenbankverwaltungssystem eine Liste von Hash-Werten, die für den Nachweis ausreichend sind. Die Liste der Hash-Werte wird dann der Client-Vorrichtung bereitgestellt, wobei bei 912 in mindestens einer Ausführungsform eine Client-Vorrichtung den Nachweis ohne Daten, die die Struktur der Hierarchie des Journals anzeigen, durch aufeinanderfolgendes Anwenden des symmetrischen Hash-Operators auf die bereitgestellte Liste von Hash-Werten bestätigen kann.At 910, the journaled database management system generates a list of hash values sufficient for verification. The list of hash values is then provided to the client device, wherein at 912, in at least one embodiment, a client device provides the attestation with no data indicative of the structure of the journal's hierarchy by sequentially applying the symmetric hash operator to the provided List of hash values can confirm.

Bei 914 bestätigt die Client-Vorrichtung den Nachweis basierend auf aufeinanderfolgende Anwendungen des symmetrischen Hash-Operators auf die Hash-Werte in der Liste, was zu einem Hash-Wert führt, der mit einem Hash-Wert verglichen werden kann, der durch den Client aufbewahrt wird, der den Nachweis verifiziert. Zum Beispiel kann der resultierende Hash-Wert mit einem durch den Client aufbewahrten Digest-Wert verglichen werden. Wenn sie gleich sind, ist der Nachweis verifiziert.At 914, the client device asserts the attestation based on successive applications of the symmetric hash operator to the hash values in the list, resulting in a hash value that can be compared to a hash value maintained by the client will verify the evidence. For example, the resulting hash value can be compared to a digest value maintained by the client. If they are the same, the evidence is verified.

Das Beispiel 900 kann durch jedes einer Vielzahl von geeigneten Systemen implementiert sein, einschließlich beispielsweise des Datenbankservers 1310, der in 13 dargestellt ist.Example 900 may be implemented by any of a variety of suitable systems, including, for example, database server 1310, which is 13 is shown.

In einer beispielhaften Ausführung implementiert ein joumalisiertes Datenbankverwaltungssystem ein Verfahren, das das Speichern eines Eintrags in einem Journal umfasst. Das Journal umfasst nach dem Speichern des Eintrags eine Hierarchie von Knoten. Nicht einschränkende Beispiele für eine Hierarchie von Knoten sind in Bezug auf 2 und 4-7 veranschaulicht. Wie beschrieben umfasst ein innerer Knoten der Hierarchie einen Hash-Wert, der durch Anwenden eines symmetrischen Hash-Operators berechnet wird, der auf einen ersten Operanden, der dem ersten Hash-Wert eines ersten untergeordneten Knotens entspricht, und einen zweiten Operanden, der einem zweiten Hash-Wert eines zweiten untergeordneten Knotens entspricht, angewendet wird. Das beispielhafte Verfahren umfasst ferner das Bereitstellen einer Liste von Hash-Werten, die ausreichend ist, um einen kryptografischen Nachweis dafür durchzuführen, dass der Eintrag in dem Journal gespeichert wurde.In an exemplary embodiment, a journalized database management system implements a method that includes storing a one trags in a journal. The journal includes a hierarchy of nodes after the entry is saved. Non-limiting examples of a hierarchy of nodes are with respect to 2 and 4-7 illustrated. As described, an interior node of the hierarchy includes a hash value that is computed by applying a symmetric hash operator to a first operand that corresponds to the first hash value of a first child node and a second operand that corresponds to a second hash value of a second child node is applied. The example method further includes providing a list of hash values sufficient to perform cryptographic proof that the entry was stored in the journal.

In einer weiteren Ausführungsform des beispielhaften Verfahrens ist die Liste der Hash-Werte ausreichend, wenn ein Digest-Wert durch eine weitere Anwendung des symmetrischen Hash-Operators auf Hash-Werte der Liste berechnet werden kann. Hier kann sich der Digest-Wert auf den Hash-Wert an der Wurzel der Hierarchie oder auf einen Hash-Wert am Ende eines Threads von Blattknoten beziehen.In another embodiment of the example method, the list of hash values is sufficient if a digest value can be computed by further applying the symmetric hash operator to hash values of the list. Here, the digest value can refer to the hash value at the root of the hierarchy or to a hash value at the end of a thread of leaf nodes.

In einer weiteren Ausführungsform des beispielhaften Verfahrens ist die Ausgabe des symmetrischen Hash-Operators, wenn er auf den ersten und zweiten Operanden angewendet wird, unabhängig von einer Reihenfolge des ersten und zweiten Operanden äquivalent.In another embodiment of the example method, the output of the symmetric hash operator when applied to the first and second operands is equivalent regardless of an order of the first and second operands.

In einer weiteren Ausführungsform des beispielhaften Verfahrens basiert die Ausgabe des symmetrischen Hash-Operators mindestens teilweise auf einer Sortierung und Verkettung des ersten und zweiten Operanden.In another embodiment of the example method, the output of the symmetric hash operator is based at least in part on a sorting and concatenation of the first and second operands.

In einer weiteren Ausführungsform des beispielhaften Verfahrens berechnet der symmetrische Hash-Operator seinen Ausgabe-Hash-Wert aus der Verkettung des ersten und zweiten Operanden.In another embodiment of the example method, the symmetric hash operator calculates its output hash value from the concatenation of the first and second operands.

In einer weiteren Ausführungsform des beispielhaften Verfahrens entspricht die Ausgabe des symmetrischen Hash-Operators dem ersten Operanden, wenn der zweite Operand Null ist. Somit wird ein Aufruf des symmetrischen Hash-Operators mit einem Hash-Wert von X und einem Null-Wert unabhängig von der Reihenfolge der Operanden dazu führen, dass der symmetrische Hash-Operator einen Wert von X zurückgibt.In another embodiment of the example method, if the second operand is zero, the output of the symmetric hash operator is equal to the first operand. Thus, calling the symmetric hash operator with a hash value of X and a null value will result in the symmetric hash operator returning a value of X, regardless of the order of the operands.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst die Hierarchie von Knoten einen Blattknoten. Der Blattknoten umfasst einen Verweis auf den Eintrag und umfasst ferner einen Hash-Wert, der auf der Anwendung des symmetrischen Hash-Operators auf einen Eintrags-Hash und einen Hash-Wert eines zweiten Blattknotens basiert.In another embodiment of the example method, the hierarchy of nodes includes a leaf node. The leaf node includes a reference to the entry and further includes a hash value based on applying the symmetric hash operator to an entry hash and a hash value of a second leaf node.

10 veranschaulicht einen beispielhaften Prozess der Verwendung von gethreadeten Blattknoten zum Bereitstellen von Journal-Nachweisen gemäß einer Ausführungsform. Obwohl das Beispiel 1000 von 10 als eine Abfolge von Schritten dargestellt ist, sollte die dargestellte Abfolge nicht so ausgelegt werden, dass sie den Schutzumfang der vorliegenden Offenbarung nur auf solche Ausführungsformen beschränkt, die der dargestellten Reihenfolge entsprechen. Sofern nicht anders angegeben oder aus dem Kontext ersichtlich (z. B. wenn die Ausgabe eines Schritts als Eingabe für einen anderen verwendet wird), können mindestens einige der dargestellten Schritte neu geordnet oder parallel durchgeführt werden. 10 12 illustrates an exemplary process of using threaded leaf nodes to provide journal evidence, according to one embodiment. Although the example 1000 of 10 is presented as a sequence of steps, the presented sequence should not be construed as limiting the scope of the present disclosure to only those embodiments that conform to the presented order. Unless otherwise noted or apparent from the context (e.g., where the output of one step is used as input to another), at least some of the steps illustrated may be reordered or performed in parallel.

Bei 1002 erhält ein journalisiertes Datenbankverwaltungssystem Anfragen, einen Eintrag in einem Journal zu speichern. Beispiele für das Hinzufügen von Einträgen zu einem Journal sind hier veranschaulicht, einschließlich beispielsweise in Bezug auf 2 und 7. Die Einträge können Informationen umfassen, die eine Datenbanktransaktion anzeigen, wie etwa eine Einfüge-, Aktualisierungs- oder Löschoperation, die an einem in einer Datensammlung gespeicherten Datenelement durchgeführt wird.At 1002, a journaled database management system receives requests to store an entry in a journal. Examples of adding entries to a journal are illustrated here, including for example relating to 2 and 7 . The entries may include information indicative of a database transaction, such as an insert, update, or delete operation, performed on a data item stored in a data collection.

Im Beispiel 1000 werden Einträge in einem Journal gespeichert, das eine Struktur mit gethreadeten Blattknoten umfasst. Somit werden bei 1004 ein oder mehrere Datensätze gespeichert, die den Eintrag anzeigen. Bei 1006 wird ein Eintrags-Hash berechnet. Der Eintrags-Hash dient als kryptografische Signatur des Eintrags und kann ohne Zugriff auf den Eintrag nicht ohne Weiteres reproduziert werden. Bei 1008 wird ein gethreadeter Hash-Wert berechnet. Der gethreadete Hash-Wert wird basierend auf dem Eintrags-Hash und dem Hash-Wert des vorherigen Blattknotens berechnet. Dies führt zu einer geordneten Vielzahl von Blattknoten, wie etwa die in 4 dargestellte Vielzahl. Die Blattknoten werden basierend auf der Verwendung des Hash-Werts des vorherigen Blattknotens bei der Berechnung des gethreadeten Hash-Werts des nachfolgenden Blattknotens aneinander gethreadet.In example 1000, entries are stored in a journal comprising a tree with threaded leaf nodes. Thus, at 1004, one or more records are saved indicative of the entry. At 1006, an entry hash is calculated. The entry hash serves as the entry's cryptographic signature and cannot be easily reproduced without access to the entry. At 1008, a threaded hash value is computed. The threaded hash value is calculated based on the entry hash and the hash value of the previous leaf node. This leads to an ordered set of leaf nodes, such as those in 4 variety shown. The leaf nodes are threaded to each other based on using the previous leaf node's hash value in calculating the subsequent leaf node's threaded hash value.

Bei 1010 wird der Blattknoten gespeichert. Der gespeicherte Blattknoten umfasst den gerade beschriebenen gethreadeten Hash-Wert und kann auch eine Kopie des Eintrags-Hash und einen Verweis auf den Eintrag selbst beinhalten.At 1010, the leaf node is saved. The stored leaf node includes the threaded hash value just described, and may also include a copy of the entry hash and a reference to the entry itself.

Bei 1012 erhält das journalisierte Datenbankverwaltungssystem eine Anfrage nachzuweisen, dass der Eintrag im Journal gespeichert wurde. Zu beachten ist, dass die Anfrage Teil eines Bereichsnachweises sein kann, der sich auf die Validierung einer Vielzahl von Einträgen bezieht. Hierarchische Knotenstrukturen können für solche Nachweise weniger geeignet sein als die in Bezug auf 10 beschriebene gethreadete Struktur.At 1012, the journaled database management system receives a request to prove that the entry was saved in the journal. It should be noted that the request may be part of a domain attestation related to the validation of a large number of entries. Hierarchical node structures may be less suitable for such proofs than those related to 10 described threaded structure.

Bei 1014 liefert das journalisierte Datenbankverwaltungssystem den Nachweis. In mindestens einer Ausführungsform umfasst der Nachweis eine Liste von Hashes aus den gethreadeten Blattknoten. Durch aufeinanderfolgende Anwendungen eines symmetrischen Hash-Operators auf die Hashes der Liste kann diese auf einen einzelnen Hash-Wert reduziert werden, der mit einem entsprechenden durch den Client aufbewahrten Wert verglichen werden kann. Beispielsweise kann der aus der Liste berechnete Hash-Wert mit einem durch den Client aufbewahrten Digest-Wert verglichen werden.At 1014, the journaled database management system provides evidence. In at least one embodiment, the attestation includes a list of hashes from the threaded leaf nodes. By successively applying a symmetric hash operator to the hashes of the list, it can be reduced to a single hash value that can be compared to a corresponding value held by the client. For example, the hash value calculated from the list can be compared to a digest value kept by the client.

Das Beispiel 1000 kann durch jedes einer Vielzahl von geeigneten Systemen implementiert sein, einschließlich beispielsweise des Datenbankservers 1310, der in 13 dargestellt ist.Example 1000 may be implemented by any of a variety of suitable systems, including, for example, database server 1310, which is 13 is shown.

In einer beispielhaften Ausführung implementiert ein journalisiertes Datenbankverwaltungssystem ein Verfahren, das das Speichern eines Eintrags in einem Journal umfasst. Das Journal beinhaltet eine Hierarchie von inneren Knoten und eine Vielzahl von Blattknoten. Beispiele für diese Struktur sind durch 2 und 4-7 veranschaulicht. Die Blattknoten sind so geordnet, dass ein vorgegebener Blattknoten einen gethreadeten Hash-Wert umfasst, der mindestens teilweise auf dem Eintrags-Hash und dem gethreadeten Hash-Wert des vorherigen Blattknotens basiert.In an example embodiment, a journaled database management system implements a method that includes storing an entry in a journal. The journal includes a hierarchy of interior nodes and multiple leaf nodes. Examples of this structure are through 2 and 4-7 illustrated. The leaf nodes are ordered such that a given leaf node includes a threaded hash value based at least in part on the entry hash and the threaded hash value of the previous leaf node.

Basierend auf dieser Struktur stellt das journalisierte Datenbankverwaltungssystem gemäß dem beispielhaften Verfahren einen Satz von Hash-Werten aus den Blattknoten bereit, wobei der Satz von Hash-Werten ausreichend ist, um nachzuweisen, dass der Eintrag im Journal gespeichert wurde.Based on this structure, according to the example method, the journaled database management system provides a set of hash values from the leaf nodes, the set of hash values being sufficient to prove that the entry was stored in the journal.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst das beispielhafte Verfahren das Bereitstellen der Liste von Hash-Werten als Reaktion auf eine Anfrage nachzuweisen, dass der Eintrag in dem Journal gespeichert wurde.In another embodiment of the example method, the example method includes providing the list of hash values in response to a request to prove that the entry was stored in the journal.

In einer weiteren Ausführungsform des beispielhaften Verfahrens zeigt der Eintrag eine Datenbanktransaktion an.In another embodiment of the example method, the entry indicates a database transaction.

In einer weiteren Ausführungsform des beispielhaften Verfahrens wird die Liste der Hash-Werte einem Client zur Verfügung gestellt, um nachzuweisen, dass der Eintrag und eine Vielzahl von zusätzlichen Einträgen in dem Journal gespeichert wurden.In another embodiment of the example method, the list of hash values is provided to a client to prove that the entry and a plurality of additional entries were stored in the journal.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst das beispielhafte Verfahren das Berechnen eines Hash-Werts für einen inneren Knoten mindestens teilweise basierend auf dem ersten und zweiten Blattknoten, wobei der erste und der zweite Blattknoten untergeordnete Elemente des inneren Knotens sind.In another embodiment of the example method, the example method includes calculating a hash value for an interior node based at least in part on the first and second leaf nodes, the first and second leaf nodes being children of the interior node.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst das beispielhafte Verfahren das Berechnen des Hash-Werts des zweiten Blattknotens mindestens teilweise basierend auf einem symmetrischen Hash-Operator.In another embodiment of the example method, the example method includes calculating the hash value of the second leaf node based at least in part on a symmetric hash operator.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst die Liste der Hash-Werte einen Hash-Wert für einen Blattknoten vor dem ersten und zweiten Blattknoten.In another embodiment of the example method, the list of hash values includes a hash value for a leaf node before the first and second leaf nodes.

In einer weiteren Ausführungsform des beispielhaften Verfahrens ist die Liste der Hash-Werte ausreichend, wenn ein Digest-Wert durch eine weitere Anwendung eines symmetrischen Hash-Operators auf Hash-Werte der Liste berechnet werden kann.In another embodiment of the example method, the list of hash values is sufficient if a digest value can be computed by further applying a symmetric hash operator to hash values of the list.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst die Vielzahl der Blattknoten einen Digest-Blattknoten, wobei der Digest-Blattknoten einen Hash-Wert umfasst, der mindestens teilweise auf Hash-Werten des ersten und zweiten Blattknotens basiert.In another embodiment of the example method, the plurality of leaf nodes includes a digest leaf node, the digest leaf node including a hash value based at least in part on hash values of the first and second leaf nodes.

11 veranschaulicht einen beispielhaften Prozess zum Durchführen eines Digest-Nachweises gemäß einer Ausführungsform. Obwohl das Beispiel 1100 von 11 als eine Abfolge von Schritten dargestellt ist, sollte die dargestellte Abfolge nicht so ausgelegt werden, dass sie den Schutzumfang der vorliegenden Offenbarung nur auf solche Ausführungsformen beschränkt, die der dargestellten Reihenfolge entsprechen. Sofern nicht anders angegeben oder aus dem Kontext ersichtlich (z. B. wenn die Ausgabe eines Schritts als Eingabe für einen anderen verwendet wird), können mindestens einige der dargestellten Schritte neu geordnet oder parallel durchgeführt werden. 11 12 illustrates an example process for performing digest attestation, according to one embodiment. Although the example 1100 from 11 is presented as a sequence of steps, the presented sequence should not be construed as limiting the scope of the present disclosure to only those embodiments that conform to the presented order. Unless otherwise noted or apparent from the context (e.g., where the output of one step is used as input to another), at least some of the steps illustrated may be reordered or performed in parallel.

Bei 1102 speichert ein journalisiertes Datenbankverwaltungssystem einen ersten Eintrag in einem Journal. Ein Eintrag, für den Beispiele in 7 dargestellt sind, kann Informationen umfassen, die eine Datenbanktransaktion anzeigen. Beispielsweise kann ein Eintrag Informationen umfassen, die eine Einfügung, Aktualisierung oder Löschung eines in einer Datensammlung gespeicherten Datenelements anzeigen.At 1102, a journaled database management system stores a first entry in a journal. An entry for which examples are in 7 may include information indicative of a database transaction. For example, an entry may include information indicating an insertion, update, or deletion of a data item stored in a data collection.

Bei 1104 speichert das journalisierte Datenbankverwaltungssystem einen Blattknoten im Journal und berechnet Hashes für die inneren Knoten am Rand der Hierarchie. Unter Bezugnahme auf 7 kann das System zum Beispiel einen neuen Blattknoten an Position {0,3} hinzufügen und Knoten entlang des Randes der Hierarchie innerer Knoten aktualisieren. Zum Beispiel könnten die Knoten bei {0,3}, {1,2} und {2,0} berechnet werden. Zu beachten ist, dass sich hier der „Rand“ der Hierarchie auf Knoten bezieht, die mindestens einen Nicht-Null-Wert darstellen.At 1104, the journaled database management system journals a leaf node and computes hashes for the interior nodes at the edge of the hierarchy. With reference to 7 For example, the system can add a new leaf node at position {0,3} and update nodes along the edge of the interior node hierarchy. For example, the nodes at {0,3}, {1,2} and {2,0} could be computed. Note that here the "edge" of the hierarchy refers to nodes that represent at least one non-zero value.

Bei 1106 stellt das journalisierte Datenbankverwaltungssystem einen ersten Digest bereit. Der erste Digest kann von einem Client aufbewahrt und anschließend verwendet werden, um zu bestätigen, dass eine Version des Journals, die dem ersten Digest entspricht, eine unveränderte Version des ersten Eintrags enthält.At 1106, the journaled database management system provides a first digest. The first digest can be retained by a client and then used to confirm that a version of the journal corresponding to the first digest contains an unmodified version of the first entry.

Bei 1108 fügt das journalisiertes Datenbankverwaltungssystem dem Journal zusätzliche Einträge hinzu. Wie in 7 dargestellt, werden der Hierarchie zusätzliche Blattknoten und innere Knoten hinzugefügt, einschließlich des Digests des Journals. Zum Beispiel können die Knoten bei {0,5}, {1,2}, {2,1} und {3,0} aktualisiert werden. Das System kann dann einen Digest bereitstellen, der die aktuelle Version des Journals abdeckt.At 1108, the journaled database management system adds additional entries to the journal. As in 7 shown, additional leaf nodes and inner nodes are added to the hierarchy, including the journal's digest. For example, the nodes at {0,5}, {1,2}, {2,1} and {3,0} can be updated. The system can then provide a digest covering the current version of the journal.

Bei 1110 erhält das journalisierte Datenbankverwaltungssystem eine Anfrage, einen Nachweis bereitzustellen, dass der erste Eintrag unverändert und in der aktuellen Version des Journals gespeichert ist. Zu beachten ist, dass das Bereitstellen des Digests der aktuellen Version des Journals allein möglicherweise nicht ausreicht, um nachzuweisen, dass der Eintrag seit seiner ursprünglichen Hinzufügung nicht verändert wurde. Der Nachweis beinhaltet vielmehr das Zeigen, dass die frühere Version des Digests den betreffenden Eintrag abdeckt und in der neuen Version subsumiert ist.At 1110, the journaled database management system receives a request to provide evidence that the first entry is unchanged and stored in the current version of the journal. It should be noted that providing the digest of the current version of the journal alone may not be sufficient to demonstrate that the entry has not been modified since it was originally added. Rather, the proof involves showing that the previous version of the digest covers the entry in question and is subsumed in the new version.

Bei 1112 liefert das journalisierte Datenbankverwaltungssystem den angefragten Nachweis. In mindestens einer Ausführungsform umfasst der Nachweis eine Liste von Hash-Werten, die ausreichend sind, um zu zeigen, dass die frühere Version des Digests durch die neue Version subsumiert wird. In mindestens einer Ausführungsform umfassen die Hash-Werte diejenigen, die benötigt werden, um den Digest der neuen Version des Journals zu berechnen, wobei ein oder mehrere aufbewahrte Hashes in Kombination mit der bereitgestellten Liste verwendet werden.At 1112, the journaled database management system provides the requested evidence. In at least one embodiment, the evidence includes a list of hash values sufficient to show that the previous version of the digest is subsumed by the new version. In at least one embodiment, the hash values include those needed to compute the digest of the new version of the journal using one or more preserved hashes in combination with the list provided.

Zu beachten ist, dass das Threaden der Blattknoten zur Operation des Nachweises beiträgt. Die neueren Blattknoten, d. h. diejenigen, die nach dem ersten Eintrag hinzugefügt wurden, basieren mindestens teilweise auf einem Eintrags-Hash des ersten Knotens. Folglich kann eine Rekonstruktion des Digests, der die neue Version abdeckt, nachweisen, dass der erste Eintrag unverändert ist, wenn die Rekonstruktion des Digests die Verwendung eines Blattknotens beinhaltet, der mindestens teilweise auf dem ersten Eintrag basierte.Note that threading the leaf nodes contributes to the operation of the attestation. The newer leaf nodes, i. H. those added after the first entry are based at least in part on an entry hash of the first node. Consequently, reconstruction of the digest covering the new version can prove that the first entry is unchanged if the reconstruction of the digest involves the use of a leaf node that was based at least in part on the first entry.

Das Beispiel 1100 kann durch jedes einer Vielzahl von geeigneten Systemen implementiert sein, einschließlich beispielsweise des Datenbankservers 1310, der in 13 dargestellt ist.Example 1100 may be implemented by any of a variety of suitable systems, including, for example, database server 1310 described in 13 is shown.

In einer beispielhaften Ausführung implementiert ein journalisiertes Datenbankverwaltungssystem ein Verfahren, das das Speichern eines Eintrags in einer ersten Version des Journals umfasst. Die erste Version des Journals umfasst nach dem Speichern des Eintrags eine Vielzahl von Blattknoten. Die Blattknoten können einzeln einen Hash-Wert umfassen, der durch Anwenden eines symmetrischen Hash-Operators auf einen ersten Operanden, der dem Hash-Wert eines vorherigen Blattknotens entspricht, und einen zweiten Operanden, der einem Eintrags-Hash entspricht, der basierend auf dem Eintrag oder den Einträgen berechnet wird, die dem Blattknoten entsprechen, berechnet wird. Das Journal kann nach dem Speichern des Eintrags ferner eine Hierarchie von inneren Knoten umfassen. Ein innerer Knoten der Hierarchie innerer Knoten kann einen Hash-Wert umfassen, der mindestens teilweise auf der Anwendung des symmetrischen Hash-Operators auf ein oder mehrere untergeordnete Elemente des inneren Knotens basiert.In an example embodiment, a journaled database management system implements a method that includes storing an entry in a first version of the journal. The first version of the journal includes a large number of leaf nodes after the entry is saved. The leaf nodes may individually include a hash value obtained by applying a symmetric hash operator to a first operand corresponding to a previous leaf node's hash value and a second operand corresponding to an entry hash obtained based on the entry or the entries corresponding to the leaf node is calculated. The journal may further include a hierarchy of interior nodes after the entry is stored. An interior node of the interior node hierarchy may include a hash value based at least in part on application of the symmetric hash operator to one or more children of the interior node.

Das beispielhafte Verfahren umfasst ferner das Bereitstellen eines ersten Digests der ersten Version des Journals und anschließend, nach dem Hinzufügen neuer Einträge, das Bereitstellen eines zweiten Digests einer zweiten Version des Journals.The example method further includes providing a first digest of the first version of the journal and then, after adding new entries, providing a second digest of a second version of the journal.

Das beispielhafte Verfahren umfasst ferner das Bereitstellen von Hash-Werten, die ausreichend sind, um nachzuweisen, dass der zweite Digest mindestens teilweise auf Informationen basiert, die im ersten Digest beinhaltet sind, und dass der Eintrag unverändert und in der zweiten Version des Journals gespeichert ist. Die im ersten Digest beinhalteten Informationen beziehen sich darauf, dass der erste Digest teilweise auf einem anderen Hash basiert. Das Verifizieren, dass der zweite Digest Informationen beinhaltet, die im ersten Digest beinhaltet sind, kann daher das Bestimmen umfassen, dass ein Hash, der zur Berechnung des ersten Digests verwendet wurde, auch zur Berechnung des zweiten Digests verwendet wurde.The example method further includes providing hash values sufficient to demonstrate that the second digest is based at least in part on information contained in the first digest and that the entry is unmodified and stored in the second version of the journal . The information contained in the first digest relates to the fact that the first digest is partially based on a different hash. Therefore, verifying that the second digest includes information included in the first digest may include determining that a hash used to compute the first digest was also used to compute the second digest.

In einer weiteren Ausführungsform des beispielhaften Verfahrens sind die Hash-Werte ausreichend, wenn sie zusammen mit einem aufbewahrten Hash-Wert, der mindestens teilweise auf dem Eintrag basierte, zur Berechnung des zweiten Digests verwendet werden können. In diesem Kontext bezieht sich „aufbewahrt“ auf einen Client oder einen anderen Akteur, der eine Kopie des Werts zur späteren Verwendung behält.In another embodiment of the exemplary method, the hash values are sufficient appropriate if they can be used to compute the second digest along with a preserved hash value based at least in part on the entry. In this context, "preserved" refers to a client or other actor that keeps a copy of the value for later use.

In einer weiteren Ausführungsform des beispielhaften Verfahrens entspricht der aufbewahrte Hash-Wert einem Blattknoten des Journals. Beispielsweise kann eine Client-Vorrichtung einen Eintrags-Hash aufbewahren und unter Verwendung des bereitgestellten Nachweises bestätigen, dass der Eintrags-Hash in den Satz von Hashes aufgenommen wurde, aus denen der Nachweis besteht.In another embodiment of the example method, the preserved hash value corresponds to a leaf node of the journal. For example, a client device may maintain an entry hash and, using the provided attestation, confirm that the entry hash was included in the set of hashes that make up the attestation.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst der Nachweis, dass der zweite Digest mindestens teilweise auf dem ersten Digest basiert, die aufeinanderfolgende Anwendung eines symmetrischen Hash-Operators auf die Liste der Hash-Werte.In another embodiment of the example method, proving that the second digest is based at least in part on the first digest includes sequentially applying a symmetric hash operator to the list of hash values.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst ein Nachweis, dass der eine oder die mehreren Einträge unverändert sind, das Bestimmen, dass ein Blattknoten des Journals mindestens teilweise auf einem Hash-Wert basiert, der mindestens teilweise auf dem einen oder den mehreren Einträgen basierend berechnet wurde.In another embodiment of the example method, proving that the one or more entries are unchanged includes determining that a leaf node of the journal is based at least in part on a hash value calculated based at least in part on the one or more entries became.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst der zweite Digest einen oder mehrere neu berechnete Knoten, die in der ersten Version des Journals Grenzknoten waren, und wobei Nicht-Grenzknoten der ersten Version des Journals bei der Bildung der zweiten Version des Journals nicht neu berechnet wurden.In another embodiment of the exemplary method, the second digest includes one or more recalculated nodes that were border nodes in the first version of the journal and non-border nodes of the first version of the journal were not recalculated in the formation of the second version of the journal .

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst das Verfahren ferner das Empfangen einer Anfrage zum Bereitstellen von Informationen zum Nachweis, dass der Eintrag unverändert ist und in der zweiten Version des Journals gespeichert ist, wobei die Anfrage mindestens eine von Informationen, die einen Ort des Eintrags anzeigen, oder Informationen, die die erste Version des Journals anzeigen, umfasst.In another embodiment of the example method, the method further comprises receiving a request to provide information proving that the entry is unmodified and stored in the second version of the journal, the request including at least one of information identifying a location of the entry display, or information displaying the first version of the journal.

12 veranschaulicht einen beispielhaften Prozess einer Journal-Redaktion gemäß einer Ausführungsform. Obwohl das Beispiel 1200 von 12 als eine Abfolge von Schritten dargestellt ist, sollte die dargestellte Abfolge nicht so ausgelegt werden, dass sie den Schutzumfang der vorliegenden Offenbarung nur auf solche Ausführungsformen beschränkt, die der dargestellten Reihenfolge entsprechen. Sofern nicht anders angegeben oder aus dem Kontext ersichtlich (z. B. wenn die Ausgabe eines Schritts als Eingabe für einen anderen verwendet wird), können mindestens einige der dargestellten Schritte neu geordnet oder parallel durchgeführt werden. 12 12 illustrates an exemplary process of journal editing, according to one embodiment. Although the example 1200 from 12 is presented as a sequence of steps, the presented sequence should not be construed as limiting the scope of the present disclosure to only those embodiments that conform to the presented order. Unless otherwise noted or apparent from the context (e.g., where the output of one step is used as input to another), at least some of the steps illustrated may be reordered or performed in parallel.

Bei 1202 empfängt ein journalisiertes Datenbankverwaltungssystem Anfragen, Einträge in einem Journal zu speichern. Bei 1204 werden die Einträge gespeichert, und bei 1206 werden Blattknoten zur Journal-Struktur hinzugefügt. Die Blattknoten beinhalten jeweils einen Verweis auf den Eintrag und einen Verweis auf den Eintrags-Hash oder eine Kopie davon.At 1202, a journaled database management system receives requests to store entries in a journal. At 1204 the entries are saved and at 1206 leaf nodes are added to the journal structure. The leaf nodes each contain a reference to the entry and a reference to the entry hash or a copy thereof.

Bei 1208 erhält das journalisierte Datenbankverwaltungssystem eine Anfrage, einen der Einträge aus dem Journal zu entfernen. Dies kann als Redigieren des Eintrags beschrieben werden.At 1208, the journaled database management system receives a request to remove one of the entries from the journal. This can be described as editing the entry.

Bei 1210 löscht das journalisierte Datenbankverwaltungssystem den Eintrag und entfernt den Verweis auf den Eintrag aus dem entsprechenden Blattknoten. Das journalisierte Datenbankverwaltungssystem pflegt jedoch den Verweis auf den Eintrags-Hash oder die Kopie davon, der basierend auf dem gelöschten Eintrag berechnet wurde. Das System pflegt ferner alle Hashes, die basierend auf diesem Eintrags-Hash berechnet wurden. Mit anderen Worten, das System vermeidet eine Neuberechnung von Hashes, die von dem aufbewahrten Eintrags-Hash abhängig sein könnten, indem es den Eintrags-Hash für die gelöschten Einträge aufbewahrt.At 1210, the journaled database management system deletes the entry and removes the reference to the entry from the corresponding leaf node. However, the journaled database management system maintains the reference to the entry hash, or copy thereof, computed based on the deleted entry. The system also maintains any hashes calculated based on this entry hash. In other words, the system avoids recalculating hashes that might depend on the preserved entry hash by preserving the entry hash for the deleted entries.

Bei 1212 erhält das journalisierte Datenbankverwaltungssystem eine Anfrage nachzuweisen, dass ein anderer der hinzugefügten Einträge im Journal gespeichert wurde. Das System reagiert auf die Anfrage, indem es bei 1214 eine Liste von Werten bereitstellt, die für den Nachweis ausreichen. In Fällen und Ausführungsformen beinhaltet diese Liste einen oder mehrere der aufbewahrten Hashes - entweder den aufbewahrten Eintrags-Hash oder einen Hash-Wert, der direkt oder indirekt aus dem aufbewahrten Eintrags-Hash berechnet wurde.At 1212, the journaled database management system receives a request to verify that another of the added entries was journaled. The system responds to the request by providing at 1214 a list of values sufficient for verification. In cases and embodiments, this list includes one or more of the preserved hashes - either the preserved entry hash or a hash value calculated directly or indirectly from the preserved entry hash.

Das Beispiel 1200 kann durch jedes einer Vielzahl von geeigneten Systemen implementiert sein, einschließlich beispielsweise des Datenbankservers 1310, der in 13 dargestellt ist.Example 1200 may be implemented by any of a variety of suitable systems, including, for example, database server 1310 described in 13 is shown.

In einer beispielhaften Ausführung implementiert ein journalisiertes Datenbankverwaltungssystem ein Verfahren, das das Speichern eines ersten Eintrags und eines zweiten Eintrags in einem Journal umfasst. Nach Speichern des ersten Eintrags und des zweiten Eintrags umfasst das Journal eine Vielzahl von Blattknoten. Jeder der Blattknoten umfasst einen Verweis auf einen entsprechenden Eintrag und einen Hash-Wert, der mindestens teilweise auf dem entsprechenden Eintrag basiert. Das beispielhafte Verfahren umfasst ferner das Empfangen einer Anfrage zum Löschen des ersten Eintrags aus dem Journal und das Antworten auf die Anfrage durch Entfernen des Verweises auf den ersten Eintrag aus dem Blattknoten. Der Hash-Wert wird jedoch nach dem Entfernen des Verweises aufbewahrt. Das beispielhafte Verfahren umfasst ferner das Bereitstellen einer Liste von Hash-Werten, die ausreichend ist, um nachzuweisen, dass der zweite Eintrag in dem Journal gespeichert ist. Diese Hash-Werte beinhalten in Fällen und Ausführungsformen Hash-Werte, die nach dem Löschen aufbewahrt wurden.In an exemplary embodiment, a journaled database management system implements a method that includes storing a first entry and a second entry in a journal. After storing the first entry and the second entry, the journal includes a plurality of leaf nodes. Each of the leaf nodes includes a reference to a corresponding entry and a hash value that includes at least wisely based on the corresponding entry. The example method further includes receiving a request to delete the first entry from the journal and responding to the request by removing the reference to the first entry from the leaf node. However, the hash value is retained after the reference is removed. The example method further includes providing a list of hash values sufficient to prove that the second entry is stored in the journal. These hashes, in instances and embodiments, include hashes preserved after deletion.

In einer weiteren Ausführungsform des beispielhaften Verfahrens ist die Liste der Hash-Werte ausreichend, wenn ein Digest des Journals durch eine weitere Anwendung eines symmetrischen Hash-Operators auf Hash-Werte der Liste von Hash-Werten berechnet werden kann.In another embodiment of the example method, the list of hash values is sufficient if a digest of the journal can be computed by further applying a symmetric hash operator to hash values of the list of hash values.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst das beispielhafte Verfahren ferner, als Reaktion auf die Anfrage, das Bereitstellen einer Anzeige, dass der erste Eintrag aus dem Journal gelöscht wurde.In another embodiment of the example method, the example method further comprises, in response to the request, providing an indication that the first entry has been deleted from the journal.

In einer weiteren Ausführungsform des beispielhaften Verfahrens basiert der Hash-Wert des Blattknotens mindestens teilweise auf einem Hash-Wert eines anderen Blattknotens der Vielzahl von Blattknoten.In another embodiment of the example method, the hash value of the leaf node is based at least in part on a hash value of another leaf node of the plurality of leaf nodes.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst das beispielhafte Verfahren ferner das Bereitstellen einer zusätzlichen Liste von Hash-Werten, die ausreicht, um nachzuweisen, dass der erste Eintrag in dem Journal gespeichert wurde.In another embodiment of the example method, the example method further comprises providing an additional list of hash values sufficient to prove that the first entry was stored in the journal.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst die Liste der Hash-Werte einen oder mehrere der aufbewahrten Hash-Werte oder einen basierend auf dem aufbewahrten Hash-Wert berechneten Hash-Wert.In another embodiment of the example method, the list of hash values includes one or more of the preserved hash values or a hash value calculated based on the preserved hash value.

In einer weiteren Ausführungsform des beispielhaften Verfahrens umfasst das Journal einen Digest-Hash-Wert, der mindestens teilweise auf Hash-Werten der Vielzahl von Blattknoten basiert. Der Digest-Hash-Wert wird als Reaktion auf das Löschen des Eintrags nicht neu berechnet.In another embodiment of the example method, the journal includes a digest hash value based at least in part on hash values of the plurality of leaf nodes. The digest hash is not recalculated in response to the entry being deleted.

In einer weiteren Ausführungsform des beispielhaften Verfahrens basiert ein zweiter Hash-Wert eines zweiten Blattknotens, der dem zweiten Eintrag zugeordnet ist, mindestens teilweise auf dem ersten Eintrag.In another embodiment of the example method, a second hash value of a second leaf node associated with the second entry is based at least in part on the first entry.

In einer weiteren Ausführungsform des beispielhaften Verfahrens ist der redigierte Eintrag ein Eintrag in einem verschachtelten Journal. Wie hier beschrieben, kann der Eintrags-Hash für einen Eintrag, der ein verschachteltes Journal umfasst, dem Digest des verschachtelten Journals entsprechen. Indem der Hash des redigierten Eintrags aufbewahrt wird, darf der Wert dieses Digests konstant bleiben.In another embodiment of the example method, the edited entry is an entry in a nested journal. As described herein, the entry hash for an entry that includes a nested journal may be the digest of the nested journal. By keeping the hash of the edited entry, the value of this digest is allowed to remain constant.

13 veranschaulicht Aspekte eines beispielhaften Systems 1300 zur Implementierung von Aspekten gemäß einer Ausführungsform. Wie erkannt werden wird, können, obwohl ein webbasiertes System zu Erklärungszwecken verwendet wird, verschiedene Systeme verwendet werden, um gegebenenfalls verschiedene Ausführungsformen zu implementieren. In einer Ausführungsform beinhaltet das System eine elektronische Client-Vorrichtung 1302, die eine beliebige geeignete Vorrichtung beinhaltet, die zum Senden und/oder Empfangen von Anfragen, Nachrichten oder Informationen über ein geeignetes Netzwerk 1304 und zum Übermitteln von Informationen zurück an einen Benutzer der Vorrichtung. Beispiele für solche Client-Vorrichtungen beinhalten Personalcomputer, Mobilfunk- oder andere Mobiltelefone, tragbare Nachrichtenübermittlungsvorrichtungen, Laptop-Computer, Tablet-Computer, Settop-Boxen, persönliche Datenassistenten, eingebettete Computersysteme, elektronische Buch-Lesegeräte und dergleichen. In einer Ausführungsform beinhaltet das Netzwerk ein beliebiges geeignetes Netzwerk, einschließlich eines Intranets, des Internets, eines Mobilfunknetzes, eines lokalen Netzwerks, eines Satellitennetzwerks oder eines anderen derartigen Netzwerks und/oder einer Kombination davon, und Komponenten, die für ein derartiges System verwendet werden, hängen mindestens teilweise von der Art des ausgewählten Netzwerks und/oder Systems ab. Viele Protokolle und Komponenten zur Kommunikation über ein solches Netzwerk sind allgemein bekannt und werden hier nicht im Detail erörtert. In einer Ausführungsform wird die Kommunikation über das Netzwerk durch drahtgebundene und/oder drahtlose Verbindungen und Kombinationen davon ermöglicht. In einer Ausführungsform beinhaltet das Netzwerk das Internet und/oder ein anderes öffentlich adressierbares Kommunikationsnetzwerk, da das System einen Webserver 1306 zum Empfangen von Anfragen und zum Liefern von Inhalten als Reaktion darauf beinhaltet, obwohl für andere Netzwerke eine alternative Vorrichtung verwendet werden könnte, die einem ähnlichen Zweck dient, wie es für einen Durchschnittsfachmann offensichtlich wäre. 13 13 illustrates aspects of an example system 1300 for implementing aspects according to one embodiment. As will be appreciated, although a web-based system is used for explanation purposes, different systems can be used to implement different embodiments as appropriate. In one embodiment, the system includes an electronic client device 1302, which includes any suitable device capable of sending and/or receiving requests, messages, or information over a suitable network 1304 and transmitting information back to a user of the device. Examples of such client devices include personal computers, cellular or other cellular phones, portable messaging devices, laptop computers, tablet computers, set top boxes, personal data assistants, embedded computer systems, electronic book readers, and the like. In one embodiment, the network includes any suitable network, including an intranet, the Internet, a cellular network, a local area network, a satellite network, or other such network and/or a combination thereof, and components used for such a system. depend at least in part on the type of network and/or system selected. Many protocols and components for communicating over such a network are well known and will not be discussed in detail here. In one embodiment, communication over the network is enabled by wired and/or wireless connections and combinations thereof. In one embodiment, the network includes the Internet and/or other publicly addressable communications network, as the system includes a web server 1306 for receiving requests and delivering content in response thereto, although for other networks an alternative device could be used that includes a serves a similar purpose as would be apparent to one of ordinary skill in the art.

In einer Ausführungsform beinhaltet das veranschaulichende System mindestens einen Anwendungsserver 1308 und eine oder mehrere Datenbanken 1310, und es versteht sich, dass mehrere Anwendungsserver, Schichten oder andere Elemente, Prozesse oder Komponenten vorhanden sein können, die verkettet oder anderweitig konfiguriert sein können und die interagieren können, um Aufgaben wie etwa das Abrufen von Daten aus einer geeigneten Datenbank durchzuführen. Der/die Anwendungsserver 1308 und die Datenbank(en) können auf einem oder mehreren Servern betreibbar sein. Die Server sind in einer Ausführungsform als Hardware-Vorrichtungen, virtuelle Computersysteme, Programmiermodule, die auf einem Computersystem ausgeführt werden, und/oder andere Vorrichtungen, die mit Hardware und/oder Software konfiguriert sind, implementiert, um Kommunikationen (z. B. Webdienst-Anwendung-Programmierschnittstelle (Application Programming Interface - API)-Anfragen) über ein Netzwerk zu empfangen und darauf zu reagieren. Im hier verwendeten Sinn bezieht sich der Begriff „Datenspeicher“, sofern nicht anders angegeben oder aus dem Kontext ersichtlich, auf jede Vorrichtung oder jede Kombination von Vorrichtungen, die in der Lage ist, Daten zu speichern, auf sie zuzugreifen und sie abzurufen, was eine beliebige Kombination und Anzahl von Datenservern, Datenbanken, Datenspeichervorrichtungen und Datenspeichermedien in jedem Standard-, verteilten, virtuellen oder Cluster-System beinhalten kann. Datenspeicher kommunizieren in einer Ausführungsform mit Schnittstellen auf Block- und/oder Objektebene. Der Anwendungsserver kann jede geeignete Hardware, Software und Firmware für die Integration mit dem Datenspeicher beinhalten, die für die Ausführung von Aspekten einer oder mehrerer Anwendungen für die Client-Vorrichtung erforderlich ist, wobei der Datenzugriff und die Business-Logik für eine Anwendung teilweise oder vollständig übernommen werden.In one embodiment, the illustrative system includes at least one application server 1308 and one or more databases 1310, and it is understood that multiple application servers, tiers, or other ele There may be devices, processes, or components, chained or otherwise configured, that can interact to perform tasks such as retrieving data from an appropriate database. The application server(s) 1308 and database(s) may be operable on one or more servers. The servers, in one embodiment, are implemented as hardware devices, virtual computer systems, programming modules executing on a computer system, and/or other devices configured with hardware and/or software to provide communications (e.g., web service Receive and respond to application programming interface (API) requests over a network. As used herein, unless otherwise specified or apparent from the context, the term "data storage" refers to any device or combination of devices capable of storing, accessing, and retrieving data, which may be a any combination and number of data servers, databases, data storage devices, and data storage media in any standard, distributed, virtual, or clustered system. Data stores, in one embodiment, communicate with block-level and/or object-level interfaces. The application server may include any suitable hardware, software and firmware for integration with the data store required for the execution of aspects of one or more applications for the client device, providing partial or full data access and business logic for an application be taken over.

In einer Ausführungsform stellt der Anwendungsserver in Zusammenarbeit mit dem Datenspeicher Zugriffssteuerungsdienste bereit und erzeugt Inhalte, einschließlich, aber nicht beschränkt auf Text, Grafiken, Audio, Video und/oder andere Inhalte, die einem der Client-Vorrichtung zugeordneten Benutzer durch den Webserver in Form von HyperText Markup Language („HTML“), Extensible Markup Language („XML“), JavaScript, Cascading Style Sheets („CSS“), JavaScript Object Notation (JSON) und/oder einer anderen geeigneten clientseitigen oder anderen strukturierten Sprache bereitgestellt werden. Inhalte, die in einer Ausführungsform an eine Client-Vorrichtung übertragen werden, werden durch die Client-Vorrichtung verarbeitet, um den Inhalt in einer oder mehreren Formen bereitzustellen, einschließlich, aber nicht beschränkt auf Formen, die für den Benutzer hörbar, visuell und/oder durch andere Sinne wahrnehmbar sind. Die Abwicklung aller Abfragen und Reaktionen sowie die Lieferung von Inhalten zwischen der Client-Vorrichtung 1302 und dem Anwendungsserver 1308 wird in einer Ausführungsform durch den Webserver unter Verwendung von PHP: Hypertext Preprocessor („PHP“), Python, Ruby, Perl, Java, HTML, XML, JSON und/oder einer anderen geeigneten serverseitigen strukturierten Sprache in diesem Beispiel abgewickelt. In einer Ausführungsform werden hier als durch eine einzelne Vorrichtung ausgeführt beschriebene Operationen gemeinsam durch mehrere Vorrichtungen ausgeführt, die ein verteiltes und/oder virtuelles System bilden.In one embodiment, the application server, in cooperation with the data store, provides access control services and generates content, including but not limited to text, graphics, audio, video and/or other content, which a user associated with the client device can access through the web server in the form of HyperText Markup Language ("HTML"), Extensible Markup Language ("XML"), JavaScript, Cascading Style Sheets ("CSS"), JavaScript Object Notation (JSON), and/or any other suitable client-side or other structured language. Content transmitted to a client device, in one embodiment, is processed by the client device to provide the content in one or more forms, including but not limited to forms that are audible, visual, and/or user-definable can be perceived by other senses. The handling of all queries and responses as well as the delivery of content between the client device 1302 and the application server 1308 is performed in one embodiment by the web server using PHP: Hypertext Preprocessor ("PHP"), Python, Ruby, Perl, Java, HTML , XML, JSON and/or any other suitable server-side structured language is handled in this example. In one embodiment, operations described herein as being performed by a single device are performed collectively by multiple devices forming a distributed and/or virtual system.

Die Datenbank(en) 1310 beinhaltet/beinhalten in einer Ausführungsform mehrere getrennte Datentabellen, Datenbanken, Datendokumente, dynamische Datenspeicherschemata und/oder andere Datenspeichermechanismen und -medien zum Speichern von Daten, die sich auf einen bestimmten Aspekt der vorliegenden Offenbarung beziehen. In einer Ausführungsform beinhaltet der veranschaulichte Datenspeicher Mechanismen zum Speichern von Produktionsdaten und Benutzerinformationen, die verwendet werden, um Inhalte für die Produktionsseite zu liefern. Es wird auch gezeigt, dass der Datenspeicher einen Mechanismus zum Speichern von Protokolldaten beinhaltet, der in einer Ausführungsform für die Berichterstellung, die Verwaltung von Rechenressourcen, die Analyse oder andere solche Zwecke verwendet wird. In einer Ausführungsform werden andere Aspekte wie etwa Seitenbildinformationen und Zugriffsrechteinformationen (z. B. Zugriffssteuerungsrichtlinien oder andere Kodierungen von Berechtigungen) in dem Datenspeicher in einem der oben aufgeführten Mechanismen, wenn zweckmäßig, oder in zusätzlichen Mechanismen in dem Datenspeicher 1310 gespeichert.The database(s) 1310, in one embodiment, includes multiple separate data tables, databases, data documents, dynamic data storage schemes, and/or other data storage mechanisms and media for storing data related to a particular aspect of the present disclosure. In one embodiment, the illustrated data store includes mechanisms for storing production data and user information used to deliver content for the production site. The data store is also shown to include a mechanism for storing log data used in one embodiment for reporting, computing resource management, analysis, or other such purposes. In one embodiment, other aspects such as page image information and access rights information (e.g., access control policies or other encodings of permissions) are stored in the data store in one of the mechanisms listed above, where appropriate, or in additional mechanisms in the data store 1310.

Die Datenbank(en) 1310 ist/sind in einer Ausführungsform durch damit verbundene Logik betreibbar, um Anweisungen von dem Anwendungsserver 1308 zu empfangen und als Reaktion darauf Daten zu erhalten, zu aktualisieren oder anderweitig zu verarbeiten, und der Anwendungsserver 1308 stellt als Reaktion auf die empfangenen Anweisungen statische, dynamische oder eine Kombination von statischen und dynamischen Daten bereit. In einer Ausführungsform werden dynamische Daten, wie etwa Daten, die in Webprotokollen (Blogs), Shopping-Anwendungen, Nachrichtendiensten und anderen derartigen Anwendungen verwendet werden, durch serverseitig strukturierte Sprachen wie hier beschrieben erzeugt oder durch ein Content Management System („CMS“) bereitgestellt, das auf dem Anwendungsserver oder unter dessen Steuerung betrieben wird. In einer Ausführungsform sendet ein Benutzer über eine durch den Benutzer betriebene Vorrichtung eine Suchanfrage für eine bestimmte Art von Element. In diesem Beispiel greift der Datenspeicher auf die Benutzerinformationen zu, um die Identität des Benutzers zu verifizieren, greift auf die Katalogdetailinformationen zu, um Informationen zu Elementen dieses Typs zu erhalten, und gibt die Informationen an den Benutzer zurück, wie etwa in einer Ergebnisliste auf einer Webseite, die der Benutzer über einen Browser auf der Benutzervorrichtung 1302 aufruft. Um mit diesem Beispiel fortzufahren, werden Informationen für ein bestimmtes Element von Interesse auf einer eigenen Seite oder einem eigenen Fenster des Browsers angezeigt. Es ist jedoch anzumerken, dass Ausführungsformen der vorliegenden Offenbarung nicht notwendigerweise auf den Kontext von Webseiten beschränkt sind, sondern allgemeiner auf die Verarbeitung von Anfragen im Allgemeinen anwendbar sind, wobei die Anfragen nicht notwendigerweise Anfragen von Inhalten sind. Beispielhafte Anfragen beinhalten Anfragen zum Verwalten von und/oder Interagieren mit Rechenressourcen, die durch das System 1300 und/oder einem anderen System gehostet werden, wie etwa zum Starten, Beenden, Löschen, Ändern, Lesen und/oder anderweitigen Zugreifen auf solche Rechenressourcen.Database(s) 1310, in one embodiment, is operable through associated logic to receive instructions from application server 1308 and obtain, update, or otherwise process data in response thereto, and application server 1308 provides in response to the received instructions provide static, dynamic or a combination of static and dynamic data. In one embodiment, dynamic data, such as data used in web logs (blogs), shopping applications, news services, and other such applications, is generated by server-side structured languages as described herein or provided by a content management system ("CMS") running on or under the control of the application server. In one embodiment, a user sends a search query for a particular type of item via a user-operated device. In this example, the data store accesses the user information to verify the user's identity, accesses the catalog detail information to verify information information about items of that type and returns the information to the user, such as in a list of results on a web page that the user accesses through a browser on user device 1302 . To continue with this example, information for a particular item of interest is displayed on a separate page or window of the browser. However, it should be noted that embodiments of the present disclosure are not necessarily limited to the context of web pages, but are more generally applicable to the processing of requests in general, where the requests are not necessarily requests for content. Example requests include requests to manage and/or interact with computing resources hosted by system 1300 and/or another system, such as starting, stopping, deleting, modifying, reading, and/or otherwise accessing such computing resources.

Die Datenbank(en) 1310 umfasst/umfassen in einer Ausführungsform ein oder mehrere journalisierte Datenbankverwaltungssysteme, wie etwa das in 1 dargestellte journalisierte Datenbankverwaltungssystem. Ein journalisiertes Datenbankverwaltungssystem kann in mindestens einigen Ausführungsformen ein verteiltes System sein, das auf einer Vielzahl von Servern betreibbar ist. In anderen Ausführungsformen ist ein journalisiertes Datenbankverwaltungssystem auf einem Server betreibbar.The database(s) 1310, in one embodiment, includes one or more journaled database management systems, such as that in 1 illustrated journalized database management system. A journaled database management system, in at least some embodiments, may be a distributed system operable on a plurality of servers. In other embodiments, a journaled database management system is operable on a server.

In einer Ausführungsform beinhaltet jeder Server typischerweise ein Betriebssystem, das ausführbare Programmanweisungen für die allgemeine Verwaltung und den allgemeinen Betrieb dieses Servers bereitstellt, und beinhaltet ein computerlesbares Speichermedium (z. B. eine Festplatte, einen Direktzugriffsspeicher, einen Festwertspeicher usw.), das Anweisungen speichert, die bei Ausführung durch einen Prozessor des Servers den Server veranlassen oder ihm anderweitig erlauben, seine vorgesehenen Funktionen durchzuführen (z. B. werden die Funktionen als Ergebnis dessen durchgeführt, dass ein oder mehrere Prozessoren des Servers Anweisungen ausführen, die auf einem computerlesbaren Speichermedium gespeichert sind).In one embodiment, each server typically includes an operating system that provides executable program instructions for the general administration and operation of that server, and includes a computer-readable storage medium (e.g., a hard disk, random access memory, read-only memory, etc.) that stores instructions which, when executed by a processor of the server, cause or otherwise permit the server to perform its intended functions (e.g., the functions are performed as a result of one or more processors of the server executing instructions stored on a computer-readable storage medium are).

Das System 1300 ist in einer Ausführungsform ein verteiltes und/oder virtuelles Computersystem, das mehrere Computersysteme und -komponenten nutzt, die über Kommunikationsverbindungen (z. B. Transmission-Control-Protocol(TCP)-Verbindungen und/oder Transport Layer Security (TLS) oder andere kryptografisch geschützte Kommunikationssitzungen) miteinander verbunden sind, wobei ein oder mehrere Computernetzwerke oder direkte Verbindungen verwendet werden. Der Durchschnittsfachmann wird jedoch erkennen, dass ein solches System auch in einem System mit weniger oder mehr Komponenten als in 13 veranschaulicht betrieben werden kann. Daher sollte die Darstellung des Systems 1300 in 13 als veranschaulichend und nicht als Einschränkung des Schutzumfangs der Offenbarung verstanden werden.In one embodiment, the system 1300 is a distributed and/or virtual computing system that utilizes multiple computing systems and components that communicate via communication links (e.g., Transmission Control Protocol (TCP) connections and/or Transport Layer Security (TLS) or other cryptographically protected communication sessions) are interconnected using one or more computer networks or direct connections. However, those of ordinary skill in the art will recognize that such a system can also be used in a system with fewer or more components than in 13 illustrated can be operated. Therefore, the representation of the system 1300 in 13 should be understood as illustrative and not as limiting the scope of the disclosure.

Ausführungsformen der Offenbarung können im Hinblick auf die folgenden Klauseln beschrieben werden:

  1. 1. System, Folgendes umfassend:
    • mindestens einen Prozessor; und
    • einen Speicher, der Anweisungen umfasst, die als Reaktion auf die Ausführung durch den mindestens einen Prozessor das System zu mindestens Folgendem veranlassen:
      • Speichern eines oder mehrerer Einträge in einer ersten Version eines Journals, wobei die erste Version des Journals nach Speichern des einen oder der mehreren Einträge Folgendes umfasst:
        • eine geordnete Vielzahl von Blattknoten, wobei ein Blattknoten der geordneten Vielzahl von Blattknoten einen Hash-Wert umfasst, der mindestens teilweise auf einem Hash-Wert eines vorherigen Knotens in der geordneten Vielzahl von Blattknoten basiert;
        • eine Hierarchie von inneren Knoten, wobei ein innerer Knoten einen Hash-Wert umfasst, der mindestens teilweise auf Hash-Werten eines oder mehrerer untergeordneter Elemente des inneren Knotens basiert; und
    • Bereitstellen eines ersten Digests der ersten Version des Journals, wobei der erste Digest als Nachweis dafür verwendbar ist, dass der eine oder die mehreren Einträge unverändert und in der ersten Version des Journals gespeichert sind;
    • Bereitstellen eines zweiten Digests einer zweiten Version des Journals, nachdem ein oder mehrere zusätzliche Einträge dem Journal hinzugefügt wurden; und
    • Bereitstellen von Hash-Werten, die ausreichen, um nachzuweisen, dass der zweite Digest mindestens teilweise auf Informationen basiert, die im ersten Digest beinhaltet sind, und dass der eine oder die mehrere Einträge unverändert und in der zweiten Version des Journals gespeichert sind.
  2. 2. System nach Klausel 1, wobei die bereitgestellten Hash-Werte ausreichend sind, wenn die Hash-Werte verwendet werden können, wobei ein aufbewahrter Hash-Wert mindestens teilweise auf dem einen oder den mehreren Einträgen basiert, um den zweiten Digest zu berechnen.
  3. 3. System nach Klausel 2, wobei der aufbewahrte Hash-Wert einem Blattknoten des Journals entspricht.
  4. 4. System nach einer der Klauseln 1-3, wobei der Nachweis, dass der zweite Digest mindestens teilweise auf dem ersten Digest basiert, die sukzessive Anwendung eines symmetrischen Hash-Operators auf die bereitgestellten Hash-Werte umfasst.
  5. 5. System nach einer der Klauseln 1-4, wobei ein Nachweis, dass der eine oder die mehreren Einträge unverändert sind, das Bestimmen umfasst, dass ein Blattknoten des Journals mindestens teilweise auf einem Hash-Wert basiert, der mindestens teilweise auf dem einen oder den mehreren Einträgen basierend berechnet wurde.
  6. 6. System nach einer der Klauseln 1-5, wobei der Speicher weitere Anweisungen umfasst, die als Reaktion auf die Ausführung durch den mindestens einen Prozessor das System veranlassen, mindestens eine Anfrage zu empfangen, um zu verifizieren, dass der eine oder die mehrere Einträge unverändert und in der zweiten Version des Journals gespeichert sind, wobei die Anfrage mindestens eine von Informationen, die einen Ort des einen oder der mehreren Einträge anzeigen, oder Informationen, die die erste Version des Journals anzeigen, umfasst.
  7. 7. Computerimplementiertes Verfahren, Folgendes umfassend:
    • Speichern eines Eintrags in einer ersten Version eines Journals, wobei die erste Version des Journals nach Speichern des Eintrags Folgendes umfasst:
      • eine Vielzahl von Blattknoten, wobei ein Blattknoten der Vielzahl von Blattknoten einen Hash-Wert umfasst, der mindestens teilweise auf einem Hash-Wert eines vorherigen Knotens in der Vielzahl von Blattknoten basiert;
      • eine Hierarchie von inneren Knoten, wobei ein innerer Knoten der Hierarchie von inneren Knoten einen Hash-Wert umfasst, der mindestens teilweise auf Hash-Werten eines oder mehrerer untergeordneter Elemente des inneren Knotens basiert;
    • Bereitstellen eines ersten Digests der ersten Version des Journals, wobei der erste Digest zum Nachweis verwendbar ist, dass der Eintrag unverändert und in der ersten Version des Journals gespeichert ist;
    • Bereitstellen eines zweiten Digests einer zweiten Version des Journals; und
    • Bereitstellen von Hash-Werten, die ausreichen, um nachzuweisen, dass der zweite Digest mindestens teilweise auf Informationen basiert, die im ersten Digest beinhaltet sind, und dass der Eintrag unverändert und in der zweiten Version des Journals gespeichert ist.
  8. 8. Computerimplementiertes Verfahren nach Klausel 7, wobei die Liste der Hash-Werte ausreichend ist, wenn die bereitgestellten Hash-Werte mit einem zusätzlichen Hash-Wert, der mindestens teilweise auf dem Eintrag basiert, verwendet werden können, um den zweiten Digest zu berechnen.
  9. 9. Computerimplementiertes Verfahren nach Klausel 7 oder 8, wobei der zusätzliche Hash-Wert einem Blattknoten des Journals entspricht.
  10. 10. Computerimplementiertes Verfahren nach einer der Klauseln 7-9, wobei der Nachweis, dass der zweite Hash-Wert mindestens teilweise auf dem ersten Hash-Wert basiert, die aufeinanderfolgende Anwendung eines Hash-Operators auf die bereitgestellten Hash-Werte umfasst.
  11. 11. Computerimplementiertes Verfahren nach Klausel 9, wobei der Hash-Operator ein symmetrischer Hash-Operator ist.
  12. 12. Computerimplementiertes Verfahren nach einer der Klauseln 7-11, wobei der zweite Digest einen oder mehrere neu berechnete Knoten umfasst, die Grenzknoten in der ersten Version des Journals waren, und wobei Nicht-Grenzknoten der ersten Version des Journals bei der Bildung der zweiten Version des Journals nicht neu berechnet wurden.
  13. 13. Computerimplementiertes Verfahren nach einer der Klauseln 7-12, ferner Folgendes umfassend:
    • Empfangen einer Anfrage zum Bereitstellen von Informationen zum Nachweis, dass der Eintrag unverändert ist und in der zweiten Version des Journals gespeichert ist, wobei die Anfrage mindestens eine von Informationen, die einen Ort des Eintrags anzeigen, oder Informationen, die die erste Version des Journals anzeigen, umfasst.
  14. 14. Nichttransitorisches computerlesbares Speichermedium, auf dem ausführbare Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Prozessoren eines Computersystems das Computersystem zu mindestens Folgendem veranlassen:
    • Speichern eines Eintrags in einer ersten Version eines Journals, wobei die erste Version des Journals nach Speichern des Eintrags Folgendes umfasst:
      • eine Vielzahl von Blattknoten, wobei ein Blattknoten der Vielzahl von Blattknoten einen Hash-Wert umfasst, der mindestens teilweise auf einem Hash-Wert eines vorherigen Knotens in der Vielzahl von Blattknoten basiert;
      • eine Hierarchie von inneren Knoten, wobei ein innerer Knoten der Hierarchie von inneren Knoten einen Hash-Wert umfasst, der mindestens teilweise auf Hash-Werten eines oder mehrerer untergeordneter Elemente des inneren Knotens basiert;
    • Bereitstellen eines ersten Digests der ersten Version des Journals, wobei der erste Digest zum Nachweis verwendbar ist, dass der Eintrag unverändert und in der ersten Version des Journals gespeichert ist;
    • Bereitstellen eines zweiten Digests einer zweiten Version des Journals; und
    • Bereitstellen von Hash-Werten, die ausreichen, um nachzuweisen, dass der zweite Digest mindestens teilweise auf Informationen basiert, die im ersten Digest beinhaltet sind, und dass der Eintrag unverändert und in der zweiten Version des Journals gespeichert ist.
  15. 15. Nichttransitorisches computerlesbares Speichermedium nach Klausel 14, wobei die bereitgestellten Hash-Werte ausreichend sind, wenn die bereitgestellten Hash-Werte mit einem zusätzlichen Hash-Wert verwendet werden können, um den zweiten Digest zu berechnen.
  16. 16. Nichttransitorisches computerlesbares Speichermedium nach Klausel 15, wobei der zusätzliche Hash-Wert von einem Blattknoten des Journals stammt.
  17. 17. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 14-16, wobei der Nachweis, dass der eine oder die mehreren Einträge unverändert sind, die Bestimmung umfasst, dass ein Blattknoten des Journals mindestens teilweise auf einem Hash-Wert basiert, der mindestens teilweise auf dem Eintrag basierend berechnet wurde.
  18. 18. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 14-17, wobei der Nachweis, dass der zweite Hash-Wert mindestens teilweise auf dem ersten Hash-Wert basiert, die aufeinanderfolgende Anwendung eines symmetrischen Hash-Operators auf die bereitgestellten Hash-Werte umfasst.
  19. 19. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 14-18, wobei der zweite Digest einen oder mehrere Knoten umfasst, die in der ersten Version des Journals Grenzknoten waren, und wobei Nicht-Grenzknoten der ersten Version des Journals nicht neu berechnet werden.
  20. 20. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 14-19, wobei das nichttransitorische computerlesbare Speichermedium darauf weitere ausführbare Anweisungen speichert, die als Ergebnis dessen, dass sie durch einen oder mehrere Prozessoren des Computersystems ausgeführt werden, das Computersystem zu mindestens Folgendem veranlassen:
    • Empfangen einer Anfrage zum Bereitstellen von Informationen zum Nachweis, dass der Eintrag unverändert ist und in der zweiten Version des Journals gespeichert ist, wobei die Anfrage mindestens eine von Informationen, die einen Ort des Eintrags anzeigen, oder Informationen, die die erste Version des Journals anzeigen, umfasst.
  21. 21. System, Folgendes umfassend:
    • mindestens einen Prozessor; und
    • einen Speicher, der Anweisungen umfasst, die als Reaktion auf die Ausführung durch den mindestens einen Prozessor das System zu mindestens Folgendem veranlassen:
      • Speichern eines Eintrags in einem Journal, wobei das Journal nach Speichern des Eintrags eine Hierarchie von Knoten umfasst, wobei ein Knoten der Hierarchie von Knoten einen Hash-Wert umfasst, der durch einen symmetrischen Hash-Operator berechnet wird, der auf einen ersten Hash-Wert eines ersten untergeordneten Knotens und einen zweiten Hash-Wert eines zweiten untergeordneten Knotens angewendet wird; und
      • Bereitstellen einer Liste von Hash-Werten von Knoten der Hierarchie, wobei die Liste von Hash-Werten für einen kryptografischen Nachweis ausreicht, dass der Eintrag in dem Journal gespeichert wurde.
  22. 22. System nach Klausel 21, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest-Wert durch eine weitere Anwendung des symmetrischen Hash-Operators auf Hash-Werte der Liste berechnet werden kann.
  23. 23. System nach Klausel 21 oder 22, wobei die Ausgabe des symmetrischen Hash-Operators, wenn er auf den ersten und zweiten Operanden angewendet wird, unabhängig von einer Reihenfolge des ersten und zweiten Operanden äquivalent ist.
  24. 24. System nach Klausel 23, wobei die Ausgabe des symmetrischen Hash-Operators mindestens teilweise auf einer Sortierung und Verkettung des ersten und des zweiten Operanden basiert.
  25. 25. System nach Klausel 23 oder 24, wobei die Ausgabe des symmetrischen Hash-Operators äquivalent zum ersten Operanden ist, wenn der zweite Operand Null ist.
  26. 26. Computerimplementiertes Verfahren, Folgendes umfassend:
    • Speichern eines Eintrags in einem Journal, wobei das Journal nach Speichern des Eintrags eine Hierarchie von Knoten umfasst, wobei ein Knoten der Hierarchie von Knoten einen Hash-Wert umfasst, der durch einen symmetrischen Hash-Operator berechnet wird, der auf einen ersten Hash-Wert eines ersten untergeordneten Knotens und einen zweiten Hash-Wert eines zweiten untergeordneten Knotens angewendet wird; und
    • Bereitstellen einer Liste von Hash-Werten von Knoten der Hierarchie, wobei die Liste von Hash-Werten für einen kryptografischen Nachweis ausreicht, dass der Eintrag in dem Journal gespeichert wurde.
  27. 27. Computerimplementiertes Verfahren nach Klausel 26, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest-Wert durch eine weitere Anwendung des symmetrischen Hash-Operators auf Hash-Werte der Liste berechnet werden kann.
  28. 28. Computerimplementiertes Verfahren nach Klausel 26 oder 27, wobei die Ausgabe des symmetrischen Hash-Operators, wenn er auf den ersten und zweiten Operanden angewendet wird, unabhängig von einer Reihenfolge des ersten und zweiten Operanden äquivalent ist.
  29. 29. Computerimplementiertes Verfahren nach Klausel 28, wobei die Ausgabe des symmetrischen Hash-Operators mindestens teilweise auf einer Sortierung und Verkettung des ersten und des zweiten Operanden basiert.
  30. 30. Computerimplementiertes Verfahren nach Klausel 29, wobei ein Hash aus der Verkettung des ersten und des zweiten Operanden berechnet wird.
  31. 31. Computerimplementiertes Verfahren nach einer der Klauseln 28, wobei die Ausgabe des symmetrischen Hash-Operators äquivalent zum ersten Operanden ist, wenn der zweite Operand Null ist.
  32. 32. Computerimplementiertes Verfahren nach einer der Klauseln 26-31, wobei die Hierarchie der Knoten einen Blattknoten umfasst, wobei der Blattknoten einen Verweis auf den Eintrag und einen Hash-Wert umfasst, der mindestens teilweise auf der Anwendung des symmetrischen Hash-Operators auf einen Eintrags-Hash und einen Hash-Wert eines zweiten Blattknoten basiert.
  33. 33. Computerimplementiertes Verfahren nach einer der Klauseln 26-32, wobei der kryptografische Nachweis mindestens teilweise auf der Anwendung des symmetrischen Hash-Operators auf einen oder mehrere Hash-Werte der Liste der Hash-Werte basiert.
  34. 34. Nichttransitorisches computerlesbares Speichermedium, auf dem ausführbare Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Prozessoren eines Computersystems das Computersystem zu mindestens Folgendem veranlassen:
    • Speichern eines Eintrags in einem Journal, wobei das Journal nach Speichern des Eintrags eine Hierarchie von Knoten umfasst, wobei ein Knoten der Hierarchie von Knoten einen Hash-Wert umfasst, der durch einen symmetrischen Hash-Operator berechnet wird, der auf einen ersten Hash-Wert eines ersten untergeordneten Knotens und einen zweiten Hash-Wert eines zweiten untergeordneten Knotens angewendet wird; und
    • Bereitstellen einer Liste von Hash-Werten von Knoten der Hierarchie, wobei die Liste von Hash-Werten für einen kryptografischen Nachweis ausreicht, dass der Eintrag in dem Journal gespeichert wurde.
  35. 35. Nichttransitorisches computerlesbares Speichermedium nach Klausel 34, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest-Wert durch eine weitere Anwendung des symmetrischen Hash-Operators auf Hash-Werte der Liste berechnet werden kann.
  36. 36. Nichttransitorisches computerlesbares Speichermedium nach Klausel 34 oder 35, wobei die Ausgabe des symmetrischen Hash-Operators, wenn er auf den ersten und zweiten Operanden angewendet wird, unabhängig von einer Reihenfolge des ersten und zweiten Operanden äquivalent ist.
  37. 37. Nichttransitorisches computerlesbares Speichermedium nach Klausel 36, wobei die Ausgabe des symmetrischen Hash-Operators mindestens teilweise auf einer Sortierung und Verkettung des ersten und des zweiten Operanden basiert.
  38. 38. Nichttransitorisches computerlesbares Speichermedium nach Klausel 37, wobei ein Hash aus der Verkettung des ersten und des zweiten Operanden berechnet wird.
  39. 39. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 36, wobei die Ausgabe des symmetrischen Hash-Operators äquivalent zum ersten Operanden ist, wenn der zweite Operand Null ist.
  40. 40. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 34-39, wobei die Hierarchie von Knoten einen Blattknoten umfasst, wobei der Blattknoten einen Verweis auf den Eintrag und einen Hash-Wert umfasst.
  41. 41. System, Folgendes umfassend:
    • mindestens einen Prozessor; und
    • einen Speicher, der Anweisungen umfasst, die als Reaktion auf die Ausführung durch den mindestens einen Prozessor das System zu mindestens Folgendem veranlassen:
      • Speichern eines Eintrags in einem Journal, wobei das Journal nach Speichern des Eintrags eine Hierarchie von inneren Knoten und eine geordnete Vielzahl von Blattknoten umfasst, wobei ein Blattknoten der geordneten Vielzahl von Blattknoten einen mindestens teilweise auf dem Eintrag basierenden Hash-Wert und einen Hash-Wert eines vorherigen Blattknotens der geordneten Vielzahl von Blattknoten umfasst; und
      • Bereitstellen einer Liste von Hash-Werten von der geordneten Vielzahl von Blattknoten, wobei die Liste von Hash-Werten für einen kryptografischen Nachweis ausreicht, dass der Eintrag in dem Journal gespeichert wurde.
  42. 42. System nach Klausel 41, wobei die Liste der Hash-Werte für einen kryptografischen Nachweis ausreicht, dass der Eintrag und eine Vielzahl von zusätzlichen Einträgen in dem Journal gespeichert wurden.
  43. 43. System nach Klausel 41 oder 42, wobei ein innerer Knoten einen Hash-Wert umfasst, der mindestens teilweise auf dem ersten und zweiten Blattknoten der geordneten Vielzahl von Blattknoten basiert.
  44. 44. System nach einer der Klauseln 41-43, wobei der Hash-Wert unter Verwendung eines symmetrischen Hash-Operators berechnet wird.
  45. 45. Computerimplementiertes Verfahren, Folgendes umfassend:
    • Speichern eines Eintrags in einem Journal, das eine Hierarchie von inneren Knoten und eine Vielzahl von Blattknoten umfasst, wobei ein zweiter Blattknoten der Vielzahl von Blattknoten einen Hash-Wert umfasst, der mindestens teilweise auf dem Eintrag und einem Hash-Wert eines ersten Blattknotens der Vielzahl von Blattknoten basiert; und
    • Bereitstellen einer Liste von Hash-Werten von der Vielzahl von Blattknoten, wobei die Liste von Hash-Werten für den Nachweis ausreicht, dass der Eintrag in dem Journal gespeichert wurde.
  46. 46. Computerimplementiertes Verfahren nach Klausel 45, ferner Folgendes umfassend:
    • Bereitstellen der Liste von Hash-Werten als Reaktion auf eine Anfrage nachzuweisen, dass der Eintrag im Journal gespeichert wurde.
  47. 47. Computerimplementiertes Verfahren nach Klausel 45 oder 46, wobei der Eintrag eine Datenbanktransaktion anzeigt.
  48. 48. Computerimplementiertes Verfahren nach einer der Klauseln 45-47, wobei die Liste von Hash-Werten einem Client zum Nachweis bereitgestellt wird, dass der Eintrag und eine Vielzahl zusätzlicher Einträge in dem Journal gespeichert wurden.
  49. 49. Computerimplementiertes Verfahren nach einer der Klauseln 45-48, ferner Folgendes umfassend:
    • Berechnen eines Hash-Werts für einen inneren Knoten, der mindestens teilweise auf dem ersten und dem zweiten Blattknoten basiert, wobei der erste und der zweite Blattknoten untergeordnete Elemente des inneren Knotens sind.
  50. 50. Computerimplementiertes Verfahren nach einer der Klauseln 45-49, ferner Folgendes umfassend:
    • Berechnen des Hash-Werts des zweiten Blattknotens basierend mindestens teilweise auf einem symmetrischen Hash-Operator.
  51. 51. Computerimplementiertes Verfahren nach einer der Klauseln 45-50, wobei die Liste von Hash-Werten einen Hash-Wert für einen Blattknoten vor dem ersten und zweiten Blattknoten umfasst.
  52. 52. Computerimplementiertes Verfahren nach einer der Klauseln 45-51, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest-Wert durch eine weitere Anwendung eines symmetrischen Hash-Operators auf Hash-Werte der Liste berechnet werden kann.
  53. 53. Computerimplementiertes Verfahren nach einer der Klauseln 45-52, wobei die Vielzahl von Blattknoten einen Digest-Blattknoten umfasst, wobei der Digest-Blattknoten einen Hash-Wert umfasst, der mindestens teilweise auf Hash-Werten des ersten und des zweiten Blattknotens basiert.
  54. 54. Nichttransitorisches computerlesbares Speichermedium, auf dem ausführbare Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Prozessoren eines Computersystems das Computersystem zu mindestens Folgendem veranlassen:
    • Speichern eines Eintrags in einem Journal, wobei das Journal nach Speichern des Eintrags eine Hierarchie von inneren Knoten und eine Vielzahl von Blattknoten umfasst, wobei ein erster Blattknoten der geordneten Vielzahl von Blattknoten einen mindestens teilweise auf dem Eintrag basierenden Hash-Wert und einen Hash-Wert eines zweiten Blattknotens der Vielzahl von Blattknoten umfasst; und
    • Bereitstellen einer Liste von Hash-Werten von der Vielzahl von Blattknoten, wobei die Liste von Hash-Werten für einen kryptografischen Nachweis verwendbar ist, dass der Eintrag in dem Journal gespeichert wurde.
  55. 55. Nichttransitorisches computerlesbares Speichermedium nach Klausel 54, wobei die ausführbaren Anweisungen ferner ausführbare Anweisungen umfassen, die bei Ausführung durch den einen oder die mehreren Prozessoren das Computersystem zu mindestens Folgendem veranlassen:
    • Bereitstellen der Liste von Hash-Werten als Reaktion auf eine Anfrage nachzuweisen, dass der Eintrag im Journal gespeichert wurde.
  56. 56. Nichttransitorisches computerlesbares Speichermedium nach Klausel 54 oder 55, wobei die ausführbaren Anweisungen ferner ausführbare Anweisungen umfassen, die bei Ausführung durch den einen oder die mehreren Prozessoren das Computersystem zu mindestens Folgendem veranlassen:
    • Berechnen eines Hash-Werts für einen inneren Knoten, der mindestens teilweise auf dem ersten und dem zweiten Blattknoten basiert, wobei der erste und der zweite Blattknoten untergeordnete Elemente des inneren Knotens sind.
  57. 57. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 54-56, wobei die ausführbaren Anweisungen ferner ausführbare Anweisungen umfassen, die bei Ausführung durch den einen oder mehrere Prozessoren das Computersystem zu mindestens Folgendem veranlassen:
    • Berechnen des Hash-Werts des ersten Blattknotens basierend mindestens teilweise auf einem symmetrischen Hash-Operator.
  58. 58. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 54-57, wobei die Liste von Hash-Werten einen Hash-Wert für einen Blattknoten vor dem ersten und zweiten Blattknoten umfasst.
  59. 59. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 54-58, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest-Wert durch eine weitere Anwendung eines symmetrischen Hash-Operators auf Hash-Werte der Liste berechnet werden kann.
  60. 60. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 54-59, wobei die Vielzahl von Blattknoten einen Digest-Blattknoten umfasst, wobei der Digest-Blattknoten einen Hash-Wert umfasst, der mindestens teilweise auf Hash-Werten des ersten und des zweiten Blattknotens basiert.
  61. 61. System, Folgendes umfassend:
    • mindestens einen Prozessor; und
    • einen Speicher, der Anweisungen umfasst, die als Reaktion auf die Ausführung durch den mindestens einen Prozessor das System zu mindestens Folgendem veranlassen:
      • Speichern eines ersten Eintrags und eines zweiten Eintrags in einem Journal, wobei das Journal nach Speichern des ersten Eintrags und des zweiten Eintrags eine Vielzahl von Blattknoten und eine Hierarchie von inneren Knoten umfasst, wobei ein Blattknoten aus der Vielzahl von Blattknoten einen Verweis auf den ersten Eintrag und einen Hash-Wert, der mindestens teilweise auf dem ersten Eintrag basiert, umfasst;
      • als Reaktion auf eine Anfrage zum Löschen des ersten Eintrags aus dem Journal, Entfernen des Verweises auf den ersten Eintrag aus dem Blattknoten, wobei der Blattknoten den Hash-Wert nach dem Entfernen des Verweises aufbewahrt; und
      • Bereitstellen einer Liste von Hash-Werten, die ausreichend ist, um nachzuweisen, dass der zweite Eintrag im Journal gespeichert ist.
  62. 62. System nach Klausel 61, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest des Journals durch eine weitere Anwendung eines symmetrischen Hash-Operators auf Hash-Werte der Liste von Hash-Werten berechnet werden kann.
  63. 63. System nach Klausel 61 oder 62, wobei der Speicher weitere Anweisungen umfasst, die als Reaktion auf die Ausführung durch den mindestens einen Prozessor das System zu mindestens Folgendem veranlassen:
    • als Reaktion auf die Anfrage Bereitstellen eines Digest-Werts, der mindestens teilweise auf dem aufbewahrten Hash-Wert basiert.
  64. 64. System nach einer der Klauseln 61-63, wobei der Hash-Wert des Blattknotens mindestens teilweise auf einem Hash-Wert eines anderen Blattknotens der Vielzahl der Blattknoten basiert.
  65. 65. System nach einer der Klauseln 61-64, wobei ein zweiter Hash-Wert eines zweiten Blattknotens mindestens teilweise auf dem Hash-Wert basiert, der mindestens teilweise auf dem ersten Eintrag basiert.
  66. 66. System nach einer der Klauseln 61-65, wobei die Liste der Hash-Werte den aufbewahrten Hash-Wert umfasst.
  67. 67. Computerimplementiertes Verfahren, Folgendes umfassend:
    • Speichern eines ersten Eintrags und eines zweiten Eintrags in einem Journal, wobei das Journal nach Speichern des ersten Eintrags und des zweiten Eintrags eine Vielzahl von Blattknoten umfasst, wobei ein Blattknoten aus der Vielzahl von Blattknoten einen Verweis auf den ersten Eintrag und einen Hash-Wert, der mindestens teilweise auf dem ersten Eintrag basiert, umfasst;
    • als Reaktion auf eine Anfrage zum Löschen des ersten Eintrags aus dem Journal, Entfernen des Verweises auf den ersten Eintrag aus dem Blattknoten;
    • Aufbewahren des Hash-Werts im Blattknoten nach dem Entfernen des Verweises; und
    • Bereitstellen einer Liste von Hash-Werten, die ausreichend ist, um nachzuweisen, dass der zweite Eintrag im Journal gespeichert ist.
  68. 68. Computerimplementiertes Verfahren nach Klausel 67, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest des Journals durch eine weitere Anwendung eines symmetrischen Hash-Operators auf Hash-Werte der Liste von Hash-Werten berechnet werden kann.
  69. 69. Computerimplementiertes Verfahren nach einer der Klauseln 67 oder 68, wobei der erste Eintrag in einem verschachtelten Journal erfolgt.
  70. 70. Computerimplementiertes Verfahren nach einer der Klauseln 67-69, wobei ein zweiter Hash-Wert eines zweiten Blattknotens mindestens teilweise auf dem Hash-Wert basiert, der mindestens teilweise auf dem ersten Eintrag basiert.
  71. 71. Computerimplementiertes Verfahren nach einer der Klauseln 67-70, ferner Folgendes umfassend:
    • Bereitstellen einer zusätzlichen Liste von Hash-Werten, die ausreichend ist, um nachzuweisen, dass der erste Eintrag im Journal gespeichert worden ist.
  72. 72. Computerimplementiertes Verfahren nach einer der Klauseln 67-71, wobei die Liste der Hash-Werte den aufbewahrten Hash-Wert umfasst.
  73. 73. Computerimplementiertes Verfahren nach einer der Klauseln 67-72, wobei das Journal einen Digest umfasst, der mindestens teilweise auf dem aufbewahrten Hash-Wert basiert.
  74. 74. Nichttransitorisches computerlesbares Speichermedium, auf dem ausführbare Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Prozessoren eines Computersystems das Computersystem zu mindestens Folgendem veranlassen:
    • Speichern eines ersten Eintrags und eines zweiten Eintrags in einem Journal, wobei das Journal nach Speichern des ersten Eintrags und des zweiten Eintrags eine Vielzahl von Blattknoten umfasst, wobei ein Blattknoten aus der Vielzahl von Blattknoten einen Verweis auf den ersten Eintrag und einen Hash-Wert, der mindestens teilweise auf dem ersten Eintrag basiert, umfasst;
    • als Reaktion auf eine Anfrage zum Löschen des ersten Eintrags aus dem Journal, Entfernen des Verweises auf den ersten Eintrag aus dem Blattknoten;
    • Aufbewahren des Hash-Werts im Blattknoten nach dem Entfernen des Verweises; und
    • Bereitstellen einer Liste von Hash-Werten, die ausreichend ist, um nachzuweisen, dass der zweite Eintrag im Journal gespeichert ist.
  75. 75. Nichttransitorisches computerlesbares Speichermedium nach Klausel 74, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest des Journals durch eine weitere Anwendung eines symmetrischen Hash-Operators auf Hash-Werte der Liste von Hash-Werten berechnet werden kann.
  76. 76. Nichttransitorisches computerlesbares Speichermedium nach Klausel 74 oder 75, wobei das nichttransitorische computerlesbare Speichermedium darauf weitere ausführbare Anweisungen speichert, die als Ergebnis dessen, dass sie durch den einen oder die mehreren Prozessoren ausgeführt werden, das Computersystem zu mindestens Folgendem veranlassen:
    • als Reaktion auf die Anfrage Bereitstellen einer Anzeige, dass der erste Eintrag aus dem Journal gelöscht wurde.
  77. 77. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 74-76, wobei der Hash-Wert des Blattknotens mindestens teilweise auf einem Hash-Wert eines anderen Blattknotens der Vielzahl der Blattknoten basiert.
  78. 78. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 74-77, wobei das nichttransitorische computerlesbare Speichermedium darauf weitere ausführbare Anweisungen speichert, die als Ergebnis dessen, dass sie durch den einen oder die mehreren Prozessoren ausgeführt werden, das Computersystem zu mindestens Folgendem veranlassen:
    • Bereitstellen einer zusätzlichen Liste von Hash-Werten, die ausreichend ist, um nachzuweisen, dass der erste Eintrag im Journal gespeichert worden ist.
  79. 79. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 74-78, wobei die Liste der Hash-Werte den aufbewahrten Hash-Wert umfasst.
  80. 80. Nichttransitorisches computerlesbares Speichermedium nach einer der Klauseln 74-79, wobei das Journal einen Digest umfasst, der mindestens teilweise auf dem aufbewahrten Hash-Wert basiert.
Embodiments of the disclosure may be described in terms of the following clauses:
  1. 1. System comprising:
    • at least one processor; and
    • a memory comprising instructions that, in response to execution by the at least one processor, cause the system to do at least one of the following:
      • Storing one or more entries in a first version of a journal, the first version of the journal after storing the one or more entries comprising:
        • an ordered plurality of leaf nodes, a leaf node of the ordered plurality of leaf nodes comprising a hash value based at least in part on a hash value of a previous node in the ordered plurality of leaf nodes;
        • a hierarchy of interior nodes, an interior node comprising a hash value based at least in part on hash values of one or more children of the interior node; and
    • providing a first digest of the first version of the journal, the first digest being usable as evidence that the one or more entries are unmodified and stored in the first version of the journal;
    • providing a second digest of a second version of the journal after adding one or more additional entries to the journal; and
    • providing hash values sufficient to demonstrate that the second digest is based at least in part on information contained in the first digest and that the one or more entries are unmodified and stored in the second version of the journal.
  2. 2. The system of clause 1, wherein the provided hashes are sufficient if the hashes can be used, wherein a preserved hash value is based at least in part on the one or more ones lazily based to calculate the second digest.
  3. 3. The system of clause 2, wherein the preserved hash value corresponds to a leaf node of the journal.
  4. 4. The system of any one of clauses 1-3, wherein proving that the second digest is based at least in part on the first digest comprises successively applying a symmetric hash operator to the provided hash values.
  5. 5. The system of any one of clauses 1-4, wherein proving that the one or more entries are unchanged comprises determining that a leaf node of the journal is based at least in part on a hash value based at least in part on the one or calculated based on the multiple entries.
  6. 6. The system of any one of clauses 1-5, wherein the memory comprises further instructions that, in response to execution by the at least one processor, cause the system to receive at least one request to verify that the one or more entries unmodified and stored in the second version of the journal, the request comprising at least one of information indicative of a location of the one or more entries or information indicative of the first version of the journal.
  7. 7. A computer-implemented method, comprising:
    • Saving an entry in a first version of a journal, the first version of the journal after saving the entry includes:
      • a plurality of leaf nodes, a leaf node of the plurality of leaf nodes comprising a hash value based at least in part on a hash value of a previous node in the plurality of leaf nodes;
      • a hierarchy of interior nodes, an interior node of the hierarchy of interior nodes comprising a hash value based at least in part on hash values of one or more children of the interior node;
    • providing a first digest of the first version of the journal, the first digest being usable to prove that the entry is unmodified and stored in the first version of the journal;
    • providing a second digest of a second version of the journal; and
    • providing hash values sufficient to demonstrate that the second digest is based at least in part on information contained in the first digest and that the entry is unmodified and stored in the second version of the journal.
  8. 8. The computer-implemented method of clause 7, wherein the list of hashes is sufficient if the provided hashes can be used with an additional hash based at least in part on the entry to compute the second digest.
  9. 9. The computer-implemented method of clause 7 or 8, wherein the additional hash value corresponds to a leaf node of the journal.
  10. 10. The computer-implemented method of any one of clauses 7-9, wherein proving that the second hash value is based at least in part on the first hash value comprises sequentially applying a hash operator to the provided hash values.
  11. 11. The computer-implemented method of clause 9, wherein the hash operator is a symmetric hash operator.
  12. 12. The computer-implemented method of any one of clauses 7-11, wherein the second digest comprises one or more recomputed nodes that were border nodes in the first version of the journal and non-border nodes of the first version of the journal in forming the second version of the journal were not recalculated.
  13. 13. The computer-implemented method of any one of clauses 7-12, further comprising:
    • receiving a request to provide information proving that the entry is unmodified and stored in the second version of the journal, the request including at least one of information indicative of a location of the entry or information indicative of the first version of the journal , includes.
  14. 14. A non-transitory computer-readable storage medium storing executable instructions that, when executed by one or more processors of a computer system, cause the computer system to do at least the following:
    • Storing an entry in a first version of a journal, the first version of the Journals after saving the entry includes:
      • a plurality of leaf nodes, a leaf node of the plurality of leaf nodes comprising a hash value based at least in part on a hash value of a previous node in the plurality of leaf nodes;
      • a hierarchy of interior nodes, an interior node of the hierarchy of interior nodes comprising a hash value based at least in part on hash values of one or more children of the interior node;
    • providing a first digest of the first version of the journal, the first digest being usable to prove that the entry is unmodified and stored in the first version of the journal;
    • providing a second digest of a second version of the journal; and
    • providing hash values sufficient to demonstrate that the second digest is based at least in part on information contained in the first digest and that the entry is unmodified and stored in the second version of the journal.
  15. 15. The non-transitory computer-readable storage medium of clause 14, wherein the provided hashes are sufficient if the provided hashes can be used with an additional hash to compute the second digest.
  16. 16. The non-transitory computer-readable storage medium of clause 15, wherein the additional hash value is from a leaf node of the journal.
  17. 17. The non-transitory computer-readable storage medium of any one of clauses 14-16, wherein establishing that the one or more entries are unchanged comprises determining that a leaf node of the journal is based at least in part on a hash value based at least in part on the entry was calculated based.
  18. 18. The non-transitory computer-readable storage medium of any one of clauses 14-17, wherein proving that the second hash value is based at least in part on the first hash value comprises sequentially applying a symmetric hash operator to the provided hash values.
  19. 19. The non-transitory computer-readable storage medium of any one of clauses 14-18, wherein the second digest comprises one or more nodes that were border nodes in the first version of the journal, and non-border nodes of the first version of the journal are not recalculated.
  20. 20. The non-transitory computer-readable storage medium of any one of clauses 14-19, wherein the non-transitory computer-readable storage medium stores thereon further executable instructions that, as a result of being executed by one or more processors of the computer system, cause the computer system to do at least one of the following:
    • receiving a request to provide information proving that the entry is unmodified and stored in the second version of the journal, the request including at least one of information indicative of a location of the entry or information indicative of the first version of the journal , includes.
  21. 21. System comprising:
    • at least one processor; and
    • a memory comprising instructions that, in response to execution by the at least one processor, cause the system to do at least one of the following:
      • storing an entry in a journal, wherein after storing the entry the journal comprises a hierarchy of nodes, a node of the hierarchy of nodes comprising a hash value computed by a symmetric hash operator limited to a first hash value of a first child node and a second hash value of a second child node; and
      • providing a list of hash values of nodes of the hierarchy, the list of hash values sufficient for cryptographic proof that the entry was stored in the journal.
  22. 22. The system of clause 21, wherein the list of hash values is sufficient if a digest value can be computed by further applying the symmetric hash operator to hash values of the list.
  23. 23. The system of clause 21 or 22, wherein the output of the symmetric hash operator when applied to the first and second operands is equivalent regardless of an order of the first and second operands.
  24. 24. The system according to clause 23, wherein the output of the symmetric hash operator is at least based at least in part on a sorting and concatenation of the first and second operands.
  25. 25. The system of clause 23 or 24, wherein the output of the symmetric hash operator is equivalent to the first operand if the second operand is zero.
  26. 26. A computer-implemented method, comprising:
    • storing an entry in a journal, wherein after storing the entry the journal comprises a hierarchy of nodes, a node of the hierarchy of nodes comprising a hash value computed by a symmetric hash operator limited to a first hash value of a first child node and a second hash value of a second child node; and
    • providing a list of hash values of nodes of the hierarchy, the list of hash values sufficient for cryptographic proof that the entry was stored in the journal.
  27. 27. The computer-implemented method of clause 26, wherein the list of hash values is sufficient if a digest value can be computed by further applying the symmetric hash operator to hash values of the list.
  28. 28. The computer-implemented method of clause 26 or 27, wherein the output of the symmetric hash operator when applied to the first and second operands is equivalent regardless of an order of the first and second operands.
  29. 29. The computer-implemented method of clause 28, wherein the output of the symmetric hash operator is based at least in part on a sorting and concatenation of the first and second operands.
  30. 30. The computer-implemented method of clause 29, wherein a hash is computed from the concatenation of the first and second operands.
  31. 31. The computer-implemented method of any one of clauses 28, wherein the output of the symmetric hash operator is equivalent to the first operand when the second operand is zero.
  32. 32. The computer-implemented method of any one of clauses 26-31, wherein the hierarchy of nodes comprises a leaf node, the leaf node comprising a reference to the entry and a hash value based at least in part on application of the symmetric hash operator to an entry -Hash and a hash value based on a second leaf node.
  33. 33. The computer-implemented method of any one of clauses 26-32, wherein the cryptographic proof is based at least in part on applying the symmetric hash operator to one or more hash values of the list of hash values.
  34. 34. A non-transitory computer-readable storage medium storing executable instructions that, when executed by one or more processors of a computer system, cause the computer system to do at least the following:
    • storing an entry in a journal, wherein after storing the entry the journal comprises a hierarchy of nodes, a node of the hierarchy of nodes comprising a hash value computed by a symmetric hash operator limited to a first hash value of a first child node and a second hash value of a second child node; and
    • providing a list of hash values of nodes of the hierarchy, the list of hash values sufficient for cryptographic proof that the entry was stored in the journal.
  35. 35. The non-transitory computer-readable storage medium of clause 34, wherein the list of hash values is sufficient if a digest value can be computed by further applying the symmetric hash operator to hash values of the list.
  36. 36. The non-transitory computer-readable storage medium of clause 34 or 35, wherein the output of the symmetric hash operator when applied to the first and second operands is equivalent regardless of an order of the first and second operands.
  37. 37. The non-transitory computer-readable storage medium of clause 36, wherein the output of the symmetric hash operator is based at least in part on a sorting and concatenation of the first and second operands.
  38. 38. The non-transitory computer-readable storage medium of clause 37, wherein a hash is computed from the concatenation of the first and second operands.
  39. 39. The non-transitory computer-readable storage medium of any one of clause 36, wherein the output of the symmetric hash operator is equivalent to the first operand if the second operand is zero.
  40. 40. The non-transitory computer-readable storage medium of any one of clauses 34-39, wherein the hierarchy of nodes includes a leaf node, the leaf node including a reference to the entry and a hash value.
  41. 41. System comprising:
    • at least one processor; and
    • a memory comprising instructions that, in response to execution by the at least one processor, cause the system to do at least one of the following:
      • Storing an entry in a journal, wherein after storing the entry the journal comprises a hierarchy of interior nodes and an ordered plurality of leaf nodes, a leaf node of the ordered plurality of leaf nodes having a hash value based at least in part on the entry and a hash value a previous leaf node of the ordered plurality of leaf nodes; and
      • providing a list of hash values from the ordered plurality of leaf nodes, the list of hash values being sufficient to cryptographically prove that the entry was stored in the journal.
  42. 42. The system of clause 41, wherein the list of hash values is sufficient to provide cryptographic evidence that the entry and a plurality of additional entries have been stored in the journal.
  43. 43. The system of clause 41 or 42, wherein an interior node comprises a hash value based at least in part on first and second leaf nodes of the ordered plurality of leaf nodes.
  44. 44. The system of any one of clauses 41-43, wherein the hash value is computed using a symmetric hash operator.
  45. 45. A computer-implemented method, comprising:
    • storing an entry in a journal comprising a hierarchy of interior nodes and a plurality of leaf nodes, a second leaf node of the plurality of leaf nodes comprising a hash value based at least in part on the entry and a hash value of a first leaf node of the plurality based on leaf nodes; and
    • providing a list of hash values from the plurality of leaf nodes, the list of hash values being sufficient to establish that the entry has been stored in the journal.
  46. 46. The computer-implemented method of clause 45, further comprising:
    • providing the list of hash values in response to a request to prove that the entry was journaled.
  47. 47. The computer-implemented method of clause 45 or 46, wherein the entry indicates a database transaction.
  48. 48. The computer-implemented method of any one of clauses 45-47, wherein the list of hash values is provided to a client as evidence that the entry and a plurality of additional entries have been stored in the journal.
  49. 49. A computer-implemented method according to any one of clauses 45-48, further comprising:
    • computing a hash value for an interior node based at least in part on the first and second leaf nodes, the first and second leaf nodes being children of the interior node.
  50. 50. The computer-implemented method of any one of clauses 45-49, further comprising:
    • computing the hash value of the second leaf node based at least in part on a symmetric hash operator.
  51. 51. The computer-implemented method of any one of clauses 45-50, wherein the list of hash values comprises a hash value for a leaf node prior to the first and second leaf nodes.
  52. 52. The computer-implemented method of any one of clauses 45-51, wherein the list of hash values is sufficient if a digest value can be computed by further applying a symmetric hash operator to hash values of the list.
  53. 53. The computer-implemented method of any one of clauses 45-52, wherein the plurality of leaf nodes comprises a digest leaf node, the digest leaf node comprising a hash value based at least in part on hash values of the first and second leaf nodes.
  54. 54. Non-transitory computer-readable storage medium storing executable instructions which, when executed by one or more processors of a computer system cause the computer system to do at least the following:
    • Storing an entry in a journal, wherein after storing the entry the journal comprises a hierarchy of interior nodes and a plurality of leaf nodes, a first leaf node of the ordered plurality of leaf nodes having a hash value based at least in part on the entry and a hash value a second leaf node of the plurality of leaf nodes; and
    • providing a list of hash values from the plurality of leaf nodes, the list of hash values being usable for cryptographic proof that the entry was stored in the journal.
  55. 55. The non-transitory computer-readable storage medium of clause 54, wherein the executable instructions further comprise executable instructions that, when executed by the one or more processors, cause the computer system to at least do the following:
    • providing the list of hash values in response to a request to prove that the entry was journaled.
  56. 56. The non-transitory computer-readable storage medium of clause 54 or 55, wherein the executable instructions further comprise executable instructions that, when executed by the one or more processors, cause the computer system to at least do the following:
    • computing a hash value for an interior node based at least in part on the first and second leaf nodes, the first and second leaf nodes being children of the interior node.
  57. 57. The non-transitory computer-readable storage medium of any one of clauses 54-56, wherein the executable instructions further comprise executable instructions that, when executed by the one or more processors, cause the computer system to at least do the following:
    • computing the hash value of the first leaf node based at least in part on a symmetric hash operator.
  58. 58. The non-transitory computer-readable storage medium of any one of clauses 54-57, wherein the list of hash values includes a hash value for a leaf node prior to the first and second leaf nodes.
  59. 59. The non-transitory computer-readable storage medium of any one of clauses 54-58, wherein the list of hash values is sufficient if a digest value can be computed by further applying a symmetric hash operator to hash values of the list.
  60. 60. The non-transitory computer-readable storage medium of any one of clauses 54-59, wherein the plurality of leaf nodes comprises a digest leaf node, the digest leaf node comprising a hash value based at least in part on hash values of the first and second leaf nodes.
  61. 61. System comprising:
    • at least one processor; and
    • a memory comprising instructions that, in response to execution by the at least one processor, cause the system to do at least one of the following:
      • storing a first entry and a second entry in a journal, wherein after storing the first entry and the second entry, the journal comprises a plurality of leaf nodes and a hierarchy of interior nodes, a leaf node of the plurality of leaf nodes having a reference to the first entry and a hash value based at least in part on the first entry;
      • in response to a request to delete the first entry from the journal, removing the reference to the first entry from the leaf node, the leaf node retaining the hash value after removing the reference; and
      • Providing a list of hash values sufficient to prove that the second entry is stored in the journal.
  62. 62. The system of clause 61, wherein the list of hash values is sufficient if a digest of the journal can be computed by further applying a symmetric hash operator to hash values of the list of hash values.
  63. 63. The system of clause 61 or 62, wherein the memory comprises further instructions that, in response to execution by the at least one processor, cause the system to at least:
    • in response to the request, providing a digest value based at least in part on the preserved hash value.
  64. 64. The system of any one of clauses 61-63, wherein the hash value of the leaf node is based at least in part on a hash value of another leaf node of the plurality of leaf nodes.
  65. 65. The system of any one of clauses 61-64, wherein a second hash value of a second leaf node is based at least in part on the hash value based at least in part on the first entry.
  66. 66. The system of any one of clauses 61-65, wherein the list of hash values includes the preserved hash value.
  67. 67. A computer-implemented method, comprising:
    • Storing a first entry and a second entry in a journal, the journal comprising a plurality of leaf nodes after storing the first entry and the second entry, a leaf node from the plurality of leaf nodes having a reference to the first entry and a hash value, based at least in part on the first entry;
    • in response to a request to delete the first entry from the journal, removing the reference to the first entry from the leaf node;
    • keeping the hash value in the leaf node after removing the reference; and
    • Providing a list of hash values sufficient to prove that the second entry is stored in the journal.
  68. 68. The computer-implemented method of clause 67, wherein the list of hashes is sufficient if a digest of the journal can be computed by further applying a symmetric hash operator to hashes of the list of hashes.
  69. 69. The computer-implemented method of either clause 67 or 68, wherein the first entry is in a nested journal.
  70. 70. The computer-implemented method of any one of clauses 67-69, wherein a second hash value of a second leaf node is based at least in part on the hash value based at least in part on the first entry.
  71. 71. The computer-implemented method of any one of clauses 67-70, further comprising:
    • Providing an additional list of hash values sufficient to prove that the first entry has been stored in the journal.
  72. 72. The computer-implemented method of any one of clauses 67-71, wherein the list of hash values includes the preserved hash value.
  73. 73. The computer-implemented method of any one of clauses 67-72, wherein the journal comprises a digest based at least in part on the preserved hash value.
  74. 74. A non-transitory computer-readable storage medium storing executable instructions that, when executed by one or more processors of a computer system, cause the computer system to do at least the following:
    • Storing a first entry and a second entry in a journal, the journal comprising a plurality of leaf nodes after storing the first entry and the second entry, a leaf node from the plurality of leaf nodes having a reference to the first entry and a hash value, based at least in part on the first entry;
    • in response to a request to delete the first entry from the journal, removing the reference to the first entry from the leaf node;
    • keeping the hash value in the leaf node after removing the reference; and
    • Providing a list of hash values sufficient to prove that the second entry is stored in the journal.
  75. 75. The non-transitory computer-readable storage medium of clause 74, wherein the list of hashes is sufficient if a digest of the journal can be computed by further applying a symmetric hash operator to hashes of the list of hashes.
  76. 76. The non-transitory computer-readable storage medium of clause 74 or 75, the non-transitory computer-readable storage medium storing thereon further executable instructions that, as a result of being executed by the one or more processors, cause the computer system to at least do the following:
    • in response to the request, providing an indication that the first entry has been deleted from the journal.
  77. 77. Non-transitory computer-readable storage medium according to any one of clauses 74-76, wherein the hash value of the leaf node is based at least in part on a hash value of another leaf node of the plurality of leaf nodes.
  78. 78. The non-transitory computer-readable storage medium of any one of clauses 74-77, the non-transitory computer-readable storage medium storing thereon further executable instructions that, as a result of being executed by the one or more processors, cause the computer system to do at least one of the following:
    • Providing an additional list of hash values sufficient to prove that the first entry has been stored in the journal.
  79. 79. The non-transitory computer-readable storage medium of any of clauses 74-78, wherein the list of hash values includes the preserved hash value.
  80. 80. The non-transitory computer-readable storage medium of any one of clauses 74-79, wherein the journal comprises a digest based at least in part on the preserved hash value.

Die verschiedenen Ausführungsformen können ferner in einem breiten Spektrum von Betriebsumgebungen implementiert sein, die in einigen Fällen einen oder mehrere Benutzercomputer, Rechenvorrichtungen oder Verarbeitungsvorrichtungen umfassen können, die zum Betrieb einer beliebigen Anzahl von Anwendungen verwendet werden können. In einer Ausführungsform beinhalten Benutzer- oder Client-Vorrichtungen eine beliebige Anzahl von Computern, wie Desktop-, Laptop- oder Tablet-Computer, auf denen ein Standardbetriebssystem ausgeführt wird, sowie zelluläre (mobile), drahtlose und tragbare Vorrichtungen, auf denen mobile Software ausgeführt wird und die in der Lage sind, eine Anzahl von Netzwerk- und Nachrichtenübermittlungsprotokollen zu unterstützen, und ein solches System beinhaltet auch eine Anzahl von Arbeitsstationen, auf denen eine Vielfalt von handelsüblichen Betriebssystemen und andere bekannte Anwendungen für Zwecke wie etwa Entwicklung und Datenbankverwaltung ausgeführt werden. In einer Ausführungsform beinhalten diese Vorrichtungen auch andere elektronische Vorrichtungen, wie Dummy-Endgeräte, Thin-Clients, Spielsysteme und andere Vorrichtungen, die über ein Netzwerk kommunizieren können, und virtuelle Vorrichtungen, wie etwa virtuelle Maschinen, Hypervisoren, Software-Container, die eine Virtualisierung auf Betriebssystemebene verwenden, und andere virtuelle Vorrichtungen oder nichtvirtuelle Vorrichtungen, die eine Virtualisierung unterstützen, die über ein Netzwerk kommunizieren kann.The various embodiments may also be implemented in a wide variety of operating environments, which in some cases may include one or more user computers, computing devices, or processing devices that may be used to operate any number of applications. In one embodiment, user or client devices include any number of computers, such as desktop, laptop, or tablet computers running a standard operating system, as well as cellular (mobile), wireless, and handheld devices running mobile software and capable of supporting a number of network and messaging protocols, and such a system also includes a number of workstations running a variety of commercial operating systems and other well-known applications for purposes such as development and database management. In one embodiment, these devices also include other electronic devices such as dummy terminals, thin clients, gaming systems and other devices that can communicate over a network, and virtual devices such as virtual machines, hypervisors, software containers that support virtualization at the operating system level, and other virtual devices or non-virtual devices that support virtualization that can communicate over a network.

In einer Ausführungsform nutzt ein System mindestens ein Netzwerk, das dem Fachmann zur Unterstützung der Kommunikation unter Verwendung eines beliebigen einer Vielfalt von handelsüblichen Protokollen bekannt wäre, wie etwa Transmission Control Protocol/Internet Protocol („TCP/IP“), User Datagram Protocol („UDP“), Protokolle, die in verschiedenen Schichten des Open System Interconnection („OSI“)-Modells betrieben werden, File Transfer Protocol („FTP“), Universal Plug and Play („UPnP“), Network File System („NFS“), Common Internet File System („CIFS“) und andere Protokolle. Das Netzwerk ist in einer Ausführungsform ein lokales Netzwerk, ein Weitbereichsnetzwerk, ein virtuelles privates Netzwerk, das Internet, ein Intranet, ein Extranet, ein öffentliches Fernsprechwählnetz, ein Infrarotnetzwerk, ein drahtloses Netzwerk, ein Satellitennetzwerk und eine beliebige Kombination davon. In einer Ausführungsform wird ein verbindungsorientiertes Protokoll verwendet, um zwischen Netzwerkendpunkten zu kommunizieren, sodass das verbindungsorientierte Protokoll (manchmal als verbindungsbasiertes Protokoll bezeichnet) in der Lage ist, Daten in einem geordneten Strom zu übertragen. In einer Ausführungsform kann ein verbindungsorientiertes Protokoll zuverlässig oder unzuverlässig sein. Beispielsweise ist das TCP-Protokoll ein zuverlässiges verbindungsorientiertes Protokoll. Asynchronous Transfer Mode („ATM“) und Frame Relay sind unzuverlässige verbindungsorientierte Protokolle. Verbindungsorientierte Protokolle stehen im Gegensatz zu paketorientierten Protokollen wie UDP, die Pakete ohne garantierte Reihenfolge übertragen.In one embodiment, a system utilizes at least one network that would be known to those skilled in the art to support communications using any of a variety of commercially available protocols, such as Transmission Control Protocol/Internet Protocol ("TCP/IP"), User Datagram Protocol (" UDP"), protocols operating in various layers of the Open System Interconnection ("OSI") model, File Transfer Protocol ("FTP"), Universal Plug and Play ("UPnP"), Network File System ("NFS") ), Common Internet File System (“CIFS”) and other protocols. The network, in one embodiment, is a local area network, a wide area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network, a satellite network, and any combination thereof. In one embodiment, a connection-oriented protocol is used to communicate between network endpoints such that the connection-oriented protocol (sometimes referred to as a connection-based protocol) is able to transmit data in an ordered stream. In one embodiment, a connection-oriented protocol can be reliable or unreliable. For example, the TCP protocol is a reliable, connection-oriented protocol. Asynchronous Transfer Mode ("ATM") and Frame Relay are unreliable connection-oriented protocols. Connection-oriented protocols are in contrast to packet-oriented protocols such as UDP, which transmit packets without a guaranteed order.

In einer Ausführungsform nutzt das System einen Webserver, der eine oder mehrere einer Vielfalt von Server- oder Mid-Tier-Anwendungen ausführt, einschließlich Hypertext-Transfer-Protocol(„HTTP“)-Server, FTP-Server, Common-Gateway-Interface(„CGI“)-Server, Datenserver, Java-Server, Apache-Server und Geschäftsanwendungsserver. In einer Ausführungsform sind der eine oder die mehreren Server auch in der Lage, Programme oder Skripte als Reaktion auf Anfragen von Benutzervorrichtungen auszuführen, wie etwa durch Ausführen einer oder mehrerer Webanwendungen, die als ein oder mehrere Skripte oder Programme implementiert sind, die in einer beliebigen Programmiersprache, wie Java®, C, C# oder C ++ oder einer beliebigen Skriptsprache wie Ruby, PHP, Perl, Python oder TCL sowie Kombinationen davon geschrieben sind. In einer Ausführungsform beinhalten der eine oder die mehreren Server auch Datenbankserver, einschließlich, ohne Einschränkung, die handelsüblichen von Oracle®, Microsoft®, Sybase® und IBM® sowie Open-Source-Server wie etwa MySQL, Postgres, SQLite, MongoDB und jeden anderen Server, der in der Lage ist, strukturierte oder unstrukturierte Daten zu speichern, abzurufen und auf sie zuzugreifen. In einer Ausführungsform beinhaltet ein Datenbankserver tabellenbasierte Server, dokumentenbasierte Server, unstrukturierte Server, relationale Server, nichtrelationale Server oder Kombinationen dieser und/oder anderer Datenbankserver.In one embodiment, the system utilizes a web server running one or more of a variety of server or mid-tier applications, including Hypertext Transfer Protocol ("HTTP") server, FTP server, Common Gateway Interface( "CGI") servers, data servers, Java servers, Apache servers and business application servers. In one embodiment, the one or more servers are also capable of executing programs or scripts in response to requests from user devices, such as by running one or more web applications implemented as one or more scripts or programs running in any programming language such as Java® , C, C# or C++ or any scripting language such as Ruby, PHP, Perl, Python or TCL and combinations thereof. In one embodiment, the one or more servers also include database servers including, without limitation, off-the-shelf Oracle® , Microsoft®, Sybase® and IBM® as well as open source servers such as MySQL, Postgres, SQLite, MongoDB and any others Server capable of storing structured or unstructured data and access them. In one embodiment, a database server includes table-based servers, document-based servers, unstructured servers, relational servers, non-relational servers, or combinations of these and/or other database servers.

In einer Ausführungsform beinhaltet das System eine Vielfalt von Datenspeichern und anderen Hauptspeicher- und Speichermedien, wie vorstehend erörtert, die sich an einer Vielfalt von Orten befinden können, wie etwa auf einem Speichermedium, das sich lokal auf (und/oder resident in) einem oder mehreren der Computer oder entfernt von einem oder allen Computern über das gesamte Netzwerk befindet. In einer Ausführungsform befinden sich die Informationen in einem dem Fachmann bekannten Speicherbereichsnetzwerk (Storage-Area Network, „SAN“), und in ähnlicher Weise werden alle notwendigen Dateien zur Durchführung der den Computern, Servern oder anderen Netzwerkvorrichtungen zugeschriebenen Funktionen nach Bedarf lokal und oder entfernt gespeichert. In einer Ausführungsform, in der ein System computergestützte Vorrichtungen beinhaltet, kann jede derartige Vorrichtung Hardwareelemente beinhalten, die elektrisch über einen Bus gekoppelt sind, wobei die Elemente beispielsweise mindestens eine Zentralverarbeitungseinheit (central processing unit - „CPU“ oder „Prozessor“), mindestens eine Eingabevorrichtung (z. B. eine Maus, eine Tastatur, eine Steuerung, einen Touchscreen oder ein Ziffernfeld), mindestens eine Ausgabevorrichtung (z. B. eine Anzeigevorrichtung, einen Drucker oder einen Lautsprecher), mindestens eine Speichervorrichtung wie etwa Festplattenlaufwerke, optische Speichervorrichtungen und Solid-State- Storage-Vorrichtungen wie Direktzugriffsspeicher (random access memory - „RAM“) oder Festwertspeicher (read-only memory - „ROM“) sowie Wechselmedienvorrichtungen, Speicherkarten, Flash-Karten usw. und verschiedene Kombinationen davon beinhalten.In one embodiment, the system includes a variety of data storage and other main storage and storage media, as discussed above, which may reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or located on several of the computers or remotely from any or all computers across the network. In one embodiment, the information resides on a storage-area network (“SAN”) known to those skilled in the art, and similarly, all files necessary to perform the functions attributed to the computers, servers, or other network devices are local and or removed as needed saved. In an embodiment in which a system includes computerized devices, each such device may include hardware elements electrically coupled via a bus, the elements including, for example, at least one central processing unit (central processing unit - "CPU" or "processor"), at least one input device (e.g., a mouse, keyboard, controller, touch screen, or keypad), at least one output device (e.g., a display device, printer, or speaker), at least one storage device, such as hard drives, optical storage devices, and Solid state storage devices such as random access memory (“RAM”) or read-only memory (“ROM”), as well as removable media devices, memory cards, flash cards, etc., and various combinations thereof.

In einer Ausführungsform beinhaltet eine derartige Vorrichtung auch ein Lesegerät für computerlesbare Speichermedien, eine Kommunikationsvorrichtung (z. B. ein Modem, eine Netzwerkkarte (drahtlos oder drahtgebunden), eine Infrarotkommunikationsvorrichtung usw.) und Arbeitsspeicher, wie vorstehend beschrieben, wobei das Lesegerät für computerlesbare Speichermedien mit einem computerlesbaren Speichermedium verbunden ist oder konfiguriert ist, ein computerlesbares Speichermedium aufzunehmen, das entfernte, lokale, feste und/oder Wechselspeichervorrichtungen sowie Speichermedien zum temporären und/oder dauerhafteren Enthalten, Speichern, Übertragen und Abrufen von computerlesbaren Informationen darstellt. In einer Ausführungsform beinhalten das System und verschiedene Vorrichtungen typischerweise auch eine Anzahl von Softwareanwendungen, Modulen, Diensten oder anderen Elementen, die sich innerhalb mindestens einer Arbeitsspeichervorrichtung befinden, einschließlich eines Betriebssystems und Anwendungsprogrammen, wie etwa einer Client-Anwendung oder eines Webbrowsers. In einer Ausführungsform wird kundenspezifische Hardware verwendet und/oder bestimmte Elemente sind in Hardware, Software (einschließlich portabler Software, wie etwa Applets) oder beiden implementiert. In einer Ausführungsform werden Verbindungen zu anderen Rechenvorrichtungen wie Netzwerk-Ein-/Ausgabevorrichtungen eingesetzt.In one embodiment, such a device also includes a computer-readable media reader, a communications device (e.g., a modem, network card (wireless or wired), infrared communications device, etc.) and memory as described above, wherein the computer-readable media reader connected to or configured to include a computer-readable storage medium representing remote, local, fixed and/or removable storage devices and storage media for temporarily and/or more permanently containing, storing, transmitting and retrieving computer-readable information. In one embodiment, the system and various devices also typically include a number of software applications, modules, services, or other elements residing within at least one memory device, including an operating system and application programs, such as a client application or a web browser. In one embodiment, custom hardware is used and/or certain elements are implemented in hardware, software (including portable software such as applets), or both. In one embodiment, connections to other computing devices such as network input/output devices are employed.

In einer Ausführungsform beinhalten Speichermedien und computerlesbare Medien, die Code oder Teile von Code enthalten, alle geeigneten Medien, die im Stand der Technik bekannt oder verwendet werden, einschließlich, ohne aber auf diese beschränkt zu sein Speichermedien und Kommunikationsmedien, wie etwa flüchtige und nichtflüchtige, entfernbare und nichtentfernbare Medien, die in einem beliebigen Verfahren oder einer beliebigen Technologie zur Speicherung und/oder Übertragung von Informationen wie etwa computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten implementiert sind, einschließlich RAM, ROM, elektrisch löschbarem programmierbarem Nur-Lese-Speicher (Electrically Erasable Programmable Read-Only Memory - „EEPROM“), Flash-Speicher oder anderer Speichertechnologie, Compact Disc Read-Only Memory („CD-ROM“), Digital Versatile Disk (DVD) oder anderer optischer Speicher, Magnetkassetten, Magnetband, Magnetplattenspeicher oder anderer Magnetspeichervorrichtungen oder jedes anderen Mediums, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das die Systemvorrichtung zugreifen kann. Basierend auf der hier bereitgestellten Offenbarung und den hier bereitgestellten Lehren wird ein Durchschnittsfachmann andere Wege und/oder Verfahren zum Implementieren der verschiedenen Ausführungsformen kennen.In one embodiment, storage media and computer-readable media that contain code or portions of code include any suitable media known or used in the art, including but not limited to storage media and communication media, such as volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information, such as computer-readable instructions, data structures, program modules, or other data, including RAM, ROM, electrically erasable programmable read-only memory ( Electrically Erasable Programmable Read-Only Memory - "EEPROM"), flash memory or other storage technology, Compact Disc Read-Only Memory ("CD-ROM"), Digital Versatile Disk (DVD) or other optical storage, magnetic cassette, magnetic tape, magnetic disk storage or other magnetic storage devices n or any other medium that can be used to store the desired information and that can be accessed by the system device. Based on the disclosure and teachings provided herein, one of ordinary skill in the art will know of other ways and/or methods of implementing the various embodiments.

Die Beschreibung und die Zeichnungen sind daher eher veranschaulichend als einschränkend zu betrachten. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom breiteren Geist und Schutzumfang der Erfindung, wie in den Ansprüchen dargelegt, abzuweichen.The specification and drawings are, therefore, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes can be made thereto without departing from the broader spirit and scope of the invention as set forth in the claims.

Andere Variationen sind im Sinne der vorliegenden Offenbarung. Obwohl die vorgestellten Techniken verschiedene Modifikationen und alternative Konstruktionen zulassen, sind bestimmte veranschaulichte Ausführungsformen in den Zeichnungen gezeigt und vorstehend im Detail beschrieben worden. Es sollte jedoch verstanden werden, dass nicht beabsichtigt ist, die Erfindung auf die spezifische(n) offenbarte(n) Form(en) zu beschränken, sondern dass im Gegenteil beabsichtigt ist, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und den Anwendungsbereich der Erfindung fallen, wie sie in den beigefügten Ansprüchen definiert sind.Other variations are within the spirit of the present disclosure. While the techniques presented are susceptible to various modifications and alternative constructions, certain illustrative embodiments have been shown in the drawings and have been described above in detail. However, it should be understood that it is not intended to limit the invention to the specific to the form(s) disclosed, but on the contrary the intention is to cover all modifications, alternative constructions and equivalents as may be included within the spirit and scope of the invention as defined in the appended claims.

Die Verwendung der Begriffe „ein“, „eine“, „einer“ und „eines“ sowie von „der“, „die“ und „das“ und ähnlicher Bezugnahmen im Kontext der Beschreibung der offenbarten Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) ist so zu verstehen, dass sie sowohl den Singular als auch den Plural abdecken, es sei denn, es wird hier etwas anderes angegeben oder der Kontext steht dazu eindeutig im Widerspruch. In ähnlicher Weise ist die Verwendung des Begriffs „oder“ so zu verstehen, dass er „und/oder“ bedeutet, es sei denn, der Kontext steht dazu ausdrücklich im Widerspruch. Die Begriffe „umfassend“, „aufweisend“, „beinhaltend“ und „enthaltend“ sind, sofern nicht anders angegeben, als offene Begriffe zu verstehen (d. h. im Sinne von „einschließlich, aber nicht beschränkt auf“). Der Begriff „verbunden“ ist, wenn er unverändert bleibt und sich auf physische Verbindungen bezieht, so zu verstehen, dass etwas teilweise oder vollständig in etwas enthalten, an etwas befestigt oder mit etwas zusammengefügt ist, auch wenn etwas dazwischen liegt. Die Nennung von Wertebereichen soll hier lediglich als Kurzverfahren dienen, um jeden einzelnen Wert, der in den Bereich fällt, einzeln zu bezeichnen, sofern hier nichts anderes angegeben ist, und jeder einzelne Wert ist in die Beschreibung aufgenommen, als wäre er hier einzeln genannt. Die Verwendung des Begriffs „Satz“ (z. B. „ein Satz von Elementen“) oder „Teilsatz“, sofern nicht anders angegeben oder im Widerspruch zum Kontext, ist als eine nicht leere Sammlung zu verstehen, die ein oder mehrere Bestandteile umfasst. Ferner bezeichnet der Begriff „Teilsatz“ eines entsprechenden Satzes, sofern nicht anders angegeben oder im Widerspruch zum Kontext, nicht notwendigerweise einen echten Teilsatz des entsprechenden Satzes, sondern der Teilsatz und der entsprechende Satz können gleich sein. Die Verwendung des Ausdrucks „basierend auf“ bedeutet, sofern nicht ausdrücklich anders angegeben oder aus dem Kontext ersichtlich, „mindestens teilweise basierend auf und ist nicht beschränkt auf „ausschließlich basierend auf“.The use of the terms "a", "an", "an" and "an" as well as "the", "the" and "the" and similar references in the context of the description of the disclosed embodiments (particularly in the context of the following claims) shall be understood to cover both the singular and the plural unless otherwise indicated herein or unless the context clearly conflicts. Similarly, use of the term “or” should be understood to mean “and/or” unless the context expressly conflicts therewith. The terms “comprising”, “comprising”, “including” and “including” are to be construed as open-ended (i.e., including but not limited to) unless otherwise specified. The term “connected”, when unchanged and referring to physical connections, is to be understood as being partially or fully contained within, attached to, or joined to something, even if something is in between. The naming of ranges of values herein is intended solely as a shorthand technique to individually identify each individual value that falls within the range, unless otherwise specified herein, and each individual value is included in the specification as if it were individually identified herein. The use of the term "set" (e.g., "a set of elements") or "subset", unless otherwise specified or conflicting with the context, is to be understood as a non-empty collection comprising one or more constituents. Further, unless otherwise indicated or in conflict with the context, the term “subclause” of a corresponding sentence does not necessarily mean a true subclause of the corresponding sentence, but the subclause and the corresponding sentence may be the same. The use of the phrase "based on" means "based at least in part on" and is not limited to "based solely on" unless expressly stated otherwise or apparent from the context.

Konjunktionale Formulierungen, wie etwa Sätze der Form „mindestens eines von A, B und C“ werden, sofern nicht ausdrücklich etwas anderes angegeben ist oder der Kontext dazu eindeutig im Widerspruch steht, im Rahmen des Kontexts so verstanden, wie sie im Allgemeinen verwendet werden, um darzustellen, dass ein Element, ein Begriff usw. entweder A oder B oder C, ein beliebiger nicht leerer Teilsatz des Satzes von A und B und C oder ein beliebiger, nicht durch den Kontext widerlegter oder anderweitig ausgeschlossener Satz sein kann, der mindestens ein A, mindestens ein B oder mindestens ein C enthält. Beispielsweise bezieht sich in dem veranschaulichenden Beispiel eines Satzes mit drei Elementen der konjunktionale Ausdruck „mindestens eines von A, B und C“ auf einen beliebigen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C} und, wenn nicht ausdrücklich anders angegeben oder der Kontext dazu im Widerspruch steht, auf jeden Satz, der {A}, {B} und/oder {C} als Teilsatz aufweist (z. B. Sätze mit mehreren „A“). Somit sollen derartige konjunktionalen Formulierungen im Allgemeinen nicht implizieren, dass bestimmte Ausführungsformen erfordern, dass jeweils mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden ist. In ähnlicher Weise beziehen sich Ausdrücke wie „mindestens eines von A, B oder C“ auf dasselbe wie „mindestens eines von A, B und C“ und beziehen sich auf einen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {A, B, C}, es sei denn, eine abweichende Bedeutung wird ausdrücklich angegeben oder sie geht aus dem Kontext eindeutig hervor. Wenn nicht anders angegeben oder der Kontext im Widerspruch dazu steht, bezeichnet der Begriff „Vielzahl“ einen Zustand der Pluralität (z. B. zeigt „eine Vielzahl von Elementen“ mehrere Elemente an). Die Anzahl der Elemente in einer Vielzahl beträgt mindestens zwei, kann jedoch mehr betragen, wenn dies entweder ausdrücklich oder durch den Kontext angegeben wird.Conjunctive formulations, such as sentences of the form "at least one of A, B and C", unless expressly stated otherwise or the context clearly conflicts, are to be understood within the context as they are generally used, to represent that an element, term, etc. can be either A or B or C, any non-empty sub-sentence of the set of A and B and C, or any sentence not contradicted by context or otherwise excluded that contains at least one A, at least one B or at least one C contains. For example, in the illustrative example of a three-element sentence, the conjunctional phrase "at least one of A, B, and C" refers to any of the following sentences: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C} and, unless expressly stated otherwise or the context conflicts, any sentence containing {A}, {B} and/or { C} as a sub-sentence (e.g. sentences with multiple "A"). Thus, such conjunctional phrases are generally not intended to imply that particular embodiments require that at least one of A, at least one of B, and at least one of C be present. Similarly, phrases such as "at least one of A, B, or C" refer to the same thing as "at least one of A, B, and C" and refer to any of the following sentences: {A}, {B}, {C} , {A, B}, {A, C}, {A, B, C}, unless a different meaning is expressly stated or clear from the context. Unless otherwise specified or the context conflicts, the term "plurality" denotes a state of plurality (e.g., "a plurality of items" indicates multiple items). The number of elements in a plurality is at least two, but can be more, either where expressly indicated or where the context indicates.

Operationen von hier beschriebenen Prozessen können in jeder geeigneten Reihenfolge ausgeführt werden, sofern hier nicht anders angegeben oder der Kontext anderweitig eindeutig im Widerspruch dazu steht. In einer Ausführungsform wird ein Prozess wie etwa die hier beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon) unter der Steuerung eines oder mehrerer Computersysteme ausgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und wird als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen) implementiert, der auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon gemeinsam ausgeführt wird. In einer Ausführungsform wird der Code auf einem computerlesbaren Speichermedium gespeichert, beispielsweise in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausführbar sind. In einer Ausführungsform ist ein computerlesbares Speichermedium ein nichttransitorisches computerlesbares Speichermedium, das transitorische Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nichttransitorische Datenspeicherschaltkreise (z. B. Puffer, Cache und Warteschlangen) innerhalb von Transceivern von transitorischen Signalen einschließt. In einer Ausführungsform wird Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichttransitorischen computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen gespeichert sind, die, wenn sie durch einen oder mehrere Prozessoren eines Computersystems ausgeführt werden (d. h. als Ergebnis der Ausführung), das Computersystem veranlassen, hier beschriebene Operationen durchzuführen. Der Satz von nichttransitorischen computerlesbaren Speichermedien umfasst in einer Ausführungsform mehrere nichttransitorische computerlesbare Speichermedien, und einem oder mehreren einzelnen nichttransitorischen Speichermedien der mehreren nichttransitorischen computerlesbaren Speichermedien fehlt der gesamte Code, während die mehreren nichttransitorischen computerlesbaren Speichermedien gemeinsam den gesamten Code speichern. In einer Ausführungsform werden die ausführbaren Anweisungen derart ausgeführt, dass verschiedene Anweisungen durch verschiedene Prozessoren ausgeführt werden - in einer Ausführungsform beispielsweise speichert ein nichttransitorisches computerlesbares Speichermedium Anweisungen, und eine Haupt-CPU führt einige der Anweisungen aus, während eine Grafikprozessoreinheit andere Anweisungen ausführt. In einer anderen Ausführungsform weisen verschiedene Komponenten eines Computersystems separate Prozessoren auf, und verschiedene Prozessoren führen unterschiedliche Teilsätze der Anweisungen aus.Operations of processes described herein may be performed in any suitable order, unless otherwise noted herein or the context otherwise clearly contradicts. In one embodiment, a process, such as the processes described herein (or variations and/or combinations thereof), is executed under the control of one or more computer systems configured with executable instructions and is expressed as code (e.g., executable instructions, a one or more computer programs or one or more applications) that executes collectively on one or more processors, hardware, or combinations thereof. In one embodiment, the code is stored on a computer-readable storage medium, for example in the form of a computer program comprising a plurality of instructions executable by one or more processors. In one embodiment, a computer-readable storage medium is a non-transitory computer-readable storage medium that excludes transient signals (e.g., propagating transient electrical or electromagnetic transmission) but non-transitory data storage circuitry (e.g., buffers, cache, and queues) within transceivers of transient includes signals. In one embodiment, code (e.g., executable code or source code) is stored on a set of one or more non-transitory computer-readable storage media storing executable instructions that, when executed by one or more processors of a computer system (ie, as result of execution), causing the computer system to perform operations described herein. The set of non-transitory computer-readable storage media, in one embodiment, includes multiple non-transitory computer-readable storage media, and one or more individual non-transitory storage media of the multiple non-transitory computer-readable storage media lacks all code, while the multiple non-transitory computer-readable storage media collectively store all code. In one embodiment, the executable instructions are executed such that different instructions are executed by different processors - for example, in one embodiment, a non-transitory computer-readable storage medium stores instructions, and a main CPU executes some of the instructions while a graphics processing unit executes other instructions. In another embodiment, different components of a computer system have separate processors, and different processors execute different subsets of instructions.

Dementsprechend sind in einer Ausführungsform Computersysteme so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder gemeinsam Operationen von hier beschriebenen Prozessen durchführen, und solche Computersysteme sind mit anwendbarer Hardware und/ oder Software konfiguriert, die die Durchführung der Operationen ermöglichen. Ferner ist ein Computersystem in einer Ausführungsform der vorliegenden Offenbarung eine einzelne Vorrichtung und in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich betrieben werden, sodass das verteilte Computersystem die hier beschriebenen Operationen durchführt und sodass eine einzelne Vorrichtung nicht alle Operationen durchführt.Accordingly, in one embodiment, computer systems are configured to implement one or more services that individually or collectively perform operations of processes described herein, and such computer systems are configured with applicable hardware and/or software that enable the operations to be performed. Furthermore, in one embodiment of the present disclosure, a computer system is a single device and in another embodiment is a distributed computer system that includes multiple devices that operate differently such that the distributed computer system performs the operations described herein and such that a single device does not perform all of the operations .

Die Verwendung beliebiger und aller hier bereitgestellten Beispiele oder beispielhafter Formulierungen (z. B. „wie etwa“) soll lediglich Ausführungsformen der Erfindung besser beleuchten und stellt keine Einschränkung des Schutzumfangs der Erfindung dar, sofern nichts anderes beansprucht wird. Keine Formulierung in der Beschreibung sollte so verstanden werden, dass sie ein nicht beanspruchtes Element als wesentlich für die praktische Anwendung der Erfindung angibt.The use of any and all examples or exemplary language (e.g., "such as") provided herein is merely intended to better elucidate embodiments of the invention and does not limit the scope of the invention unless otherwise claimed. No language in the specification should be taken to indicate any non-claimed element as essential to the practice of the invention.

Ausführungsformen dieser Offenbarung sind hier beschrieben, einschließlich der den Erfindern bekannten besten Art und Weise, die Erfindung auszuführen. Variationen dieser Ausführungsformen können dem Durchschnittsfachmann beim Lesen der vorstehenden Beschreibung offensichtlich werden. Die Erfinder erwarten von Fachmännern, dass sie solche Variationen in geeigneter Weise anwenden, und die Erfinder möchten, dass Ausführungsformen der vorliegenden Offenbarung auf andere Weise als hier konkret beschrieben praktisch angewendet werden. Dementsprechend beinhaltet der Schutzumfang der vorliegenden Offenbarung alle Modifikationen und Äquivalente des Gegenstands, die in den beigefügten Ansprüchen genannt werden, soweit dies nach geltendem Recht zulässig ist. Darüber hinaus umschließt jede Kombination der vorstehend beschriebenen Elemente in allen möglichen Variationen davon den Schutzumfang der vorliegenden Offenbarung, sofern hier nicht anders angegeben wird oder der Kontext auf andere Weise eindeutig im Widerspruch dazu steht.Embodiments of this disclosure are described herein, including the best mode known to the inventors for carrying out the invention. Variations on these embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventors expect those skilled in the art to apply such variations as appropriate, and the inventors desire that embodiments of the present disclosure be practiced otherwise than as specifically described herein. Accordingly, the scope of the present disclosure includes all modifications and equivalents of the subject matter recited in the appended claims to the extent permitted by applicable law. Furthermore, any combination of the elements described above, in all possible variations thereof, encompasses the scope of the present disclosure, unless otherwise specified herein or the context otherwise clearly contradicts it.

Alle hier angeführten Verweise, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, sind hiermit durch Bezugnahme in dem gleichen Maße aufgenommen, als ob jeder Verweis einzeln und konkret durch Verweis aufgenommen und in ihrer Gesamtheit hier dargelegt wäre.All references cited herein, including publications, patent applications, and patents, are hereby incorporated by reference to the same extent as if each reference were individually and specifically incorporated by reference and set forth in their entirety.

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of documents cited by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturPatent Literature Cited

  • US 16/446512 [0001]US 16/446512 [0001]
  • US 16/446543 [0001]US 16/446543 [0001]
  • US 16/446528 [0001]US 16/446528 [0001]
  • US 16/446556 [0001]US 16/446556 [0001]

Claims (15)

System, Folgendes umfassend: mindestens einen Prozessor; und einen Speicher, der Anweisungen umfasst, die als Reaktion auf die Ausführung durch den mindestens einen Prozessor das System zu mindestens Folgendem veranlassen: Speichern eines ersten Eintrags und eines zweiten Eintrags in einem Journal, wobei das Journal nach Speichern des ersten Eintrags und des zweiten Eintrags eine Vielzahl von Blattknoten und eine Hierarchie von inneren Knoten umfasst, wobei ein Blattknoten aus der Vielzahl von Blattknoten einen Verweis auf den ersten Eintrag und einen Hash-Wert, der mindestens teilweise auf dem ersten Eintrag basiert, umfasst; als Reaktion auf eine Anfrage zum Löschen des ersten Eintrags aus dem Journal, Entfernen des Verweises auf den ersten Eintrag aus dem Blattknoten, wobei der Blattknoten den Hash-Wert nach dem Entfernen des Verweises aufbewahrt; und Bereitstellen einer Liste von Hash-Werten, die ausreichend ist, um nachzuweisen, dass der zweite Eintrag im Journal gespeichert ist.System comprising: at least one processor; and a memory comprising instructions that, in response to execution by the at least one processor, cause the system to do at least one of the following: storing a first entry and a second entry in a journal, wherein after storing the first entry and the second entry, the journal comprises a plurality of leaf nodes and a hierarchy of interior nodes, a leaf node of the plurality of leaf nodes having a reference to the first entry and a hash value based at least in part on the first entry; in response to a request to delete the first entry from the journal, removing the reference to the first entry from the leaf node, the leaf node retaining the hash value after removing the reference; and Providing a list of hash values sufficient to prove that the second entry is stored in the journal. System nach Anspruch 1, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest des Journals durch eine weitere Anwendung eines symmetrischen Hash-Operators auf Hash-Werte der Liste von Hash-Werten berechnet werden kann.system after claim 1 , where the list of hash values is sufficient if a digest of the journal can be computed by further applying a symmetric hash operator to hash values of the list of hash values. System nach Anspruch 1, wobei der Speicher weitere Anweisungen umfasst, die als Reaktion auf die Ausführung durch den mindestens einen Prozessor das System zu mindestens Folgendem veranlassen: als Reaktion auf die Anfrage Bereitstellen eines Digest-Werts, der mindestens teilweise auf dem aufbewahrten Hash-Wert basiert.system after claim 1 wherein the memory comprises further instructions that, in response to execution by the at least one processor, cause the system to at least: provide, in response to the request, a digest value based at least in part on the preserved hash value. System nach Anspruch 1, wobei der Hash-Wert des Blattknotens mindestens teilweise auf einem Hash-Wert eines anderen Blattknotens der Vielzahl der Blattknoten basiert.system after claim 1 , wherein the hash value of the leaf node is based at least in part on a hash value of another leaf node of the plurality of leaf nodes. System nach Anspruch 1, wobei ein zweiter Hash-Wert eines zweiten Blattknotens mindestens teilweise auf dem Hash-Wert basiert, der mindestens teilweise auf dem ersten Eintrag basiert.system after claim 1 , wherein a second hash value of a second leaf node is based at least in part on the hash value based at least in part on the first entry. System nach Anspruch 1, wobei die Liste der Hash-Werte den aufbewahrten Hash-Wert umfasst.system after claim 1 , where the list of hashes includes the preserved hash value. Computerimplementiertes Verfahren, Folgendes umfassend: Speichern eines ersten Eintrags und eines zweiten Eintrags in einem Journal, wobei das Journal nach Speichern des ersten Eintrags und des zweiten Eintrags eine Vielzahl von Blattknoten umfasst, wobei ein Blattknoten aus der Vielzahl von Blattknoten einen Verweis auf den ersten Eintrag und einen Hash-Wert, der mindestens teilweise auf dem ersten Eintrag basiert, umfasst; als Reaktion auf eine Anfrage zum Löschen des ersten Eintrags aus dem Journal, Entfernen des Verweises auf den ersten Eintrag aus dem Blattknoten; Aufbewahren des Hash-Werts im Blattknoten nach dem Entfernen des Verweises; und Bereitstellen einer Liste von Hash-Werten, die ausreichend ist, um nachzuweisen, dass der zweite Eintrag im Journal gespeichert ist.A computer-implemented method, comprising: Storing a first entry and a second entry in a journal, the journal comprising a plurality of leaf nodes after storing the first entry and the second entry, a leaf node from the plurality of leaf nodes having a reference to the first entry and a hash value, based at least in part on the first entry; in response to a request to delete the first entry from the journal, removing the reference to the first entry from the leaf node; keeping the hash value in the leaf node after removing the reference; and Providing a list of hash values sufficient to prove that the second entry is stored in the journal. Computerimplementiertes Verfahren nach Anspruch 7, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest des Journals durch eine weitere Anwendung eines symmetrischen Hash-Operators auf Hash-Werte der Liste von Hash-Werten berechnet werden kann.Computer-implemented method claim 7 , where the list of hash values is sufficient if a digest of the journal can be computed by further applying a symmetric hash operator to hash values of the list of hash values. Computerimplementiertes Verfahren nach Anspruch 7, wobei der erste Eintrag in einem verschachtelten Journal erfolgt.Computer-implemented method claim 7 , where the first entry is in a nested journal. Computerimplementiertes Verfahren nach Anspruch 7, wobei ein zweiter Hash-Wert eines zweiten Blattknotens mindestens teilweise auf dem Hash-Wert basiert, der mindestens teilweise auf dem ersten Eintrag basiert.Computer-implemented method claim 7 , wherein a second hash value of a second leaf node is based at least in part on the hash value based at least in part on the first entry. Computerimplementiertes Verfahren nach Anspruch 7, ferner Folgendes umfassend: Bereitstellen einer zusätzlichen Liste von Hash-Werten, die ausreichend ist, um nachzuweisen, dass der erste Eintrag im Journal gespeichert worden ist.Computer-implemented method claim 7 , further comprising: providing an additional list of hash values sufficient to prove that the first entry has been stored in the journal. Computerimplementiertes Verfahren nach Anspruch 7, wobei die Liste der Hash-Werte den aufbewahrten Hash-Wert umfasst.Computer-implemented method claim 7 , where the list of hashes includes the preserved hash value. Computerimplementiertes Verfahren nach Anspruch 7, wobei das Journal einen Digest umfasst, der mindestens teilweise auf dem aufbewahrten Hash-Wert basiert.Computer-implemented method claim 7 , wherein the journal includes a digest based at least in part on the preserved hash value. Nichttransitorisches computerlesbares Speichermedium, auf dem ausführbare Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Prozessoren eines Computersystems das Computersystem zu mindestens Folgendem veranlassen: Speichern eines ersten Eintrags und eines zweiten Eintrags in einem Journal, wobei das Journal nach Speichern des ersten Eintrags und des zweiten Eintrags eine Vielzahl von Blattknoten umfasst, wobei ein Blattknoten aus der Vielzahl von Blattknoten einen Verweis auf den ersten Eintrag und einen Hash-Wert, der mindestens teilweise auf dem ersten Eintrag basiert, umfasst; als Reaktion auf eine Anfrage zum Löschen des ersten Eintrags aus dem Journal, Entfernen des Verweises auf den ersten Eintrag aus dem Blattknoten; Aufbewahren des Hash-Werts im Blattknoten nach dem Entfernen des Verweises; und Bereitstellen einer Liste von Hash-Werten, die ausreichend ist, um nachzuweisen, dass der zweite Eintrag im Journal gespeichert ist.A non-transitory computer-readable storage medium storing executable instructions that, when executed by one or more processors of a computer system, cause the computer system to at least do the following: store a first entry and a second entry in a journal, wherein after storing the first entry and the second entry comprises a plurality of leaf nodes, wherein a leaf node of the plurality of leaf nodes comprises a reference to the first entry and a hash value based at least in part on the first entry; in response to a request to delete the user th entry from the journal, removing the reference to the first entry from the leaf node; keeping the hash value in the leaf node after removing the reference; and providing a list of hash values sufficient to prove that the second entry is stored in the journal. Nichttransitorisches computerlesbares Speichermedium nach Anspruch 14, wobei die Liste der Hash-Werte ausreichend ist, wenn ein Digest des Journals durch eine weitere Anwendung eines symmetrischen Hash-Operators auf Hash-Werte der Liste von Hash-Werten berechnet werden kann.Non-transitory computer-readable storage medium Claim 14 , where the list of hash values is sufficient if a digest of the journal can be computed by further applying a symmetric hash operator to hash values of the list of hash values.
DE112020002968.9T 2019-06-19 2020-06-16 DATABASE JOURNAL EDITORS Pending DE112020002968T5 (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US16/446,556 US11487733B2 (en) 2019-06-19 2019-06-19 Database journal redaction
US16/446,512 US11418345B2 (en) 2019-06-19 2019-06-19 Digest proofs in a journaled database
US16/446,556 2019-06-19
US16/446,528 2019-06-19
US16/446,543 2019-06-19
US16/446,528 US11487819B2 (en) 2019-06-19 2019-06-19 Threaded leaf nodes in database journal
US16/446,543 US11310054B2 (en) 2019-06-19 2019-06-19 Symmetric function for journaled database proof
US16/446,512 2019-06-19
PCT/US2020/037902 WO2020257177A1 (en) 2019-06-19 2020-06-16 Database journal redaction

Publications (1)

Publication Number Publication Date
DE112020002968T5 true DE112020002968T5 (en) 2022-03-24

Family

ID=71465422

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112020002968.9T Pending DE112020002968T5 (en) 2019-06-19 2020-06-16 DATABASE JOURNAL EDITORS
DE112020002967.0T Pending DE112020002967T5 (en) 2019-06-19 2020-06-16 DIGEST REPORTS IN A JOURNALIZED DATABASE

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE112020002967.0T Pending DE112020002967T5 (en) 2019-06-19 2020-06-16 DIGEST REPORTS IN A JOURNALIZED DATABASE

Country Status (2)

Country Link
DE (2) DE112020002968T5 (en)
WO (2) WO2020257177A1 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458451B2 (en) * 2009-01-20 2013-06-04 New York University Database outsourcing with access privacy
US10366247B2 (en) * 2015-06-02 2019-07-30 ALTR Solutions, Inc. Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data
US10261711B1 (en) * 2018-01-25 2019-04-16 Merck Sharp & Dohme Corp. Proof of non-tampering for stored data

Also Published As

Publication number Publication date
WO2020257174A1 (en) 2020-12-24
DE112020002967T5 (en) 2022-03-24
WO2020257177A1 (en) 2020-12-24

Similar Documents

Publication Publication Date Title
DE102019000294A1 (en) Create company-specific knowledge graphs
DE102013222384A1 (en) Context-based security screening for accessing data
DE112017006106T5 (en) Create, access, and view lineage metadata
DE202010018481U1 (en) Asynchronous Distributed Object Upload for Replicated Associative Storage Clusters
DE202015009293U1 (en) Efficient copy and paste into a collaborative spreadsheet
DE202015009874U1 (en) Implementation of semi-structured data as a first class database element
DE102015009912A1 (en) Adaptively modify content presented in electronic forms
US8768920B1 (en) Posting questions from search queries
DE102013200355A1 (en) Merging of documents based on the knowledge of a document schema
DE102012210425A1 (en) Use of a dynamically generated content-related actuality rating to provide recommendations for current content
DE112018005076T5 (en) CREATE A RANKING OF DOCUMENTS BASED ON YOUR SEMANTIC Wealth
DE102009040570A1 (en) Method and system for generating a dynamic help document
DE202012013462U1 (en) Data processing in a Mapreduce framework
DE202014011539U1 (en) System for distributed processing in a messaging platform
DE202008018623U1 (en) Control of communication within a container document
DE102017207686A1 (en) INSIGHTS IN THE SUPPORT STRATEGY
DE102012220716A1 (en) Method, data processing device and program for identifying confidential data
DE102016125804A1 (en) Including selectable application links in conversations with personal assistance modules
DE202015009292U1 (en) Generation of an activity flow
DE112021001986T5 (en) Method and system for processing data records
DE112020000927T5 (en) MANAGE SENSITIVE DATA
DE202022002899U1 (en) Metadata classification
DE102019005368A1 (en) Improve conflict resolution within synchronized constituent-based digital assets
DE112020005268T5 (en) AUTOMATICALLY GENERATE SCHEMA ANNOTATION FILES TO CONVERT NATURAL LANGUAGE QUERIES TO STRUCTURED QUERY LANGUAGE
DE112015003926T5 (en) Publish / subscribe messaging using a message structure

Legal Events

Date Code Title Description
R012 Request for examination validly filed