區塊鏈真的能保證資料的完整性嗎? - Bozho

banq發表於2021-12-09

資料的完整性首要目的是保證資料一旦收集,就不會被篡改。那麼讓我們回顧一下它在實踐中是如何工作的。
首先,我們有兩個定義兩個術語——“防篡改”(有時稱為無篡改)和“防篡改”。“防篡改”意味著沒有人可以篡改資料,並且始終保證資料結構的狀態沒有任何修改。另一方面,“防篡改”意味著可以驗證資料結構是否存在完整性違規,並且可以知道是否存在修改(更改、刪除或回溯條目日期)。因此,透過防篡改結構,您可以證明資料是完整的,但如果不完整,則無法知道原始狀態。它仍然是一個非常重要的屬性,因為證明資料未被篡改的能力對於合規性和法律方面至關重要。
在所有情況下,區塊鏈都被認為是防篡改的,因為它們以一種足夠多的成員擁有資料副本的方式顯著分佈。如果某個節點修改了該資料,例如過去的 5 個區塊,它必須向其他所有人證明這是該區塊的正確默克爾根。為了做到這一點,您必須擁有超過 50% 的網路容量(這比僅僅擁有它們更復雜),但它仍然是可能的。在某種程度上,防篡改=篡改證據+分散式資料。
區塊鏈通常建立在幾個主要的加密原語之上:加密雜湊、雜湊鏈、默克爾樹、加密時間戳和數字簽名。它們都在完整性保證中發揮作用,但最重要的是 Merkle 樹(及其所有變體,如 Patricia Merkle 樹)和雜湊鏈。最初的比特幣論文將區塊鏈描述為基於多個 Merkle 樹(形成單個塊)的根的雜湊鏈。一些區塊鏈依賴於一個單一的、不斷增長的默克爾樹,但我們不討論具體的實現細節。
但是區塊鏈的許多實際應用依賴於私有網路,為一個或多個實體提供服務。它們通常基於權威證明,這意味著無論誰有權訪問一組私鑰,都可以控制網路同意的內容。那麼讓我們回顧一下這兩種情況:
  • 多個所有者——在多個節點所有者的情況下,他們中的幾個可以串通來重寫鏈。共謀可能基於共同的商業利益(例如,在供應鏈中,多個成員可能與生產者聯手報告失真的資料),也可能基於安全妥協(例如,多個成員被同一組駭客攻擊)。在這種情況下,剩餘的節點所有者可以備份原始資料,但要確定其餘節點是否是惡意的,或者更改是否是業務邏輯的合法部分,則需要進行復雜的調查。
  • 單一所有者——單一所有者可以擁有一個很好的 Merkle 樹或雜湊鏈,但有權訪問底層資料儲存的管理員可以重新生成整個鏈,它看起來是合法的,但實際上它會被篡改。在多個管理員之間拆分訪問許可權是一種方法(或者讓他們訪問單獨的節點,但沒有人可以訪問大多數),但他們經常一起喝啤酒,再次勾結是可能的。但更重要的是,您無法向第三者證明您自己的員工沒有在管理層的命令下串通以掩蓋一些軌道,從而向監管機構展示更好的情況。

在單一所有者的情況下,您甚至沒有防篡改結構——鏈可以完全重寫,沒有人會理解這一點。在多個所有者的情況下,這取決於實現。非共謀方會有修改記錄,但要證明哪一方“被騙”幾乎是不可能的。篡改證據只是部分實現,因為您無法證明誰的資料被修改,誰的資料沒有(您只知道其中一個副本篡改了資料)。
為了在這兩種情況下實現防篡改結構是使用證據錨定tamper-evident ,據的檢查點需要外部錨定,以便清楚地記錄不同時間點的鏈狀態。在區塊鏈之前,推薦的方法是將其列印在報紙上(例如作為廣告),並且由於它的發行量足夠大,沒有人可以收集所有報紙並修改已釋出的檢查點雜湊。這個釋出的雜湊要麼是 Merkle 樹的根,要麼是雜湊鏈中的最新雜湊。不斷增長的 Merkle 樹將允許驗證一致性和包含性證明
當我們有資料的電子分發時,我們可以使用公共區塊鏈來定期錨定我們的內部區塊鏈,以實現適當的防篡改資料。例如,我們在 LogSentinel 就是這樣做的——我們允許將最新的 Merkle 根和最新的雜湊鏈釋出到以太坊。那麼即使那些有權訪問底層資料儲存的人設法修改和重新生成整個鏈/樹,也不會與公開宣傳的值匹配。
如果我們想實現防篡改,我們只需要擁有多個資料副本,所有副本都受到防篡改保證。就像在公共網路中一樣。但是公共網路提供的是一個層,我們可以信任它為我們提供實現本地篡改證據的必要部分。當然,在硬體方面,只寫儲存(WORM,一次寫入,多次準備)更容易。它的問題在於它很昂貴,而且你不能重複使用它。它不太適用於需要防篡改的短期資料的用例。
因此,總而言之,為了獲得適當的完整性保證以及證明單所有者或多所有者私有區塊鏈中的資料未被篡改的能力,我們必須公開傳送任何結構的最新雜湊值使用(鏈或樹)
否則,我們只會透過整合一項複雜的技術而使我們的生活複雜化,而沒有獲得它可以帶來的真正好處——證明我們資料的完整性。
 

相關文章