[发明专利]一种抗量子计算攻击的默克尔树签名方法在审
申请号: | 202011073739.7 | 申请日: | 2020-10-09 |
公开(公告)号: | CN114338029A | 公开(公告)日: | 2022-04-12 |
发明(设计)人: | 邱望洁;袁波 | 申请(专利权)人: | 苏州鸿链信息科技有限公司 |
主分类号: | H04L9/32 | 分类号: | H04L9/32 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 215010 江苏省苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 量子 计算 攻击 克尔 签名 方法 | ||
1.一种抗量子计算攻击的默克尔树签名系统,其特征在于,可分为签名子系统和验证子系统两部分。其中签名子系统包括PN序列随机数生成模块、HASH函数核心运算模块、伪随机数生成器PRNG、签名-验证密钥对生成与存储模块、默克尔树公钥运算模块、计数器模块、消息摘要生成模块、一次性签名模块;验证子系统包括消息摘要生成模块、一次性签名验证模块、HASH函数核心运算模块、默克尔树根节点验证模块、综合判断模块;
PN序列随机数生成模块1通过256位的线性反馈移位寄存器产生PN256随机序列,并将该256位的伪随机数D10发送至HASH函数核心运算模块2作为HASH函数的随机输入参数,从而保证HASH函数的可变性和语义安全性,同时将伪随机数D10发送至验证子系统的HASH函数核心运算模块11;
HASH函数核心运算模块2是签名子系统中通过硬件电路高速实现HASH函数的核心部件,其接收来自PN序列随机数生成模块1的伪随机数D10作为HASH函数的核心参数,其分别接收到默克尔树公钥运算模块5、一次性签名验证模块8发送来的HASH函数运算待处理数据D50和D80,进行HASH运算后分别发送处理结果D20、D21至默克尔树公钥运算模块5和一次性签名验证模块8;
伪随机数生成器PRNG 3接收到DSeed0并以此为初始随机种子SEED0用于生成大量的签名秘钥,如图3。伪随机数生成器PRNG 3的核心是伪随机数产生单元PRNG,PRNG的运算逻辑可以表示为PRNG:{0,1}n→{0,1}n×{0,1}n,在图3中的第一行中,SEEDi经过PRNG运算得到SEEDi+1,即第一行由初始随机种子SEED0逐个生成种子序列SEEDi(i=1,2,3,…,2H-1),总共可以生成2H个种子,本发明中H指默克尔树的高度;而在图3的第i列中,由随机种子SEEDi逐个生成签名秘钥的分量xi,0、xi,1、xi,2、…、xi,n-1,而上述分量组成了一个签名秘钥Xi=(xi,0,xi,1,xi,2,…,xi,n-1),总共可以产生共2H个签名秘钥D30,并将D30发送至签名-验证密钥对生成与存储模块4。因为通过DSeed0可以扩展出所有的签名秘钥,所以DSeed0作为签名系统的私钥KEY_sec安全保存。伪随机数生成器PRNG3接收到签名-验证密钥对生成与存储模块4发送来的签名秘钥的查询坐标值D40,并将D40请求的签名秘钥D31发送给签名-验证密钥对生成与存储模块4;
签名-验证密钥对生成与存储模块4接收来自伪随机数生成器PRNG3发送来的2H个签名秘钥D30,并通过HASH单向函数运算模块对D30进行处理生成验证秘钥Yi=(yi,0,yi,1,yi,2,…,yi,n-1),其中yi,j=f(xi,j)(i=0,1,2,3,…,2H-1;j=0,1,2,…,n-1),其中单向函数f表示为f:{0,1}n→{0,1}n。签名子系统初始化阶段,签名-验证密钥对生成与存储模块4将所有的验证秘钥集合发送至默克尔树公钥运算模块5,用于计算签名系统的公钥KEY_pub。在签名子系统执行一次性签名阶段,签名-验证密钥对生成与存储模块4将签名秘钥坐标值的查询请求D41发送给计数器模块,从而接收来自计数器模块反馈的签名秘钥的坐标值D60=s,根据D60确定本次签名所需的签名秘钥的坐标值并向伪随机数生成器PRNG3发送签名秘钥的查询坐标值D40,从而接收伪随机数生成器PRNG3发送来的签名秘钥D31。签名-验证密钥对生成与存储模块4将用于一次性签名的数据D42=(s,Xs,Ys,Ys到默克尔根节点的途经节点在同一父节点之下的兄弟节点值)发送至一次性签名模块8;
默克尔树公钥运算模块5用于计算签名系统的公钥,如图4所示。其接收到签名-验证密钥对生成与存储模块4发送来的验证秘钥集合按照图4中的结构生成默克尔树的根节点值,作为签名系统的公钥D51=KEY_pub,同时将KEY_pub广播给所有用户。以图4中高度H=3的默克尔树为例,具体根节点值的运算过程如下:v0,j=hash(Yj),vh,j=hash(vh-1,2j||vh-1,2j+1),1≤h≤H,0≤j2H-h,这里vh,j表示默克尔树中高度为h,坐标为j的节点值,hash为哈希函数,||表示拼接。在此过程中,默克尔树公钥运算模块5将所有需要HASH运算的需求D50发送至HASH函数核心运算模块2,从而获得HASH函数核心运算模块2反馈回来的HASH计算结果D20;
计数器模块6接收到签名-验证密钥对生成与存储模块4关于签名秘钥坐标值的查询请求D41,并向签名-验证密钥对生成与存储模块4反馈本次签名所使用的签名秘钥的坐标值D60。在每次一次性签名完成后,计数器模块6的内部寄存器s=s+1,即坐标值+1指向下一个待使用的签名秘钥;
消息摘要生成模块7接收待签名的消息数据Din_sign=m,并通过特定的HASH函数对其进行处理得到消息摘要D70=d=(dn-1,dn-2,…,d0)发送至一次性签名模块8;
一次性签名模块8接收消息摘要生成模块7发来的消息摘要D70=d=(dn-1,dn-2,…,d0),接收到签名-验证密钥对生成与存储模块4发来的用于一次性签名的信息D42=(s,Xs,Ys,Ys到默克尔根节点验证的途经节点在同一父节点之下的兄弟节点值),接收到默克尔树公钥运算模块5发送来的签名系统的公钥D51=KEY_pub。通过对摘要d进行签名,得到消息签名通过Ys到默克尔根节点验证的途经节点在同一父节点之下的兄弟节点值,计算Ys到默克尔树根节点的验证路径P=(p1,p2,…,pH-1),其中,这里h=0,1,…,H-1,符号/表示整数相除求整数商,符号表示下取整。如图5所示,以高度H=3的默克尔树为例,P=(v0,5,v1,3,v2,0,v3,5)。最后,签名子系统输出完整的默克尔树数字签名Dout_sign=(m,s,es,Ys,P);
消息摘要生成模块9接收到消息的数字签名Dout_sign=(m,s,es,Ys,P)中的m,并通过与签名子系统同样的HASH函数对消息m进行处理得到消息摘要D90=g=(gn-1,gn-2,…,g0)发送至一次性签名验证模块10;
一次性签名验证模块10接收到消息摘要生成模块9发来的消息摘要D90=g=(gn-1,gn-2,…,g0),接收到到消息的数字签名Dout_sign=(m,s,es,Ys,P)中的s、es和Ys,通过计算并检验等式是否成立,从而验证一次性签名es的有效性,即确认es是否由验证秘钥Ys对应的签名秘钥Xs签名所得,若成立,则表示签名es有效,否则无效。将一次性签名es的验证结果D100发送给综合判断模块13;
HASH函数核心运算模块11是验证子系统中通过硬件电路高速实现HASH函数计算的核心部件,其接收来自PN序列随机数生成模块1的伪随机数作为HASH函数的核心参数,其接收到默克尔树根节点验证模块12发送来的HASH函数运算待处理数据D120,进行HASH运算后发送处理结果D110至默克尔树根节点验证模块12;
默克尔树根节点验证模块12接收到消息的数字签名Dout_sign=(m,s,es,Ys,P)中的P和Ys,接收来自默克尔树公钥运算模块5发来的签名系统的公钥D51=KEY_pub。如图5,通过P=(p1,p2,…,pH-1)按照默克尔树根节点的计算方法计算根节点值Merkel,T0=hash(Ys),若则Th=hash(Th-1||ph-1),若则Th=hash(ph-1||Th-1),这里1≤h≤H,最后得到,Merkel=TH。若Merkel=KEY_pub成立,则说明Ys是一个有效的验证秘钥,否则无效,将一次性验证秘钥Ys的判断结果D121发送至综合判断模块13;
综合判断模块13接收来自一次性签名验证模块10的一次性签名es的验证结果D100和来自默克尔树根节点验证模块12的一次性验证秘钥Ys的判断结果D121。当且仅当D100和D121均验证成功,则判定该签名验证成功,否则其中任意一个结果失败,则视为该签名验证失败。综合判断模块13输出判定结果Dout_verify,表示签名的整体有效性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州鸿链信息科技有限公司,未经苏州鸿链信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011073739.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种车辆雾区主动控制系统
- 下一篇:一种边缘计算的方法和装置