System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于椭圆曲线公钥密码算法和SM3密码杂凑算法的可验证密钥共享方法技术_技高网

基于椭圆曲线公钥密码算法和SM3密码杂凑算法的可验证密钥共享方法技术

技术编号:44407438 阅读:4 留言:0更新日期:2025-02-25 10:20
本发明专利技术提出一种基于椭圆曲线公钥密码算法和SM3密码杂凑算法的可验证密钥共享方法,它包括密钥分发和密钥重构步骤,对每个参与方分配公钥、私钥、可认证值,一对公私钥对用于确认参与方的身份,可认证值用于后续密钥重构阶段验证参与方提供的密钥片段的合规性。密钥片段分配和共享的密钥值的恢复采用了基于拉格朗日插值的Shamir方案,所以密钥片段的分配及利用密钥片段恢复原密钥的算法经过多年验证是正确的。不合规参与方或者欺诈方成功实现密钥共享的难度与破解椭圆曲线离线对数问题的难度相同,其概率很低,因此本发明专利技术提出的方法是无条件安全的。本发明专利技术避免了不合规参与方或者欺诈方实现密钥共享,且安全性高。

【技术实现步骤摘要】

本专利技术涉及基于椭圆曲线公钥密码算法和sm3密码杂凑算法的可验证密钥共享方法。


技术介绍

1、密码是保障网络空间安全的核心技术,根据现代密码体制,密钥的安全是保证密码体制的基础。其中,密钥共享是信息安全领域中的一个重点研究内容,shamir于1979年提出了密钥共享的概念,并提出了基于拉格朗日插值公式的(k,n)门限密钥共享方案,由此密钥共享为密钥管理技术提供了新的思路与方向,许多研究者致力于密钥共享机制的研究。

2、由参与者p1,p2,…,pn和密钥分发者d构成的密钥共享机制一般包括两个过程:(1)密钥分发过程:在这个过程中,密钥分发者d在n个参与者中共享密钥s,每个参与者pi被分发一个片段si,i=1,2,…,n。(2)密钥重构过程:在这个过程中,由任意不少于k个的参与者配合,以自己被分发的片段为输入,重构原密钥s。

3、上述密钥共享机制必须满足以下条件:(1)任意k个参与者通过各自分发的片段能够合作恢复出原密钥s;(2)任意少于k个参与者的情况下,无法合作恢复出原密钥s。

4、shamir提出的(k,n)门限密钥共享方案基于多项式插值,在给定的二维平面上有(x1,y1),(x2,y2),…,(xk,yk)等k个点,对于不同的xi,有且仅有一个k-1次的多项式q(x),满足q(xi)=yi,(i=1,2,…,k)。对于整数z,为了将其分为n份,随机选取一个k-1次多项式q(x)=a0+a1x+…+ak-1xk-1,其中a0=z,则得到可分发的片段如下:

5、z1=q(1),…,zi=q(i),…,zn=q(n)。

6、在集合{(1,z1),(2,z2),…,(1,zn)}中任取数量为k的子集,根据拉格朗日插值公式,任意k个授权成员的密钥片段计算多项式:令因此

7、即可确定多项式q(x)的系数从而求z=q(0),即重构数据z。

8、在密钥共享方案的上述研究过程中,有一个前提,那就是该方案中的密钥片段持有者都是可信任的。但是在现实中,这样的假设却不一定在任何情况下都成立。一旦密钥分发者将错误的密钥片段发送给一个或多个参与者,或者密钥片段持有者在重构阶段提供虚假的密钥片段,导致无法恢复出原密钥,最终损害到其他合规参与者的利益。


技术实现思路

1、针对shamir提出的(k,n)门限密钥共享方案的不足,本专利技术提供一种基于椭圆曲线公钥密码算法和sm3密码杂凑算法的可验证密钥共享方法来避免不合规参与方或者欺诈方实现密钥共享。

2、本专利技术解决其技术问题所采用的技术方案是:一种基于椭圆曲线公钥密码算法和sm3密码杂凑算法的可验证密钥共享方法,包括密钥分发和密钥重构,其特征在于,

3、所述密钥分发包括如下步骤:

4、第一步:选定一个k-1次多项式f(x)=bk-1xk-1+…+b1x+smodp,此处b1,b2,…,bk-1及f(x)均属于fp;

5、第二步:对于i=1,2,…,n,作如下处理:

6、(a)计算mi=f(i),将mi作为参与方pi的私钥,其公钥为pi=(xi,yi)=[mi]g;

7、(b)令zai=sm3(leni||idi||a||b||xg||yg||xi||yi),用sm3密码杂凑函数求得第i个密钥共享参与方的杂凑值zai;

8、(c)zai作为比特串类型,首先将zai转换为字节串,再将字节串转换到整数,按照上述方法将zai的数据类型转换为整数;

9、(d)用随机数发生器产生随机数u∈[1,n-1];

10、(e)计算椭圆曲线点(xui,yui)=[u]g,xui作为fp中的域元素,按照域元素到整数的转换方法,将xui的数据类型转换为整数;

11、(f)计算ri=(zai+xui)modn,如果ri=0或ri+u=n则返回(d);

12、(g)计算si=((1+mi)-1·(u-ri·mi))modn,如果si=0则返回(d);

13、(h)按照整数转换到字节串的方法,将ri,si的数据类型转换为字符串,将(ri,si)作为参与方pi的认证值。

14、所述密钥重构包括如下步骤:

15、第一步:重构者为了检验各重构参与方提供的认证值(ri',si'),作为验证者应实现以下运算步骤,确定该重构参与方是合规且持有的密钥片段是正确的;

16、对于i=1,2,…,n,作如下处理:

17、(a)检验ri'∈[1,n-1]及si'∈[1,n-1]是否成立,如果不成立则该参与方存在诈骗可能,不能参与密钥重构;

18、(b)计算zai=sm3(leni||idi||a||b||xg||yg||xi||yi),用sm3密码杂凑函数求的第i个密钥重构参与方的杂凑值zai;

19、(c)zai作为比特串类型,首先将zai转换为字节串,再将字节串转换到整数,按照上述方法将zai的数据类型转换为整数;

20、(d)按照整数转换到字节串的方法,将(ri',si')的数据类型转换为整数,计算t=(ri'+si')modn,如果t=0,则该参与方存在诈骗可能,不能参与密钥重构;

21、(e)计算椭圆曲线点(x'ui,y'ui)=[si']g+[t]pi;

22、(f)x'ui作为fp中的域元素,按照域元素转换为整数的方法,将x'ui的数据类型转换为整数,计算r=(zai+x'ui)modn,检验r=ri'是否成立,若成立则表示该参与方是合规的,否则不能参与密钥重构;

23、第二步:在n个参与方中选定任意k个合规的参与密钥重构,假设p1,p2,…,pk协作,则利用他们所分配的k个密钥片段可以得到k个插值点(1,m1),(2,m2),…,(k,mk),进而使用拉格朗日插值可以生成k-1次多项式f(x),使得s=f(0),密钥s即可恢复;

24、本专利技术的有益效果是:密钥片段分配和共享的密钥值的恢复采用了基于拉格朗日插值的shamir方案,所以密钥片段的分配及利用密钥片段恢复原密钥的算法经过多年验证是正确的。对于参与方是否合规的验证是基于椭圆曲线离散对数问题,即不合规参与方或者欺诈方成功实现密钥共享的难度与破解椭圆曲线离线对数问题的难度相同,其概率很低,因此本专利技术提出的方法是无条件安全的。

本文档来自技高网...

【技术保护点】

1.一种基于椭圆曲线公钥密码算法和SM3密码杂凑算法的可验证密钥共享方法,包括密钥分发和密钥重构,其特征在于,

【技术特征摘要】

1.一种基于椭圆曲线公钥密码算法和sm3密码杂凑算法的可...

【专利技术属性】
技术研发人员:李法珍王永起
申请(专利权)人:同智伟业软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1