×
嵌入式 > 技术百科 > 详情

移动环境IP组播密钥管理的研究

发布时间:2021-06-03 发布时间:
|
摘要:研究了移动环境IP组播密钥管理协议,通过对几个目前有影响的协议进行分析和讨论,提出它们的特点和不足,对研究移动环境IP组播密钥管理具有指导意义。

关键词:IP组播 移动IP 组密钥管理

随着移动IP技术的发展,IP组播系统需要动态的组播源或组播接收者的加入,现有的组播协议如DVMRP、PIM-DM等基于静态组播源和主机的协议都需要进行扩展。移动环境IP组播密钥管理除了要解决静态组播要解决的如:机密性、完整性、认证、同谋破解等网络安全基本问题以外,还要解决前向加密、后向加密、密钥生成计算量、密钥发布占用带宽、密钥发布延迟、健壮性、可靠性、低制攻击、协议独立等问题。近几年来有很多组播协议被相继提出,同时为了更加安全地通信,也提出了一些基于移动IP的组播钥管理协议。

本文就目前存在的移动IP组播密钥协议进行研究,分析各个协议的优缺点,并对以后移动IP组播密钥管理的发展发表自己的看法。

1 基于树形的密钥管理协议

在这种密钥管理拓扑结构中,密钥被分成两种,一种是组会话密钥(group session key),用来加密组成员之间的信息交换;另一种是组辅助密钥(Group auxiliarykey)用来有效地分布和更新组会话密钥。 下面对几种基于树形的密钥管理协议进行介绍和分析。

1.1 简单密钥分发协议

由H.Hugh等提出,在这种协议中,简单密钥分发协议中心是组控制器GC(Group Controller),GC和每一个成员分别分享一个密钥kc,i并负责分发给Mi,组成员共享组密钥KG,当一个新的成员Mn+1加入时,GC分配MN+1共享密钥KC,N+1,然后GC需要把新的组密钥kG用旧的组密钥KG加密并且组播给M1、M2、…、MN;用kC,N+1加密单播给MN+1。但是当一个成员离开时,就不能用旧的组密钥来加密新的组密钥,因为离开者知道旧密钥,这时GC只能用与留下成员的共享密钥分别加密斯的组密钥单播给相应的成员。很显然,这种方式在组规模比较大的情况下,成本是很昂贵的,需要N次加密和发送N次更新信息。

1.2 利用密钥图表的组密钥管理协议

C.K.Wong等提出了利用密钥图形的密钥管理协议(Group Key Management Using Key Graphs),这个协议通过密钥图表表示子组的安全方案。该协议定义了三种策略对成员加入/退出时更新密钥的消息进行分组,分别是面向用户(user-oriented)、面向密钥(key-oriented)和面向组(group-oriented)。

首先需要定义以下概念:一个安全的组可以用三元组(U,K,R)表示。U是有限非空的组成员集合,K是有限非空的密钥集合,R∈U×K表示成员和密钥的二元关系数。有两个函数表示如下:keyset(Mi)={k|(Mi,k)∈R},表示一组被Mi持有的密钥,并且keyset(φ)=φ;userset(k)={Mi|(Mi,k)∈R},表示一组持有密钥K的成员。拓扑图如图1所示。

(1)面向用户

在面向用户方式中,GC把Mi的新密钥Knew i作为单个密钥更新消息并利用辅助密钥加密后发送给Mi,辅助密钥被用来加密是由于它被最大的成员集合

出发生时离开组的那个成员。利用“最大”组的目的是为了最小化加密成本,减少流量开销,更新密钥的消息通过组播发出,这些消息只能被持有正确辅助密钥的成员解密。

当新成员M9加入时:GC→{M7,M8}:{k1~9,k789}k78;GC~M9:{k1~9,K789}k9。当M9离开时:GC→{M1,M2,M3}:{k1~8}k123;GC→{M4,M5,M6}:{k1~8}k456;GC→M7:{k1~8,k78}k7;GC→M8:{k1~8,k78}

(2)面向密钥

对于一个组来说,一旦加入或离开发生,一系列决定性的密钥更新相应地发生了。在面向密钥方式中,每个更新密钥消息包含一个单一的新密钥。为了最小化加密成本,GC将选择一个辅助密钥去加密一个密钥更新消息,更新尽可能多的持有这个辅助密钥的成员。

当M9加入组时:GC→{M1,…,M8:{k1~9}k1~8;GC→{M9}:{k1~9}k9;GC→{M7,M8}:{K789}k78;GC→{M9}:{k789}k9。当一个成员M9离开这个组:GC→{M1,M2,M3}:{k1~8}k123;GC→{M4,M5,M6}:{k1~8}k456;GC→M7:{k78}k7;GC→M7:{k1~8}k78:GC→M8:k78}k8;GC→M8:{k1~8}k78。

(3)面向组

在这种方式中,GC试图允许一个密钥更新消息包含与新密钥尽可能一样多的新密钥。新密钥被适当的子组密钥加密,这样做的目的是尽量把加密的成本降到最低。

当M9加入时:GC→{M1,…,M8}:{k1~9}k1-8{k789}k78;GC→{M9}:{k1~9,k789}k9.当M9离开时:GC→{M1,…,M8}:{k1~8}k123,{k1~8}k456{k1~8}k78,{k78}k7,{k78}k8。

相对于SKDC方式,该方法加密成本大大降低。全组维持密钥的所有数目为n=d/(d-1)N-1/(d-1),每一个成员持有的密钥数量为h=logdN+1,是密钥树的高度,d是层数,N是组成数目。GC需要维持O(N)个密钥,每一个成员存储O(logd/N)个密钥。与SKDC相比,这种方法的复杂性无论在加密还是密钥更新消息时,成本与成员数目N是成比例的;同时,面向组充分提出了密钥分成和管理的可伸缩性。 1.3 布尔函数最小化技术组密钥管理协议

布尔函数最小化技术BFMT(Boolean Function Minimization Techniques)由Chang等提出。该方法为每一个用户定义一个用户ID,这个UID由n比特的二进制字符串组成,一个用户的密钥系列整个由它的UID决定。既然任何两个用户必须持有至少一个比特不同的UID,当它们中一个离开组播组时,其他的用户可以通过收到离开用户不持有的密钥加密密钥更新消息。

全组维持n个辅助密钥对:ki和ki,(i=0,…,n-1),每个密钥对对应UID中的一个比特。除了组会话密钥kG以外,每个密钥还被分配n个密钥,例如,成员Mj持有密钥ki,如果它的UID的第i个比特是“1”,或者它持有ki;如果它的UID的第i个比特是“0”,一个UID和对应的密钥分配表示如图2所示。

组会话密钥kG在根节点处,辅助密钥ki和ki作为内部节点的密钥,而成员Mj是它的叶子。图2中每一个成员都有一个UID,例如成员M5的UID是“101”,表明它拥有辅助密钥k2、ki、k0。另外还有每个成员都共享的密钥kG,每一个成员的密钥由它到根的路径表示。

一般情况下,每个成员的离开都导致kG和辅助密钥的更新,所以离开的成员不能解密以后的通信内容。利用定量的方法,组的变化定量、密钥更新过程根据指定的时间超时进行,这个过程被称为一个“巡回”(round)对于第r个“巡回”,组会话密钥表示为kG(r),辅助密钥表示为ki(r)和ki(r)。

(1)删除单个成员

在第r个“巡回”,有一个成员离开时,为了更新密钥kG(r),GC计算新的会话密钥kG(r+1)。新的密钥利用与离开成员“互补”的密钥加密。如在图3中,假如M5离开组,“互补”密钥是keyset(M5)={k2,k1,k0},那么kG(r+1)就可以使用这三个密钥加密({kG(r+1)}k2,{kG(r+1)}k1,{kG(r+1)}k0)并组播给所有的组成员。由于M5不知道这些密钥中的任何一个,所以它不能解密钥播的更新密钥信息而得到新的会话密钥。另一方面,任何一个成员,它的UID至少有一个比特与M5不同,因此持有的keyset(Mj)使得keyset(M5)keyset(Mj)≠φ,其中j≠5。这样就确保了其他的任何一个成员至少能解密一个密钥更新的数据块。

为了保证离开的成员不能利用它的辅助密钥解密以后的会话密钥更新,辅助密钥利用单向hash函数f进行更新:ki(r+1)=f(ki(r),kG(r+1))。

(2)删除多个成员

为了最小化密钥更新消息加密的成本,最值得做的是定时地成批删除组成员。在图2中,不失一般性,假设M0和M4离开组,没有定量的情况下,一共需要2×3=6个消息需要发出,因为定量的情况下,一共需要2×3=6个消息需要发出,因为在两轮中每次都需要使用3个辅助密钥用来加密发送的消息。在成批删除时,利用布尔算法计算M0和M4都拥有的辅助密钥S,在这个例子话密钥可以确保任何一个离开的成员不能算出新的会话密钥kG(r+1),而所有剩余的成员可以正确计算出来。

当M0和M4离开时,可以借助布尔函数最小化技术计算S,相应的布尔成员函数和它的最小化成员函数Karnaugh图被表示出来。

这个方法具有以下特点:第一,采用了最普通的二进制算法,所以很容易理解;简化了密钥更新产生和分发算法,仅仅计算离开成员互补密钥S,密钥更新组播消息仅仅一次;对于加密成本,最大成本是O(n)=O(logN),n是辅助密钥对的数目,所以用n比特代替所有N个用户已经足够了。第二,它提出了定量更新密钥的思想,从布尔算法中找到了最小化技术,有效解决了最少成员加密问题。但是,它还没有提供一个满意的方式去控制高成本,这种成本和组规模N成比例,O(N)复杂性可能严重地影响这种方法的可伸缩性。

1.4 单向函数树的组密钥管理协议

单向函数树OWFT(One-Way Function Trees)由McGrew等提出,这种方法在组成员变化时基于单向函数树来建立组会话密钥。

在这个方法里,GC维持着二叉树,所有的组成员在叶子节点上,但叶子不一定都是成员,每一个节点x(包括叶子)有两个关键的密钥:一个unblinded节点密钥kx和一个blinded节点密钥k'x,它们由著名的单向函数g和一个“混合”函数f计算得到:kx=f(g(kleft(x)),g(gright(x))=f(f'left(x),k'right(x)),式中left(x)和right(x)表示x的左边和右边子节点。根据这个规则,借助于节点的unblinded密钥和其兄弟节点的blinded密钥得出其父节点的unblinded密钥。

密钥更新说明如下:

(1)添加一个成员

当一个成员Mrew加入时,GC做的就是挑选一个子节点x,用拥有两个节点的一个新的内部节点x'代替,其中一个子节点是x本身,另一个是新加入的Mrew,如图3的慰。受影响的节点子组用灰色表示,因此,那些灰色节点的unblinded密钥需要更新以实现后向保密。 为了计算新的组会话密钥,存储旧版本blinded密钥的节点应该被通知更新它们的新版本,例如,节点y应该得到节Z的最新blinded密钥k'z,需要得到密钥k'z的节点集合是Sz={u,v,y,M0,M1,M2,M3},包括z的兄弟节点u和u的所有派生节点。这个新的blinded密钥k'z被u的unblinded密钥ku加密后包含在一个密钥更新消息中组播给Sz。

(2)删除一个成员

图3表示当一个成员Mnew离开时,节点x'被删除并被节点x代替,所有从节点x过程到根r的密钥被更新。同样,当一个成员加入时,最新的blind密钥被安全地传输给那些存储旧版本密钥的节点。

OWFT最新颖之处是提高了密钥管理的可伸缩性,因为它通过维护一个单向函数树和每个成员独立计算组密钥把会话密钥直接传送出去,更新密钥消息的数量和加密复杂性取决于需要更新blinded密钥子组的数量。既然blinded密钥更新的最大数量是h(树的高度),那么密钥更新组播消息和加密成本一样都是O(h)=O(logN)。McGrew等给出系统存储的密钥数量为O(N),每个成员存储的密钥数量为O(logN)。

但是,GC不得不维持2N-1个子组成员的信息,因为每一个树中的节点对应于一个包含它自己和由它所派生节的子组,价值不高并强加给GC的工作影响这个算法应用在大规模组时的可伸缩性。

以上三个树形的密钥管理协议比较如表1所示。表1 几个协议的性能比较

KG(Tree Topology) BFMT OWFT
系统维护的所有密钥数量 O(N) O(logN) O(N)
每个成员存储的密钥数量 O(logN) O(logN) O(logN)
组播更新密钥消息的数量 Group-Oriented:O(1) O(1) O(logN)
加密成本 O(logN)≤Cost≤O(log2N) O(logN) O(logN)

2 其它密钥管理协议

除了以上的提到的几个密钥管理协议,其他的还有很多。Iolus协议是一个分布式等组树的典型方法、W.Waldoge等提出的LKH+(logical key hierarchy)协议、A.Perrig等提出了ELK协议、S.Rafaeli等提出的EHBT(efficient hierarchical binary tree)协议等。

本文比较了一些协议的优点和不足,代表 了目前这个研究领域的研究成员。目前还没有一个公认的都能接受的合适的协议。关于组播密钥管理最主要的问题是可伸缩性,有些协议利用分等级的方法有较好的可伸缩性。 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
实时控制.安全.如何加速实现未来工厂落地?