選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

Amazon QLDB 中的資料驗證 - Amazon Quantum Ledger Database (Amazon QLDB)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon QLDB 中的資料驗證

重要

支援終止通知:現有客戶將可以使用 Amazon QLDB,直到 07/31/2025 的支援結束為止。如需詳細資訊,請參閱將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL

使用 Amazon QLDB,您可以信任應用程式資料變更的歷史記錄是準確的。QLDB 使用不可變的交易日誌,稱為日誌,用於資料儲存。日誌會追蹤您遞交資料的每個變更,並維護一段時間內完整且可驗證的變更歷史記錄。

QLDB 使用 SHA-256 雜湊函數搭配 Merkle 樹型模型,來產生日誌的密碼編譯表示法,稱為摘要。摘要可做為資料截至某個時間點整個變更歷史記錄的唯一簽章。您可以使用摘要來驗證文件修訂相對於該簽章的完整性。

您可以在 QLDB 中驗證哪些類型的資料?

在 QLDB 中,每個分類帳只有一個日誌。日誌可以有多個,它們是日誌的分割區。

注意

QLDB 目前僅支援具有單股的日誌。

區塊是在交易期間遞交至日誌鏈的物件。此區塊包含項目物件,代表交易產生的文件修訂。您可以在 QLDB 中驗證個別修訂或整個日誌區塊。

下圖說明此日誌結構。

Amazon QLDB 日誌結構圖顯示一組構成鏈的雜湊鏈結區塊,以及每個區塊的序號和雜湊。

圖表顯示交易會以包含文件修訂項目的區塊的形式遞交至日誌。它還顯示每個區塊都以雜湊鏈方式連結到後續區塊,並具有序號來指定其在鏈中的地址。

如需區塊中資料內容的資訊,請參閱Amazon QLDB 中的日誌內容

什麼是資料完整性?

QLDB 中的資料完整性表示您分類帳的日誌實際上是不可變的。換言之,您的資料 (特別是每個文件修訂) 處於下列為 true 的狀態:

  1. 它存在於日誌中第一次寫入的相同位置。

  2. 自撰寫以來,它並未進行任何變更。

驗證如何運作?

若要了解驗證如何在 Amazon QLDB 中運作,您可以將概念分解為四個基本元件。

雜湊

QLDB 使用 SHA-256 密碼編譯雜湊函數來建立 256 位元雜湊值。雜湊可做為任意輸入資料量的唯一固定長度簽章。如果您變更輸入的任何部分,即使是單一字元或位元,輸出雜湊也會完全變更。

下圖顯示 SHA-256 雜湊函數為兩個僅因單一數字而不同的 QLDB 文件建立完全唯一的雜湊值。

顯示 SHA-256 密碼編譯雜湊函數為兩個僅因單一數字而不同的 QLDB 文件建立完全唯一雜湊值的圖表。

SHA-256 雜湊函數是一種方式,這表示在數學上無法在指定輸出時運算輸入。下圖顯示,當指定輸出雜湊值時,無法計算輸入 QLDB 文件。

圖表顯示當指定輸出雜湊值時,無法計算輸入 QLDB 文件。

下列資料輸入會在 QLDB 中雜湊,以供驗證之用:

  • 文件修訂

  • PartiQL 陳述式

  • 修訂項目

  • 日誌區塊

摘要

摘要是對某個時間點的分類帳整個日誌進行密碼編譯表示。日誌是僅附加的,日誌區塊會進行排序並雜湊鏈結,類似於區塊鏈。

您可以隨時請求分類帳的摘要。QLDB 會產生摘要,並以安全輸出檔案的形式傳回給您。然後,您可以使用該摘要來驗證先前時間點遞交之文件修訂的完整性。如果您以修訂開頭並以摘要結尾來重新計算雜湊,則證明您的資料之間沒有遭到變更。

Merkle 樹狀結構

隨著分類帳大小的增加,重新計算日誌的完整雜湊鏈以進行驗證變得越來越沒有效率。QLDB 使用 Merkle 樹模型來解決這種效率低下的問題。

Merkle 樹是樹狀資料結構,其中每個分葉節點代表資料區塊的雜湊。每個非分葉節點都是其子節點的雜湊。Merkle 樹通常用於區塊鏈,可協助您使用稽核驗證機制來有效驗證大型資料集。如需 Merkle 樹的詳細資訊,請參閱 Merkle 樹 Wikipedia 頁面。若要進一步了解 Merkle 稽核證明,以及範例使用案例,請參閱 憑證透明度網站上的日誌證明運作方式

Merkle 樹的 QLDB 實作是從日誌的完整雜湊鏈建構而成。在此模型中,分葉節點是所有個別文件修訂雜湊集。根節點代表截至某個時間點的整個日誌摘要。

使用 Merkle 稽核驗證,您可以只檢查您分類帳修訂歷史記錄的一小部分,來驗證修訂。您可以透過將樹狀目錄從指定的分葉節點 (修訂版) 周遊到其根節點 (摘要) 來執行此操作。沿著此周遊路徑,您可以遞迴地雜湊分叉成對節點來運算其父雜湊,直到您結束摘要為止。此周遊具有樹狀目錄中log(n)節點的時間複雜性。

證明

證明是 QLDB 針對特定摘要和文件修訂傳回的節點雜湊的排序清單。它由 Merkle 樹狀結構模型所需的雜湊組成,以將指定的葉節點雜湊 (修訂版) 鏈結至根雜湊 (摘要)。

在修訂和摘要之間變更任何遞交的資料會中斷日誌的雜湊鏈,並導致無法產生證據。

驗證範例

下圖說明 Amazon QLDB 雜湊樹模型。它顯示一組區塊雜湊,會彙總到頂部根節點,代表日誌鏈的摘要。在具有單鏈日誌的分類帳中,此根節點也是整個分類帳的摘要。

日誌鏈中一組區塊雜湊的 Amazon QLDB 雜湊樹狀圖。

假設該節點 A 是包含您要驗證其雜湊的文件修訂的區塊。下列節點代表 QLDB 在您的證據中提供的雜湊順序清單:BEG。 這些雜湊是重新計算雜湊 A 摘要的必要項目。

若要重新計算摘要,請執行下列動作:

  1. 從雜湊 A 開始,並與雜湊 B 串連。 然後,雜湊運算 D 的結果。

  2. 使用 DE 運算 F

  3. 使用 FG 計算摘要。

如果您的重新計算摘要符合預期值,則驗證會成功。假設修訂雜湊和摘要,無法對證據中的雜湊進行反向工程。因此,此練習證明您的修訂確實是相對於摘要撰寫在此日誌位置。

資料修訂如何影響驗證?

在 Amazon QLDB 中,DELETE陳述式只會透過建立新的修訂,將其標記為已刪除,以邏輯方式刪除文件。QLDB 也支援資料修訂操作,可讓您永久刪除資料表歷史記錄中的非作用中文件修訂。

編輯操作只會刪除指定修訂中的使用者資料,並使日誌序列和文件中繼資料保持不變。修訂後,修訂中的使用者資料 (由data結構表示) 會取代為新的dataHash欄位。此欄位的值是已移除data結構的 Amazon Ion 雜湊。如需詳細資訊和修訂操作的範例,請參閱 編輯文件修訂

因此,分類帳會維護其整體資料完整性,並透過現有的驗證 API 操作以密碼編譯方式進行驗證。您仍然可以如預期般使用這些 API 操作來請求摘要 (GetDigest)、請求證明 (GetBlockGetRevision),然後使用傳回的物件執行驗證演算法。

重新計算修訂雜湊

如果您計劃透過重新計算其雜湊來驗證個別文件修訂,您必須有條件地檢查修訂是否已修訂。如果修訂已修訂,您可以使用 dataHash 欄位中提供的雜湊值。如果未修訂,您可以使用 data 欄位重新計算雜湊。

透過執行此條件式檢查,您可以識別修訂版本並採取適當的動作。例如,您可以記錄資料操作事件以進行監控。

驗證入門

在驗證資料之前,您必須向分類帳請求摘要,並儲存以供稍後使用。在摘要涵蓋的最新區塊之前遞交的任何文件修訂,都有資格驗證該摘要。

然後,您向 Amazon QLDB 請求您要驗證之合格修訂的證明。使用此證明,您可以呼叫用戶端 API 來重新計算摘要,從修訂雜湊開始。只要先前儲存的摘要在 QLDB 之外已知且受信任,如果您的重新計算摘要雜湊符合儲存的摘要雜湊,即可證明文件的完整性。

重要
  • 您特別證明的是,在您儲存此摘要的時間和執行驗證的時間之間,文件修訂版本並未變更。只要您想要稍後驗證的修訂已遞交至日誌,您就可以請求並儲存摘要。

  • 最佳實務是建議您定期請求摘要,並將其存放在遠離分類帳的地方。根據您在分類帳中遞交修訂的頻率,決定您請求摘要的頻率。

    如需詳細 AWS 部落格文章,討論實際使用案例內容中密碼編譯驗證的價值,請參閱使用 Amazon QLDB 進行真實世界密碼編譯驗證

如需如何從 分類帳請求摘要,然後驗證資料的step-by-step指南,請參閱以下內容:

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。