DE112020002967T5 - Digest-nachweise in einer journalisierten datenbank - Google Patents

Digest-nachweise in einer journalisierten datenbank Download PDF

Info

Publication number
DE112020002967T5
DE112020002967T5 DE112020002967.0T DE112020002967T DE112020002967T5 DE 112020002967 T5 DE112020002967 T5 DE 112020002967T5 DE 112020002967 T DE112020002967 T DE 112020002967T DE 112020002967 T5 DE112020002967 T5 DE 112020002967T5
Authority
DE
Germany
Prior art keywords
hash
journal
digest
version
entry
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
DE112020002967.0T
Other languages
English (en)
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,528 external-priority patent/US11487819B2/en
Priority claimed from US16/446,512 external-priority patent/US11418345B2/en
Priority claimed from US16/446,556 external-priority patent/US11487733B2/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 DE112020002967T5 publication Critical patent/DE112020002967T5/de
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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Datenbankverwaltungssystem speichert einen Eintrag in einem Journal. Nach Speichern des Eintrags umfasst das Journal eine Vielzahl von gethreadeten Blattknoten und eine Hierarchie von inneren Knoten, die Hash-Werte umfassen, die aus den gethreadeten Blattknoten berechnet wurden. Ein erster Satz von Hash-Werten wird bereitgestellt, um nachzuweisen, dass der Eintrag in einer ersten Version des Journals gespeichert ist. Ein zweiter Satz wird bereitgestellt, um nachzuweisen, dass die in der ersten Version des Journals gespeicherten Einträge unverändert und in einer zweiten Version des Journals gespeichert sind.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • 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.
  • HINTERGRUND
  • 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.
  • Figurenliste
  • 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.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden hier Systeme und Techniken beschrieben, die den Betrieb eines journalisierten Datenbankverwaltungssystems betreffen. Ein hier beschriebenes journalisiertes Datenbankverwaltungssystem pflegt eine Journal-Struktur, die einen unveränderbaren Verlauf von Transaktionen speichert, die an einer durch das System gepflegten Datensammlung durchgeführt wurden. Die journalisierte Datenbank stellt ferner verschiedene kryptografische Verifizierungsfunktionen unter Verwendung einer kryptografischen Hash-Baum-Struktur bereit, die angepasst wurde, um einen hohen Durchsatz und große Transaktionsvolumina aufrechtzuerhalten.
  • 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 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 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 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.
  • 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.
  • 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 ist jedoch auch offensichtlich, 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.
  • Wie ein Fachmann angesichts dieser Offenbarung erkennt, 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.
  • 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.
  • 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.
  • 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 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 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 Abruf Operationen 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.
  • 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.
  • 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.
  • 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.
  • 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}.
  • 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.
  • 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.
  • 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.
  • 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 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 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 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.
  • 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 gilt X · Y = Z und Y · X = Z, wobei „.“ den symmetrischen Hash-Operator 320 angibt.
  • 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 DE112020002967T5_0001
    6625 3245 = > 32456625 = > h ( 32456625 ) = > 62434993
    Figure DE112020002967T5_0002
  • Wie hier zu sehen ist, ist die Ausgabe des symmetrischen Hash-Operators 320 unabhängig von der Reihenfolge der Operanden 304, 306 gleich.
  • 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.
  • 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.
  • 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 DE112020002967T5_0003
    N u l l X = X
    Figure DE112020002967T5_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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 DE112020002967T5_0005
    { 0,7 } E { 0,8 } = { 0,8 }
    Figure DE112020002967T5_0006
    { 0,8 } E { 0,9 } = { 0,9 }
    Figure DE112020002967T5_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.
  • 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 ä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 DE112020002967T5_0008
    { 0,8 } { 0,9 } { 1,4 }
    Figure DE112020002967T5_0009
    { 1,10 } N u l l = > { 1,5 }
    Figure DE112020002967T5_0010
    { 1,2 } { 1,3 } { 2,1 }
    Figure DE112020002967T5_0011
    { 1,4 } { 1,5 } { 2,2 }
    Figure DE112020002967T5_0012
    { 2,2 } N u l l { 3,1 }
    Figure DE112020002967T5_0013
    { 2,0 } { 2,1 } { 3,0 }
    Figure DE112020002967T5_0014
    { 3,0 } { 3,1 } = > D i g e s t
    Figure DE112020002967T5_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}.
  • 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.
  • 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 mindestens einer Ausführungsform entspricht der Eintrags-Hash für den Eintrag 504 im Journal 502 dem Digest-Knoten des verschachtelten Journals 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 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.
  • 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.
  • 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 mindestens einer Ausführungsform umfasst ein Nachweis einen Eintrags-Hash und eine Anzeige, dass der Eintrags-Hash einem redigierten Eintrag entspricht.
  • 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.
  • 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.
  • 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.
  • 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 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 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.
  • Zur weiteren Veranschaulichung könnte ein Digest-Nachweis in mindestens einer Ausführungsform wie folgt ablaufen: { 0,3 } E { 0,4 } = > { 0,4 }
    Figure DE112020002967T5_0016
    { 0,4 } E { 0,5 } = > { 0,5 }
    Figure DE112020002967T5_0017
    { 0,4 } { 0,5 } = > { 1,2 }
    Figure DE112020002967T5_0018
    { 1,2 } N u l l = > { 2,1 }
    Figure DE112020002967T5_0019
    { 2,0 } { 2,1 } = > { 3,0 }
    Figure DE112020002967T5_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.
  • 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.
  • 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.
  • Aspekte des Beispiels 900 beinhalten die Verwendung eines symmetrischen Hash-Operators, wie etwa des in 3 dargestellten symmetrischen Hash-Operators.
  • Bei 902 empfängt ein journalisiertes 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Das Beispiel 900 kann durch jedes einer Vielzahl von geeigneten Systemen implementiert sein, einschließlich beispielsweise des Datenbankservers 1310, der in 13 dargestellt ist.
  • In einer beispielhaften Ausführung implementiert ein journalisiertes 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 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 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 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 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 einer weiteren Ausführungsform des beispielhaften Verfahrens entspricht die Ausgabe des symmetrischen Hash-Operators dem ersten Operanden, wenn der zweite Operand Null ist. Somit führt ein Aufruf des symmetrischen Hash-Operators mit einem Hash-Wert von X und einem Null-Wert unabhängig von der Reihenfolge der Operanden dazu, dass der symmetrische Hash-Operator einen Wert von X zurückgibt.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Das Beispiel 1000 kann durch jedes einer Vielzahl von geeigneten Systemen implementiert sein, einschließlich beispielsweise des Datenbankservers 1310, der in 13 dargestellt ist.
  • 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. 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.
  • 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 einer weiteren Ausführungsform des beispielhaften Verfahrens zeigt der Eintrag eine Datenbanktransaktion an.
  • 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 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 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 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 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 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Bei 1112 stellt das journalisierte Datenbankverwaltungssystem den angefragten Nachweis bereit. 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.
  • 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.
  • Das Beispiel 1100 kann durch jedes einer Vielzahl von geeigneten Systemen implementiert sein, einschließlich beispielsweise des Datenbankservers 1310, der in 13 dargestellt ist.
  • 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.
  • 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.
  • 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.
  • 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 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 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 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 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 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Das Beispiel 1200 kann durch jedes einer Vielzahl von geeigneten Systemen implementiert sein, einschließlich beispielsweise des Datenbankservers 1310, der in 13 dargestellt ist.
  • 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 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 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 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 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 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 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 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 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.
  • 13 veranschaulicht Aspekte eines beispielhaften Systems 1300 zur Implementierung von Aspekten gemäß einer Ausführungsform. Es ist ersichtlich, dass, obwohl ein webbasiertes System zu Erklärungszwecken verwendet wird, verschiedene Systeme verwendet werden können, 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 einer Vorrichtung betreibbar ist. 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 ist.
  • 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-Anwendungs-Programmierschnittstellen(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 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 Anfragen 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.
  • 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 einen bestimmten Aspekt der vorliegenden Offenbarung betreffen. 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.
  • 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, er greift auf die Katalogdetailinformationen zu, um Informationen über Elemente dieser Art zu erhalten, und er gibt die Informationen an den Benutzer zurück, wie etwa in einer Ergebnisliste auf einer Webseite, die dem Benutzer über einen Browser an der Benutzervorrichtung 1302 angezeigt wird. 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.
  • 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.
  • 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).
  • 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 erkennt jedoch, 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.
  • 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 mehreren 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 Blattknotens 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 basierend mindestens teilweise auf dem ersten und dem zweiten Blattknoten, 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 die mehreren 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.
  • 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.
  • 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 ist, 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 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 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 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 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 sind einem Durchschnittsfachmann andere Wege und/oder Verfahren zum Implementieren der verschiedenen Ausführungsformen ersichtlich.
  • 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 Wesen und Schutzumfang der Erfindung, wie in den Ansprüchen dargelegt, abzuweichen.
  • Andere Variationen sind im Sinne des Wesens 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 versteht sich jedoch, 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 das Wesen und den Anwendungsbereich der Erfindung fallen, wie sie in den beigefügten Ansprüchen definiert sind.
  • 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“.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 ersichtlich 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, der 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.
  • 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.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16/446512 [0001]
    • US 16/446543 [0001]
    • US 16/446528 [0001]
    • US 16/446556 [0001]

Claims (15)

  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 mehreren Einträge unverändert und in der zweiten Version des Journals gespeichert sind.
  2. System nach Anspruch 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. System nach Anspruch 2, wobei der aufbewahrte Hash-Wert einem Blattknoten des Journals entspricht.
  4. System nach Anspruch 1, wobei der Nachweis, dass der zweite Digest mindestens teilweise auf dem ersten Digest basiert, die aufeinanderfolgende Anwendung eines symmetrischen Hash-Operators auf die bereitgestellten Hash-Werte umfasst.
  5. System nach Anspruch 1, 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 berechnet wurde.
  6. System nach Anspruch 1, 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. 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; und 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. Computerimplementiertes Verfahren nach Anspruch 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. Computerimplementiertes Verfahren nach Anspruch 7, wobei der zusätzliche Hash-Wert einem Blattknoten des Journals entspricht.
  10. Computerimplementiertes Verfahren nach Anspruch 7, wobei der Nachweis, dass der zweite Hash-Wert unverändert ist und mindestens teilweise auf dem ersten Hash-Wert basiert, die aufeinanderfolgende Anwendung eines Hash-Operators auf die bereitgestellten Hash-Werte umfasst.
  11. Computerimplementiertes Verfahren nach Anspruch 9, wobei der Hash-Operator ein symmetrischer Hash-Operator ist.
  12. Computerimplementiertes Verfahren nach Anspruch 7, 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. Computerimplementiertes Verfahren nach Anspruch 7, ferner Folgendes umfassend: Empfangen einer Anfrage, Informationen zum Nachweis bereitzustellen, dass der Eintrag unverändert und in der zweiten Version des Journals gespeichert ist, wobei die Anfrage mindestens Informationen, die einen Ort des Eintrags anzeigen, oder Informationen, die die erste Version des Journals anzeigen, umfasst.
  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. Nichttransitorisches computerlesbares Speichermedium nach Anspruch 14, wobei die bereitgestellten Hash-Werte ausreichend sind, wenn die bereitgestellten Hash-Werte mit einem zusätzlichen Hash-Wert von einem Blattknoten des Journals verwendet werden können, um den zweiten Digest zu berechnen.
DE112020002967.0T 2019-06-19 2020-06-16 Digest-nachweise in einer journalisierten datenbank Pending DE112020002967T5 (de)

Applications Claiming Priority (9)

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

Publications (1)

Publication Number Publication Date
DE112020002967T5 true DE112020002967T5 (de) 2022-03-24

Family

ID=71465422

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112020002968.9T Pending DE112020002968T5 (de) 2019-06-19 2020-06-16 Datenbank-journal-redaktion
DE112020002967.0T Pending DE112020002967T5 (de) 2019-06-19 2020-06-16 Digest-nachweise in einer journalisierten datenbank

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE112020002968.9T Pending DE112020002968T5 (de) 2019-06-19 2020-06-16 Datenbank-journal-redaktion

Country Status (2)

Country Link
DE (2) DE112020002968T5 (de)
WO (2) WO2020257174A1 (de)

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
WO2020257177A1 (en) 2020-12-24
WO2020257174A1 (en) 2020-12-24
DE112020002968T5 (de) 2022-03-24

Similar Documents

Publication Publication Date Title
DE102013222384B4 (de) Sicherheits-Screening auf Kontextgrundlage für Zugriff auf Daten
DE102019000294A1 (de) Erstellen unternehmensspezifischer Wissensgraphen
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE202015009874U1 (de) Implementierung semistrukturierter Daten als ein Datenbankelement erster Klasse
US8768920B1 (en) Posting questions from search queries
DE102015009912A1 (de) Adaptives Modifizieren von Inhalten, die in elektronischen Formularen präsentiert werden
DE202015009293U1 (de) Effizientes Kopieren und Einfügen (Copy & Paste) in eine kollaborative Kalkulationstabelle
DE102012210425A1 (de) Verwendung einer dynamisch erzeugten inhaltsbezogenen Aktualitätsbewertung zum Bereitstellen von Empfehlungen zu aktuellen Inhalten
DE202012013462U1 (de) Datenverarbeitung in einem Mapreduce-Framework
DE112018005076T5 (de) Erstellen einer rangfolge von dokumenten auf grundlage ihres semantischen reichtums
DE202014011539U1 (de) System zum verteilten Verarbeiten in einer Nachrichtenübermittlungsplattform
DE112021002797T5 (de) Datenschutzerhaltende architektur für genehmigungspflichtige blockchains
DE102016125804A1 (de) Das Einbeziehen auswählbarer Anwendungslinks in Konversationen mit persönlichen Assistenz-Modulen
DE202015009292U1 (de) Erzeugung eines Aktivitätsflusses
DE112020000927T5 (de) Verwalten sensibler daten
DE102014112983A1 (de) Aktive Wissenslenkung beruhend auf Dokumententiefenanalyse
DE102021004157A1 (de) Maschinell lernendes Modellieren zum Schutz gegen die Online-Offenlegung empfindlicher Daten
DE202022002899U1 (de) Metadaten-Klassifizierung
DE102019107591A1 (de) Anzeigesystem, programm und speichermedium
DE202015104128U1 (de) Datenzugriffssystem
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE102019005368A1 (de) Verbessern der Konfliktbereinigung innerhalb von synchronisierten konstituententeilbasierten Digitalassets
DE112020002892T5 (de) Aktives lernen für den datenabgleich
DE112018000227T5 (de) Verfahren zum teilweisen Aktualisieren von Dateninhalten in einem verteilten Speichernetzwerk
DE202015009317U1 (de) Einbetten eines Guest-Moduls in ein Embedder-Modul

Legal Events

Date Code Title Description
R012 Request for examination validly filed