一种基于椭圆曲线的群组密钥协商及验证方法

文档序号:36702686发布日期:2024-01-16 11:37阅读:20来源:国知局
一种基于椭圆曲线的群组密钥协商及验证方法

本发明涉及信息安全的,特别涉及一种基于椭圆曲线的群组密钥协商及验证方法。


背景技术:

1、为了保证群组内的通信安全,群组密钥协商应用而生,群组密钥协商主要应用在安全多方计算、资源安全共享和分布式协同计算等方向。群组密钥协商方案一般是群组之间先计算出群组会话密钥,进而用会话密钥进行群组加密通信的方法,群组密钥协商是保障群组之间进行安全信息交换与传输的关键技术之一。

2、目前,在传统物联网(iot)数据通信场景中,主要采用涉及大素数的生成、模幂运算等涉及大数的运算的算法,如非对称加密算法rsa等。然而现有群组密钥协商方法计算复杂度较高,因此对于资源受限的物联网设备可能会消耗大量计算资源,进而导致通信开销和通信时延高。


技术实现思路

1、本发明目的是为了解决现有群组密钥协商方法消耗资源大导致通信开销和通信时延高的问题,而提出了一种基于椭圆曲线的群组密钥协商及验证方法。

2、一种基于椭圆曲线的群组密钥协商及验证方法具体过程为:

3、步骤一、对全局初始化,然后每个用户向可信第三方ta注册,获得用户id与时间戳信息;

4、步骤二、用户获取随机私钥,用户加入群组后,利用私钥在群组内协商生成会话密钥ck和用户公钥pkri,若有新用户加入已建立的群组或已建群组中的老用户离开当前群组,则更新会话密钥和用户公钥;

5、所述群组内的用户数量设为n个;

6、步骤三、获取群组内每个用户的公钥证书,并利用群组内每个用户的公钥证书进行群签名以及群签名验证,若群签名验证通过,则表示当前群组安全,然后执行步骤四;若群名验证不通过,则删除异常用户,并将群组的空位置广播给所有未加入群组的用户,若有新用户加入则返回执行步骤二,直至签名验证通过且无新用户加入后执行步骤四;

7、若当前安全群组中用户人数小于n,则将剩余用户组成安全临时会话群组;

8、步骤四、步骤三获得的安全群组中的用户利用会话密钥和用户公钥对群组中的密文进行加密解密,从而进行群组安全通信,获得群组通信安全提示。

9、进一步地,所述对全局初始化具体为:可信第三方ta向注册的用户发布全局的系统参数

10、其中,p是大于64位的随机质数,g是原根,id(ui)是用户ui的id,是用户ui的时间戳,f(p)是哈希域;

11、所述哈希域f(p),通过以下方式获得:

12、将p和椭圆曲线作为规约,使椭圆曲线上的点p(x,y)在域上,从而确定哈希域f(p);

13、所述椭圆曲线为:

14、y2=x3+324x+1287

15、其中,x,y∈f(p)且x,y mod p∈(0,p-1)。

16、进一步地,所述步骤二中的用户加入群组后,利用私钥在群组内协商生成会话密钥ck和用户公钥具体为:

17、(a)将用户标号i初始化为i=1;

18、(b)用户u1根据u1的私钥r1,获取用户u1的公钥并将发送给用户u2;

19、(c)令i=i+1;

20、(d)用户ui根据ui的私钥ri,获得用户ui的公钥并将发送给用户ui+1;

21、(e)判断i是否小于n,若i<n,则令i=i+1并返回(d),直至i=n,则执行(f);

22、(f)用户un利用接收的用户un-1的公钥,从而获得会话密钥

23、其中,ui是u1,u2,u3,....,un中的任一用户,{r1,r2,r3,r4,r5,....rn}∈{1,p-1},ri是ui的私钥,n是群组中用户总数。

24、进一步地,所述步骤二中的若有新用户加入已建立的群组或已建群组中的老用户离开当前群组,则更新会话密钥和用户公钥,具体为:

25、新用户通过以下方式加入已建立的群组并更新会话密钥:

26、a1、若群组内用户位置i为空位置,则令list[i]=0,并向所有未加入群组的用户广播并记录空位置;

27、a2、按照用户在ta注册的顺序将未加入群组的用户加入到群组中,并令list[i]=1;

28、a3、利用新加入用户的私钥和群组中原有用户的私钥重新获取当前群组中每个用户的公钥,从而获取当前群组的会话密钥,并更新会话密钥ck。

29、已建群组中的老用户离开当前群组,通过以下方式更新会话密钥:

30、b1、老用户离开群组后,获取空缺位置i,令list[i]=0;

31、b2、利用群组内剩余用户组成临时会话群组,并获得临时会话密钥:

32、当用户ui退出群组后,核对剩余用户的id是否为{id(u1),id(u2),....,id(ui-1),id(ui+1),...,id(un)},若用户id无异常,则获得临时会话密钥若有用户id异常,则剔除异常用户,再获取临时会话密钥。

33、进一步地,所述步骤三中的获取群组内每个用户的公钥证书,并利用群组内每个用户的公钥证书进行群签名以及群签名验证,若群签名验证通过,则表示当前群组安全,然后执行步骤四;若群名验证不通过,则删除异常用户,并将群组的空位置广播给所有未加入群组的用户,若有新用户加入则返回执行步骤二,直至签名验证通过且无新用户加入后执行步骤四,具体为:

34、步骤三一、群组内每个用户ui向ca申请获得公钥证书

35、其中,是用户ui的签名验证算法,signca是公钥证书的签名算法;

36、步骤三二、利用步骤三一获得的公钥证书进行群签名:

37、步骤三二一、用户un计算用户un的签名并将将发送给用户un-1;

38、所述用户un的签名为:

39、

40、步骤三二二、用户un-1计算用户un的验证私钥并将发送给用户un,用户un-1计算用户un-1的签名并将与传给用户un-2;

41、所述用户un的验证私钥为:

42、

43、所述用户un-1的签名为:

44、

45、步骤三二三、用户un-2计算用户un-1的验证私钥并将发送给用户un-1,用户un-2计算用户un-2的签名并将与传给用户un-3;

46、所述用户un-1的验证私钥为:

47、

48、所述用户un-2的签名为:

49、

50、步骤三二四、按照步骤三二一到步骤三二三方式对会话群中的所有用户进行群签名,直至用户u1计算用户u2的验证私钥获得用户u1的签名将和发送给用户un;

51、所述用户u2的验证私钥为:

52、

53、所述用户u1的签名为:

54、

55、步骤三二五、用户un计算验证会话密钥

56、步骤三三、对步骤三二获得的群签名进行验证,若群签名验证通过,则表示当前群组安全,然后执行步骤四;若群签名验证不通过,则删除异常用户,并将群组的空位置广播给所有未加入群组的用户,若有新用户加入则返回执行步骤二,直至签名验证通过且无新用户加入后执行步骤四。

57、进一步地,所述步骤三三中的对步骤三二获得的群签名进行验证,若群签名验证通过,则表示当前群组安全,然后执行步骤四;若群签名验证不通过,则删除异常用户,并将群组的空位置广播给所有未加入群组的用户,若有新用户加入则返回执行步骤二,直至签名验证通过且无新用户加入后执行步骤四,具体为:

58、步骤三三一、将用户标号i初始化为i=1;

59、步骤三三二、用户ui利用验证利用verca验证c(ui+1);

60、若均验证通过,则用户ui将传给ui+1,并执行步骤三三三;

61、若任一项验证没有通过,则删除用户ui+1,并将list[i+1]=0广播给未加入群组的用户;

62、若有新用户加入则返回步骤二;若无用户加入,则执行步骤三三三;

63、步骤三三三、用户ui+1利用验证利用verca验证c(ui);

64、若任一项验证没有通过,则删除用户ui,并将list[i]=0广播给未加入群组的用户,若有新用户加入则返回步骤二,若没有新用户加入则执行步骤三三四;

65、若均验证通过则将与用户ui+1的私钥ri+1进行比对;

66、若与ri+1相等,判断i是否小于n,若i<n,则令i=i+1,并返回步骤三三二,若i=n执行步骤三三四;

67、若与ri+1不相等,则删除用户ui+1,并将list[i+1]=0广播给未加入群组的用户,若有新用户加入则返回步骤二,若没有新用户加入,则执行步骤三三四;

68、步骤三三四、用户un利用验证利用verca验证c(u1);

69、若均验证通过,则用户un将传给u1,并执行步骤三三五;

70、若任一项验证没有通过,则删除用户u1,将list[1]=0广播给未加入群组的用户,若有新用户加入则返回步骤二;

71、若没有新用户加入则执行步骤三三五;

72、步骤三三五、用户u1用验证利用verca验证c(un);

73、若任一项验证没有通过,则删除用户un,将list[n]=0广播给未加入群组的用户,若有新用户加入则返回步骤二;若没有新用户加入则执行步骤三三六;

74、若均验证通过则与ck进行比对;

75、若与ck相等,则表示当前群组中用户通信安全,则执行步骤三三六;

76、若与ck不相等,则删除用户u1,将list[1]=0广播给未加入群组的用户,若有新用户加入则返回步骤二,若没有新用户加入则执行步骤三三六;

77、步骤三三六、获取签名验证后群组中剩余用户数量,若签名验证后群组中用户数量等于n,则表示当前群组安全,执行步骤四,若签名验证后群组中用户数量小于n,则将剩余用户组成安全临时会话群组,然后执行步骤四。

78、进一步地,所述步骤四中的步骤三获得的安全群组中的用户利用会话密钥和用户公钥对群组中的密文进行加密解密,从而进行群组安全通信,获得群组通信安全提示,具体为:

79、步骤四一、利用用户un-1的用户公钥对会话密钥ck加密获得用户un将在步骤三获得的群组内广播,验证u1、u2、...、un-1的用户id,若所有用户的id均正确,则执行步骤四二;若任一用户的id出现错误,则不发起解密请求,结束通信;

80、步骤四二、利用当前群组内的用户建立临时会话群组,获得临时会话密钥

81、步骤四三、当前群组内所有用户提供私钥对进行解密,若成功解出ck,则在临时会话群组中广播,表示当前群组安全,临时会话群结束,然后执行步骤四四;若解密不成功,则表示某处用户被敌手攻击,结束通信;

82、步骤四四、在步骤四三获得的安全群组内通信,获得群组通信安全提示。

83、进一步地,所述步骤四四中的在步骤四三获得的安全群组内通信,获得群组通信安全提示,具体为:

84、步骤四四一、用户u1利用ck对明文进行加密,获得加密后的明文ck(message),并广播;

85、步骤四四二、群组内所有用户分别计算ck(message)的长序列hash值

86、步骤四四三、从用户un开始,每个用户利用步骤四四二获得的对密文进行轮询解密,从而进行群组通信,获得群组通信安全提示。

87、进一步地,所述步骤四四三中的从用户un开始,每个用户利用步骤四四二获得的对密文进行轮询解密,从而进行群组通信,获得群组通信安全提示,具体为:

88、step1、将每个用户计算的sha-256(ck(message))并分别命名为hashu1、hashu2、......、hashun,并在群组内进行广播;

89、step2、将用户标号i初始化为i=n;

90、step3、用户un将un的长序列hash值和私钥rn发送给用户un-1;

91、step4、令i=i-1;

92、step5、用户ui将ck与进行对比得到r'i,用户ui将hashui、私钥ri与r'i传给用户ui-1;

93、step6、判断i是否大于1,若i>1,则令i=i-1并返回step5,直至i=1,则用户u1将ck与进行对比得到r'1;

94、step7、利用step1到step6获得的hashu1、hashu2、......、hashun和r'1、r'2、....r'n-2、r'n-1获取群组通信安全提示。

95、进一步地,所述step7中的利用step1到step6获得的hash u1、hash u2、......、hash un和r'1、r'2、....r'n-2、r'n-1获取群组通信安全提示,具体为:

96、获取的值,若所有值均为0,则返回数据完整的提示;若任一值等于1,则返回数据被篡改的提示;

97、获取的值,若所有值均为0,则返回通信安全提示,若任一值为1,则返回通信不安全或用户被篡改的提示。

98、本发明的有益效果为:

99、本发明提出了一种基于群组密钥的diffie-hellman(dh)协议,使本发明能够使用更短的密钥长度来实现相同的安全性水平,从而降低了通信的开销,对于轻量级设备而言,减小了存储和处理的需求,同时具备更低的计算复杂性。本发明利用安全群组通信(sgc)作为协作框架,使用贡献组密钥协议(cgka)并引入集成签名,保证加密的通信内容而不被窃听,用户之间通过交换信息获得会话密钥,使用户不会被冒名,增强了加密和验证过程的安全性,使得在物联网设备的多个用户之间实现了轻量级的加密和解密。本发明使用动态认证群组,实现了组内成员间的集成签名方案,实现了正向加密、验证和反向签名。从安全方面考虑,本发明利用去中心化的群组密钥不但能够在密钥交换过程保证安全性与隐私性,同时提升了中心节点在群组中的稳定性,降低了通信时延以及减少了泄密带来的风险,同时并且群组中成员还能够灵活的加入或退出。本发明在能量和内存受限的系统中,提高了数据机密性和效率。随着用户数量的增加,本发明对密钥生成具有良好的适应性。本发明能够抵抗日蚀攻击、dos攻击/ddos攻击与前向攻击/后向攻击。本发明提出的密钥协商方式不过度依赖计算成本,使群组通信不受系统环境限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1