一种基于avl树的分布式密钥更新方法

文档序号:7693284阅读:173来源:国知局

专利名称::一种基于avl树的分布式密钥更新方法
技术领域
:本发明属于计算机网络安全领域,特别涉及组播密钥管理方案的技术。技术背景随着组播技术在电视会议、网络游戏等方面日益广阔的应用,组播的安全性问题也逐渐凸现。对传输的数据进行加密是保证数据安全性的最重要的手段。对一个组播系统来说,如何对用来加密数据的密钥进行管理是一个核心的问题。密钥的管理是一个复杂的过程,包括密钥的生成,密钥的存储,密钥的传输,以及密钥的更新等。首先一个组播系统要生成数据源与组成员之间互相对应的密钥。由谁以何种方式来生成密钥,这涉及到系统成员之间的一个分工和相互信任的问题。当密钥生成以后,如何将密钥传输到需要的用户,是一个关键的问题。由于密钥关系到了整个组播系统的安全问题,一旦密钥被窃取或修改,将导致整个组播系统被击溃或无法进行正常工作。同时,由于密钥的重要性,各个节点的密钥如何存储,也是一个需要解决的问题。最后的一个问题也是最复杂的问题,如何进行密钥的更新。由于组播系统的成员总是处在不停的变化当中,随时都有成员加入或离开,为了保证前向和后向安全性,每一次新用户的加入或已有用户的离开都需要对组播系统的密钥进行更新。但由于组播系统密钥的复杂性,以及其更新的频繁性,如何有效,安全的更新组播组密钥,成为密钥管理系统主要需要解决的问题。为了解决密钥管理中一系列的问题,研究人员进行了大量的工作。己有的密钥管理方案按结构大致可以分为三类集中式,分布式和分层分组式。在集中式的方案中,整个组播系统有一个中央管理器来负责密钥的生成、存储和更新。这种方案的最大缺点在于容易出现单点失效,当中央管理器出现故障时,整个组播系统将陷于瘫痪。分布式的密钥管理方案是指组播系统中不存在中央管理器,每个用户都是独立的通信实体,它们通过某种密钥协商算法生成组密钥。这种方案克服了集中式管理方案的单点失效的缺陷,大大增强了系统的鲁棒性;但同时也由于缺少集中控制而给整个组播组的管理带来了困难。分层分组式管理方案结合了集中式和分布式的优点,将整个组播组分成若干个子组,每个子组由不同的子组控制器管理。所有子组之间可以是分布关系,或是由一个中央控制节点在最高层进行集中控制。在分布式的密钥管理方案中,基于单向函数树的分布式方案得到了充分的重视和研究。单向函数(0neiayFunction)是这样一种函数g(x),当给定任舄参数x,可以计算得到g(x)的值;而当给定g00,不可能通过计算得到x。如Hash散列函数就是典型的单向函数。密钥由单向函数产生,同时引入逻辑树对密钥进行管理。这种方案适合于组播系统中用户成员关系动态变化的、无中央控制节点的、要求组播系统的组密钥GK由各合法用户共同参与协商产生的、需要前向和后向安全、中小规模的组播系统。如图l所示是一棵典型的单向函数逻辑密钥树。整个组播系统对应着这棵密钥树。树中的每个叶子节点对应着一个实际用户。从根节点开始对每个节点进行编号。根节点编号为0,然后依次编号为v的节点的左儿子节点编号为2v+l,右儿子节点编号为2v+2。图1中,编号为7、8、4、5、13、14的叶子节点分别对应着用户"、t/2、C/3、"、t/5、t/6。每一个节点分别对应着不同的节点密钥。根节点对应的组密钥/:。用于数据的加密与解密。任意的非叶子节点v对应的密钥由公式Kv=/(S尺2v+1,JBK2v+2;)得到。其中,/是一个混合函数(MixingFunction),Bi^+,、S^^+2是节点v的左、右子节点对应的盲钥(BlindedKey)。任意节点z'的盲钥由公式5义,=)得到,其中,g是单向函数(One-wayFunction)。也就是&=/&(《2,+1),g(《2v+2))。从叶子节点到根节点路径上的节点(根节点除外)称为关键路径节点,每个用户节点保存它自己的密钥和它的兄弟节点的盲钥以及它的关键路径节点的兄弟节点的盲钥。图1中,用户"保存的密钥有(尤7、5〖8、5《4、5K2),通过计算就能得到(&、《、《。)。对每个非叶子节点v,定义一个责任节点集合及M"它是以v的兄弟节点为根节点的子树的叶子节点的集合。图1中,={t/4,"5,t/6},WM5={t/5,C/6}。责任节点集合iM,的作用就在于当密钥更新发生时,节点v必须将自身的盲钥发送给责任节点集合中的用户。如图1所示,当密钥更新发生时,节点1的盲钥^&将被发送给节点1的责任节点集合中的所有用户^/4、f/5、"6,而B^被发送给^、〃6。为了减轻用户频繁加入或退出引起的密钥频繁更新,已有的方案大都采用批量密钥更新的方式,即新加入的节点先不直接加入到组播系统中去,而是先自行构建一棵子密钥树,然后子密钥树再和原密钥树合并。这里的子密钥树是指要新加入的那一部分节点在密钥更新过程开始前,先自行组织形成的一棵密钥树,子密钥树也是一棵单向函数逻辑密钥树。批量密钥更新的过程分为两个阶段子密钥树形成阶段、子密钥树与原密钥树合并阶段。具体步骤为子密钥树形成阶段,包括以下步骤1)对要加入组播系统的用户节点,如果不存在子密钥树,则创建一棵该用户节点的子密钥树;如果已经存在子密钥树,则将该用户节点加入到该子密钥树中最浅的节点处(最浅的节点是指到根节点距离最短的叶子节点);2)对要离开的用户节点,将它标记到离开用户节点集合;子密钥树与原密钥树合并阶段,包括以下步骤-.3)若离开用户节点集合中没有要离开的节点,且子密钥树与原密钥树的高度差不超过2,'则直接增加新的根节点,子密钥树和原密钥树分别作为该根节点的左、右子树,形成新的密钥树;若子密钥树与原密钥树的高度差大于2,则将子密钥树直接插入到原密钥树最浅的节点处,形成新的密钥树;4)如果离开用户节点集合中有要离开的节点,则先将子密钥树插入到原密钥树最浅的节点处,然后,将要离开的节点从原密钥树中移除,形成新的密钥树;5)选择以离开节点的兄弟节点作为根节点的子树的最左叶子节点为触发节点,发起新的密钥树的密钥更新,(具体更新方法如上所述);批量密钥更新方式能有效缓解频繁更新带来的消耗,但当多用户同时加入和退出时,新形成的密钥树很有可能失去平衡而导致用户节点保存的密钥数大大增加。这里所说的平衡是指,在一棵密钥树中,每个节点的左子树和右子树的高度最多差1(上下游的两个节点的高度为1,只有一个节点的树的高度定义为-1)。一种密钥更新后密钥树失去平衡的情况如图2所示。图2中的密钥树经过用户的加入和离开更新后(右边的树),节点1的左子树的高度为-1,右子树的高度为2,高度差为3,因此失去了平衡。这就导致了组播系统中的一些用户节点保存的密钥数大大增加,使得系统的存储开销增大了。
发明内容本发明提出了一种基于AVL树的分布式密钥更新方法。该方法基于AVL树的平衡特性和旋转操作,能在维持单向函数逻辑密钥树的分布式性能的基础上,有效解决单向函数树失去平衡的问题,从而减少系统的存储开销。本发明提出的一种基于AVL树的分布式组密钥更新方法,不仅包括子密钥树形成阶段、子密钥树合并阶段;其特征在于,还包括AVL旋转阶段。所述子密钥树形成阶段,包括以下步骤1)对要加入组播系统的用户节点,如果不存在子密钥树,则创建一棵该用户节点的子密钥树;如果己经存在子密钥树,则将该用户节点加入到该子密钥树中最浅的节点处(最浅的节点是指到根节点距离最短的叶子节点);2)对要离开的用户节点,将它标记到离开用户节点集合;所述子密钥树与原密钥树合并阶段,包括以下步骤3)若离开用户节点集合中没有要离开的节点,且子密钥树与原密钥树的高度差不超过2,则直接增加新的根节点,子密钥树和原密钥树分别作为该根节点的左、右子树,形成新的密钥树;若子密钥树与原密钥树的高度差大于2,则将子密钥树直接插入到原密钥树最浅的节点处,形成新的密钥树;4)如果离开用户节点集合中有要离开的节点,则先将子密钥树插入到原密钥树最浅的节点处,然后,将要离开的节点从原密钥树中移除,形成新的密钥树;5)选择以离开节点的兄弟节点作为根节点的子树的最左叶子节点为触发节点,由该节点发起新的密钥树的密钥更新;所述AVL旋转阶段包括以下步骤6)如果新形成的密钥树失去平衡,则对新的密钥树进行AVL旋转,直到它重新恢复平衡为止;7)选择该新密钥树的所有的叶子节点全为新加入节点的子树的最左叶子节点作为触发节点;8)由5)和7)中的触发节点开始发起整个密钥树的密钥更新过程。本发明的特点及效果本发明提出的基于AVL树的分布式组密钥管理方案,在充分利用单向函数逻辑密钥树和AVL旋转树的基础上,有效解决了密钥的生成、存储和更新问题,使得每个用户在协商产生密钥的机制下,存储密钥数最少,更新的资源消耗最小。图1为一棵典型的单向函数逻辑密钥树;图2为用户同时加入和退出后,单向函数逻辑密钥树失去平衡的一种情况;图3为本发明方法的子密钥树形成阶段的流程框图;图4为本发明方法的子密钥树与原密钥树合并阶段的流程框图;图5(a)为一棵AVL树,(b)是一棵普通的树;图6为AVL树的单旋转过程;图7为一棵新形成的子密钥树;图8为子密钥树插入到原密钥树后形成的新密钥树;图9为离开用户节点集合中的用户离开后,形成的密钥树;图10为图9经过调整后最终得到的新密钥树;图11为图IO的AVL旋转过程;图12为实施例2中第一次的旋转过程;图13为实施例2中第二次的旋转过程;具体实施方式本发明提出了一种基于AVL树的分布式密钥管理方案。下面结合附图及具体的实施例进行详细说明本发明方法的流程如图3、图4所示,包括以下步骤子密钥树形成阶段,如图3所示,包括以下步骤1)对要加入组播系统的用户节点,如果不存在子密钥树,则创建一棵该用户节点的子密钥树;如果已经存在子密钥树,则将该用户节点加入到该子密钥树中最浅的节点处(最浅的节点是指到根节点距离最短的叶子节点);2)对要离开的用户节点,将它标记到离开用户节点集合;子密钥树与原密钥树合并阶段,如图4所示,包括以下步骤3)若离开用户节点集合中没有要离开的节点,且子密钥树与原密钥树的高度差不超过2,则直接增加新的根节点,子密钥树和原密钥树分别作为该根节点的左、右子树,形成新的密钥树;若子密钥树与原密钥树的高度差大于2,则将子密钥树直接插入到原密钥树最浅的节点处,形成新的密钥树;4)如果离开用户节点集合中有要离开的节点,则先将子密钥树插入到原密钥树最浅的节点处,然后,将要离开的节点从原密钥树中移除,形成新的密钥树;5)选择以离开节点的兄弟节点作为根节点的子树的最左叶子节点为触发节点,由该节点发起新的密钥树的密钥更新;AVL旋转阶段包括以下步骤-6)如果新形成的密钥树失去平衡,则对新的密钥树进行AVL旋转,直到它重新恢复平衡为止;7)选择该新密钥树的所有的叶子节点全为新加入节点的子树的最左叶子节点作为触发节点;8)由5)和7)中的触发节点开始发起整个密钥树的密钥更新过程。本发明采用的AVL树是带有平衡条件的二叉树,它的每个节点的左子树和右子树的高度最多差l。如图5(a)所示,图5(b)则不是AVL树。当有新节点插入时,树的平衡可能被破坏。把需要重新平衡的节点叫做",不平衡性有四种可能的情况(1)对a的左儿子的左子树进行一次插入;(2)对"的左儿子的右子树进行一次插入;(3)对"的右儿子的左子树进行一次插入;(4)对a的右儿子的右子树进行一次插入。为了保持树的平衡性,定义了单旋转和双旋转两种操作。单旋转应用于(1)(4)对应的的情况,而双旋转应用于(2)(3)对应的情况。一个简单的单旋转的例子如图6所示。节点ll插入后,节点2失去了平衡(左子树高度为1,右子树高度为-l),经过旋转后树恢复了平衡,如图6(b)所示。本发明方法内容通过实施例1、2作进一步说明实施例1的更新方法如图7到图11所示,该实施例详细展示了图2中左边的密钥树在更新过程中失去平衡的过程,并用本发明的方法恢复了平衡,最后完成整个密钥树的密钥更新过程。本实施例的密钥更新过程包括以下步骤1)将要新加入的用户节点K、卩9、W。形成子密钥树;如图7所示;2)将图2中的要离开的用户节点^/2、"、K、^/6标记到离开用户节点集合,图2中虚线表示的节点;3)离开用户节点集合中有要离开的节点,因此先将子密钥树插入到原密钥树,如图8所示,子密钥树插入到原密钥树最浅的节点3,形成新密钥树;4)将"2、U3、t/4、^/6从原密钥树中移除。如图9、图10所示,图10是将图9中只有一个儿子的节点删掉后得到,节点根据编号规则重新进行编号;'5)选择l7,、^作为触发节点;6)新密钥树失去了平衡,对它进行一次AVL单旋转,如图ll所示;7)选择[/8、(/9作为触发节点;8)触发节点发起密钥更新,具体过程如下;9)^/8产生《8并计算^:8,将s^发送给",,^将A^。发送给w,t/,产生新的^并计算^尺3、sa、sa:4;10)"产生新的^:6并且计算5《6和5/:2;11)"将^:3发送给^/8,将^:,发送给t/"c/,。,将£《4发送给[/5、"7,^/7将^:6发送给^,将B^发送给t/,、c/8、t/9、t/IQ。12)所有用户根据新的盲钥重新计算得到新的组密钥尺。。为了进一步说明本发明的AVL旋转方法,实施例2的更新方法如图12和图13所示,图12(a)也是由图2(a)中的原密钥树经过f/2、f/3、"4、/6离开,"8、f/9、U,。、加入后形成,由于其子密钥树形成过程、子密钥树与原密钥合并过程基本与实施例1中一致,这里不再叙述。该实施例重点展示了一棵不平衡的密钥树经过一次双旋转后恢复了平衡。(一次双旋转实际上由两次单旋转形成,图12和图13分别表示一次单旋转)经过双旋转后,密钥树恢复平衡,如图13(b)所示。然后由触发节点发起密钥更新,具体过程如下1)"8将发送给","IQ将万《。发送给f/5、"7,^产生新的《3并计算5《3、S《;2)"产生新的尺6并且计算5《6和5《2;3)(/,将^^发送给[/8、f/9,将S^发送给t/,。、^,、f/5、"7,{/7发送5《6给(75,发送^^给f/,。、f/,,,发送^i:。给f/,、f/8、C/9。4)所有节点重新计算组密钥^^4。本发明方法采用单向函数协商产生密钥,有效避免了单点失效;采用定期更新密钥的方式,减少了密钥更新的开销;利用AVL树的平衡特性,减少了组播系统中用户保存的密钥数和组密钥的计算量,减少了系统开销。本发明方法与其它密钥管理方案的比较如表1所示。LKH、D-0FT、EDKAS为已有的三种流行的密钥更新方案,O("log")表示ax"log",其中fl为常数。表l不同密钥管理方案主要特性对比<table>tableseeoriginaldocumentpage8</column></row><table>权利要求1.一种基于AVL树的分布式组密钥更新方法,包括子密钥树形成阶段、子密钥树合并阶段;其特征在于,还包括AVL旋转阶段;所述子密钥树形成阶段,包括以下步骤1)对要加入组播系统的用户节点,如果不存在子密钥树,则创建一棵该用户节点的子密钥树;如果已经存在子密钥树,则将该用户节点加入到该子密钥树中最浅的节点;2)对要离开的用户节点,将它标记到离开用户节点集合;所述子密钥树与原密钥树合并阶段,包括以下步骤3)若离开用户节点集合中没有要离开的节点,且该子密钥树与原密钥树的高度差不超过2,则直接增加新的根节点,该子密钥树和原密钥树分别作为该根节点的左、右子树,形成新的密钥树;若该子密钥树与原密钥树的高度差大于2,则将该子密钥树直接插入到最浅的节点处,形成新的密钥树;4)如果离开用户节点集合中有要离开的节点,则先将该子密钥树插入到原密钥树最浅的节点处,然后,将要离开的节点从原密钥树中移除,形成新的密钥树;5)选择以离开节点的兄弟节点作为根节点的子树的最左叶子节点为触发节点,由该节点发起新的密钥树的密钥更新;所述AVL旋转阶段包括以下步骤6)如果形成的新的密钥树失去平衡,则对该新的密钥树进行AVL旋转,直到它重新恢复平衡为止;7)选择该新密钥树的所有的叶子节点全为新加入节点的子树的最左叶子节点作为触发节点;8)由步骤5)和7)中的触发节点开始发起整个密钥树的密钥更新过程。8)由步骤5)和7)中的触发节点开始发起整个密钥树的密钥更新过程。全文摘要本发明涉及一种基于AVL树的分布式组密钥更新方法,属于计算机网络安全领域。该方法除了包括子密钥树形成阶段、子密钥树合并阶段两个常规阶段外,还包括AVL旋转阶段即若形成的新的密钥树失去平衡,则对该新的密钥树进行AVL旋转,直到它重新恢复平衡为止;选择该新密钥树的所有的叶子节点全为新加入节点的子树的最左叶子节点作为触发节点;开始发起整个密钥树的密钥更新过程。本发明基于AVL树优良的平衡性能,有效地克服了已有的完全基于单向函数树的密钥管理方案中密钥树的结构失衡问题,减少了用户的存储开销。文档编号H04L9/08GK101257382SQ20081010288公开日2008年9月3日申请日期2008年3月28日优先权日2008年3月28日发明者尔桂花,戴琼海,独邓申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1