基于滑动窗口的自愈组密钥分发方案
时间:2023-04-09 14:50:05 来源:千叶帆 本文已影响人
张瑞嵩 徐松艳 李 鑫 张道法
(北京遥测技术研究所 北京 100094)
随着网络技术的不断进步,组播技术因能有效实现1对多、多对多的快捷信息交互得到广泛关注,但安全问题限制了组播技术的使用.组播的安全问题和性能一直是研究热点,目前该领域已经取得了许多研究成果,但仍然存在不少亟待解决的问题.
组密钥管理是安全组播研究的一个重点.组内成员通过统一的管理方案,对密钥生成、密钥分发、密钥协商、密钥更新及密钥销毁等进行有效管理.现有的组密钥管理方案可以分为集中式、分布式、分层式3类.集中式管理中存在唯一的管理实体担任中央控制节点,负责组密钥的生成、分发和更新;
分布式管理中组成员之间相互独立且平等,它们共同参与组密钥的生成;
分层式管理中1个群组被划分成若干子组,每个子组由不同的子组控制器管理,子组之间可以是集中式或分布式管理.
近年来一些研究工作密切关注组密钥的自愈性问题,“自愈”指组成员能够从最新获得的密钥更新消息中恢复先前未能成功获取的组密钥.这种自愈能力非常适用于开放异构、误码率高的动态异构网络.动态异构网络一般是指成员动态参与的异构网络,如无线传感器网络(wireless sensor network, WSN)等.这类网络凭借其低成本、部署便利等特点被广泛用于各种场景,但因组成员资源有限、存储容量小且动态参与频繁,在组密钥管理不具备自愈能力时,组成员想要恢复未收到或遗失的密钥更新消息,只能请求组控制器(group controller, GC)重发遗失消息,不仅增加了组控制器的开销和通信资源,还使组控制器容易受到拒绝服务攻击.因此,研究具有自愈能力的组密钥管理方案具有重要意义.
2002年,Stadden等人[1]首先提出一种自愈的组密钥分发机制,该机制中动态组成员即使丢失1个或多个密钥更新消息,也能从最近的密钥分发广播消息中恢复出丢失密钥,但无法恢复出最后一次会话密钥.该机制具有较高的存储和计算开销.Liu等人[2]对文献[1]机制进行了改进,提出一种使用撤销多项式实现组成员撤销的方法,优化了存储和通信开销.Blundo等人[3]进一步指出Liu等人的缺陷,提出一种自愈机制,该机制中组成员能够从单个广播消息中恢复出以前的会话密钥,但具有较高的存储开销.Dutta等人[4]提出基于访问多项式的具有自愈能力的组密钥管理方案.林闯等人[5]在Liu等人[2]提出的个人秘密分发协议基础上作了改进,使其能够适应于组通信,提出一种基本的组密钥分发协议,随后通过加入单向哈希链机制,设计了具有自愈能力的组密钥分发协议(self-healing group key distribution scheme, S-GKDS).
现有的自愈组密钥分配方案(self-healing group key distribution, SGKD)的基本思想[6]是GC在广播消息中添加一些附加消息,使得合法组成员能够根据这些附加消息恢复出丢失的会话密钥,而不需要向GC申请重发,降低了通信开销和密钥暴露的概率.SGKD主要分为4种:基于多项式[7-8]、基于指数算法[9]、基于双线性配对[10]以及基于向量空间[11].也有学者利用其他技术实现自愈组密钥分配,如差分子集[12-15]的方法.
本文通过构造拉格朗日插值多项式,提出具有自愈能力的集中式组密钥分发方案.解决了传统方案最大通信次数和同阶段最多撤销成员数受限等问题,降低了组成员的存储开销,满足前后向安全性,并且能够抗合谋攻击.本文方案适用于开放异构、误码率高的动态异构网络.
1.1 拉格朗日插值
已知函数y=f(x)的n对值(x1,y1),(x2,y2),…,(xn,yn),可以构造出n-1次多项式:
(1)
式(1)被称为拉格朗日插值多项式.从式(1)可以看出,y(xi)=yi.
1.2 CDH假设
CDH(computational Diffie-Hellman)问题是:假设已知(g,ga,gb)∈G,其中a,b∈Zq未知,计算gab∈G.CDH假设是:如果攻击者无法在多项式时间内计算出gab,则表明G上的CDH问题是困难的.
1.3 滑动窗口
对于动态异构网络上的组通信,若每次都恢复从第1个会话到当前会话的所有会话密钥,则带来巨大的通信开销和计算开销.因此本文定义一个窗口,窗口值的大小为u,代表组成员在收到组密钥更新消息时能够恢复会话密钥的个数.窗口大小固定,随着会话阶段同步移动,故称为滑动窗口.
2.1 方案设计
本文方案的参与者有GC和组成员.GC是安全可信中心,具有强大的处理能力和丰富的资源,负责组密钥的管理和消息的广播等.组成员资源有限,计算和存储能力较差.本文假定组成员在准备阶段可以通过安全信道获取共享密钥,用于后续通信.
图1为本文方案架构图,本文方案中无组成员数、撤销成员数和最大会话次数的限制.在组成员发生动态变化或者需要定期更新密钥时,GC计算相关参数,广播密钥更新消息.合法成员接收后凭借初始信息恢复出所在会话窗口的所有密钥,但不能恢复出之前的密钥.非法组成员则无法恢复出任何密钥.
图1 本文方案架构图
GC在初始化阶段对群组的合法成员分发相应参数,用于后续组密钥的更新.会话时如果发生了成员变更,需进行密钥更新,密钥更新完成表示新的会话开始.如图1所示,会话j1,j2,j3无组成员变更,则在会话正常结束时更新密钥;
会话j4发生了成员变更,则立即更新密钥,更新完成后开始新的会话.
2.2 安全模型
网络由组控制器和组成员构成.
定义1.前向安全.在会话j以前被撤销的组成员无法通过之前的会话密钥和拥有的私密信息恢复出当前及未来阶段的组密钥.
定义2.后向安全.在会话j以后加入的合法组成员无法通过之后的会话密钥和拥有的私密信息恢复出之前的组密钥.
定义3.抗合谋攻击.在会话j1以后加入的合法组成员和在会话j2(j2+u 定义4.自愈能力.对于任意的会话j,存在j2 定义5.组密钥恢复能力.对于合法组成员Ui,组密钥完全可以由广播消息和私钥决定.即对于会话j的合法组成员Ui,能够利用广播消息和私钥Ki计算出组密钥TKj. GC首先选择有限域Fq(q是一个大素数)中的一个生成元g用于后续多项式的构造,然后选择u-1个随机数作为会话阶段[2-u,0]的密钥更新消息,如图2所示,并计算一个用于保障组密钥后向安全的前向哈希链,如式(2)所示. 图2 密钥更新消息 (2) GC与每个组成员Ui拥有唯一的共享密钥Ki,其他组成员无法得知Ki. (3) 其中,Ki是GC与组成员Ui共享的密钥,EKi表示使用Ki对消息加密,MAC(·)是产生消息验证码的散列函数(如SM3).Ui收到消息后,利用共享密钥Ki解密消息,计算解密后的消息验证码并与接收信息进行比较,若相同,则保留接收到的消息. 密钥更新消息与会话阶段关系如图3所示: 图3 密钥更新消息与会话阶段关系 假设此时处于会话j,滑动窗口所在会话阶段是[1+j-u,j],则密钥更新步骤如下: 1) GC首先选择一个随机数GKj作为会话j的密钥更新信息以及一个随机数x1作为构造多项式的因子; (4) 其中,对于组用户Ui而言,t是{gix1}|1+j-u≤i≤j中的一个数. 2) GC首先选择一个随机数x2,利用x2与一个未使用的组成员私钥Ka(Ka与合法组成员Ui拥有的私钥Ki不相等)计算出gKax2; (5) 其中,对于组用户Ui而言,x是指gKix2. 3) GC利用步骤2)计算得到的n个gKix2构造n次多项式ej(x). (6) 其中,Gj={U1,U2,…,Un}代表会话j共有n个合法组成员. 4) GC产生一个次数为u-1的屏蔽多项式rj(t). rj(t)=au-1tu-1+au-2tu-2+…+a1t+a0, (7) 其中,a0,a1,…,au-1是GC选择的随机数. 利用式(4)~(7)构造广播多项式wj(x,t). wj(x,t)=ej(x)rj(t)+Pj(t)hj(x). (8) 5) GC广播消息给所有组成员. GC→Gj:{j|gx1|gx2|wj(x,t)| (9) 组成员Ui收到广播消息后,验证消息的合法性,若合法,则接收消息.首先,Ui利用共享密钥Ki和接收的gx2计算出gKix2,根据Ui∈Gj以及拉格朗日插值多项式性质可知,ej(gKix2)=0,hj(gKix2)=1; GKj=wj(gKix2,gjx1). (10) 最后,Ui按照式(11)计算出当前会话j的组密钥: (11) 1) 组成员撤销. 假设在会话j有组成员离开,GC只需在广播消息时,不使用被撤销的组成员构造多项式hj(x)和ej(x)即可. 2) 组成员加入. 假设在会话j有某个组成员Ua加入,GC向Ua发送的消息为 (12) 其中,Ka表示GC和组成员Ua的共享密钥,EKa表示使用Ka对消息进行加密.GC此时发送给Ua的消息中包含会话j对应的哈希链KF上的值,Ua无法得知会话j以前对应哈希链上的值,从而保证了后向安全性. 假设合法组成员Ui在会话β接收到广播消息后,一直未收到新的广播消息,直到会话j,则组成员能够恢复会话阶段[β,j](j-β≤u)的组密钥.Ui收到广播消息后,由于Ui∈Gj,因此ej(gKix2)=0,hj(gKix2)=1.由于Pj(t)是利用所在窗口的u个密钥更新消息构造,因此Ui可以恢复GKl|1+j-u≤l≤j即u个密钥更新消息.Ui利用gx1和gx2以及私钥Ki计算出gKix2和glx1,代入式(10),即可得到GKl. 图7展示了FISE的查找流程。当一个报文到达时,FISE首先在TCAM中分别匹配目的前缀和源前缀,通过目的表和源表可得指向TD单元的目的索引号和源索引号,最后利用TD单元存储的下一跳索引号,在映射表中查找到下一跳的信息。 1) 前向安全性. 证明.假设Rj表示在会话j被撤销的组成员集,则R=Rj∪Rj-1∪…∪R1(R∩Gj=∅)表示会话阶段[1,j]被撤销的所有组成员集合.对于任意的被撤销的组成员Ub∈R,其与GC的共享密钥是Kb.由于ej(gKbx2)≠0且hj(gKbx2)≠1,因此对于攻击者而言,wj(gKbx2,gjx1)是任意值.考虑R中所有组成员联合,由于hj(x),ej(x)是根据会话j的所有合法组成员所拥有的私钥构造,rj(t)是GC随机产生的秘密屏蔽多项式,因此对于GKj(t)=(wj(x,t)-ej(x)rj(t))/hj(x),被撤销的组成员即使合谋也无法获得hj(x),ej(x)和rj(t),从而也就无法计算出组密钥. 2) 后向安全性. 3) 抗合谋攻击. 证明.假设Rj2是会话j2被撤销的所有组成员集合,Gj1是会话j1(j2+u 4) 组成员身份匿名性. 证明.GC在每次广播密钥更新消息时,均未包含合法组成员身份和已撤销组成员身份,这避免了暴露组成员的身份. 以上1)~3)也是定义1~3的证明,定义4和定义5的证明在方案设计中已给出. 将本文方案与Staddon等人[1]、Liu等人[2]、Blundo等人[3]、Dutta等人[4]、林闯等人[5]、杜春来等人[16]、施君宇[17]提出的方案进行比较.表1给出了这些方案在前/后向安全性、抗合谋攻击、最多可撤销成员数、最大通信次数以及是否支持被撤销节点重新加入5个方面的比较结果. 表1 安全性比较 由表1可知,本文方案相较其他方案不仅保证了前/后向安全性,能够抵御合谋攻击,且支持被撤销节点重新加入,并针对最多可撤销成员数和最大通信次数作了改进,取得了良好的效果. 1) 存储开销. 2) 通信开销. 在很多需要广播撤销组成员身份信息的方案中,通常忽略广播撤销组成员身份信息的通信开销,因此这些方案不适用于动态撤销频繁的异构网络.本文方案的通信开销仅与会话阶段合法组成员个数和滑动窗口值有关,不仅没有广播撤销组成员身份信息的通信开销,且避免了通信开销随会话次数增多而变大的缺点.对于S-GKDS型方案,虽然通信开销很低,但是撤销成员数的限制条件高,仅可撤销少量成员. 3) 计算开销. 本文方案的计算开销由有限域上的多项式乘法运算以及哈希运算组成.组成员进行组密钥更新时的计算开销包含1次多项式的代入运算和1次哈希运算,GC的计算开销只包含广播多项式的构造. 表2是本文方案与其他方案的性能比较.为了方便,方案都在同一个有限域上进行运算.表2中,m指最大通信次数,t指最多可撤销成员数,j是会话次数,l是组成员的会话生命期,q是所选取有限域中的元素个数,n是合法成员数,u是窗口大小(即允许恢复的自愈组密钥个数),Gj表示会话j的合法组成员集合. 表2 性能比较 由表2可知,本文方案在存储开销上达到了最优,林闯等人[5]提出的方案通信开销最少,施君宇[17]提出的方案计算开销最少.结合安全性比较结果,本文方案在通信开销、计算开销上虽然达不到最优,但实现了无限制的最大通信次数和最大可撤销成员数,延长了系统的生命期. 此外,传统的自愈组密钥方案通常在初始化阶段产生m个私钥,这会带来3个问题:1)系统的通信次数最多为m次; 本文针对不可靠网络的自愈密钥问题、现有组密钥自愈方案存在的通信次数和同阶段撤销成员数受限问题以及被撤销组成员是否可重新加入网络的问题,结合单向哈希链和拉格朗日插值多项式方法,提出一种基于滑动窗口的自愈组密钥分发方案.分析证明,该方案在解决了上述问题的同时,实现了成员的匿名性,减少了成员的存储开销,适用于资源受限、成员动态参与频繁、拓扑不稳定的开放异构网络.3.1 准备阶段
3.2 初始化阶段
3.3 密钥更新阶段
然后利用初始化阶段选择的生成元g和x1计算出u个值{gix1}|1+j-u≤i≤j,这u个值与滑动窗口所在会话阶段的密钥更新信息GKi|i∈[1+j-u,j]组成u对值(gix1,GKi)|i∈[1+j-u,j],以构造出u-1次的自愈组密钥多项式Pj(t).
然后利用本阶段的n个合法组成员的Ki计算出gKix2,与gKax2共n+1个值构造出n次的多项式hj(x).
MAC(j|gx1|gx2|wj(x,t))},3.4 会话密钥恢复
随后,Ui利用接收的gx1和当前会话次数j计算出gjx1,对于Ui而言,计算会话j的密钥更新消息GKj的方式如下:3.5 动态参与阶段
3.6 自愈机制
4.1 本文方案安全性分析
4.2 安全性比较
5.1 本文方案性能分析
5.2 性能比较
2)在通话初期加入群组的组成员需要存储大量密钥;
3)组成员退出群组再次加入时,原先存储的私钥无法使用.本文方案不仅通过引入插值多项式解决了上述问题,还降低了组成员在初始化阶段的存储开销.