发明名称 一种用于产生Merkle树签名方案认证路径的新方法
摘要 本发明涉及一种用于产生Merkle树签名方案认证路径的新方法,该方法利用完全二叉树的性质,以及双栈结构,获取Merkle签名树中叶子节点的认证路径。本发明的方法不仅适合于完全二叉树,也适合于其它的认证树,比如H-CRT(Huffman Certification Revocation Tree)树,该方法简单、明了、可行性好。
申请公布号 CN103441845B 申请公布日期 2016.05.25
申请号 CN201310341001.8 申请日期 2013.08.07
申请人 北京交通大学 发明人 彭双和;韩臻;刘吉强
分类号 H04L9/32(2006.01)I;G06F9/44(2006.01)I 主分类号 H04L9/32(2006.01)I
代理机构 北京正理专利代理有限公司 11257 代理人 张文祎
主权项 一种用于产生Merkle树签名方案认证路径的新方法,其特征在于:包括以下步骤:首先设置两个栈,分别为stackNode和stackAuth,并将所述两栈初始化为空栈,分别用于存储签名树中的当前访问的节点及其认证路径节点,并将栈中的当前访问节点和认证路径节点分别设置一个标志位flag,用于记录栈中节点的左右孩子是否已经入栈,当标记为0时表示其孩子节点未曾入栈,当标记为1时表示其孩子节点已经入栈,执行如下的步骤:第一步,将Merkle签名树的根节点左右孩子节点分别入栈stackNode和stackAuth,并设进栈元素的flag标志为0;第二步,判断栈stackNode是否为空,若不为空则进行第三步,若为空,则结束;第三步,获取stackNode栈中的栈顶元素curNode,判断curNode是否为内部节点,若是,则进行第四步,否则进行第五步;第四步,判断curNode节点的flag标志:(1)若curNode节点的flag标志为0,则其对应的左右孩子分别进栈,并设置curNode节点的flag标志为1,跳转到第二步;(2)若curNode节点的flag标志为1,则判断curNode节点与另一栈stackAuth的栈顶节点即stackAuth.Top()的关系:(a)若curNode节点的右兄弟为stackAuth.Top(),则两栈stackNode和stackAuth的栈顶元素交换位置,即stackNode.Top()<‑‑>stackAuth.Top();(b)若curNode节点是stackAuth.Top()的右兄弟,则两栈栈顶元素出栈,即stackNode.pop(),并且stackAuth.pop(),跳转到第二步;第五步,输出stackAuth栈中的全部节点,这些节点即为curNode节点的认证路径上的所有节点,并判断curNode节点与stackAuth栈栈顶元素的关系:(1)若stackAuth栈栈顶元素即stackAuth.Top()是curNode节点的右兄弟,则两栈stackNode和stackAuth的栈顶元素交换位置,即stackNode.Top()<‑‑>stackAuth.Top();(2)若curNode节点的右兄弟为空,则两栈stackNode和stackAuth的栈顶元素出栈,即stackNode.pop(),stackAuth.pop(),跳转到第二步。
地址 100044 北京市海淀区上园村3号