Datenüberprüfung in Amazon QLDB - Amazon Quantum Ledger Database (Amazon QLDB)

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Datenüberprüfung in Amazon QLDB

Mit Amazon QLDB können Sie darauf vertrauen, dass der Verlauf der Änderungen an Ihren Anwendungsdaten korrekt ist. QLDB verwendet ein unveränderliches Transaktionsprotokoll, ein sogenanntes Journal, für die Datenspeicherung. Das Journal verfolgt jede Änderung an Ihren übermittelten Daten und führt einen vollständigen und überprüfbaren Verlauf der Änderungen im Laufe der Zeit.

QLDB verwendet die SHA-256-Hash-Funktion mit einem Merkle-Tree-basierten Modell, um eine kryptografische Darstellung Ihres Journals zu generieren, die als Digest bezeichnet wird. Der Digest dient als eindeutige Signatur des gesamten Änderungsverlaufs Ihrer Daten zu einem bestimmten Zeitpunkt. Sie verwenden den Digest, um die Integrität der Änderungen an Ihrem Dokument in Bezug auf diese Signatur zu überprüfen.

Welche Art von Daten können Sie in QLDB verifizieren?

In QLDB hat jedes Ledger genau ein Journal. Ein Journal kann mehrere Strähnen umfassen. Dabei handelt es sich um Partitionen des Journals.

Anmerkung

QLDB unterstützt derzeit nur Zeitschriften mit einem einzigen Strang.

Ein Block ist ein Objekt, das bei einer Transaktion in der Journalsträhne festgeschrieben wird. Dieser Block enthält Objekte vom Typ Eintrag, die die Dokumentversionen wiedergeben, die aufgrund der Transaktion entstanden sind. Sie können entweder eine einzelne Revision oder einen ganzen Journalblock in QLDB überprüfen.

Das folgende Diagramm veranschaulicht diese Journalstruktur.

Das Amazon QLDB-Journalstrukturdiagramm zeigt eine Reihe von Hash-verketteten Blöcken, die einen Strang bilden, sowie die Sequenznummer und den Hash jedes Blocks.

Das Diagramm zeigt, dass Transaktionen in das Journal als Blöcke übergeben werden, die Dokumentrevisionseinträge enthalten. Sie zeigt auch, dass jeder Block mit nachfolgenden Blöcken Hash-verkettet ist und eine Sequenznummer aufweist, um seine Adresse innerhalb der Strähne anzugeben.

Hinweise zum Dateninhalt in einem Block finden Sie unter Journalinhalte in Amazon QLDB.

Was bedeutet Datenintegrität?

Datenintegrität in QLDB bedeutet, dass das Journal Ihres Ledgers tatsächlich unveränderlich ist. Mit anderen Worten: Ihre Daten (bzw. alle Dokumentversionen) befinden sich in einem Zustand, in dem die folgenden Bedingungen erfüllt sind:

  1. Sie befinden sich an derselben Position im Journal, an der sie ursprünglich geschrieben wurden.

  2. Sie wurden seit dem ursprünglichen Schreibvorgang nicht verändert.

Wie funktioniert die Überprüfung?

Um zu verstehen, wie die Überprüfung in Amazon QLDB funktioniert, können Sie das Konzept in vier grundlegende Komponenten unterteilen.

Hashing

QLDB verwendet die kryptografische SHA-256-Hash-Funktion, um 256-Bit-Hashwerte zu erstellen. Ein Hash fungiert als eine eindeutige Signatur mit fester Länge für eine beliebige Anzahl von Eingabedaten. Wenn Sie einen Teil der Eingabe ändern — auch nur ein einzelnes Zeichen oder Bit —, ändert sich der Ausgabe-Hash vollständig.

Das folgende Diagramm zeigt, dass die SHA-256-Hash-Funktion völlig eindeutige Hashwerte für zwei QLDB-Dokumente erzeugt, die sich nur um eine einzige Ziffer unterscheiden.

Diagramm, das zeigt, dass die kryptografische SHA-256-Hash-Funktion völlig eindeutige Hashwerte für zwei QLDB-Dokumente erzeugt, die sich nur um eine einzige Ziffer unterscheiden.

Die SHA-256-Hash-Funktion ist eine Möglichkeit, was bedeutet, dass es mathematisch nicht möglich ist, die Eingabe zu berechnen, wenn sie ausgegeben wird. Das folgende Diagramm zeigt, dass es nicht möglich ist, das QLDB-Eingabedokument zu berechnen, wenn ein Ausgabe-Hashwert angegeben wird.

Diagramm, das zeigt, dass es nicht möglich ist, das QLDB-Eingabedokument zu berechnen, wenn ein Ausgabe-Hashwert angegeben wird.

Die folgenden Dateneingaben werden zu Überprüfungszwecken in QLDB gehasht:

  • Dokumentversionen

  • PartiQL-Anweisungen

  • Revisionseinträge

  • Journalblöcke

Digest

Ein Digest ist eine kryptografische Darstellung des gesamten Journals Ihres Ledgers zu einem Zeitpunkt. Das Journal kann nur angehängt werden (Append-only) und Journalblöcke werden ähnlich wie Blockchains sequenziert und Hash-verkettet.

Sie können jederzeit eine Zusammenfassung für ein Hauptbuch anfordern. QLDB generiert den Digest und gibt ihn als sichere Ausgabedatei an Sie zurück. Anschließend verwenden Sie diesen Digest, um die Integrität von Dokumentüberarbeitungen zu überprüfen, die zu einem früheren Zeitpunkt festgeschrieben wurden. Wenn Sie Hashes neu berechnen, indem Sie mit einer Revision beginnen und mit dem Digest enden, weisen Sie nach, dass Ihre Daten zwischenzeitlich nicht verändert wurden.

Merkle-Baum

Je größer Ihr Hauptbuch wird, desto ineffizienter wird es, die gesamte Hash-Kette des Journals zur Überprüfung neu zu berechnen. QLDB verwendet ein Merkle-Baummodell, um diese Ineffizienz zu beheben.

Ein Hash-Baum ist eine Baumdatenstruktur, in der jeder Blattknoten ein Hash eines Datenblocks darstellt. Jeder Nicht-Blattknoten ist ein Hash seiner untergeordneten Knoten. Ein Merkle-Baum, der häufig in Blockchains verwendet wird, hilft Ihnen dabei, große Datensätze mithilfe eines prüfungssicheren Mechanismus effizient zu verifizieren. Weitere Informationen zu Hash-Bäumen finden Sie auf der Wikipedia-Seite zu Hash-Bäumen. Weitere Informationen zu Hash-Prüfnachweisen und einen Beispiel-Anwendungsfall finden Sie im Artikel How Log Proofs Work auf der Website von Certificate Transparency.

Die QLDB-Implementierung des Merkle-Baums basiert auf der vollständigen Hash-Kette eines Journals. In diesem Modell sind die Blattknoten die Menge aller einzelnen Dokumentrevisions-Hashes. Der Stammknoten stellt den Digest des gesamten Journals ab einem Zeitpunkt dar.

Mithilfe eines Hash-Baum-Prüfnachweises können Sie eine Revision verifizieren, indem Sie nur eine kleine Teilmenge des Revisionsverlaufs Ihres Ledgers überprüfen. Sie tun dies, indem Sie den Baum von einem bestimmten Blattknoten (Revision) bis zu seiner Stamm (Digest) durchlaufen. Entlang dieses Durchlaufpfads werden Geschwisterpaare von Knoten rekursiv gehasht, um ihren übergeordneten Hash zu berechnen, bis Sie mit dem Digest enden. Dieser Durchlauf weist eine zeitliche Komplexität von log(n)-Knoten in der Struktur auf.

Nachweis

Ein Beweis ist die geordnete Liste von Knoten-Hashes, die QLDB für einen bestimmten Digest und eine bestimmte Dokumentrevision zurückgibt. Er besteht aus den Hashes, die von einem Hash-Baummodell benötigt werden, um den gegebenen Blattknoten-Hash (eine Revision) mit dem Stamm-Hash (dem Digest) zu verketten.

Das Ändern von übergebenen Daten zwischen einer Revision und einem Digest unterbricht die Hash-Kette Ihres Journals und macht es unmöglich, einen Nachweis zu generieren.

Beispiel für eine Überprüfung

Das folgende Diagramm veranschaulicht das Amazon QLDB-Hash-Tree-Modell. Es zeigt einen Satz von Block-Hashes, die zum obersten Stammknoten aufgerollt werden, der den Digest einer Journalsträhne darstellt. In einem Ledger mit einem einsträhnigen Journal stellt dieser Stammknoten den Digest des gesamten Ledgers dar.

Amazon QLDB-Hashbaumdiagramm für eine Reihe von Block-Hashes in einem Journalstrang.

Angenommen, Knoten A ist der Block, der die Dokumentrevision enthält, deren Hash-Wert Sie verifizieren möchten. Die folgenden Knoten stellen die geordnete Liste der Hashes dar, die QLDB in Ihrem Beweis bereitstellt: B, E, G. Diese Hashes sind erforderlich, um den Digest aus Hash A neu zu berechnen.

Gehen Sie wie folgt vor, um den Digest neu zu berechnen:

  1. Beginnen Sie mit Hash A und verketten Sie ihn mit Hash B. Hashen Sie dann das Ergebnis, um D zu berechnen.

  2. Verwenden Sie D und E, um F zu berechnen.

  3. Verwenden Sie F und G, um den Digest zu berechnen.

Die Verifizierung ist erfolgreich, wenn der neu berechnete Digest dem erwarteten Wert entspricht. Bei einem Revisions-Hash und einem Digest ist es nicht möglich, die Hashes in einem Nachweis zurückzuentwickeln. Daher beweist diese Übung, dass Ihre Revision tatsächlich an dieser Stelle des Journals im Verhältnis zum Digest geschrieben wurde.

Wie wirkt sich die Schwärzung von Daten auf die Überprüfung aus?

In Amazon QLDB löscht eine DELETE Anweisung ein Dokument nur logisch, indem eine neue Version erstellt wird, die es als gelöscht markiert. QLDB unterstützt auch einen Datenschwärzungsvorgang, mit dem Sie inaktive Dokumentrevisionen in der Historie einer Tabelle dauerhaft löschen können.

Bei der Schwärzung werden nur die Benutzerdaten in der angegebenen Revision gelöscht, und die Journalsequenz und die Metadaten des Dokuments bleiben unverändert. Nachdem eine Revision geschwärzt wurde, werden die Benutzerdaten in der Revision (dargestellt durch die data Struktur) durch ein neues Feld ersetzt. dataHash Der Wert dieses Feldes ist der Amazon Ion-Hash der entfernten data Struktur. Weitere Informationen und ein Beispiel für einen Schwärzungsvorgang finden Sie unterRedigieren von Dokumentrevisionen.

Dadurch behält das Ledger seine allgemeine Datenintegrität bei und bleibt über die bestehenden API-Verifizierungsoperationen kryptografisch überprüfbar. Sie können diese API-Operationen weiterhin wie erwartet verwenden, um einen Digest (GetDigest), einen Nachweis (GetBlockoder GetRevision) anzufordern und dann Ihren Bestätigungsalgorithmus mit den zurückgegebenen Objekten auszuführen.

Einen Revisions-Hash neu berechnen

Wenn Sie die Revision eines einzelnen Dokuments überprüfen möchten, indem Sie den Hashwert neu berechnen, müssen Sie unter bestimmten Bedingungen überprüfen, ob die Revision geschwärzt wurde. Wenn die Revision geschwärzt wurde, können Sie den Hashwert verwenden, der in dem Feld angegeben ist. dataHash Wenn es nicht redigiert wurde, können Sie den Hash mithilfe des Felds neu berechnen. data

Durch diese bedingte Prüfung können Sie redigierte Versionen identifizieren und die entsprechenden Maßnahmen ergreifen. Sie können beispielsweise Datenmanipulationsereignisse zu Überwachungszwecken protokollieren.

Erste Schritte mit der Überprüfung

Bevor Sie Daten überprüfen können, müssen Sie vom Ledger einen Digest anfordern und für später speichern. Jede Dokumentversion, die vor dem neuesten im Digest enthaltenen Block festgeschrieben wurde, ist für die Überprüfung anhand des Digests qualifiziert.

Anschließend fordern Sie von Amazon QLDB einen Nachweis für eine qualifizierte Version an, die Sie verifizieren möchten. Mit diesem Nachweis rufen Sie eine clientseitige API zur Neuberechnung des Digest-Hashes beginnend mit dem Hash Ihrer Version auf. Solange der zuvor gespeicherte Digest außerhalb von QLDB bekannt und vertrauenswürdig ist, ist die Integrität Ihres Dokuments bewiesen, wenn Ihr neu berechneter Digest-Hash mit dem gespeicherten Digest-Hash übereinstimmt.

Wichtig
  • Konkret beweisen Sie, dass die Revision des Dokuments zwischen dem Zeitpunkt, an dem Sie diesen Digest gespeichert haben, und dem Zeitpunkt, an dem Sie die Überprüfung durchführen, nicht geändert wurde. Sie können eine Zusammenfassung anfordern und speichern, sobald eine Revision, die Sie später überprüfen möchten, in das Journal übernommen wurde.

  • Als bewährte Methode empfehlen wir, dass Sie regelmäßig Zusammenfassungen anfordern und diese nicht im Hauptbuch speichern. Legen Sie anhand der Häufigkeit fest, mit der Sie Überarbeitungen in Ihrem Hauptbuch vornehmen, wie häufig Sie Überarbeitungen anfordern.

    Einen ausführlichen AWS Blogbeitrag, in dem der Wert der kryptografischen Überprüfung im Kontext eines realistischen Anwendungsfalls erörtert wird, finden Sie unter Kryptografische Verifizierung in der realen Welt mit Amazon QLDB.

step-by-step Anleitungen dazu, wie Sie einen Digest aus Ihrem Ledger anfordern und anschließend Ihre Daten verifizieren können, finden Sie im Folgenden: