(知识点补充二)merkle树和MB-Tree

merkle 树结构(M-Tree)

Merkle hush Tree用于验证一组数据值。使用最简单的形式解决适合主存的点查询和数据集查询认证问题。M-Tree是二叉树,其中叶节点包含数据值的hush,非叶子节点包含其两个子节点hash of the concatenation值。
(知识点补充二)merkle树和MB-Tree_第1张图片
查询任何一个数值的真实性需要对比计算log(n)个hush值,因为
(知识点补充二)merkle树和MB-Tree_第2张图片

其他结构

我们还提供了所有技术的分析成本模型,给出了各种性能指标。本文主要贡献:详细的分析建模,使用户能够决定哪种结构最能满足他们的需要。
介绍三个应用在静态场景(即在外包数据库中所有者的和服务器之间不发生数据更新)中保证查询正确性和完整性的三个方法:
1. Aggregated Signatures with B±trees(ASB-Tree)
首先,所有者分别对数据库中所有连续的元组取hush值并进行签名,假设某种排序次序方式为A。(知识点补充二)merkle树和MB-Tree_第3张图片
给定两个连续的元组ri,rj,owner将(ri,si)发送给服务器,其中si=S(ri|rj),‘|’是表示字符串的规范配对,这些字符串可以唯一地被解析回其两个组件中;第一个和最后一个元组可以与特殊标记记录配对。
为了提高服务器的查询效率,在属性A的顶部构建B+树。
服务器可以为所有结果发送一个组合签名Sπ,而不是每个查询结果都发送一个签名,并且客户端可以使用聚合验证而不是单独的验证。
2. Merkle-BTree(MB-Tree)
MB-tree可以像B+树那样工作,由普通B+树扩展节点组成,节点用一个哈希值扩展,每个哈希值与每个指针条目相关联。节点上的哈希值的计算与M-Tree相似。
(知识点补充二)merkle树和MB-Tree_第4张图片
上图为扩展叶节点hash表示,索引节点的hash计算方式。
叶节点hash由数据库计算hi=H(ri
假设每个索引节点节点的扇出为fm,则h = H(h1|···|h fm )
计算所有哈希值之后,所有者必须使用私钥对根的哈希进行签名。
为实现范围查询,服务器构建VO自顶向下遍历两遍b+树,得到查询左右边界,返回范围内的查询结果。服务器需要遍历访问VO中包含的每个索引节点包含条目的对应哈希值,除了在下(上)边界遍历期间遍历的左(右)指针的hash值。
客户端可以迭代计算与查询结果相对应的子树的所有hash,直到根使用到VO。首先计算查询结果的hash,并分组成相应的叶节,进程继续迭代,直到查询子树的所有散列都被计算出来。在计算出根的哈希值后,客户端可以使用所有者的公钥和根的签名哈希来验证计算的正确性,可以通过单独签署所有数据库元组(B+树的每个节点)来避免在验证期间构建整个查询子树。
MB-tree分析成本模型如下:

注释:B+树索引只能查到被查找数据行所在的页,然后数据库通过把页读入内存,再在内存中查找,最后得到结果。

(知识点补充二)merkle树和MB-Tree_第5张图片

Symbol Description
P Page size
p A B±tree pointer
h A hash value

“+1“的原因
(知识点补充二)merkle树和MB-Tree_第6张图片
在这里插入图片描述
(知识点补充二)merkle树和MB-Tree_第7张图片
MB树的一个重要优点是存储成本不一定反映所有者/服务器通信成本。在计算根的最终签名之后,所有者不必将所有哈希值传输到服务器,而只传输数据库元组。服务器可以通过重新创建MB-Tree来重新计算哈希值。由于hush计算很便宜,虽然服务器的计算成本略有增加,但是这种技术将大大降低所有者/服务器的通信成本。

参考论文:Dynamic Authenticated Index Structures for Outsourced Databases

你可能感兴趣的:((知识点补充二)merkle树和MB-Tree)