哈希樹

一种树,其中每个非叶子节点都用它的子节点的标签或值(如果是叶子)的哈希值来标记

哈希樹hash tree;Merkle tree),在密碼學計算機科學中是一種樹形數據結構,每個葉節點均以數據塊的哈希作為標籤,而除了葉節點以外的節點則以其子節點標籤的加密哈希作為標籤 。哈希樹能夠高效、安全地驗證大型數據結構的內容,是哈希鏈的推廣形式[1]

二叉哈希樹示例。哈希 0-0 和 0-1 分別是數據塊 L1 和 L2 的哈希值。哈希 0 是將哈希 0-0 和 0-1 連接後所取得的哈希值。

哈希樹的概念由瑞夫·墨克於 1979 年申請專利[2][3],故亦稱墨克樹Merkle tree)。

概述

哈希樹中,哈希值的求取通常使用諸如SHA-2的加密哈希函數,但如果只是用於防止非故意的數據破壞,也可以使用不安全的校驗和取得,比如CRC

哈希樹的頂部為頂部哈希(top hash),亦稱根哈希(root hash)或主哈希(master hash)。以從 P2P 網絡下載文件為例:通常先從可信的來源獲取頂部哈希,如朋友告知、網站分享等。得到頂部哈希後,則整棵哈希樹就可以通過 P2P 網絡中的非受信來源獲取。下載得到哈希樹後,即可根據可信的頂部哈希對其進行校驗,驗證數據是否完整、是否遭受破壞。

參考文獻

  1. ^ Farooq Anjum,Petros Mouchtaris. 无线Ad Hoc 网络安全. 北京:清華大學出版社. 2009.03: 86. ISBN 978-7-302-19337-1. 
  2. ^ Merkle, R. C. A Digital Signature Based on a Conventional Encryption Function. Advances in Cryptology — CRYPTO '87. Lecture Notes in Computer Science 293. 1988: 369. ISBN 978-3-540-18796-7. doi:10.1007/3-540-48184-2_32. 
  3. ^ US patent 4309569,Ralf Merkle,「Method of providing digital signatures」,發表於Jan 5, 1982,指定於The Board Of Trustees Of The Leland Stanford Junior University 

延伸閱讀

參見

外部連結