一种基于身份的群组密钥分发、更新方法及系统与流程

文档序号:36419941发布日期:2023-12-20 07:49阅读:27来源:国知局
一种基于身份的群组密钥分发的制作方法

本发明属于信息安全,涉及一种群组密钥分发、更新方法及系统,具体涉及一种基于身份的群组密钥分发、更新方法及系统。


背景技术:

1、在信息安全领域中,如何保护数据的安全与隐私一直是人们关注的重点。在安全通信场景中,为了保障数据在整个传输过程中的隐私性,最常用的手段是采取端到端加密方法,这种方法的加密解密过程发生在终端设备上,在信道上传输的是数据密文,只有发送方和指定的接收方可以访问原始数据,即使存储到服务器上,任何第三方机构也无法访问服务器上的加密数据。即时通信是当前信息网络上应用广泛的一种通信技术,允许两人或多人使用互联网实时传输文字、语音和图片等信息。

2、群聊是即时通信的重要功能之一。为了保障群聊中收发的消息的安全性,通常采取的方法是群聊端到端加密,即对群聊用户产生的聊天内容用密钥进行加密之后再传输。为了满足多用户场景下各用户能对同一条消息进行加解密,目前的即时通信软件采取的群聊消息加解密技术是通过在每个群组成员之间都建立一个一对一的加密通道,在建立加密通道的过程中协商会话密钥,当有用户加入或退出群聊需要更新群组会话密钥时,需要重新执行一遍完整的计算流程。这种方法不仅为增加了客户端的计算开销与通信开销,也为即时通信系统的密钥管理带来了极大困难。基于身份的非对称密码算法使用用户的身份信息作为公钥,与传统公钥加密算法相比,省略了数字证书交换与证书维护等过程,简化了密钥管理的过程,适用于互联网各种新兴应用的安全保障。


技术实现思路

1、本发明的目的在于克服现有即时通信软件采用的群聊加密协议中生成加密群聊消息密钥的方法存在的缺陷,提出了一种基于身份的群组密钥分发方法,用于解决现有群聊加密协议中存在的需要复杂的群聊会话密钥协商过程以及密钥管理困难的问题,该方法实现了在群组密钥分发阶段只有群主需要发送一次参数,其余群成员只需接收参数并计算出群组会话密钥即可,无需与其他群成员进行额外的交互;并在此基础上提出了一种基于身份的用户加入时群组密钥更新方法和一种基于身份的用户退出时群组密钥更新方法,用于解决现有群聊加密协议中存在的群聊会话密钥更新时计算成本高的问题,该方法实现了在群组密钥更新阶段群主无需重新执行完整的计算流程,只需执行较少的计算即可实现群组密钥的更新。

2、本发明的方法所采用的技术方案是:一种基于身份的群组密钥分发方法,包括以下步骤:

3、步骤a1:在拥有n+1个用户的群组中,群主u0生成群组密钥k并将k分发给群组内其余n个用户;

4、步骤a2:群组内用户ui(1≤i≤n)利用参数计算出群组密钥。

5、作为优选,步骤a1的具体实现包括以下子步骤:

6、步骤a1.1:群主u0随机生成一个len比特的整数k作为群组会话密钥,并计算整数q=2len+1,将q的值存储在本地;

7、步骤a1.2:群主u0使用群组中n+1个用户的标识{idk}以及系统公钥ppub-e,计算n+1个中间参数{qk};其中,ppub-e为加密主公钥,ppub-e=[ke]p1;ke为加密主私钥;p1为群g1的生成元;g1是阶为素数n的加法循环群;

8、步骤a1.3:产生n+1个随机数{rk}∈[1,n-1],其中n表示群g1的阶;

9、步骤a1.4:使用n+1个随机数{rk}与n+1个中间参数{qk}计算n+1个元素{ck},并将n+1个{ck}存储在本地;

10、步骤a1.5:计算群gt中的元素g=e(pkub–p,p2);其中,p2为群g2的生成元;g2是阶为素数n的加法循环群;gt是阶为素数n的乘法循环群;e为从g1×g2到gt的双线性对;然后将g保存在本地;

11、步骤a1.6:计算群gt中的n+1个元素将每个wk的数据类型转换为比特串;

12、步骤a1.7:计算n+1个整数值{tk=h2(wk)},tk∈[1,q],其中h2()为将输入的比特串转化成一个[1,q]上的整数并输出该整数的密码函数,其中q=2len+1,然后将n+1个{tk}存储在本地;

13、步骤a1.8:产生随机数r∈[1,q-1],计算n+1个整数值{hk=h2(tk||r)},hk∈[1,q],其中h2()为将输入的比特串转化成一个[1,q]上的整数并输出该整数的密码函数,其中q=2len+1;

14、步骤a1.9:产生随机数r∈[1,q-1],然后构造多项式f(x)=(x-r)(x-h0)…(x-hn)+kmodq=xn+2+an+1xn+1+…+a1x+a0modq并计算出各项系数an+1,…,a0的值;

15、步骤a1.10:输出参数c=(id0||c0)||(id1||c1)||…||(idn||cn)||an+1||…||a0||r,并上传服务器,服务器发送给群组内用户ui的参数简化为c=ci||an+1||…||a0||r。

16、作为优选,步骤a1.1中,qk=[h1(idk||hid,n)]p1+ppub–e,0≤k≤n;

17、其中,idk为群组内除群主u0外的用户uk的标识;h1()为由密码杂凑函数派生的密码函数;hid为用一个字节表示的私钥生成函数标识符,由kgc选择并公开。

18、作为优选,步骤a1.3中,ck=[rk]qk,0≤k≤n。

19、作为优选,步骤a2的具体实现包括以下子步骤:

20、步骤a2.1:用户ui(1≤i≤n)从c中取出比特串ci、多项式系数{an+1,…,a0}和r,将ci的数据类型转换为椭圆曲线上的点,验证ci∈g1是否成立,若不成立则报错并退出;

21、步骤a2.2:计算q=2len+1,并将q保存在本地;

22、步骤a2.3:计算群gt中的元素wi′,将wi′的数据类型转换为比特串;

23、步骤a2.4:计算整数值ti=h2(wi′);

24、步骤a2.5:计算整数值i=h2(ti||r);

25、步骤a2.6:计算k′=f(hi)=hin+2+an+1hin+1+…+a1hi+a0mod q;

26、步骤a2.7:输出群组密钥k′。

27、作为优选,步骤a2.2中,wi′=e(ci,dei);其中,dei为用户ui的私钥,计算公式为dei=[ke·(h1(idi||hid,i)+ke)-1]p2;

28、本发明提供的一种基于身份的用户加入时群组密钥更新方法,包括以下步骤:

29、步骤b1:在拥有n+1个用户的群组中,身份标识符为{idn+1,idn+2,…,idn+m}的m(m>0)个新用户加入了该群组,群主u0生成新的群组密钥k′并将k′分发给群组内所有用户;

30、步骤b2:群组内其余用户ui(1≤i≤n+m)利用参数计算出群组密钥。

31、作为优选,步骤b1的具体实现包括以下子步骤:

32、步骤b1.1:群主u0读取存储在本地的q,随机生成一个len比特的整数k′作为群组会话密钥;

33、步骤b1.2:群主u0使用新加入群组的m个用户的标识{idj}以及系统公钥ppub-e,计算m个中间参数{qj};其中,ppub-e为加密主公钥,ppub-e=[ke]p1;ke为加密主私钥;p1为群g1的生成元;g1是阶为素数n的加法循环群;

34、步骤b1.3:产生m个随机数{rj}∈[1,n-1],其中n表示群g1的阶;

35、步骤b1.4:使用m个随机数{rj}与m个中间参数{qj}计算m个元素{cj},并将m个{cj}存储到本地;

36、步骤b1.5:读取存储在本地的g,计算群gt中的m个元素将每个wj的数据类型转换为比特串,其中gt是阶为素数n的乘法循环群;

37、步骤b1.6:计算m个整数值{tj=h2(wj)},tj∈[1,q],其中h2()为将输入的比特串转化成一个[1,q]上的整数并输出该整数的密码函数,其中q=2len+1,然后将m个{tj}存储在本地;

38、步骤b1.7:读取存储在本地的n+1个{tk},产生随机数r′∈[1,q-1],计算n+m+1个整数值{h′k=h2(tk||r′)},h′k∈[1,q],其中h2()为将输入的比特串转化成一个[1,q]上的整数并输出该整数的密码函数,其中q=2l2n+1;

39、步骤b1.8:产生随机数r′∈[1,q-1],然后构造多项式f(x)=(x-r′)(x-h′0)…(x-h′n)(x-h′n+1)…(x-h′n+m)+k′modq=xn+m+2+a′n+m+1xn+m+1+…+a′1x+a′0modq并计算出各项系数a′n+m+1,…,a′0的值;

40、步骤b1.9:读取存储在本地的n+1个{ck},输出参数c=(id0||c0)||(id1||c1)||…||(idn||cn)||(idn+1||cn+1)||…||(idn+m||cn+m)||a′n+m+1||…||a′0||r′,并上传服务器,服务器发送给群组内用户ui的参数简化为c=ci||a′n+m+1||…||a′0||r′。

41、作为优选,步骤b1.2中,qj=[h1(idj||hid,n)]p1+ppub–e,n+1≤j≤n+m;

42、其中,idj为新加入群组的用户uj的标识;h1()为由密码杂凑函数派生的密码函数;hid为用一个字节表示的私钥生成函数标识符,由kgc选择并公开。

43、作为优选,步骤b1.3中,cj=[rj]qj,n+1≤j≤n+m。

44、作为优选,步骤b2的具体实现包括以下子步骤:

45、步骤b2.1:用户ui(1≤i≤n+m)从c中取出比特串ci、多项式系数{a′n+m+1,…,a′0}和r′,将ci的数据类型转换为椭圆曲线上的点,验证ci∈g1是否成立,若不成立则报错并退出;

46、步骤b2.2:若ui原本已在群内则读取存储在本地的q,若ui为新加入群内的用户则计算q=2len+1并将q存储在本地;

47、步骤b2.3:计算群gt中的元素wi′,将wi′的数据类型转换为比特串;

48、步骤b2.4:计算整数值ti=h2(wi′);

49、步骤b2.5:计算整数值′i=h2(ti||r′);

50、步骤b2.6:计算k′=f(′i)=(h′i)n+m+2+a′n+m+1(h′i)n+m+1+…+a′1(h′i)+a′0mod q;

51、步骤b2.7:输出群组密钥k′。

52、作为优选,步骤b2.2中,wi′=e(ci,dei);其中,dei为用户ui的私钥,计算公式为dei=[ke·(h1(idi||hid,n)+ke)-1]p2;

53、本发明提供的一种基于身份的用户退出时群组密钥更新方法,包括以下步骤:

54、步骤c1:在拥有n+1个用户的群组中,身份标识符为{idl1,idl2,…,idlv}的v(v>0)个用户退出了该群组,群主u0生成新的群组密钥k″并将k″分发给群组内所有用户;

55、步骤c2:群组内其余用户ui(1≤i≤n且i≠l1,l2,…,lv)利用参数计算出群组密钥。

56、作为优选,步骤c1的具体实现包括以下子步骤:

57、步骤c1.1:群主u0读取存储在本地的q,随机生成一个len比特的整数k″作为群组会话密钥;

58、步骤c1.2:群主u0读取存储在本地的仍留在群组内的n+1-v个用户对应的n+1-v个{ck},删除存储在本地的已经退出群聊的v个用户对应的v个{ck};

59、步骤c1.3:读取存储在本地的仍留在群组内的n+1-v个用户对应的n+1-v个{tk},产生随机数r″∈[1,q-1],计算n+1-v个整数值{h″k=h2(tk||r″)},h″k∈[1,q],其中h2()为将输入的比特串转化成一个[1,q]上的整数并输出该整数的密码函数,其中q=2len+1;删除存储在本地的已经退出群聊的v个用户对应的v个{tk};

60、步骤c1.4:产生随机数r″∈[1,q-1],然后构造多项式并计算出各项系数的值;

61、步骤c1.5:输出参数c={(idk||ck)}||{a″n+1-v,…,a″0}||r″,并上传服务器,服务器发送给群组内用户ui的参数简化为c=ci||{a″n+1-v,…,a″0}||r″。

62、作为优选,步骤c2的具体实现包括以下子步骤:

63、步骤c2.1:用户ui(1≤i≤n且i≠l1,l2,…,lv)从c中取出比特串ci、多项式系数{a″n+1-v,…,a″0}和r″,将ci的数据类型转换为椭圆曲线上的点,验证ci∈g1是否成立,若不成立则报错并退出;

64、步骤c2.2:读取存储在本地的q;

65、步骤c2.3:计算群gt中的元素wi′,将wi′的数据类型转换为比特串;

66、步骤c2.4:计算整数值ti=h2(wi′);

67、步骤c2.5:计算整数值″i=h2(ti||r″);

68、步骤c2.6:计算k′=f(″i)=(h″i)n+2-v+a″n+1-v(h″i)n+1-v+…+a″1(h″i)+a″0mod q;

69、步骤c2.7:输出群组密钥k′。

70、作为优选,步骤c2.2中,wi′=e(ci,dei);其中,dei为用户ui的私钥,计算公式为dei=[ke·(h1(idi||hid,n)+ke)-1]p2;

71、本发明的系统采用的技术方案是:一种基于身份的群组密钥分发及更新系统,其特征在于,包括:

72、一个或多个处理器;

73、存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现所述的基于身份的群组密钥分发及更新方法。

74、相对于现有技术,本发明的有益效果是:本发明采用了基于身份的密码体制,可以省去消息通信过程中的数字证书交换与证书管理等过程,降低了密钥管理的复杂性;基于国密sm9算法进行构造,可以使用sm9算法的国家标准来实现,能够更好的满足国内政府和企业对群聊通信安全的要求;群组密钥分发阶段群组内成员的交互简单,降低了通信复杂度;群主发送的参数可在服务器端备份,当群成员存储在本地的群组密钥丢失时,可向服务器请求参数以恢复群组密钥;当有用户加入或退出群聊需要更新群组密钥时,群主无需重新执行完整的计算流程,只需计算部分值即可更新群组密钥,降低了群组密钥更新时群组的计算成本和时间开销。

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