39、图和几何搜索中的认证数据结构及分形默克尔树遍历技术

图和几何搜索中的认证数据结构及分形默克尔树遍历技术

1. 认证数据结构基础

在图和几何搜索领域,认证数据结构起着关键作用,它能确保数据的完整性和安全性。下面将详细介绍相关的引理、定理及其证明。

1.1 引理 1 证明

考虑路径 $p$ 上的查询属性 $\overline{p}(v, u)$,以及 $T(p)$ 中 $\overline{p} = \overline{p}(v, u)$ 子路径的分配节点集合 $A(\overline{p})$。对于树节点 $w$,若其定义的子树的所有叶子节点都是 $\overline{p}$ 的节点,但其父节点不满足此条件,则 $w \in A(\overline{p})$。每个 $w \in A(\overline{p})$ 对应 $\overline{p}$ 的一个子路径。

由于 $T(p)$ 是平衡二叉树,可通过从 $v$ 和 $u$ 到根 $r$ 的叶 - 根树路径追踪,在 $O(\log n)$ 时间内找到 $\overline{p}$ 的 $O(\log n)$ 个分配节点。因为路径属性 $P$ 满足连接准则,所以可以使用树结构并应用 $O(\log n)$ 次连接函数 $F$ 来计算路径属性 $P(\overline{p})$。

答案认证信息由三部分组成:
1. 对于子路径 $\overline{p} = \overline{p}(v, u)$ 的每个分配节点 $w$,给出属性 $P(w)$,这些属性以序列 $(\alpha_1, …, \alpha_m)$ 形式给出,使得任意分配节点 $\alpha_i$ 和 $\alpha_{i + 1}$($1 \leq i \leq m - 1$)的叶节点集合构成 $\overline{p}$ 的子路径。
2. 对于每个 $w \in A(\overline{p})$,若其存在子节点,则给出子节点的标签;同时给出 $\overline{p} = \overline{p}(v, u)$ 最左和最右分配节点的兄弟节点的标签。
3. 若 $z$ 是 $v$ 和 $u$ 的最近公共祖先,则给出 $z$ 的验证序列。

用户接受答案时,首先通过在序列 $(\alpha_1, …, \alpha_m)$ 上重复应用连接函数 $F$ 重新计算 $P(\overline{p})$。若 $P(\overline{p})$ 未通过验证,则拒绝答案;否则,通过路径哈希累积的计算和验证完成验证过程。由于 $head(p) \in P(p)$ 且 $tail(p) \in P(p)$,可实现所需的安全结果,即若要使错误答案被接受为正确,至少需要计算一次加密哈希函数 $h$ 的碰撞。

对于 $property(v)$ 查询,处理方式与上述类似,因为 $property(v)$ 对应 $property(v, v)$。对于 $locate(p, \sigma, q)$ 查询,从根开始在 $T(p)$ 中进行自上而下的搜索,在节点 $u$ 有子节点 $w_1$ 和 $w_2$ 时,使用路径选择函数 $\sigma$ 选择对应 $w_1$ 或 $w_2$ 的路径,答案是定位到的节点 $v$,证明对应 $property(v, v)$ 操作的证明。对于 $subpath(p, \alpha, q)$ 查询,使用路径推进函数 $\alpha$ 进行类似的自上而下树搜索以计算目标子路径,证明通过考虑相应的分配节点构建。

1.2 定理 1 证明

设 $size(v)$ 表示 $v$ 定义的子树中的节点数,$u$ 是 $v$ 的父节点。若 $size(u) > size(v)/2$,则边 $e = (u, v)$ 称为重边。对具有根 $w$ 的 $n$ 节点动态树 $T$ 进行边标记,仅当边为重边时标记为实边,此标记具有重要性质:对于 $T$ 中的任意节点 $u$,从 $u$ 到 $w$ 的路径上最多有 $\log n$ 条虚边。利用此边标记将 $T$ 划分为实路径。

考虑最终树 $F$ 对应的所有路径,$F$ 的每条路径 $p$ 实现为偏置二叉树 $T(p)$,节点权重使用 $size()$ 函数定义。节点 $v$ 的权重 $w(v)$ 可以是节点或路径属性(取决于 $v$ 是否为 $T(p)$ 中的叶节点)。

对于路径属性查询 $property(u, v)$,首先确定节点 $u$ 和 $v$ 是否在森林 $F$ 中,可使用支持 $O(\log n)$ 时间内包含查询且响应长度为 $O(\log n)$ 的认证数据结构。若 $v$ 和 $u$ 在 $F$ 中,通过访问 $F$ 中的三个多路径进行路径属性查询。设 $\mu_u$ 和 $\mu_v$ 是 $F$ 中包含 $u$ 和 $v$ 的路径,$\mu_l$ 是 $\mu_u$ 和 $\mu_v$ 在 $F$ 中的最近公共祖先,$\Pi(u)$ 和 $\Pi(v)$ 是从 $\mu_u$ 和 $\mu_v$ 到 $\mu_l$ 的多路径,$\Pi(l)$ 是从 $\mu_l$ 到 $F$ 根 $\pi(\omega)$ 的多路径。

沿着 $\Pi(u)$ 和 $\Pi(v)$,考虑访问的每个路径哈希累积器的分配节点来计算答案 $A(u, v)$,同时提供属性证明 $proof(\Pi(u))$ 和 $proof(\Pi(v))$。最后,沿着 $\Pi(l)$ 到 $\pi(\omega)$,计算多路径验证序列 $V(l)$,允许用户根据 $A(u, v)$、$proof(\Pi(u))$ 和 $proof(\Pi(v))$ 重新计算签名哈希值。通过 $F$ 上的偏置方案,分配节点集合为 $O(\log n)$,因此答案 $A(u, v)$ 和证明 $(V(l), proof(\Pi(u)), proof(\Pi(v)))$ 的大小均为 $O(\log n)$,验证时间也为 $O(\log n)$。

1.3 定理 2 证明概要

所有查询都对应路径属性。$are - Connected$ 对应路径 $p_{vu}$ 中根路径 $\pi(\omega)$ 的节点存在性,通过为 $F$ 中的每个路径分配唯一的 ID 值来表达此属性。对于 $pathLength$,在 $P(v)$ 中包含 $v$ 定义的子树的叶子节点数。对于 $path$ 查询,先进行 $are - Connected$ 查询,若存在路径,则通过回答路径属性查询找到路径,其中 $P(v)$ 包含 $v$ 定义的子树 $T_v$ 的所有叶子节点。由于 $P(v) = O(size(T_v))$,引入的复杂度为 $O(\log n + k)$,其中 $k$ 是路径长度。

1.4 定理 3 证明概要

对于路径和连通性查询,主要思想是维护图的生成森林。对于嵌入平面图,可使用特定数据结构支持删除操作。为回答双连通性查询,扩展相关数据结构,维护图 $G$ 的块 - 割点森林 $B$。$B$ 中的每个树 $T$ 对应 $G$ 的一个连通分量,$T$ 中有两种类型的节点:对应 $G$ 的块(双连通分量)的块节点和对应 $G$ 的顶点的顶点节点,每条边连接顶点节点和块节点。两个顶点 $u$ 和 $v$ 在 $G$ 的同一双连通分量中,当且仅当 $B$ 中与 $u$ 和 $v$ 关联的顶点节点之间存在长度为 2 的路径,因此 $G$ 中的 $areBiconnected$ 操作可简化为 $B$ 中的 $pathLength$ 操作。

对于三连通性查询,扩展相关数据结构,将双连通图 $G$ 与 SPQR 树 $T$ 关联,$T$ 的每个 $S$、$P$ 和 $R$ 节点对应 $G$ 的一个三连通分量并存储分离对 $(s, t)$,$Q$ 节点对应 $G$ 的一条边。每个顶点 $v$ 在 $T$ 中有多个分配节点,且有唯一的适当分配节点。通过使用节点属性存储 $T$ 节点的类型和极,可将 $areTriconnected$ 查询简化为增强 SPQR 树上的少量 $pathLength$ 和 $type$ 查询。

2. 分形默克尔树表示与遍历

默克尔树在密码学中有广泛应用,但传统的树遍历技术存在计算和存储需求较大的问题。下面介绍分形默克尔树的相关内容。

2.1 默克尔树背景
  • 二叉树 :完全二叉树 $T$ 的高度为 $H$ 时,有 $2^H$ 个叶子节点和 $2^H - 1$ 个内部节点。每个内部节点有两个子节点,分别标记为 “0”(左)和 “1”(右)。叶子节点按从根到叶的路径的二进制表示自然排序,叶子索引越高,叶子越靠右。节点的高度从 0(叶子)到 $H$(根),给定高度 $h_0$ 的内部节点可分配索引 ${0, 1, …, 2^{h_0} - 1}$。
  • 默克尔树 :默克尔树是为每个节点分配字符串的二叉树,父节点的值是子节点值的单向函数,即 $P(n_{parent}) = hash(P(n_{left})||P(n_{right}))$,其中 $hash$ 是单向函数,如 SHA - 1。叶子节点的值是某个叶子预图像的单向函数,对于小树,预图像可直接存储;对于大树,可使用密钥伪随机生成器计算叶子节点。根节点的值是公开的,而叶子预图像的值最初只有 “树所有者” 知道。
graph TD;
    A[根节点] --> B[左子节点];
    A --> C[右子节点];
    B --> D[左 - 左子节点];
    B --> E[左 - 右子节点];
    C --> F[右 - 左子节点];
    C --> G[右 - 右子节点];

如上图所示,展示了一个简单的默克尔树结构,每个节点的值由其子节点的值通过哈希函数计算得到。

2.2 期望输出

希望为每个叶子节点生成一个输出序列,每个输出包含两部分:
1. 叶子预图像。
2. 叶子的认证路径,即从叶子到根的路径上所有节点的兄弟节点的值。

按自然索引(从左到右)访问叶子节点的优点是,通常叶子 $i$ 和叶子 $i + 1$ 共享大部分认证路径。为验证叶子预图像的值,通过迭代哈希计算其祖先的潜在值,若计算得到的根值等于已知的根值,则接受叶子预图像。

2.3 TREEHASH 算法

TREEHASH 算法用于计算高度为 $H$ 的节点的值,同时最多存储 $H + 1$ 个哈希值。该算法的步骤如下:

Algorithm 1: TREEHASH (maxheight)
1. Set leaf = 0 and create empty stack.
2. Consolidate If top 2 nodes on the stack are at the same height:
    • Pop node value Pleft from stack.
    • Pop node value Pright from stack.
    • Compute Pparent = hash(Pleft||Pright).
    • If height of Pparent = maxheight, output Pparent and stop.
    • Push Pparent onto the stack.
3. New Leaf Otherwise:
    • Compute Pleaf = LEAF - CALC(leaf).
    • Increment leaf.
4. Loop to step 2.

该算法假设哈希计算和 $LEAF - CALC$ 计算的计算量相等,对于高度为 $maxheight$ 的树,需要 $2maxheight - 1$ 个计算单元。由于节点在不再需要时被丢弃,该算法在任何阶段只需要存储 $maxheight + 1$ 个哈希值。

图和几何搜索中的认证数据结构及分形默克尔树遍历技术

2. 分形默克尔树表示与遍历(续)
2.4 技术贡献与相关工作
  • 技术贡献 :提出了一种默克尔树遍历技术,结构简单,允许在存储和计算之间进行各种权衡。对于特定参数选择,总空间需求上限为 $1.5 \log_2 N / \log \log N$ 个哈希值,最坏情况下每个输出的计算量为 $2 \log N / \log \log N$ 次哈希函数评估。该技术对验证者是“透明”的,可用于任何需要生成和输出连续叶子预图像及相应认证路径的构造。
  • 相关工作 :改进了 Merkle 之前的结果,Merkle 提出的默克尔树遍历技术需要最大 $O(\log^2 N)$ 空间和 $O(\log N)$ 计算量(每个输出),其中 $N$ 是树的叶子节点数,一个计算单元对应一次哈希函数评估。Vaudenay 十年后独立提出了一种效率较低的方法,考虑的是平均成本而非最坏情况成本。此外,该结果还与最近的哈希链分形遍历方法有关,虽然在存储和计算要求及权衡、分形调度模式上有相似之处,但在计算内容上有很大内在差异。
技术 空间需求 计算量(每个输出)
Merkle 技术 $O(\log^2 N)$ $O(\log N)$
Vaudenay 方法 - 平均成本考虑
本文技术 $1.5 \log_2 N / \log \log N$ 个哈希值 $2 \log N / \log \log N$ 次哈希函数评估
2.5 技术细节与分析
  • 子树符号与直觉 :引入子树符号,详细描述了如何使用子树来实现解决方案。通过合理选择在每个阶段计算、保留和丢弃的节点,实现了对传统技术的改进。
  • 正确性与复杂度分析 :通过分析证明了该遍历技术的正确性。在复杂度方面,由于采用了偏置方案和精心设计的节点计算策略,使得空间和时间复杂度都得到了显著优化。对于生成连续叶子预图像及认证路径的操作,能够在保证安全性的前提下,以较低的计算和存储成本完成。
  • 小改进与最终结果 :经过一个小的但技术性的改进,得到了最终的结果,进一步提升了技术的性能。
3. 总结与展望
  • 认证数据结构 :在图和几何搜索中,认证数据结构通过巧妙的设计和算法实现,能够高效地处理各种查询,如路径属性查询、连通性查询等。通过对树结构的合理划分和节点权重的定义,结合哈希累积和验证机制,确保了数据的完整性和安全性,同时在时间和空间复杂度上达到了较好的平衡。
  • 分形默克尔树 :分形默克尔树的遍历技术为解决传统默克尔树遍历的计算和存储瓶颈问题提供了有效的解决方案。通过精心选择计算和存储的节点,实现了在存储和计算之间的良好权衡,使得该技术在密码学的多个应用场景中具有更广泛的适用性。

未来,可以进一步研究如何在不同的应用场景中优化这些技术,例如在资源受限的设备上提高性能,或者结合其他加密技术增强安全性。同时,对于分形默克尔树的遍历技术,可以探索更多的参数选择和调度模式,以满足不同的计算和存储需求。

graph LR;
    A[认证数据结构] --> B[路径属性查询];
    A --> C[连通性查询];
    D[分形默克尔树] --> E[遍历技术];
    E --> F[存储优化];
    E --> G[计算优化];

以上流程图展示了认证数据结构和分形默克尔树的主要应用和优化方向。认证数据结构主要用于处理路径属性查询和连通性查询,而分形默克尔树的遍历技术侧重于存储和计算的优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值